@sebbo2002/node-pyatv 4.3.4-develop.4 → 5.0.0-develop.1

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 (84) hide show
  1. package/.mocharc.yml +3 -3
  2. package/CHANGELOG.md +12 -0
  3. package/dist/bin/check.js +2 -6
  4. package/dist/bin/check.js.map +1 -1
  5. package/dist/examples/push.js +2 -6
  6. package/dist/examples/push.js.map +1 -1
  7. package/dist/lib/device-event.d.ts +2 -2
  8. package/dist/lib/device-event.js +1 -3
  9. package/dist/lib/device-event.js.map +1 -1
  10. package/dist/lib/device-events.d.ts +2 -2
  11. package/dist/lib/device-events.js +38 -40
  12. package/dist/lib/device-events.js.map +1 -1
  13. package/dist/lib/device.d.ts +2 -2
  14. package/dist/lib/device.js +44 -46
  15. package/dist/lib/device.js.map +1 -1
  16. package/dist/lib/fake-spawn.js +7 -14
  17. package/dist/lib/fake-spawn.js.map +1 -1
  18. package/dist/lib/index.d.ts +5 -5
  19. package/dist/lib/index.js +5 -22
  20. package/dist/lib/index.js.map +1 -1
  21. package/dist/lib/instance.d.ts +2 -2
  22. package/dist/lib/instance.js +27 -27
  23. package/dist/lib/instance.js.map +1 -1
  24. package/dist/lib/tools.d.ts +1 -1
  25. package/dist/lib/tools.js +24 -34
  26. package/dist/lib/tools.js.map +1 -1
  27. package/dist/lib/types.js +20 -23
  28. package/dist/lib/types.js.map +1 -1
  29. package/docs/coverage/cobertura-coverage.xml +1 -1528
  30. package/docs/coverage/index.html +20 -125
  31. package/docs/coverage/index.ts.html +27 -27
  32. package/docs/reference/assets/highlight.css +7 -21
  33. package/docs/reference/assets/main.js +4 -2
  34. package/docs/reference/assets/search.js +1 -1
  35. package/docs/reference/assets/style.css +424 -538
  36. package/docs/reference/classes/NodePyATVDevice.html +1059 -125
  37. package/docs/reference/classes/NodePyATVDeviceEvent.html +111 -10
  38. package/docs/reference/classes/default.html +211 -34
  39. package/docs/reference/enums/NodePyATVDeviceState.html +93 -1
  40. package/docs/reference/enums/NodePyATVKeys.html +212 -1
  41. package/docs/reference/enums/NodePyATVListenerState.html +79 -1
  42. package/docs/reference/enums/NodePyATVMediaType.html +79 -1
  43. package/docs/reference/enums/NodePyATVPowerState.html +65 -1
  44. package/docs/reference/enums/NodePyATVProtocol.html +79 -1
  45. package/docs/reference/enums/NodePyATVRepeatState.html +72 -1
  46. package/docs/reference/enums/NodePyATVShuffleState.html +72 -1
  47. package/docs/reference/index.html +58 -53
  48. package/docs/reference/interfaces/NodePyATVDeviceOptions.html +194 -1
  49. package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +190 -1
  50. package/docs/reference/interfaces/NodePyATVFindOptions.html +120 -1
  51. package/docs/reference/interfaces/NodePyATVGetStateOptions.html +62 -1
  52. package/docs/reference/interfaces/NodePyATVInstanceOptions.html +110 -1
  53. package/docs/reference/interfaces/NodePyATVState.html +160 -1
  54. package/docs/reference/interfaces/NodePyATVVersionResponse.html +69 -1
  55. package/docs/reference/modules.html +89 -1
  56. package/docs/reference/types/NodePyATVEventValueType.html +61 -0
  57. package/docs/tests/index.html +1 -1
  58. package/docs/tests/mochawesome.json +733 -771
  59. package/package.json +16 -13
  60. package/release.config.cjs +56 -0
  61. package/src/bin/check.ts +1 -1
  62. package/src/examples/push.ts +1 -1
  63. package/src/lib/device-event.ts +2 -2
  64. package/src/lib/device-events.ts +4 -4
  65. package/src/lib/device.ts +3 -3
  66. package/src/lib/index.ts +5 -5
  67. package/src/lib/instance.ts +23 -20
  68. package/src/lib/tools.ts +1 -1
  69. package/test/device-event.ts +2 -2
  70. package/test/device-events.ts +2 -2
  71. package/test/device.ts +4 -4
  72. package/test/instance.ts +44 -37
  73. package/test/tools.ts +2 -2
  74. package/tsconfig.json +1 -1
  75. package/docs/coverage/device-event.ts.html +0 -251
  76. package/docs/coverage/device-events.ts.html +0 -956
  77. package/docs/coverage/device.ts.html +0 -2210
  78. package/docs/coverage/fake-spawn.ts.html +0 -443
  79. package/docs/coverage/instance.ts.html +0 -686
  80. package/docs/coverage/tools.ts.html +0 -1217
  81. package/docs/coverage/types.ts.html +0 -674
  82. package/docs/reference/assets/icons.css +0 -1043
  83. package/docs/reference/assets/icons.png +0 -0
  84. package/docs/reference/assets/icons@2x.png +0 -0
@@ -1,1217 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for tools.ts</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> tools.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">99.44% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>179/180</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">90.09% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>100/111</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'>24/24</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">99.4% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>166/167</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-yes">1x</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">1x</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">1x</span>
457
- <span class="cline-any cline-yes">109x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">109x</span>
460
- <span class="cline-any cline-yes">111x</span>
461
- <span class="cline-any cline-yes">111x</span>
462
- <span class="cline-any cline-yes">109x</span>
463
- <span class="cline-any cline-yes">109x</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">109x</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">1x</span>
471
- <span class="cline-any cline-yes">116x</span>
472
- <span class="cline-any cline-yes">96x</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-yes">1x</span>
477
- <span class="cline-any cline-yes">2142x</span>
478
- <span class="cline-any cline-yes">9x</span>
479
- <span class="cline-any cline-yes">9x</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">9x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">9x</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">96x</span>
499
- <span class="cline-any cline-yes">4x</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">92x</span>
502
- <span class="cline-any cline-yes">3x</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-yes">89x</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-yes">92x</span>
516
- <span class="cline-any cline-yes">92x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">92x</span>
519
- <span class="cline-any cline-yes">92x</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-yes">92x</span>
525
- <span class="cline-any cline-yes">92x</span>
526
- <span class="cline-any cline-yes">92x</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">92x</span>
530
- <span class="cline-any cline-yes">92x</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-yes">92x</span>
533
- <span class="cline-any cline-yes">92x</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">92x</span>
536
- <span class="cline-any cline-yes">92x</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">92x</span>
540
- <span class="cline-any cline-yes">92x</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">92x</span>
544
- <span class="cline-any cline-yes">92x</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-yes">92x</span>
547
- <span class="cline-any cline-yes">92x</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">92x</span>
551
- <span class="cline-any cline-yes">92x</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">92x</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">1x</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-yes">73x</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">73x</span>
569
- <span class="cline-any cline-yes">73x</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-yes">73x</span>
573
- <span class="cline-any cline-yes">73x</span>
574
- <span class="cline-any cline-yes">73x</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-yes">73x</span>
578
- <span class="cline-any cline-yes">73x</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-yes">73x</span>
581
- <span class="cline-any cline-yes">73x</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">73x</span>
584
- <span class="cline-any cline-yes">73x</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-yes">73x</span>
588
- <span class="cline-any cline-yes">73x</span>
589
- <span class="cline-any cline-yes">73x</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-yes">73x</span>
593
- <span class="cline-any cline-yes">73x</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">73x</span>
596
- <span class="cline-any cline-yes">73x</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-yes">73x</span>
600
- <span class="cline-any cline-yes">73x</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-yes">68x</span>
604
- <span class="cline-any cline-yes">2x</span>
605
- <span class="cline-any cline-yes">2x</span>
606
- <span class="cline-any cline-yes">2x</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">66x</span>
609
- <span class="cline-any cline-yes">51x</span>
610
- <span class="cline-any cline-yes">51x</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-yes">1x</span>
614
- <span class="cline-any cline-yes">1x</span>
615
- <span class="cline-any cline-yes">1x</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-yes">15x</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">78x</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-yes">78x</span>
626
- <span class="cline-any cline-yes">1x</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">77x</span>
629
- <span class="cline-any cline-yes">66x</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">78x</span>
632
- <span class="cline-any cline-yes">1x</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-yes">78x</span>
635
- <span class="cline-any cline-yes">1x</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-yes">78x</span>
638
- <span class="cline-any cline-yes">1x</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-yes">78x</span>
641
- <span class="cline-any cline-yes">1x</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">78x</span>
644
- <span class="cline-any cline-yes">1x</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-yes">78x</span>
647
- <span class="cline-any cline-yes">1x</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-yes">78x</span>
650
- <span class="cline-any cline-yes">1x</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">78x</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">861x</span>
664
- <span class="cline-any cline-yes">35x</span>
665
- <span class="cline-any cline-yes">35x</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-yes">826x</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">1x</span>
672
- <span class="cline-any cline-yes">1771x</span>
673
- <span class="cline-any cline-yes">127x</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-yes">127x</span>
691
- <span class="cline-any cline-yes">1x</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-yes">126x</span>
694
- <span class="cline-any cline-yes">3x</span>
695
- <span class="cline-any cline-yes">3x</span>
696
- <span class="cline-any cline-yes">3x</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-yes">3x</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-yes">123x</span>
704
- <span class="cline-any cline-yes">9x</span>
705
- <span class="cline-any cline-yes">9x</span>
706
- <span class="cline-any cline-yes">8x</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">1x</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-yes">114x</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-yes">123x</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-yes">123x</span>
721
- <span class="cline-any cline-yes">24x</span>
722
- <span class="cline-any cline-yes">6x</span>
723
- <span class="cline-any cline-yes">5x</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-yes">1x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-yes">117x</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-yes">123x</span>
734
- <span class="cline-any cline-yes">36x</span>
735
- <span class="cline-any cline-yes">6x</span>
736
- <span class="cline-any cline-yes">5x</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-yes">117x</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-yes">123x</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-yes">123x</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">123x</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-yes">123x</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-yes">123x</span>
759
- <span class="cline-any cline-yes">5x</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-yes">118x</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">123x</span>
767
- <span class="cline-any cline-yes">5x</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-yes">118x</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-yes">123x</span>
775
- <span class="cline-any cline-yes">18x</span>
776
- <span class="cline-any cline-yes">6x</span>
777
- <span class="cline-any cline-yes">5x</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-yes">1x</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">117x</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">123x</span>
788
- <span class="cline-any cline-yes">18x</span>
789
- <span class="cline-any cline-yes">6x</span>
790
- <span class="cline-any cline-yes">5x</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-yes">1x</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-yes">117x</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-yes">123x</span>
801
- <span class="cline-any cline-yes">123x</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">123x</span>
805
- <span class="cline-any cline-yes">2x</span>
806
- <span class="cline-any cline-yes">1x</span>
807
- <span class="cline-any cline-yes">1x</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-no">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-yes">122x</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">123x</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
819
- &nbsp;
820
- import {
821
- NodePyATVDeviceState,
822
- NodePyATVExecutableType,
823
- NodePyATVFindAndInstanceOptions,
824
- NodePyATVInstanceOptions,
825
- NodePyATVInternalState,
826
- NodePyATVMediaType, NodePyATVPowerState, NodePyATVRepeatState, NodePyATVShuffleState,
827
- NodePyATVState
828
- } from './types';
829
- &nbsp;
830
- import {ChildProcess, spawn, SpawnOptions} from 'child_process';
831
- import {FakeChildProcess} from './fake-spawn';
832
- &nbsp;
833
- const requestIds: string[] = [];
834
- &nbsp;
835
- export function addRequestId(): string {
836
- let id = '?';
837
- &nbsp;
838
- for (let i = 0; i &lt; 1000; i += 1) {
839
- id = Math.round(Math.random() * (i + 6) * 36).toString(36).toUpperCase();
840
- if (!requestIds.includes(id)) {
841
- requestIds.push(id);
842
- break;
843
- }
844
- }
845
- &nbsp;
846
- return id;
847
- }
848
- &nbsp;
849
- export function removeRequestId(id: string | undefined): void {
850
- if (id &amp;&amp; requestIds.includes(id)) {
851
- requestIds.splice(requestIds.indexOf(id), 1);
852
- }
853
- }
854
- &nbsp;
855
- export function debug(id: string, message: string, options: NodePyATVInstanceOptions): void {
856
- if (options.debug) {
857
- const log = typeof options.debug === 'function' ? options.debug : console.log;
858
- const enableColors = !process.env.NO_COLOR &amp;&amp; !options.noColors;
859
- &nbsp;
860
- const parts = [
861
- enableColors ? '\x1b[0m' : '', // Color Reset
862
- enableColors ? '\x1b[90m' : '', // Grey
863
- '[node-pyatv][',
864
- enableColors ? '\x1b[37m' : '', // Light Grey
865
- id,
866
- enableColors ? '\x1b[90m' : '', // Grey
867
- '] ',
868
- enableColors ? '\x1b[0m' : '', // Color Reset
869
- message
870
- ];
871
- &nbsp;
872
- log.apply(null, [parts.join('')]);
873
- }
874
- }
875
- &nbsp;
876
- export function getExecutable(executable: NodePyATVExecutableType, options: NodePyATVInstanceOptions): string {
877
- if (executable === NodePyATVExecutableType.atvremote &amp;&amp; typeof options.atvremotePath === 'string') {
878
- return options.atvremotePath;
879
- }
880
- else if (executable === NodePyATVExecutableType.atvscript &amp;&amp; typeof options.atvscriptPath === 'string') {
881
- return options.atvscriptPath;
882
- }
883
- else {
884
- return executable;
885
- }
886
- }
887
- &nbsp;
888
- export function execute(
889
- requestId: string,
890
- executableType: NodePyATVExecutableType,
891
- parameters: string[],
892
- options: NodePyATVInstanceOptions
893
- ): ChildProcess | FakeChildProcess {
894
- const executable = getExecutable(executableType, options);
895
- const mySpawn: ((command: string, args: Array&lt;string&gt;, options: SpawnOptions) =&gt; (ChildProcess | FakeChildProcess)) = typeof options.spawn === 'function' ? options.spawn : spawn;
896
- &nbsp;
897
- debug(requestId, `${executable} ${parameters.join(' ')}`, options);
898
- const child = mySpawn(executable, parameters, {
899
- env: process.env
900
- });
901
- &nbsp;
902
- /* eslint-disable @typescript-eslint/no-explicit-any*/
903
- const onStdOut = (data: any) =&gt; debug(requestId, `stdout: ${String(data).trim()}`, options);
904
- const onStdErr = (data: any) =&gt; debug(requestId, `stderr: ${String(data).trim()}`, options);
905
- const onError = (data: any) =&gt; debug(requestId, `error: ${String(data).trim()}`, options);
906
- /* eslint-enable @typescript-eslint/no-explicit-any*/
907
- &nbsp;
908
- const onClose = (code: number) =&gt; {
909
- debug(requestId, `${executable} exited with code: ${code}`, options);
910
- &nbsp;
911
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stdout) {
912
- child.stdout.off('data', onStdOut);
913
- }
914
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stderr) {
915
- child.stderr.off('data', onStdErr);
916
- }
917
- &nbsp;
918
- child.off('error', onError);
919
- child.off('close', onClose);
920
- };
921
- &nbsp;
922
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stdout) {
923
- child.stdout.on('data', onStdOut);
924
- }
925
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stderr) {
926
- child.stderr.on('data', onStdErr);
927
- }
928
- &nbsp;
929
- child.on('error', onError);
930
- child.on('close', onClose);
931
- &nbsp;
932
- return child;
933
- }
934
- &nbsp;
935
- export async function request(
936
- requestId: string,
937
- executableType: NodePyATVExecutableType,
938
- parameters: string[],
939
- options: NodePyATVInstanceOptions
940
- ): Promise&lt;string|Record&lt;string,unknown&gt;&gt; {
941
- const result = {
942
- stdout: '',
943
- stderr: '',
944
- code: 0
945
- };
946
- &nbsp;
947
- await new Promise((resolve, reject) =&gt; {
948
- const pyatv = execute(requestId, executableType, parameters, options);
949
- &nbsp;
950
- /* eslint-disable @typescript-eslint/no-explicit-any*/
951
- const onStdOut = (data: any) =&gt; result.stdout += String(data).trim();
952
- const onStdErr = (data: any) =&gt; result.stderr += String(data).trim();
953
- const onError = (data: any) =&gt; reject(data instanceof Error ? data : <span class="branch-1 cbranch-no" title="branch not covered" >new Error(String(data)))</span>;
954
- /* eslint-enable @typescript-eslint/no-explicit-any*/
955
- &nbsp;
956
- const onClose: (code: number) =&gt; void = (code: number) =&gt; {
957
- result.code = code;
958
- &nbsp;
959
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stdout) {
960
- pyatv.stdout.off('data', onStdOut);
961
- }
962
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stderr) {
963
- pyatv.stderr.off('data', onStdErr);
964
- }
965
- &nbsp;
966
- pyatv.off('error', onError);
967
- pyatv.off('close', onClose);
968
- resolve(undefined);
969
- };
970
- &nbsp;
971
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stdout) {
972
- pyatv.stdout.on('data', onStdOut);
973
- }
974
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stderr) {
975
- pyatv.stderr.on('data', onStdErr);
976
- }
977
- &nbsp;
978
- pyatv.on('error', onError);
979
- pyatv.on('close', onClose);
980
- });
981
- &nbsp;
982
- if (result.stderr.length &gt; 0) {
983
- const msg = `Unable to execute request ${requestId}: ${result.stderr}`;
984
- debug(requestId, msg, options);
985
- throw new Error(msg);
986
- }
987
- if (executableType === NodePyATVExecutableType.atvscript) {
988
- try {
989
- return JSON.parse(result.stdout);
990
- }
991
- catch (error) {
992
- const msg = `Unable to parse result ${requestId} json: ${error}`;
993
- debug(requestId, msg, options);
994
- throw new Error(msg);
995
- }
996
- }
997
- &nbsp;
998
- return result.stdout;
999
- }
1000
- &nbsp;
1001
- export function getParamters(options: NodePyATVFindAndInstanceOptions = {}): string[] {
1002
- const parameters: string[] = [];
1003
- &nbsp;
1004
- if (options.hosts) {
1005
- parameters.push('-s', options.hosts.join(','));
1006
- }
1007
- else if (options.host) {
1008
- parameters.push('-s', options.host);
1009
- }
1010
- if (options.id) {
1011
- parameters.push('-i', options.id);
1012
- }
1013
- if (options.protocol) {
1014
- parameters.push('--protocol', options.protocol);
1015
- }
1016
- if (options.dmapCredentials) {
1017
- parameters.push('--dmap-credentials', options.dmapCredentials);
1018
- }
1019
- if (options.mrpCredentials) {
1020
- parameters.push('--mrp-credentials', options.mrpCredentials);
1021
- }
1022
- if (options.airplayCredentials) {
1023
- parameters.push('--airplay-credentials', options.airplayCredentials);
1024
- }
1025
- if (options.companionCredentials) {
1026
- parameters.push('--companion-credentials', options.companionCredentials);
1027
- }
1028
- if (options.raopCredentials) {
1029
- parameters.push('--raop-credentials', options.raopCredentials);
1030
- }
1031
- &nbsp;
1032
- return parameters;
1033
- }
1034
- &nbsp;
1035
- function parseStateStringAttr(
1036
- input: NodePyATVInternalState,
1037
- output: NodePyATVState,
1038
- inputAttr: ('hash' | 'title' | 'album' | 'artist' | 'genre' | 'app' | 'app_id'),
1039
- outputAttr: ('hash' | 'title' | 'album' | 'artist' | 'genre' | 'app' | 'appId'),
1040
- d: (msg: string) =&gt; void
1041
- ): void {
1042
- if (typeof input[inputAttr] === 'string') {
1043
- output[outputAttr] = input[inputAttr] as string;
1044
- return;
1045
- }
1046
- &nbsp;
1047
- d(`No ${outputAttr} value found in input (${JSON.stringify(input)})`);
1048
- }
1049
- &nbsp;
1050
- export function parseState(input: NodePyATVInternalState, id: string, options: NodePyATVInstanceOptions): NodePyATVState {
1051
- const d = (msg: string) =&gt; debug(id, msg, options);
1052
- const result: NodePyATVState = {
1053
- dateTime: null,
1054
- hash: null,
1055
- mediaType: null,
1056
- deviceState: null,
1057
- title: null,
1058
- artist: null,
1059
- album: null,
1060
- genre: null,
1061
- totalTime: null,
1062
- position: null,
1063
- shuffle: null,
1064
- repeat: null,
1065
- app: null,
1066
- appId: null,
1067
- powerState: null
1068
- };
1069
- if (!input || typeof input !== 'object') {
1070
- return result;
1071
- }
1072
- if(input.exception) {
1073
- let errorStr = 'Got pyatv Error: ' + input.exception;
1074
- <span class="missing-if-branch" title="else path not taken" >E</span>if(input.stacktrace) {
1075
- errorStr += '\n\npyatv Stacktrace:\n' + input.stacktrace;
1076
- }
1077
- &nbsp;
1078
- throw new Error(errorStr);
1079
- }
1080
- &nbsp;
1081
- // datetime
1082
- if (typeof input.datetime === 'string') {
1083
- const date = new Date(input.datetime);
1084
- if (!isNaN(date.getTime())) {
1085
- result.dateTime = date;
1086
- }
1087
- else {
1088
- d(`Invalid datetime value ${input.datetime}, ignore attribute`);
1089
- }
1090
- }
1091
- else {
1092
- d(`No datetime value found in input (${JSON.stringify(input)})`);
1093
- }
1094
- &nbsp;
1095
- // hash
1096
- parseStateStringAttr(input, result, 'hash', 'hash', d);
1097
- &nbsp;
1098
- // mediaType
1099
- if(typeof input.media_type === 'string') {
1100
- const validValues = Object.keys(NodePyATVMediaType).map(o =&gt; String(o));
1101
- if (validValues.includes(input.media_type)) {
1102
- result.mediaType = NodePyATVMediaType[input.media_type as NodePyATVMediaType];
1103
- }
1104
- else {
1105
- d(`Unsupported mediaType value ${input.media_type}, ignore attribute`);
1106
- }
1107
- } else {
1108
- d(`No mediaType value found in input (${JSON.stringify(input)})`);
1109
- }
1110
- &nbsp;
1111
- // deviceState
1112
- if(typeof input.device_state === 'string') {
1113
- const validValues = Object.keys(NodePyATVDeviceState).map(o =&gt; String(o));
1114
- if (validValues.includes(input.device_state)) {
1115
- result.deviceState = NodePyATVDeviceState[input.device_state as NodePyATVDeviceState];
1116
- }
1117
- else {
1118
- d(`Unsupported deviceState value ${input.device_state}, ignore attribute`);
1119
- }
1120
- } else {
1121
- d(`No deviceState value found in input (${JSON.stringify(input)})`);
1122
- }
1123
- &nbsp;
1124
- // title
1125
- parseStateStringAttr(input, result, 'title', 'title', d);
1126
- &nbsp;
1127
- // artist
1128
- parseStateStringAttr(input, result, 'artist', 'artist', d);
1129
- &nbsp;
1130
- // album
1131
- parseStateStringAttr(input, result, 'album', 'album', d);
1132
- &nbsp;
1133
- // genre
1134
- parseStateStringAttr(input, result, 'genre', 'genre', d);
1135
- &nbsp;
1136
- // totalTime
1137
- if (typeof input.total_time === 'number') {
1138
- result.totalTime = input.total_time;
1139
- }
1140
- else {
1141
- d(`No totalTime value found in input (${JSON.stringify(input)})`);
1142
- }
1143
- &nbsp;
1144
- // position
1145
- if (typeof input.position === 'number') {
1146
- result.position = input.position;
1147
- }
1148
- else {
1149
- d(`No position value found in input (${JSON.stringify(input)})`);
1150
- }
1151
- &nbsp;
1152
- // shuffle
1153
- if(typeof input.shuffle === 'string') {
1154
- const validValues = Object.keys(NodePyATVShuffleState).map(o =&gt; String(o));
1155
- if (validValues.includes(input.shuffle)) {
1156
- result.shuffle = NodePyATVShuffleState[input.shuffle as NodePyATVShuffleState];
1157
- }
1158
- else {
1159
- d(`Unsupported shuffle value ${input.shuffle}, ignore attribute`);
1160
- }
1161
- } else {
1162
- d(`No shuffle value found in input (${JSON.stringify(input)})`);
1163
- }
1164
- &nbsp;
1165
- // repeat
1166
- if(typeof input.repeat === 'string') {
1167
- const validValues = Object.keys(NodePyATVRepeatState).map(o =&gt; String(o));
1168
- if (validValues.includes(input.repeat)) {
1169
- result.repeat = NodePyATVRepeatState[input.repeat as NodePyATVRepeatState];
1170
- }
1171
- else {
1172
- d(`Unsupported repeat value ${input.repeat}, ignore attribute`);
1173
- }
1174
- } else {
1175
- d(`No repeat value found in input (${JSON.stringify(input)})`);
1176
- }
1177
- &nbsp;
1178
- // app
1179
- parseStateStringAttr(input, result, 'app', 'app', d);
1180
- parseStateStringAttr(input, result, 'app_id', 'appId', d);
1181
- &nbsp;
1182
- // powerState
1183
- if(typeof input.power_state === 'string') {
1184
- const validValues = Object.keys(NodePyATVPowerState).map(o =&gt; String(o));
1185
- <span class="missing-if-branch" title="else path not taken" >E</span>if (validValues.includes(input.power_state)) {
1186
- result.powerState = NodePyATVPowerState[input.power_state as NodePyATVPowerState];
1187
- }
1188
- else {
1189
- <span class="cstat-no" title="statement not covered" > d(`Unsupported powerState value ${input.power_state}, ignore attribute`);</span>
1190
- }
1191
- } else {
1192
- d(`No powerState value found in input (${JSON.stringify(input)})`);
1193
- }
1194
- &nbsp;
1195
- return result;
1196
- }
1197
- &nbsp;</pre></td></tr></table></pre>
1198
-
1199
- <div class='push'></div><!-- for sticky footer -->
1200
- </div><!-- /wrapper -->
1201
- <div class='footer quiet pad2 space-top1 center small'>
1202
- Code coverage generated by
1203
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1204
- at Fri Jun 10 2022 00:13:17 GMT+0000 (Coordinated Universal Time)
1205
- </div>
1206
- </div>
1207
- <script src="prettify.js"></script>
1208
- <script>
1209
- window.onload = function () {
1210
- prettyPrint();
1211
- };
1212
- </script>
1213
- <script src="sorter.js"></script>
1214
- <script src="block-navigation.js"></script>
1215
- </body>
1216
- </html>
1217
-