diff --git a/Assets/HIIT30_Session.asset b/Assets/HIIT30_Session.asset
new file mode 100644
index 0000000..d9c5d5a
--- /dev/null
+++ b/Assets/HIIT30_Session.asset
@@ -0,0 +1,29299 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ecde514822d9e4bdc89dcb697d725f65, type: 3}
+ m_Name: HIIT30_Session
+ m_EditorClassIdentifier:
+ sessionName: HIIT30_Session
+ frames:
+ - timestamp: 0.19761467
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.19761467
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.200737
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.29262352
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.39082527
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.48972893
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.58727074
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.686039
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.78189087
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 0.8791199
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.0738163
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.0769272
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.174324
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.2684212
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.2704258
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.2704258
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.3660183
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.4645233
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.4645233
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.5629349
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.6585121
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.6612091
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.7552185
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.757225
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.8533688
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.9513168
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.9531155
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 1.9531155
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.1483212
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.244873
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.3402157
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.4389496
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.4403534
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.4403534
+ watts: 0
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.6331177
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.732214
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.732214
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.831028
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 2.9262218
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.0239277
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.121849
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.121849
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.3168335
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.318737
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.318737
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.4143486
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.6108303
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.6108303
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.7066212
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - timestamp: 3.7066212
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.803135
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - timestamp: 3.803135
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.9015274
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - 65
+ - 65
+ - 88
+ - 88
+ - 111
+ - 130
+ - 130
+ - 150
+ - 150
+ - 149
+ - 151
+ - timestamp: 3.9015274
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 3.998022
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - 65
+ - 65
+ - 88
+ - 88
+ - 111
+ - 130
+ - 130
+ - 150
+ - 150
+ - 149
+ - 151
+ - 151
+ - 154
+ - timestamp: 3.998022
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.2909775
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - 65
+ - 65
+ - 88
+ - 88
+ - 111
+ - 130
+ - 130
+ - 150
+ - 150
+ - 149
+ - 151
+ - 151
+ - 154
+ - 158
+ - 158
+ - 145
+ - 144
+ - 144
+ - 142
+ - 145
+ - 123
+ - 123
+ - 111
+ - 86
+ - timestamp: 4.2909775
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.2909775
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - 65
+ - 65
+ - 88
+ - 88
+ - 111
+ - 130
+ - 130
+ - 150
+ - 150
+ - 149
+ - 151
+ - 151
+ - 154
+ - 158
+ - 158
+ - 145
+ - 144
+ - 144
+ - 142
+ - 145
+ - 123
+ - 123
+ - 111
+ - 86
+ - 86
+ - timestamp: 4.2909775
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.390417
+ watts: 71
+ spm: 0
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - 27
+ - 27
+ - 65
+ - 65
+ - 88
+ - 88
+ - 111
+ - 130
+ - 130
+ - 150
+ - 150
+ - 149
+ - 151
+ - 151
+ - 154
+ - 158
+ - 158
+ - 145
+ - 144
+ - 144
+ - 142
+ - 145
+ - 123
+ - 123
+ - 111
+ - 86
+ - 86
+ - 75
+ - 56
+ - 33
+ - 33
+ - 23
+ - 16
+ - 13
+ - 13
+ - 0
+ - timestamp: 4.390417
+ watts: 75
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.4882565
+ watts: 75
+ spm: 0
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.584015
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.6803284
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.778824
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.8753147
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 4.973919
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.073618
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.169319
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - timestamp: 5.169319
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.2651176
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - timestamp: 5.2651176
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.3631363
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 48
+ - 74
+ - 74
+ - 101
+ - 138
+ - 164
+ - 164
+ - 179
+ - 172
+ - 181
+ - 181
+ - timestamp: 5.3631363
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.461523
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 48
+ - 74
+ - 74
+ - 101
+ - 138
+ - 164
+ - 164
+ - 179
+ - 172
+ - 181
+ - 181
+ - 176
+ - 176
+ - timestamp: 5.461523
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.461523
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 48
+ - 74
+ - 74
+ - 101
+ - 138
+ - 164
+ - 164
+ - 179
+ - 172
+ - 181
+ - 181
+ - 176
+ - 176
+ - 162
+ - 148
+ - 148
+ - timestamp: 5.461523
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.463009
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 48
+ - 74
+ - 74
+ - 101
+ - 138
+ - 164
+ - 164
+ - 179
+ - 172
+ - 181
+ - 181
+ - 176
+ - 176
+ - 162
+ - 148
+ - 148
+ - 139
+ - 139
+ - timestamp: 5.463009
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.7543373
+ watts: 75
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 48
+ - 74
+ - 74
+ - 101
+ - 138
+ - 164
+ - 164
+ - 179
+ - 172
+ - 181
+ - 181
+ - 176
+ - 176
+ - 162
+ - 148
+ - 148
+ - 139
+ - 139
+ - 135
+ - 123
+ - 102
+ - 97
+ - 97
+ - 84
+ - 70
+ - 48
+ - 39
+ - 25
+ - 16
+ - 16
+ - timestamp: 5.7543373
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.7543373
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.7559586
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.850607
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.946581
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve:
+ - 1
+ - timestamp: 5.946581
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 5.946581
+ watts: 120
+ spm: 38
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.0494823
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.144121
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.144121
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.240423
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.3392506
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.533409
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.632208
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.7285194
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.826517
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - timestamp: 6.826517
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 6.9248257
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - timestamp: 6.9248257
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.1205006
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - 87
+ - 98
+ - 98
+ - 116
+ - 125
+ - 142
+ - 137
+ - 137
+ - 135
+ - 126
+ - 117
+ - timestamp: 7.1205006
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.1205006
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - 87
+ - 98
+ - 98
+ - 116
+ - 125
+ - 142
+ - 137
+ - 137
+ - 135
+ - 126
+ - 117
+ - 113
+ - 111
+ - timestamp: 7.1205006
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.215313
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - 87
+ - 98
+ - 98
+ - 116
+ - 125
+ - 142
+ - 137
+ - 137
+ - 135
+ - 126
+ - 117
+ - 113
+ - 111
+ - 111
+ - 111
+ - 107
+ - timestamp: 7.215313
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.2173233
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - 87
+ - 98
+ - 98
+ - 116
+ - 125
+ - 142
+ - 137
+ - 137
+ - 135
+ - 126
+ - 117
+ - 113
+ - 111
+ - 111
+ - 111
+ - 107
+ - 93
+ - 81
+ - timestamp: 7.2173233
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.312729
+ watts: 120
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 45
+ - 45
+ - 70
+ - 87
+ - 98
+ - 98
+ - 116
+ - 125
+ - 142
+ - 137
+ - 137
+ - 135
+ - 126
+ - 117
+ - 113
+ - 111
+ - 111
+ - 111
+ - 107
+ - 93
+ - 81
+ - 69
+ - 50
+ - 42
+ - 41
+ - 41
+ - 28
+ - 14
+ - 3
+ - timestamp: 7.312729
+ watts: 167
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.4119263
+ watts: 167
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.4119263
+ watts: 167
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.510111
+ watts: 167
+ spm: 42
+ heartRate: 0
+ forceCurve:
+ - 0
+ - timestamp: 7.510111
+ watts: 167
+ spm: 42
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.6073265
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.7032795
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.8018093
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.8978233
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 7.996937
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.096634
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.191025
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.193537
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.382729
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.382729
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.678314
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - timestamp: 8.678314
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.6794815
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - timestamp: 8.6794815
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.775532
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - 177
+ - 177
+ - 165
+ - 166
+ - 152
+ - 150
+ - 132
+ - 126
+ - 120
+ - 118
+ - 112
+ - timestamp: 8.775532
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.8742485
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - 177
+ - 177
+ - 165
+ - 166
+ - 152
+ - 150
+ - 132
+ - 126
+ - 120
+ - 118
+ - 112
+ - 112
+ - timestamp: 8.8742485
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.8742485
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - 177
+ - 177
+ - 165
+ - 166
+ - 152
+ - 150
+ - 132
+ - 126
+ - 120
+ - 118
+ - 112
+ - 112
+ - 101
+ - 90
+ - 72
+ - 62
+ - timestamp: 8.8742485
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 8.875868
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - 177
+ - 177
+ - 165
+ - 166
+ - 152
+ - 150
+ - 132
+ - 126
+ - 120
+ - 118
+ - 112
+ - 112
+ - 101
+ - 90
+ - 72
+ - 62
+ - 53
+ - timestamp: 8.875868
+ watts: 167
+ spm: 37
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.167131
+ watts: 167
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 33
+ - 33
+ - 61
+ - 87
+ - 112
+ - 131
+ - 131
+ - 153
+ - 168
+ - 175
+ - 183
+ - 177
+ - 177
+ - 165
+ - 166
+ - 152
+ - 150
+ - 132
+ - 126
+ - 120
+ - 118
+ - 112
+ - 112
+ - 101
+ - 90
+ - 72
+ - 62
+ - 53
+ - 41
+ - 26
+ - 11
+ - 3
+ - timestamp: 9.167131
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.167131
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.263811
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.360819
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.4600315
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.55611
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.750744
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.752037
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.946724
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.948524
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 9.948524
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.043026
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.141945
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.240013
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.337215
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - timestamp: 10.337215
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - timestamp: 10.431728
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.529919
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - 160
+ - 148
+ - 148
+ - 132
+ - 128
+ - 133
+ - 131
+ - timestamp: 10.529919
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.726719
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - 160
+ - 148
+ - 148
+ - 132
+ - 128
+ - 133
+ - 131
+ - 128
+ - timestamp: 10.726719
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.728443
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - 160
+ - 148
+ - 148
+ - 132
+ - 128
+ - 133
+ - 131
+ - 128
+ - 117
+ - 104
+ - 92
+ - 90
+ - timestamp: 10.728443
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.823212
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - 160
+ - 148
+ - 148
+ - 132
+ - 128
+ - 133
+ - 131
+ - 128
+ - 117
+ - 104
+ - 92
+ - 90
+ - 90
+ - 86
+ - timestamp: 10.823212
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.824486
+ watts: 176
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 38
+ - 65
+ - 88
+ - 115
+ - 115
+ - 131
+ - 143
+ - 151
+ - 165
+ - 160
+ - 148
+ - 148
+ - 132
+ - 128
+ - 133
+ - 131
+ - 128
+ - 117
+ - 104
+ - 92
+ - 90
+ - 90
+ - 86
+ - 70
+ - 46
+ - 26
+ - 22
+ - timestamp: 10.824486
+ watts: 197
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 10.824486
+ watts: 197
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.017845
+ watts: 197
+ spm: 36
+ heartRate: 0
+ forceCurve:
+ - 12
+ - timestamp: 11.017845
+ watts: 197
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.116928
+ watts: 197
+ spm: 36
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.2108345
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.2108345
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.310921
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.410427
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.410427
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.410427
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.700932
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.702301
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.794022
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.888721
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.888721
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 11.888721
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.18932
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - timestamp: 12.18932
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.190571
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - timestamp: 12.190571
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.384224
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - 145
+ - 164
+ - 173
+ - 183
+ - 181
+ - 181
+ - 167
+ - 146
+ - 140
+ - 130
+ - timestamp: 12.384224
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.480015
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - 145
+ - 164
+ - 173
+ - 183
+ - 181
+ - 181
+ - 167
+ - 146
+ - 140
+ - 130
+ - 134
+ - 123
+ - timestamp: 12.480015
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.481224
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - 145
+ - 164
+ - 173
+ - 183
+ - 181
+ - 181
+ - 167
+ - 146
+ - 140
+ - 130
+ - 134
+ - 123
+ - 121
+ - 107
+ - 98
+ - timestamp: 12.481224
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.483734
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - 145
+ - 164
+ - 173
+ - 183
+ - 181
+ - 181
+ - 167
+ - 146
+ - 140
+ - 130
+ - 134
+ - 123
+ - 121
+ - 107
+ - 98
+ - 86
+ - 79
+ - timestamp: 12.483734
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.581242
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 30
+ - 51
+ - 78
+ - 93
+ - 126
+ - 126
+ - 145
+ - 164
+ - 173
+ - 183
+ - 181
+ - 181
+ - 167
+ - 146
+ - 140
+ - 130
+ - 134
+ - 123
+ - 121
+ - 107
+ - 98
+ - 86
+ - 79
+ - 66
+ - 66
+ - 50
+ - 36
+ - 25
+ - 14
+ - timestamp: 12.581242
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.676033
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.679142
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 12.679142
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.768524
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.869217
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 12.968334
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.1624565
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.1624565
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.2609215
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.359119
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.361122
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.361122
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.650837
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.844421
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.844421
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 35
+ - timestamp: 13.844421
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 13.943134
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 56
+ - 56
+ - timestamp: 13.943134
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.041935
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 56
+ - 56
+ - 80
+ - 95
+ - 127
+ - 162
+ - 184
+ - 184
+ - 195
+ - 186
+ - 175
+ - 170
+ - 164
+ - 161
+ - 150
+ - 145
+ - 135
+ - 130
+ - timestamp: 14.041935
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.1407585
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 56
+ - 56
+ - 80
+ - 95
+ - 127
+ - 162
+ - 184
+ - 184
+ - 195
+ - 186
+ - 175
+ - 170
+ - 164
+ - 161
+ - 150
+ - 145
+ - 135
+ - 130
+ - 130
+ - 120
+ - timestamp: 14.1407585
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.23481
+ watts: 197
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 56
+ - 56
+ - 80
+ - 95
+ - 127
+ - 162
+ - 184
+ - 184
+ - 195
+ - 186
+ - 175
+ - 170
+ - 164
+ - 161
+ - 150
+ - 145
+ - 135
+ - 130
+ - 130
+ - 120
+ - 117
+ - 106
+ - 90
+ - 70
+ - 53
+ - 50
+ - 35
+ - 24
+ - 2
+ - timestamp: 14.23481
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.23481
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.427826
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 0
+ - timestamp: 14.427826
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.527725
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.527725
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.527725
+ watts: 208
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.724178
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.917625
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.918873
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 14.919861
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.01582
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.111027
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.111027
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.210529
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.309128
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.402615
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.402615
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.408367
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.602463
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - timestamp: 15.602463
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.699898
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - timestamp: 15.699898
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.796623
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - timestamp: 15.796623
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - 116
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - 116
+ - 116
+ - 104
+ - 101
+ - 86
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - 116
+ - 116
+ - 104
+ - 101
+ - 86
+ - 78
+ - timestamp: 15.894085
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.090511
+ watts: 208
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - 116
+ - 116
+ - 104
+ - 101
+ - 86
+ - 78
+ - 65
+ - 58
+ - 39
+ - 28
+ - 14
+ - timestamp: 16.090511
+ watts: 218
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.188019
+ watts: 218
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 56
+ - 56
+ - 75
+ - 89
+ - 112
+ - 134
+ - 156
+ - 156
+ - 170
+ - 183
+ - 170
+ - 171
+ - 164
+ - 162
+ - 147
+ - 135
+ - 125
+ - 123
+ - 117
+ - 116
+ - 116
+ - 104
+ - 101
+ - 86
+ - 78
+ - 65
+ - 58
+ - 39
+ - 28
+ - 14
+ - 4
+ - timestamp: 16.188019
+ watts: 218
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.285217
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.377731
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.477623
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.576046
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.769333
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.769333
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.869236
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.966625
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.966625
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 16.969322
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.250916
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.261238
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.352425
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - timestamp: 17.352425
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - timestamp: 17.45264
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.55083
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - timestamp: 17.55083
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.649002
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - 129
+ - timestamp: 17.649002
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.649002
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - 129
+ - 120
+ - 104
+ - 97
+ - 87
+ - timestamp: 17.649002
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.741428
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - 129
+ - 120
+ - 104
+ - 97
+ - 87
+ - 87
+ - timestamp: 17.741428
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.842628
+ watts: 218
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - 129
+ - 120
+ - 104
+ - 97
+ - 87
+ - 87
+ - 77
+ - 65
+ - 42
+ - 27
+ - 13
+ - timestamp: 17.842628
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.942627
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 44
+ - 64
+ - 88
+ - 110
+ - 139
+ - 139
+ - 160
+ - 176
+ - 184
+ - 196
+ - 193
+ - 183
+ - 165
+ - 157
+ - 152
+ - 152
+ - 139
+ - 129
+ - 120
+ - 104
+ - 97
+ - 87
+ - 87
+ - 77
+ - 65
+ - 42
+ - 27
+ - 13
+ - 13
+ - timestamp: 17.942627
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.942627
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 17.942627
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.038818
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.136642
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.13993
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.13993
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.326748
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.427315
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.427315
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.427315
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.624428
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.71931
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.818634
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 18.916931
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.010738
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.010738
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.208336
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - timestamp: 19.208336
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.20972
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - timestamp: 19.20972
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.308022
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - 133
+ - 154
+ - 173
+ - 173
+ - 183
+ - 192
+ - 182
+ - 169
+ - 156
+ - 153
+ - timestamp: 19.308022
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.403023
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - 133
+ - 154
+ - 173
+ - 173
+ - 183
+ - 192
+ - 182
+ - 169
+ - 156
+ - 153
+ - 143
+ - 141
+ - timestamp: 19.403023
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.502056
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - 133
+ - 154
+ - 173
+ - 173
+ - 183
+ - 192
+ - 182
+ - 169
+ - 156
+ - 153
+ - 143
+ - 141
+ - 133
+ - 122
+ - 126
+ - 122
+ - 117
+ - 98
+ - 76
+ - 60
+ - 45
+ - 40
+ - 29
+ - timestamp: 19.502056
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.598438
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - 133
+ - 154
+ - 173
+ - 173
+ - 183
+ - 192
+ - 182
+ - 169
+ - 156
+ - 153
+ - 143
+ - 141
+ - 133
+ - 122
+ - 126
+ - 122
+ - 117
+ - 98
+ - 76
+ - 60
+ - 45
+ - 40
+ - 29
+ - 12
+ - timestamp: 19.598438
+ watts: 224
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.79631
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 47
+ - 47
+ - 70
+ - 86
+ - 109
+ - 133
+ - 154
+ - 173
+ - 173
+ - 183
+ - 192
+ - 182
+ - 169
+ - 156
+ - 153
+ - 143
+ - 141
+ - 133
+ - 122
+ - 126
+ - 122
+ - 117
+ - 98
+ - 76
+ - 60
+ - 45
+ - 40
+ - 29
+ - 12
+ - 0
+ - timestamp: 19.79631
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.79631
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.985023
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 19.985023
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.184242
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.184242
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.28299
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.284721
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.475735
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.476997
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.57162
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.574837
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.668629
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.768723
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.768723
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.768723
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.960125
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 51
+ - 51
+ - 80
+ - 95
+ - 119
+ - 145
+ - 164
+ - timestamp: 20.960125
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 20.960125
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 51
+ - 51
+ - 80
+ - 95
+ - 119
+ - 145
+ - 164
+ - 180
+ - timestamp: 20.960125
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.15932
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 51
+ - 51
+ - 80
+ - 95
+ - 119
+ - 145
+ - 164
+ - 180
+ - 180
+ - 185
+ - 191
+ - 185
+ - 188
+ - 177
+ - 169
+ - 151
+ - 149
+ - 144
+ - 142
+ - timestamp: 21.15932
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.160625
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 51
+ - 51
+ - 80
+ - 95
+ - 119
+ - 145
+ - 164
+ - 180
+ - 180
+ - 185
+ - 191
+ - 185
+ - 188
+ - 177
+ - 169
+ - 151
+ - 149
+ - 144
+ - 142
+ - 137
+ - 121
+ - timestamp: 21.160625
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.351738
+ watts: 229
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 51
+ - 51
+ - 80
+ - 95
+ - 119
+ - 145
+ - 164
+ - 180
+ - 180
+ - 185
+ - 191
+ - 185
+ - 188
+ - 177
+ - 169
+ - 151
+ - 149
+ - 144
+ - 142
+ - 137
+ - 121
+ - 112
+ - 93
+ - 79
+ - 68
+ - 66
+ - 49
+ - 30
+ - 9
+ - timestamp: 21.351738
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.452026
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.452026
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 0
+ - timestamp: 21.452026
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.550827
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.743813
+ watts: 231
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.843536
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.843536
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.843536
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 21.939217
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.036625
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.135918
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.230873
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.329922
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.429028
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.525082
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.620827
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.817104
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - timestamp: 22.817104
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.818615
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - timestamp: 22.818615
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 22.915401
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - 162
+ - 162
+ - 178
+ - 184
+ - 194
+ - 183
+ - 168
+ - 154
+ - 148
+ - 139
+ - 136
+ - timestamp: 22.915401
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.010925
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - 162
+ - 162
+ - 178
+ - 184
+ - 194
+ - 183
+ - 168
+ - 154
+ - 148
+ - 139
+ - 136
+ - 126
+ - 120
+ - timestamp: 23.010925
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.01302
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - 162
+ - 162
+ - 178
+ - 184
+ - 194
+ - 183
+ - 168
+ - 154
+ - 148
+ - 139
+ - 136
+ - 126
+ - 120
+ - 111
+ - 104
+ - 91
+ - timestamp: 23.01302
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.01302
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - 162
+ - 162
+ - 178
+ - 184
+ - 194
+ - 183
+ - 168
+ - 154
+ - 148
+ - 139
+ - 136
+ - 126
+ - 120
+ - 111
+ - 104
+ - 91
+ - 82
+ - 70
+ - timestamp: 23.01302
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.11073
+ watts: 231
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 43
+ - 43
+ - 58
+ - 80
+ - 104
+ - 127
+ - 143
+ - 162
+ - 162
+ - 178
+ - 184
+ - 194
+ - 183
+ - 168
+ - 154
+ - 148
+ - 139
+ - 136
+ - 126
+ - 120
+ - 111
+ - 104
+ - 91
+ - 82
+ - 70
+ - 59
+ - 33
+ - 25
+ - timestamp: 23.11073
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.207027
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.208405
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.40105
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 16
+ - timestamp: 23.40105
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.40244
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.499176
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.594109
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.694023
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.792946
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.885185
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 23.986286
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.083866
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.177822
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.276821
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.378162
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.475037
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.569649
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 39
+ - 53
+ - 73
+ - 101
+ - 128
+ - 151
+ - 151
+ - 163
+ - 179
+ - 190
+ - timestamp: 24.569649
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.668533
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 39
+ - 53
+ - 73
+ - 101
+ - 128
+ - 151
+ - 151
+ - 163
+ - 179
+ - 190
+ - 195
+ - 200
+ - timestamp: 24.668533
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.86023
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 39
+ - 53
+ - 73
+ - 101
+ - 128
+ - 151
+ - 151
+ - 163
+ - 179
+ - 190
+ - 195
+ - 200
+ - 183
+ - 171
+ - 159
+ - 154
+ - 151
+ - 150
+ - 138
+ - 130
+ - 121
+ - 110
+ - 94
+ - timestamp: 24.86023
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.86023
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 39
+ - 53
+ - 73
+ - 101
+ - 128
+ - 151
+ - 151
+ - 163
+ - 179
+ - 190
+ - 195
+ - 200
+ - 183
+ - 171
+ - 159
+ - 154
+ - 151
+ - 150
+ - 138
+ - 130
+ - 121
+ - 110
+ - 94
+ - 83
+ - 74
+ - timestamp: 24.86023
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 24.96035
+ watts: 238
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 39
+ - 53
+ - 73
+ - 101
+ - 128
+ - 151
+ - 151
+ - 163
+ - 179
+ - 190
+ - 195
+ - 200
+ - 183
+ - 171
+ - 159
+ - 154
+ - 151
+ - 150
+ - 138
+ - 130
+ - 121
+ - 110
+ - 94
+ - 83
+ - 74
+ - 69
+ - 45
+ - 30
+ - 24
+ - timestamp: 24.96035
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.058628
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.060253
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 14
+ - timestamp: 25.060253
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.060253
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.252525
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.352043
+ watts: 235
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.44962
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.451622
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.544285
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.544285
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.835632
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 25.835632
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.034119
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.035728
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.035728
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.126827
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.226933
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - timestamp: 26.226933
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.32803
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - timestamp: 26.32803
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.42395
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - timestamp: 26.42395
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.522442
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - 143
+ - 135
+ - timestamp: 26.522442
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.522442
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - 143
+ - 135
+ - 126
+ - 121
+ - 112
+ - timestamp: 26.522442
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.52398
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - 143
+ - 135
+ - 126
+ - 121
+ - 112
+ - 107
+ - 90
+ - timestamp: 26.52398
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.718533
+ watts: 235
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - 143
+ - 135
+ - 126
+ - 121
+ - 112
+ - 107
+ - 90
+ - 72
+ - 46
+ - 35
+ - 27
+ - timestamp: 26.718533
+ watts: 241
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 26.910744
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 63
+ - 85
+ - 105
+ - 127
+ - 142
+ - 154
+ - 172
+ - 172
+ - 179
+ - 177
+ - 169
+ - 172
+ - 164
+ - 154
+ - 143
+ - 135
+ - 126
+ - 121
+ - 112
+ - 107
+ - 90
+ - 72
+ - 46
+ - 35
+ - 27
+ - 18
+ - timestamp: 26.910744
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.009628
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.009628
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.20182
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.20182
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.39822
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.399971
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.402153
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.49722
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.499817
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.499817
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.595024
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.691685
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.693825
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.693825
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.887524
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.984638
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - timestamp: 27.984638
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 27.986023
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 48
+ - 76
+ - timestamp: 27.986023
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.081142
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 48
+ - 76
+ - 107
+ - 130
+ - timestamp: 28.081142
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.27563
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 48
+ - 76
+ - 107
+ - 130
+ - 155
+ - 155
+ - 162
+ - 182
+ - 193
+ - 196
+ - 191
+ - 169
+ - 164
+ - 155
+ - 151
+ - 147
+ - timestamp: 28.27563
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.277924
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 48
+ - 76
+ - 107
+ - 130
+ - 155
+ - 155
+ - 162
+ - 182
+ - 193
+ - 196
+ - 191
+ - 169
+ - 164
+ - 155
+ - 151
+ - 147
+ - 143
+ - 129
+ - timestamp: 28.277924
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.472351
+ watts: 241
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 48
+ - 76
+ - 107
+ - 130
+ - 155
+ - 155
+ - 162
+ - 182
+ - 193
+ - 196
+ - 191
+ - 169
+ - 164
+ - 155
+ - 151
+ - 147
+ - 143
+ - 129
+ - 123
+ - 112
+ - 104
+ - 98
+ - 88
+ - 70
+ - 47
+ - 32
+ - 22
+ - timestamp: 28.472351
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.472351
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.667831
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 11
+ - timestamp: 28.667831
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.667831
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.667831
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.764156
+ watts: 236
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.958424
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 28.960526
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.056522
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.154312
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.156631
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.156631
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.445839
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.448223
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.540424
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.640224
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.738247
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.740215
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.935326
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - timestamp: 29.935326
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 29.935326
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - timestamp: 29.935326
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.031315
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - timestamp: 30.031315
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - 143
+ - 134
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - 143
+ - 134
+ - 124
+ - 109
+ - 99
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - 143
+ - 134
+ - 124
+ - 109
+ - 99
+ - 96
+ - 86
+ - timestamp: 30.130924
+ watts: 236
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.421421
+ watts: 236
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - 143
+ - 134
+ - 124
+ - 109
+ - 99
+ - 96
+ - 86
+ - 75
+ - 49
+ - 42
+ - 22
+ - 20
+ - timestamp: 30.421421
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.425064
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 50
+ - 50
+ - 61
+ - 84
+ - 109
+ - 143
+ - 161
+ - 184
+ - 184
+ - 188
+ - 194
+ - 193
+ - 189
+ - 180
+ - 175
+ - 155
+ - 154
+ - 150
+ - 143
+ - 134
+ - 124
+ - 109
+ - 99
+ - 96
+ - 86
+ - 75
+ - 49
+ - 42
+ - 22
+ - 20
+ - 5
+ - timestamp: 30.425064
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.519115
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.615211
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.714424
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.81171
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 30.907032
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.005714
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.103561
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.198643
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.298431
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.49633
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.497944
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.590122
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.69012
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 45
+ - 52
+ - 52
+ - 76
+ - 101
+ - timestamp: 31.69012
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.69012
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 45
+ - 52
+ - 52
+ - 76
+ - 101
+ - 124
+ - 150
+ - timestamp: 31.69012
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.981522
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 45
+ - 52
+ - 52
+ - 76
+ - 101
+ - 124
+ - 150
+ - 171
+ - 187
+ - 187
+ - 195
+ - 202
+ - 194
+ - 182
+ - 165
+ - 157
+ - 150
+ - 154
+ - timestamp: 31.981522
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 31.981522
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 45
+ - 52
+ - 52
+ - 76
+ - 101
+ - 124
+ - 150
+ - 171
+ - 187
+ - 187
+ - 195
+ - 202
+ - 194
+ - 182
+ - 165
+ - 157
+ - 150
+ - 154
+ - 146
+ - 138
+ - timestamp: 31.981522
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.080124
+ watts: 238
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 45
+ - 52
+ - 52
+ - 76
+ - 101
+ - 124
+ - 150
+ - 171
+ - 187
+ - 187
+ - 195
+ - 202
+ - 194
+ - 182
+ - 165
+ - 157
+ - 150
+ - 154
+ - 146
+ - 138
+ - 125
+ - 112
+ - 108
+ - 106
+ - 97
+ - 85
+ - 65
+ - 56
+ - 36
+ - 30
+ - timestamp: 32.080124
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.176323
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.27593
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 20
+ - timestamp: 32.27593
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.371258
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.4702
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.56733
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.66454
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.76125
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.95643
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 32.958553
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.15142
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.24823
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.25011
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.25011
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.443714
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.44501
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.44501
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.54412
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.639923
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 29
+ - 29
+ - 34
+ - timestamp: 33.639923
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.736095
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 29
+ - 29
+ - 34
+ - 39
+ - 46
+ - timestamp: 33.736095
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.834717
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 29
+ - 29
+ - 34
+ - 39
+ - 46
+ - 56
+ - 56
+ - 56
+ - 64
+ - 64
+ - 74
+ - 74
+ - 74
+ - 75
+ - 73
+ - 68
+ - timestamp: 33.834717
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 33.931885
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 29
+ - 29
+ - 34
+ - 39
+ - 46
+ - 56
+ - 56
+ - 56
+ - 64
+ - 64
+ - 74
+ - 74
+ - 74
+ - 75
+ - 73
+ - 68
+ - 63
+ - timestamp: 33.931885
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.02903
+ watts: 240
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 29
+ - 29
+ - 34
+ - 39
+ - 46
+ - 56
+ - 56
+ - 56
+ - 64
+ - 64
+ - 74
+ - 74
+ - 74
+ - 75
+ - 73
+ - 68
+ - 63
+ - 60
+ - 53
+ - 53
+ - 48
+ - 46
+ - 38
+ - 31
+ - 14
+ - 7
+ - 7
+ - timestamp: 34.02903
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.128407
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.128407
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.222816
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.321533
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 3
+ - timestamp: 34.321533
+ watts: 220
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.51503
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.51503
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.51503
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.613556
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.71353
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.809357
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 34.809357
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.003334
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.096992
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.198425
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.19968
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.394585
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.49121
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.58949
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.592815
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.68693
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.689823
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.785923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - timestamp: 35.785923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.88112
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - timestamp: 35.88112
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.979923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - 40
+ - 40
+ - 32
+ - timestamp: 35.979923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 35.979923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - 40
+ - 40
+ - 32
+ - 44
+ - 47
+ - timestamp: 35.979923
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.076416
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - 40
+ - 40
+ - 32
+ - 44
+ - 47
+ - 47
+ - 54
+ - 42
+ - 42
+ - 40
+ - 32
+ - timestamp: 36.076416
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.07762
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - 40
+ - 40
+ - 32
+ - 44
+ - 47
+ - 47
+ - 54
+ - 42
+ - 42
+ - 40
+ - 32
+ - 34
+ - 34
+ - timestamp: 36.07762
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.174232
+ watts: 220
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 22
+ - 34
+ - 34
+ - 34
+ - 40
+ - 40
+ - 32
+ - 44
+ - 47
+ - 47
+ - 54
+ - 42
+ - 42
+ - 40
+ - 32
+ - 34
+ - 34
+ - 26
+ - 21
+ - 21
+ - 16
+ - 12
+ - 12
+ - timestamp: 36.174232
+ watts: 133
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.271923
+ watts: 133
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.27552
+ watts: 133
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - timestamp: 36.27552
+ watts: 133
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.36881
+ watts: 133
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.56041
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.564686
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.759827
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.759827
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.761433
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.856018
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 36.956367
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.050823
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.150726
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.24716
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.345627
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.441345
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.63732
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.63963
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.83212
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - timestamp: 37.83212
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.83413
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - timestamp: 37.83413
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.83413
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - timestamp: 37.83413
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 37.929165
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - timestamp: 37.929165
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.02754
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 87
+ - 88
+ - 88
+ - 84
+ - 68
+ - 68
+ - timestamp: 38.02754
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.123524
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 87
+ - 88
+ - 88
+ - 84
+ - 68
+ - 68
+ - 59
+ - timestamp: 38.123524
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.22245
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 87
+ - 88
+ - 88
+ - 84
+ - 68
+ - 68
+ - 59
+ - 56
+ - 49
+ - 49
+ - 43
+ - 36
+ - 36
+ - 28
+ - 24
+ - 24
+ - 16
+ - 14
+ - timestamp: 38.22245
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.31831
+ watts: 133
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 87
+ - 88
+ - 88
+ - 84
+ - 68
+ - 68
+ - 59
+ - 56
+ - 49
+ - 49
+ - 43
+ - 36
+ - 36
+ - 28
+ - 24
+ - 24
+ - 16
+ - 14
+ - 14
+ - timestamp: 38.31831
+ watts: 87
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.515812
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 28
+ - 28
+ - 40
+ - 51
+ - 51
+ - 58
+ - 68
+ - 68
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 87
+ - 88
+ - 88
+ - 84
+ - 68
+ - 68
+ - 59
+ - 56
+ - 49
+ - 49
+ - 43
+ - 36
+ - 36
+ - 28
+ - 24
+ - 24
+ - 16
+ - 14
+ - 14
+ - 5
+ - 5
+ - timestamp: 38.515812
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.515812
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.611683
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.707172
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.808422
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 38.808422
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.00143
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.099712
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.099712
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.101276
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.391815
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.489624
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.685684
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.685684
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 39.976917
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - timestamp: 39.976917
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.075764
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - timestamp: 40.075764
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.079834
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - timestamp: 40.079834
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.17132
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - timestamp: 40.17132
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.270935
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - 59
+ - 59
+ - 48
+ - 48
+ - 48
+ - 40
+ - 40
+ - 40
+ - 32
+ - 27
+ - 27
+ - timestamp: 40.270935
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.367134
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - 59
+ - 59
+ - 48
+ - 48
+ - 48
+ - 40
+ - 40
+ - 40
+ - 32
+ - 27
+ - 27
+ - 21
+ - 11
+ - timestamp: 40.367134
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.661472
+ watts: 87
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - 59
+ - 59
+ - 48
+ - 48
+ - 48
+ - 40
+ - 40
+ - 40
+ - 32
+ - 27
+ - 27
+ - 21
+ - 11
+ - 11
+ - 5
+ - timestamp: 40.661472
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.757233
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - 59
+ - 59
+ - 48
+ - 48
+ - 48
+ - 40
+ - 40
+ - 40
+ - 32
+ - 27
+ - 27
+ - 21
+ - 11
+ - 11
+ - 5
+ - 0
+ - timestamp: 40.757233
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.855396
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 36
+ - 36
+ - 41
+ - 41
+ - 45
+ - 47
+ - 47
+ - 53
+ - 53
+ - 55
+ - 67
+ - 67
+ - 72
+ - 69
+ - 69
+ - 61
+ - 61
+ - 56
+ - 59
+ - 59
+ - 48
+ - 48
+ - 48
+ - 40
+ - 40
+ - 40
+ - 32
+ - 27
+ - 27
+ - 21
+ - 11
+ - 11
+ - 5
+ - 0
+ - 0
+ - timestamp: 40.855396
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 40.95314
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.049015
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.049015
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.245815
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.33912
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.536747
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.538097
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.63722
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.63722
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.732113
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.734936
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.829624
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - timestamp: 41.829624
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.92808
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - timestamp: 41.92808
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 41.92808
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - timestamp: 41.92808
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.026028
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - timestamp: 42.026028
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.027424
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - 60
+ - 60
+ - 57
+ - 57
+ - timestamp: 42.027424
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.12183
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - 60
+ - 60
+ - 57
+ - 57
+ - 58
+ - 59
+ - timestamp: 42.12183
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.22034
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - 60
+ - 60
+ - 57
+ - 57
+ - 58
+ - 59
+ - 59
+ - 62
+ - 53
+ - 53
+ - 51
+ - 51
+ - 53
+ - 48
+ - 48
+ - 47
+ - 44
+ - 44
+ - timestamp: 42.22034
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.316372
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - 60
+ - 60
+ - 57
+ - 57
+ - 58
+ - 59
+ - 59
+ - 62
+ - 53
+ - 53
+ - 51
+ - 51
+ - 53
+ - 48
+ - 48
+ - 47
+ - 44
+ - 44
+ - 44
+ - 31
+ - timestamp: 42.316372
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.414654
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 26
+ - 26
+ - 38
+ - 41
+ - 41
+ - 45
+ - 45
+ - 56
+ - 60
+ - 60
+ - 57
+ - 57
+ - 58
+ - 59
+ - 59
+ - 62
+ - 53
+ - 53
+ - 51
+ - 51
+ - 53
+ - 48
+ - 48
+ - 47
+ - 44
+ - 44
+ - 44
+ - 31
+ - 31
+ - 22
+ - 22
+ - 20
+ - 19
+ - 19
+ - 13
+ - 0
+ - 0
+ - timestamp: 42.414654
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.5128
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.606037
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 42.606037
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.706722
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.706722
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.706722
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.804142
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.898426
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.898426
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 42.90398
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.095745
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.194927
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.19623
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.29092
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.486256
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.48852
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.586117
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.68153
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.780766
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 43.876446
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.07095
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - timestamp: 44.07095
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.0723
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - timestamp: 44.0723
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.0723
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - timestamp: 44.0723
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.16892
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - timestamp: 44.16892
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.170246
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - timestamp: 44.170246
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.170246
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - timestamp: 44.170246
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.26681
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - 60
+ - 60
+ - 51
+ - 51
+ - 51
+ - 41
+ - 42
+ - timestamp: 44.26681
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.36574
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - 60
+ - 60
+ - 51
+ - 51
+ - 51
+ - 41
+ - 42
+ - 42
+ - timestamp: 44.36574
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.36574
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - 60
+ - 60
+ - 51
+ - 51
+ - 51
+ - 41
+ - 42
+ - 42
+ - 27
+ - 19
+ - 19
+ - 14
+ - timestamp: 44.36574
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.367176
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - 60
+ - 60
+ - 51
+ - 51
+ - 51
+ - 41
+ - 42
+ - 42
+ - 27
+ - 19
+ - 19
+ - 14
+ - 10
+ - timestamp: 44.367176
+ watts: 72
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.560474
+ watts: 72
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 29
+ - 29
+ - 41
+ - 45
+ - 45
+ - 53
+ - 53
+ - 58
+ - 58
+ - 63
+ - 74
+ - 74
+ - 81
+ - 78
+ - 78
+ - 79
+ - 79
+ - 76
+ - 73
+ - 73
+ - 63
+ - 60
+ - 60
+ - 51
+ - 51
+ - 51
+ - 41
+ - 42
+ - 42
+ - 27
+ - 19
+ - 19
+ - 14
+ - 10
+ - 10
+ - 6
+ - 6
+ - timestamp: 44.560474
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.658215
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.658215
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.658215
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.853153
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.853153
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.854862
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 44.951313
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.047794
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.143803
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.239925
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.339634
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.43691
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.537548
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.729824
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.73213
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.92332
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - timestamp: 45.92332
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.92332
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - timestamp: 45.92332
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.979008
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - timestamp: 45.979008
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 45.979008
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - timestamp: 45.979008
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.121433
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - 51
+ - 51
+ - 57
+ - 61
+ - 61
+ - 67
+ - 67
+ - 76
+ - 82
+ - 82
+ - 79
+ - timestamp: 46.121433
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.123074
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - 51
+ - 51
+ - 57
+ - 61
+ - 61
+ - 67
+ - 67
+ - 76
+ - 82
+ - 82
+ - 79
+ - 85
+ - 85
+ - timestamp: 46.123074
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.314236
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - 51
+ - 51
+ - 57
+ - 61
+ - 61
+ - 67
+ - 67
+ - 76
+ - 82
+ - 82
+ - 79
+ - 85
+ - 85
+ - 85
+ - 84
+ - 84
+ - 75
+ - 73
+ - 73
+ - 69
+ - 60
+ - 60
+ - 47
+ - 35
+ - timestamp: 46.314236
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.412426
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - 51
+ - 51
+ - 57
+ - 61
+ - 61
+ - 67
+ - 67
+ - 76
+ - 82
+ - 82
+ - 79
+ - 85
+ - 85
+ - 85
+ - 84
+ - 84
+ - 75
+ - 73
+ - 73
+ - 69
+ - 60
+ - 60
+ - 47
+ - 35
+ - 35
+ - timestamp: 46.412426
+ watts: 70
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.606915
+ watts: 70
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 27
+ - 27
+ - 30
+ - 37
+ - 37
+ - 51
+ - 51
+ - 57
+ - 61
+ - 61
+ - 67
+ - 67
+ - 76
+ - 82
+ - 82
+ - 79
+ - 85
+ - 85
+ - 85
+ - 84
+ - 84
+ - 75
+ - 73
+ - 73
+ - 69
+ - 60
+ - 60
+ - 47
+ - 35
+ - 35
+ - 30
+ - 23
+ - 23
+ - 16
+ - 10
+ - 10
+ - timestamp: 46.606915
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.606915
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.706326
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 2
+ - 2
+ - timestamp: 46.706326
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.79743
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.897335
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 46.99841
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.19141
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.193424
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.38844
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.38844
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.38844
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.484715
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.67973
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.682224
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.78024
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.78024
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.874043
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.97263
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - timestamp: 47.97263
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 47.97423
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - timestamp: 47.97423
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.168713
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - timestamp: 48.168713
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.170322
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - 46
+ - 54
+ - 54
+ - 64
+ - 67
+ - 67
+ - 75
+ - 88
+ - 88
+ - 87
+ - 81
+ - 81
+ - 78
+ - timestamp: 48.170322
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.264637
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - 46
+ - 54
+ - 54
+ - 64
+ - 67
+ - 67
+ - 75
+ - 88
+ - 88
+ - 87
+ - 81
+ - 81
+ - 78
+ - 82
+ - timestamp: 48.264637
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.363636
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - 46
+ - 54
+ - 54
+ - 64
+ - 67
+ - 67
+ - 75
+ - 88
+ - 88
+ - 87
+ - 81
+ - 81
+ - 78
+ - 82
+ - 82
+ - 80
+ - 67
+ - 67
+ - 63
+ - 52
+ - 52
+ - 52
+ - 35
+ - 35
+ - 29
+ - timestamp: 48.363636
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.459324
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - 46
+ - 54
+ - 54
+ - 64
+ - 67
+ - 67
+ - 75
+ - 88
+ - 88
+ - 87
+ - 81
+ - 81
+ - 78
+ - 82
+ - 82
+ - 80
+ - 67
+ - 67
+ - 63
+ - 52
+ - 52
+ - 52
+ - 35
+ - 35
+ - 29
+ - 18
+ - 18
+ - timestamp: 48.459324
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.753506
+ watts: 73
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 31
+ - 31
+ - 30
+ - 46
+ - 46
+ - 54
+ - 54
+ - 64
+ - 67
+ - 67
+ - 75
+ - 88
+ - 88
+ - 87
+ - 81
+ - 81
+ - 78
+ - 82
+ - 82
+ - 80
+ - 67
+ - 67
+ - 63
+ - 52
+ - 52
+ - 52
+ - 35
+ - 35
+ - 29
+ - 18
+ - 18
+ - 14
+ - 4
+ - 4
+ - 2
+ - 2
+ - timestamp: 48.753506
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.753506
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 48.94578
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.04012
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.140232
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.239124
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.33752
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.432034
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.63014
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.63264
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.723324
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.823414
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.823414
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 49.823414
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.115124
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - timestamp: 50.115124
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.115124
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - timestamp: 50.115124
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.41032
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - 48
+ - 57
+ - 56
+ - 56
+ - 63
+ - 63
+ - 66
+ - 74
+ - 74
+ - 72
+ - 66
+ - timestamp: 50.41032
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.41167
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - 48
+ - 57
+ - 56
+ - 56
+ - 63
+ - 63
+ - 66
+ - 74
+ - 74
+ - 72
+ - 66
+ - 66
+ - 67
+ - timestamp: 50.41167
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.41167
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - 48
+ - 57
+ - 56
+ - 56
+ - 63
+ - 63
+ - 66
+ - 74
+ - 74
+ - 72
+ - 66
+ - 66
+ - 67
+ - 69
+ - 69
+ - 63
+ - timestamp: 50.41167
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.506924
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - 48
+ - 57
+ - 56
+ - 56
+ - 63
+ - 63
+ - 66
+ - 74
+ - 74
+ - 72
+ - 66
+ - 66
+ - 67
+ - 69
+ - 69
+ - 63
+ - 61
+ - 61
+ - timestamp: 50.506924
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.605923
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 26
+ - 26
+ - 26
+ - 36
+ - 36
+ - 48
+ - 48
+ - 57
+ - 56
+ - 56
+ - 63
+ - 63
+ - 66
+ - 74
+ - 74
+ - 72
+ - 66
+ - 66
+ - 67
+ - 69
+ - 69
+ - 63
+ - 61
+ - 61
+ - 51
+ - 44
+ - 44
+ - 35
+ - 26
+ - 26
+ - 24
+ - 16
+ - 16
+ - 8
+ - 1
+ - 1
+ - timestamp: 50.605923
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.70232
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.80003
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 50.80003
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.899227
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.899227
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 50.899227
+ watts: 78
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.08994
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.189342
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.287525
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.381824
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.481243
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.581226
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.773533
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.773533
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.773533
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.871433
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 51.96487
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.064922
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.164227
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - timestamp: 52.164227
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.262943
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - timestamp: 52.262943
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.356243
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - 66
+ - 72
+ - 72
+ - 69
+ - 79
+ - 79
+ - 79
+ - 87
+ - 87
+ - 75
+ - 75
+ - timestamp: 52.356243
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.456936
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - 66
+ - 72
+ - 72
+ - 69
+ - 79
+ - 79
+ - 79
+ - 87
+ - 87
+ - 75
+ - 75
+ - 75
+ - 79
+ - timestamp: 52.456936
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.648228
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - 66
+ - 72
+ - 72
+ - 69
+ - 79
+ - 79
+ - 79
+ - 87
+ - 87
+ - 75
+ - 75
+ - 75
+ - 79
+ - 77
+ - 77
+ - 67
+ - 64
+ - 64
+ - 56
+ - 53
+ - 53
+ - 35
+ - 34
+ - 34
+ - timestamp: 52.648228
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.65495
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - 66
+ - 72
+ - 72
+ - 69
+ - 79
+ - 79
+ - 79
+ - 87
+ - 87
+ - 75
+ - 75
+ - 75
+ - 79
+ - 77
+ - 77
+ - 67
+ - 64
+ - 64
+ - 56
+ - 53
+ - 53
+ - 35
+ - 34
+ - 34
+ - 23
+ - 23
+ - timestamp: 52.65495
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.748417
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - 35
+ - 35
+ - 48
+ - 48
+ - 54
+ - 66
+ - 66
+ - 72
+ - 72
+ - 69
+ - 79
+ - 79
+ - 79
+ - 87
+ - 87
+ - 75
+ - 75
+ - 75
+ - 79
+ - 77
+ - 77
+ - 67
+ - 64
+ - 64
+ - 56
+ - 53
+ - 53
+ - 35
+ - 34
+ - 34
+ - 23
+ - 23
+ - 23
+ - 8
+ - 1
+ - 1
+ - timestamp: 52.748417
+ watts: 75
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.848324
+ watts: 75
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.94643
+ watts: 75
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 1
+ - 1
+ - timestamp: 52.94643
+ watts: 75
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 52.94643
+ watts: 75
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.13992
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.142933
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.237934
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.43272
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.434513
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.434513
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.533726
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.628048
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.628048
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.629627
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.82342
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 53.919827
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.018513
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.11842
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.213024
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - timestamp: 54.213024
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.310017
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - timestamp: 54.310017
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.40891
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - timestamp: 54.40891
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.50443
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - 79
+ - timestamp: 54.50443
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.69942
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - 79
+ - 68
+ - 65
+ - 65
+ - 61
+ - 58
+ - 58
+ - 49
+ - 38
+ - 38
+ - 28
+ - 19
+ - timestamp: 54.69942
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.70064
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - 79
+ - 68
+ - 65
+ - 65
+ - 61
+ - 58
+ - 58
+ - 49
+ - 38
+ - 38
+ - 28
+ - 19
+ - 19
+ - 19
+ - timestamp: 54.70064
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.798008
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - 79
+ - 68
+ - 65
+ - 65
+ - 61
+ - 58
+ - 58
+ - 49
+ - 38
+ - 38
+ - 28
+ - 19
+ - 19
+ - 19
+ - 7
+ - 0
+ - timestamp: 54.798008
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.896236
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 25
+ - 25
+ - 36
+ - 36
+ - 45
+ - 51
+ - 51
+ - 51
+ - 64
+ - 64
+ - 71
+ - 71
+ - 78
+ - 79
+ - 79
+ - 82
+ - 84
+ - 84
+ - 82
+ - 79
+ - 79
+ - 68
+ - 65
+ - 65
+ - 61
+ - 58
+ - 58
+ - 49
+ - 38
+ - 38
+ - 28
+ - 19
+ - 19
+ - 19
+ - 7
+ - 0
+ - 0
+ - timestamp: 54.896236
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.896236
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 54.896236
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.090816
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.090816
+ watts: 79
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.188755
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.19122
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.28606
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.28606
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.48087
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.48087
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.673832
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.675922
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.772152
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.774433
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.869946
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.968296
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.968296
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 55.97124
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.162426
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - timestamp: 56.162426
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.261066
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - timestamp: 56.261066
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.261066
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - timestamp: 56.261066
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.356716
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - timestamp: 56.356716
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.456028
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - 53
+ - 53
+ - 60
+ - 70
+ - 70
+ - 77
+ - 82
+ - 82
+ - 76
+ - 71
+ - 71
+ - timestamp: 56.456028
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.552975
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - 53
+ - 53
+ - 60
+ - 70
+ - 70
+ - 77
+ - 82
+ - 82
+ - 76
+ - 71
+ - 71
+ - 65
+ - timestamp: 56.552975
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.652637
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - 53
+ - 53
+ - 60
+ - 70
+ - 70
+ - 77
+ - 82
+ - 82
+ - 76
+ - 71
+ - 71
+ - 65
+ - 65
+ - 60
+ - 51
+ - 51
+ - 47
+ - 43
+ - 43
+ - 37
+ - 26
+ - 23
+ - 23
+ - timestamp: 56.652637
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.747913
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - 53
+ - 53
+ - 60
+ - 70
+ - 70
+ - 77
+ - 82
+ - 82
+ - 76
+ - 71
+ - 71
+ - 65
+ - 65
+ - 60
+ - 51
+ - 51
+ - 47
+ - 43
+ - 43
+ - 37
+ - 26
+ - 23
+ - 23
+ - 20
+ - 17
+ - timestamp: 56.747913
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.94312
+ watts: 79
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 21
+ - 28
+ - 28
+ - 37
+ - 37
+ - 44
+ - 53
+ - 53
+ - 53
+ - 53
+ - 60
+ - 70
+ - 70
+ - 77
+ - 82
+ - 82
+ - 76
+ - 71
+ - 71
+ - 65
+ - 65
+ - 60
+ - 51
+ - 51
+ - 47
+ - 43
+ - 43
+ - 37
+ - 26
+ - 23
+ - 23
+ - 20
+ - 17
+ - 17
+ - 3
+ - 0
+ - 0
+ - timestamp: 56.94312
+ watts: 80
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 56.94543
+ watts: 80
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.04111
+ watts: 80
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 4
+ - 4
+ - timestamp: 57.04111
+ watts: 80
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.138523
+ watts: 80
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.332836
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.335407
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.528828
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.528828
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.625217
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.627216
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.822926
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.822926
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.9194
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 57.9194
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.015034
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.017918
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.209133
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.211155
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.211155
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.306423
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.30913
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - timestamp: 58.30913
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.30913
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - timestamp: 58.30913
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.40624
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - 26
+ - 29
+ - 29
+ - 43
+ - 45
+ - 45
+ - timestamp: 58.40624
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.50533
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - 26
+ - 29
+ - 29
+ - 43
+ - 45
+ - 45
+ - 54
+ - 54
+ - timestamp: 58.50533
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.70062
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - 26
+ - 29
+ - 29
+ - 43
+ - 45
+ - 45
+ - 54
+ - 54
+ - 62
+ - 60
+ - 60
+ - 62
+ - 63
+ - 63
+ - 68
+ - 68
+ - 67
+ - 70
+ - 70
+ - 69
+ - 65
+ - 65
+ - 63
+ - 56
+ - timestamp: 58.70062
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.795353
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - 26
+ - 29
+ - 29
+ - 43
+ - 45
+ - 45
+ - 54
+ - 54
+ - 62
+ - 60
+ - 60
+ - 62
+ - 63
+ - 63
+ - 68
+ - 68
+ - 67
+ - 70
+ - 70
+ - 69
+ - 65
+ - 65
+ - 63
+ - 56
+ - 56
+ - 46
+ - timestamp: 58.795353
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.893818
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 26
+ - 26
+ - 29
+ - 29
+ - 43
+ - 45
+ - 45
+ - 54
+ - 54
+ - 62
+ - 60
+ - 60
+ - 62
+ - 63
+ - 63
+ - 68
+ - 68
+ - 67
+ - 70
+ - 70
+ - 69
+ - 65
+ - 65
+ - 63
+ - 56
+ - 56
+ - 46
+ - 33
+ - 33
+ - 23
+ - 23
+ - 21
+ - 10
+ - 10
+ - 4
+ - timestamp: 58.893818
+ watts: 74
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 58.991924
+ watts: 74
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.08962
+ watts: 74
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 59.08962
+ watts: 74
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.282513
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.28542
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.28542
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.382824
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.382824
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.47819
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.56683
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.674564
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.770878
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.772198
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.772198
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 59.964527
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.06283
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.25922
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.25922
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.354954
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.358326
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.453533
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - timestamp: 60.453533
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.549824
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - timestamp: 60.549824
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.55202
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - timestamp: 60.55202
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.55202
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - timestamp: 60.55202
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.651318
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - timestamp: 60.651318
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.74503
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - timestamp: 60.74503
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.74503
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - 81
+ - 81
+ - 71
+ - timestamp: 60.74503
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.746655
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - 81
+ - 81
+ - 71
+ - 71
+ - 71
+ - timestamp: 60.746655
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 60.94154
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - 81
+ - 81
+ - 71
+ - 71
+ - 71
+ - 69
+ - 69
+ - 59
+ - 49
+ - 49
+ - 38
+ - 37
+ - 37
+ - 29
+ - 19
+ - 19
+ - 6
+ - timestamp: 60.94154
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.037334
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - 81
+ - 81
+ - 71
+ - 71
+ - 71
+ - 69
+ - 69
+ - 59
+ - 49
+ - 49
+ - 38
+ - 37
+ - 37
+ - 29
+ - 19
+ - 19
+ - 6
+ - 0
+ - 0
+ - timestamp: 61.037334
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.13734
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 24
+ - 24
+ - 42
+ - 50
+ - 50
+ - 62
+ - 62
+ - 57
+ - 73
+ - 73
+ - 76
+ - 76
+ - 84
+ - 78
+ - 78
+ - 83
+ - 81
+ - 81
+ - 81
+ - 71
+ - 71
+ - 71
+ - 69
+ - 69
+ - 59
+ - 49
+ - 49
+ - 38
+ - 37
+ - 37
+ - 29
+ - 19
+ - 19
+ - 6
+ - 0
+ - 0
+ - 2
+ - 2
+ - timestamp: 61.13734
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.236538
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.33112
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.422924
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.523228
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.621426
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.81493
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.82024
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 61.91659
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.01273
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.11211
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.206043
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.306263
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.397938
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.498333
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - timestamp: 62.498333
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.597446
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - timestamp: 62.597446
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.791622
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - timestamp: 62.791622
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.79317
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - timestamp: 62.79317
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.88944
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - timestamp: 62.88944
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - 44
+ - 44
+ - 30
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - 44
+ - 44
+ - 30
+ - 29
+ - 29
+ - timestamp: 62.98927
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.183018
+ watts: 72
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - 44
+ - 44
+ - 30
+ - 29
+ - 29
+ - 23
+ - 14
+ - 14
+ - 0
+ - timestamp: 63.183018
+ watts: 76
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.37737
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - 44
+ - 44
+ - 30
+ - 29
+ - 29
+ - 23
+ - 14
+ - 14
+ - 0
+ - 0
+ - timestamp: 63.37737
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.37984
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 21
+ - 21
+ - 31
+ - 38
+ - 38
+ - 43
+ - 43
+ - 39
+ - 39
+ - 51
+ - 55
+ - 55
+ - 63
+ - 64
+ - 64
+ - 72
+ - 72
+ - 78
+ - 76
+ - 76
+ - 77
+ - 80
+ - 80
+ - 80
+ - 70
+ - 70
+ - 56
+ - 55
+ - 55
+ - 49
+ - 44
+ - 44
+ - 30
+ - 29
+ - 29
+ - 23
+ - 14
+ - 14
+ - 0
+ - 0
+ - 0
+ - timestamp: 63.37984
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.47472
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.56988
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.669865
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.963223
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.96451
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 63.96451
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.057144
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.20473
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.20473
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.34804
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.449066
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.64513
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - timestamp: 64.64513
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.64722
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - timestamp: 64.64722
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.83913
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - timestamp: 64.83913
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.84042
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - timestamp: 64.84042
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.84042
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - timestamp: 64.84042
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.84354
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - timestamp: 64.84354
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 64.93771
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - 82
+ - 70
+ - 70
+ - 60
+ - 61
+ - timestamp: 64.93771
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.03522
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - 82
+ - 70
+ - 70
+ - 60
+ - 61
+ - 61
+ - timestamp: 65.03522
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.13403
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - 82
+ - 70
+ - 70
+ - 60
+ - 61
+ - 61
+ - 58
+ - 50
+ - 50
+ - 34
+ - 35
+ - 35
+ - 29
+ - 22
+ - 22
+ - 8
+ - 5
+ - timestamp: 65.13403
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.23013
+ watts: 76
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - 82
+ - 70
+ - 70
+ - 60
+ - 61
+ - 61
+ - 58
+ - 50
+ - 50
+ - 34
+ - 35
+ - 35
+ - 29
+ - 22
+ - 22
+ - 8
+ - 5
+ - 5
+ - timestamp: 65.23013
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.331024
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - 17
+ - 17
+ - 29
+ - 38
+ - 38
+ - 44
+ - 44
+ - 52
+ - 57
+ - 57
+ - 61
+ - 61
+ - 60
+ - 67
+ - 67
+ - 73
+ - 71
+ - 71
+ - 74
+ - 80
+ - 80
+ - 82
+ - 70
+ - 70
+ - 60
+ - 61
+ - 61
+ - 58
+ - 50
+ - 50
+ - 34
+ - 35
+ - 35
+ - 29
+ - 22
+ - 22
+ - 8
+ - 5
+ - 5
+ - 2
+ - 2
+ - 2
+ - timestamp: 65.331024
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.42503
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.52292
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.61903
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.71983
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 65.814514
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.00903
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.01123
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.204834
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.20703
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.20703
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.30394
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.40178
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.499435
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.59561
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.692825
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.88782
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - timestamp: 66.88782
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.89082
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - timestamp: 66.89082
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 66.99051
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - timestamp: 66.99051
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - 80
+ - 80
+ - 70
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - 80
+ - 80
+ - 70
+ - 75
+ - 75
+ - timestamp: 67.08345
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.37544
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - 80
+ - 80
+ - 70
+ - 75
+ - 75
+ - 76
+ - 76
+ - 76
+ - 69
+ - 68
+ - 68
+ - 66
+ - 63
+ - 63
+ - 52
+ - 48
+ - 48
+ - 37
+ - timestamp: 67.37544
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.378235
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - 80
+ - 80
+ - 70
+ - 75
+ - 75
+ - 76
+ - 76
+ - 76
+ - 69
+ - 68
+ - 68
+ - 66
+ - 63
+ - 63
+ - 52
+ - 48
+ - 48
+ - 37
+ - 34
+ - timestamp: 67.378235
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.47212
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 33
+ - 33
+ - 40
+ - 46
+ - 46
+ - 53
+ - 53
+ - 63
+ - 67
+ - 67
+ - 70
+ - 74
+ - 74
+ - 80
+ - 80
+ - 70
+ - 75
+ - 75
+ - 76
+ - 76
+ - 76
+ - 69
+ - 68
+ - 68
+ - 66
+ - 63
+ - 63
+ - 52
+ - 48
+ - 48
+ - 37
+ - 34
+ - 28
+ - 28
+ - 17
+ - 8
+ - 8
+ - 2
+ - timestamp: 67.47212
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.473434
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.57123
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 6
+ - timestamp: 67.57123
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.66913
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 6
+ - 6
+ - timestamp: 67.66913
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.66913
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.66913
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.769424
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.86333
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.86456
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 67.86456
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.058655
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.058655
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.25421
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.35121
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.448105
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.5444
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.5444
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.54935
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.838104
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 68.936615
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.03403
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 45
+ - 45
+ - 70
+ - 99
+ - 99
+ - 133
+ - 157
+ - 157
+ - timestamp: 69.03403
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.03403
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 45
+ - 45
+ - 70
+ - 99
+ - 99
+ - 133
+ - 157
+ - 157
+ - 173
+ - 180
+ - timestamp: 69.03403
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.224945
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 45
+ - 45
+ - 70
+ - 99
+ - 99
+ - 133
+ - 157
+ - 157
+ - 173
+ - 180
+ - 180
+ - 186
+ - 184
+ - 181
+ - 181
+ - 168
+ - 167
+ - 154
+ - 155
+ - 155
+ - 156
+ - 149
+ - 140
+ - 131
+ - 123
+ - 123
+ - timestamp: 69.224945
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.32573
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 45
+ - 45
+ - 70
+ - 99
+ - 99
+ - 133
+ - 157
+ - 157
+ - 173
+ - 180
+ - 180
+ - 186
+ - 184
+ - 181
+ - 181
+ - 168
+ - 167
+ - 154
+ - 155
+ - 155
+ - 156
+ - 149
+ - 140
+ - 131
+ - 123
+ - 123
+ - 115
+ - 104
+ - timestamp: 69.32573
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.423935
+ watts: 78
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 27
+ - 45
+ - 45
+ - 70
+ - 99
+ - 99
+ - 133
+ - 157
+ - 157
+ - 173
+ - 180
+ - 180
+ - 186
+ - 184
+ - 181
+ - 181
+ - 168
+ - 167
+ - 154
+ - 155
+ - 155
+ - 156
+ - 149
+ - 140
+ - 131
+ - 123
+ - 123
+ - 115
+ - 104
+ - 90
+ - 79
+ - 66
+ - 54
+ - 54
+ - 44
+ - 32
+ - 19
+ - 3
+ - timestamp: 69.423935
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.520645
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.61723
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 69.61723
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.71074
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.71622
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.71852
+ watts: 95
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 69.909836
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.00737
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.009735
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.009735
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.203766
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.30083
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.494125
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.49654
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.692535
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.692535
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - timestamp: 70.692535
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 70.88701
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 61
+ - 61
+ - 75
+ - 97
+ - 122
+ - 122
+ - 146
+ - 153
+ - 165
+ - 157
+ - 157
+ - timestamp: 70.88701
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.08031
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 61
+ - 61
+ - 75
+ - 97
+ - 122
+ - 122
+ - 146
+ - 153
+ - 165
+ - 157
+ - 157
+ - 162
+ - timestamp: 71.08031
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.17644
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 61
+ - 61
+ - 75
+ - 97
+ - 122
+ - 122
+ - 146
+ - 153
+ - 165
+ - 157
+ - 157
+ - 162
+ - 158
+ - 159
+ - 148
+ - 141
+ - timestamp: 71.17644
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.17853
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 61
+ - 61
+ - 75
+ - 97
+ - 122
+ - 122
+ - 146
+ - 153
+ - 165
+ - 157
+ - 157
+ - 162
+ - 158
+ - 159
+ - 148
+ - 141
+ - 140
+ - 140
+ - timestamp: 71.17853
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.18051
+ watts: 95
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 39
+ - 61
+ - 61
+ - 75
+ - 97
+ - 122
+ - 122
+ - 146
+ - 153
+ - 165
+ - 157
+ - 157
+ - 162
+ - 158
+ - 159
+ - 148
+ - 141
+ - 140
+ - 140
+ - 140
+ - 134
+ - 110
+ - 105
+ - 94
+ - 90
+ - 76
+ - 61
+ - 46
+ - 33
+ - 24
+ - 13
+ - 13
+ - timestamp: 71.18051
+ watts: 166
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.27475
+ watts: 166
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.37538
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 5
+ - 5
+ - timestamp: 71.37538
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.46498
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.46498
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.46498
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.76332
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.765274
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.957535
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.96005
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.96005
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 71.96005
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.05603
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.15323
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.251434
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.34831
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.44722
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - timestamp: 72.44722
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.54303
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - timestamp: 72.54303
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.641815
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - timestamp: 72.641815
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.73811
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - 149
+ - timestamp: 72.73811
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.93297
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - 149
+ - 144
+ - 133
+ - 127
+ - 129
+ - 125
+ - 125
+ - 116
+ - 98
+ - 86
+ - 73
+ - 66
+ - timestamp: 72.93297
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 72.93564
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - 149
+ - 144
+ - 133
+ - 127
+ - 129
+ - 125
+ - 125
+ - 116
+ - 98
+ - 86
+ - 73
+ - 66
+ - 56
+ - 44
+ - timestamp: 72.93564
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.03073
+ watts: 166
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - 149
+ - 144
+ - 133
+ - 127
+ - 129
+ - 125
+ - 125
+ - 116
+ - 98
+ - 86
+ - 73
+ - 66
+ - 56
+ - 44
+ - 29
+ - 20
+ - timestamp: 73.03073
+ watts: 189
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.12923
+ watts: 189
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 40
+ - 62
+ - 70
+ - 83
+ - 83
+ - 101
+ - 131
+ - 152
+ - 158
+ - 150
+ - 150
+ - 151
+ - 146
+ - 149
+ - 144
+ - 133
+ - 127
+ - 129
+ - 125
+ - 125
+ - 116
+ - 98
+ - 86
+ - 73
+ - 66
+ - 56
+ - 44
+ - 29
+ - 20
+ - 9
+ - 9
+ - timestamp: 73.12923
+ watts: 189
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.12923
+ watts: 189
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.13179
+ watts: 189
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.41904
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.41904
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.51842
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.616425
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.616425
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.616425
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 73.907455
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.007416
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.007416
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.102356
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.201324
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.29683
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - timestamp: 74.29683
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.39963
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 32
+ - 44
+ - 61
+ - 84
+ - 106
+ - 106
+ - 133
+ - 141
+ - 158
+ - 162
+ - 171
+ - timestamp: 74.39963
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.49344
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 32
+ - 44
+ - 61
+ - 84
+ - 106
+ - 106
+ - 133
+ - 141
+ - 158
+ - 162
+ - 171
+ - 171
+ - 169
+ - timestamp: 74.49344
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.49344
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 32
+ - 44
+ - 61
+ - 84
+ - 106
+ - 106
+ - 133
+ - 141
+ - 158
+ - 162
+ - 171
+ - 171
+ - 169
+ - 167
+ - 147
+ - 137
+ - timestamp: 74.49344
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.49498
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 32
+ - 44
+ - 61
+ - 84
+ - 106
+ - 106
+ - 133
+ - 141
+ - 158
+ - 162
+ - 171
+ - 171
+ - 169
+ - 167
+ - 147
+ - 137
+ - 143
+ - 135
+ - timestamp: 74.49498
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.78456
+ watts: 189
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 32
+ - 44
+ - 61
+ - 84
+ - 106
+ - 106
+ - 133
+ - 141
+ - 158
+ - 162
+ - 171
+ - 171
+ - 169
+ - 167
+ - 147
+ - 137
+ - 143
+ - 135
+ - 135
+ - 112
+ - 101
+ - 98
+ - 98
+ - 91
+ - 83
+ - 61
+ - 52
+ - 39
+ - 28
+ - 20
+ - timestamp: 74.78456
+ watts: 196
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 74.78572
+ watts: 196
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.077225
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 12
+ - timestamp: 75.077225
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.077225
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.077225
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.077225
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.174835
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.26865
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.46843
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.46843
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.566925
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.566925
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.76102
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.76201
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 75.95462
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.05322
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.055115
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - timestamp: 76.055115
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.055115
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - timestamp: 76.055115
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.24931
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - 53
+ - 72
+ - 88
+ - 110
+ - 138
+ - 138
+ - 158
+ - 164
+ - 169
+ - 167
+ - 168
+ - 170
+ - 158
+ - timestamp: 76.24931
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.34592
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - 53
+ - 72
+ - 88
+ - 110
+ - 138
+ - 138
+ - 158
+ - 164
+ - 169
+ - 167
+ - 168
+ - 170
+ - 158
+ - 155
+ - 155
+ - timestamp: 76.34592
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.53708
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - 53
+ - 72
+ - 88
+ - 110
+ - 138
+ - 138
+ - 158
+ - 164
+ - 169
+ - 167
+ - 168
+ - 170
+ - 158
+ - 155
+ - 155
+ - 142
+ - 136
+ - 124
+ - 127
+ - 115
+ - 104
+ - 79
+ - 71
+ - 55
+ - 56
+ - 39
+ - timestamp: 76.53708
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.54364
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - 53
+ - 72
+ - 88
+ - 110
+ - 138
+ - 138
+ - 158
+ - 164
+ - 169
+ - 167
+ - 168
+ - 170
+ - 158
+ - 155
+ - 155
+ - 142
+ - 136
+ - 124
+ - 127
+ - 115
+ - 104
+ - 79
+ - 71
+ - 55
+ - 56
+ - 39
+ - 27
+ - 12
+ - timestamp: 76.54364
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.73721
+ watts: 196
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 53
+ - 53
+ - 72
+ - 88
+ - 110
+ - 138
+ - 138
+ - 158
+ - 164
+ - 169
+ - 167
+ - 168
+ - 170
+ - 158
+ - 155
+ - 155
+ - 142
+ - 136
+ - 124
+ - 127
+ - 115
+ - 104
+ - 79
+ - 71
+ - 55
+ - 56
+ - 39
+ - 27
+ - 12
+ - 1
+ - timestamp: 76.73721
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.73721
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.73996
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.83313
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.83438
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.83438
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 76.93402
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.02695
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.12654
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.21912
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.32172
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.419235
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.51572
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.61371
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.61371
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.61537
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.80835
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - timestamp: 77.80835
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 77.90732
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - timestamp: 77.90732
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.00522
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - 93
+ - 111
+ - 133
+ - 133
+ - 160
+ - 184
+ - 190
+ - 188
+ - 175
+ - 178
+ - 173
+ - timestamp: 78.00522
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.09993
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - 93
+ - 111
+ - 133
+ - 133
+ - 160
+ - 184
+ - 190
+ - 188
+ - 175
+ - 178
+ - 173
+ - 161
+ - timestamp: 78.09993
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.195496
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - 93
+ - 111
+ - 133
+ - 133
+ - 160
+ - 184
+ - 190
+ - 188
+ - 175
+ - 178
+ - 173
+ - 161
+ - 161
+ - 131
+ - 119
+ - 118
+ - 118
+ - 124
+ - 118
+ - 99
+ - 86
+ - 72
+ - 64
+ - timestamp: 78.195496
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.29483
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - 93
+ - 111
+ - 133
+ - 133
+ - 160
+ - 184
+ - 190
+ - 188
+ - 175
+ - 178
+ - 173
+ - 161
+ - 161
+ - 131
+ - 119
+ - 118
+ - 118
+ - 124
+ - 118
+ - 99
+ - 86
+ - 72
+ - 64
+ - 52
+ - 43
+ - timestamp: 78.29483
+ watts: 204
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.49254
+ watts: 204
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 42
+ - 61
+ - 61
+ - 75
+ - 93
+ - 111
+ - 133
+ - 133
+ - 160
+ - 184
+ - 190
+ - 188
+ - 175
+ - 178
+ - 173
+ - 161
+ - 161
+ - 131
+ - 119
+ - 118
+ - 118
+ - 124
+ - 118
+ - 99
+ - 86
+ - 72
+ - 64
+ - 52
+ - 43
+ - 32
+ - 16
+ - 5
+ - timestamp: 78.49254
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.49254
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.68504
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.68504
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.87665
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.87665
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.97882
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 78.982254
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.172806
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.17583
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.36594
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.36594
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.46547
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.56273
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.56471
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.66052
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.75932
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 35
+ - 40
+ - 61
+ - 87
+ - timestamp: 79.75932
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.85327
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 35
+ - 40
+ - 61
+ - 87
+ - 107
+ - 107
+ - timestamp: 79.85327
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 79.95384
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 35
+ - 40
+ - 61
+ - 87
+ - 107
+ - 107
+ - 125
+ - 131
+ - 139
+ - 148
+ - 150
+ - 138
+ - 138
+ - 121
+ - 103
+ - 109
+ - 100
+ - timestamp: 79.95384
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.04964
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 35
+ - 40
+ - 61
+ - 87
+ - 107
+ - 107
+ - 125
+ - 131
+ - 139
+ - 148
+ - 150
+ - 138
+ - 138
+ - 121
+ - 103
+ - 109
+ - 100
+ - 110
+ - timestamp: 80.04964
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.14906
+ watts: 215
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 35
+ - 40
+ - 61
+ - 87
+ - 107
+ - 107
+ - 125
+ - 131
+ - 139
+ - 148
+ - 150
+ - 138
+ - 138
+ - 121
+ - 103
+ - 109
+ - 100
+ - 110
+ - 88
+ - 80
+ - 65
+ - 64
+ - 56
+ - 56
+ - 49
+ - 39
+ - 30
+ - 21
+ - timestamp: 80.14906
+ watts: 213
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.245224
+ watts: 213
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.342926
+ watts: 213
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 12
+ - timestamp: 80.342926
+ watts: 213
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.442535
+ watts: 213
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.53485
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.54213
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.63515
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.724045
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.724045
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 80.724045
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.023224
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.12021
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.31502
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.31502
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.51222
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.51346
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.5148
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.610016
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.61171
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.61171
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - timestamp: 81.61171
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.707825
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 39
+ - 39
+ - 54
+ - 71
+ - 98
+ - 98
+ - 131
+ - timestamp: 81.707825
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 81.80443
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 39
+ - 39
+ - 54
+ - 71
+ - 98
+ - 98
+ - 131
+ - 152
+ - timestamp: 81.80443
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.00043
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 39
+ - 39
+ - 54
+ - 71
+ - 98
+ - 98
+ - 131
+ - 152
+ - 165
+ - 178
+ - 178
+ - 188
+ - 191
+ - 183
+ - 168
+ - 152
+ - 144
+ - 146
+ - 140
+ - 134
+ - timestamp: 82.00043
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.00258
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 39
+ - 39
+ - 54
+ - 71
+ - 98
+ - 98
+ - 131
+ - 152
+ - 165
+ - 178
+ - 178
+ - 188
+ - 191
+ - 183
+ - 168
+ - 152
+ - 144
+ - 146
+ - 140
+ - 134
+ - 134
+ - timestamp: 82.00258
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.100525
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 39
+ - 39
+ - 54
+ - 71
+ - 98
+ - 98
+ - 131
+ - 152
+ - 165
+ - 178
+ - 178
+ - 188
+ - 191
+ - 183
+ - 168
+ - 152
+ - 144
+ - 146
+ - 140
+ - 134
+ - 134
+ - 124
+ - 119
+ - 106
+ - 109
+ - 90
+ - 85
+ - 59
+ - 48
+ - 37
+ - 32
+ - 15
+ - timestamp: 82.100525
+ watts: 213
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.19702
+ watts: 187
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.19702
+ watts: 187
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.19702
+ watts: 187
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.489944
+ watts: 187
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 4
+ - timestamp: 82.489944
+ watts: 187
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.58679
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.58679
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.58943
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.68173
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.77968
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.87953
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 82.97809
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.07367
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.17073
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.26982
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.36572
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.56113
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - timestamp: 83.56113
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.56238
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - timestamp: 83.56238
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.65822
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - 86
+ - 105
+ - 105
+ - 123
+ - 148
+ - 170
+ - 175
+ - 174
+ - 169
+ - timestamp: 83.65822
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - 86
+ - 105
+ - 105
+ - 123
+ - 148
+ - 170
+ - 175
+ - 174
+ - 169
+ - 165
+ - 165
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - 86
+ - 105
+ - 105
+ - 123
+ - 148
+ - 170
+ - 175
+ - 174
+ - 169
+ - 165
+ - 165
+ - 162
+ - 152
+ - 140
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - 86
+ - 105
+ - 105
+ - 123
+ - 148
+ - 170
+ - 175
+ - 174
+ - 169
+ - 165
+ - 165
+ - 162
+ - 152
+ - 140
+ - 141
+ - 131
+ - timestamp: 83.75722
+ watts: 187
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.048615
+ watts: 187
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 46
+ - 68
+ - 86
+ - 105
+ - 105
+ - 123
+ - 148
+ - 170
+ - 175
+ - 174
+ - 169
+ - 165
+ - 165
+ - 162
+ - 152
+ - 140
+ - 141
+ - 131
+ - 126
+ - 105
+ - 100
+ - 94
+ - 95
+ - 76
+ - 61
+ - 43
+ - 32
+ - 26
+ - timestamp: 84.048615
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.04976
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.14746
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 17
+ - timestamp: 84.14746
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.24292
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.33952
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.43747
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.53905
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.63141
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.73183
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.82808
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 84.92352
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.02243
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.12274
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.12274
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.31482
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - timestamp: 85.31482
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.31482
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - timestamp: 85.31482
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.60652
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - 51
+ - 67
+ - 80
+ - 101
+ - 134
+ - 134
+ - 155
+ - 170
+ - 171
+ - 172
+ - 169
+ - 169
+ - timestamp: 85.60652
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.60652
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - 51
+ - 67
+ - 80
+ - 101
+ - 134
+ - 134
+ - 155
+ - 170
+ - 171
+ - 172
+ - 169
+ - 169
+ - 162
+ - timestamp: 85.60652
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.704834
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - 51
+ - 67
+ - 80
+ - 101
+ - 134
+ - 134
+ - 155
+ - 170
+ - 171
+ - 172
+ - 169
+ - 169
+ - 162
+ - 155
+ - 155
+ - 136
+ - 125
+ - 131
+ - 127
+ - 124
+ - 108
+ - 95
+ - 84
+ - 77
+ - timestamp: 85.704834
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.80455
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - 51
+ - 67
+ - 80
+ - 101
+ - 134
+ - 134
+ - 155
+ - 170
+ - 171
+ - 172
+ - 169
+ - 169
+ - 162
+ - 155
+ - 155
+ - 136
+ - 125
+ - 131
+ - 127
+ - 124
+ - 108
+ - 95
+ - 84
+ - 77
+ - 70
+ - 59
+ - timestamp: 85.80455
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.80455
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 51
+ - 51
+ - 67
+ - 80
+ - 101
+ - 134
+ - 134
+ - 155
+ - 170
+ - 171
+ - 172
+ - 169
+ - 169
+ - 162
+ - 155
+ - 155
+ - 136
+ - 125
+ - 131
+ - 127
+ - 124
+ - 108
+ - 95
+ - 84
+ - 77
+ - 70
+ - 59
+ - 40
+ - 24
+ - 12
+ - timestamp: 85.80455
+ watts: 207
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 85.80733
+ watts: 212
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.095
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 2
+ - timestamp: 86.095
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.09656
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.09656
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.19232
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.19432
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.19432
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.29033
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.38933
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.38933
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.38933
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.77974
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.77974
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.77974
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 86.875015
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.069565
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.07182
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.26703
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - timestamp: 87.26703
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.36374
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - timestamp: 87.36374
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.36374
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - timestamp: 87.36374
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.36519
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - timestamp: 87.36519
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.46214
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - 165
+ - 157
+ - 150
+ - 150
+ - 154
+ - 153
+ - 149
+ - 136
+ - 127
+ - 123
+ - 115
+ - timestamp: 87.46214
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.55911
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - 165
+ - 157
+ - 150
+ - 150
+ - 154
+ - 153
+ - 149
+ - 136
+ - 127
+ - 123
+ - 115
+ - 101
+ - 87
+ - timestamp: 87.55911
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.55911
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - 165
+ - 157
+ - 150
+ - 150
+ - 154
+ - 153
+ - 149
+ - 136
+ - 127
+ - 123
+ - 115
+ - 101
+ - 87
+ - 69
+ - 54
+ - 36
+ - timestamp: 87.55911
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.56244
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - 165
+ - 157
+ - 150
+ - 150
+ - 154
+ - 153
+ - 149
+ - 136
+ - 127
+ - 123
+ - 115
+ - 101
+ - 87
+ - 69
+ - 54
+ - 36
+ - 42
+ - 31
+ - timestamp: 87.56244
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.75087
+ watts: 212
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 27
+ - 36
+ - 36
+ - 46
+ - 60
+ - 82
+ - 97
+ - 111
+ - 111
+ - 132
+ - 144
+ - 162
+ - 169
+ - 165
+ - 157
+ - 150
+ - 150
+ - 154
+ - 153
+ - 149
+ - 136
+ - 127
+ - 123
+ - 115
+ - 101
+ - 87
+ - 69
+ - 54
+ - 36
+ - 42
+ - 31
+ - 23
+ - 0
+ - timestamp: 87.75087
+ watts: 217
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.85112
+ watts: 217
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 87.94852
+ watts: 217
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.04472
+ watts: 217
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.14003
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.14543
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.338425
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.43512
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.63074
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.63362
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.72812
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.82736
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.82736
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 88.82736
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.11929
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - timestamp: 89.11929
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.12219
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - timestamp: 89.12219
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - 166
+ - 179
+ - 183
+ - 184
+ - 184
+ - 184
+ - 184
+ - 173
+ - 165
+ - 166
+ - 157
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - 166
+ - 179
+ - 183
+ - 184
+ - 184
+ - 184
+ - 184
+ - 173
+ - 165
+ - 166
+ - 157
+ - 154
+ - 145
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - 166
+ - 179
+ - 183
+ - 184
+ - 184
+ - 184
+ - 184
+ - 173
+ - 165
+ - 166
+ - 157
+ - 154
+ - 145
+ - 140
+ - 129
+ - 115
+ - timestamp: 89.31415
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.40839
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - 166
+ - 179
+ - 183
+ - 184
+ - 184
+ - 184
+ - 184
+ - 173
+ - 165
+ - 166
+ - 157
+ - 154
+ - 145
+ - 140
+ - 129
+ - 115
+ - 100
+ - 88
+ - timestamp: 89.40839
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.607925
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 49
+ - 59
+ - 76
+ - 93
+ - 112
+ - 112
+ - 141
+ - 166
+ - 179
+ - 183
+ - 184
+ - 184
+ - 184
+ - 184
+ - 173
+ - 165
+ - 166
+ - 157
+ - 154
+ - 145
+ - 140
+ - 129
+ - 115
+ - 100
+ - 88
+ - 72
+ - 50
+ - 35
+ - 35
+ - timestamp: 89.607925
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.607925
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.70433
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 22
+ - timestamp: 89.70433
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.80383
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.89752
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.99643
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 89.99643
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.09732
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.19032
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.289215
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.289215
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.38576
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.48482
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.583725
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.67873
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.77585
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.77585
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.77954
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - timestamp: 90.77954
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 90.97232
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 51
+ - 51
+ - 60
+ - 77
+ - 106
+ - 139
+ - 161
+ - 161
+ - 174
+ - 182
+ - 185
+ - 193
+ - timestamp: 90.97232
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.07114
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 51
+ - 51
+ - 60
+ - 77
+ - 106
+ - 139
+ - 161
+ - 161
+ - 174
+ - 182
+ - 185
+ - 193
+ - 188
+ - 179
+ - timestamp: 91.07114
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.26398
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 51
+ - 51
+ - 60
+ - 77
+ - 106
+ - 139
+ - 161
+ - 161
+ - 174
+ - 182
+ - 185
+ - 193
+ - 188
+ - 179
+ - 164
+ - 157
+ - 146
+ - 147
+ - 145
+ - 134
+ - 112
+ - 103
+ - 87
+ - 81
+ - timestamp: 91.26398
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.26398
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 51
+ - 51
+ - 60
+ - 77
+ - 106
+ - 139
+ - 161
+ - 161
+ - 174
+ - 182
+ - 185
+ - 193
+ - 188
+ - 179
+ - 164
+ - 157
+ - 146
+ - 147
+ - 145
+ - 134
+ - 112
+ - 103
+ - 87
+ - 81
+ - 68
+ - 57
+ - timestamp: 91.26398
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.55643
+ watts: 218
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 30
+ - 51
+ - 51
+ - 60
+ - 77
+ - 106
+ - 139
+ - 161
+ - 161
+ - 174
+ - 182
+ - 185
+ - 193
+ - 188
+ - 179
+ - 164
+ - 157
+ - 146
+ - 147
+ - 145
+ - 134
+ - 112
+ - 103
+ - 87
+ - 81
+ - 68
+ - 57
+ - 42
+ - 23
+ - 18
+ - 10
+ - timestamp: 91.55643
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.55643
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.65784
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.65784
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.84813
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 91.85152
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.04352
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.04352
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.14192
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.144165
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.239716
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.33804
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.43454
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.53053
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.62927
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.72592
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.82431
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 55
+ - 69
+ - 83
+ - 107
+ - timestamp: 92.82431
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 92.92093
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 55
+ - 69
+ - 83
+ - 107
+ - 128
+ - 128
+ - timestamp: 92.92093
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.115524
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 55
+ - 69
+ - 83
+ - 107
+ - 128
+ - 128
+ - 152
+ - 171
+ - 179
+ - 189
+ - 188
+ - 182
+ - 170
+ - 167
+ - 159
+ - 159
+ - 154
+ - timestamp: 93.115524
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.11841
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 55
+ - 69
+ - 83
+ - 107
+ - 128
+ - 128
+ - 152
+ - 171
+ - 179
+ - 189
+ - 188
+ - 182
+ - 170
+ - 167
+ - 159
+ - 159
+ - 154
+ - 144
+ - timestamp: 93.11841
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.31143
+ watts: 233
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 34
+ - 34
+ - 55
+ - 69
+ - 83
+ - 107
+ - 128
+ - 128
+ - 152
+ - 171
+ - 179
+ - 189
+ - 188
+ - 182
+ - 170
+ - 167
+ - 159
+ - 159
+ - 154
+ - 144
+ - 131
+ - 118
+ - 115
+ - 114
+ - 110
+ - 95
+ - 78
+ - 58
+ - 47
+ - 35
+ - 33
+ - timestamp: 93.31143
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.31296
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.40817
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 22
+ - 22
+ - timestamp: 93.40817
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.504654
+ watts: 224
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.60414
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.700424
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.79784
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.89572
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 93.9942
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.09053
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.18973
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.28624
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.38493
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.48064
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.67737
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.67737
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.77542
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - timestamp: 94.77542
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.87016
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - timestamp: 94.87016
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.87134
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - timestamp: 94.87134
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 94.87134
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - timestamp: 94.87134
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.06691
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - timestamp: 95.06691
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.06691
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - 134
+ - 123
+ - timestamp: 95.06691
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.16702
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - 134
+ - 123
+ - 118
+ - 102
+ - 90
+ - timestamp: 95.16702
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.16702
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - 134
+ - 123
+ - 118
+ - 102
+ - 90
+ - 82
+ - 61
+ - timestamp: 95.16702
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.26105
+ watts: 224
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - 134
+ - 123
+ - 118
+ - 102
+ - 90
+ - 82
+ - 61
+ - 50
+ - 33
+ - 35
+ - 35
+ - timestamp: 95.26105
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.35951
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 48
+ - 48
+ - 60
+ - 71
+ - 97
+ - 129
+ - 154
+ - 154
+ - 171
+ - 180
+ - 182
+ - 193
+ - 190
+ - 177
+ - 160
+ - 156
+ - 153
+ - 150
+ - 143
+ - 134
+ - 123
+ - 118
+ - 102
+ - 90
+ - 82
+ - 61
+ - 50
+ - 33
+ - 35
+ - 35
+ - 22
+ - timestamp: 95.35951
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.45593
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.55423
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.55423
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.652115
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.74812
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.847534
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.847534
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 95.847534
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.04181
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.13893
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.328735
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.328735
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.328735
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.43114
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.626526
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - timestamp: 96.626526
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.72392
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - timestamp: 96.72392
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.81993
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - timestamp: 96.81993
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.822235
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - timestamp: 96.822235
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 96.91742
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - 168
+ - 160
+ - 147
+ - 151
+ - 148
+ - 147
+ - 130
+ - 122
+ - 112
+ - 105
+ - 95
+ - timestamp: 96.91742
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.016525
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - 168
+ - 160
+ - 147
+ - 151
+ - 148
+ - 147
+ - 130
+ - 122
+ - 112
+ - 105
+ - 95
+ - 84
+ - timestamp: 97.016525
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.016525
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - 168
+ - 160
+ - 147
+ - 151
+ - 148
+ - 147
+ - 130
+ - 122
+ - 112
+ - 105
+ - 95
+ - 84
+ - 70
+ - 57
+ - 41
+ - 33
+ - timestamp: 97.016525
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.017975
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - 168
+ - 160
+ - 147
+ - 151
+ - 148
+ - 147
+ - 130
+ - 122
+ - 112
+ - 105
+ - 95
+ - 84
+ - 70
+ - 57
+ - 41
+ - 33
+ - 26
+ - timestamp: 97.017975
+ watts: 226
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.30951
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 28
+ - 36
+ - 49
+ - 53
+ - 74
+ - 92
+ - 92
+ - 117
+ - 120
+ - 130
+ - 147
+ - 161
+ - 168
+ - 168
+ - 160
+ - 147
+ - 151
+ - 148
+ - 147
+ - 130
+ - 122
+ - 112
+ - 105
+ - 95
+ - 84
+ - 70
+ - 57
+ - 41
+ - 33
+ - 26
+ - 16
+ - timestamp: 97.30951
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.30951
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.30951
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.40762
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.50453
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.60104
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.69913
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.69913
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.893936
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 97.99242
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.089676
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.18683
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.282425
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.38103
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.38103
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.38252
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.57591
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - timestamp: 98.57591
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.67462
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - timestamp: 98.67462
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.86821
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - 142
+ - 130
+ - 130
+ - 122
+ - 122
+ - 129
+ - 123
+ - 108
+ - 96
+ - 91
+ - 94
+ - 88
+ - timestamp: 98.86821
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.86821
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - 142
+ - 130
+ - 130
+ - 122
+ - 122
+ - 129
+ - 123
+ - 108
+ - 96
+ - 91
+ - 94
+ - 88
+ - 77
+ - timestamp: 98.86821
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.86977
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - 142
+ - 130
+ - 130
+ - 122
+ - 122
+ - 129
+ - 123
+ - 108
+ - 96
+ - 91
+ - 94
+ - 88
+ - 77
+ - 62
+ - 50
+ - 50
+ - 40
+ - timestamp: 98.86977
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 98.96481
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - 142
+ - 130
+ - 130
+ - 122
+ - 122
+ - 129
+ - 123
+ - 108
+ - 96
+ - 91
+ - 94
+ - 88
+ - 77
+ - 62
+ - 50
+ - 50
+ - 40
+ - 34
+ - timestamp: 98.96481
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.06607
+ watts: 226
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 38
+ - 38
+ - 49
+ - 64
+ - 83
+ - 97
+ - 110
+ - 110
+ - 125
+ - 129
+ - 136
+ - 147
+ - 142
+ - 130
+ - 130
+ - 122
+ - 122
+ - 129
+ - 123
+ - 108
+ - 96
+ - 91
+ - 94
+ - 88
+ - 77
+ - 62
+ - 50
+ - 50
+ - 40
+ - 34
+ - 29
+ - 15
+ - 2
+ - timestamp: 99.06607
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.06607
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.25821
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.35701
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.35701
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.35701
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.55182
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.64842
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.74863
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.843414
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 99.94232
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.03874
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.23233
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.23233
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.32991
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.42973
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.42973
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.431915
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.722626
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.722626
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.818115
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.914734
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.91763
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 100.91962
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.11244
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.21205
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.40343
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.40663
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.59801
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.59801
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.59982
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.694885
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.79393
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.79393
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.98842
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 101.98842
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.2809
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.28302
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.37854
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.47591
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.57492
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.67082
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.771545
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.86511
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 102.963394
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.06172
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.22351
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.22351
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.35472
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.44992
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.550125
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.646225
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.74431
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - timestamp: 103.74431
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 103.84062
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - 55
+ - 58
+ - timestamp: 103.84062
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.035736
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - 55
+ - 58
+ - 58
+ - 59
+ - 55
+ - 55
+ - 63
+ - 63
+ - 63
+ - 60
+ - 60
+ - 56
+ - 56
+ - timestamp: 104.035736
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.03847
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - 55
+ - 58
+ - 58
+ - 59
+ - 55
+ - 55
+ - 63
+ - 63
+ - 63
+ - 60
+ - 60
+ - 56
+ - 56
+ - 52
+ - timestamp: 104.03847
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.23064
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - 55
+ - 58
+ - 58
+ - 59
+ - 55
+ - 55
+ - 63
+ - 63
+ - 63
+ - 60
+ - 60
+ - 56
+ - 56
+ - 52
+ - 45
+ - 45
+ - 29
+ - 29
+ - 29
+ - 23
+ - 23
+ - 20
+ - 20
+ - 5
+ - 2
+ - timestamp: 104.23064
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.32924
+ watts: 211
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 28
+ - 28
+ - 40
+ - 40
+ - 43
+ - 47
+ - 47
+ - 55
+ - 55
+ - 58
+ - 58
+ - 59
+ - 55
+ - 55
+ - 63
+ - 63
+ - 63
+ - 60
+ - 60
+ - 56
+ - 56
+ - 52
+ - 45
+ - 45
+ - 29
+ - 29
+ - 29
+ - 23
+ - 23
+ - 20
+ - 20
+ - 5
+ - 2
+ - 2
+ - timestamp: 104.32924
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.32924
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.33128
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.42732
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 104.42732
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.42963
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.71831
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.721344
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.81671
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 104.913025
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.01233
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.10841
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.304474
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.304474
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.40181
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.40181
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.59624
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.69292
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.79283
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - timestamp: 105.79283
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.79283
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - timestamp: 105.79283
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 105.98773
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 77
+ - 77
+ - 80
+ - 84
+ - 84
+ - 86
+ - timestamp: 105.98773
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.08324
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 77
+ - 77
+ - 80
+ - 84
+ - 84
+ - 86
+ - 86
+ - 87
+ - timestamp: 106.08324
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.18274
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 77
+ - 77
+ - 80
+ - 84
+ - 84
+ - 86
+ - 86
+ - 87
+ - 82
+ - 82
+ - 72
+ - 72
+ - 67
+ - 58
+ - 58
+ - 47
+ - 32
+ - 32
+ - 28
+ - timestamp: 106.18274
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.279205
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 77
+ - 77
+ - 80
+ - 84
+ - 84
+ - 86
+ - 86
+ - 87
+ - 82
+ - 82
+ - 72
+ - 72
+ - 67
+ - 58
+ - 58
+ - 47
+ - 32
+ - 32
+ - 28
+ - 21
+ - timestamp: 106.279205
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.37512
+ watts: 102
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 26
+ - 26
+ - 41
+ - 41
+ - 48
+ - 48
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 77
+ - 77
+ - 80
+ - 84
+ - 84
+ - 86
+ - 86
+ - 87
+ - 82
+ - 82
+ - 72
+ - 72
+ - 67
+ - 58
+ - 58
+ - 47
+ - 32
+ - 32
+ - 28
+ - 21
+ - 21
+ - 10
+ - 10
+ - 0
+ - timestamp: 106.37512
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.47313
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.47313
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve:
+ - 6
+ - 6
+ - timestamp: 106.47313
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.57132
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.76483
+ watts: 59
+ spm: 11
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.864426
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.864426
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 106.96132
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.05603
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.15573
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.34793
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.35423
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.44772
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.54784
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.54784
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.55034
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.83882
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 107.84163
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.03212
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - timestamp: 108.03212
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.033676
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - timestamp: 108.033676
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.229034
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - timestamp: 108.229034
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.32495
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - timestamp: 108.32495
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.42453
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - 84
+ - 84
+ - 71
+ - timestamp: 108.42453
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.42453
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - 84
+ - 84
+ - 71
+ - 70
+ - 70
+ - timestamp: 108.42453
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.520676
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - 84
+ - 84
+ - 71
+ - 70
+ - 70
+ - 52
+ - 51
+ - 51
+ - 42
+ - 43
+ - 43
+ - 30
+ - 17
+ - 17
+ - 8
+ - 7
+ - timestamp: 108.520676
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.52345
+ watts: 59
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - 84
+ - 84
+ - 71
+ - 70
+ - 70
+ - 52
+ - 51
+ - 51
+ - 42
+ - 43
+ - 43
+ - 30
+ - 17
+ - 17
+ - 8
+ - 7
+ - 7
+ - timestamp: 108.52345
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.814926
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 19
+ - 19
+ - 25
+ - 25
+ - 39
+ - 39
+ - 48
+ - 48
+ - 60
+ - 64
+ - 64
+ - 73
+ - 73
+ - 76
+ - 77
+ - 77
+ - 89
+ - 89
+ - 90
+ - 92
+ - 92
+ - 87
+ - 88
+ - 88
+ - 83
+ - 84
+ - 84
+ - 71
+ - 70
+ - 70
+ - 52
+ - 51
+ - 51
+ - 42
+ - 43
+ - 43
+ - 30
+ - 17
+ - 17
+ - 8
+ - 7
+ - 7
+ - 8
+ - 8
+ - timestamp: 108.814926
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.814926
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.91229
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 108.91229
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.20384
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.206635
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.398224
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.398224
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.398224
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.49637
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.49771
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.49887
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.59529
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.68964
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.886566
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.88774
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 109.98372
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - timestamp: 109.98372
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.08174
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - timestamp: 110.08174
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.08174
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - 73
+ - 74
+ - 74
+ - timestamp: 110.08174
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.08313
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - 73
+ - 74
+ - 74
+ - 77
+ - 77
+ - timestamp: 110.08313
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.37311
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - 73
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 80
+ - 80
+ - 77
+ - 78
+ - 78
+ - 78
+ - 71
+ - 71
+ - 62
+ - 54
+ - 47
+ - 47
+ - timestamp: 110.37311
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.37439
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - 73
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 80
+ - 80
+ - 77
+ - 78
+ - 78
+ - 78
+ - 71
+ - 71
+ - 62
+ - 54
+ - 47
+ - 47
+ - 39
+ - timestamp: 110.37439
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.47046
+ watts: 68
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 24
+ - 24
+ - 38
+ - 46
+ - 46
+ - 55
+ - 55
+ - 56
+ - 64
+ - 64
+ - 73
+ - 74
+ - 74
+ - 77
+ - 77
+ - 77
+ - 80
+ - 80
+ - 77
+ - 78
+ - 78
+ - 78
+ - 71
+ - 71
+ - 62
+ - 54
+ - 47
+ - 47
+ - 39
+ - 35
+ - 35
+ - 22
+ - 17
+ - 17
+ - 12
+ - timestamp: 110.47046
+ watts: 81
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.56911
+ watts: 81
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.56911
+ watts: 81
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.66762
+ watts: 81
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 13
+ - 13
+ - timestamp: 110.66762
+ watts: 81
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.76755
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.86243
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.86243
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 110.86563
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.15602
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.15602
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.349625
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.44801
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.44801
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.45053
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.54503
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.64134
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.738464
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.83597
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 111.93512
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - timestamp: 111.93512
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.03163
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - timestamp: 112.03163
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.12874
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - timestamp: 112.12874
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.22757
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - timestamp: 112.22757
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.22757
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - timestamp: 112.22757
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.22923
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - timestamp: 112.22923
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.42215
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 71
+ - 72
+ - 72
+ - 58
+ - 59
+ - 59
+ - 56
+ - 62
+ - 43
+ - 43
+ - 40
+ - 32
+ - 32
+ - timestamp: 112.42215
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.51822
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 71
+ - 72
+ - 72
+ - 58
+ - 59
+ - 59
+ - 56
+ - 62
+ - 43
+ - 43
+ - 40
+ - 32
+ - 32
+ - 29
+ - timestamp: 112.51822
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.61722
+ watts: 81
+ spm: 30
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 29
+ - 29
+ - 41
+ - 41
+ - 41
+ - 60
+ - 60
+ - 65
+ - 71
+ - 71
+ - 64
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 69
+ - 71
+ - 72
+ - 72
+ - 58
+ - 59
+ - 59
+ - 56
+ - 62
+ - 43
+ - 43
+ - 40
+ - 32
+ - 32
+ - 29
+ - 18
+ - 18
+ - 3
+ - 3
+ - 3
+ - timestamp: 112.61722
+ watts: 82
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.715836
+ watts: 82
+ spm: 30
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.90883
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 4
+ - 4
+ - timestamp: 112.90883
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.91113
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 112.91113
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.008026
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.008026
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.008026
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.10394
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.20203
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.20203
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.20203
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.396255
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.495026
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.495026
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.49669
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.78642
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.787674
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.88803
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.98096
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.98303
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - timestamp: 113.98303
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 113.98303
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - timestamp: 113.98303
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.080414
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - timestamp: 114.080414
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.17653
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - timestamp: 114.17653
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.177734
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - timestamp: 114.177734
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.177734
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - timestamp: 114.177734
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.27379
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - timestamp: 114.27379
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.37294
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - timestamp: 114.37294
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.47272
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - 65
+ - 65
+ - 56
+ - 48
+ - timestamp: 114.47272
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.56633
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - 65
+ - 65
+ - 56
+ - 48
+ - 48
+ - timestamp: 114.56633
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.56767
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - 65
+ - 65
+ - 56
+ - 48
+ - 48
+ - 49
+ - 44
+ - 44
+ - 38
+ - 30
+ - 30
+ - 23
+ - 20
+ - 20
+ - 7
+ - 6
+ - timestamp: 114.56767
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.56767
+ watts: 82
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - 65
+ - 65
+ - 56
+ - 48
+ - 48
+ - 49
+ - 44
+ - 44
+ - 38
+ - 30
+ - 30
+ - 23
+ - 20
+ - 20
+ - 7
+ - 6
+ - 6
+ - timestamp: 114.56767
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.76253
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 23
+ - 23
+ - 31
+ - 31
+ - 40
+ - 43
+ - 43
+ - 53
+ - 59
+ - 59
+ - 63
+ - 63
+ - 62
+ - 68
+ - 68
+ - 68
+ - 74
+ - 74
+ - 73
+ - 73
+ - 73
+ - 70
+ - 65
+ - 65
+ - 56
+ - 48
+ - 48
+ - 49
+ - 44
+ - 44
+ - 38
+ - 30
+ - 30
+ - 23
+ - 20
+ - 20
+ - 7
+ - 6
+ - 6
+ - 1
+ - 1
+ - timestamp: 114.76253
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.76512
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.95543
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 114.95682
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.05292
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.05493
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.15143
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.25015
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.25015
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.25191
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.44284
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.541245
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.54323
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.54323
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.83424
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.83559
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 115.933624
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.027725
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.22484
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 20
+ - 20
+ - 30
+ - 31
+ - 31
+ - 42
+ - timestamp: 116.22484
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.32152
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 20
+ - 20
+ - 30
+ - 31
+ - 31
+ - 42
+ - 42
+ - timestamp: 116.32152
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.51524
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 20
+ - 20
+ - 30
+ - 31
+ - 31
+ - 42
+ - 42
+ - 46
+ - 54
+ - 54
+ - 62
+ - 62
+ - 70
+ - 69
+ - 69
+ - 68
+ - 71
+ - 71
+ - 73
+ - 71
+ - 71
+ - 69
+ - 73
+ - timestamp: 116.51524
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.51648
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 20
+ - 20
+ - 30
+ - 31
+ - 31
+ - 42
+ - 42
+ - 46
+ - 54
+ - 54
+ - 62
+ - 62
+ - 70
+ - 69
+ - 69
+ - 68
+ - 71
+ - 71
+ - 73
+ - 71
+ - 71
+ - 69
+ - 73
+ - 73
+ - 63
+ - 52
+ - timestamp: 116.51648
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.61313
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 20
+ - 20
+ - 30
+ - 31
+ - 31
+ - 42
+ - 42
+ - 46
+ - 54
+ - 54
+ - 62
+ - 62
+ - 70
+ - 69
+ - 69
+ - 68
+ - 71
+ - 71
+ - 73
+ - 71
+ - 71
+ - 69
+ - 73
+ - 73
+ - 63
+ - 52
+ - 52
+ - 39
+ - 38
+ - 38
+ - 37
+ - 29
+ - 29
+ - 21
+ - 11
+ - 11
+ - 5
+ - timestamp: 116.61313
+ watts: 80
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.71112
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.71266
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 116.71266
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.00583
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 117.00583
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.00583
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.10144
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.10332
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.10332
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.201294
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.29753
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.39392
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.49263
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.58882
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.68692
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.78374
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.97864
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 117.98134
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.07526
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.17366
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.175156
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - timestamp: 118.175156
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.270325
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - timestamp: 118.270325
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.368744
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - timestamp: 118.368744
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.467224
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - timestamp: 118.467224
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.66252
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - timestamp: 118.66252
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.758545
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - 39
+ - timestamp: 118.758545
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.76073
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - 39
+ - 33
+ - 22
+ - 22
+ - 20
+ - timestamp: 118.76073
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.76073
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - 39
+ - 33
+ - 22
+ - 22
+ - 20
+ - 17
+ - timestamp: 118.76073
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 118.95363
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - 39
+ - 33
+ - 22
+ - 22
+ - 20
+ - 17
+ - 17
+ - 12
+ - 0
+ - 0
+ - timestamp: 118.95363
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.14868
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 23
+ - 23
+ - 33
+ - 45
+ - 45
+ - 56
+ - 56
+ - 61
+ - 71
+ - 71
+ - 79
+ - 79
+ - 77
+ - 71
+ - 71
+ - 78
+ - 75
+ - 75
+ - 75
+ - 62
+ - 62
+ - 70
+ - 66
+ - 66
+ - 65
+ - 47
+ - 47
+ - 45
+ - 39
+ - 39
+ - 33
+ - 22
+ - 22
+ - 20
+ - 17
+ - 17
+ - 12
+ - 0
+ - 0
+ - 0
+ - 0
+ - timestamp: 119.14868
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.14986
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.14986
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.24841
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.24841
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.538925
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.541336
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.63504
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.63692
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.732254
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.73474
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.830414
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 119.929214
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.02609
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.02792
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.12413
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.22211
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - timestamp: 120.22211
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.22345
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - timestamp: 120.22345
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.22345
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - timestamp: 120.22345
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.513016
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - timestamp: 120.513016
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.51422
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - timestamp: 120.51422
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.70976
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - timestamp: 120.70976
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.70976
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - 38
+ - 31
+ - timestamp: 120.70976
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.7113
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - 38
+ - 31
+ - 28
+ - 28
+ - 19
+ - timestamp: 120.7113
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 120.80583
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - 38
+ - 31
+ - 28
+ - 28
+ - 19
+ - 19
+ - 19
+ - timestamp: 120.80583
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.00104
+ watts: 78
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - 38
+ - 31
+ - 28
+ - 28
+ - 19
+ - 19
+ - 19
+ - 13
+ - 9
+ - 9
+ - 4
+ - timestamp: 121.00104
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.09683
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 18
+ - 18
+ - 22
+ - 22
+ - 26
+ - 39
+ - 39
+ - 44
+ - 44
+ - 47
+ - 47
+ - 47
+ - 57
+ - 60
+ - 60
+ - 62
+ - 62
+ - 63
+ - 67
+ - 67
+ - 64
+ - 62
+ - 62
+ - 64
+ - 71
+ - 71
+ - 64
+ - 54
+ - 54
+ - 40
+ - 38
+ - 38
+ - 31
+ - 28
+ - 28
+ - 19
+ - 19
+ - 19
+ - 13
+ - 9
+ - 9
+ - 4
+ - 4
+ - timestamp: 121.09683
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.09683
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.195724
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.39276
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.48573
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.587616
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.683044
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.78233
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 121.87724
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.07378
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.07683
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.26982
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.26982
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.26982
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.36664
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - timestamp: 122.36664
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.46773
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - timestamp: 122.46773
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - 74
+ - 87
+ - 87
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - 74
+ - 87
+ - 87
+ - 83
+ - 83
+ - timestamp: 122.563034
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.75711
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - 74
+ - 87
+ - 87
+ - 83
+ - 83
+ - 96
+ - 89
+ - 89
+ - 91
+ - 81
+ - 81
+ - 79
+ - 71
+ - 59
+ - 59
+ - 45
+ - 40
+ - timestamp: 122.75711
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.85333
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - 74
+ - 87
+ - 87
+ - 83
+ - 83
+ - 96
+ - 89
+ - 89
+ - 91
+ - 81
+ - 81
+ - 79
+ - 71
+ - 59
+ - 59
+ - 45
+ - 40
+ - 40
+ - 36
+ - timestamp: 122.85333
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 122.95233
+ watts: 79
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 25
+ - 25
+ - 30
+ - 30
+ - 40
+ - 44
+ - 44
+ - 58
+ - 58
+ - 53
+ - 68
+ - 68
+ - 74
+ - 87
+ - 87
+ - 83
+ - 83
+ - 96
+ - 89
+ - 89
+ - 91
+ - 81
+ - 81
+ - 79
+ - 71
+ - 59
+ - 59
+ - 45
+ - 40
+ - 40
+ - 36
+ - 31
+ - 31
+ - 17
+ - 17
+ - 17
+ - 13
+ - 11
+ - 11
+ - timestamp: 122.95233
+ watts: 77
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.04942
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.24051
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 2
+ - 2
+ - timestamp: 123.24051
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.24051
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.43562
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.43562
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.44226
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.53572
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.72713
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.73334
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.927246
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 123.927246
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.02365
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.02664
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.21913
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.21913
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.31694
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.318405
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.41612
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - timestamp: 124.41612
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.51044
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - timestamp: 124.51044
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.60954
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - timestamp: 124.60954
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.60954
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - timestamp: 124.60954
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.70163
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - timestamp: 124.70163
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.70749
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - timestamp: 124.70749
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.80223
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - 169
+ - 158
+ - 155
+ - 156
+ - 145
+ - 145
+ - 139
+ - 116
+ - 109
+ - 99
+ - 85
+ - timestamp: 124.80223
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - 169
+ - 158
+ - 155
+ - 156
+ - 145
+ - 145
+ - 139
+ - 116
+ - 109
+ - 99
+ - 85
+ - 85
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - 169
+ - 158
+ - 155
+ - 156
+ - 145
+ - 145
+ - 139
+ - 116
+ - 109
+ - 99
+ - 85
+ - 85
+ - 76
+ - 67
+ - 54
+ - 43
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - 169
+ - 158
+ - 155
+ - 156
+ - 145
+ - 145
+ - 139
+ - 116
+ - 109
+ - 99
+ - 85
+ - 85
+ - 76
+ - 67
+ - 54
+ - 43
+ - 28
+ - timestamp: 124.9014
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.10004
+ watts: 77
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 24
+ - 53
+ - 53
+ - 65
+ - 65
+ - 93
+ - 108
+ - 108
+ - 141
+ - 155
+ - 155
+ - 178
+ - 179
+ - 179
+ - 191
+ - 183
+ - 169
+ - 169
+ - 158
+ - 155
+ - 156
+ - 145
+ - 145
+ - 139
+ - 116
+ - 109
+ - 99
+ - 85
+ - 85
+ - 76
+ - 67
+ - 54
+ - 43
+ - 28
+ - 28
+ - 15
+ - 0
+ - 0
+ - timestamp: 125.10004
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.19354
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.19502
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.19502
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.29382
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.385544
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.385544
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.385544
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.58574
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.68233
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.68233
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.68474
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.87744
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 125.973724
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.16913
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.16913
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.26688
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 53
+ - 53
+ - 62
+ - 74
+ - 74
+ - 83
+ - 110
+ - timestamp: 126.26688
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.36063
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 53
+ - 53
+ - 62
+ - 74
+ - 74
+ - 83
+ - 110
+ - 125
+ - 149
+ - timestamp: 126.36063
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.46074
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 53
+ - 53
+ - 62
+ - 74
+ - 74
+ - 83
+ - 110
+ - 125
+ - 149
+ - 149
+ - 157
+ - 165
+ - 173
+ - 165
+ - 165
+ - 157
+ - 143
+ - 141
+ - 135
+ - 127
+ - timestamp: 126.46074
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.55864
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 53
+ - 53
+ - 62
+ - 74
+ - 74
+ - 83
+ - 110
+ - 125
+ - 149
+ - 149
+ - 157
+ - 165
+ - 173
+ - 165
+ - 165
+ - 157
+ - 143
+ - 141
+ - 135
+ - 127
+ - 122
+ - timestamp: 126.55864
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.658325
+ watts: 92
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 53
+ - 53
+ - 62
+ - 74
+ - 74
+ - 83
+ - 110
+ - 125
+ - 149
+ - 149
+ - 157
+ - 165
+ - 173
+ - 165
+ - 165
+ - 157
+ - 143
+ - 141
+ - 135
+ - 127
+ - 122
+ - 111
+ - 111
+ - 100
+ - 88
+ - 77
+ - 70
+ - 58
+ - 40
+ - 21
+ - 16
+ - timestamp: 126.658325
+ watts: 154
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.75232
+ watts: 154
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.852234
+ watts: 154
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 1
+ - 1
+ - timestamp: 126.852234
+ watts: 154
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 126.948715
+ watts: 154
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.14365
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.14365
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.241135
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.33563
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.33563
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.34215
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.628235
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.628235
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.72722
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.82698
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.82698
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 127.92377
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.11855
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 53
+ - 73
+ - 91
+ - 116
+ - 116
+ - 140
+ - timestamp: 128.11855
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.11855
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 53
+ - 73
+ - 91
+ - 116
+ - 116
+ - 140
+ - 165
+ - timestamp: 128.11855
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.21742
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 53
+ - 73
+ - 91
+ - 116
+ - 116
+ - 140
+ - 165
+ - 179
+ - 192
+ - 187
+ - 186
+ - 186
+ - 174
+ - 165
+ - 154
+ - 146
+ - 142
+ - 135
+ - timestamp: 128.21742
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.31046
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 53
+ - 73
+ - 91
+ - 116
+ - 116
+ - 140
+ - 165
+ - 179
+ - 192
+ - 187
+ - 186
+ - 186
+ - 174
+ - 165
+ - 154
+ - 146
+ - 142
+ - 135
+ - 135
+ - timestamp: 128.31046
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.41068
+ watts: 154
+ spm: 35
+ heartRate: 0
+ forceCurve:
+ - 36
+ - 36
+ - 53
+ - 73
+ - 91
+ - 116
+ - 116
+ - 140
+ - 165
+ - 179
+ - 192
+ - 187
+ - 186
+ - 186
+ - 174
+ - 165
+ - 154
+ - 146
+ - 142
+ - 135
+ - 135
+ - 117
+ - 105
+ - 90
+ - 83
+ - 69
+ - 60
+ - 60
+ - 47
+ - 39
+ - 24
+ - 12
+ - timestamp: 128.41068
+ watts: 186
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.50952
+ watts: 186
+ spm: 35
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.60873
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 0
+ - timestamp: 128.60873
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.70274
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.80133
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.89902
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 128.99712
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.19093
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.19322
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.28883
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.38693
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.48633
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.67921
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.68216
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.77983
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - timestamp: 129.77983
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.77983
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - timestamp: 129.77983
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.97252
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - 101
+ - 101
+ - 114
+ - 139
+ - 171
+ - 184
+ - 186
+ - 177
+ - 172
+ - 172
+ - 172
+ - timestamp: 129.97252
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 129.97252
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - 101
+ - 101
+ - 114
+ - 139
+ - 171
+ - 184
+ - 186
+ - 177
+ - 172
+ - 172
+ - 172
+ - 170
+ - 161
+ - timestamp: 129.97252
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.16574
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - 101
+ - 101
+ - 114
+ - 139
+ - 171
+ - 184
+ - 186
+ - 177
+ - 172
+ - 172
+ - 172
+ - 170
+ - 161
+ - 151
+ - 134
+ - 125
+ - 122
+ - 121
+ - 110
+ - 93
+ - 80
+ - 63
+ - 53
+ - 42
+ - timestamp: 130.16574
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.26361
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - 101
+ - 101
+ - 114
+ - 139
+ - 171
+ - 184
+ - 186
+ - 177
+ - 172
+ - 172
+ - 172
+ - 170
+ - 161
+ - 151
+ - 134
+ - 125
+ - 122
+ - 121
+ - 110
+ - 93
+ - 80
+ - 63
+ - 53
+ - 42
+ - 32
+ - timestamp: 130.26361
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.26491
+ watts: 186
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 32
+ - 32
+ - 41
+ - 65
+ - 81
+ - 101
+ - 101
+ - 114
+ - 139
+ - 171
+ - 184
+ - 186
+ - 177
+ - 172
+ - 172
+ - 172
+ - 170
+ - 161
+ - 151
+ - 134
+ - 125
+ - 122
+ - 121
+ - 110
+ - 93
+ - 80
+ - 63
+ - 53
+ - 42
+ - 32
+ - 14
+ - timestamp: 130.26491
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.26491
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.45781
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve:
+ - 0
+ - timestamp: 130.45781
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.55803
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.55803
+ watts: 211
+ spm: 34
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.65234
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.75105
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.84973
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.84973
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 130.84973
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.0429
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.14246
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.33543
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.33543
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.43414
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.43643
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.53265
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.62892
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.82404
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - timestamp: 131.82404
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 131.82529
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - timestamp: 131.82529
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - 150
+ - 144
+ - 144
+ - 144
+ - 142
+ - 133
+ - 123
+ - 115
+ - 111
+ - 102
+ - 89
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - 150
+ - 144
+ - 144
+ - 144
+ - 142
+ - 133
+ - 123
+ - 115
+ - 111
+ - 102
+ - 89
+ - 77
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - 150
+ - 144
+ - 144
+ - 144
+ - 142
+ - 133
+ - 123
+ - 115
+ - 111
+ - 102
+ - 89
+ - 77
+ - 64
+ - 50
+ - 37
+ - 27
+ - timestamp: 132.01993
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.11632
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - 150
+ - 144
+ - 144
+ - 144
+ - 142
+ - 133
+ - 123
+ - 115
+ - 111
+ - 102
+ - 89
+ - 77
+ - 64
+ - 50
+ - 37
+ - 27
+ - 16
+ - timestamp: 132.11632
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.20775
+ watts: 211
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 35
+ - 50
+ - 50
+ - 68
+ - 79
+ - 93
+ - 110
+ - 110
+ - 120
+ - 141
+ - 147
+ - 151
+ - 148
+ - 150
+ - 144
+ - 144
+ - 144
+ - 142
+ - 133
+ - 123
+ - 115
+ - 111
+ - 102
+ - 89
+ - 77
+ - 64
+ - 50
+ - 37
+ - 27
+ - 16
+ - 9
+ - timestamp: 132.20775
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.31133
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.41063
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.41063
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.70143
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.70255
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.79942
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.89392
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.89392
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 132.89944
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.18564
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.18564
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.38464
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.38464
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.38464
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.48206
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.58287
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - timestamp: 133.58287
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - 147
+ - timestamp: 133.67732
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.86855
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - 147
+ - 143
+ - 143
+ - 131
+ - 118
+ - 110
+ - 109
+ - 103
+ - 100
+ - 85
+ - 68
+ - 58
+ - 47
+ - 38
+ - timestamp: 133.86855
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 133.97192
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - 147
+ - 143
+ - 143
+ - 131
+ - 118
+ - 110
+ - 109
+ - 103
+ - 100
+ - 85
+ - 68
+ - 58
+ - 47
+ - 38
+ - 26
+ - timestamp: 133.97192
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.06744
+ watts: 217
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - 147
+ - 143
+ - 143
+ - 131
+ - 118
+ - 110
+ - 109
+ - 103
+ - 100
+ - 85
+ - 68
+ - 58
+ - 47
+ - 38
+ - 26
+ - 26
+ - 12
+ - 0
+ - timestamp: 134.06744
+ watts: 202
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.16853
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 24
+ - 26
+ - 43
+ - 58
+ - 58
+ - 78
+ - 90
+ - 97
+ - 119
+ - 131
+ - 131
+ - 145
+ - 148
+ - 150
+ - 146
+ - 147
+ - 143
+ - 143
+ - 131
+ - 118
+ - 110
+ - 109
+ - 103
+ - 100
+ - 85
+ - 68
+ - 58
+ - 47
+ - 38
+ - 26
+ - 26
+ - 12
+ - 0
+ - 0
+ - timestamp: 134.16853
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.26053
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.35992
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.35992
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.35992
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.65154
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.74988
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.75122
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.84372
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 134.94382
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.04044
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.23564
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.23564
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.33488
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - timestamp: 135.33488
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.42674
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - timestamp: 135.42674
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.43364
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - timestamp: 135.43364
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.43364
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - timestamp: 135.43364
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.62538
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - 190
+ - 183
+ - 170
+ - 159
+ - 157
+ - 147
+ - timestamp: 135.62538
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.62538
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - 190
+ - 183
+ - 170
+ - 159
+ - 157
+ - 147
+ - 135
+ - 122
+ - timestamp: 135.62538
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.72554
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - 190
+ - 183
+ - 170
+ - 159
+ - 157
+ - 147
+ - 135
+ - 122
+ - 110
+ - 103
+ - 101
+ - 98
+ - timestamp: 135.72554
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.72728
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - 190
+ - 183
+ - 170
+ - 159
+ - 157
+ - 147
+ - 135
+ - 122
+ - 110
+ - 103
+ - 101
+ - 98
+ - 98
+ - timestamp: 135.72728
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.82265
+ watts: 202
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 45
+ - 49
+ - 64
+ - 86
+ - 86
+ - 115
+ - 138
+ - 156
+ - 172
+ - 183
+ - 183
+ - 190
+ - 183
+ - 170
+ - 159
+ - 157
+ - 147
+ - 135
+ - 122
+ - 110
+ - 103
+ - 101
+ - 98
+ - 98
+ - 91
+ - 76
+ - 52
+ - 40
+ - 40
+ - 37
+ - 25
+ - 4
+ - timestamp: 135.82265
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 135.91934
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.01683
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 136.01683
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.10803
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.30856
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.40834
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.40834
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.50403
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.69913
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.70143
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.79652
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.89455
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.89455
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 136.89604
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.09021
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - timestamp: 137.09021
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - 63
+ - 75
+ - 75
+ - 99
+ - 119
+ - 143
+ - 155
+ - 167
+ - 180
+ - 180
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - 63
+ - 75
+ - 75
+ - 99
+ - 119
+ - 143
+ - 155
+ - 167
+ - 180
+ - 180
+ - 180
+ - timestamp: 137.28651
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.48051
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - 63
+ - 75
+ - 75
+ - 99
+ - 119
+ - 143
+ - 155
+ - 167
+ - 180
+ - 180
+ - 180
+ - 177
+ - 167
+ - 160
+ - 152
+ - 143
+ - 136
+ - 127
+ - 116
+ - 107
+ - 100
+ - 86
+ - timestamp: 137.48051
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.57503
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - 63
+ - 75
+ - 75
+ - 99
+ - 119
+ - 143
+ - 155
+ - 167
+ - 180
+ - 180
+ - 180
+ - 177
+ - 167
+ - 160
+ - 152
+ - 143
+ - 136
+ - 127
+ - 116
+ - 107
+ - 100
+ - 86
+ - 77
+ - 62
+ - timestamp: 137.57503
+ watts: 197
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.77072
+ watts: 197
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 25
+ - 33
+ - 49
+ - 63
+ - 75
+ - 75
+ - 99
+ - 119
+ - 143
+ - 155
+ - 167
+ - 180
+ - 180
+ - 180
+ - 177
+ - 167
+ - 160
+ - 152
+ - 143
+ - 136
+ - 127
+ - 116
+ - 107
+ - 100
+ - 86
+ - 77
+ - 62
+ - 48
+ - 38
+ - 29
+ - 29
+ - 24
+ - timestamp: 137.77072
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.77301
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.86942
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 7
+ - 7
+ - timestamp: 137.86942
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 137.9657
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.05984
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.16034
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.25983
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.35213
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.45183
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.55164
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.74773
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.74773
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.94084
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 138.94197
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.13663
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - timestamp: 139.13663
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.13663
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - timestamp: 139.13663
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.23581
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - 168
+ - 175
+ - 175
+ - timestamp: 139.23581
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.23581
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - 168
+ - 175
+ - 175
+ - 173
+ - 168
+ - timestamp: 139.23581
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.33293
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - 168
+ - 175
+ - 175
+ - 173
+ - 168
+ - 168
+ - 165
+ - 146
+ - 141
+ - 134
+ - 133
+ - 126
+ - 116
+ - 106
+ - 93
+ - 85
+ - timestamp: 139.33293
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.42903
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - 168
+ - 175
+ - 175
+ - 173
+ - 168
+ - 168
+ - 165
+ - 146
+ - 141
+ - 134
+ - 133
+ - 126
+ - 116
+ - 106
+ - 93
+ - 85
+ - 77
+ - timestamp: 139.42903
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.52782
+ watts: 210
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 40
+ - 40
+ - 55
+ - 67
+ - 80
+ - 103
+ - 103
+ - 126
+ - 157
+ - 168
+ - 175
+ - 175
+ - 173
+ - 168
+ - 168
+ - 165
+ - 146
+ - 141
+ - 134
+ - 133
+ - 126
+ - 116
+ - 106
+ - 93
+ - 85
+ - 77
+ - 66
+ - 47
+ - 31
+ - 21
+ - timestamp: 139.52782
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.53043
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.72426
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 14
+ - timestamp: 139.72426
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.81873
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.81873
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 139.81873
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.01193
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.11093
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.30698
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.30933
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.40164
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.50183
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.50452
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.50452
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.79382
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.79703
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.98888
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - timestamp: 140.98888
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.98888
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - timestamp: 140.98888
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 140.99078
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - 133
+ - 160
+ - 168
+ - 188
+ - timestamp: 140.99078
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.08643
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - 133
+ - 160
+ - 168
+ - 188
+ - 187
+ - timestamp: 141.08643
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.38011
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - 133
+ - 160
+ - 168
+ - 188
+ - 187
+ - 183
+ - 164
+ - 153
+ - 148
+ - 148
+ - 144
+ - 134
+ - 118
+ - 108
+ - 100
+ - 96
+ - timestamp: 141.38011
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.38011
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - 133
+ - 160
+ - 168
+ - 188
+ - 187
+ - 183
+ - 164
+ - 153
+ - 148
+ - 148
+ - 144
+ - 134
+ - 118
+ - 108
+ - 100
+ - 96
+ - 86
+ - 76
+ - timestamp: 141.38011
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.57454
+ watts: 215
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 48
+ - 62
+ - 90
+ - 116
+ - 133
+ - 133
+ - 160
+ - 168
+ - 188
+ - 187
+ - 183
+ - 164
+ - 153
+ - 148
+ - 148
+ - 144
+ - 134
+ - 118
+ - 108
+ - 100
+ - 96
+ - 86
+ - 76
+ - 51
+ - 48
+ - 36
+ - 40
+ - 24
+ - 16
+ - 0
+ - timestamp: 141.57454
+ watts: 216
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.57703
+ watts: 216
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.76903
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.76903
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.86644
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.86873
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.86873
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 141.96043
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.06042
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.15886
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.25108
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.35374
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.45293
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.54953
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.64702
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.74483
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.84164
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 38
+ - 58
+ - 58
+ - 79
+ - 91
+ - 107
+ - 139
+ - 159
+ - timestamp: 142.84164
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 142.93881
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 38
+ - 58
+ - 58
+ - 79
+ - 91
+ - 107
+ - 139
+ - 159
+ - 159
+ - 180
+ - timestamp: 142.93881
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.03674
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 38
+ - 58
+ - 58
+ - 79
+ - 91
+ - 107
+ - 139
+ - 159
+ - 159
+ - 180
+ - 179
+ - 174
+ - 162
+ - 166
+ - 159
+ - 156
+ - 143
+ - 133
+ - 128
+ - 128
+ - 117
+ - timestamp: 143.03674
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.13394
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 38
+ - 58
+ - 58
+ - 79
+ - 91
+ - 107
+ - 139
+ - 159
+ - 159
+ - 180
+ - 179
+ - 174
+ - 162
+ - 166
+ - 159
+ - 156
+ - 143
+ - 133
+ - 128
+ - 128
+ - 117
+ - 109
+ - timestamp: 143.13394
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.33092
+ watts: 216
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 38
+ - 58
+ - 58
+ - 79
+ - 91
+ - 107
+ - 139
+ - 159
+ - 159
+ - 180
+ - 179
+ - 174
+ - 162
+ - 166
+ - 159
+ - 156
+ - 143
+ - 133
+ - 128
+ - 128
+ - 117
+ - 109
+ - 96
+ - 89
+ - 75
+ - 66
+ - 64
+ - 56
+ - 46
+ - 31
+ - 19
+ - timestamp: 143.33092
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.33092
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.42624
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 2
+ - timestamp: 143.42624
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.52454
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.6236
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.71884
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.81749
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 143.91624
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.01068
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.10864
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.30164
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.30164
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.40045
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.40273
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.49812
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.50023
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.59552
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.69383
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.69582
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - timestamp: 144.69582
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.69817
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - timestamp: 144.69817
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.89012
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - 91
+ - 106
+ - 106
+ - 119
+ - 142
+ - 164
+ - 175
+ - 181
+ - 165
+ - 165
+ - 151
+ - 150
+ - timestamp: 144.89012
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 144.98642
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - 91
+ - 106
+ - 106
+ - 119
+ - 142
+ - 164
+ - 175
+ - 181
+ - 165
+ - 165
+ - 151
+ - 150
+ - 140
+ - 141
+ - timestamp: 144.98642
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.08463
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - 91
+ - 106
+ - 106
+ - 119
+ - 142
+ - 164
+ - 175
+ - 181
+ - 165
+ - 165
+ - 151
+ - 150
+ - 140
+ - 141
+ - 127
+ - 115
+ - 105
+ - 104
+ - 94
+ - 87
+ - 70
+ - 61
+ - 50
+ - 47
+ - 40
+ - timestamp: 145.08463
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.18185
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - 91
+ - 106
+ - 106
+ - 119
+ - 142
+ - 164
+ - 175
+ - 181
+ - 165
+ - 165
+ - 151
+ - 150
+ - 140
+ - 141
+ - 127
+ - 115
+ - 105
+ - 104
+ - 94
+ - 87
+ - 70
+ - 61
+ - 50
+ - 47
+ - 40
+ - 40
+ - timestamp: 145.18185
+ watts: 211
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.47531
+ watts: 211
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 28
+ - 36
+ - 36
+ - 53
+ - 72
+ - 91
+ - 106
+ - 106
+ - 119
+ - 142
+ - 164
+ - 175
+ - 181
+ - 165
+ - 165
+ - 151
+ - 150
+ - 140
+ - 141
+ - 127
+ - 115
+ - 105
+ - 104
+ - 94
+ - 87
+ - 70
+ - 61
+ - 50
+ - 47
+ - 40
+ - 40
+ - 30
+ - 16
+ - 1
+ - timestamp: 145.47531
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.47531
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.57318
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.57318
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.86359
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 145.86359
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.06052
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.06052
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.06052
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.15665
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.45021
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.45341
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.64403
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.64633
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - timestamp: 146.64633
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.83932
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - timestamp: 146.83932
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - 150
+ - 146
+ - 142
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - 150
+ - 146
+ - 142
+ - 143
+ - 135
+ - timestamp: 146.84058
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.93842
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - 150
+ - 146
+ - 142
+ - 143
+ - 135
+ - 131
+ - 116
+ - 105
+ - timestamp: 146.93842
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 146.93842
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - 150
+ - 146
+ - 142
+ - 143
+ - 135
+ - 131
+ - 116
+ - 105
+ - 100
+ - 97
+ - timestamp: 146.93842
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.13199
+ watts: 209
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 32
+ - 41
+ - 41
+ - 57
+ - 69
+ - 88
+ - 114
+ - 114
+ - 136
+ - 145
+ - 155
+ - 153
+ - 156
+ - 150
+ - 150
+ - 146
+ - 142
+ - 143
+ - 135
+ - 131
+ - 116
+ - 105
+ - 100
+ - 97
+ - 88
+ - 75
+ - 66
+ - 66
+ - 55
+ - 45
+ - 28
+ - 17
+ - timestamp: 147.13199
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.22882
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.33002
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 147.33002
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.42444
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.51698
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.61932
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.71776
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.81522
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 147.91495
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.00914
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.01122
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.01122
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.20532
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.20532
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.20773
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.30133
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.40025
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.49663
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - timestamp: 148.49663
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.59404
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 36
+ - 36
+ - 46
+ - 73
+ - 96
+ - 119
+ - 119
+ - 129
+ - 144
+ - 150
+ - 162
+ - timestamp: 148.59404
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.69292
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 36
+ - 36
+ - 46
+ - 73
+ - 96
+ - 119
+ - 119
+ - 129
+ - 144
+ - 150
+ - 162
+ - 161
+ - timestamp: 148.69292
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.78973
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 36
+ - 36
+ - 46
+ - 73
+ - 96
+ - 119
+ - 119
+ - 129
+ - 144
+ - 150
+ - 162
+ - 161
+ - 162
+ - 162
+ - 157
+ - 152
+ - timestamp: 148.78973
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.79092
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 36
+ - 36
+ - 46
+ - 73
+ - 96
+ - 119
+ - 119
+ - 129
+ - 144
+ - 150
+ - 162
+ - 161
+ - 162
+ - 162
+ - 157
+ - 152
+ - 153
+ - timestamp: 148.79092
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.89064
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 36
+ - 36
+ - 46
+ - 73
+ - 96
+ - 119
+ - 119
+ - 129
+ - 144
+ - 150
+ - 162
+ - 161
+ - 162
+ - 162
+ - 157
+ - 152
+ - 153
+ - 147
+ - 132
+ - 118
+ - 115
+ - 110
+ - 106
+ - 82
+ - 74
+ - 59
+ - 51
+ - 51
+ - 28
+ - 20
+ - timestamp: 148.89064
+ watts: 202
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 148.98393
+ watts: 199
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.08363
+ watts: 199
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 5
+ - timestamp: 149.08363
+ watts: 199
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.17642
+ watts: 199
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.27682
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.37543
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.37543
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.37543
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.56853
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.66592
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.76024
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 149.86053
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.05803
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.05803
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.05803
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.15433
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.25195
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.35043
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - timestamp: 150.35043
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.44882
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 39
+ - 49
+ - 57
+ - 74
+ - 74
+ - 96
+ - 115
+ - 136
+ - 139
+ - 154
+ - 154
+ - timestamp: 150.44882
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.54373
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 39
+ - 49
+ - 57
+ - 74
+ - 74
+ - 96
+ - 115
+ - 136
+ - 139
+ - 154
+ - 154
+ - 158
+ - 164
+ - timestamp: 150.54373
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.64178
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 39
+ - 49
+ - 57
+ - 74
+ - 74
+ - 96
+ - 115
+ - 136
+ - 139
+ - 154
+ - 154
+ - 158
+ - 164
+ - 160
+ - 150
+ - 137
+ - 136
+ - 134
+ - 128
+ - 118
+ - 108
+ - 108
+ - 93
+ - 80
+ - timestamp: 150.64178
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.73943
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 39
+ - 49
+ - 57
+ - 74
+ - 74
+ - 96
+ - 115
+ - 136
+ - 139
+ - 154
+ - 154
+ - 158
+ - 164
+ - 160
+ - 150
+ - 137
+ - 136
+ - 134
+ - 128
+ - 118
+ - 108
+ - 108
+ - 93
+ - 80
+ - 70
+ - timestamp: 150.73943
+ watts: 199
+ spm: 33
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.93416
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 26
+ - 26
+ - 39
+ - 49
+ - 57
+ - 74
+ - 74
+ - 96
+ - 115
+ - 136
+ - 139
+ - 154
+ - 154
+ - 158
+ - 164
+ - 160
+ - 150
+ - 137
+ - 136
+ - 134
+ - 128
+ - 118
+ - 108
+ - 108
+ - 93
+ - 80
+ - 70
+ - 64
+ - 55
+ - 41
+ - 28
+ - 20
+ - timestamp: 150.93416
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 150.93695
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.03333
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 12
+ - timestamp: 151.03333
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.12874
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.22772
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.32402
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.42267
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.51906
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.61792
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.71443
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.90912
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 151.91225
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.00893
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.10432
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.1058
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.1058
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - timestamp: 152.1058
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.29951
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - 43
+ - 55
+ - 57
+ - 83
+ - 83
+ - 106
+ - 124
+ - 136
+ - 154
+ - 167
+ - 167
+ - 169
+ - timestamp: 152.29951
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.40073
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - 43
+ - 55
+ - 57
+ - 83
+ - 83
+ - 106
+ - 124
+ - 136
+ - 154
+ - 167
+ - 167
+ - 169
+ - 164
+ - 153
+ - timestamp: 152.40073
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.4952
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - 43
+ - 55
+ - 57
+ - 83
+ - 83
+ - 106
+ - 124
+ - 136
+ - 154
+ - 167
+ - 167
+ - 169
+ - 164
+ - 153
+ - 147
+ - 134
+ - 127
+ - 117
+ - 117
+ - 103
+ - 103
+ - 94
+ - 88
+ - 86
+ - timestamp: 152.4952
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.59152
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - 43
+ - 55
+ - 57
+ - 83
+ - 83
+ - 106
+ - 124
+ - 136
+ - 154
+ - 167
+ - 167
+ - 169
+ - 164
+ - 153
+ - 147
+ - 134
+ - 127
+ - 117
+ - 117
+ - 103
+ - 103
+ - 94
+ - 88
+ - 86
+ - 82
+ - timestamp: 152.59152
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.69063
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 31
+ - 31
+ - 43
+ - 55
+ - 57
+ - 83
+ - 83
+ - 106
+ - 124
+ - 136
+ - 154
+ - 167
+ - 167
+ - 169
+ - 164
+ - 153
+ - 147
+ - 134
+ - 127
+ - 117
+ - 117
+ - 103
+ - 103
+ - 94
+ - 88
+ - 86
+ - 82
+ - 73
+ - 56
+ - 46
+ - 38
+ - 39
+ - 25
+ - 11
+ - timestamp: 152.69063
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.78627
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.88562
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 152.88562
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.98312
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.98312
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 152.98312
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.17462
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.27272
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.46954
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.47096
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.56462
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.56993
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.66454
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.85942
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.95692
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 153.95973
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.1528
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - timestamp: 154.1528
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.15535
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - timestamp: 154.15535
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.24962
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - 82
+ - 98
+ - 98
+ - 120
+ - 146
+ - 160
+ - 170
+ - 163
+ - 163
+ - 159
+ - 163
+ - timestamp: 154.24962
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.34822
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - 82
+ - 98
+ - 98
+ - 120
+ - 146
+ - 160
+ - 170
+ - 163
+ - 163
+ - 159
+ - 163
+ - 152
+ - 153
+ - timestamp: 154.34822
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.34822
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - 82
+ - 98
+ - 98
+ - 120
+ - 146
+ - 160
+ - 170
+ - 163
+ - 163
+ - 159
+ - 163
+ - 152
+ - 153
+ - 146
+ - 136
+ - 126
+ - timestamp: 154.34822
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.35152
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - 82
+ - 98
+ - 98
+ - 120
+ - 146
+ - 160
+ - 170
+ - 163
+ - 163
+ - 159
+ - 163
+ - 152
+ - 153
+ - 146
+ - 136
+ - 126
+ - 119
+ - 110
+ - timestamp: 154.35152
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.54163
+ watts: 201
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 24
+ - 38
+ - 38
+ - 52
+ - 63
+ - 82
+ - 98
+ - 98
+ - 120
+ - 146
+ - 160
+ - 170
+ - 163
+ - 163
+ - 159
+ - 163
+ - 152
+ - 153
+ - 146
+ - 136
+ - 126
+ - 119
+ - 110
+ - 101
+ - 89
+ - 89
+ - 82
+ - 76
+ - 72
+ - 61
+ - 45
+ - 27
+ - 19
+ - timestamp: 154.54163
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.64091
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.64091
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.73773
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.83192
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 2
+ - 2
+ - timestamp: 154.83192
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.93121
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.93121
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 154.93121
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.22293
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.22293
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.41943
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.51454
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.51454
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.52043
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.71191
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.71483
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.90852
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 155.90852
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.00833
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.00833
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.19963
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - timestamp: 156.19963
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.19963
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - timestamp: 156.19963
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.39565
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - 60
+ - 67
+ - 67
+ - 67
+ - 72
+ - 73
+ - 76
+ - 70
+ - 62
+ - 62
+ - 59
+ - timestamp: 156.39565
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.39565
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - 60
+ - 67
+ - 67
+ - 67
+ - 72
+ - 73
+ - 76
+ - 70
+ - 62
+ - 62
+ - 59
+ - 55
+ - 54
+ - timestamp: 156.39565
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.49448
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - 60
+ - 67
+ - 67
+ - 67
+ - 72
+ - 73
+ - 76
+ - 70
+ - 62
+ - 62
+ - 59
+ - 55
+ - 54
+ - 44
+ - 44
+ - 32
+ - 25
+ - timestamp: 156.49448
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.49448
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - 60
+ - 67
+ - 67
+ - 67
+ - 72
+ - 73
+ - 76
+ - 70
+ - 62
+ - 62
+ - 59
+ - 55
+ - 54
+ - 44
+ - 44
+ - 32
+ - 25
+ - 22
+ - timestamp: 156.49448
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.59071
+ watts: 199
+ spm: 32
+ heartRate: 0
+ forceCurve:
+ - 25
+ - 38
+ - 38
+ - 36
+ - 38
+ - 39
+ - 49
+ - 49
+ - 60
+ - 67
+ - 67
+ - 67
+ - 72
+ - 73
+ - 76
+ - 70
+ - 62
+ - 62
+ - 59
+ - 55
+ - 54
+ - 44
+ - 44
+ - 32
+ - 25
+ - 22
+ - 23
+ - 23
+ - 12
+ - timestamp: 156.59071
+ watts: 186
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.68742
+ watts: 186
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.78279
+ watts: 186
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.88162
+ watts: 186
+ spm: 32
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 156.98055
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.07733
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.17563
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.27084
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.46683
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.46964
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.56491
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.66174
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.66301
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.66301
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.85822
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 157.95813
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.14934
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.14934
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.15163
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.24576
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.34425
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 37
+ - 37
+ - 46
+ - 58
+ - 58
+ - 49
+ - 60
+ - 60
+ - timestamp: 158.34425
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.44203
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 37
+ - 37
+ - 46
+ - 58
+ - 58
+ - 49
+ - 60
+ - 60
+ - 70
+ - timestamp: 158.44203
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.54079
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 37
+ - 37
+ - 46
+ - 58
+ - 58
+ - 49
+ - 60
+ - 60
+ - 70
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 80
+ - 81
+ - 78
+ - 78
+ - 67
+ - 69
+ - timestamp: 158.54079
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.63567
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 37
+ - 37
+ - 46
+ - 58
+ - 58
+ - 49
+ - 60
+ - 60
+ - 70
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 80
+ - 81
+ - 78
+ - 78
+ - 67
+ - 69
+ - 63
+ - 63
+ - timestamp: 158.63567
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.73491
+ watts: 186
+ spm: 31
+ heartRate: 0
+ forceCurve:
+ - 37
+ - 37
+ - 46
+ - 58
+ - 58
+ - 49
+ - 60
+ - 60
+ - 70
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 80
+ - 81
+ - 78
+ - 78
+ - 67
+ - 69
+ - 63
+ - 63
+ - 53
+ - 34
+ - 28
+ - 28
+ - 30
+ - 25
+ - 14
+ - 14
+ - 0
+ - timestamp: 158.73491
+ watts: 121
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.83083
+ watts: 121
+ spm: 31
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 158.93274
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 2
+ - 2
+ - timestamp: 158.93274
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.02733
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.02852
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.02852
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.22295
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.31892
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.51642
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.51642
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.61163
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.71056
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.71056
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 159.71324
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.00172
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.00497
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.09962
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.19814
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.19814
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.19814
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.39058
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - timestamp: 160.39058
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.58812
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - timestamp: 160.58812
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.68423
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - timestamp: 160.68423
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.68538
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - timestamp: 160.68538
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.87823
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - 55
+ - 55
+ - 49
+ - 54
+ - 54
+ - 53
+ - 50
+ - 50
+ - 37
+ - 36
+ - 36
+ - timestamp: 160.87823
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.88123
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - 55
+ - 55
+ - 49
+ - 54
+ - 54
+ - 53
+ - 50
+ - 50
+ - 37
+ - 36
+ - 36
+ - 30
+ - 27
+ - timestamp: 160.88123
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.88123
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - 55
+ - 55
+ - 49
+ - 54
+ - 54
+ - 53
+ - 50
+ - 50
+ - 37
+ - 36
+ - 36
+ - 30
+ - 27
+ - 27
+ - 12
+ - 10
+ - timestamp: 160.88123
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 160.97754
+ watts: 121
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - 55
+ - 55
+ - 49
+ - 54
+ - 54
+ - 53
+ - 50
+ - 50
+ - 37
+ - 36
+ - 36
+ - 30
+ - 27
+ - 27
+ - 12
+ - 10
+ - 10
+ - timestamp: 160.97754
+ watts: 92
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.07562
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 14
+ - 14
+ - 27
+ - 33
+ - 33
+ - 41
+ - 31
+ - 31
+ - 47
+ - 47
+ - 49
+ - 59
+ - 59
+ - 48
+ - 50
+ - 50
+ - 53
+ - 55
+ - 55
+ - 49
+ - 54
+ - 54
+ - 53
+ - 50
+ - 50
+ - 37
+ - 36
+ - 36
+ - 30
+ - 27
+ - 27
+ - 12
+ - 10
+ - 10
+ - 9
+ - 9
+ - timestamp: 161.07562
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.17104
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.36453
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.46373
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.65553
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.66261
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.85588
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.85588
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.94792
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 161.95325
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.04778
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.04778
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.24463
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.33952
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.43944
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - timestamp: 162.43944
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.53812
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - timestamp: 162.53812
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.63135
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - timestamp: 162.63135
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.73112
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - timestamp: 162.73112
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.73112
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - 51
+ - 51
+ - 49
+ - 49
+ - timestamp: 162.73112
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.73691
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - 51
+ - 51
+ - 49
+ - 49
+ - 54
+ - timestamp: 162.73691
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 162.92284
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - 51
+ - 51
+ - 49
+ - 49
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 51
+ - 46
+ - 46
+ - 41
+ - 38
+ - 38
+ - 29
+ - 24
+ - 24
+ - timestamp: 162.92284
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.02274
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - 51
+ - 51
+ - 49
+ - 49
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 51
+ - 46
+ - 46
+ - 41
+ - 38
+ - 38
+ - 29
+ - 24
+ - 24
+ - 15
+ - timestamp: 163.02274
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.22043
+ watts: 92
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 19
+ - 19
+ - 28
+ - 28
+ - 35
+ - 47
+ - 47
+ - 47
+ - 47
+ - 51
+ - 48
+ - 48
+ - 51
+ - 51
+ - 51
+ - 49
+ - 49
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 51
+ - 46
+ - 46
+ - 41
+ - 38
+ - 38
+ - 29
+ - 24
+ - 24
+ - 15
+ - 15
+ - 17
+ - 6
+ - 6
+ - 6
+ - timestamp: 163.22043
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.22043
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.31752
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 3
+ - 3
+ - timestamp: 163.31752
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.31955
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.41382
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.51183
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.60562
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.60562
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.70602
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.80464
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.80684
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 163.80684
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.09714
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.09833
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.29175
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.2933
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.2933
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.38913
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.58705
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.58705
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.68143
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - timestamp: 164.68143
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.77956
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - timestamp: 164.77956
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.78107
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - 55
+ - 59
+ - 56
+ - timestamp: 164.78107
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.78107
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - 55
+ - 59
+ - 56
+ - 56
+ - 63
+ - timestamp: 164.78107
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 164.97482
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - 55
+ - 59
+ - 56
+ - 56
+ - 63
+ - 63
+ - 64
+ - 61
+ - 61
+ - 59
+ - 61
+ - 61
+ - 60
+ - 60
+ - 51
+ - 44
+ - 44
+ - timestamp: 164.97482
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.07283
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - 55
+ - 59
+ - 56
+ - 56
+ - 63
+ - 63
+ - 64
+ - 61
+ - 61
+ - 59
+ - 61
+ - 61
+ - 60
+ - 60
+ - 51
+ - 44
+ - 44
+ - 41
+ - 33
+ - timestamp: 165.07283
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.26782
+ watts: 75
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 24
+ - 24
+ - 35
+ - 35
+ - 44
+ - 46
+ - 46
+ - 48
+ - 48
+ - 55
+ - 55
+ - 59
+ - 56
+ - 56
+ - 63
+ - 63
+ - 64
+ - 61
+ - 61
+ - 59
+ - 61
+ - 61
+ - 60
+ - 60
+ - 51
+ - 44
+ - 44
+ - 41
+ - 33
+ - 33
+ - 29
+ - 29
+ - 22
+ - 23
+ - 23
+ - 16
+ - 9
+ - 9
+ - 1
+ - timestamp: 165.26782
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.26782
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.27213
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.36432
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.46107
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 2
+ - 2
+ - timestamp: 165.46107
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.56128
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.65654
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.65654
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.85304
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.85304
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.85304
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 165.94783
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.13893
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.14474
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.23964
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.34013
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.34013
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.34013
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.63261
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.63382
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.72922
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - timestamp: 166.72922
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.82823
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - timestamp: 166.82823
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.83084
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - timestamp: 166.83084
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 166.83084
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - timestamp: 166.83084
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.11864
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - timestamp: 167.11864
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.11996
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - timestamp: 167.11996
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.21674
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - 53
+ - 53
+ - 45
+ - 44
+ - 44
+ - 32
+ - 32
+ - 32
+ - 19
+ - 19
+ - timestamp: 167.21674
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.31438
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - 53
+ - 53
+ - 45
+ - 44
+ - 44
+ - 32
+ - 32
+ - 32
+ - 19
+ - 19
+ - 18
+ - timestamp: 167.31438
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.31635
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - 53
+ - 53
+ - 45
+ - 44
+ - 44
+ - 32
+ - 32
+ - 32
+ - 19
+ - 19
+ - 18
+ - 14
+ - 14
+ - 9
+ - 9
+ - timestamp: 167.31635
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.31635
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - 53
+ - 53
+ - 45
+ - 44
+ - 44
+ - 32
+ - 32
+ - 32
+ - 19
+ - 19
+ - 18
+ - 14
+ - 14
+ - 9
+ - 9
+ - 1
+ - timestamp: 167.31635
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.60822
+ watts: 67
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 18
+ - 18
+ - 24
+ - 36
+ - 36
+ - 41
+ - 41
+ - 55
+ - 55
+ - 55
+ - 54
+ - 54
+ - 56
+ - 56
+ - 56
+ - 56
+ - 61
+ - 55
+ - 55
+ - 54
+ - 54
+ - 50
+ - 53
+ - 53
+ - 45
+ - 44
+ - 44
+ - 32
+ - 32
+ - 32
+ - 19
+ - 19
+ - 18
+ - 14
+ - 14
+ - 9
+ - 9
+ - 1
+ - 0
+ - 0
+ - timestamp: 167.60822
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.61096
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.70473
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.79794
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.89754
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 167.99643
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.09464
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.18942
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.28954
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.38605
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.48604
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.58153
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.68082
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.77934
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.8725
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - timestamp: 168.8725
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 168.97212
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - timestamp: 168.97212
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.16493
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - timestamp: 169.16493
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.16493
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - timestamp: 169.16493
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.26472
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - timestamp: 169.26472
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.36342
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - timestamp: 169.36342
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.36342
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - 36
+ - 34
+ - 34
+ - 26
+ - timestamp: 169.36342
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.36603
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - 36
+ - 34
+ - 34
+ - 26
+ - 24
+ - timestamp: 169.36603
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.65521
+ watts: 64
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - 36
+ - 34
+ - 34
+ - 26
+ - 24
+ - 24
+ - 14
+ - 14
+ - 6
+ - 5
+ - 5
+ - timestamp: 169.65521
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.65764
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - 36
+ - 34
+ - 34
+ - 26
+ - 24
+ - 24
+ - 14
+ - 14
+ - 6
+ - 5
+ - 5
+ - 4
+ - timestamp: 169.65764
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.75322
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 17
+ - 17
+ - 29
+ - 29
+ - 34
+ - 34
+ - 38
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 52
+ - 52
+ - 62
+ - 62
+ - 65
+ - 65
+ - 61
+ - 66
+ - 66
+ - 64
+ - 64
+ - 62
+ - 43
+ - 43
+ - 42
+ - 42
+ - 36
+ - 34
+ - 34
+ - 26
+ - 24
+ - 24
+ - 14
+ - 14
+ - 6
+ - 5
+ - 5
+ - 4
+ - 4
+ - timestamp: 169.75322
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.84822
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 169.94695
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.04031
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.14236
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.23933
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.33864
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.43454
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.53392
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.63374
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.82515
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 170.82802
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.02063
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - timestamp: 171.02063
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.02063
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - timestamp: 171.02063
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.11745
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - timestamp: 171.11745
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.11963
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - timestamp: 171.11963
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.21664
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - 41
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 60
+ - 60
+ - 66
+ - 66
+ - 60
+ - timestamp: 171.21664
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.21664
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - 41
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 60
+ - 60
+ - 66
+ - 66
+ - 60
+ - 60
+ - timestamp: 171.21664
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.41013
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - 41
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 60
+ - 60
+ - 66
+ - 66
+ - 60
+ - 60
+ - 62
+ - 64
+ - 64
+ - 58
+ - 58
+ - 59
+ - 51
+ - 51
+ - 50
+ - 35
+ - 35
+ - timestamp: 171.41013
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.50592
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - 41
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 60
+ - 60
+ - 66
+ - 66
+ - 60
+ - 60
+ - 62
+ - 64
+ - 64
+ - 58
+ - 58
+ - 59
+ - 51
+ - 51
+ - 50
+ - 35
+ - 35
+ - 33
+ - 33
+ - timestamp: 171.50592
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.70183
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 11
+ - 11
+ - 17
+ - 17
+ - 23
+ - 23
+ - 28
+ - 41
+ - 41
+ - 45
+ - 45
+ - 49
+ - 49
+ - 52
+ - 60
+ - 60
+ - 66
+ - 66
+ - 60
+ - 60
+ - 62
+ - 64
+ - 64
+ - 58
+ - 58
+ - 59
+ - 51
+ - 51
+ - 50
+ - 35
+ - 35
+ - 33
+ - 33
+ - 28
+ - 25
+ - 25
+ - 19
+ - 19
+ - 14
+ - 9
+ - 9
+ - 4
+ - timestamp: 171.70183
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.70512
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.80113
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 171.80113
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.89383
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 171.99353
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.09184
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.28523
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.28523
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.48354
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.48354
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.48354
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.57724
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.77513
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.77733
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.97171
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 172.97171
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.06752
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.06952
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.16624
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - timestamp: 173.16624
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.26521
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - timestamp: 173.26521
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.36183
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - 44
+ - 54
+ - 54
+ - 48
+ - 48
+ - 61
+ - 61
+ - 65
+ - 72
+ - 72
+ - 68
+ - timestamp: 173.36183
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.45744
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - 44
+ - 54
+ - 54
+ - 48
+ - 48
+ - 61
+ - 61
+ - 65
+ - 72
+ - 72
+ - 68
+ - 68
+ - 72
+ - timestamp: 173.45744
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.55603
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - 44
+ - 54
+ - 54
+ - 48
+ - 48
+ - 61
+ - 61
+ - 65
+ - 72
+ - 72
+ - 68
+ - 68
+ - 72
+ - 67
+ - 67
+ - 65
+ - 70
+ - 70
+ - 66
+ - 66
+ - 61
+ - 47
+ - 47
+ - 45
+ - timestamp: 173.55603
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.65253
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - 44
+ - 54
+ - 54
+ - 48
+ - 48
+ - 61
+ - 61
+ - 65
+ - 72
+ - 72
+ - 68
+ - 68
+ - 72
+ - 67
+ - 67
+ - 65
+ - 70
+ - 70
+ - 66
+ - 66
+ - 61
+ - 47
+ - 47
+ - 45
+ - 41
+ - timestamp: 173.65253
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.84732
+ watts: 61
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 21
+ - 21
+ - 30
+ - 30
+ - 35
+ - 35
+ - 40
+ - 40
+ - 44
+ - 54
+ - 54
+ - 48
+ - 48
+ - 61
+ - 61
+ - 65
+ - 72
+ - 72
+ - 68
+ - 68
+ - 72
+ - 67
+ - 67
+ - 65
+ - 70
+ - 70
+ - 66
+ - 66
+ - 61
+ - 47
+ - 47
+ - 45
+ - 41
+ - 41
+ - 35
+ - 27
+ - 27
+ - 24
+ - 21
+ - 21
+ - 11
+ - 11
+ - 0
+ - timestamp: 173.84732
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 173.84973
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.04184
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 1
+ - 1
+ - timestamp: 174.04184
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.04361
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.04361
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.04361
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.24002
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.24002
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.33464
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.43263
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.43399
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.43399
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.72554
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.81885
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.82397
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 174.91882
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.01523
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.11513
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.30864
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - timestamp: 175.30864
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.31015
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - timestamp: 175.31015
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.40773
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - timestamp: 175.40773
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.50174
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - timestamp: 175.50174
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.50174
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - timestamp: 175.50174
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.50882
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - timestamp: 175.50882
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.70103
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 64
+ - 62
+ - 62
+ - 60
+ - 57
+ - 57
+ - 50
+ - 43
+ - 43
+ - 38
+ - timestamp: 175.70103
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.7987
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 64
+ - 62
+ - 62
+ - 60
+ - 57
+ - 57
+ - 50
+ - 43
+ - 43
+ - 38
+ - 24
+ - timestamp: 175.7987
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.7987
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 64
+ - 62
+ - 62
+ - 60
+ - 57
+ - 57
+ - 50
+ - 43
+ - 43
+ - 38
+ - 24
+ - 24
+ - 19
+ - 7
+ - 7
+ - timestamp: 175.7987
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.80006
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 64
+ - 62
+ - 62
+ - 60
+ - 57
+ - 57
+ - 50
+ - 43
+ - 43
+ - 38
+ - 24
+ - 24
+ - 19
+ - 7
+ - 7
+ - 10
+ - timestamp: 175.80006
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 175.99313
+ watts: 62
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 12
+ - 12
+ - 17
+ - 17
+ - 24
+ - 24
+ - 26
+ - 26
+ - 32
+ - 36
+ - 36
+ - 34
+ - 34
+ - 49
+ - 53
+ - 53
+ - 66
+ - 66
+ - 65
+ - 78
+ - 78
+ - 76
+ - 76
+ - 80
+ - 79
+ - 79
+ - 78
+ - 72
+ - 72
+ - 64
+ - 62
+ - 62
+ - 60
+ - 57
+ - 57
+ - 50
+ - 43
+ - 43
+ - 38
+ - 24
+ - 24
+ - 19
+ - 7
+ - 7
+ - 10
+ - 1
+ - 1
+ - timestamp: 175.99313
+ watts: 69
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.0902
+ watts: 69
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.17644
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.28455
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.38396
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.47603
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.57701
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.6745
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.7732
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.87231
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 176.96843
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.06433
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.26163
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.26163
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.35942
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - timestamp: 177.35942
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - timestamp: 177.4563
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.65088
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - timestamp: 177.65088
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.65088
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - timestamp: 177.65088
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.74847
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - 80
+ - 80
+ - 71
+ - 71
+ - timestamp: 177.74847
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.7502
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - 80
+ - 80
+ - 71
+ - 71
+ - 77
+ - 74
+ - timestamp: 177.7502
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.84502
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - 80
+ - 80
+ - 71
+ - 71
+ - 77
+ - 74
+ - 74
+ - 74
+ - 62
+ - 61
+ - 61
+ - 52
+ - 49
+ - 49
+ - 32
+ - 36
+ - timestamp: 177.84502
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 177.94194
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - 80
+ - 80
+ - 71
+ - 71
+ - 77
+ - 74
+ - 74
+ - 74
+ - 62
+ - 61
+ - 61
+ - 52
+ - 49
+ - 49
+ - 32
+ - 36
+ - 36
+ - 30
+ - timestamp: 177.94194
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.04025
+ watts: 69
+ spm: 29
+ heartRate: 0
+ forceCurve:
+ - 17
+ - 17
+ - 22
+ - 22
+ - 33
+ - 34
+ - 34
+ - 46
+ - 46
+ - 57
+ - 56
+ - 56
+ - 64
+ - 64
+ - 70
+ - 73
+ - 73
+ - 71
+ - 73
+ - 73
+ - 77
+ - 80
+ - 80
+ - 71
+ - 71
+ - 77
+ - 74
+ - 74
+ - 74
+ - 62
+ - 61
+ - 61
+ - 52
+ - 49
+ - 49
+ - 32
+ - 36
+ - 36
+ - 30
+ - 31
+ - 31
+ - 11
+ - 7
+ - timestamp: 178.04025
+ watts: 77
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.13733
+ watts: 77
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.33177
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 6
+ - 6
+ - timestamp: 178.33177
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.33177
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.42732
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.52753
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.52753
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.52753
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.81963
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.82289
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 178.91714
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.01657
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.01657
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.01657
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.30627
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.30748
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.50392
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.50392
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.50392
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.60094
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - timestamp: 179.60094
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.70078
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - timestamp: 179.70078
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.79512
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - timestamp: 179.79512
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.79636
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - 58
+ - 60
+ - 60
+ - timestamp: 179.79636
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.79636
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - 58
+ - 60
+ - 60
+ - 66
+ - 76
+ - timestamp: 179.79636
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 179.98648
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - 58
+ - 60
+ - 60
+ - 66
+ - 76
+ - 76
+ - 75
+ - 67
+ - 67
+ - 61
+ - 66
+ - 66
+ - 61
+ - 52
+ - 52
+ - 37
+ - 33
+ - timestamp: 179.98648
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.08652
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - 58
+ - 60
+ - 60
+ - 66
+ - 76
+ - 76
+ - 75
+ - 67
+ - 67
+ - 61
+ - 66
+ - 66
+ - 61
+ - 52
+ - 52
+ - 37
+ - 33
+ - 33
+ - 27
+ - timestamp: 180.08652
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.18523
+ watts: 77
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 20
+ - 20
+ - 28
+ - 28
+ - 31
+ - 43
+ - 43
+ - 41
+ - 41
+ - 50
+ - 48
+ - 48
+ - 56
+ - 58
+ - 58
+ - 60
+ - 60
+ - 66
+ - 76
+ - 76
+ - 75
+ - 67
+ - 67
+ - 61
+ - 66
+ - 66
+ - 61
+ - 52
+ - 52
+ - 37
+ - 33
+ - 33
+ - 27
+ - 20
+ - 20
+ - 13
+ - 12
+ - 12
+ - timestamp: 180.18523
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.28487
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.38033
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 6
+ - 6
+ - timestamp: 180.38033
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.47633
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.57645
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.67232
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.86763
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.87053
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 180.96432
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.06422
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.06422
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.06683
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.45392
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.45651
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.55133
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.64745
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.84232
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.84483
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - timestamp: 181.84483
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 181.94005
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - timestamp: 181.94005
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - 62
+ - 67
+ - 67
+ - 75
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - 62
+ - 67
+ - 67
+ - 75
+ - 75
+ - timestamp: 182.03883
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.33253
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - 62
+ - 67
+ - 67
+ - 75
+ - 75
+ - 74
+ - 83
+ - 83
+ - 76
+ - 78
+ - 78
+ - 68
+ - 66
+ - 66
+ - 50
+ - 46
+ - 46
+ - 42
+ - timestamp: 182.33253
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.42824
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - 62
+ - 67
+ - 67
+ - 75
+ - 75
+ - 74
+ - 83
+ - 83
+ - 76
+ - 78
+ - 78
+ - 68
+ - 66
+ - 66
+ - 50
+ - 46
+ - 46
+ - 42
+ - 37
+ - timestamp: 182.42824
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.43022
+ watts: 80
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 15
+ - 15
+ - 19
+ - 19
+ - 30
+ - 39
+ - 39
+ - 45
+ - 45
+ - 44
+ - 47
+ - 47
+ - 52
+ - 52
+ - 62
+ - 67
+ - 67
+ - 75
+ - 75
+ - 74
+ - 83
+ - 83
+ - 76
+ - 78
+ - 78
+ - 68
+ - 66
+ - 66
+ - 50
+ - 46
+ - 46
+ - 42
+ - 37
+ - 37
+ - 32
+ - 17
+ - 17
+ - 15
+ - 9
+ - 9
+ - timestamp: 182.43022
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.52533
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.62212
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve:
+ - 10
+ - 10
+ - timestamp: 182.62212
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.72153
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.72153
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.72153
+ watts: 74
+ spm: 28
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 182.91754
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.01163
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.10973
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.20743
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.40213
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.40541
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.59773
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.59773
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.59773
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.69502
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.88913
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.89037
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.98872
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - timestamp: 183.98872
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 183.98872
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - timestamp: 183.98872
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.08394
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - timestamp: 184.08394
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.08525
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - timestamp: 184.08525
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.18204
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - 56
+ - 51
+ - 51
+ - 50
+ - 41
+ - 41
+ - 44
+ - timestamp: 184.18204
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.28033
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - 56
+ - 51
+ - 51
+ - 50
+ - 41
+ - 41
+ - 44
+ - 44
+ - timestamp: 184.28033
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.28033
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - 56
+ - 51
+ - 51
+ - 50
+ - 41
+ - 41
+ - 44
+ - 44
+ - 43
+ - 37
+ - 37
+ - 39
+ - timestamp: 184.28033
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.38072
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - 56
+ - 51
+ - 51
+ - 50
+ - 41
+ - 41
+ - 44
+ - 44
+ - 43
+ - 37
+ - 37
+ - 39
+ - 41
+ - timestamp: 184.38072
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.47484
+ watts: 74
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 16
+ - 16
+ - 28
+ - 28
+ - 34
+ - 40
+ - 40
+ - 47
+ - 47
+ - 55
+ - 53
+ - 53
+ - 47
+ - 47
+ - 56
+ - 51
+ - 51
+ - 50
+ - 41
+ - 41
+ - 44
+ - 44
+ - 43
+ - 37
+ - 37
+ - 39
+ - 41
+ - 41
+ - 37
+ - 37
+ - 23
+ - 21
+ - 21
+ - 18
+ - 13
+ - 13
+ - 0
+ - 0
+ - timestamp: 184.47484
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.57285
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.57463
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.57463
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.76764
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve:
+ - 0
+ - 0
+ - timestamp: 184.76764
+ watts: 73
+ spm: 26
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.96284
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.96396
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 184.96634
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.06004
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.06273
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.15784
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.25142
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.25703
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.25703
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.44974
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.54793
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.54993
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.54993
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.74294
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.84062
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
+ - timestamp: 185.93881
+ watts: 73
+ spm: 29
+ heartRate: 0
+ forceCurve: []
diff --git a/Assets/HIIT30_Session.asset.meta b/Assets/HIIT30_Session.asset.meta
new file mode 100644
index 0000000..d0f8c98
--- /dev/null
+++ b/Assets/HIIT30_Session.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f909449d01d84b4f8118d1f972fe7cc
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta
new file mode 100644
index 0000000..edb2102
--- /dev/null
+++ b/Assets/Plugins.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: a74419d4ed92a43589e8b33362cf2f95
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta
new file mode 100644
index 0000000..5bade75
--- /dev/null
+++ b/Assets/Plugins/Android.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: 6bcb86970c7ff4e08a5499891901f8e9
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml
new file mode 100644
index 0000000..e182141
--- /dev/null
+++ b/Assets/Plugins/Android/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Plugins/Android/AndroidManifest.xml.meta b/Assets/Plugins/Android/AndroidManifest.xml.meta
new file mode 100644
index 0000000..99cac0a
--- /dev/null
+++ b/Assets/Plugins/Android/AndroidManifest.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4abd69b18c4ab45ec976851430122248
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Android/unityandroidbluetoothlelib.jar b/Assets/Plugins/Android/unityandroidbluetoothlelib.jar
new file mode 100644
index 0000000..81f6f95
Binary files /dev/null and b/Assets/Plugins/Android/unityandroidbluetoothlelib.jar differ
diff --git a/Assets/Plugins/Android/unityandroidbluetoothlelib.jar.meta b/Assets/Plugins/Android/unityandroidbluetoothlelib.jar.meta
new file mode 100644
index 0000000..28af690
--- /dev/null
+++ b/Assets/Plugins/Android/unityandroidbluetoothlelib.jar.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: f158ceee465c745bc89002ae57bc033e
+timeCreated: 1539484944
+licenseType: Pro
+PluginImporter:
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ data:
+ first:
+ Android: Android
+ second:
+ enabled: 1
+ settings: {}
+ data:
+ first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ data:
+ first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothDeviceScript.cs b/Assets/Plugins/BluetoothDeviceScript.cs
new file mode 100644
index 0000000..72226da
--- /dev/null
+++ b/Assets/Plugins/BluetoothDeviceScript.cs
@@ -0,0 +1,395 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BluetoothDeviceScript : MonoBehaviour
+{
+#if UNITY_IOS
+ public Dictionary BLEStandardUUIDs = new Dictionary();
+#endif
+
+ public List DiscoveredDeviceList;
+
+ public Action InitializedAction;
+ public Action DeinitializedAction;
+ public Action ErrorAction;
+ public Action ServiceAddedAction;
+ public Action StartedAdvertisingAction;
+ public Action StoppedAdvertisingAction;
+ public Action DiscoveredPeripheralAction;
+ public Action DiscoveredPeripheralWithAdvertisingInfoAction;
+ public Action DiscoveredBeaconAction;
+ public Action RetrievedConnectedPeripheralAction;
+ public Action PeripheralReceivedWriteDataAction;
+ public Action ConnectedPeripheralAction;
+ public Action ConnectedDisconnectPeripheralAction;
+ public Action DisconnectedPeripheralAction;
+ public Action DiscoveredServiceAction;
+ public Action DiscoveredCharacteristicAction;
+ public Action DidWriteCharacteristicAction;
+ public Dictionary>> DidUpdateNotificationStateForCharacteristicAction;
+ public Dictionary>> DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction;
+ public Dictionary>> DidUpdateCharacteristicValueAction;
+ public Dictionary>> DidUpdateCharacteristicValueWithDeviceAddressAction;
+ public Action RequestMtuAction;
+ public Action ReadRSSIAction;
+
+ // Use this for initialization
+ void Start ()
+ {
+ DiscoveredDeviceList = new List ();
+ DidUpdateNotificationStateForCharacteristicAction = new Dictionary>> ();
+ DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction = new Dictionary>> ();
+ DidUpdateCharacteristicValueAction = new Dictionary>> ();
+ DidUpdateCharacteristicValueWithDeviceAddressAction = new Dictionary>> ();
+
+#if UNITY_IOS
+ BLEStandardUUIDs["Heart Rate Measurement"] = "00002A37-0000-1000-8000-00805F9B34FB";
+#endif
+ }
+
+ // Update is called once per frame
+ void Update ()
+ {
+ }
+
+ const string deviceInitializedString = "Initialized";
+ const string deviceDeInitializedString = "DeInitialized";
+ const string deviceErrorString = "Error";
+ const string deviceServiceAdded = "ServiceAdded";
+ const string deviceStartedAdvertising = "StartedAdvertising";
+ const string deviceStoppedAdvertising = "StoppedAdvertising";
+ const string deviceDiscoveredPeripheral = "DiscoveredPeripheral";
+ const string deviceDiscoveredBeacon = "DiscoveredBeacon";
+ const string deviceRetrievedConnectedPeripheral = "RetrievedConnectedPeripheral";
+ const string devicePeripheralReceivedWriteData = "PeripheralReceivedWriteData";
+ const string deviceConnectedPeripheral = "ConnectedPeripheral";
+ const string deviceDisconnectedPeripheral = "DisconnectedPeripheral";
+ const string deviceDiscoveredService = "DiscoveredService";
+ const string deviceDiscoveredCharacteristic = "DiscoveredCharacteristic";
+ const string deviceDidWriteCharacteristic = "DidWriteCharacteristic";
+ const string deviceDidUpdateNotificationStateForCharacteristic = "DidUpdateNotificationStateForCharacteristic";
+ const string deviceDidUpdateValueForCharacteristic = "DidUpdateValueForCharacteristic";
+ const string deviceLog = "Log";
+ const string deviceRequestMtu = "MtuChanged";
+ const string deviceReadRSSI = "DidReadRSSI";
+
+ public void OnBluetoothMessage (string message)
+ {
+ if (message != null)
+ {
+ char[] delim = new char[] { '~' };
+ string[] parts = message.Split (delim);
+
+ string log = "";
+ for (int i = 0; i < parts.Length; ++i)
+ log += string.Format("| {0}", parts[i]);
+ BluetoothLEHardwareInterface.Log(log);
+
+ if (message.Length >= deviceInitializedString.Length && message.Substring (0, deviceInitializedString.Length) == deviceInitializedString)
+ {
+ if (InitializedAction != null)
+ InitializedAction ();
+ }
+ else if (message.Length >= deviceLog.Length && message.Substring (0, deviceLog.Length) == deviceLog)
+ {
+ BluetoothLEHardwareInterface.Log (parts[1]);
+ }
+ else if (message.Length >= deviceDeInitializedString.Length && message.Substring (0, deviceDeInitializedString.Length) == deviceDeInitializedString)
+ {
+ BluetoothLEHardwareInterface.FinishDeInitialize ();
+
+ if (DeinitializedAction != null)
+ DeinitializedAction ();
+ }
+ else if (message.Length >= deviceErrorString.Length && message.Substring (0, deviceErrorString.Length) == deviceErrorString)
+ {
+ string error = "";
+
+ if (parts.Length >= 2)
+ error = parts[1];
+
+ if (ErrorAction != null)
+ ErrorAction (error);
+ }
+ else if (message.Length >= deviceServiceAdded.Length && message.Substring (0, deviceServiceAdded.Length) == deviceServiceAdded)
+ {
+ if (parts.Length >= 2)
+ {
+ if (ServiceAddedAction != null)
+ ServiceAddedAction (parts[1]);
+ }
+ }
+ else if (message.Length >= deviceStartedAdvertising.Length && message.Substring (0, deviceStartedAdvertising.Length) == deviceStartedAdvertising)
+ {
+ BluetoothLEHardwareInterface.Log ("Started Advertising");
+
+ if (StartedAdvertisingAction != null)
+ StartedAdvertisingAction ();
+ }
+ else if (message.Length >= deviceStoppedAdvertising.Length && message.Substring (0, deviceStoppedAdvertising.Length) == deviceStoppedAdvertising)
+ {
+ BluetoothLEHardwareInterface.Log ("Stopped Advertising");
+
+ if (StoppedAdvertisingAction != null)
+ StoppedAdvertisingAction ();
+ }
+ else if (message.Length >= deviceDiscoveredPeripheral.Length && message.Substring (0, deviceDiscoveredPeripheral.Length) == deviceDiscoveredPeripheral)
+ {
+ if (parts.Length >= 3)
+ {
+ // the first callback will only get called the first time this device is seen
+ // this is because it gets added to the a list in the DiscoveredDeviceList
+ // after that only the second callback will get called and only if there is
+ // advertising data available
+ if (!DiscoveredDeviceList.Contains (parts[1] + "|" + parts[2]))
+ {
+ DiscoveredDeviceList.Add (parts[1] + "|" + parts[2]);
+
+ if (DiscoveredPeripheralAction != null)
+ DiscoveredPeripheralAction (parts[1], parts[2]);
+ }
+
+ if (parts.Length >= 5 && DiscoveredPeripheralWithAdvertisingInfoAction != null)
+ {
+ // get the rssi from the 4th value
+ int rssi = 0;
+ if (!int.TryParse (parts[3], out rssi))
+ rssi = 0;
+
+ // parse the base 64 encoded data that is the 5th value
+ byte[] bytes = System.Convert.FromBase64String (parts[4]);
+
+ DiscoveredPeripheralWithAdvertisingInfoAction (parts[1], parts[2], rssi, bytes);
+ }
+ }
+ }
+ else if (message.Length >= deviceDiscoveredBeacon.Length && message.Substring (0, deviceDiscoveredBeacon.Length) == deviceDiscoveredBeacon)
+ {
+ if (parts.Length >= 7)
+ {
+ var iBeaconData = new BluetoothLEHardwareInterface.iBeaconData ();
+
+ iBeaconData.UUID = parts[1];
+ if (!int.TryParse (parts[2], out iBeaconData.Major))
+ iBeaconData.Major = 0;
+ if (!int.TryParse (parts[3], out iBeaconData.Minor))
+ iBeaconData.Minor = 0;
+ if (!int.TryParse (parts[4], out iBeaconData.RSSI))
+ iBeaconData.RSSI = 0;
+ if (!int.TryParse (parts[5], out iBeaconData.AndroidSignalPower))
+ iBeaconData.AndroidSignalPower = 0;
+ int iOSProximity = 0;
+ if (!int.TryParse (parts[6], out iOSProximity))
+ iOSProximity = 0;
+ iBeaconData.iOSProximity = (BluetoothLEHardwareInterface.iOSProximity)iOSProximity;
+
+ if (DiscoveredBeaconAction != null)
+ DiscoveredBeaconAction (iBeaconData);
+ }
+ }
+ else if (message.Length >= deviceRetrievedConnectedPeripheral.Length && message.Substring (0, deviceRetrievedConnectedPeripheral.Length) == deviceRetrievedConnectedPeripheral)
+ {
+ if (parts.Length >= 3)
+ {
+ DiscoveredDeviceList.Add (parts[1]);
+
+ if (RetrievedConnectedPeripheralAction != null)
+ RetrievedConnectedPeripheralAction (parts[1], parts[2]);
+ }
+ }
+ else if (message.Length >= devicePeripheralReceivedWriteData.Length && message.Substring (0, devicePeripheralReceivedWriteData.Length) == devicePeripheralReceivedWriteData)
+ {
+ if (parts.Length >= 3)
+ OnPeripheralData (parts[1], parts[2]);
+ }
+ else if (message.Length >= deviceConnectedPeripheral.Length && message.Substring (0, deviceConnectedPeripheral.Length) == deviceConnectedPeripheral)
+ {
+ if (parts.Length >= 2 && ConnectedPeripheralAction != null)
+ ConnectedPeripheralAction (parts[1]);
+ }
+ else if (message.Length >= deviceDisconnectedPeripheral.Length && message.Substring (0, deviceDisconnectedPeripheral.Length) == deviceDisconnectedPeripheral)
+ {
+ if (parts.Length >= 2)
+ {
+ if (ConnectedDisconnectPeripheralAction != null)
+ ConnectedDisconnectPeripheralAction (parts[1]);
+
+ if (DisconnectedPeripheralAction != null)
+ DisconnectedPeripheralAction (parts[1]);
+ }
+ }
+ else if (message.Length >= deviceDiscoveredService.Length && message.Substring (0, deviceDiscoveredService.Length) == deviceDiscoveredService)
+ {
+ if (parts.Length >= 3 && DiscoveredServiceAction != null)
+ DiscoveredServiceAction (parts[1], parts[2]);
+ }
+ else if (message.Length >= deviceDiscoveredCharacteristic.Length && message.Substring (0, deviceDiscoveredCharacteristic.Length) == deviceDiscoveredCharacteristic)
+ {
+ if (parts.Length >= 4 && DiscoveredCharacteristicAction != null)
+ DiscoveredCharacteristicAction (parts[1], parts[2], parts[3]);
+ }
+ else if (message.Length >= deviceDidWriteCharacteristic.Length && message.Substring (0, deviceDidWriteCharacteristic.Length) == deviceDidWriteCharacteristic)
+ {
+ if (parts.Length >= 2 && DidWriteCharacteristicAction != null)
+ DidWriteCharacteristicAction (parts[1]);
+ }
+ else if (message.Length >= deviceDidUpdateNotificationStateForCharacteristic.Length && message.Substring (0, deviceDidUpdateNotificationStateForCharacteristic.Length) == deviceDidUpdateNotificationStateForCharacteristic)
+ {
+ if (parts.Length >= 3)
+ {
+ if (DidUpdateNotificationStateForCharacteristicAction != null && DidUpdateNotificationStateForCharacteristicAction.ContainsKey (parts[1]))
+ {
+ var characteristicAction = DidUpdateNotificationStateForCharacteristicAction[parts[1]];
+ if (characteristicAction != null && characteristicAction.ContainsKey (parts[2]))
+ {
+ var action = characteristicAction[parts[2]];
+ if (action != null)
+ action (parts[2]);
+ }
+ }
+
+ if (DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction != null && DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction.ContainsKey (parts[1]))
+ {
+ var characteristicAction = DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[parts[1]];
+ if (characteristicAction != null && characteristicAction.ContainsKey (parts[2]))
+ {
+ var action = characteristicAction[parts[2]];
+ if (action != null)
+ action (parts[1], parts[2]);
+ }
+ }
+ }
+ }
+ else if (message.Length >= deviceDidUpdateValueForCharacteristic.Length && message.Substring (0, deviceDidUpdateValueForCharacteristic.Length) == deviceDidUpdateValueForCharacteristic)
+ {
+ if (parts.Length >= 4)
+ OnBluetoothData (parts[1], parts[2], parts[3]);
+ }
+ else if (message.Length >= deviceRequestMtu.Length && message.Substring(0, deviceRequestMtu.Length) == deviceRequestMtu)
+ {
+ if (parts.Length >= 3)
+ {
+ if (RequestMtuAction != null)
+ {
+ int mtu = 0;
+ if (int.TryParse(parts[2], out mtu))
+ RequestMtuAction(parts[1], mtu);
+ }
+ }
+ }
+ else if (message.Length >= deviceReadRSSI.Length && message.Substring(0, deviceReadRSSI.Length) == deviceReadRSSI)
+ {
+ if (parts.Length >= 3)
+ {
+ if (ReadRSSIAction != null)
+ {
+ int rssi = 0;
+ if (int.TryParse(parts[2], out rssi))
+ ReadRSSIAction(parts[1], rssi);
+ }
+ }
+ }
+ }
+ }
+
+ public void OnBluetoothData (string base64Data)
+ {
+ OnBluetoothData ("", "", base64Data);
+ }
+
+ public void OnBluetoothData (string deviceAddress, string characteristic, string base64Data)
+ {
+ if (base64Data != null)
+ {
+ byte[] bytes = System.Convert.FromBase64String (base64Data);
+ if (bytes.Length > 0)
+ {
+ deviceAddress = deviceAddress.ToUpper ();
+ characteristic = characteristic.ToUpper ();
+
+#if UNITY_IOS
+ if (BLEStandardUUIDs.ContainsKey(characteristic))
+ characteristic = BLEStandardUUIDs[characteristic];
+#endif
+
+ BluetoothLEHardwareInterface.Log ("Device: " + deviceAddress + " Characteristic Received: " + characteristic);
+
+ string byteString = "";
+ foreach (byte b in bytes)
+ byteString += string.Format ("{0:X2}", b);
+
+ BluetoothLEHardwareInterface.Log (byteString);
+
+ if (DidUpdateCharacteristicValueAction != null && DidUpdateCharacteristicValueAction.ContainsKey (deviceAddress))
+ {
+ var characteristicAction = DidUpdateCharacteristicValueAction[deviceAddress];
+#if UNITY_ANDROID
+ characteristic = characteristic.ToLower ();
+#endif
+ if (characteristicAction != null && characteristicAction.ContainsKey (characteristic))
+ {
+ var action = characteristicAction[characteristic];
+ if (action != null)
+ action (characteristic, bytes);
+ }
+ }
+
+ if (DidUpdateCharacteristicValueWithDeviceAddressAction != null && DidUpdateCharacteristicValueWithDeviceAddressAction.ContainsKey (deviceAddress))
+ {
+ var characteristicAction = DidUpdateCharacteristicValueWithDeviceAddressAction[deviceAddress];
+#if UNITY_ANDROID
+ characteristic = characteristic.ToLower ();
+#endif
+ if (characteristicAction != null && characteristicAction.ContainsKey (characteristic))
+ {
+ var action = characteristicAction[characteristic];
+ if (action != null)
+ action (deviceAddress, characteristic, bytes);
+ }
+ }
+ }
+ }
+ }
+
+ public void OnPeripheralData (string characteristic, string base64Data)
+ {
+ if (base64Data != null)
+ {
+ byte[] bytes = System.Convert.FromBase64String (base64Data);
+ if (bytes.Length > 0)
+ {
+ BluetoothLEHardwareInterface.Log ("Peripheral Received: " + characteristic);
+
+ string byteString = "";
+ foreach (byte b in bytes)
+ byteString += string.Format ("{0:X2}", b);
+
+ BluetoothLEHardwareInterface.Log (byteString);
+
+ if (PeripheralReceivedWriteDataAction != null)
+ PeripheralReceivedWriteDataAction (characteristic, bytes);
+ }
+ }
+ }
+
+#if UNITY_IOS
+ private void IncludeCoreLocationFramework()
+ {
+ // this method is here because Unity now only includes CoreLocation
+ // if there are methods in the .cs code that access it
+ Input.location.Stop ();
+ }
+#endif
+
+ public void OnApplicationQuit()
+ {
+ if (Application.isEditor)
+ {
+ BluetoothLEHardwareInterface.DeInitialize(() =>
+ {
+ BluetoothLEHardwareInterface.Log("Deinitialize complete");
+ });
+ }
+ }
+}
diff --git a/Assets/Plugins/BluetoothDeviceScript.cs.meta b/Assets/Plugins/BluetoothDeviceScript.cs.meta
new file mode 100644
index 0000000..e31cb90
--- /dev/null
+++ b/Assets/Plugins/BluetoothDeviceScript.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b188ba3ac565e48f58fc50dd5db4818d
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/BluetoothHardwareInterface.cs b/Assets/Plugins/BluetoothHardwareInterface.cs
new file mode 100644
index 0000000..0ccd8db
--- /dev/null
+++ b/Assets/Plugins/BluetoothHardwareInterface.cs
@@ -0,0 +1,1147 @@
+#define EXPERIMENTAL_MACOS_EDITOR
+/*
+
+This build includes an experimental implementation for the macOS editor of Unity
+It is experiemental because of the way that the Unity editor hangs on to plugin
+instances after leaving play mode. This causes this plugin to not free up its
+resources and therefore can cause crashes in the Unity editor on macOS.
+
+Since Unity does not give plugins or apps a chance to do anything when the user
+hits the play / stop button in the Editor there isn't a chance for the app to
+deinitialize this plugin.
+
+What I have found in my own use of this is that if you put a button on your app
+somewhere that you can press before hitting the stop button in the editor and
+then in that button handler call this plugin's Deinitialize method it seems to
+minimize how often the editor crashes.
+
+WARNING: using the macOS editor can cause the editor to crash an loose your work
+and settings. Save often. You have been warned, so please don't contact me if
+you have lost work becausee of this problem. This is experimental only. Use at
+your own risk.
+
+*/
+
+using UnityEngine;
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using System.Collections;
+
+#if UNITY_2018_3_OR_NEWER
+#if UNITY_ANDROID
+using UnityEngine.Android;
+#endif
+#endif
+
+public class BluetoothLEHardwareInterface
+{
+ public enum CBCharacteristicProperties
+ {
+ CBCharacteristicPropertyBroadcast = 0x01,
+ CBCharacteristicPropertyRead = 0x02,
+ CBCharacteristicPropertyWriteWithoutResponse = 0x04,
+ CBCharacteristicPropertyWrite = 0x08,
+ CBCharacteristicPropertyNotify = 0x10,
+ CBCharacteristicPropertyIndicate = 0x20,
+ CBCharacteristicPropertyAuthenticatedSignedWrites = 0x40,
+ CBCharacteristicPropertyExtendedProperties = 0x80,
+ CBCharacteristicPropertyNotifyEncryptionRequired = 0x100,
+ CBCharacteristicPropertyIndicateEncryptionRequired = 0x200,
+ };
+
+ public enum ScanMode
+ {
+ LowPower = 0,
+ Balanced = 1,
+ LowLatency = 2
+ }
+
+ public enum ConnectionPriority
+ {
+ LowPower = 0,
+ Balanced = 1,
+ High = 2,
+ }
+
+ public enum AdvertisingMode
+ {
+ LowPower = 0,
+ Balanced = 1,
+ LowLatency = 2
+ }
+
+ public enum AdvertisingPower
+ {
+ UltraLow = 0,
+ Low = 1,
+ Medium = 2,
+ High = 3,
+ }
+
+ public enum iOSProximity
+ {
+ Unknown = 0,
+ Immediate = 1,
+ Near = 2,
+ Far = 3,
+ }
+
+ public struct iBeaconData
+ {
+ public string UUID;
+ public int Major;
+ public int Minor;
+ public int RSSI;
+ public int AndroidSignalPower;
+ public iOSProximity iOSProximity;
+ }
+
+#if UNITY_ANDROID
+ public enum CBAttributePermissions
+ {
+ CBAttributePermissionsReadable = 0x01,
+ CBAttributePermissionsWriteable = 0x10,
+ CBAttributePermissionsReadEncryptionRequired = 0x02,
+ CBAttributePermissionsWriteEncryptionRequired = 0x20,
+ };
+#else
+ public enum CBAttributePermissions
+ {
+ CBAttributePermissionsReadable = 0x01,
+ CBAttributePermissionsWriteable = 0x02,
+ CBAttributePermissionsReadEncryptionRequired = 0x04,
+ CBAttributePermissionsWriteEncryptionRequired = 0x08,
+ };
+#endif
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+
+ public delegate void UnitySendMessageCallbackDelegate (IntPtr objectName, IntPtr commandName, IntPtr commandData);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void ConnectUnitySendMessageCallback ([MarshalAs (UnmanagedType.FunctionPtr)]UnitySendMessageCallbackDelegate callbackMethod);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLELog (string message);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEInitialize ([MarshalAs (UnmanagedType.Bool)]bool asCentral, [MarshalAs (UnmanagedType.Bool)]bool asPeripheral);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEDeInitialize ();
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEPauseMessages (bool isPaused);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEScanForPeripheralsWithServices (string serviceUUIDsString, bool allowDuplicates, bool rssiOnly, bool clearPeripheralList);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLERetrieveListOfPeripheralsWithServices (string serviceUUIDsString);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEStopScan ();
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEConnectToPeripheral (string name);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEDisconnectAll ();
+
+ [DllImport("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLERequestMtu (string name, int mtu);
+
+ [DllImport("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEReadRSSI (string name);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEDisconnectPeripheral (string name);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEReadCharacteristic (string name, string service, string characteristic);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEWriteCharacteristic (string name, string service, string characteristic, byte[] data, int length, bool withResponse);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLESubscribeCharacteristic (string name, string service, string characteristic);
+
+ [DllImport ("BluetoothLEOSX")]
+ private static extern void OSXBluetoothLEUnSubscribeCharacteristic (string name, string service, string characteristic);
+
+#endif
+
+#if UNITY_IOS || UNITY_TVOS
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLELog (string message);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEInitialize (bool asCentral, bool asPeripheral);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEDeInitialize ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEPauseMessages (bool isPaused);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEScanForPeripheralsWithServices (string serviceUUIDsString, bool allowDuplicates, bool rssiOnly, bool clearPeripheralList);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLERetrieveListOfPeripheralsWithServices (string serviceUUIDsString);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEStopScan ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEConnectToPeripheral (string name);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEDisconnectPeripheral (string name);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEReadCharacteristic (string name, string service, string characteristic);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEWriteCharacteristic (string name, string service, string characteristic, byte[] data, int length, bool withResponse);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLESubscribeCharacteristic (string name, string service, string characteristic);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEUnSubscribeCharacteristic (string name, string service, string characteristic);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEDisconnectAll ();
+
+ [DllImport("__Internal")]
+ private static extern void _iOSBluetoothLERequestMtu(string name, int mtu);
+
+ [DllImport("__Internal")]
+ private static extern void _iOSBluetoothLEReadRSSI(string name);
+
+#if !UNITY_TVOS
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEScanForBeacons (string proximityUUIDsString);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEStopBeaconScan ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEPeripheralName (string newName);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLECreateService (string uuid, bool primary);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLERemoveService (string uuid);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLERemoveServices ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLECreateCharacteristic (string uuid, int properties, int permissions, byte[] data, int length);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLERemoveCharacteristic (string uuid);
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLERemoveCharacteristics ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEStartAdvertising ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEStopAdvertising ();
+
+ [DllImport ("__Internal")]
+ private static extern void _iOSBluetoothLEUpdateCharacteristicValue (string uuid, byte[] data, int length);
+#endif
+#elif UNITY_ANDROID
+ static AndroidJavaObject _android = null;
+#endif
+
+
+ private static BluetoothDeviceScript bluetoothDeviceScript;
+
+ public static void Log (string message)
+ {
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ Debug.Log(message);
+#else
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLELog (message);
+#elif UNITY_ANDROID
+ if (_android == null)
+ {
+ AndroidJavaClass javaClass = new AndroidJavaClass ("com.shatalmic.unityandroidbluetoothlelib.UnityBluetoothLE");
+ _android = javaClass.CallStatic ("getInstance");
+ }
+
+ if (_android != null)
+ _android.Call ("androidBluetoothLog", message);
+#endif
+ }
+#endif
+ }
+
+#if UNITY_2018_3_OR_NEWER
+#if UNITY_ANDROID
+ private static IEnumerator AskForPermissions()
+ {
+ bool scanAsked = false;
+ bool connectAsked = false;
+ bool permissionsGranted = false;
+ float timerValue = 0f;
+
+ while (timerValue < 5f)
+ {
+ if (!Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_SCAN"))
+ {
+ if (!scanAsked)
+ {
+ Permission.RequestUserPermission("android.permission.BLUETOOTH_SCAN");
+ scanAsked = true;
+ }
+ }
+ else
+ {
+ if (!Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_CONNECT"))
+ {
+ if (!connectAsked)
+ {
+ Permission.RequestUserPermission("android.permission.BLUETOOTH_CONNECT");
+ connectAsked = true;
+ break;
+ }
+ }
+ else
+ {
+ permissionsGranted = true;
+ }
+ }
+
+ timerValue += Time.deltaTime;
+
+ yield return new WaitForEndOfFrame();
+ }
+
+ if (!permissionsGranted)
+ {
+ if (bluetoothDeviceScript.ErrorAction != null)
+ bluetoothDeviceScript.ErrorAction("Error~Permissions Not Granted");
+ }
+ }
+#endif
+#endif
+
+ public static BluetoothDeviceScript Initialize (bool asCentral, bool asPeripheral, Action action, Action errorAction)
+ {
+ bluetoothDeviceScript = null;
+
+ GameObject bluetoothLEReceiver = GameObject.Find("BluetoothLEReceiver");
+ if (bluetoothLEReceiver == null)
+ bluetoothLEReceiver = new GameObject ("BluetoothLEReceiver");
+
+ if (bluetoothLEReceiver != null)
+ {
+ bluetoothDeviceScript = bluetoothLEReceiver.GetComponent ();
+ if (bluetoothDeviceScript == null)
+ bluetoothDeviceScript = bluetoothLEReceiver.AddComponent ();
+
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.InitializedAction = action;
+ bluetoothDeviceScript.ErrorAction = errorAction;
+ }
+ }
+
+ GameObject.DontDestroyOnLoad (bluetoothLEReceiver);
+
+#if UNITY_2018_3_OR_NEWER
+#if UNITY_ANDROID
+
+ Log($"API: {SystemInfo.operatingSystem}");
+
+ int apiVersion = 30;
+ int apiIndex = SystemInfo.operatingSystem.IndexOf(" API-");
+ if (apiIndex >= 0)
+ {
+ Log($"API Index: {apiIndex}");
+ string versionString = SystemInfo.operatingSystem.Substring(apiIndex + 5, 2);
+ Log($"API Version String: {versionString}");
+ if (!int.TryParse(versionString, out apiVersion))
+ {
+ Log($"int parse failed: {versionString}");
+ apiVersion = 30;
+ }
+ }
+
+ Log($"API Version: {apiVersion}");
+
+ if (apiVersion >= 31)
+ {
+ if (asCentral)
+ bluetoothDeviceScript.StartCoroutine(AskForPermissions());
+
+ if (asPeripheral)
+ {
+ if (!Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_ADVERTISE"))
+ Permission.RequestUserPermission("android.permission.BLUETOOTH_ADVERTISE");
+ }
+ }
+ else
+ {
+ if (!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
+ Permission.RequestUserPermission(Permission.FineLocation);
+ }
+
+#endif
+#endif
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ ConnectUnitySendMessageCallback((objectName, commandName, commandData) => {
+ string name = Marshal.PtrToStringAuto (objectName);
+ string command = Marshal.PtrToStringAuto (commandName);
+ string data = Marshal.PtrToStringAuto (commandData);
+
+ GameObject foundObject = GameObject.Find (name);
+ if (foundObject != null)
+ foundObject.SendMessage (command, data);
+ });
+
+ BluetoothLEHardwareInterface.OSXBluetoothLEInitialize (asCentral, asPeripheral);
+#else
+ if (Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.SendMessage ("OnBluetoothMessage", "Initialized");
+ }
+ else
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEInitialize (asCentral, asPeripheral);
+#elif UNITY_ANDROID
+ if (_android == null)
+ {
+ AndroidJavaClass javaClass = new AndroidJavaClass ("com.shatalmic.unityandroidbluetoothlelib.UnityBluetoothLE");
+ _android = javaClass.CallStatic ("getInstance");
+ }
+
+ if (_android != null)
+ _android.Call ("androidBluetoothInitialize", asCentral, asPeripheral);
+#endif
+ }
+#endif
+
+ return bluetoothDeviceScript;
+ }
+
+ public static void DeInitialize (Action action)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.DeinitializedAction = action;
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ BluetoothLEHardwareInterface.OSXBluetoothLEDeInitialize ();
+#else
+ if (Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.SendMessage ("OnBluetoothMessage", "DeInitialized");
+ }
+ else
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEDeInitialize ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothDeInitialize");
+#endif
+ }
+#endif
+ }
+
+ public static void FinishDeInitialize ()
+ {
+ GameObject bluetoothLEReceiver = GameObject.Find("BluetoothLEReceiver");
+ if (bluetoothLEReceiver != null)
+ GameObject.Destroy(bluetoothLEReceiver);
+ }
+
+ public static void BluetoothEnable (bool enable)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+ //_iOSBluetoothLELog (message);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothEnable", enable);
+#endif
+ }
+ }
+
+ public static void BluetoothScanMode (ScanMode scanMode)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothScanMode", (int)scanMode);
+#endif
+ }
+ }
+
+ public static void BluetoothConnectionPriority (ConnectionPriority connectionPriority)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothConnectionPriority", (int)connectionPriority);
+#endif
+ }
+ }
+
+ public static void BluetoothAdvertisingMode (AdvertisingMode advertisingMode)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IPHONE || UNITY_TVOS
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothAdvertisingMode", (int)advertisingMode);
+#endif
+ }
+ }
+
+ public static void BluetoothAdvertisingPower (AdvertisingPower advertisingPower)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IPHONE || UNITY_TVOS
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothAdvertisingPower", (int)advertisingPower);
+#endif
+ }
+ }
+
+ public static void PauseMessages (bool isPaused)
+ {
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEPauseMessages (isPaused);
+#else
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEPauseMessages (isPaused);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothPause", isPaused);
+#endif
+ }
+#endif
+ }
+
+ // scanning for beacons requires that you know the Proximity UUID
+ public static void ScanForBeacons (string[] proximityUUIDs, Action actionBeaconResponse)
+ {
+ if (proximityUUIDs != null && proximityUUIDs.Length >= 0)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.DiscoveredBeaconAction = actionBeaconResponse;
+
+ string proximityUUIDsString = null;
+
+ if (proximityUUIDs != null && proximityUUIDs.Length > 0)
+ {
+ proximityUUIDsString = "";
+
+ foreach (string proximityUUID in proximityUUIDs)
+ proximityUUIDsString += proximityUUID + "|";
+
+ proximityUUIDsString = proximityUUIDsString.Substring (0, proximityUUIDsString.Length - 1);
+ }
+
+#if UNITY_IOS
+ _iOSBluetoothLEScanForBeacons (proximityUUIDsString);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothScanForBeacons", proximityUUIDsString);
+#endif
+ }
+ }
+ }
+
+ public static void RequestMtu(string name, int mtu, Action action)
+ {
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.RequestMtuAction = action;
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ if (mtu > 184)
+ mtu = 184;
+ OSXBluetoothLERequestMtu(name, mtu);
+#elif UNITY_IOS || UNITY_TVOS
+ if (mtu > 180)
+ mtu = 180;
+ _iOSBluetoothLERequestMtu (name, mtu);
+#elif UNITY_ANDROID
+ if (_android != null)
+ {
+ _android.Call ("androidBluetoothRequestMtu", name, mtu);
+ }
+#endif
+ }
+
+ public static void ReadRSSI(string name, Action action)
+ {
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.ReadRSSIAction = action;
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEReadRSSI(name);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEReadRSSI(name);
+#elif UNITY_ANDROID
+ if (_android != null)
+ {
+ _android.Call ("androidBluetoothReadRSSI", name);
+ }
+#endif
+ }
+
+ public static void ScanForPeripheralsWithServices (string[] serviceUUIDs, Action action, Action actionAdvertisingInfo = null, bool rssiOnly = false, bool clearPeripheralList = true, int recordType = 0xFF)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.DiscoveredPeripheralAction = action;
+ bluetoothDeviceScript.DiscoveredPeripheralWithAdvertisingInfoAction = actionAdvertisingInfo;
+
+ if (bluetoothDeviceScript.DiscoveredDeviceList != null)
+ bluetoothDeviceScript.DiscoveredDeviceList.Clear ();
+ }
+
+ string serviceUUIDsString = null;
+
+ if (serviceUUIDs != null && serviceUUIDs.Length > 0)
+ {
+ serviceUUIDsString = "";
+
+ foreach (string serviceUUID in serviceUUIDs)
+ serviceUUIDsString += serviceUUID + "|";
+
+ serviceUUIDsString = serviceUUIDsString.Substring (0, serviceUUIDsString.Length - 1);
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEScanForPeripheralsWithServices (serviceUUIDsString, (actionAdvertisingInfo != null), rssiOnly, clearPeripheralList);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEScanForPeripheralsWithServices (serviceUUIDsString, (actionAdvertisingInfo != null), rssiOnly, clearPeripheralList);
+#elif UNITY_ANDROID
+ if (_android != null)
+ {
+ if (serviceUUIDsString == null)
+ serviceUUIDsString = "";
+
+ _android.Call ("androidBluetoothScanForPeripheralsWithServices", serviceUUIDsString, rssiOnly, recordType);
+ }
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void RetrieveListOfPeripheralsWithServices (string[] serviceUUIDs, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.RetrievedConnectedPeripheralAction = action;
+
+ if (bluetoothDeviceScript.DiscoveredDeviceList != null)
+ bluetoothDeviceScript.DiscoveredDeviceList.Clear ();
+ }
+
+ string serviceUUIDsString = serviceUUIDs.Length > 0 ? "" : null;
+
+ foreach (string serviceUUID in serviceUUIDs)
+ serviceUUIDsString += serviceUUID + "|";
+
+ // strip the last delimeter
+ serviceUUIDsString = serviceUUIDsString.Substring (0, serviceUUIDsString.Length - 1);
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLERetrieveListOfPeripheralsWithServices (serviceUUIDsString);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLERetrieveListOfPeripheralsWithServices (serviceUUIDsString);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothRetrieveListOfPeripheralsWithServices", serviceUUIDsString);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void StopScan ()
+ {
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEStopScan ();
+#else
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEStopScan ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothStopScan");
+#endif
+ }
+#endif
+ }
+
+ public static void StopBeaconScan ()
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLEStopBeaconScan ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothStopBeaconScan");
+#endif
+ }
+ }
+
+ public static void DisconnectAll ()
+ {
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEDisconnectAll ();
+#else
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEDisconnectAll ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothDisconnectAll");
+#endif
+ }
+#endif
+ }
+
+ public static void ConnectToPeripheral (string name, Action connectAction, Action serviceAction, Action characteristicAction, Action disconnectAction = null)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ bluetoothDeviceScript.ConnectedPeripheralAction = connectAction;
+ bluetoothDeviceScript.DiscoveredServiceAction = serviceAction;
+ bluetoothDeviceScript.DiscoveredCharacteristicAction = characteristicAction;
+ bluetoothDeviceScript.ConnectedDisconnectPeripheralAction = disconnectAction;
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEConnectToPeripheral (name);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEConnectToPeripheral (name);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothConnectToPeripheral", name);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void DisconnectPeripheral (string name, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.DisconnectedPeripheralAction = action;
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEDisconnectPeripheral (name);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEDisconnectPeripheral (name);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidBluetoothDisconnectPeripheral", name);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void ReadCharacteristic (string name, string service, string characteristic, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ if (!bluetoothDeviceScript.DidUpdateCharacteristicValueAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction[name] = new Dictionary>();
+
+#if UNITY_IOS || UNITY_TVOS || (EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] [characteristic] = action;
+#elif UNITY_ANDROID
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] [FullUUID (characteristic).ToLower ()] = action;
+#endif
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEReadCharacteristic (name, service, characteristic);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEReadCharacteristic (name, service, characteristic);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidReadCharacteristic", name, service, characteristic);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void WriteCharacteristic (string name, string service, string characteristic, byte[] data, int length, bool withResponse, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.DidWriteCharacteristicAction = action;
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEWriteCharacteristic(name, service, characteristic, data, length, withResponse);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEWriteCharacteristic (name, service, characteristic, data, length, withResponse);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidWriteCharacteristic", name, service, characteristic, data, length, withResponse);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void SubscribeCharacteristic (string name, string service, string characteristic, Action notificationAction, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ name = name.ToUpper ();
+ service = service.ToUpper ();
+ characteristic = characteristic.ToUpper ();
+
+#if UNITY_IOS || UNITY_TVOS || (EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX))
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction [name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction [name] [characteristic] = notificationAction;
+
+ if (!bluetoothDeviceScript.DidUpdateCharacteristicValueAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] [characteristic] = action;
+#elif UNITY_ANDROID
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction [name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction [name] [FullUUID (characteristic).ToLower ()] = notificationAction;
+
+ if (!bluetoothDeviceScript.DidUpdateCharacteristicValueAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateCharacteristicValueAction [name] [FullUUID (characteristic).ToLower ()] = action;
+#endif
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLESubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLESubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidSubscribeCharacteristic", name, service, characteristic);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void SubscribeCharacteristicWithDeviceAddress (string name, string service, string characteristic, Action notificationAction, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ name = name.ToUpper ();
+ service = service.ToUpper ();
+ characteristic = characteristic.ToUpper ();
+
+#if UNITY_IOS || UNITY_TVOS || (EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX))
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name][characteristic] = notificationAction;
+
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name][characteristic] = null;
+
+ if (!bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction[name][characteristic] = action;
+#elif UNITY_ANDROID
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name][FullUUID (characteristic).ToLower ()] = notificationAction;
+
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey(name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name][FullUUID (characteristic).ToLower ()] = null;
+
+ if (!bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateCharacteristicValueWithDeviceAddressAction[name][FullUUID (characteristic).ToLower ()] = action;
+#endif
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLESubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLESubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidSubscribeCharacteristic", name, service, characteristic);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void UnSubscribeCharacteristic (string name, string service, string characteristic, Action action)
+ {
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ if (!Application.isEditor)
+ {
+#endif
+ if (bluetoothDeviceScript != null)
+ {
+ name = name.ToUpper ();
+ service = service.ToUpper ();
+ characteristic = characteristic.ToUpper ();
+
+#if UNITY_IOS || UNITY_TVOS || (EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX))
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name][characteristic] = null;
+
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name][characteristic] = action;
+#elif UNITY_ANDROID
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name] = new Dictionary>();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicWithDeviceAddressAction[name][FullUUID (characteristic).ToLower ()] = null;
+
+ if (!bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction.ContainsKey (name))
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name] = new Dictionary> ();
+ bluetoothDeviceScript.DidUpdateNotificationStateForCharacteristicAction[name][FullUUID (characteristic).ToLower ()] = action;
+#endif
+ }
+
+#if EXPERIMENTAL_MACOS_EDITOR && (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
+ OSXBluetoothLEUnSubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_IOS || UNITY_TVOS
+ _iOSBluetoothLEUnSubscribeCharacteristic (name, service, characteristic);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidUnsubscribeCharacteristic", name, service, characteristic);
+#endif
+#if !UNITY_EDITOR_OSX || !EXPERIMENTAL_MACOS_EDITOR
+ }
+#endif
+ }
+
+ public static void PeripheralName (string newName)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLEPeripheralName (newName);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidPeripheralName", newName);
+#endif
+ }
+ }
+
+ public static void CreateService (string uuid, bool primary, Action action)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.ServiceAddedAction = action;
+
+#if UNITY_IOS
+ _iOSBluetoothLECreateService (uuid, primary);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidCreateService", uuid, primary);
+#endif
+ }
+ }
+
+ public static void RemoveService (string uuid)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLERemoveService (uuid);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidRemoveService", uuid);
+#endif
+ }
+ }
+
+ public static void RemoveServices ()
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLERemoveServices ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidRemoveServices");
+#endif
+ }
+ }
+
+ public static void CreateCharacteristic (string uuid, CBCharacteristicProperties properties, CBAttributePermissions permissions, byte[] data, int length, Action action)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.PeripheralReceivedWriteDataAction = action;
+
+#if UNITY_IOS
+ _iOSBluetoothLECreateCharacteristic (uuid, (int)properties, (int)permissions, data, length);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidCreateCharacteristic", uuid, (int)properties, (int)permissions, data, length);
+#endif
+ }
+ }
+
+ public static void RemoveCharacteristic (string uuid)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.PeripheralReceivedWriteDataAction = null;
+
+#if UNITY_IOS
+ _iOSBluetoothLERemoveCharacteristic (uuid);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidRemoveCharacteristic", uuid);
+#endif
+ }
+ }
+
+ public static void RemoveCharacteristics ()
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLERemoveCharacteristics ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidRemoveCharacteristics");
+#endif
+ }
+ }
+
+ public static void StartAdvertising (Action action, bool isConnectable = true, bool includeName = true, int manufacturerId = 0, byte[] manufacturerSpecificData = null)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.StartedAdvertisingAction = action;
+
+#if UNITY_IOS
+ _iOSBluetoothLEStartAdvertising ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidStartAdvertising", isConnectable, includeName, manufacturerId, manufacturerSpecificData);
+#endif
+ }
+ }
+
+ public static void StopAdvertising (Action action)
+ {
+ if (!Application.isEditor)
+ {
+ if (bluetoothDeviceScript != null)
+ bluetoothDeviceScript.StoppedAdvertisingAction = action;
+
+#if UNITY_IOS
+ _iOSBluetoothLEStopAdvertising ();
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidStopAdvertising");
+#endif
+ }
+ }
+
+ public static void UpdateCharacteristicValue (string uuid, byte[] data, int length)
+ {
+ if (!Application.isEditor)
+ {
+#if UNITY_IOS
+ _iOSBluetoothLEUpdateCharacteristicValue (uuid, data, length);
+#elif UNITY_ANDROID
+ if (_android != null)
+ _android.Call ("androidUpdateCharacteristicValue", uuid, data, length);
+#endif
+ }
+ }
+
+ public static string FullUUID (string uuid)
+ {
+ if (uuid.Length == 4)
+ return "0000" + uuid + "-0000-1000-8000-00805F9B34FB";
+ return uuid;
+ }
+}
diff --git a/Assets/Plugins/BluetoothHardwareInterface.cs.meta b/Assets/Plugins/BluetoothHardwareInterface.cs.meta
new file mode 100644
index 0000000..f3b5a0a
--- /dev/null
+++ b/Assets/Plugins/BluetoothHardwareInterface.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b8496a9b1a1df40af9ada2311d1d6d09
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle.meta b/Assets/Plugins/BluetoothLEOSX.bundle.meta
new file mode 100644
index 0000000..a67508f
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 5383f7d08256547f6b36ee834b840062
+folderAsset: yes
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents.meta
new file mode 100644
index 0000000..9330890
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 34c7c97d38c834839be439bcf96a0267
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist
new file mode 100644
index 0000000..4ac7d39
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist
@@ -0,0 +1,52 @@
+
+
+
+
+ BuildMachineOSBuild
+ 21E258
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ BluetoothLEOSX
+ CFBundleIdentifier
+ com.shatalmic.BluetoothLEOSX
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ BluetoothLEOSX
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleSupportedPlatforms
+
+ MacOSX
+
+ CFBundleVersion
+ 1
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTPlatformBuild
+ 13E113
+ DTPlatformName
+ macosx
+ DTPlatformVersion
+ 12.3
+ DTSDKBuild
+ 21E226
+ DTSDKName
+ macosx12.3
+ DTXcode
+ 1330
+ DTXcodeBuild
+ 13E113
+ LSMinimumSystemVersion
+ 10.11
+ NSBluetoothAlwaysUsageDescription
+ Bluetooth is required to work with devices.
+ NSHumanReadableCopyright
+ Copyright © 2016 Shatalmic. All rights reserved.
+
+
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist.meta
new file mode 100644
index 0000000..50ad560
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/Info.plist.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8e7811284d1734fc2ba4b29fccd3ccf7
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS.meta
new file mode 100644
index 0000000..bea35c1
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4e9d68945c9234df3b7855f4e1006f0f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX
new file mode 100755
index 0000000..331bbcd
Binary files /dev/null and b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX differ
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX.meta
new file mode 100644
index 0000000..34e3172
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/MacOS/BluetoothLEOSX.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1a83baeb98e0141f587d978b89ecd37d
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature.meta
new file mode 100644
index 0000000..719d57c
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 673293518de2c4fbf913749ebdb36dd1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources
new file mode 100644
index 0000000..d5d0fd7
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources
@@ -0,0 +1,115 @@
+
+
+
+
+ files
+
+ files2
+
+ rules
+
+ ^Resources/
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
+
+ nested
+
+ weight
+ 10
+
+ ^.*
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^Resources/
+
+ weight
+ 20
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^[^/]+$
+
+ nested
+
+ weight
+ 10
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+
diff --git a/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources.meta b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources.meta
new file mode 100644
index 0000000..44cf6eb
--- /dev/null
+++ b/Assets/Plugins/BluetoothLEOSX.bundle/Contents/_CodeSignature/CodeResources.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2b362acd4e35f4bb380341cd3df2b9c0
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS.meta b/Assets/Plugins/iOS.meta
new file mode 100644
index 0000000..b120dcb
--- /dev/null
+++ b/Assets/Plugins/iOS.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: 8d3303514acc04853a1fbd8393630e00
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/iOS/UnityBluetoothLE.h b/Assets/Plugins/iOS/UnityBluetoothLE.h
new file mode 100644
index 0000000..59500b7
--- /dev/null
+++ b/Assets/Plugins/iOS/UnityBluetoothLE.h
@@ -0,0 +1,109 @@
+//
+// UnityBluetoothLE.h
+// Unity-iPhone
+//
+// Created by Tony Pitman on 03/05/2014.
+//
+//
+
+#import
+#import
+
+#if !TARGET_OS_TV
+#import
+
+@interface UnityBluetoothLE : NSObject
+#else
+@interface UnityBluetoothLE : NSObject
+#endif
+
+{
+ CBCentralManager *_centralManager;
+#if !TARGET_OS_TV
+ CLLocationManager *_locationManager;
+#endif
+ NSMutableDictionary *_peripherals;
+
+#if !TARGET_OS_TV
+ CBPeripheralManager *_peripheralManager;
+
+ NSString *_peripheralName;
+
+ NSMutableDictionary *_services;
+ NSMutableDictionary *_characteristics;
+ NSMutableDictionary *_allCharacteristics;
+#endif
+
+ NSMutableArray *_backgroundMessages;
+ BOOL _isPaused;
+ BOOL _alreadyNotified;
+ BOOL _isInitializing;
+ BOOL _rssiOnly;
+ int _recordType;
+
+ long _mtu;
+
+ unsigned char *_writeCharacteristicBytes;
+ long _writeCharacteristicLength;
+ long _writeCharacteristicPosition;
+ long _writeCharacteristicBytesToWrite;
+ CBCharacteristicWriteType _writeCharacteristicWithResponse;
+ int _writeCharacteristicRetries;
+}
+
+@property (atomic, strong) NSMutableDictionary *_peripherals;
+@property (atomic) BOOL _rssiOnly;
+
+- (void)initialize:(BOOL)asCentral asPeripheral:(BOOL)asPeripheral;
+- (void)deInitialize;
+- (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs options:(NSDictionary *)options clearPeripheralList:(BOOL)clearPeripheralList recordType:(int)recordType;
+- (void)stopScan;
+- (void)retrieveListOfPeripheralsWithServices:(NSArray *)serviceUUIDs;
+- (void)connectToPeripheral:(NSString *)name;
+- (void)disconnectPeripheral:(NSString *)name;
+- (CBCharacteristic *)getCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString;
+- (void)readCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString;
+- (void)writeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString data:(NSData *)data withResponse:(BOOL)withResponse;
+- (void)subscribeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString;
+- (void)unsubscribeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString;
+- (void)writeCharactersticBytesReset;
+- (void)writeCharactersticBytes:(CBPeripheral *)peripheral characteristic:(CBCharacteristic *)characteristic data:(NSData *)data withResponse:(CBCharacteristicWriteType)withResponse;
+- (void)writeNextPacket:(CBPeripheral *)peripheral characteristic:(CBCharacteristic *)characteristic;
+- (void)requestMtu:(NSString *)name mtu:(int)mtu;
+- (void)readRSSI:(NSString *)name;
+
+#if !TARGET_OS_TV
+- (void)scanForBeacons:(NSArray *)beaconRegions;
+- (void)stopBeaconScan;
+
+- (void)peripheralName:(NSString *)newName;
+- (void)createService:(NSString *)uuid primary:(BOOL)primary;
+- (void)removeService:(NSString *)uuid;
+- (void)removeServices;
+- (void)createCharacteristic:(NSString *)uuid properties:(CBCharacteristicProperties)properties permissions:(CBAttributePermissions)permissions value:(NSData *)value;
+- (void)removeCharacteristic:(NSString *)uuid;
+- (void)removeCharacteristics;
+- (void)startAdvertising;
+- (void)stopAdvertising;
+- (void)updateCharacteristicValue:(NSString *)uuid value:(NSData *)value;
+#endif
+
+- (void)pauseMessages:(BOOL)isPaused;
+- (void)sendUnityMessage:(BOOL)isString message:(NSString *)message;
+
++ (NSString *) base64StringFromData:(NSData *)data length:(int)length;
+
+@end
+
+@interface UnityMessage : NSObject
+
+{
+ BOOL _isString;
+ NSString *_message;
+}
+
+- (void)initialize:(BOOL)isString message:(NSString *)message;
+- (void)deInitialize;
+- (void)sendUnityMessage;
+
+@end
diff --git a/Assets/Plugins/iOS/UnityBluetoothLE.h.meta b/Assets/Plugins/iOS/UnityBluetoothLE.h.meta
new file mode 100644
index 0000000..4bab6c8
--- /dev/null
+++ b/Assets/Plugins/iOS/UnityBluetoothLE.h.meta
@@ -0,0 +1,95 @@
+fileFormatVersion: 2
+guid: 89fad22a839074ac08f9f7ffc9dbce4e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ '': Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ '': OSXIntel
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ '': OSXIntel64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ CompileFlags:
+ FrameworkDependencies:
+ - first:
+ tvOS: tvOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/iOS/UnityBluetoothLE.mm b/Assets/Plugins/iOS/UnityBluetoothLE.mm
new file mode 100644
index 0000000..730f645
--- /dev/null
+++ b/Assets/Plugins/iOS/UnityBluetoothLE.mm
@@ -0,0 +1,1368 @@
+//
+// UnityBluetoothLE.h
+// Unity-iPhone
+//
+// Created by Tony Pitman on 03/05/2014.
+//
+//
+
+#import "UnityBluetoothLE.h"
+
+const char _messageDelimeter = '~';
+
+extern "C" {
+
+ UnityBluetoothLE *_unityBluetoothLE = nil;
+
+ void _iOSBluetoothLELogString (NSString *message) {
+
+ NSLog (message);
+ }
+
+ void _iOSBluetoothLELog (char *message) {
+
+ _iOSBluetoothLELogString ([NSString stringWithFormat:@"%s", message]);
+ }
+
+ void _iOSBluetoothLEInitialize (BOOL asCentral, BOOL asPeripheral) {
+
+ _unityBluetoothLE = [UnityBluetoothLE new];
+ [_unityBluetoothLE initialize:asCentral asPeripheral:asPeripheral];
+ }
+
+ void _iOSBluetoothLEDeInitialize () {
+
+ if (_unityBluetoothLE != nil) {
+
+ [_unityBluetoothLE deInitialize];
+ [_unityBluetoothLE release];
+ _unityBluetoothLE = nil;
+
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", "DeInitialized");
+ }
+ }
+
+ void _iOSBluetoothLEPauseMessages (BOOL pause) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE pauseMessages:pause];
+ }
+
+ void _iOSBluetoothLEScanForPeripheralsWithServices (char *serviceUUIDsStringRaw, bool allowDuplicates, bool rssiOnly, bool clearPeripheralList, int recordType) {
+
+ if (_unityBluetoothLE != nil)
+ {
+ _unityBluetoothLE._rssiOnly = rssiOnly;
+
+ NSMutableArray *actualUUIDs = nil;
+
+ if (serviceUUIDsStringRaw != nil)
+ {
+ NSString *serviceUUIDsString = [NSString stringWithFormat:@"%s", serviceUUIDsStringRaw];
+ NSArray *serviceUUIDs = [serviceUUIDsString componentsSeparatedByString:@"|"];
+
+ if (serviceUUIDs.count > 0)
+ {
+ actualUUIDs = [[NSMutableArray alloc] init];
+
+ for (NSString* sUUID in serviceUUIDs)
+ [actualUUIDs addObject:[CBUUID UUIDWithString:sUUID]];
+ }
+ }
+
+ NSDictionary *options = nil;
+ if (allowDuplicates)
+ options = @{ CBCentralManagerScanOptionAllowDuplicatesKey: @YES };
+
+ [_unityBluetoothLE scanForPeripheralsWithServices:actualUUIDs options:options clearPeripheralList:clearPeripheralList recordType:recordType];
+ }
+ }
+
+ void _iOSBluetoothLEStopScan () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE stopScan];
+ }
+
+ void _iOSBluetoothLERetrieveListOfPeripheralsWithServices (char *serviceUUIDsStringRaw) {
+
+ if (_unityBluetoothLE != nil)
+ {
+ NSMutableArray *actualUUIDs = nil;
+
+ if (serviceUUIDsStringRaw != nil)
+ {
+ NSString *serviceUUIDsString = [NSString stringWithFormat:@"%s", serviceUUIDsStringRaw];
+ NSArray *serviceUUIDs = [serviceUUIDsString componentsSeparatedByString:@"|"];
+
+ if (serviceUUIDs.count > 0)
+ {
+ actualUUIDs = [[NSMutableArray alloc] init];
+
+ for (NSString* sUUID in serviceUUIDs)
+ [actualUUIDs addObject:[CBUUID UUIDWithString:sUUID]];
+ }
+ }
+
+ [_unityBluetoothLE retrieveListOfPeripheralsWithServices:actualUUIDs];
+ }
+ }
+
+ void _iOSBluetoothLEConnectToPeripheral (char *name) {
+
+ if (_unityBluetoothLE && name != nil)
+ [_unityBluetoothLE connectToPeripheral:[NSString stringWithFormat:@"%s", name]];
+ }
+
+ void _iOSBluetoothLEDisconnectPeripheral (char *name) {
+
+ if (_unityBluetoothLE && name != nil)
+ [_unityBluetoothLE disconnectPeripheral:[NSString stringWithFormat:@"%s", name]];
+ }
+
+ void _iOSBluetoothLEReadCharacteristic (char *name, char *service, char *characteristic) {
+
+ if (_unityBluetoothLE && name != nil && service != nil && characteristic != nil)
+ [_unityBluetoothLE readCharacteristic:[NSString stringWithFormat:@"%s", name] service:[NSString stringWithFormat:@"%s", service] characteristic:[NSString stringWithFormat:@"%s", characteristic]];
+ }
+
+ void _iOSBluetoothLEWriteCharacteristic (char *name, char *service, char *characteristic, unsigned char *data, int length, BOOL withResponse) {
+
+ if (_unityBluetoothLE && name != nil && service != nil && characteristic != nil && data != nil && length > 0)
+ [_unityBluetoothLE writeCharacteristic:[NSString stringWithFormat:@"%s", name] service:[NSString stringWithFormat:@"%s", service] characteristic:[NSString stringWithFormat:@"%s", characteristic] data:[NSData dataWithBytes:data length:length] withResponse:withResponse];
+ }
+
+ void _iOSBluetoothLESubscribeCharacteristic (char *name, char *service, char *characteristic) {
+
+ if (_unityBluetoothLE && name != nil && service != nil && characteristic != nil)
+ [_unityBluetoothLE subscribeCharacteristic:[NSString stringWithFormat:@"%s", name] service:[NSString stringWithFormat:@"%s", service] characteristic:[NSString stringWithFormat:@"%s", characteristic]];
+ }
+
+ void _iOSBluetoothLEUnSubscribeCharacteristic (char *name, char *service, char *characteristic) {
+
+ if (_unityBluetoothLE && name != nil && service != nil && characteristic != nil)
+ [_unityBluetoothLE unsubscribeCharacteristic:[NSString stringWithFormat:@"%s", name] service:[NSString stringWithFormat:@"%s", service] characteristic:[NSString stringWithFormat:@"%s", characteristic]];
+ }
+
+ void _iOSBluetoothLEDisconnectAll () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE disconnectAll];
+ }
+
+ void _iOSBluetoothLERequestMtu (char *name, int mtu) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE requestMtu:[NSString stringWithFormat:@"%s", name] mtu:mtu];
+ }
+
+ void _iOSBluetoothLEReadRSSI (char *name) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE readRSSI:[NSString stringWithFormat:@"%s", name]];
+ }
+
+#if !TARGET_OS_TV
+ void _iOSBluetoothLEScanForBeacons (char *proximityUUIDsStringRaw) {
+
+ if (_unityBluetoothLE != nil)
+ {
+ NSMutableArray *actualUUIDs = nil;
+
+ if (proximityUUIDsStringRaw != nil)
+ {
+ NSString *proximityUUIDsString = [NSString stringWithFormat:@"%s", proximityUUIDsStringRaw];
+ NSArray *proximityUUIDs = [proximityUUIDsString componentsSeparatedByString:@"|"];
+
+ if (proximityUUIDs.count > 0)
+ {
+ NSMutableArray *beaconRegions = [[NSMutableArray alloc] init];
+
+ for (NSString* sUUID in proximityUUIDs)
+ {
+ NSArray *parts = [sUUID componentsSeparatedByString:@":"];
+ if (parts.count == 2)
+ {
+ if (@available(iOS 13.0, *)) {
+ CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithUUID:[[NSUUID alloc] initWithUUIDString:parts[0]] identifier:parts[1]];
+ [beaconRegions addObject:beaconRegion];
+ } else {
+ CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:parts[0]] identifier:parts[1]];
+ [beaconRegions addObject:beaconRegion];
+ }
+
+ [_unityBluetoothLE scanForBeacons:beaconRegions];
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~iBeacon Scanning missing identifiers"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~iBeacon Scanning requires proximity UUIDs"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~iBeacon Scanning requires proximity UUIDs"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+ }
+
+ void _iOSBluetoothLEStopBeaconScan () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE stopBeaconScan];
+ }
+
+ void _iOSBluetoothLEPeripheralName (char *newName) {
+
+ if (_unityBluetoothLE != nil && newName != nil)
+ [_unityBluetoothLE peripheralName:[[NSString alloc] initWithUTF8String:newName]];
+ }
+
+ void _iOSBluetoothLECreateService (char *uuid, BOOL primary) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE createService:[NSString stringWithFormat:@"%s", uuid] primary:primary];
+ }
+
+ void _iOSBluetoothLERemoveService (char *uuid) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE removeService:[NSString stringWithFormat:@"%s", uuid]];
+ }
+
+ void _iOSBluetoothLERemoveServices () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE removeServices];
+ }
+
+ void _iOSBluetoothLECreateCharacteristic (char *uuid, int properties, int permissions, unsigned char *data, int length) {
+
+ if (_unityBluetoothLE != nil) {
+
+ NSData *value = nil;
+ if (data != nil)
+ value = [[NSData alloc] initWithBytes:data length:length];
+
+ [_unityBluetoothLE createCharacteristic:[NSString stringWithFormat:@"%s", uuid] properties:properties permissions:permissions value:value];
+ }
+ }
+
+ void _iOSBluetoothLERemoveCharacteristic (char *uuid) {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE removeCharacteristic:[NSString stringWithFormat:@"%s", uuid]];
+ }
+
+ void _iOSBluetoothLERemoveCharacteristics () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE removeCharacteristics];
+ }
+
+ void _iOSBluetoothLEStartAdvertising () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE startAdvertising];
+ }
+
+ void _iOSBluetoothLEStopAdvertising () {
+
+ if (_unityBluetoothLE != nil)
+ [_unityBluetoothLE stopAdvertising];
+ }
+
+ void _iOSBluetoothLEUpdateCharacteristicValue (char *uuid, unsigned char *data, int length) {
+
+ if (_unityBluetoothLE != nil) {
+
+ NSData *value = nil;
+ if (data != nil)
+ value = [[NSData alloc] initWithBytes:data length:length];
+
+ [_unityBluetoothLE updateCharacteristicValue:[NSString stringWithFormat:@"%s", uuid] value:value];
+ }
+ }
+#endif
+}
+
+@implementation UnityBluetoothLE
+
+@synthesize _peripherals;
+@synthesize _rssiOnly;
+
+- (void)initialize:(BOOL)asCentral asPeripheral:(BOOL)asPeripheral
+{
+ _mtu = 20;
+
+ _isPaused = FALSE;
+ _isInitializing = TRUE;
+
+ _centralManager = nil;
+#if !TARGET_OS_TV
+ _peripheralManager = nil;
+ _services = nil;
+ _characteristics = nil;
+ _allCharacteristics = nil;
+#endif
+ if (asCentral)
+ _centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
+
+#if !TARGET_OS_TV
+ if (asPeripheral)
+ _peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
+
+ _services = [[NSMutableDictionary alloc] init];
+ _characteristics = [[NSMutableDictionary alloc] init];
+ _allCharacteristics = [[NSMutableDictionary alloc] init];
+#endif
+
+ _peripherals = [[NSMutableDictionary alloc] init];
+}
+
+- (void)deInitialize
+{
+ if (_backgroundMessages != nil)
+ {
+ for (UnityMessage *message in _backgroundMessages)
+ {
+ if (message != nil)
+ {
+ [message deInitialize];
+ [message release];
+ }
+ }
+
+ [_backgroundMessages release];
+ _backgroundMessages = nil;
+ }
+
+#if !TARGET_OS_TV
+ if (_peripheralManager != nil)
+ [self stopAdvertising];
+
+ [self removeCharacteristics];
+ [self removeServices];
+#endif
+
+ if (_centralManager != nil)
+ [self stopScan];
+
+ [_peripherals removeAllObjects];
+}
+
+- (void)pauseMessages:(BOOL)isPaused
+{
+ if (isPaused != _isPaused) {
+
+ if (_backgroundMessages == nil)
+ _backgroundMessages = [[NSMutableArray alloc] init];
+
+ _isPaused = isPaused;
+
+ // if we are not paused now since we know we changed state
+ // that means we were paused so we need to pump the saved
+ // messages to Unity
+ if (isPaused) {
+
+ if (_backgroundMessages != nil) {
+
+ for (UnityMessage *message in _backgroundMessages) {
+
+ if (message != nil) {
+
+ [message sendUnityMessage];
+ [message deInitialize];
+ [message release];
+ }
+ }
+
+ [_backgroundMessages removeAllObjects];
+ }
+ }
+ }
+}
+
+#if !TARGET_OS_TV
+- (void)createService:(NSString *)uuid primary:(BOOL)primary
+{
+ CBUUID *cbuuid = [CBUUID UUIDWithString:uuid];
+ CBMutableService *service = [[CBMutableService alloc] initWithType:cbuuid primary:primary];
+
+ NSMutableArray *characteristics = [[NSMutableArray alloc] init];
+
+ NSEnumerator *enumerator = [_characteristics keyEnumerator];
+ id key;
+ while ((key = [enumerator nextObject]))
+ {
+ CBCharacteristic *characteristic = [_characteristics objectForKey:key];
+ [_characteristics removeObjectForKey:key];
+ [characteristics addObject:characteristic];
+ [_allCharacteristics setObject:characteristic forKey:[characteristic UUID]];
+ }
+ [_characteristics removeAllObjects];
+
+ service.characteristics = characteristics;
+
+ [_services setObject:service forKey:cbuuid];
+
+ if (_peripheralManager != nil)
+ {
+ [_peripheralManager addService:service];
+ }
+}
+
+- (void)removeService:(NSString *)uuid
+{
+ if (_services != nil)
+ {
+ if (_peripheralManager != nil)
+ {
+ CBMutableService *service = [_services objectForKey:uuid];
+ if (service != nil)
+ [_peripheralManager removeService:service];
+ }
+
+ [_services removeObjectForKey:uuid];
+ }
+}
+
+- (void)removeServices
+{
+ if (_services != nil)
+ {
+ [_services removeAllObjects];
+
+ if (_peripheralManager != nil)
+ [_peripheralManager removeAllServices];
+ }
+
+ if (_allCharacteristics != nil)
+ [_allCharacteristics removeAllObjects];
+}
+
+- (void)peripheralName:(NSString *)newName
+{
+ _peripheralName = newName;
+}
+
+- (void)createCharacteristic:(NSString *)uuid properties:(CBCharacteristicProperties)properties permissions:(CBAttributePermissions)permissions value:(NSData *)value
+{
+ CBUUID *cbuuid = [CBUUID UUIDWithString:uuid];
+ CBCharacteristic *characteristic = [[CBMutableCharacteristic alloc] initWithType:cbuuid properties:properties value:value permissions:permissions];
+
+ [_characteristics setObject:characteristic forKey:cbuuid];
+}
+
+- (void)removeCharacteristic:(NSString *)uuid
+{
+ if (_characteristics != nil)
+ [_characteristics removeObjectForKey:uuid];
+}
+
+- (void)removeCharacteristics
+{
+ if (_characteristics != nil)
+ [_characteristics removeAllObjects];
+}
+
+- (void)startAdvertising
+{
+ if (_peripheralManager != nil && _services != nil)
+ {
+ NSMutableArray *services = [[NSMutableArray alloc] init];
+
+ NSEnumerator *enumerator = [_services keyEnumerator];
+ id key;
+ while ((key = [enumerator nextObject]))
+ {
+ CBMutableService *service = [_services objectForKey:key];
+ [services addObject:service.UUID];
+ }
+
+ if (_peripheralName == nil)
+ _peripheralName = @"";
+
+ [_peripheralManager startAdvertising:@{ CBAdvertisementDataServiceUUIDsKey : services, CBAdvertisementDataLocalNameKey : _peripheralName }];
+ }
+}
+
+- (void)stopAdvertising
+{
+ if (_peripheralManager != nil)
+ {
+ [_peripheralManager stopAdvertising];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", "StoppedAdvertising");
+ }
+}
+
+- (void)updateCharacteristicValue:(NSString *)uuid value:(NSData *)value
+{
+ if (_allCharacteristics != nil)
+ {
+ CBUUID *cbuuid = [CBUUID UUIDWithString:uuid];
+ CBMutableCharacteristic *characteristic = [_allCharacteristics objectForKey:cbuuid];
+ if (characteristic != nil)
+ {
+ characteristic.value = value;
+ if (_peripheralManager != nil)
+ [_peripheralManager updateValue:value forCharacteristic:characteristic onSubscribedCentrals:nil];
+ }
+ }
+}
+
+- (void)requestMtu:(NSString *)name mtu:(int)mtu
+{
+ _mtu = mtu;
+
+ NSString *message = [NSString stringWithFormat:@"MtuChanged~%@~%d", name, _mtu];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+}
+
+- (void)scanForBeacons:(NSArray*)beaconRegions
+{
+ if ([CLLocationManager isRangingAvailable])
+ {
+ _locationManager = [CLLocationManager new];
+ _locationManager.delegate = self;
+
+ [_locationManager requestWhenInUseAuthorization];
+
+ for (CLBeaconRegion *region in beaconRegions)
+ [_locationManager startRangingBeaconsInRegion:region];
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~iBeacon Ranging is not available"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+}
+
+- (void) stopBeaconScan
+{
+ if (_locationManager != nil)
+ {
+ for (CLBeaconRegion *region in _locationManager.rangedRegions)
+ [_locationManager stopRangingBeaconsInRegion:region];
+
+ [_locationManager release];
+ _locationManager = nil;
+ }
+}
+
+// beacon delegate implementation
+- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
+{
+ NSString *message;
+ for (CLBeacon *beacon in beacons)
+ {
+ message = [NSString stringWithFormat:@"DiscoveredBeacon~%@~%ld~%ld~%ld~%ld~%ld", [beacon.proximityUUID.UUIDString stringByReplacingOccurrencesOfString:@"-" withString:@""], beacon.major.longValue, beacon.minor.longValue, (long)beacon.rssi, (long)0, (long)beacon.proximity];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+ }
+}
+#endif
+
+// central delegate implementation
+- (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs options:(NSDictionary *)options clearPeripheralList:(BOOL)clearPeripheralList recordType:(int)recordType
+{
+ if (_centralManager != nil)
+ {
+ recordType = recordType;
+ if (clearPeripheralList && _peripherals != nil)
+ [_peripherals removeAllObjects];
+
+ [_centralManager scanForPeripheralsWithServices:serviceUUIDs options:options];
+ }
+}
+
+- (void) stopScan
+{
+ if (_centralManager != nil)
+ [_centralManager stopScan];
+}
+
+- (void)retrieveListOfPeripheralsWithServices:(NSArray *)serviceUUIDs
+{
+ if (_centralManager != nil)
+ {
+ if (_peripherals != nil)
+ [_peripherals removeAllObjects];
+
+ NSArray * list = [_centralManager retrieveConnectedPeripheralsWithServices:serviceUUIDs];
+ if (list != nil)
+ {
+ for (int i = 0; i < list.count; ++i)
+ {
+ CBPeripheral *peripheral = [list objectAtIndex:i];
+ if (peripheral != nil)
+ {
+ NSString *identifier = [[peripheral identifier] UUIDString];
+ NSString *name = [peripheral name];
+
+ NSString *message = [NSString stringWithFormat:@"RetrievedConnectedPeripheral~%@~%@", identifier, name];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+
+ [_peripherals setObject:peripheral forKey:identifier];
+ }
+ }
+ }
+ }
+}
+
+- (void)connectToPeripheral:(NSString *)name
+{
+ if (_peripherals != nil && name != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ [_centralManager connectPeripheral:peripheral options:nil];
+ }
+}
+
+- (void)disconnectAll
+{
+ if (_peripherals != nil && [_peripherals count] > 0)
+ {
+ NSArray* keys = [_peripherals allKeys];
+ for(NSString* key in keys)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:key];
+ if (peripheral != nil)
+ [_centralManager cancelPeripheralConnection:peripheral];
+ }
+ }
+}
+
+- (void)disconnectPeripheral:(NSString *)name
+{
+ if (_peripherals != nil && name != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ [_centralManager cancelPeripheralConnection:peripheral];
+ }
+ }
+}
+
+- (void)readRSSI:(NSString *)name
+{
+ if (_peripherals != nil && name != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ [peripheral readRSSI];
+ }
+ }
+}
+
+- (CBCharacteristic *)getCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString
+{
+ CBCharacteristic *returnCharacteristic = nil;
+
+ if (name != nil && serviceString != nil && characteristicString != nil && _peripherals != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ CBUUID *serviceUUID = [CBUUID UUIDWithString:serviceString];
+ CBUUID *characteristicUUID = [CBUUID UUIDWithString:characteristicString];
+
+ for (CBService *service in peripheral.services)
+ {
+ if ([service.UUID isEqual:serviceUUID])
+ {
+ for (CBCharacteristic *characteristic in service.characteristics)
+ {
+ if ([characteristic.UUID isEqual:characteristicUUID])
+ {
+ returnCharacteristic = characteristic;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return returnCharacteristic;
+}
+
+- (void)readCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString
+{
+ if (name != nil && serviceString != nil && characteristicString != nil && _peripherals != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ CBCharacteristic *characteristic = [_unityBluetoothLE getCharacteristic:name service:serviceString characteristic:characteristicString];
+ if (characteristic != nil)
+ [peripheral readValueForCharacteristic:characteristic];
+ }
+ }
+}
+
+- (void)writeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString data:(NSData *)data withResponse:(BOOL)withResponse
+{
+ if (name != nil && serviceString != nil && characteristicString != nil && _peripherals != nil && data != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ CBCharacteristic *characteristic = [_unityBluetoothLE getCharacteristic:name service:serviceString characteristic:characteristicString];
+ if (characteristic != nil)
+ {
+ CBCharacteristicWriteType type = CBCharacteristicWriteWithoutResponse;
+ if (withResponse)
+ type = CBCharacteristicWriteWithResponse;
+
+ [self writeCharactersticBytes:peripheral characteristic:characteristic data:data withResponse:type];
+ }
+ }
+ }
+}
+
+- (void)subscribeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString
+{
+ if (name != nil && serviceString != nil && characteristicString != nil && _peripherals != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ CBCharacteristic *characteristic = [_unityBluetoothLE getCharacteristic:name service:serviceString characteristic:characteristicString];
+ if (characteristic != nil)
+ [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+ }
+ }
+}
+
+- (void)unsubscribeCharacteristic:(NSString *)name service:(NSString *)serviceString characteristic:(NSString *)characteristicString
+{
+ if (name != nil && serviceString != nil && characteristicString != nil && _peripherals != nil)
+ {
+ CBPeripheral *peripheral = [_peripherals objectForKey:name];
+ if (peripheral != nil)
+ {
+ CBCharacteristic *characteristic = [_unityBluetoothLE getCharacteristic:name service:serviceString characteristic:characteristicString];
+ if (characteristic != nil)
+ [peripheral setNotifyValue:NO forCharacteristic:characteristic];
+ }
+ }
+}
+
+- (void)centralManagerDidUpdateState:(CBCentralManager *)central
+{
+ switch (central.state)
+ {
+ case CBCentralManagerStateUnsupported:
+ {
+ NSLog(@"Central State: Unsupported");
+
+ NSString *message = [NSString stringWithFormat:@"Error~Bluetooth LE Not Supported"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ } break;
+
+ case CBCentralManagerStateUnauthorized:
+ {
+ NSLog(@"Central State: Unauthorized");
+
+ NSString *message = [NSString stringWithFormat:@"Error~Bluetooth LE Not Authorized"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ } break;
+
+ case CBCentralManagerStatePoweredOff:
+ {
+ NSLog(@"Central State: Powered Off");
+
+ NSString *message = [NSString stringWithFormat:@"Error~Bluetooth LE Powered Off"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ } break;
+
+ case CBCentralManagerStatePoweredOn:
+ {
+ NSLog(@"Central State: Powered On");
+ if (_isInitializing)
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", "Initialized");
+ _isInitializing = FALSE;
+ } break;
+
+ case CBCentralManagerStateUnknown:
+ {
+ NSLog(@"Central State: Unknown");
+
+ NSString *message = [NSString stringWithFormat:@"Error~Bluetooth LE Unknown"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ } break;
+
+ default:
+ {
+ }
+
+ }
+}
+
+- (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals
+{
+
+}
+
+- (void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray *)peripherals
+{
+
+}
+
+- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+}
+
+- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
+{
+ if (_peripherals != nil && peripheral != nil)
+ {
+ NSString *name = [advertisementData objectForKey:CBAdvertisementDataLocalNameKey];
+ if (name == nil)
+ name = peripheral.name;
+ if (name == nil)
+ name = @"No Name";
+
+ if (name != nil)
+ {
+ NSString *identifier = nil;
+
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral == nil)
+ identifier = [[peripheral identifier] UUIDString];
+ else
+ identifier = foundPeripheral;
+
+ NSString *message = nil;
+
+ if (advertisementData != nil && [advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey] != nil)
+ {
+ NSData* bytes = [advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey];
+ message = [NSString stringWithFormat:@"DiscoveredPeripheral~%@~%@~%@~%@", identifier, name, RSSI, [UnityBluetoothLE base64StringFromData:bytes length:bytes.length]];
+ }
+ else if (RSSI != 0 && _rssiOnly)
+ {
+ message = [NSString stringWithFormat:@"DiscoveredPeripheral~%@~%@~%@~", identifier, name, RSSI];
+ }
+ else
+ {
+ message = [NSString stringWithFormat:@"DiscoveredPeripheral~%@~%@", identifier, name];
+ }
+
+ if (message != nil)
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+
+ [_peripherals setObject:peripheral forKey:identifier];
+ }
+ }
+}
+
+- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
+{
+ if (_peripherals != nil)
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ NSString *message = [NSString stringWithFormat:@"DisconnectedPeripheral~%@", foundPeripheral];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+ }
+ }
+}
+
+- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
+{
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ NSString *message = [NSString stringWithFormat:@"ConnectedPeripheral~%@", foundPeripheral];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+ peripheral.delegate = self;
+ [peripheral discoverServices:nil];
+ }
+}
+
+- (CBPeripheral *) findPeripheralInList:(CBPeripheral*)peripheral
+{
+ CBPeripheral *foundPeripheral = nil;
+
+ NSEnumerator *enumerator = [_peripherals keyEnumerator];
+ id key;
+ while ((key = [enumerator nextObject]))
+ {
+ CBPeripheral *tempPeripheral = [_peripherals objectForKey:key];
+ if ([tempPeripheral isEqual:peripheral])
+ {
+ foundPeripheral = tempPeripheral;
+ break;
+ }
+ }
+
+ return foundPeripheral;
+}
+
+- (NSString *) findPeripheralName:(CBPeripheral*)peripheral
+{
+ NSString *foundPeripheral = nil;
+
+ NSEnumerator *enumerator = [_peripherals keyEnumerator];
+ id key;
+ while ((key = [enumerator nextObject]))
+ {
+ CBPeripheral *tempPeripheral = [_peripherals objectForKey:key];
+ if ([tempPeripheral isEqual:peripheral])
+ {
+ foundPeripheral = key;
+ break;
+ }
+ }
+
+ return foundPeripheral;
+}
+
+// central peripheral delegate implementation
+- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ for (CBService *service in peripheral.services)
+ {
+ NSString *message = [NSString stringWithFormat:@"DiscoveredService~%@~%@", foundPeripheral, [service UUID]];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+
+ [peripheral discoverCharacteristics:nil forService:service];
+ }
+ }
+ }
+}
+
+- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ for (CBCharacteristic *characteristic in service.characteristics)
+ {
+ NSString *message = [NSString stringWithFormat:@"DiscoveredCharacteristic~%@~%@~%@", foundPeripheral, [service UUID], [characteristic UUID]];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+ }
+ }
+ }
+}
+
+- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ if (characteristic.value != nil)
+ {
+ NSString *message = [NSString stringWithFormat:@"DidUpdateValueForCharacteristic~%@~%@~%@", foundPeripheral, [characteristic UUID], [UnityBluetoothLE base64StringFromData:characteristic.value length:characteristic.value.length]];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+ //NSString *message = [UnityBluetoothLE base64StringFromData:characteristic.value length:characteristic.value.length];
+ //UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothData", [message UTF8String] );
+ }
+ }
+ }
+}
+
+- (void)writeCharactersticBytesReset
+{
+ _writeCharacteristicBytes = nil;
+ _writeCharacteristicLength = 0;
+ _writeCharacteristicPosition = 0;
+ _writeCharacteristicBytesToWrite = 0;
+ _writeCharacteristicWithResponse = CBCharacteristicWriteWithResponse;
+ _writeCharacteristicRetries = 3;
+}
+
+- (void)writeCharactersticBytes:(CBPeripheral *)peripheral characteristic:(CBCharacteristic *)characteristic data:(NSData *)data withResponse:(CBCharacteristicWriteType)withResponse
+{
+ if (_writeCharacteristicBytes == nil && (_mtu == 0 || data.length > _mtu))
+ {
+ _writeCharacteristicLength = data.length;
+ _writeCharacteristicBytes = (unsigned char*)malloc(_writeCharacteristicLength);
+ memcpy(_writeCharacteristicBytes, [data bytes], _writeCharacteristicLength);
+ _writeCharacteristicPosition = 0;
+ _writeCharacteristicWithResponse = withResponse;
+ if (_mtu == 0)
+ _writeCharacteristicBytesToWrite = _writeCharacteristicLength;
+ else
+ _writeCharacteristicBytesToWrite = _mtu;
+ }
+
+ NSLog(@"write characteristic block");
+
+ if (_writeCharacteristicBytes != nil)
+ {
+ NSMutableData *newData = [NSMutableData dataWithCapacity:_writeCharacteristicBytesToWrite];
+ [newData appendBytes:&_writeCharacteristicBytes[_writeCharacteristicPosition] length:_writeCharacteristicBytesToWrite];
+ data = newData;
+ NSLog(@"data: %@", data);
+ }
+
+ NSLog(@"writing %ld bytes, %ld with response", data.length, withResponse);
+ [peripheral writeValue:data forCharacteristic:characteristic type:withResponse];
+
+ if (withResponse == CBCharacteristicWriteWithoutResponse)
+ {
+ double delayInSeconds = 0.01;
+ dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
+ dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
+ [self writeNextPacket:peripheral characteristic:characteristic];
+ });
+ }
+}
+
+- (void)writeNextPacket:(CBPeripheral *)peripheral characteristic:(CBCharacteristic *)characteristic
+{
+ if (_writeCharacteristicLength > _writeCharacteristicPosition + _writeCharacteristicBytesToWrite)
+ {
+ _writeCharacteristicPosition += _writeCharacteristicBytesToWrite;
+ if (_writeCharacteristicPosition + _writeCharacteristicBytesToWrite > _writeCharacteristicLength)
+ _writeCharacteristicBytesToWrite = _writeCharacteristicLength - _writeCharacteristicPosition;
+
+ NSMutableData *data = [NSMutableData dataWithCapacity:_writeCharacteristicLength];
+ [data appendBytes:_writeCharacteristicBytes length:_writeCharacteristicLength];
+ [self writeCharactersticBytes:peripheral characteristic:characteristic data:data withResponse:_writeCharacteristicWithResponse];
+ }
+ else
+ {
+ [self writeCharactersticBytesReset];
+ NSString *message = [NSString stringWithFormat:@"DidWriteCharacteristic~%@", characteristic.UUID];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+}
+
+- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSLog(@"%ld bytes written, %ld position, %ld length, %ld with response", _writeCharacteristicBytesToWrite, _writeCharacteristicPosition, _writeCharacteristicLength, _writeCharacteristicWithResponse);
+
+ if (_writeCharacteristicBytesToWrite > 0)
+ {
+ [self writeNextPacket:peripheral characteristic:characteristic];
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"DidWriteCharacteristic~%@", characteristic.UUID];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+}
+
+- (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ NSString *message = [NSString stringWithFormat:@"DidUpdateNotificationStateForCharacteristic~%@~%@", foundPeripheral, characteristic.UUID];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+}
+
+- (void)peripheral:(CBPeripheral *) peripheral didReadRSSI:(NSNumber *)RSSI error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *foundPeripheral = [self findPeripheralName:peripheral];
+ if (foundPeripheral != nil)
+ {
+ NSString *message = [NSString stringWithFormat:@"DidReadRSSI~%@~%@", foundPeripheral, RSSI];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ }
+}
+
+#if !TARGET_OS_TV
+// peripheral manager delegate implementation
+- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
+{
+ _iOSBluetoothLELogString ([NSString stringWithFormat:@"Peripheral State Update: %d", (int)peripheral.state]);
+ if (_isInitializing && peripheral.state == CBPeripheralManagerStatePoweredOn)
+ {
+ _isInitializing = FALSE;
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", "Initialized");
+ }
+}
+
+- (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"ServiceAdded~%@", service.UUID];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+}
+
+- (void)peripheralManagerDidStartAdvertising:(CBPeripheralManager *)peripheral error:(NSError *)error
+{
+ if (error)
+ {
+ NSString *message = [NSString stringWithFormat:@"Error~%@", error.description];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ NSString *message = [NSString stringWithFormat:@"StartedAdvertising"];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+}
+
+- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic
+{
+
+}
+
+- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didUnsubscribeFromCharacteristic:(CBCharacteristic *)characteristic
+{
+
+}
+
+- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request
+{
+ BOOL success = FALSE;
+
+ if (_peripheralManager != nil)
+ {
+ CBMutableCharacteristic *characteristic = [_allCharacteristics objectForKey:request.characteristic.UUID];
+
+ if (characteristic != nil)
+ {
+ request.value = [characteristic.value subdataWithRange:NSMakeRange(request.offset, characteristic.value.length - request.offset)];
+ [_peripheralManager respondToRequest:request withResult:CBATTErrorSuccess];
+
+ success = TRUE;
+ }
+ }
+
+ if (!success)
+ [_peripheralManager respondToRequest:request withResult:CBATTErrorAttributeNotFound];
+}
+
+- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
+{
+ BOOL success = FALSE;
+
+ if (_peripheralManager != nil)
+ {
+ for (int i = 0; i < requests.count; ++i)
+ {
+ CBATTRequest *request = [requests objectAtIndex:i];
+ if (request != nil)
+ {
+ CBMutableCharacteristic *characteristic = [_allCharacteristics objectForKey:request.characteristic.UUID];
+
+ if (characteristic != nil)
+ {
+ characteristic.value = request.value;
+
+ NSString *message = [NSString stringWithFormat:@"PeripheralReceivedWriteData~%@~%@", [characteristic UUID], [UnityBluetoothLE base64StringFromData:characteristic.value length:characteristic.value.length]];
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String]);
+
+ success = TRUE;
+ }
+ else
+ {
+ success = FALSE;
+ break;
+ }
+ }
+ else
+ {
+ success = FALSE;
+ break;
+ }
+ }
+ }
+
+ if (success)
+ [_peripheralManager respondToRequest:[requests objectAtIndex:0] withResult:CBATTErrorSuccess];
+ else
+ [_peripheralManager respondToRequest:[requests objectAtIndex:0] withResult:CBATTErrorAttributeNotFound];
+}
+#endif
+
+- (void)sendUnityMessage:(BOOL)isString message:(NSString *)message
+{
+ if (_isPaused) {
+
+ if (_backgroundMessages != nil) {
+
+ UnityMessage *unitymessage = [[UnityMessage alloc] init];
+ if (unitymessage != nil) {
+
+ [unitymessage initialize:isString message:message];
+ [_backgroundMessages addObject:unitymessage];
+ }
+ }
+ }
+ else {
+
+ if (isString)
+ {
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [message UTF8String] );
+ }
+ else
+ {
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothData", [message UTF8String] );
+ }
+ }
+}
+
+static char base64EncodingTable[64] =
+{
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+ 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+ 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
+};
+
++ (NSString *) base64StringFromData: (NSData *)data length: (int)length
+{
+ unsigned long ixtext, lentext;
+ long ctremaining;
+ unsigned char input[3], output[4];
+ short i, charsonline = 0, ctcopy;
+ const unsigned char *raw;
+ NSMutableString *result;
+
+ lentext = [data length];
+ if (lentext < 1)
+ return @"";
+ result = [NSMutableString stringWithCapacity: lentext];
+ raw = (const unsigned char *)[data bytes];
+ ixtext = 0;
+
+ while (true) {
+ ctremaining = lentext - ixtext;
+ if (ctremaining <= 0)
+ break;
+ for (i = 0; i < 3; i++) {
+ unsigned long ix = ixtext + i;
+ if (ix < lentext)
+ input[i] = raw[ix];
+ else
+ input[i] = 0;
+ }
+ output[0] = (input[0] & 0xFC) >> 2;
+ output[1] = ((input[0] & 0x03) << 4) | ((input[1] & 0xF0) >> 4);
+ output[2] = ((input[1] & 0x0F) << 2) | ((input[2] & 0xC0) >> 6);
+ output[3] = input[2] & 0x3F;
+ ctcopy = 4;
+ switch (ctremaining) {
+ case 1:
+ ctcopy = 2;
+ break;
+ case 2:
+ ctcopy = 3;
+ break;
+ }
+
+ for (i = 0; i < ctcopy; i++)
+ [result appendString: [NSString stringWithFormat: @"%c", base64EncodingTable[output[i]]]];
+
+ for (i = ctcopy; i < 4; i++)
+ [result appendString: @"="];
+
+ ixtext += 3;
+ charsonline += 4;
+
+ if ((length > 0) && (charsonline >= length))
+ charsonline = 0;
+ }
+ return result;
+}
+
+#pragma mark Internal
+
+@end
+
+@implementation UnityMessage
+
+- (void)initialize:(BOOL)isString message:(NSString *)message
+{
+ _isString = isString;
+ _message = [message copy];
+}
+
+- (void)deInitialize
+{
+ if (_message != nil)
+ [_message release];
+ _message = nil;
+}
+
+- (void)sendUnityMessage
+{
+ if (_message != nil) {
+
+ if (_isString)
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothMessage", [_message UTF8String] );
+ else
+ UnitySendMessage ("BluetoothLEReceiver", "OnBluetoothData", [_message UTF8String] );
+ }
+}
+
+@end
diff --git a/Assets/Plugins/iOS/UnityBluetoothLE.mm.meta b/Assets/Plugins/iOS/UnityBluetoothLE.mm.meta
new file mode 100644
index 0000000..12a7a4c
--- /dev/null
+++ b/Assets/Plugins/iOS/UnityBluetoothLE.mm.meta
@@ -0,0 +1,124 @@
+fileFormatVersion: 2
+guid: 6a40ca1fe2b7a48e5b257178dfdca41e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ '': Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ '': OSXIntel
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ '': OSXIntel64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CompileFlags: -fno-objc-arc
+ FrameworkDependencies: CoreBluetooth;
+ - first:
+ tvOS: tvOS
+ second:
+ enabled: 1
+ settings:
+ CompileFlags: -fno-objc-arc
+ FrameworkDependencies: CoreBluetooth;
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Readme.asset b/Assets/Readme.asset
new file mode 100644
index 0000000..77c2f83
--- /dev/null
+++ b/Assets/Readme.asset
@@ -0,0 +1,34 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3}
+ m_Name: Readme
+ m_EditorClassIdentifier:
+ icon: {fileID: 2800000, guid: 727a75301c3d24613a3ebcec4a24c2c8, type: 3}
+ title: URP Empty Template
+ sections:
+ - heading: Welcome to the Universal Render Pipeline
+ text: This template includes the settings and assets you need to start creating with the Universal Render Pipeline.
+ linkText:
+ url:
+ - heading: URP Documentation
+ text:
+ linkText: Read more about URP
+ url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest
+ - heading: Forums
+ text:
+ linkText: Get answers and support
+ url: https://forum.unity.com/forums/universal-render-pipeline.383/
+ - heading: Report bugs
+ text:
+ linkText: Submit a report
+ url: https://unity3d.com/unity/qa/bug-reporting
+ loadedLayout: 1
diff --git a/Assets/Readme.asset.meta b/Assets/Readme.asset.meta
new file mode 100644
index 0000000..ab3ad45
--- /dev/null
+++ b/Assets/Readme.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8105016687592461f977c054a80ce2f2
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta
new file mode 100644
index 0000000..e59fb45
--- /dev/null
+++ b/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c53962885c2c4f449125a979d6ad240
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
new file mode 100644
index 0000000..9001bf8
--- /dev/null
+++ b/Assets/Scenes/SampleScene.unity
@@ -0,0 +1,2898 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &7672794
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7672795}
+ - component: {fileID: 7672797}
+ - component: {fileID: 7672796}
+ m_Layer: 5
+ m_Name: Status
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7672795
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7672794}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 7
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: -226}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &7672796
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7672794}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &7672797
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7672794}
+ m_CullTransparentMesh: 1
+--- !u!1 &152809074
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 152809075}
+ - component: {fileID: 152809078}
+ - component: {fileID: 152809077}
+ - component: {fileID: 152809076}
+ m_Layer: 5
+ m_Name: ConnectButton
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &152809075
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 152809074}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 409443404}
+ m_Father: {fileID: 1732102980}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: -275}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &152809076
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 152809074}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 152809077}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &152809077
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 152809074}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &152809078
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 152809074}
+ m_CullTransparentMesh: 1
+--- !u!1 &330585543
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 330585546}
+ - component: {fileID: 330585545}
+ - component: {fileID: 330585544}
+ - component: {fileID: 330585547}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &330585544
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 330585543}
+ m_Enabled: 1
+--- !u!20 &330585545
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 330585543}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &330585546
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 330585543}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &330585547
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 330585543}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_RenderShadows: 1
+ m_RequiresDepthTextureOption: 2
+ m_RequiresOpaqueTextureOption: 2
+ m_CameraType: 0
+ m_Cameras: []
+ m_RendererIndex: -1
+ m_VolumeLayerMask:
+ serializedVersion: 2
+ m_Bits: 1
+ m_VolumeTrigger: {fileID: 0}
+ m_VolumeFrameworkUpdateModeOption: 2
+ m_RenderPostProcessing: 1
+ m_Antialiasing: 0
+ m_AntialiasingQuality: 2
+ m_StopNaN: 0
+ m_Dithering: 0
+ m_ClearDepth: 1
+ m_AllowXRRendering: 1
+ m_RequiresDepthTexture: 0
+ m_RequiresColorTexture: 0
+ m_Version: 2
+--- !u!1 &409443403
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 409443404}
+ - component: {fileID: 409443406}
+ - component: {fileID: 409443405}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &409443404
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 409443403}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 152809075}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &409443405
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 409443403}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: Connect
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4281479730
+ m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 24
+ m_fontSizeBase: 24
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &409443406
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 409443403}
+ m_CullTransparentMesh: 1
+--- !u!1 &410087039
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 410087041}
+ - component: {fileID: 410087040}
+ - component: {fileID: 410087042}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &410087040
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 410087039}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_Intensity: 2
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 5000
+ m_UseColorTemperature: 1
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &410087041
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 410087039}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!114 &410087042
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 410087039}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Version: 1
+ m_UsePipelineSettings: 1
+ m_AdditionalLightsShadowResolutionTier: 2
+ m_LightLayerMask: 1
+ m_CustomShadowLayers: 0
+ m_ShadowLayerMask: 1
+ m_LightCookieSize: {x: 1, y: 1}
+ m_LightCookieOffset: {x: 0, y: 0}
+--- !u!1 &487695130
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 487695131}
+ - component: {fileID: 487695133}
+ - component: {fileID: 487695132}
+ m_Layer: 5
+ m_Name: Distance
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &487695131
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 487695130}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: 1}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &487695132
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 487695130}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &487695133
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 487695130}
+ m_CullTransparentMesh: 1
+--- !u!1 &635276070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 635276071}
+ - component: {fileID: 635276073}
+ - component: {fileID: 635276072}
+ m_Layer: 5
+ m_Name: HR
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &635276071
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 635276070}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 9
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: -61}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &635276072
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 635276070}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &635276073
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 635276070}
+ m_CullTransparentMesh: 1
+--- !u!1 &832575517
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 832575519}
+ - component: {fileID: 832575518}
+ m_Layer: 0
+ m_Name: Global Volume
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &832575518
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 832575517}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IsGlobal: 1
+ priority: 0
+ blendDistance: 0
+ weight: 1
+ sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2}
+--- !u!4 &832575519
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 832575517}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &854974871
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 854974872}
+ - component: {fileID: 854974874}
+ - component: {fileID: 854974873}
+ m_Layer: 5
+ m_Name: StatusImg
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &854974872
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 854974871}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1732102980}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 158, y: -225}
+ m_SizeDelta: {x: 50, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &854974873
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 854974871}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &854974874
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 854974871}
+ m_CullTransparentMesh: 1
+--- !u!1 &948157591
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 948157594}
+ - component: {fileID: 948157593}
+ - component: {fileID: 948157592}
+ - component: {fileID: 948157596}
+ - component: {fileID: 948157595}
+ m_Layer: 0
+ m_Name: _GameManagers
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &948157592
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 948157591}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 598ae3859dc5b48b68087a6740b22b00, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Stats:
+ IsConnected: 0
+ Distance: 0
+ ElapsedTime: 0
+ Watts: 0
+ SPM: 0
+ HeartRate: 0
+ Calories: 0
+ CurrentForceCurve: []
+ pollRate: 0.15
+ activityTimeout: 3.5
+--- !u!114 &948157593
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 948157591}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2ed9d3282e8634c038764ee594f764f8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!4 &948157594
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 948157591}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -5325.9546, y: 147.31592, z: -1431.2051}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &948157595
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 948157591}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2ac4117e608824ebfb7e8f80008e8ca0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ currentInputSource: 0
+ recordedSessions: []
+ currentSessionIndex: 0
+ playbackSpeed: 1
+ loopSimulation: 1
+ simulateStrokeKey: 32
+ simulateWattJump: 50
+ simulateWattDecayRate: 85
+ simulateMaxWatts: 300
+ maxGameSpeed: 50
+ wattsToSpeedMultiplier: 0.1
+ speedSmoothTime: 0.75
+ userMaxHR: 190
+ CurrentSmoothedVelocity: 0
+ LastStrokeImpulse: 0
+ IsLastStrokeSmooth: 0
+ MaxPowerOutput: 0
+ CurrentHRZone: 0
+ LastStrokeRatio: 0
+--- !u!114 &948157596
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 948157591}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a737e255a43774e5a8e57cb70c7f9f01, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ isRecording: 0
+ saveFileName: Zone2_Session
+--- !u!1 &967893303
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 967893304}
+ - component: {fileID: 967893306}
+ - component: {fileID: 967893305}
+ m_Layer: 5
+ m_Name: SPM
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &967893304
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 967893303}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: 55}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &967893305
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 967893303}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &967893306
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 967893303}
+ m_CullTransparentMesh: 1
+--- !u!1 &1021496129
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1021496132}
+ - component: {fileID: 1021496131}
+ - component: {fileID: 1021496130}
+ - component: {fileID: 1021496133}
+ - component: {fileID: 1021496134}
+ m_Layer: 0
+ m_Name: ForceCurve_Line
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1021496130
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1021496129}
+ m_Enabled: 0
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a6d1a8e151ddc4bae990fe2e86149e70, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ xScale: 0.1
+ yScale: 0.05
+ lineWidth: 0.1
+ lineColor: {r: 0, g: 1, b: 1, a: 1}
+--- !u!120 &1021496131
+LineRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1021496129}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 0
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Positions:
+ - {x: 0, y: 0, z: 0}
+ - {x: 0, y: 0, z: 1}
+ m_Parameters:
+ serializedVersion: 3
+ widthMultiplier: 1
+ widthCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0.11176467
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ colorGradient:
+ serializedVersion: 2
+ key0: {r: 1, g: 1, b: 1, a: 1}
+ key1: {r: 1, g: 0.84427047, b: 0, a: 1}
+ key2: {r: 1, g: 1, b: 1, a: 0}
+ key3: {r: 0, g: 0, b: 0, a: 0}
+ key4: {r: 0, g: 0, b: 0, a: 0}
+ key5: {r: 0, g: 0, b: 0, a: 0}
+ key6: {r: 0, g: 0, b: 0, a: 0}
+ key7: {r: 0, g: 0, b: 0, a: 0}
+ ctime0: 0
+ ctime1: 19521
+ ctime2: 65535
+ ctime3: 0
+ ctime4: 0
+ ctime5: 0
+ ctime6: 0
+ ctime7: 0
+ atime0: 0
+ atime1: 65535
+ atime2: 0
+ atime3: 0
+ atime4: 0
+ atime5: 0
+ atime6: 0
+ atime7: 0
+ m_Mode: 0
+ m_NumColorKeys: 3
+ m_NumAlphaKeys: 2
+ numCornerVertices: 0
+ numCapVertices: 0
+ alignment: 0
+ textureMode: 0
+ shadowBias: 0.5
+ generateLightingData: 0
+ m_UseWorldSpace: 1
+ m_Loop: 0
+--- !u!4 &1021496132
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1021496129}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -2, y: 0, z: 5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1021496133
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1021496129}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 68892aba1c1c94fd7959380b4718584a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ xScale: 0.01
+ yScale: 0.01
+ maxPoints: 1000
+--- !u!114 &1021496134
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1021496129}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a905dc9499e83430980b57cbc956dd70, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1162515689
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1162515692}
+ - component: {fileID: 1162515691}
+ - component: {fileID: 1162515690}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1162515690
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162515689}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1162515691
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162515689}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1162515692
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162515689}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1162843621
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1162843622}
+ - component: {fileID: 1162843624}
+ - component: {fileID: 1162843623}
+ m_Layer: 5
+ m_Name: StatusLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1162843622
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162843621}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: -226}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1162843623
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162843621}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 'Status:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1162843624
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1162843621}
+ m_CullTransparentMesh: 1
+--- !u!1 &1178628548
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1178628549}
+ - component: {fileID: 1178628551}
+ - component: {fileID: 1178628550}
+ m_Layer: 5
+ m_Name: CaloriesLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1178628549
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1178628548}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 10
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: -133}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1178628550
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1178628548}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 'Calories:'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1178628551
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1178628548}
+ m_CullTransparentMesh: 1
+--- !u!1 &1440147237
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1440147238}
+ - component: {fileID: 1440147240}
+ - component: {fileID: 1440147239}
+ m_Layer: 5
+ m_Name: DistanceLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1440147238
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1440147237}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: 1}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1440147239
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1440147237}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: Distance
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1440147240
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1440147237}
+ m_CullTransparentMesh: 1
+--- !u!1 &1510905660
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1510905661}
+ - component: {fileID: 1510905662}
+ m_Layer: 5
+ m_Name: UI_Controller
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1510905661
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1510905660}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1675085343}
+ - {fileID: 1808866802}
+ - {fileID: 1440147238}
+ - {fileID: 1162843622}
+ - {fileID: 1837936718}
+ - {fileID: 967893304}
+ - {fileID: 487695131}
+ - {fileID: 7672795}
+ - {fileID: 2139975051}
+ - {fileID: 635276071}
+ - {fileID: 1178628549}
+ - {fileID: 1833096895}
+ m_Father: {fileID: 1732102980}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1510905662
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1510905660}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 039ab1d0f5dab403db97489b34b3aa0e, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ wattsText: {fileID: 1837936719}
+ spmText: {fileID: 967893305}
+ distanceText: {fileID: 487695132}
+ hrText: {fileID: 635276072}
+ caloriesText: {fileID: 1833096896}
+ statusText: {fileID: 7672796}
+ statusIndicator: {fileID: 854974873}
+ connectButton: {fileID: 152809076}
+ logContent: {fileID: 0}
+ logItemPrefab: {fileID: 0}
+--- !u!1 &1675085342
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1675085343}
+ - component: {fileID: 1675085345}
+ - component: {fileID: 1675085344}
+ m_Layer: 5
+ m_Name: WatsLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1675085343
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675085342}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: 101.85571}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1675085344
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675085342}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 'Wats:
+
+'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1675085345
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675085342}
+ m_CullTransparentMesh: 1
+--- !u!1 &1732102976
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1732102980}
+ - component: {fileID: 1732102979}
+ - component: {fileID: 1732102978}
+ - component: {fileID: 1732102977}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1732102977
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1732102976}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1732102978
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1732102976}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1732102979
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1732102976}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1732102980
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1732102976}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1510905661}
+ - {fileID: 152809075}
+ - {fileID: 854974872}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &1808866801
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1808866802}
+ - component: {fileID: 1808866804}
+ - component: {fileID: 1808866803}
+ m_Layer: 5
+ m_Name: SPMLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1808866802
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1808866801}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: 55}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1808866803
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1808866801}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 'SPMs:
+
+'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1808866804
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1808866801}
+ m_CullTransparentMesh: 1
+--- !u!1 &1833096894
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1833096895}
+ - component: {fileID: 1833096897}
+ - component: {fileID: 1833096896}
+ m_Layer: 5
+ m_Name: Calories
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1833096895
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1833096894}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 11
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: -133}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1833096896
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1833096894}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1833096897
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1833096894}
+ m_CullTransparentMesh: 1
+--- !u!1 &1837936717
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1837936718}
+ - component: {fileID: 1837936720}
+ - component: {fileID: 1837936719}
+ m_Layer: 5
+ m_Name: Wats
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1837936718
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1837936717}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 55, y: 101.85571}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1837936719
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1837936717}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text:
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1837936720
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1837936717}
+ m_CullTransparentMesh: 1
+--- !u!1 &2139975050
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2139975051}
+ - component: {fileID: 2139975053}
+ - component: {fileID: 2139975052}
+ m_Layer: 5
+ m_Name: HRLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2139975051
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2139975050}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1510905661}
+ m_RootOrder: 8
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -114.62067, y: -61}
+ m_SizeDelta: {x: 200, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2139975052
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2139975050}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: HR
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &2139975053
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2139975050}
+ m_CullTransparentMesh: 1
diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/SampleScene.unity.meta
new file mode 100644
index 0000000..9531828
--- /dev/null
+++ b/Assets/Scenes/SampleScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 99c9720ab356a0642a771bea13969a05
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta
new file mode 100644
index 0000000..8f23470
--- /dev/null
+++ b/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 49ef74d258a874397b18bf01ee85c53b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Debug.meta b/Assets/Scripts/Debug.meta
new file mode 100644
index 0000000..af52463
--- /dev/null
+++ b/Assets/Scripts/Debug.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b7792fdd9cc2c4791b509bfed728822b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Debug/ForceCurveDataLogger.cs b/Assets/Scripts/Debug/ForceCurveDataLogger.cs
new file mode 100644
index 0000000..10ed0b4
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveDataLogger.cs
@@ -0,0 +1,42 @@
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+public class ForceCurveDataLogger : MonoBehaviour
+{
+ private List _strokeBuffer = new List();
+
+ void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ PerformanceMonitorManager.Instance.OnForceCurveUpdated += HandleData;
+ }
+
+ void HandleData(List points)
+ {
+ // 1. SIGNAL: Manager sends empty list when a NEW stroke starts
+ if (points.Count == 0)
+ {
+ if (_strokeBuffer.Count > 5)
+ {
+ LogFinishedStroke();
+ }
+ _strokeBuffer.Clear();
+ }
+ else
+ {
+ // 2. Accumulate the cumulative data
+ _strokeBuffer = new List(points);
+ }
+ }
+
+ void LogFinishedStroke()
+ {
+ float maxForce = _strokeBuffer.Max();
+ float totalImpulse = _strokeBuffer.Sum(); // Area under the curve
+ string csv = string.Join(",", _strokeBuffer.Select(p => p.ToString("0")));
+
+ Debug.Log($"[STROKE RECORDED] Impulse: {totalImpulse:N0} | Pts: {_strokeBuffer.Count} | Max: {maxForce}");
+ Debug.Log("CSV:" + csv);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Debug/ForceCurveDataLogger.cs.meta b/Assets/Scripts/Debug/ForceCurveDataLogger.cs.meta
new file mode 100644
index 0000000..1238321
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveDataLogger.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a905dc9499e83430980b57cbc956dd70
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs b/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs
new file mode 100644
index 0000000..ecd496d
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs
@@ -0,0 +1,86 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+[RequireComponent(typeof(LineRenderer))]
+public class ForceCurveHistoryDebugger : MonoBehaviour
+{
+ private LineRenderer _lr;
+ private List _historyPoints = new List();
+
+ [Header("Settings")]
+ public float xScale = 0.05f; // Distance between points
+ public float yScale = 0.05f; // Height multiplier
+ public int maxPoints = 1000; // Keep last 1000 points (approx 20-30 seconds)
+
+ private int _lastPointsCount = 0;
+
+ private void Awake()
+ {
+ _lr = GetComponent();
+ _lr.positionCount = 0;
+ _lr.startWidth = 0.05f;
+ _lr.endWidth = 0.05f;
+ }
+
+ private void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ {
+ PerformanceMonitorManager.Instance.OnForceCurveUpdated += OnCurveData;
+ }
+ }
+
+ private void OnCurveData(List fullCurve)
+ {
+ // Calculate how many NEW points were added since last update
+ // (Since the Manager sends the whole cumulative curve of the current stroke)
+ int newPointsCount = fullCurve.Count - _lastPointsCount;
+
+ // If count dropped (new stroke started), we take the whole new list
+ if (newPointsCount < 0)
+ {
+ newPointsCount = fullCurve.Count;
+ AddPoints(fullCurve); // Add the whole new stroke start
+ }
+ else if (newPointsCount > 0)
+ {
+ // Just add the tail (the newest packet)
+ List newSegment = fullCurve.GetRange(_lastPointsCount, newPointsCount);
+ AddPoints(newSegment);
+ }
+
+ _lastPointsCount = fullCurve.Count;
+ }
+
+ private void AddPoints(List newPoints)
+ {
+ UnityMainThreadDispatcher.Instance().Enqueue(() => {
+
+ _historyPoints.AddRange(newPoints);
+
+ // Trim history if too long
+ if (_historyPoints.Count > maxPoints)
+ {
+ _historyPoints.RemoveRange(0, _historyPoints.Count - maxPoints);
+ }
+
+ DrawGraph();
+ });
+ }
+
+ private void DrawGraph()
+ {
+ _lr.positionCount = _historyPoints.Count;
+
+ for (int i = 0; i < _historyPoints.Count; i++)
+ {
+ float x = i * xScale;
+ float y = _historyPoints[i] * yScale;
+
+ // Shift x so the graph scrolls to the left
+ // (Optional: Keep it static and let it grow to the right)
+
+ _lr.SetPosition(i, new Vector3(x, y, 0));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs.meta b/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs.meta
new file mode 100644
index 0000000..864f6ca
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveHistoryDebugger.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 68892aba1c1c94fd7959380b4718584a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Debug/ForceCurveVisualizer.cs b/Assets/Scripts/Debug/ForceCurveVisualizer.cs
new file mode 100644
index 0000000..cfa324b
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveVisualizer.cs
@@ -0,0 +1,71 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+[RequireComponent(typeof(LineRenderer))]
+public class ForceCurveVisualizer : MonoBehaviour
+{
+ private LineRenderer _lr;
+
+ [Header("Visual Settings")]
+ public float xScale = 0.1f;
+ public float yScale = 0.05f; // Raw force is usually 0-200. 0.05 scales it to 0-10 height.
+ public float lineWidth = 0.1f;
+ public Color lineColor = Color.cyan;
+
+ private void Awake()
+ {
+ _lr = GetComponent();
+
+ // Setup LineRenderer programmatically if not set in Inspector
+ _lr.positionCount = 0;
+ _lr.startWidth = lineWidth;
+ _lr.endWidth = lineWidth;
+ _lr.useWorldSpace = false; // Important for UI/HUD
+ _lr.material = new Material(Shader.Find("Sprites/Default")); // Basic white material
+ _lr.startColor = lineColor;
+ _lr.endColor = lineColor;
+ }
+
+ private void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ {
+ PerformanceMonitorManager.Instance.OnForceCurveUpdated += UpdateGraph;
+ }
+ }
+
+ private void UpdateGraph(List points)
+ {
+ UnityMainThreadDispatcher.Instance().Enqueue(() => {
+ if (points.Count < 2)
+ {
+ _lr.positionCount = 0;
+ return;
+ }
+
+ _lr.positionCount = points.Count;
+
+ // Draw
+ for (int i = 0; i < points.Count; i++)
+ {
+ float x = i * xScale;
+ float y = points[i] * yScale;
+
+ // Simple 3-point smoothing
+ if (i > 0 && i < points.Count - 1)
+ {
+ float prev = points[i-1] * yScale;
+ float next = points[i+1] * yScale;
+ y = (prev + y + next) / 3f;
+ }
+
+ _lr.SetPosition(i, new Vector3(x, y, 0));
+ }
+ });
+ }
+
+ // JUICE TIP: Use this to check for "Good Form"
+ // A good stroke is a smooth bell curve.
+ // A bad stroke has a "dip" in the middle (two peaks).
+ // You can analyze 'points' here to trigger the "sputtering engine" sound.
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Debug/ForceCurveVisualizer.cs.meta b/Assets/Scripts/Debug/ForceCurveVisualizer.cs.meta
new file mode 100644
index 0000000..e8416a2
--- /dev/null
+++ b/Assets/Scripts/Debug/ForceCurveVisualizer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a6d1a8e151ddc4bae990fe2e86149e70
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Debug/PM5TestUI.cs b/Assets/Scripts/Debug/PM5TestUI.cs
new file mode 100644
index 0000000..74fd321
--- /dev/null
+++ b/Assets/Scripts/Debug/PM5TestUI.cs
@@ -0,0 +1,84 @@
+using UnityEngine;
+using TMPro;
+using UnityEngine.UI;
+
+public class PM5TestUI : MonoBehaviour
+{
+ [Header("UI References")]
+ [SerializeField] private TMP_Text wattsText;
+ [SerializeField] private TMP_Text spmText;
+ [SerializeField] private TMP_Text distanceText;
+ [SerializeField] private TMP_Text hrText; // NEW
+ [SerializeField] private TMP_Text caloriesText; // NEW
+ [SerializeField] private TMP_Text statusText;
+ [SerializeField] private Image statusIndicator;
+ [SerializeField] private Button connectButton;
+
+ [Header("Logging")]
+ [SerializeField] private Transform logContent;
+ [SerializeField] private GameObject logItemPrefab;
+
+ private void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ {
+ PerformanceMonitorManager.Instance.OnLog += AddLog;
+ PerformanceMonitorManager.Instance.OnConnectionStateChanged += UpdateStatusUI;
+ PerformanceMonitorManager.Instance.OnStatsUpdated += UpdateDashboard;
+ }
+
+ connectButton.onClick.AddListener(() => {
+ PerformanceMonitorManager.Instance.StartScan();
+ });
+
+ UpdateStatusUI(false);
+ }
+
+ private void UpdateDashboard(PerformanceMonitorManager.RowingStats stats)
+ {
+ UnityMainThreadDispatcher.Instance().Enqueue(() => {
+ if (wattsText) wattsText.text = $"{stats.Watts} W";
+ if (spmText) spmText.text = $"{stats.SPM} s/m";
+ if (distanceText) distanceText.text = $"{stats.Distance:F0} m";
+
+ if (hrText) hrText.text = stats.HeartRate > 0 ? $"{stats.HeartRate} bpm" : "--";
+ if (caloriesText) caloriesText.text = $"{stats.Calories} cal";
+ });
+ }
+
+ private void UpdateStatusUI(bool isConnected)
+ {
+ UnityMainThreadDispatcher.Instance().Enqueue(() => {
+ if (statusText)
+ {
+ statusText.text = isConnected ? "CONNECTED" : "DISCONNECTED";
+ statusText.color = isConnected ? Color.green : Color.red;
+ }
+
+ if (statusIndicator)
+ statusIndicator.color = isConnected ? Color.green : Color.red;
+
+ if (connectButton)
+ connectButton.interactable = !isConnected;
+ });
+ }
+
+ private void AddLog(string message)
+ {
+ UnityMainThreadDispatcher.Instance().Enqueue(() => {
+ if (logContent == null || logItemPrefab == null) return;
+
+ // Optional: Limit log size to prevent lag
+ if (logContent.childCount > 20)
+ Destroy(logContent.GetChild(0).gameObject);
+
+ GameObject newItem = Instantiate(logItemPrefab, logContent);
+ TMP_Text txt = newItem.GetComponent();
+ if (txt) txt.text = $"[{System.DateTime.Now:HH:mm:ss}] {message}";
+
+ Canvas.ForceUpdateCanvases();
+ ScrollRect sr = logContent.GetComponentInParent();
+ if (sr) sr.verticalNormalizedPosition = 0f;
+ });
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Debug/PM5TestUI.cs.meta b/Assets/Scripts/Debug/PM5TestUI.cs.meta
new file mode 100644
index 0000000..c3e10ef
--- /dev/null
+++ b/Assets/Scripts/Debug/PM5TestUI.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 039ab1d0f5dab403db97489b34b3aa0e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Input.meta b/Assets/Scripts/Input.meta
new file mode 100644
index 0000000..33b1173
--- /dev/null
+++ b/Assets/Scripts/Input.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b1180c7df0fe547399159fad47c82773
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Input/RowingDataRecorder.cs b/Assets/Scripts/Input/RowingDataRecorder.cs
new file mode 100644
index 0000000..3934353
--- /dev/null
+++ b/Assets/Scripts/Input/RowingDataRecorder.cs
@@ -0,0 +1,92 @@
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+public class RowingDataRecorder : MonoBehaviour
+{
+ [Header("Recording Setup")]
+ public bool isRecording = false;
+ public string saveFileName = "Zone2_Session";
+
+ private RowingSessionData _currentSession;
+ private float _recordingStartTime;
+
+ private void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ {
+ // We listen to the same events the InputManager uses
+ PerformanceMonitorManager.Instance.OnStatsUpdated += RecordStats;
+ PerformanceMonitorManager.Instance.OnForceCurveUpdated += RecordForceCurve;
+ }
+ }
+
+ private void Update()
+ {
+ if (Input.GetKeyDown(KeyCode.R)) ToggleRecording();
+ }
+
+ private void ToggleRecording()
+ {
+ isRecording = !isRecording;
+ if (isRecording)
+ {
+ _currentSession = ScriptableObject.CreateInstance();
+ _currentSession.sessionName = saveFileName;
+ _recordingStartTime = Time.time;
+ Debug.Log($"[Recorder] Started recording: {saveFileName}");
+ }
+ else
+ {
+ SaveSessionAsset();
+ }
+ }
+
+ private void RecordStats(PerformanceMonitorManager.RowingStats stats)
+ {
+ if (!isRecording) return;
+
+ RowingFrame frame = new RowingFrame
+ {
+ timestamp = Time.time - _recordingStartTime,
+ watts = stats.Watts,
+ spm = stats.SPM,
+ heartRate = stats.HeartRate,
+ forceCurve = new List() // Empty for normal stat updates
+ };
+ _currentSession.frames.Add(frame);
+ }
+
+ private void RecordForceCurve(List curve)
+ {
+ if (!isRecording || curve == null || curve.Count == 0) return;
+
+ // We create a specific frame just for the force curve completion
+ RowingFrame frame = new RowingFrame
+ {
+ timestamp = Time.time - _recordingStartTime,
+ watts = PerformanceMonitorManager.Instance.Stats.Watts,
+ spm = PerformanceMonitorManager.Instance.Stats.SPM,
+ heartRate = PerformanceMonitorManager.Instance.Stats.HeartRate,
+ forceCurve = new List(curve) // Clone the list!
+ };
+ _currentSession.frames.Add(frame);
+ }
+
+ private void SaveSessionAsset()
+ {
+#if UNITY_EDITOR
+ if (_currentSession == null || _currentSession.frames.Count == 0) return;
+
+ // Create the Asset in your Project folder
+ string path = $"Assets/{saveFileName}.asset";
+ AssetDatabase.CreateAsset(_currentSession, AssetDatabase.GenerateUniqueAssetPath(path));
+ AssetDatabase.SaveAssets();
+
+ Debug.Log($"[Recorder] Session saved to {path} with {_currentSession.frames.Count} frames.");
+ _currentSession = null;
+#endif
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Input/RowingDataRecorder.cs.meta b/Assets/Scripts/Input/RowingDataRecorder.cs.meta
new file mode 100644
index 0000000..414ce4d
--- /dev/null
+++ b/Assets/Scripts/Input/RowingDataRecorder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a737e255a43774e5a8e57cb70c7f9f01
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Input/RowingInputManager.cs b/Assets/Scripts/Input/RowingInputManager.cs
new file mode 100644
index 0000000..433b925
--- /dev/null
+++ b/Assets/Scripts/Input/RowingInputManager.cs
@@ -0,0 +1,234 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RowingInputManager : MonoBehaviour
+{
+ public static RowingInputManager Instance;
+
+ public enum InputSource { LivePM5, Recorded, Simulated }
+
+ [Header("Data Source")]
+ public InputSource currentInputSource = InputSource.LivePM5;
+
+ [Header("Recorded Mode Controls")]
+ public List recordedSessions;
+ public int currentSessionIndex = 0;
+ [Range(0.1f, 5f)] public float playbackSpeed = 1f;
+ public bool loopSimulation = true;
+
+ [Header("Simulated Mode (Button Mashing)")]
+ public KeyCode simulateStrokeKey = KeyCode.Space;
+ public float simulateWattJump = 50f; // Lowered slightly so you have to work for it
+ public float simulateWattDecayRate = 85f; // Increased so the "flywheel" slows down faster
+ public float simulateMaxWatts = 300f; // The new hard cap!
+
+ private float _currentSimulatedWatts = 0f;
+ private float _lastSimStrokeTime = 0f;
+
+ [Header("Game Physics Settings")]
+ public float maxGameSpeed = 50f;
+ public float wattsToSpeedMultiplier = 0.1f;
+ public float speedSmoothTime = 0.75f;
+ public int userMaxHR = 190;
+
+ [Header("Live Output (Read Only)")]
+ public float CurrentSmoothedVelocity;
+ public float LastStrokeImpulse;
+ public bool IsLastStrokeSmooth;
+ public int MaxPowerOutput;
+ public int CurrentHRZone;
+ public float LastStrokeRatio;
+
+ public Action OnVelocityChanged;
+ public Action OnStrokeCompleted;
+ public Action OnZoneChanged;
+
+ private float _targetVelocity;
+ private float _velocityVelocity;
+
+ // Recorded State
+ private float _playbackTimer = 0f;
+ private int _playbackFrameIndex = 0;
+
+ // Stroke Tracking State Machine
+ private enum StrokeState { Idle, Drive, Recovery }
+ private StrokeState _currentState = StrokeState.Idle;
+ private float _driveTimer = 0f;
+ private float _recoveryTimer = 0f;
+
+ private void Awake()
+ {
+ if (Instance == null) Instance = this;
+ else Destroy(gameObject);
+ }
+
+ private void Start()
+ {
+ if (PerformanceMonitorManager.Instance != null)
+ {
+ PerformanceMonitorManager.Instance.OnStatsUpdated += (stats) => { if (currentInputSource == InputSource.LivePM5) ProcessStats(stats.Watts, stats.SPM, stats.HeartRate); };
+ PerformanceMonitorManager.Instance.OnForceCurveUpdated += (curve) => { if (currentInputSource == InputSource.LivePM5) ProcessForceCurve(curve); };
+ }
+ }
+
+ private void Update()
+ {
+ HandleKeyboardControls();
+
+ if (currentInputSource == InputSource.Recorded)
+ {
+ RunRecordedSession();
+ }
+ else if (currentInputSource == InputSource.Simulated)
+ {
+ RunManualSimulation();
+ }
+
+ // Apply Smoothing
+ CurrentSmoothedVelocity = Mathf.SmoothDamp(CurrentSmoothedVelocity, _targetVelocity, ref _velocityVelocity, speedSmoothTime);
+ OnVelocityChanged?.Invoke(CurrentSmoothedVelocity);
+
+ // Timers
+ if (_currentState == StrokeState.Drive) _driveTimer += Time.deltaTime;
+ else if (_currentState == StrokeState.Recovery) _recoveryTimer += Time.deltaTime;
+ }
+
+ private void RunManualSimulation()
+ {
+ // 1. Decay the watts over time (Simulating the flywheel slowing down)
+ _currentSimulatedWatts = Mathf.Max(0f, _currentSimulatedWatts - (simulateWattDecayRate * Time.deltaTime));
+
+ // 2. Handle the "Pull"
+ if (Input.GetKeyDown(simulateStrokeKey))
+ {
+ // Add power, but firmly cap it so we don't break the sound barrier
+ _currentSimulatedWatts = Mathf.Min(_currentSimulatedWatts + simulateWattJump, simulateMaxWatts);
+
+ // Calculate a fake SPM based on how fast you are mashing
+ float timeSinceLast = Time.time - _lastSimStrokeTime;
+ int fakeSPM = timeSinceLast > 0 ? Mathf.RoundToInt(60f / timeSinceLast) : 0;
+ _lastSimStrokeTime = Time.time;
+
+ // Fake HR that scales up gently with your power output
+ int fakeHR = Mathf.Clamp(100 + Mathf.RoundToInt(_currentSimulatedWatts / 4f), 70, 200);
+
+ ProcessStats(Mathf.RoundToInt(_currentSimulatedWatts), fakeSPM, fakeHR);
+
+ // Generate a fake, perfectly smooth force curve (a bell shape)
+ List fakeCurve = new List { 20f, 60f, 120f, 150f, 120f, 60f, 20f };
+ ProcessForceCurve(fakeCurve);
+
+ // Immediately send an empty list to signify the drive ended and trigger recovery
+ ProcessForceCurve(new List());
+ }
+ else
+ {
+ // If not pulling, just update the decaying watts
+ ProcessStats(Mathf.RoundToInt(_currentSimulatedWatts), 0, 100);
+ }
+ }
+
+ private void RunRecordedSession()
+ {
+ if (recordedSessions == null || recordedSessions.Count == 0 || recordedSessions[currentSessionIndex] == null) return;
+
+ var session = recordedSessions[currentSessionIndex];
+
+ _playbackTimer += Time.deltaTime * playbackSpeed;
+
+ while (_playbackFrameIndex < session.frames.Count && _playbackTimer >= session.frames[_playbackFrameIndex].timestamp)
+ {
+ RowingFrame frame = session.frames[_playbackFrameIndex];
+
+ ProcessStats(frame.watts, frame.spm, frame.heartRate);
+
+ if (frame.forceCurve != null && frame.forceCurve.Count > 0)
+ {
+ ProcessForceCurve(frame.forceCurve);
+ }
+ else if (frame.watts == 0 && frame.spm == 0)
+ {
+ ProcessForceCurve(new List());
+ }
+
+ _playbackFrameIndex++;
+ }
+
+ if (_playbackFrameIndex >= session.frames.Count)
+ {
+ if (loopSimulation)
+ {
+ _playbackTimer = 0f;
+ _playbackFrameIndex = 0;
+ }
+ }
+ }
+
+ private void HandleKeyboardControls()
+ {
+ if (currentInputSource == InputSource.Recorded)
+ {
+ if (Input.GetKeyDown(KeyCode.UpArrow)) playbackSpeed += 0.25f;
+ if (Input.GetKeyDown(KeyCode.DownArrow)) playbackSpeed = Mathf.Max(0.25f, playbackSpeed - 0.25f);
+
+ for (int i = 0; i < recordedSessions.Count; i++)
+ {
+ if (Input.GetKeyDown(KeyCode.Alpha1 + i))
+ {
+ currentSessionIndex = i;
+ _playbackTimer = 0f;
+ _playbackFrameIndex = 0;
+ Debug.Log($"Switched to Session: {recordedSessions[i].sessionName}");
+ }
+ }
+ }
+ }
+
+ // --- Core Logic (Shared by Live, Recorded, and Simulated) ---
+
+ private void ProcessStats(int watts, int spm, int hr)
+ {
+ _targetVelocity = Mathf.Clamp(watts * wattsToSpeedMultiplier, 0, maxGameSpeed);
+ if (watts > MaxPowerOutput) MaxPowerOutput = watts;
+
+ int newZone = CalculateHRZone(hr);
+ if (newZone != CurrentHRZone)
+ {
+ CurrentHRZone = newZone;
+ OnZoneChanged?.Invoke(CurrentHRZone);
+ }
+ }
+
+ private void ProcessForceCurve(List points)
+ {
+ if (points == null || points.Count == 0)
+ {
+ if (_currentState == StrokeState.Drive)
+ {
+ _currentState = StrokeState.Recovery;
+ }
+ return;
+ }
+
+ if (_currentState == StrokeState.Recovery || _currentState == StrokeState.Idle)
+ {
+ if (_recoveryTimer > 0)
+ {
+ LastStrokeRatio = _driveTimer / _recoveryTimer;
+
+ LastStrokeImpulse = CalculateImpulse(points);
+ IsLastStrokeSmooth = AnalyzeSmoothness(points);
+
+ OnStrokeCompleted?.Invoke(LastStrokeImpulse, IsLastStrokeSmooth, LastStrokeRatio);
+ }
+ _driveTimer = 0f;
+ _recoveryTimer = 0f;
+ _currentState = StrokeState.Drive;
+ }
+ }
+
+ private int CalculateHRZone(int currentHR) { return 1; /* Replace with your actual HR math from previous step */ }
+ private float CalculateImpulse(List curve) { return 1f; /* Replace with your actual Impulse math */ }
+ private bool AnalyzeSmoothness(List curve) { return true; /* Replace with your actual Smoothness math */ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Input/RowingInputManager.cs.meta b/Assets/Scripts/Input/RowingInputManager.cs.meta
new file mode 100644
index 0000000..8e86820
--- /dev/null
+++ b/Assets/Scripts/Input/RowingInputManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2ac4117e608824ebfb7e8f80008e8ca0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Input/RowingSessionData.cs b/Assets/Scripts/Input/RowingSessionData.cs
new file mode 100644
index 0000000..542b22e
--- /dev/null
+++ b/Assets/Scripts/Input/RowingSessionData.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+[System.Serializable]
+public struct RowingFrame
+{
+ public float timestamp; // Time since the recording started
+ public int watts;
+ public int spm;
+ public int heartRate;
+ public List forceCurve; // Will be empty unless a stroke just finished
+}
+
+[CreateAssetMenu(fileName = "NewRowingSession", menuName = "Rowing/Session Data")]
+public class RowingSessionData : ScriptableObject
+{
+ public string sessionName = "New Session";
+ public List frames = new List();
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Input/RowingSessionData.cs.meta b/Assets/Scripts/Input/RowingSessionData.cs.meta
new file mode 100644
index 0000000..b8a6de8
--- /dev/null
+++ b/Assets/Scripts/Input/RowingSessionData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ecde514822d9e4bdc89dcb697d725f65
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/PM5.meta b/Assets/Scripts/PM5.meta
new file mode 100644
index 0000000..437d8fb
--- /dev/null
+++ b/Assets/Scripts/PM5.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5865157d44c834e7fb35c80be377143f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/PM5/CSAFEProtocol.cs b/Assets/Scripts/PM5/CSAFEProtocol.cs
new file mode 100644
index 0000000..7b5b9f9
--- /dev/null
+++ b/Assets/Scripts/PM5/CSAFEProtocol.cs
@@ -0,0 +1,381 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+
+public static class CSAFEDictionary
+{
+ public static readonly byte ExtendedFrameStartFlag = 0xF0;
+ public static readonly byte StandardFrameStartFlag = 0xF1;
+ public static readonly byte StopFrameFlag = 0xF2;
+ public static readonly byte ByteStuffingFlag = 0xF3;
+
+ public static readonly Dictionary> Cmd = new Dictionary>
+ {
+ // Standard Short Commands
+ { "CSAFE_GETSTATUS_CMD", new List