@hedia/recommendation-screen 2.1.21 → 2.1.22-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/coverage/clover.xml +716 -0
  2. package/coverage/coverage-final.json +28 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +79 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +201 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +170 -0
  11. package/coverage/lcov-report/src/RecommendationScreen.tsx.html +2483 -0
  12. package/coverage/lcov-report/src/__tests__/index.html +111 -0
  13. package/coverage/lcov-report/src/__tests__/utils.tsx.html +533 -0
  14. package/coverage/lcov-report/src/components/Header.tsx.html +356 -0
  15. package/coverage/lcov-report/src/components/InfoBars.tsx.html +518 -0
  16. package/coverage/lcov-report/src/components/InvisibleNumberInput.tsx.html +566 -0
  17. package/coverage/lcov-report/src/components/LimitationMessage.tsx.html +209 -0
  18. package/coverage/lcov-report/src/components/LineSeparator.tsx.html +161 -0
  19. package/coverage/lcov-report/src/components/RecentInsulin.tsx.html +410 -0
  20. package/coverage/lcov-report/src/components/RecommendationModal.tsx.html +923 -0
  21. package/coverage/lcov-report/src/components/RecommendedCarbs.tsx.html +1061 -0
  22. package/coverage/lcov-report/src/components/RecommendedInsulin.tsx.html +779 -0
  23. package/coverage/lcov-report/src/components/Remeasure.tsx.html +551 -0
  24. package/coverage/lcov-report/src/components/TransferToLogbook.tsx.html +443 -0
  25. package/coverage/lcov-report/src/components/TwoOptionModal.tsx.html +665 -0
  26. package/coverage/lcov-report/src/components/activity/Activity.tsx.html +371 -0
  27. package/coverage/lcov-report/src/components/activity/ActivityIcon.tsx.html +281 -0
  28. package/coverage/lcov-report/src/components/activity/ActivityIntensity.tsx.html +281 -0
  29. package/coverage/lcov-report/src/components/activity/index.html +141 -0
  30. package/coverage/lcov-report/src/components/index.html +276 -0
  31. package/coverage/lcov-report/src/components/mood/Emotion.tsx.html +353 -0
  32. package/coverage/lcov-report/src/components/mood/MoodIcon.tsx.html +335 -0
  33. package/coverage/lcov-report/src/components/mood/index.html +126 -0
  34. package/coverage/lcov-report/src/index.html +111 -0
  35. package/coverage/lcov-report/src/locale/i18nUtils.ts.html +206 -0
  36. package/coverage/lcov-report/src/locale/index.html +111 -0
  37. package/coverage/lcov-report/src/utils/AttentionMessages.tsx.html +554 -0
  38. package/coverage/lcov-report/src/utils/Constants.ts.html +248 -0
  39. package/coverage/lcov-report/src/utils/RecommendationError.tsx.html +620 -0
  40. package/coverage/lcov-report/src/utils/RecommendationUtils.ts.html +764 -0
  41. package/coverage/lcov-report/src/utils/Translations.ts.html +131 -0
  42. package/coverage/lcov-report/src/utils/Utils.ts.html +545 -0
  43. package/coverage/lcov-report/src/utils/Validations.ts.html +1544 -0
  44. package/coverage/lcov-report/src/utils/index.html +201 -0
  45. package/coverage/lcov.info +1611 -0
  46. package/package.json +2 -2
  47. package/src/__tests__/utils.js +2 -2
@@ -0,0 +1,2483 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/RecommendationScreen.tsx</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> RecommendationScreen.tsx</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>109/109</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>47/47</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>35/35</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>105/105</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line high'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a>
113
+ <a name='L54'></a><a href='#L54'>54</a>
114
+ <a name='L55'></a><a href='#L55'>55</a>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a>
173
+ <a name='L114'></a><a href='#L114'>114</a>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a>
198
+ <a name='L139'></a><a href='#L139'>139</a>
199
+ <a name='L140'></a><a href='#L140'>140</a>
200
+ <a name='L141'></a><a href='#L141'>141</a>
201
+ <a name='L142'></a><a href='#L142'>142</a>
202
+ <a name='L143'></a><a href='#L143'>143</a>
203
+ <a name='L144'></a><a href='#L144'>144</a>
204
+ <a name='L145'></a><a href='#L145'>145</a>
205
+ <a name='L146'></a><a href='#L146'>146</a>
206
+ <a name='L147'></a><a href='#L147'>147</a>
207
+ <a name='L148'></a><a href='#L148'>148</a>
208
+ <a name='L149'></a><a href='#L149'>149</a>
209
+ <a name='L150'></a><a href='#L150'>150</a>
210
+ <a name='L151'></a><a href='#L151'>151</a>
211
+ <a name='L152'></a><a href='#L152'>152</a>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a>
229
+ <a name='L170'></a><a href='#L170'>170</a>
230
+ <a name='L171'></a><a href='#L171'>171</a>
231
+ <a name='L172'></a><a href='#L172'>172</a>
232
+ <a name='L173'></a><a href='#L173'>173</a>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a>
368
+ <a name='L309'></a><a href='#L309'>309</a>
369
+ <a name='L310'></a><a href='#L310'>310</a>
370
+ <a name='L311'></a><a href='#L311'>311</a>
371
+ <a name='L312'></a><a href='#L312'>312</a>
372
+ <a name='L313'></a><a href='#L313'>313</a>
373
+ <a name='L314'></a><a href='#L314'>314</a>
374
+ <a name='L315'></a><a href='#L315'>315</a>
375
+ <a name='L316'></a><a href='#L316'>316</a>
376
+ <a name='L317'></a><a href='#L317'>317</a>
377
+ <a name='L318'></a><a href='#L318'>318</a>
378
+ <a name='L319'></a><a href='#L319'>319</a>
379
+ <a name='L320'></a><a href='#L320'>320</a>
380
+ <a name='L321'></a><a href='#L321'>321</a>
381
+ <a name='L322'></a><a href='#L322'>322</a>
382
+ <a name='L323'></a><a href='#L323'>323</a>
383
+ <a name='L324'></a><a href='#L324'>324</a>
384
+ <a name='L325'></a><a href='#L325'>325</a>
385
+ <a name='L326'></a><a href='#L326'>326</a>
386
+ <a name='L327'></a><a href='#L327'>327</a>
387
+ <a name='L328'></a><a href='#L328'>328</a>
388
+ <a name='L329'></a><a href='#L329'>329</a>
389
+ <a name='L330'></a><a href='#L330'>330</a>
390
+ <a name='L331'></a><a href='#L331'>331</a>
391
+ <a name='L332'></a><a href='#L332'>332</a>
392
+ <a name='L333'></a><a href='#L333'>333</a>
393
+ <a name='L334'></a><a href='#L334'>334</a>
394
+ <a name='L335'></a><a href='#L335'>335</a>
395
+ <a name='L336'></a><a href='#L336'>336</a>
396
+ <a name='L337'></a><a href='#L337'>337</a>
397
+ <a name='L338'></a><a href='#L338'>338</a>
398
+ <a name='L339'></a><a href='#L339'>339</a>
399
+ <a name='L340'></a><a href='#L340'>340</a>
400
+ <a name='L341'></a><a href='#L341'>341</a>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a>
412
+ <a name='L353'></a><a href='#L353'>353</a>
413
+ <a name='L354'></a><a href='#L354'>354</a>
414
+ <a name='L355'></a><a href='#L355'>355</a>
415
+ <a name='L356'></a><a href='#L356'>356</a>
416
+ <a name='L357'></a><a href='#L357'>357</a>
417
+ <a name='L358'></a><a href='#L358'>358</a>
418
+ <a name='L359'></a><a href='#L359'>359</a>
419
+ <a name='L360'></a><a href='#L360'>360</a>
420
+ <a name='L361'></a><a href='#L361'>361</a>
421
+ <a name='L362'></a><a href='#L362'>362</a>
422
+ <a name='L363'></a><a href='#L363'>363</a>
423
+ <a name='L364'></a><a href='#L364'>364</a>
424
+ <a name='L365'></a><a href='#L365'>365</a>
425
+ <a name='L366'></a><a href='#L366'>366</a>
426
+ <a name='L367'></a><a href='#L367'>367</a>
427
+ <a name='L368'></a><a href='#L368'>368</a>
428
+ <a name='L369'></a><a href='#L369'>369</a>
429
+ <a name='L370'></a><a href='#L370'>370</a>
430
+ <a name='L371'></a><a href='#L371'>371</a>
431
+ <a name='L372'></a><a href='#L372'>372</a>
432
+ <a name='L373'></a><a href='#L373'>373</a>
433
+ <a name='L374'></a><a href='#L374'>374</a>
434
+ <a name='L375'></a><a href='#L375'>375</a>
435
+ <a name='L376'></a><a href='#L376'>376</a>
436
+ <a name='L377'></a><a href='#L377'>377</a>
437
+ <a name='L378'></a><a href='#L378'>378</a>
438
+ <a name='L379'></a><a href='#L379'>379</a>
439
+ <a name='L380'></a><a href='#L380'>380</a>
440
+ <a name='L381'></a><a href='#L381'>381</a>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a>
478
+ <a name='L419'></a><a href='#L419'>419</a>
479
+ <a name='L420'></a><a href='#L420'>420</a>
480
+ <a name='L421'></a><a href='#L421'>421</a>
481
+ <a name='L422'></a><a href='#L422'>422</a>
482
+ <a name='L423'></a><a href='#L423'>423</a>
483
+ <a name='L424'></a><a href='#L424'>424</a>
484
+ <a name='L425'></a><a href='#L425'>425</a>
485
+ <a name='L426'></a><a href='#L426'>426</a>
486
+ <a name='L427'></a><a href='#L427'>427</a>
487
+ <a name='L428'></a><a href='#L428'>428</a>
488
+ <a name='L429'></a><a href='#L429'>429</a>
489
+ <a name='L430'></a><a href='#L430'>430</a>
490
+ <a name='L431'></a><a href='#L431'>431</a>
491
+ <a name='L432'></a><a href='#L432'>432</a>
492
+ <a name='L433'></a><a href='#L433'>433</a>
493
+ <a name='L434'></a><a href='#L434'>434</a>
494
+ <a name='L435'></a><a href='#L435'>435</a>
495
+ <a name='L436'></a><a href='#L436'>436</a>
496
+ <a name='L437'></a><a href='#L437'>437</a>
497
+ <a name='L438'></a><a href='#L438'>438</a>
498
+ <a name='L439'></a><a href='#L439'>439</a>
499
+ <a name='L440'></a><a href='#L440'>440</a>
500
+ <a name='L441'></a><a href='#L441'>441</a>
501
+ <a name='L442'></a><a href='#L442'>442</a>
502
+ <a name='L443'></a><a href='#L443'>443</a>
503
+ <a name='L444'></a><a href='#L444'>444</a>
504
+ <a name='L445'></a><a href='#L445'>445</a>
505
+ <a name='L446'></a><a href='#L446'>446</a>
506
+ <a name='L447'></a><a href='#L447'>447</a>
507
+ <a name='L448'></a><a href='#L448'>448</a>
508
+ <a name='L449'></a><a href='#L449'>449</a>
509
+ <a name='L450'></a><a href='#L450'>450</a>
510
+ <a name='L451'></a><a href='#L451'>451</a>
511
+ <a name='L452'></a><a href='#L452'>452</a>
512
+ <a name='L453'></a><a href='#L453'>453</a>
513
+ <a name='L454'></a><a href='#L454'>454</a>
514
+ <a name='L455'></a><a href='#L455'>455</a>
515
+ <a name='L456'></a><a href='#L456'>456</a>
516
+ <a name='L457'></a><a href='#L457'>457</a>
517
+ <a name='L458'></a><a href='#L458'>458</a>
518
+ <a name='L459'></a><a href='#L459'>459</a>
519
+ <a name='L460'></a><a href='#L460'>460</a>
520
+ <a name='L461'></a><a href='#L461'>461</a>
521
+ <a name='L462'></a><a href='#L462'>462</a>
522
+ <a name='L463'></a><a href='#L463'>463</a>
523
+ <a name='L464'></a><a href='#L464'>464</a>
524
+ <a name='L465'></a><a href='#L465'>465</a>
525
+ <a name='L466'></a><a href='#L466'>466</a>
526
+ <a name='L467'></a><a href='#L467'>467</a>
527
+ <a name='L468'></a><a href='#L468'>468</a>
528
+ <a name='L469'></a><a href='#L469'>469</a>
529
+ <a name='L470'></a><a href='#L470'>470</a>
530
+ <a name='L471'></a><a href='#L471'>471</a>
531
+ <a name='L472'></a><a href='#L472'>472</a>
532
+ <a name='L473'></a><a href='#L473'>473</a>
533
+ <a name='L474'></a><a href='#L474'>474</a>
534
+ <a name='L475'></a><a href='#L475'>475</a>
535
+ <a name='L476'></a><a href='#L476'>476</a>
536
+ <a name='L477'></a><a href='#L477'>477</a>
537
+ <a name='L478'></a><a href='#L478'>478</a>
538
+ <a name='L479'></a><a href='#L479'>479</a>
539
+ <a name='L480'></a><a href='#L480'>480</a>
540
+ <a name='L481'></a><a href='#L481'>481</a>
541
+ <a name='L482'></a><a href='#L482'>482</a>
542
+ <a name='L483'></a><a href='#L483'>483</a>
543
+ <a name='L484'></a><a href='#L484'>484</a>
544
+ <a name='L485'></a><a href='#L485'>485</a>
545
+ <a name='L486'></a><a href='#L486'>486</a>
546
+ <a name='L487'></a><a href='#L487'>487</a>
547
+ <a name='L488'></a><a href='#L488'>488</a>
548
+ <a name='L489'></a><a href='#L489'>489</a>
549
+ <a name='L490'></a><a href='#L490'>490</a>
550
+ <a name='L491'></a><a href='#L491'>491</a>
551
+ <a name='L492'></a><a href='#L492'>492</a>
552
+ <a name='L493'></a><a href='#L493'>493</a>
553
+ <a name='L494'></a><a href='#L494'>494</a>
554
+ <a name='L495'></a><a href='#L495'>495</a>
555
+ <a name='L496'></a><a href='#L496'>496</a>
556
+ <a name='L497'></a><a href='#L497'>497</a>
557
+ <a name='L498'></a><a href='#L498'>498</a>
558
+ <a name='L499'></a><a href='#L499'>499</a>
559
+ <a name='L500'></a><a href='#L500'>500</a>
560
+ <a name='L501'></a><a href='#L501'>501</a>
561
+ <a name='L502'></a><a href='#L502'>502</a>
562
+ <a name='L503'></a><a href='#L503'>503</a>
563
+ <a name='L504'></a><a href='#L504'>504</a>
564
+ <a name='L505'></a><a href='#L505'>505</a>
565
+ <a name='L506'></a><a href='#L506'>506</a>
566
+ <a name='L507'></a><a href='#L507'>507</a>
567
+ <a name='L508'></a><a href='#L508'>508</a>
568
+ <a name='L509'></a><a href='#L509'>509</a>
569
+ <a name='L510'></a><a href='#L510'>510</a>
570
+ <a name='L511'></a><a href='#L511'>511</a>
571
+ <a name='L512'></a><a href='#L512'>512</a>
572
+ <a name='L513'></a><a href='#L513'>513</a>
573
+ <a name='L514'></a><a href='#L514'>514</a>
574
+ <a name='L515'></a><a href='#L515'>515</a>
575
+ <a name='L516'></a><a href='#L516'>516</a>
576
+ <a name='L517'></a><a href='#L517'>517</a>
577
+ <a name='L518'></a><a href='#L518'>518</a>
578
+ <a name='L519'></a><a href='#L519'>519</a>
579
+ <a name='L520'></a><a href='#L520'>520</a>
580
+ <a name='L521'></a><a href='#L521'>521</a>
581
+ <a name='L522'></a><a href='#L522'>522</a>
582
+ <a name='L523'></a><a href='#L523'>523</a>
583
+ <a name='L524'></a><a href='#L524'>524</a>
584
+ <a name='L525'></a><a href='#L525'>525</a>
585
+ <a name='L526'></a><a href='#L526'>526</a>
586
+ <a name='L527'></a><a href='#L527'>527</a>
587
+ <a name='L528'></a><a href='#L528'>528</a>
588
+ <a name='L529'></a><a href='#L529'>529</a>
589
+ <a name='L530'></a><a href='#L530'>530</a>
590
+ <a name='L531'></a><a href='#L531'>531</a>
591
+ <a name='L532'></a><a href='#L532'>532</a>
592
+ <a name='L533'></a><a href='#L533'>533</a>
593
+ <a name='L534'></a><a href='#L534'>534</a>
594
+ <a name='L535'></a><a href='#L535'>535</a>
595
+ <a name='L536'></a><a href='#L536'>536</a>
596
+ <a name='L537'></a><a href='#L537'>537</a>
597
+ <a name='L538'></a><a href='#L538'>538</a>
598
+ <a name='L539'></a><a href='#L539'>539</a>
599
+ <a name='L540'></a><a href='#L540'>540</a>
600
+ <a name='L541'></a><a href='#L541'>541</a>
601
+ <a name='L542'></a><a href='#L542'>542</a>
602
+ <a name='L543'></a><a href='#L543'>543</a>
603
+ <a name='L544'></a><a href='#L544'>544</a>
604
+ <a name='L545'></a><a href='#L545'>545</a>
605
+ <a name='L546'></a><a href='#L546'>546</a>
606
+ <a name='L547'></a><a href='#L547'>547</a>
607
+ <a name='L548'></a><a href='#L548'>548</a>
608
+ <a name='L549'></a><a href='#L549'>549</a>
609
+ <a name='L550'></a><a href='#L550'>550</a>
610
+ <a name='L551'></a><a href='#L551'>551</a>
611
+ <a name='L552'></a><a href='#L552'>552</a>
612
+ <a name='L553'></a><a href='#L553'>553</a>
613
+ <a name='L554'></a><a href='#L554'>554</a>
614
+ <a name='L555'></a><a href='#L555'>555</a>
615
+ <a name='L556'></a><a href='#L556'>556</a>
616
+ <a name='L557'></a><a href='#L557'>557</a>
617
+ <a name='L558'></a><a href='#L558'>558</a>
618
+ <a name='L559'></a><a href='#L559'>559</a>
619
+ <a name='L560'></a><a href='#L560'>560</a>
620
+ <a name='L561'></a><a href='#L561'>561</a>
621
+ <a name='L562'></a><a href='#L562'>562</a>
622
+ <a name='L563'></a><a href='#L563'>563</a>
623
+ <a name='L564'></a><a href='#L564'>564</a>
624
+ <a name='L565'></a><a href='#L565'>565</a>
625
+ <a name='L566'></a><a href='#L566'>566</a>
626
+ <a name='L567'></a><a href='#L567'>567</a>
627
+ <a name='L568'></a><a href='#L568'>568</a>
628
+ <a name='L569'></a><a href='#L569'>569</a>
629
+ <a name='L570'></a><a href='#L570'>570</a>
630
+ <a name='L571'></a><a href='#L571'>571</a>
631
+ <a name='L572'></a><a href='#L572'>572</a>
632
+ <a name='L573'></a><a href='#L573'>573</a>
633
+ <a name='L574'></a><a href='#L574'>574</a>
634
+ <a name='L575'></a><a href='#L575'>575</a>
635
+ <a name='L576'></a><a href='#L576'>576</a>
636
+ <a name='L577'></a><a href='#L577'>577</a>
637
+ <a name='L578'></a><a href='#L578'>578</a>
638
+ <a name='L579'></a><a href='#L579'>579</a>
639
+ <a name='L580'></a><a href='#L580'>580</a>
640
+ <a name='L581'></a><a href='#L581'>581</a>
641
+ <a name='L582'></a><a href='#L582'>582</a>
642
+ <a name='L583'></a><a href='#L583'>583</a>
643
+ <a name='L584'></a><a href='#L584'>584</a>
644
+ <a name='L585'></a><a href='#L585'>585</a>
645
+ <a name='L586'></a><a href='#L586'>586</a>
646
+ <a name='L587'></a><a href='#L587'>587</a>
647
+ <a name='L588'></a><a href='#L588'>588</a>
648
+ <a name='L589'></a><a href='#L589'>589</a>
649
+ <a name='L590'></a><a href='#L590'>590</a>
650
+ <a name='L591'></a><a href='#L591'>591</a>
651
+ <a name='L592'></a><a href='#L592'>592</a>
652
+ <a name='L593'></a><a href='#L593'>593</a>
653
+ <a name='L594'></a><a href='#L594'>594</a>
654
+ <a name='L595'></a><a href='#L595'>595</a>
655
+ <a name='L596'></a><a href='#L596'>596</a>
656
+ <a name='L597'></a><a href='#L597'>597</a>
657
+ <a name='L598'></a><a href='#L598'>598</a>
658
+ <a name='L599'></a><a href='#L599'>599</a>
659
+ <a name='L600'></a><a href='#L600'>600</a>
660
+ <a name='L601'></a><a href='#L601'>601</a>
661
+ <a name='L602'></a><a href='#L602'>602</a>
662
+ <a name='L603'></a><a href='#L603'>603</a>
663
+ <a name='L604'></a><a href='#L604'>604</a>
664
+ <a name='L605'></a><a href='#L605'>605</a>
665
+ <a name='L606'></a><a href='#L606'>606</a>
666
+ <a name='L607'></a><a href='#L607'>607</a>
667
+ <a name='L608'></a><a href='#L608'>608</a>
668
+ <a name='L609'></a><a href='#L609'>609</a>
669
+ <a name='L610'></a><a href='#L610'>610</a>
670
+ <a name='L611'></a><a href='#L611'>611</a>
671
+ <a name='L612'></a><a href='#L612'>612</a>
672
+ <a name='L613'></a><a href='#L613'>613</a>
673
+ <a name='L614'></a><a href='#L614'>614</a>
674
+ <a name='L615'></a><a href='#L615'>615</a>
675
+ <a name='L616'></a><a href='#L616'>616</a>
676
+ <a name='L617'></a><a href='#L617'>617</a>
677
+ <a name='L618'></a><a href='#L618'>618</a>
678
+ <a name='L619'></a><a href='#L619'>619</a>
679
+ <a name='L620'></a><a href='#L620'>620</a>
680
+ <a name='L621'></a><a href='#L621'>621</a>
681
+ <a name='L622'></a><a href='#L622'>622</a>
682
+ <a name='L623'></a><a href='#L623'>623</a>
683
+ <a name='L624'></a><a href='#L624'>624</a>
684
+ <a name='L625'></a><a href='#L625'>625</a>
685
+ <a name='L626'></a><a href='#L626'>626</a>
686
+ <a name='L627'></a><a href='#L627'>627</a>
687
+ <a name='L628'></a><a href='#L628'>628</a>
688
+ <a name='L629'></a><a href='#L629'>629</a>
689
+ <a name='L630'></a><a href='#L630'>630</a>
690
+ <a name='L631'></a><a href='#L631'>631</a>
691
+ <a name='L632'></a><a href='#L632'>632</a>
692
+ <a name='L633'></a><a href='#L633'>633</a>
693
+ <a name='L634'></a><a href='#L634'>634</a>
694
+ <a name='L635'></a><a href='#L635'>635</a>
695
+ <a name='L636'></a><a href='#L636'>636</a>
696
+ <a name='L637'></a><a href='#L637'>637</a>
697
+ <a name='L638'></a><a href='#L638'>638</a>
698
+ <a name='L639'></a><a href='#L639'>639</a>
699
+ <a name='L640'></a><a href='#L640'>640</a>
700
+ <a name='L641'></a><a href='#L641'>641</a>
701
+ <a name='L642'></a><a href='#L642'>642</a>
702
+ <a name='L643'></a><a href='#L643'>643</a>
703
+ <a name='L644'></a><a href='#L644'>644</a>
704
+ <a name='L645'></a><a href='#L645'>645</a>
705
+ <a name='L646'></a><a href='#L646'>646</a>
706
+ <a name='L647'></a><a href='#L647'>647</a>
707
+ <a name='L648'></a><a href='#L648'>648</a>
708
+ <a name='L649'></a><a href='#L649'>649</a>
709
+ <a name='L650'></a><a href='#L650'>650</a>
710
+ <a name='L651'></a><a href='#L651'>651</a>
711
+ <a name='L652'></a><a href='#L652'>652</a>
712
+ <a name='L653'></a><a href='#L653'>653</a>
713
+ <a name='L654'></a><a href='#L654'>654</a>
714
+ <a name='L655'></a><a href='#L655'>655</a>
715
+ <a name='L656'></a><a href='#L656'>656</a>
716
+ <a name='L657'></a><a href='#L657'>657</a>
717
+ <a name='L658'></a><a href='#L658'>658</a>
718
+ <a name='L659'></a><a href='#L659'>659</a>
719
+ <a name='L660'></a><a href='#L660'>660</a>
720
+ <a name='L661'></a><a href='#L661'>661</a>
721
+ <a name='L662'></a><a href='#L662'>662</a>
722
+ <a name='L663'></a><a href='#L663'>663</a>
723
+ <a name='L664'></a><a href='#L664'>664</a>
724
+ <a name='L665'></a><a href='#L665'>665</a>
725
+ <a name='L666'></a><a href='#L666'>666</a>
726
+ <a name='L667'></a><a href='#L667'>667</a>
727
+ <a name='L668'></a><a href='#L668'>668</a>
728
+ <a name='L669'></a><a href='#L669'>669</a>
729
+ <a name='L670'></a><a href='#L670'>670</a>
730
+ <a name='L671'></a><a href='#L671'>671</a>
731
+ <a name='L672'></a><a href='#L672'>672</a>
732
+ <a name='L673'></a><a href='#L673'>673</a>
733
+ <a name='L674'></a><a href='#L674'>674</a>
734
+ <a name='L675'></a><a href='#L675'>675</a>
735
+ <a name='L676'></a><a href='#L676'>676</a>
736
+ <a name='L677'></a><a href='#L677'>677</a>
737
+ <a name='L678'></a><a href='#L678'>678</a>
738
+ <a name='L679'></a><a href='#L679'>679</a>
739
+ <a name='L680'></a><a href='#L680'>680</a>
740
+ <a name='L681'></a><a href='#L681'>681</a>
741
+ <a name='L682'></a><a href='#L682'>682</a>
742
+ <a name='L683'></a><a href='#L683'>683</a>
743
+ <a name='L684'></a><a href='#L684'>684</a>
744
+ <a name='L685'></a><a href='#L685'>685</a>
745
+ <a name='L686'></a><a href='#L686'>686</a>
746
+ <a name='L687'></a><a href='#L687'>687</a>
747
+ <a name='L688'></a><a href='#L688'>688</a>
748
+ <a name='L689'></a><a href='#L689'>689</a>
749
+ <a name='L690'></a><a href='#L690'>690</a>
750
+ <a name='L691'></a><a href='#L691'>691</a>
751
+ <a name='L692'></a><a href='#L692'>692</a>
752
+ <a name='L693'></a><a href='#L693'>693</a>
753
+ <a name='L694'></a><a href='#L694'>694</a>
754
+ <a name='L695'></a><a href='#L695'>695</a>
755
+ <a name='L696'></a><a href='#L696'>696</a>
756
+ <a name='L697'></a><a href='#L697'>697</a>
757
+ <a name='L698'></a><a href='#L698'>698</a>
758
+ <a name='L699'></a><a href='#L699'>699</a>
759
+ <a name='L700'></a><a href='#L700'>700</a>
760
+ <a name='L701'></a><a href='#L701'>701</a>
761
+ <a name='L702'></a><a href='#L702'>702</a>
762
+ <a name='L703'></a><a href='#L703'>703</a>
763
+ <a name='L704'></a><a href='#L704'>704</a>
764
+ <a name='L705'></a><a href='#L705'>705</a>
765
+ <a name='L706'></a><a href='#L706'>706</a>
766
+ <a name='L707'></a><a href='#L707'>707</a>
767
+ <a name='L708'></a><a href='#L708'>708</a>
768
+ <a name='L709'></a><a href='#L709'>709</a>
769
+ <a name='L710'></a><a href='#L710'>710</a>
770
+ <a name='L711'></a><a href='#L711'>711</a>
771
+ <a name='L712'></a><a href='#L712'>712</a>
772
+ <a name='L713'></a><a href='#L713'>713</a>
773
+ <a name='L714'></a><a href='#L714'>714</a>
774
+ <a name='L715'></a><a href='#L715'>715</a>
775
+ <a name='L716'></a><a href='#L716'>716</a>
776
+ <a name='L717'></a><a href='#L717'>717</a>
777
+ <a name='L718'></a><a href='#L718'>718</a>
778
+ <a name='L719'></a><a href='#L719'>719</a>
779
+ <a name='L720'></a><a href='#L720'>720</a>
780
+ <a name='L721'></a><a href='#L721'>721</a>
781
+ <a name='L722'></a><a href='#L722'>722</a>
782
+ <a name='L723'></a><a href='#L723'>723</a>
783
+ <a name='L724'></a><a href='#L724'>724</a>
784
+ <a name='L725'></a><a href='#L725'>725</a>
785
+ <a name='L726'></a><a href='#L726'>726</a>
786
+ <a name='L727'></a><a href='#L727'>727</a>
787
+ <a name='L728'></a><a href='#L728'>728</a>
788
+ <a name='L729'></a><a href='#L729'>729</a>
789
+ <a name='L730'></a><a href='#L730'>730</a>
790
+ <a name='L731'></a><a href='#L731'>731</a>
791
+ <a name='L732'></a><a href='#L732'>732</a>
792
+ <a name='L733'></a><a href='#L733'>733</a>
793
+ <a name='L734'></a><a href='#L734'>734</a>
794
+ <a name='L735'></a><a href='#L735'>735</a>
795
+ <a name='L736'></a><a href='#L736'>736</a>
796
+ <a name='L737'></a><a href='#L737'>737</a>
797
+ <a name='L738'></a><a href='#L738'>738</a>
798
+ <a name='L739'></a><a href='#L739'>739</a>
799
+ <a name='L740'></a><a href='#L740'>740</a>
800
+ <a name='L741'></a><a href='#L741'>741</a>
801
+ <a name='L742'></a><a href='#L742'>742</a>
802
+ <a name='L743'></a><a href='#L743'>743</a>
803
+ <a name='L744'></a><a href='#L744'>744</a>
804
+ <a name='L745'></a><a href='#L745'>745</a>
805
+ <a name='L746'></a><a href='#L746'>746</a>
806
+ <a name='L747'></a><a href='#L747'>747</a>
807
+ <a name='L748'></a><a href='#L748'>748</a>
808
+ <a name='L749'></a><a href='#L749'>749</a>
809
+ <a name='L750'></a><a href='#L750'>750</a>
810
+ <a name='L751'></a><a href='#L751'>751</a>
811
+ <a name='L752'></a><a href='#L752'>752</a>
812
+ <a name='L753'></a><a href='#L753'>753</a>
813
+ <a name='L754'></a><a href='#L754'>754</a>
814
+ <a name='L755'></a><a href='#L755'>755</a>
815
+ <a name='L756'></a><a href='#L756'>756</a>
816
+ <a name='L757'></a><a href='#L757'>757</a>
817
+ <a name='L758'></a><a href='#L758'>758</a>
818
+ <a name='L759'></a><a href='#L759'>759</a>
819
+ <a name='L760'></a><a href='#L760'>760</a>
820
+ <a name='L761'></a><a href='#L761'>761</a>
821
+ <a name='L762'></a><a href='#L762'>762</a>
822
+ <a name='L763'></a><a href='#L763'>763</a>
823
+ <a name='L764'></a><a href='#L764'>764</a>
824
+ <a name='L765'></a><a href='#L765'>765</a>
825
+ <a name='L766'></a><a href='#L766'>766</a>
826
+ <a name='L767'></a><a href='#L767'>767</a>
827
+ <a name='L768'></a><a href='#L768'>768</a>
828
+ <a name='L769'></a><a href='#L769'>769</a>
829
+ <a name='L770'></a><a href='#L770'>770</a>
830
+ <a name='L771'></a><a href='#L771'>771</a>
831
+ <a name='L772'></a><a href='#L772'>772</a>
832
+ <a name='L773'></a><a href='#L773'>773</a>
833
+ <a name='L774'></a><a href='#L774'>774</a>
834
+ <a name='L775'></a><a href='#L775'>775</a>
835
+ <a name='L776'></a><a href='#L776'>776</a>
836
+ <a name='L777'></a><a href='#L777'>777</a>
837
+ <a name='L778'></a><a href='#L778'>778</a>
838
+ <a name='L779'></a><a href='#L779'>779</a>
839
+ <a name='L780'></a><a href='#L780'>780</a>
840
+ <a name='L781'></a><a href='#L781'>781</a>
841
+ <a name='L782'></a><a href='#L782'>782</a>
842
+ <a name='L783'></a><a href='#L783'>783</a>
843
+ <a name='L784'></a><a href='#L784'>784</a>
844
+ <a name='L785'></a><a href='#L785'>785</a>
845
+ <a name='L786'></a><a href='#L786'>786</a>
846
+ <a name='L787'></a><a href='#L787'>787</a>
847
+ <a name='L788'></a><a href='#L788'>788</a>
848
+ <a name='L789'></a><a href='#L789'>789</a>
849
+ <a name='L790'></a><a href='#L790'>790</a>
850
+ <a name='L791'></a><a href='#L791'>791</a>
851
+ <a name='L792'></a><a href='#L792'>792</a>
852
+ <a name='L793'></a><a href='#L793'>793</a>
853
+ <a name='L794'></a><a href='#L794'>794</a>
854
+ <a name='L795'></a><a href='#L795'>795</a>
855
+ <a name='L796'></a><a href='#L796'>796</a>
856
+ <a name='L797'></a><a href='#L797'>797</a>
857
+ <a name='L798'></a><a href='#L798'>798</a>
858
+ <a name='L799'></a><a href='#L799'>799</a>
859
+ <a name='L800'></a><a href='#L800'>800</a>
860
+ <a name='L801'></a><a href='#L801'>801</a>
861
+ <a name='L802'></a><a href='#L802'>802</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-neutral">&nbsp;</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-yes">1x</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-yes">1x</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-neutral">&nbsp;</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-neutral">&nbsp;</span>
943
+ <span class="cline-any cline-neutral">&nbsp;</span>
944
+ <span class="cline-any cline-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
+ <span class="cline-any cline-neutral">&nbsp;</span>
948
+ <span class="cline-any cline-neutral">&nbsp;</span>
949
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-neutral">&nbsp;</span>
951
+ <span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-neutral">&nbsp;</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-neutral">&nbsp;</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-neutral">&nbsp;</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-neutral">&nbsp;</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-neutral">&nbsp;</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-neutral">&nbsp;</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-neutral">&nbsp;</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-neutral">&nbsp;</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-neutral">&nbsp;</span>
1004
+ <span class="cline-any cline-neutral">&nbsp;</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-neutral">&nbsp;</span>
1007
+ <span class="cline-any cline-neutral">&nbsp;</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-neutral">&nbsp;</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-neutral">&nbsp;</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-neutral">&nbsp;</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-neutral">&nbsp;</span>
1029
+ <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-neutral">&nbsp;</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-neutral">&nbsp;</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-neutral">&nbsp;</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-neutral">&nbsp;</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-neutral">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-yes">64x</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span>
1057
+ <span class="cline-any cline-neutral">&nbsp;</span>
1058
+ <span class="cline-any cline-neutral">&nbsp;</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-neutral">&nbsp;</span>
1061
+ <span class="cline-any cline-neutral">&nbsp;</span>
1062
+ <span class="cline-any cline-neutral">&nbsp;</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-neutral">&nbsp;</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-neutral">&nbsp;</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-neutral">&nbsp;</span>
1083
+ <span class="cline-any cline-yes">64x</span>
1084
+ <span class="cline-any cline-yes">64x</span>
1085
+ <span class="cline-any cline-yes">64x</span>
1086
+ <span class="cline-any cline-yes">63x</span>
1087
+ <span class="cline-any cline-neutral">&nbsp;</span>
1088
+ <span class="cline-any cline-yes">63x</span>
1089
+ <span class="cline-any cline-yes">63x</span>
1090
+ <span class="cline-any cline-neutral">&nbsp;</span>
1091
+ <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-yes">63x</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-yes">62x</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-yes">62x</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-neutral">&nbsp;</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-neutral">&nbsp;</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-neutral">&nbsp;</span>
1108
+ <span class="cline-any cline-neutral">&nbsp;</span>
1109
+ <span class="cline-any cline-neutral">&nbsp;</span>
1110
+ <span class="cline-any cline-neutral">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-neutral">&nbsp;</span>
1113
+ <span class="cline-any cline-neutral">&nbsp;</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-yes">62x</span>
1119
+ <span class="cline-any cline-neutral">&nbsp;</span>
1120
+ <span class="cline-any cline-yes">2x</span>
1121
+ <span class="cline-any cline-yes">2x</span>
1122
+ <span class="cline-any cline-neutral">&nbsp;</span>
1123
+ <span class="cline-any cline-neutral">&nbsp;</span>
1124
+ <span class="cline-any cline-neutral">&nbsp;</span>
1125
+ <span class="cline-any cline-neutral">&nbsp;</span>
1126
+ <span class="cline-any cline-neutral">&nbsp;</span>
1127
+ <span class="cline-any cline-neutral">&nbsp;</span>
1128
+ <span class="cline-any cline-neutral">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-yes">64x</span>
1133
+ <span class="cline-any cline-neutral">&nbsp;</span>
1134
+ <span class="cline-any cline-neutral">&nbsp;</span>
1135
+ <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-neutral">&nbsp;</span>
1137
+ <span class="cline-any cline-neutral">&nbsp;</span>
1138
+ <span class="cline-any cline-neutral">&nbsp;</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-neutral">&nbsp;</span>
1142
+ <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-neutral">&nbsp;</span>
1145
+ <span class="cline-any cline-neutral">&nbsp;</span>
1146
+ <span class="cline-any cline-yes">64x</span>
1147
+ <span class="cline-any cline-yes">62x</span>
1148
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
+ <span class="cline-any cline-yes">64x</span>
1150
+ <span class="cline-any cline-neutral">&nbsp;</span>
1151
+ <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1153
+ <span class="cline-any cline-neutral">&nbsp;</span>
1154
+ <span class="cline-any cline-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-neutral">&nbsp;</span>
1157
+ <span class="cline-any cline-neutral">&nbsp;</span>
1158
+ <span class="cline-any cline-yes">64x</span>
1159
+ <span class="cline-any cline-yes">4x</span>
1160
+ <span class="cline-any cline-yes">4x</span>
1161
+ <span class="cline-any cline-yes">4x</span>
1162
+ <span class="cline-any cline-yes">1x</span>
1163
+ <span class="cline-any cline-neutral">&nbsp;</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-neutral">&nbsp;</span>
1166
+ <span class="cline-any cline-neutral">&nbsp;</span>
1167
+ <span class="cline-any cline-neutral">&nbsp;</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-neutral">&nbsp;</span>
1170
+ <span class="cline-any cline-yes">64x</span>
1171
+ <span class="cline-any cline-yes">6x</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1174
+ <span class="cline-any cline-neutral">&nbsp;</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-neutral">&nbsp;</span>
1179
+ <span class="cline-any cline-neutral">&nbsp;</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-neutral">&nbsp;</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-neutral">&nbsp;</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-neutral">&nbsp;</span>
1186
+ <span class="cline-any cline-neutral">&nbsp;</span>
1187
+ <span class="cline-any cline-yes">64x</span>
1188
+ <span class="cline-any cline-yes">5x</span>
1189
+ <span class="cline-any cline-yes">5x</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-neutral">&nbsp;</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-neutral">&nbsp;</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-neutral">&nbsp;</span>
1200
+ <span class="cline-any cline-neutral">&nbsp;</span>
1201
+ <span class="cline-any cline-neutral">&nbsp;</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-neutral">&nbsp;</span>
1204
+ <span class="cline-any cline-neutral">&nbsp;</span>
1205
+ <span class="cline-any cline-neutral">&nbsp;</span>
1206
+ <span class="cline-any cline-neutral">&nbsp;</span>
1207
+ <span class="cline-any cline-yes">64x</span>
1208
+ <span class="cline-any cline-yes">5x</span>
1209
+ <span class="cline-any cline-yes">4x</span>
1210
+ <span class="cline-any cline-neutral">&nbsp;</span>
1211
+ <span class="cline-any cline-yes">1x</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-neutral">&nbsp;</span>
1214
+ <span class="cline-any cline-neutral">&nbsp;</span>
1215
+ <span class="cline-any cline-neutral">&nbsp;</span>
1216
+ <span class="cline-any cline-neutral">&nbsp;</span>
1217
+ <span class="cline-any cline-neutral">&nbsp;</span>
1218
+ <span class="cline-any cline-neutral">&nbsp;</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1220
+ <span class="cline-any cline-neutral">&nbsp;</span>
1221
+ <span class="cline-any cline-yes">64x</span>
1222
+ <span class="cline-any cline-yes">8x</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-neutral">&nbsp;</span>
1225
+ <span class="cline-any cline-neutral">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-neutral">&nbsp;</span>
1228
+ <span class="cline-any cline-neutral">&nbsp;</span>
1229
+ <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-neutral">&nbsp;</span>
1231
+ <span class="cline-any cline-yes">64x</span>
1232
+ <span class="cline-any cline-yes">1x</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1236
+ <span class="cline-any cline-neutral">&nbsp;</span>
1237
+ <span class="cline-any cline-neutral">&nbsp;</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-neutral">&nbsp;</span>
1242
+ <span class="cline-any cline-yes">64x</span>
1243
+ <span class="cline-any cline-yes">3x</span>
1244
+ <span class="cline-any cline-neutral">&nbsp;</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-neutral">&nbsp;</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1249
+ <span class="cline-any cline-neutral">&nbsp;</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-yes">64x</span>
1254
+ <span class="cline-any cline-yes">10x</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-yes">64x</span>
1265
+ <span class="cline-any cline-yes">3x</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-yes">64x</span>
1281
+ <span class="cline-any cline-yes">6x</span>
1282
+ <span class="cline-any cline-yes">6x</span>
1283
+ <span class="cline-any cline-yes">6x</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-neutral">&nbsp;</span>
1286
+ <span class="cline-any cline-neutral">&nbsp;</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-neutral">&nbsp;</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-neutral">&nbsp;</span>
1298
+ <span class="cline-any cline-yes">64x</span>
1299
+ <span class="cline-any cline-yes">2x</span>
1300
+ <span class="cline-any cline-yes">2x</span>
1301
+ <span class="cline-any cline-yes">2x</span>
1302
+ <span class="cline-any cline-neutral">&nbsp;</span>
1303
+ <span class="cline-any cline-neutral">&nbsp;</span>
1304
+ <span class="cline-any cline-neutral">&nbsp;</span>
1305
+ <span class="cline-any cline-neutral">&nbsp;</span>
1306
+ <span class="cline-any cline-neutral">&nbsp;</span>
1307
+ <span class="cline-any cline-neutral">&nbsp;</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-neutral">&nbsp;</span>
1310
+ <span class="cline-any cline-neutral">&nbsp;</span>
1311
+ <span class="cline-any cline-neutral">&nbsp;</span>
1312
+ <span class="cline-any cline-yes">64x</span>
1313
+ <span class="cline-any cline-yes">3x</span>
1314
+ <span class="cline-any cline-yes">3x</span>
1315
+ <span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-neutral">&nbsp;</span>
1317
+ <span class="cline-any cline-neutral">&nbsp;</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-neutral">&nbsp;</span>
1326
+ <span class="cline-any cline-yes">64x</span>
1327
+ <span class="cline-any cline-yes">1x</span>
1328
+ <span class="cline-any cline-yes">1x</span>
1329
+ <span class="cline-any cline-yes">1x</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
1332
+ <span class="cline-any cline-neutral">&nbsp;</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-yes">64x</span>
1340
+ <span class="cline-any cline-yes">5x</span>
1341
+ <span class="cline-any cline-yes">5x</span>
1342
+ <span class="cline-any cline-neutral">&nbsp;</span>
1343
+ <span class="cline-any cline-neutral">&nbsp;</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-neutral">&nbsp;</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-yes">64x</span>
1352
+ <span class="cline-any cline-yes">4x</span>
1353
+ <span class="cline-any cline-yes">4x</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-neutral">&nbsp;</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-neutral">&nbsp;</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-neutral">&nbsp;</span>
1362
+ <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-yes">64x</span>
1364
+ <span class="cline-any cline-yes">1x</span>
1365
+ <span class="cline-any cline-yes">1x</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-neutral">&nbsp;</span>
1370
+ <span class="cline-any cline-neutral">&nbsp;</span>
1371
+ <span class="cline-any cline-neutral">&nbsp;</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-neutral">&nbsp;</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-yes">64x</span>
1376
+ <span class="cline-any cline-yes">2x</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-neutral">&nbsp;</span>
1382
+ <span class="cline-any cline-neutral">&nbsp;</span>
1383
+ <span class="cline-any cline-neutral">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-yes">64x</span>
1387
+ <span class="cline-any cline-yes">2x</span>
1388
+ <span class="cline-any cline-neutral">&nbsp;</span>
1389
+ <span class="cline-any cline-neutral">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-neutral">&nbsp;</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-yes">64x</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-neutral">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-neutral">&nbsp;</span>
1410
+ <span class="cline-any cline-neutral">&nbsp;</span>
1411
+ <span class="cline-any cline-neutral">&nbsp;</span>
1412
+ <span class="cline-any cline-neutral">&nbsp;</span>
1413
+ <span class="cline-any cline-yes">7x</span>
1414
+ <span class="cline-any cline-yes">7x</span>
1415
+ <span class="cline-any cline-yes">7x</span>
1416
+ <span class="cline-any cline-neutral">&nbsp;</span>
1417
+ <span class="cline-any cline-yes">7x</span>
1418
+ <span class="cline-any cline-yes">7x</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-neutral">&nbsp;</span>
1421
+ <span class="cline-any cline-neutral">&nbsp;</span>
1422
+ <span class="cline-any cline-neutral">&nbsp;</span>
1423
+ <span class="cline-any cline-neutral">&nbsp;</span>
1424
+ <span class="cline-any cline-neutral">&nbsp;</span>
1425
+ <span class="cline-any cline-neutral">&nbsp;</span>
1426
+ <span class="cline-any cline-neutral">&nbsp;</span>
1427
+ <span class="cline-any cline-neutral">&nbsp;</span>
1428
+ <span class="cline-any cline-neutral">&nbsp;</span>
1429
+ <span class="cline-any cline-neutral">&nbsp;</span>
1430
+ <span class="cline-any cline-neutral">&nbsp;</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-yes">64x</span>
1433
+ <span class="cline-any cline-yes">180x</span>
1434
+ <span class="cline-any cline-yes">180x</span>
1435
+ <span class="cline-any cline-yes">180x</span>
1436
+ <span class="cline-any cline-yes">180x</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-neutral">&nbsp;</span>
1439
+ <span class="cline-any cline-neutral">&nbsp;</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-neutral">&nbsp;</span>
1445
+ <span class="cline-any cline-neutral">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-neutral">&nbsp;</span>
1448
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
+ <span class="cline-any cline-yes">64x</span>
1450
+ <span class="cline-any cline-yes">62x</span>
1451
+ <span class="cline-any cline-yes">62x</span>
1452
+ <span class="cline-any cline-yes">62x</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-yes">62x</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-neutral">&nbsp;</span>
1458
+ <span class="cline-any cline-neutral">&nbsp;</span>
1459
+ <span class="cline-any cline-neutral">&nbsp;</span>
1460
+ <span class="cline-any cline-neutral">&nbsp;</span>
1461
+ <span class="cline-any cline-neutral">&nbsp;</span>
1462
+ <span class="cline-any cline-neutral">&nbsp;</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-neutral">&nbsp;</span>
1465
+ <span class="cline-any cline-neutral">&nbsp;</span>
1466
+ <span class="cline-any cline-yes">64x</span>
1467
+ <span class="cline-any cline-yes">132x</span>
1468
+ <span class="cline-any cline-neutral">&nbsp;</span>
1469
+ <span class="cline-any cline-yes">132x</span>
1470
+ <span class="cline-any cline-neutral">&nbsp;</span>
1471
+ <span class="cline-any cline-neutral">&nbsp;</span>
1472
+ <span class="cline-any cline-neutral">&nbsp;</span>
1473
+ <span class="cline-any cline-neutral">&nbsp;</span>
1474
+ <span class="cline-any cline-yes">133x</span>
1475
+ <span class="cline-any cline-yes">2x</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-neutral">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-neutral">&nbsp;</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-neutral">&nbsp;</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-neutral">&nbsp;</span>
1486
+ <span class="cline-any cline-neutral">&nbsp;</span>
1487
+ <span class="cline-any cline-yes">131x</span>
1488
+ <span class="cline-any cline-neutral">&nbsp;</span>
1489
+ <span class="cline-any cline-neutral">&nbsp;</span>
1490
+ <span class="cline-any cline-neutral">&nbsp;</span>
1491
+ <span class="cline-any cline-neutral">&nbsp;</span>
1492
+ <span class="cline-any cline-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-yes">131x</span>
1494
+ <span class="cline-any cline-neutral">&nbsp;</span>
1495
+ <span class="cline-any cline-neutral">&nbsp;</span>
1496
+ <span class="cline-any cline-neutral">&nbsp;</span>
1497
+ <span class="cline-any cline-neutral">&nbsp;</span>
1498
+ <span class="cline-any cline-yes">131x</span>
1499
+ <span class="cline-any cline-neutral">&nbsp;</span>
1500
+ <span class="cline-any cline-yes">131x</span>
1501
+ <span class="cline-any cline-yes">131x</span>
1502
+ <span class="cline-any cline-neutral">&nbsp;</span>
1503
+ <span class="cline-any cline-yes">131x</span>
1504
+ <span class="cline-any cline-yes">131x</span>
1505
+ <span class="cline-any cline-yes">131x</span>
1506
+ <span class="cline-any cline-neutral">&nbsp;</span>
1507
+ <span class="cline-any cline-yes">131x</span>
1508
+ <span class="cline-any cline-yes">131x</span>
1509
+ <span class="cline-any cline-neutral">&nbsp;</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-neutral">&nbsp;</span>
1512
+ <span class="cline-any cline-neutral">&nbsp;</span>
1513
+ <span class="cline-any cline-neutral">&nbsp;</span>
1514
+ <span class="cline-any cline-yes">262x</span>
1515
+ <span class="cline-any cline-yes">131x</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span>
1517
+ <span class="cline-any cline-neutral">&nbsp;</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-neutral">&nbsp;</span>
1520
+ <span class="cline-any cline-neutral">&nbsp;</span>
1521
+ <span class="cline-any cline-neutral">&nbsp;</span>
1522
+ <span class="cline-any cline-neutral">&nbsp;</span>
1523
+ <span class="cline-any cline-neutral">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-neutral">&nbsp;</span>
1526
+ <span class="cline-any cline-neutral">&nbsp;</span>
1527
+ <span class="cline-any cline-neutral">&nbsp;</span>
1528
+ <span class="cline-any cline-neutral">&nbsp;</span>
1529
+ <span class="cline-any cline-neutral">&nbsp;</span>
1530
+ <span class="cline-any cline-neutral">&nbsp;</span>
1531
+ <span class="cline-any cline-neutral">&nbsp;</span>
1532
+ <span class="cline-any cline-neutral">&nbsp;</span>
1533
+ <span class="cline-any cline-neutral">&nbsp;</span>
1534
+ <span class="cline-any cline-neutral">&nbsp;</span>
1535
+ <span class="cline-any cline-neutral">&nbsp;</span>
1536
+ <span class="cline-any cline-neutral">&nbsp;</span>
1537
+ <span class="cline-any cline-neutral">&nbsp;</span>
1538
+ <span class="cline-any cline-neutral">&nbsp;</span>
1539
+ <span class="cline-any cline-neutral">&nbsp;</span>
1540
+ <span class="cline-any cline-neutral">&nbsp;</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-neutral">&nbsp;</span>
1543
+ <span class="cline-any cline-neutral">&nbsp;</span>
1544
+ <span class="cline-any cline-neutral">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-neutral">&nbsp;</span>
1550
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-neutral">&nbsp;</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-neutral">&nbsp;</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-neutral">&nbsp;</span>
1558
+ <span class="cline-any cline-neutral">&nbsp;</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-neutral">&nbsp;</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-neutral">&nbsp;</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-neutral">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-neutral">&nbsp;</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-neutral">&nbsp;</span>
1574
+ <span class="cline-any cline-neutral">&nbsp;</span>
1575
+ <span class="cline-any cline-neutral">&nbsp;</span>
1576
+ <span class="cline-any cline-neutral">&nbsp;</span>
1577
+ <span class="cline-any cline-neutral">&nbsp;</span>
1578
+ <span class="cline-any cline-neutral">&nbsp;</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-neutral">&nbsp;</span>
1581
+ <span class="cline-any cline-neutral">&nbsp;</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-neutral">&nbsp;</span>
1584
+ <span class="cline-any cline-neutral">&nbsp;</span>
1585
+ <span class="cline-any cline-neutral">&nbsp;</span>
1586
+ <span class="cline-any cline-neutral">&nbsp;</span>
1587
+ <span class="cline-any cline-neutral">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-neutral">&nbsp;</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-neutral">&nbsp;</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-neutral">&nbsp;</span>
1596
+ <span class="cline-any cline-neutral">&nbsp;</span>
1597
+ <span class="cline-any cline-neutral">&nbsp;</span>
1598
+ <span class="cline-any cline-neutral">&nbsp;</span>
1599
+ <span class="cline-any cline-neutral">&nbsp;</span>
1600
+ <span class="cline-any cline-neutral">&nbsp;</span>
1601
+ <span class="cline-any cline-neutral">&nbsp;</span>
1602
+ <span class="cline-any cline-neutral">&nbsp;</span>
1603
+ <span class="cline-any cline-neutral">&nbsp;</span>
1604
+ <span class="cline-any cline-neutral">&nbsp;</span>
1605
+ <span class="cline-any cline-neutral">&nbsp;</span>
1606
+ <span class="cline-any cline-neutral">&nbsp;</span>
1607
+ <span class="cline-any cline-neutral">&nbsp;</span>
1608
+ <span class="cline-any cline-neutral">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-neutral">&nbsp;</span>
1612
+ <span class="cline-any cline-neutral">&nbsp;</span>
1613
+ <span class="cline-any cline-neutral">&nbsp;</span>
1614
+ <span class="cline-any cline-neutral">&nbsp;</span>
1615
+ <span class="cline-any cline-neutral">&nbsp;</span>
1616
+ <span class="cline-any cline-neutral">&nbsp;</span>
1617
+ <span class="cline-any cline-neutral">&nbsp;</span>
1618
+ <span class="cline-any cline-neutral">&nbsp;</span>
1619
+ <span class="cline-any cline-neutral">&nbsp;</span>
1620
+ <span class="cline-any cline-neutral">&nbsp;</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1622
+ <span class="cline-any cline-neutral">&nbsp;</span>
1623
+ <span class="cline-any cline-neutral">&nbsp;</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-neutral">&nbsp;</span>
1627
+ <span class="cline-any cline-neutral">&nbsp;</span>
1628
+ <span class="cline-any cline-neutral">&nbsp;</span>
1629
+ <span class="cline-any cline-neutral">&nbsp;</span>
1630
+ <span class="cline-any cline-neutral">&nbsp;</span>
1631
+ <span class="cline-any cline-neutral">&nbsp;</span>
1632
+ <span class="cline-any cline-neutral">&nbsp;</span>
1633
+ <span class="cline-any cline-neutral">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-neutral">&nbsp;</span>
1639
+ <span class="cline-any cline-neutral">&nbsp;</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-neutral">&nbsp;</span>
1642
+ <span class="cline-any cline-neutral">&nbsp;</span>
1643
+ <span class="cline-any cline-neutral">&nbsp;</span>
1644
+ <span class="cline-any cline-yes">1x</span>
1645
+ <span class="cline-any cline-neutral">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1647
+ <span class="cline-any cline-neutral">&nbsp;</span>
1648
+ <span class="cline-any cline-neutral">&nbsp;</span>
1649
+ <span class="cline-any cline-neutral">&nbsp;</span>
1650
+ <span class="cline-any cline-neutral">&nbsp;</span>
1651
+ <span class="cline-any cline-neutral">&nbsp;</span>
1652
+ <span class="cline-any cline-neutral">&nbsp;</span>
1653
+ <span class="cline-any cline-neutral">&nbsp;</span>
1654
+ <span class="cline-any cline-neutral">&nbsp;</span>
1655
+ <span class="cline-any cline-neutral">&nbsp;</span>
1656
+ <span class="cline-any cline-neutral">&nbsp;</span>
1657
+ <span class="cline-any cline-neutral">&nbsp;</span>
1658
+ <span class="cline-any cline-neutral">&nbsp;</span>
1659
+ <span class="cline-any cline-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-neutral">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React from "react";
1663
+ import { AppState, AppStateStatus, ScrollView, StyleSheet, View, YellowBox } from "react-native";
1664
+ &nbsp;
1665
+ import { BACKGROUND_COLOUR_PURPLE, BORDER_COLOUR_GREY, BORDER_COLOUR_TEAL } from "./utils/Constants";
1666
+ &nbsp;
1667
+ import Header from "./components/Header";
1668
+ import InfoBars, { infoStyles } from "./components/InfoBars";
1669
+ import RecentInsulin from "./components/RecentInsulin";
1670
+ import RecommendedCarbs from "./components/RecommendedCarbs";
1671
+ import RecommendedInsulin from "./components/RecommendedInsulin";
1672
+ import Remeasure from "./components/Remeasure";
1673
+ &nbsp;
1674
+ import * as Calculator from "@hedia/recommendation-calculator";
1675
+ import {
1676
+ BloodGlucoseUnit,
1677
+ BloodKetonesUnit,
1678
+ BolusCalculator,
1679
+ Languages,
1680
+ Logbook,
1681
+ Milliseconds,
1682
+ UserSettings,
1683
+ } from "@hedia/types";
1684
+ import { I18nProvider } from "@lingui/react";
1685
+ import Emotion from "./components/mood/Emotion";
1686
+ import TransferToLogbook from "./components/TransferToLogbook";
1687
+ import { RecommendationError } from "./utils/RecommendationError";
1688
+ &nbsp;
1689
+ import { t } from "@lingui/macro";
1690
+ &nbsp;
1691
+ import Activity from "./components/activity/Activity";
1692
+ import LimitationMessage from "./components/LimitationMessage";
1693
+ import RecommendationModal from "./components/RecommendationModal";
1694
+ import TwoOptionModal, { modalStyle } from "./components/TwoOptionModal";
1695
+ import { changeLanguage, i18n } from "./locale/i18nUtils";
1696
+ import { Testing } from "./types/enum";
1697
+ import { IActivityDisplayProps } from "./types/types";
1698
+ import { Messages } from "./utils/AttentionMessages";
1699
+ import { getAttentionMessage, getBGLevel, getLimitationMessage, getReminder } from "./utils/RecommendationUtils";
1700
+ import { Utils } from "./utils/Utils";
1701
+ import { validateParams } from "./utils/Validations";
1702
+ &nbsp;
1703
+ const { InfoBarTestIds, RecommendationScreenTestIds } = Testing.Id;
1704
+ &nbsp;
1705
+ // Ignoring long timer warnings
1706
+ // https://github.com/facebook/react-native/issues/12981#issuecomment-652745831
1707
+ YellowBox.ignoreWarnings([`Setting a timer`]);
1708
+ &nbsp;
1709
+ /** Represents both a suggestion by HDA and an actual amount of either insulin or carbohydrates. */
1710
+ export interface IResult {
1711
+ /** The suggested amount (of insulin in units or carbohydrates in grams) */
1712
+ suggested: number;
1713
+ /** The actual amount (of insulin in units or carbohydrates in grams) */
1714
+ entered: number | null;
1715
+ }
1716
+ &nbsp;
1717
+ export interface IRecommendationProps {
1718
+ /** The blood glucose measurement unit that the user prefers. */
1719
+ bloodGlucoseUnit: BloodGlucoseUnit;
1720
+ /** The user’s preferred language. */
1721
+ language: Languages;
1722
+ /** The user’s preferred default reminder time in hours when they enter carbohydrates or an activity. */
1723
+ userReminder: number;
1724
+ /** The values needed to make an insulin recommendation calculation. */
1725
+ calculatorParams: BolusCalculator.Types.IRecommendationParams;
1726
+ /** Indicates which method the user uses to inject insulin and thus how insulin amounts should be rounded. */
1727
+ injectionMethod: UserSettings.Enums.InjectionMethod;
1728
+ /** The user’s entered current blood ketones value. Null if no blood ketones value was entered. */
1729
+ currentBKL: number | null;
1730
+ /** The blood ketones measurement unit that the user prefers. Null if the user hasn’t selected a preferred blood ketones unit. */
1731
+ bloodKetoneUnit: BloodKetonesUnit | null;
1732
+ /** The latest logbook entry (if any) from the last 6 hours. */
1733
+ latestLogbookFrom6Hours: Logbook.Types.ILogbookEntry | null;
1734
+ /** The properties of the entered activity that are not used for making the calculation itself, but will be used on the recommendation screen. */
1735
+ activityDisplayProps: IActivityDisplayProps | null;
1736
+ &nbsp;
1737
+ /**
1738
+ * Callback function taking a single boolean argument and returning nothing.
1739
+ * To be called when the user decides on a presented carbohydrate recommendation.
1740
+ * @param carbRecommendationAnswer Whether the user chose to accept (true) or reject (false) the carbohydrate recommendation.
1741
+ */
1742
+ carbRecommendationAnswer(carbRecommendationAnswer: boolean): void;
1743
+ /**
1744
+ * Callback function without arguments or return values.
1745
+ * To be called if the user decides to exit the recommendation screen without transferring any of the data to the logbook.
1746
+ * The unsaved logbook data shall be cleared.
1747
+ */
1748
+ closeCalculationCallback(): void;
1749
+ /**
1750
+ * Callback function without arguments or return values.
1751
+ * To be called if the user closes the recommendation screen by tapping the cancel button in the header.
1752
+ */
1753
+ exitCallback(): void;
1754
+ /**
1755
+ * Callback function without arguments or return values.
1756
+ * To be called if the user taps “Yes” when asked if they have taken insulin recently.
1757
+ * Should allow the user to enter when they injected insulin and how much.
1758
+ */
1759
+ onRecentInsulinYes(): void;
1760
+ /**
1761
+ * To be called when the “Transfer to Logbook” button is pressed.
1762
+ * @param carbs The suggested and entered amount of carbohydrates.
1763
+ * @param insulin The suggested and entered amount of insulin.
1764
+ * @param reminder The amount of time in hours until the user should get a reminder to measure their BGL again.
1765
+ * @param recommendationDate The date and time when the recommendation calculation was made.
1766
+ * @param mood The mood the user has selected
1767
+ */
1768
+ transferToLogbook(
1769
+ carbs: IResult,
1770
+ insulin: IResult,
1771
+ reminder: number,
1772
+ recommendationDate: Date,
1773
+ mood: Logbook.Enums.MoodEnum | null,
1774
+ ): void;
1775
+ /**
1776
+ * Callback function taking a single argument of type RecommendationError.
1777
+ * To be called in case a serious issue with the validity of input data is detected.
1778
+ * @param error The detected error.
1779
+ */
1780
+ onError(error: RecommendationError): void;
1781
+ /**
1782
+ * Callback function taking a single argument of type boolean.
1783
+ * To be called to hide the bottom navigation bar while displaying modal dialogs.
1784
+ * @param toggle Showing (true) or hiding (false) the bottom navigation bar on the calculation flow screens.
1785
+ */
1786
+ showBolusBar(toggle: boolean): void;
1787
+ /**
1788
+ * Callback function taking no arguments.
1789
+ * To be called if the user chooses to restart the calculation.
1790
+ */
1791
+ restartCalculation(): void;
1792
+ }
1793
+ &nbsp;
1794
+ interface IState {
1795
+ /** The time in hours in hours until a reminder notification will be sent to the user. If 0 then no notification will be sent. */
1796
+ remeasureTime: number;
1797
+ /**
1798
+ * If true then the user will see the insulin input field with their recommendation.
1799
+ * Otherwise, the user will be presented with a card that asks them whether they have taken bolus insulin within the last 4 hours
1800
+ */
1801
+ isRecommendationDisplayed: boolean;
1802
+ /** The suggested amount of insulin. */
1803
+ insulinRecommendation: number;
1804
+ /** The fraction by which the recommendation was multiplied to get the reduced amount */
1805
+ activityReduction: number | null;
1806
+ /** Indicates whether or not the insulin recommendation was limited by the maximum threshold. */
1807
+ wasLimited: boolean;
1808
+ /** The suggested amount of additional carbs. */
1809
+ carbRecommendation: number | null;
1810
+ /** The amount of IOB that was estimated during the recommendation calculation. */
1811
+ activeInsulin: number;
1812
+ /** The mood that is currently selected or null if no mood is selected. */
1813
+ selectedMood: Logbook.Enums.MoodEnum | null;
1814
+ /** The amount of carbs that are being shown in the additional carbs input field. */
1815
+ enteredCarbs: number | null;
1816
+ /** The current insulin value in the insulin recommendation/input field. */
1817
+ enteredInsulin: number | null;
1818
+ /** Indicates whether or not the modal for displaying warnings and other special messages should be visible. */
1819
+ recommendationModal: boolean;
1820
+ /**
1821
+ * Keeps track of whether or not the exit modal should be displayed.
1822
+ * The exit modal prompts the user to consider saving the calculation to a logbook entry before closing the recommendation screen.
1823
+ */
1824
+ showExitModal: boolean;
1825
+ /** Keeps track of whether or not a message about insulin limitation should be displayed. */
1826
+ showLimitationMessage: boolean;
1827
+ /** Keeps track of whether or not a message about the recommendation being too old should be displayed. */
1828
+ showTimeoutModal: boolean;
1829
+ }
1830
+ &nbsp;
1831
+ /**
1832
+ * The RecommendationScreen is the React component that passes relevant inputs to the recommendation calculation module and presents
1833
+ * the resulting recommendation along with related messages or warnings to the user.
1834
+ * The RecommendationScreen component accepts properties with the user’s settings/preferences and other inputs needed for calculating a recommendation.
1835
+ * @noInheritDoc
1836
+ */
1837
+ export default class RecommendationScreen extends React.Component&lt;IRecommendationProps, IState&gt; {
1838
+ /** Reference to the timer that prompts the user to make a new calculation after 15 minutes. */
1839
+ private readonly timer!: ReturnType&lt;typeof setTimeout&gt;;
1840
+ /**
1841
+ * The carbohydrate recommendation for the user.
1842
+ * This value is saved in a member variable because we want to store it unmodified if the logbook entry
1843
+ * gets saved regardless of what other changes were made on the recommendation screen.
1844
+ */
1845
+ private readonly suggestedCarbs!: number;
1846
+ /**
1847
+ * A guard against displaying wrong or dangerous information to the user.
1848
+ * If an error has occurred, this variable will be set to true and an empty placeholder will be rendered instead of the normal recommendation screen.
1849
+ */
1850
+ private readonly hasError: boolean = false;
1851
+ /** The timestamp when the current recommendation was made. For determining if the recommendation is too old and should be hidden from the user. */
1852
+ private readonly recommendationDate!: Date;
1853
+ /**
1854
+ * A reference to the screens scrollview allowing us to programmatically scroll the screen in the handleNoRecentInsulin() method.
1855
+ * The member is initiated without a value but will be set as soon as the component is being rendered.
1856
+ */
1857
+ private scrollView?: ScrollView;
1858
+ &nbsp;
1859
+ /**
1860
+ * Steps:
1861
+ * 1. Call the super() method with the props.
1862
+ * 2. Execute the following steps and if an exception is thrown, catch it, set the hasError member variable to true and call the onError callback prop with the caught exception as argument:
1863
+ * - Call the validateParams() method with the props as argument
1864
+ * - Set the recommendationDate member to the current date and time
1865
+ * - Set the language by using the language prop as argument for calling changeLanguage()
1866
+ * - Unpack recentBoluses from the calculatorParams prop.
1867
+ * - Use the calculatorParams prop as argument for calling calculateRecommendation() and unpack all of the resulting values.
1868
+ * - Copy the carbRecommendation to the suggestedCarbs member variable.
1869
+ * - Set the following state variables:
1870
+ * - Set remeasureTime to the return value from calling the getBGLevelRemeasurementReminder() method.
1871
+ * - Set isRecommendationDisplayed to be false if the length of recentBoluses is 0 or false otherwise.
1872
+ * - Set insulinRecommendation to be the bolus insulin recommendation rounded using roundValue().
1873
+ * - Set wasLimited to the wasLimited return value from calling calculateRecommendation() above.
1874
+ * - Set activityReduction to the reduction returned from the calculation result.
1875
+ * - Set carbRecommendation to the recommendation returned from the calculation result.
1876
+ * - Set activeInsulin to the estimation returned from the calculation result.
1877
+ * - Set enteredCarbs, enteredInsulin, selectedMood to null.
1878
+ * - Set recommendationModal to be true if wasLimited is true or if carbRecommendation after being rounded is truthy or if the return value from calling the getBGLevelAttentionMessage() method is truthy.
1879
+ * - Set showExitModal, showLimitationMessage, showTimeoutModal to be false.
1880
+ * 3. Start a 15 minute timer assigned to the timer member variable using the setTimeout() function. When the timer expires, call the showTimeoutModal() method.
1881
+ * @param props The data required to initialise the Recommendation Screen
1882
+ */
1883
+ constructor(props: IRecommendationProps) {
1884
+ super(props);
1885
+ try {
1886
+ validateParams(props);
1887
+ this.recommendationDate = new Date(global.Date.now());
1888
+ &nbsp;
1889
+ changeLanguage(props.language);
1890
+ const { recentBoluses } = props.calculatorParams;
1891
+ const {
1892
+ bolus,
1893
+ carbRecommendation,
1894
+ activityReduction,
1895
+ wasLimited,
1896
+ activeInsulin,
1897
+ } = Calculator.calculateRecommendation(props.calculatorParams);
1898
+ &nbsp;
1899
+ this.suggestedCarbs = carbRecommendation;
1900
+ &nbsp;
1901
+ this.state = {
1902
+ remeasureTime: this.getBGLevelRemeasurementReminder(),
1903
+ isRecommendationDisplayed: recentBoluses?.length !== 0,
1904
+ insulinRecommendation: Utils.roundValue(bolus, props.injectionMethod),
1905
+ wasLimited,
1906
+ activityReduction,
1907
+ carbRecommendation,
1908
+ activeInsulin,
1909
+ enteredCarbs: null,
1910
+ enteredInsulin: null,
1911
+ selectedMood: null,
1912
+ recommendationModal:
1913
+ wasLimited || !!Math.round(carbRecommendation) || !!this.getBGLevelAttentionMessage(),
1914
+ showExitModal: false,
1915
+ showLimitationMessage: false,
1916
+ showTimeoutModal: false,
1917
+ };
1918
+ &nbsp;
1919
+ this.timer = setTimeout(this.showTimeoutModal, Milliseconds.Minute * 15);
1920
+ } catch (error) {
1921
+ this.hasError = true;
1922
+ props.onError(error);
1923
+ }
1924
+ }
1925
+ &nbsp;
1926
+ /**
1927
+ * Called immediately after a component is mounted. Setting state here will trigger re-rendering.
1928
+ *
1929
+ * Steps:
1930
+ * 1. Create a listener to call the handleAppStateChange() method when the app state changes.
1931
+ */
1932
+ public componentDidMount(): void {
1933
+ AppState.addEventListener(`change`, this.handleAppStateChange);
1934
+ }
1935
+ &nbsp;
1936
+ /**
1937
+ * Called immediately before a component is destroyed.
1938
+ * Perform any necessary cleanup in this method, such as cancelled network requests, or cleaning up any DOM elements created in componentDidMount.
1939
+ *
1940
+ * Clear the 15 minute timer that was set in the constructor during initialisation so it doesn’t keep running and gets triggered after the recommendation screen was closed.
1941
+ *
1942
+ * Steps:
1943
+ * 1. Call clearTimeout on the timer member variable.
1944
+ * 2. Remove the listener for app state changes that was set by the componentDidMount() method.
1945
+ */
1946
+ public componentWillUnmount(): void {
1947
+ if (this.timer !== undefined) {
1948
+ clearTimeout(this.timer);
1949
+ }
1950
+ AppState.removeEventListener(`change`, this.handleAppStateChange);
1951
+ }
1952
+ &nbsp;
1953
+ /**
1954
+ * Steps:
1955
+ * 1. Evaluate a boolean called isOlderThan15Minutes to indicate whether the recommendationDate member variable represents a time more than 15 minutes ago.
1956
+ * 2. If nextAppState is ‘active’ and isOlderThan15Minutes is true then call the showTimeoutModal() method.
1957
+ * @param nextAppState The new state of the app.
1958
+ */
1959
+ public handleAppStateChange = (nextAppState: AppStateStatus): void =&gt; {
1960
+ const time = this.recommendationDate.getTime();
1961
+ const isOlderThan15Minutes = global.Date.now() - time &gt; Milliseconds.Minute * 15;
1962
+ if (nextAppState === `active` &amp;&amp; isOlderThan15Minutes) {
1963
+ this.showTimeoutModal();
1964
+ }
1965
+ };
1966
+ &nbsp;
1967
+ /**
1968
+ * Steps:
1969
+ * 1. Set the showTimeoutModal state variable to be true. Use a callback function to call the showBolusBar prop callback function with false as argument when the state has been updated.
1970
+ * */
1971
+ public showTimeoutModal = (): void =&gt; {
1972
+ this.setState({ showTimeoutModal: true }, (): void =&gt; this.props.showBolusBar(!this.state.showTimeoutModal));
1973
+ };
1974
+ &nbsp;
1975
+ /**
1976
+ * Make a new insulin calculation and set the result to be displayed to the user.
1977
+ *
1978
+ * Steps:
1979
+ * 1. Use calculatorParams as an argument for calling calculateRecommendation(). Unpack bolus, wasLimited, and activityReduction from the result.
1980
+ * 2. Set the following state variables:
1981
+ * - Set insulinRecommendation to the bolus rounded using the roundValue() function.
1982
+ * - Set enteredInsulin to be undefined.
1983
+ * - Set wasLimited to be the value returned from the insulin calculator.
1984
+ * - Set activityReduction to be the value returned from the insulin calculator.
1985
+ * - Set showLimitationMessage to be the wasLimited value returned from the insulin calculator.
1986
+ * @param calculatorParams The input values for the bolus calculator itself.
1987
+ */
1988
+ public recalculateInsulin = (calculatorParams: BolusCalculator.Types.IRecommendationParams): void =&gt; {
1989
+ const { bolus, wasLimited, activityReduction } = Calculator.calculateRecommendation(calculatorParams);
1990
+ this.setState({
1991
+ insulinRecommendation: Utils.roundValue(bolus, this.props.injectionMethod),
1992
+ enteredInsulin: null,
1993
+ wasLimited,
1994
+ activityReduction,
1995
+ showLimitationMessage: wasLimited,
1996
+ });
1997
+ };
1998
+ &nbsp;
1999
+ /**
2000
+ * Handle presses on the exit button in the header bar.
2001
+ *
2002
+ * Steps:
2003
+ * 1. If the insulin recommendation is being displayed (the isRecommendationDisplayed state variable is true):
2004
+ * - Set the showExitModal state variable to true. When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
2005
+ * 2. Else:
2006
+ * - Call the exitCallback prop callback function.
2007
+ */
2008
+ public onExit = (): void =&gt; {
2009
+ if (this.state.isRecommendationDisplayed) {
2010
+ this.setState({ showExitModal: true }, (): void =&gt; this.props.showBolusBar(!this.state.showExitModal));
2011
+ } else {
2012
+ this.props.exitCallback();
2013
+ }
2014
+ };
2015
+ &nbsp;
2016
+ /**
2017
+ * Hide the modal that shows attention messages.
2018
+ *
2019
+ * Steps:
2020
+ * 1. Set the recommendationModal state variable to false.
2021
+ */
2022
+ public hideAttentionModal = (): void =&gt; {
2023
+ this.setState({ recommendationModal: false });
2024
+ };
2025
+ &nbsp;
2026
+ /**
2027
+ * Hide the modal that shows attention messages.
2028
+ *
2029
+ * Steps:
2030
+ * 1. Set the showLimitationMessage state variable to false.
2031
+ */
2032
+ public hideLimitationMessage = (): void =&gt; {
2033
+ this.setState({ showLimitationMessage: false });
2034
+ };
2035
+ &nbsp;
2036
+ /**
2037
+ * Hide the exit modal. To be used when the user closes the modal directly or in some way exits the recommendation screen.
2038
+ *
2039
+ * Steps:
2040
+ * 1. Set the showExitModal state variable to false.
2041
+ * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
2042
+ */
2043
+ public hideExitModal = (): void =&gt; {
2044
+ this.setState({ showExitModal: false }, (): void =&gt; this.props.showBolusBar(!this.state.showExitModal));
2045
+ };
2046
+ &nbsp;
2047
+ /**
2048
+ * Hide the modal that warns the user that their recommendation is old.
2049
+ *
2050
+ * Steps:
2051
+ * 1. Set the showTimeoutModal state variable to false.
2052
+ * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showTimeoutModal state variable as argument.
2053
+ */
2054
+ public hideTimeoutModal = (): void =&gt; {
2055
+ this.setState({ showTimeoutModal: false }, (): void =&gt; this.props.showBolusBar(!this.state.showTimeoutModal));
2056
+ };
2057
+ &nbsp;
2058
+ /**
2059
+ * Used as a callback function for the Remeasure component to update the state when the remeasure time slider’s value changes.
2060
+ *
2061
+ * Steps:
2062
+ * 1. Set the remeasureTime state variable to the value of the remeasureTime argument.
2063
+ * @param remeasureTime The number of hours for which to wait before reminding the user to measure their BGL again. 0 indicates that the user should not be reminded.
2064
+ */
2065
+ public updateRemeasureTime = (remeasureTime: number): void =&gt; {
2066
+ this.setState({ remeasureTime });
2067
+ };
2068
+ &nbsp;
2069
+ /**
2070
+ * Handle what happens if the user taps “No” to the question about injecting insulin within the last 4 hours.
2071
+ * The card that prompts the user to answer if they have injected insulin within the last 4 hours shall be hidden and
2072
+ * the screen shall automatically be scrolled to the bottom so the user can see the now visible “Transfer to logbook” button.
2073
+ *
2074
+ * Steps:
2075
+ * 1. Set the isRecommendationDisplayed state variable to be true.
2076
+ * 2. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
2077
+ * When the time expires, call the scrollToEnd() method of the scrollView member, with the animated argument set to true.
2078
+ * This ensures that the scroll event happens after all other events that get queued to happen at the same time,
2079
+ * so all relevant elements are visible on the screen and the scroll happens reliably.
2080
+ */
2081
+ public handleNoRecentInsulin = (): void =&gt; {
2082
+ this.setState({ isRecommendationDisplayed: true }, (): void =&gt; {
2083
+ setTimeout((): void =&gt; {
2084
+ this.scrollView?.scrollToEnd({ animated: true });
2085
+ }, 0);
2086
+ });
2087
+ };
2088
+ &nbsp;
2089
+ /**
2090
+ * Handle what happens when the user changes the content of the additional carbohydrates input field.
2091
+ *
2092
+ * Steps:
2093
+ * 1. Set the enteredCarbs state variable to the value of the enteredCarbs argument.
2094
+ * 2. As a callback to the setState() method, define a new anonymous function that calls the recalculateInsulin() function using
2095
+ * a copy of the calculatorParams prop where the carbohydrates property has been overwritten to be
2096
+ * the sum of the carbohydrates property of the calculatorParams prop and the enteredCarbs argument.
2097
+ * @param enteredCarbs The amount of carbohydrates in grams that has been entered in the additional carbohydrates input field.
2098
+ */
2099
+ public updateCarbRecommendation = (enteredCarbs: number): void =&gt; {
2100
+ const providedCarbs = this.props.calculatorParams.carbohydrates;
2101
+ this.setState({ enteredCarbs }, (): void =&gt; {
2102
+ this.recalculateInsulin({ ...this.props.calculatorParams, carbohydrates: providedCarbs + enteredCarbs });
2103
+ });
2104
+ };
2105
+ &nbsp;
2106
+ /**
2107
+ * Handle what happens when the cross button by the additional carbohydrates button is tapped.
2108
+ *
2109
+ * Steps:
2110
+ * 1. Set both the enteredCarbs and the carbRecommendation state variables to null.
2111
+ * 2. As a callback to the setState() method, define a new anonymous function that calls the recalculateInsulin() function using a copy of the calculatorParams prop.
2112
+ */
2113
+ public removeCarbRecommendation = (): void =&gt; {
2114
+ this.setState({ enteredCarbs: null, carbRecommendation: null }, (): void =&gt;
2115
+ this.recalculateInsulin({ ...this.props.calculatorParams }),
2116
+ );
2117
+ };
2118
+ &nbsp;
2119
+ /**
2120
+ * Handle what happens when the user is recommended to eat additional carbohydrates but taps the decline button.
2121
+ *
2122
+ * Steps:
2123
+ * 1. Call the hideAttentionModal() method.
2124
+ * 2. Call the removeCarbRecommendation() method.
2125
+ * 3. Call the carbRecommendationAnswer() prop callback function with false as argument.
2126
+ */
2127
+ public declineCarbRecommendation = (): void =&gt; {
2128
+ this.hideAttentionModal();
2129
+ this.removeCarbRecommendation();
2130
+ this.props.carbRecommendationAnswer(false);
2131
+ };
2132
+ &nbsp;
2133
+ /**
2134
+ * Handle what happens when the user is recommended to eat additional carbohydrates and they tap the accept button.
2135
+ *
2136
+ * Steps:
2137
+ * 1. Call the hideAttentionModal() method.
2138
+ * 2. Call the carbRecommendationAnswer() prop callback function with true as argument.
2139
+ */
2140
+ public acceptCarbRecommendation = (): void =&gt; {
2141
+ this.hideAttentionModal();
2142
+ this.props.carbRecommendationAnswer(true);
2143
+ };
2144
+ &nbsp;
2145
+ /**
2146
+ * Handles what happens when the user hits the “close calculation”-button on the exit modal.
2147
+ *
2148
+ * Steps:
2149
+ * 1. If the showExitModal state variable is true then call the hideExitModal() method. Otherwise, call the hideTimeoutModal() method
2150
+ * 2. Call the closeCalculationCallback prop callback function.
2151
+ */
2152
+ public closeCalculation = (): void =&gt; {
2153
+ this.state.showExitModal ? this.hideExitModal() : this.hideTimeoutModal();
2154
+ this.props.closeCalculationCallback();
2155
+ };
2156
+ &nbsp;
2157
+ /**
2158
+ * Close the current recommendation and start a new bolus calculation.
2159
+ *
2160
+ * Steps:
2161
+ * 1. Call the hideTimeoutModal() method.
2162
+ * 2. Call the restartCalculation prop callback function.
2163
+ */
2164
+ public restartCalculation = (): void =&gt; {
2165
+ this.hideTimeoutModal();
2166
+ this.props.restartCalculation();
2167
+ };
2168
+ &nbsp;
2169
+ /**
2170
+ * Used as a callback function for the Emotion component to update the state when a mood icon is tapped.
2171
+ *
2172
+ * Steps:
2173
+ * 1. Set the selectedMood state variable to the value of the selectedMood argument.
2174
+ * @param selectedMood he mood that should be selected going forward or null if no mood should be selected.
2175
+ */
2176
+ public handleMoodSelected = (selectedMood: IState["selectedMood"]): void =&gt; {
2177
+ this.setState({ selectedMood });
2178
+ };
2179
+ &nbsp;
2180
+ /**
2181
+ * Handle what happens when the user changes the content of the insulin input field.
2182
+ *
2183
+ * Steps:
2184
+ * 1. Set the enteredInsulin state variable to the value of the enteredInsulin argument.
2185
+ * @param enteredInsulin The amount of insulin (in units) that has been entered in the insulin input field.
2186
+ */
2187
+ public updateInsulinRecommendation = (enteredInsulin: number): void =&gt; {
2188
+ this.setState({ enteredInsulin });
2189
+ };
2190
+ &nbsp;
2191
+ /**
2192
+ * Handle what happens when the “Transfer to Logbook” button is pressed.
2193
+ * Namely, the entered data should be saved in a logbook entry and the recommendation screen should be closed.
2194
+ *
2195
+ * Steps:
2196
+ * 1. Unpack the enteredCarbs, enteredInsulin, insulinRecommendation, remeasureTime, and showExitModal state variables
2197
+ * 2. Create an IResult object called carbs consisting of suggestedCarbs and enteredCarbs.
2198
+ * 3. Create an IResult object called Insulin consisting of insulinRecommendation and enteredInsulin.
2199
+ * 4. If showExitModal is true then call the hideExitModal() method. otherwise call the hideTimeoutModal() method.
2200
+ * 5. Call the transferToLogbook prop callback function with the following arguments:
2201
+ * - Set the carbs argument to the carbs IResult object.
2202
+ * - Set the insulin argument to the insulin IResult object.
2203
+ * - Set the reminder argument to the remeasureTime state variable.
2204
+ * - Set the recommendationDate argument to the recommendationDate member variable.
2205
+ */
2206
+ public handleTransfer = (): void =&gt; {
2207
+ const {
2208
+ enteredCarbs,
2209
+ enteredInsulin,
2210
+ insulinRecommendation,
2211
+ remeasureTime,
2212
+ showExitModal,
2213
+ selectedMood,
2214
+ } = this.state;
2215
+ const carbs: IResult = { suggested: this.suggestedCarbs, entered: enteredCarbs };
2216
+ const insulin: IResult = { suggested: insulinRecommendation, entered: enteredInsulin };
2217
+ &nbsp;
2218
+ showExitModal ? this.hideExitModal() : this.hideTimeoutModal();
2219
+ this.props.transferToLogbook(carbs, insulin, remeasureTime, this.recommendationDate, selectedMood);
2220
+ };
2221
+ &nbsp;
2222
+ /**
2223
+ * Get the attention message that should be displayed for the user to draw their attention to noteworthy circumstances regarding their current blood glucose level.
2224
+ *
2225
+ * Steps:
2226
+ * 1. Unpack calculatorParams and latestLogbookFrom6Hours from the props.
2227
+ * 2. Unpack currentBGL and activity from calculatorparams.
2228
+ * 3. Get bgLevel, the categorisation of the blood glucose level, by calling the getBGLevel() function with the currentBGL and latestLogbookFrom6Hours as arguments.
2229
+ * 4. Return the attention message that is returned when calling getAttentionMessage() using bgLevel and activity as arguments.
2230
+ * @returns A string describing what the user needs to be aware of regarding their current blood glucose level.
2231
+ * If there is nothing noteworthy, null will be returned instead.
2232
+ */
2233
+ public getBGLevelAttentionMessage = (): string | null =&gt; {
2234
+ const { calculatorParams, latestLogbookFrom6Hours } = this.props;
2235
+ const { currentBGL, activity } = calculatorParams;
2236
+ const bgLevel = getBGLevel(currentBGL, latestLogbookFrom6Hours);
2237
+ return getAttentionMessage(bgLevel, activity);
2238
+ };
2239
+ &nbsp;
2240
+ /**
2241
+ * Get the initial value for the remeasurement reminder time slider depending on the user’s entered information.
2242
+ *
2243
+ * Steps:
2244
+ * 1. Unpack calculatorParams, userReminder, and latestLogbookFrom6Hours from the props.
2245
+ * 2. Unpack currentBGL, activity, and carbohydrates from calculatorParams.
2246
+ * 3. Get bgLevel, the categorisation of the blood glucose level, by calling the getBGLevel() function with the currentBGL and latestLogbookFrom6Hours as arguments.
2247
+ * 4. Return the attention message that is returned when calling getReminder() using bgLevel, carbohydrates, userReminder, and activity as arguments.
2248
+ * @returns The time interval in hours that should be used as the initial value for the remeasurement reminder time slider.
2249
+ */
2250
+ public getBGLevelRemeasurementReminder = (): number =&gt; {
2251
+ const { calculatorParams, userReminder, latestLogbookFrom6Hours } = this.props;
2252
+ const { currentBGL, activity, carbohydrates } = calculatorParams;
2253
+ const bgLevel = getBGLevel(currentBGL, latestLogbookFrom6Hours);
2254
+ &nbsp;
2255
+ return getReminder(bgLevel, carbohydrates, userReminder, activity);
2256
+ };
2257
+ &nbsp;
2258
+ /**
2259
+ * Get the attention message that should be displayed to the user to let them know that the insulin recommendation that
2260
+ * is being displayed to them was limited by the maximum insulin threshold.
2261
+ *
2262
+ * Steps:
2263
+ * 1. Unpack the wasLimited and activityReduction state variables.
2264
+ * 2. Return the result from calling getLimitationMessage() with wasLimited and activityReduction as arguments.
2265
+ * @returns A message to inform the user how the insulin recommendation was limited. If there is no limitation attention message, null will be returned instead.
2266
+ */
2267
+ public getLimitationAttentionMessage = (): string | null =&gt; {
2268
+ const { wasLimited, activityReduction } = this.state;
2269
+ &nbsp;
2270
+ return getLimitationMessage(wasLimited, activityReduction);
2271
+ };
2272
+ &nbsp;
2273
+ /** Render a JSX element for displaying the insulin recommendation screen. */
2274
+ public render(): JSX.Element {
2275
+ if (this.hasError) {
2276
+ return &lt;View style={containerStyles.container} /&gt;;
2277
+ }
2278
+ &nbsp;
2279
+ const {
2280
+ activeInsulin,
2281
+ recommendationModal,
2282
+ carbRecommendation: carbRecommendationProp,
2283
+ enteredCarbs,
2284
+ enteredInsulin,
2285
+ insulinRecommendation,
2286
+ activityReduction,
2287
+ isRecommendationDisplayed,
2288
+ } = this.state;
2289
+ &nbsp;
2290
+ const {
2291
+ BloodGlucose: BGValueTestID,
2292
+ BloodKetone: BKValueTestID,
2293
+ ActiveInsulin: ActiveInsulinValueTestID,
2294
+ } = InfoBarTestIds.Value;
2295
+ const {
2296
+ ActiveInsulin: ActiveInsulinUnitTestID,
2297
+ BloodGlucose: BGUnitTestID,
2298
+ BloodKetone: BKUnitTestID,
2299
+ } = InfoBarTestIds.Unit;
2300
+ &nbsp;
2301
+ const carbRecommendation = carbRecommendationProp !== null ? Math.round(carbRecommendationProp) : null;
2302
+ const recommendedCarbs = enteredCarbs ?? carbRecommendation;
2303
+ &nbsp;
2304
+ const { calculatorParams, bloodGlucoseUnit, currentBKL, bloodKetoneUnit } = this.props;
2305
+ const { currentBGL, carbohydrates: providedCarbs } = calculatorParams;
2306
+ const displayedBGL = currentBGL ? Utils.displayedBGLValue(currentBGL, bloodGlucoseUnit) : null;
2307
+ const displayedBKL =
2308
+ currentBKL !== null &amp;&amp; bloodKetoneUnit ? Utils.displayedBKLValue(currentBKL, bloodKetoneUnit) : null;
2309
+ return (
2310
+ &lt;I18nProvider language={this.props.language} i18n={i18n}&gt;
2311
+ &lt;ScrollView
2312
+ testID={RecommendationScreenTestIds.RecommendationScrollView}
2313
+ style={containerStyles.container}
2314
+ ref={(view): void =&gt; {
2315
+ if (view !== null) {
2316
+ this.scrollView = view;
2317
+ }
2318
+ }}
2319
+ &gt;
2320
+ &lt;Header exitCallback={this.onExit} /&gt;
2321
+ &lt;InfoBars
2322
+ label={i18n._(t`Active Insulin`)}
2323
+ value={activeInsulin ? `${activeInsulin.toFixed(1)}` : null}
2324
+ unit={i18n._(t`units`)}
2325
+ showNullAsDash={false}
2326
+ testID={{ unitID: ActiveInsulinUnitTestID, valueID: ActiveInsulinValueTestID }}
2327
+ /&gt;
2328
+ &lt;InfoBars
2329
+ label={i18n._(t`Blood Glucose Level`)}
2330
+ value={displayedBGL}
2331
+ unit={this.props.bloodGlucoseUnit}
2332
+ showNullAsDash={true}
2333
+ testID={{ unitID: BGUnitTestID, valueID: BGValueTestID }}
2334
+ /&gt;
2335
+ &lt;InfoBars
2336
+ label={i18n._(t`Blood Ketone Level`)}
2337
+ value={displayedBKL}
2338
+ unit={this.props.bloodKetoneUnit}
2339
+ showNullAsDash={true}
2340
+ testID={{ unitID: BKUnitTestID, valueID: BKValueTestID }}
2341
+ /&gt;
2342
+ &lt;View style={containerStyles.calcContainer}&gt;
2343
+ &lt;View style={containerStyles.calcMargin}&gt;
2344
+ &lt;View
2345
+ style={[
2346
+ containerStyles.calcBorder,
2347
+ {
2348
+ borderColor: recommendedCarbs ? BORDER_COLOUR_TEAL : BORDER_COLOUR_GREY,
2349
+ },
2350
+ ]}
2351
+ &gt;
2352
+ &lt;RecommendedCarbs
2353
+ enteredCarbs={`${providedCarbs}`}
2354
+ changedRecommendedCarbs={this.updateCarbRecommendation}
2355
+ recommendedCarbs={`${recommendedCarbs}`}
2356
+ removeRecommendedCarbs={this.removeCarbRecommendation}
2357
+ /&gt;
2358
+ &lt;/View&gt;
2359
+ &lt;/View&gt;
2360
+ &lt;/View&gt;
2361
+ {this.props.calculatorParams.activity &amp;&amp; this.props.activityDisplayProps ? (
2362
+ &lt;Activity
2363
+ activity={this.props.calculatorParams.activity}
2364
+ activityType={this.props.activityDisplayProps.activityType}
2365
+ activityTitle={this.props.activityDisplayProps.activityTitle}
2366
+ activityReduction={this.state.activityReduction}
2367
+ /&gt;
2368
+ ) : null}
2369
+ &lt;Remeasure onSliderChange={this.updateRemeasureTime} remeasureTime={this.state.remeasureTime} /&gt;
2370
+ {!this.state.isRecommendationDisplayed ? (
2371
+ &lt;RecentInsulin
2372
+ onRecentInsulinYes={this.props.onRecentInsulinYes}
2373
+ onRecentInsulinNo={this.handleNoRecentInsulin}
2374
+ /&gt;
2375
+ ) : (
2376
+ &lt;RecommendedInsulin
2377
+ injectionMethod={this.props.injectionMethod}
2378
+ insulinRecommendation={insulinRecommendation}
2379
+ enteredInsulin={enteredInsulin}
2380
+ activityReduction={activityReduction}
2381
+ updateRecommendedInsulin={this.updateInsulinRecommendation}
2382
+ /&gt;
2383
+ )}
2384
+ &lt;Emotion moodSelected={this.handleMoodSelected} currentMood={this.state.selectedMood} /&gt;
2385
+ &lt;TransferToLogbook visible={isRecommendationDisplayed} transfer={this.handleTransfer} /&gt;
2386
+ &lt;RecommendationModal
2387
+ isVisible={recommendationModal}
2388
+ suggestedCarbohydrates={carbRecommendationProp}
2389
+ attentionMessage={this.getBGLevelAttentionMessage()}
2390
+ limitationMessage={this.getLimitationAttentionMessage()}
2391
+ onClickOkButton={this.hideAttentionModal}
2392
+ onAcceptCarbohydrates={this.acceptCarbRecommendation}
2393
+ onDeclineCarbohydrates={this.declineCarbRecommendation}
2394
+ /&gt;
2395
+ &lt;/ScrollView&gt;
2396
+ {this.state.showExitModal ? (
2397
+ &lt;TwoOptionModal
2398
+ title={i18n._(t`Save data before closing?`)}
2399
+ message={i18n._(t`Your saved data will be used for future calculations.`)}
2400
+ textFirstOption={i18n._(t`Save to logbook`)}
2401
+ textSecondOption={i18n._(t`Close calculation`)}
2402
+ isCancelable={true}
2403
+ rowAsButtonLayout={true}
2404
+ firstOption={this.handleTransfer}
2405
+ secondOption={this.closeCalculation}
2406
+ onClose={this.hideExitModal}
2407
+ /&gt;
2408
+ ) : null}
2409
+ {this.state.showLimitationMessage ? (
2410
+ &lt;View style={modalStyle.container}&gt;
2411
+ &lt;LimitationMessage
2412
+ limitationMessage={this.getLimitationAttentionMessage()}
2413
+ onPressNextButton={this.hideLimitationMessage}
2414
+ /&gt;
2415
+ &lt;/View&gt;
2416
+ ) : null}
2417
+ {this.state.showTimeoutModal ? (
2418
+ this.state.isRecommendationDisplayed ? (
2419
+ &lt;TwoOptionModal
2420
+ title={Messages.TimeoutPrompTitle()}
2421
+ message={Messages.TimeoutRecommendationVisible(this.recommendationDate)}
2422
+ textFirstOption={i18n._(t`Yes, save to logbook`)}
2423
+ textSecondOption={i18n._(t`No, return to dashboard`)}
2424
+ rowAsButtonLayout={false}
2425
+ firstOption={this.handleTransfer}
2426
+ secondOption={this.closeCalculation}
2427
+ /&gt;
2428
+ ) : (
2429
+ &lt;TwoOptionModal
2430
+ title={Messages.TimeoutPrompTitle()}
2431
+ message={Messages.TimeoutRecommendationNotVisible()}
2432
+ textFirstOption={i18n._(t`Start new calculation`)}
2433
+ textSecondOption={i18n._(t`Return to dashboard`)}
2434
+ rowAsButtonLayout={false}
2435
+ firstOption={this.restartCalculation}
2436
+ secondOption={this.closeCalculation}
2437
+ /&gt;
2438
+ )
2439
+ ) : null}
2440
+ &lt;/I18nProvider&gt;
2441
+ );
2442
+ }
2443
+ }
2444
+ &nbsp;
2445
+ const containerStyles = StyleSheet.create({
2446
+ container: {
2447
+ flex: 1,
2448
+ backgroundColor: BACKGROUND_COLOUR_PURPLE,
2449
+ },
2450
+ calcContainer: {
2451
+ flex: 1,
2452
+ },
2453
+ calcMargin: {
2454
+ flex: 1,
2455
+ marginBottom: 0,
2456
+ margin: `3%`,
2457
+ },
2458
+ calcBorder: {
2459
+ ...infoStyles.border,
2460
+ borderColor: BORDER_COLOUR_TEAL,
2461
+ },
2462
+ });
2463
+ &nbsp;</pre></td></tr></table></pre>
2464
+
2465
+ <div class='push'></div><!-- for sticky footer -->
2466
+ </div><!-- /wrapper -->
2467
+ <div class='footer quiet pad2 space-top1 center small'>
2468
+ Code coverage generated by
2469
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
2470
+ at Thu Sep 23 2021 09:47:17 GMT+0000 (Coordinated Universal Time)
2471
+ </div>
2472
+ </div>
2473
+ <script src="../prettify.js"></script>
2474
+ <script>
2475
+ window.onload = function () {
2476
+ prettyPrint();
2477
+ };
2478
+ </script>
2479
+ <script src="../sorter.js"></script>
2480
+ <script src="../block-navigation.js"></script>
2481
+ </body>
2482
+ </html>
2483
+