imposium-js-sdk 3.5.6 → 3.5.7

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 (70) hide show
  1. package/.prettierignore +13 -0
  2. package/CODESTEWARDS.md +12 -0
  3. package/README.md +14 -15
  4. package/coverage/base.css +224 -0
  5. package/coverage/block-navigation.js +87 -0
  6. package/coverage/cobertura-coverage.xml +1574 -0
  7. package/coverage/coverage-final.json +13 -0
  8. package/coverage/coverage-summary.json +14 -0
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +176 -0
  11. package/coverage/junit.xml +355 -0
  12. package/coverage/lcov-report/base.css +224 -0
  13. package/coverage/lcov-report/block-navigation.js +87 -0
  14. package/coverage/lcov-report/favicon.png +0 -0
  15. package/coverage/lcov-report/index.html +176 -0
  16. package/coverage/lcov-report/prettify.css +1 -0
  17. package/coverage/lcov-report/prettify.js +2 -0
  18. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  19. package/coverage/lcov-report/sorter.js +210 -0
  20. package/coverage/lcov-report/src/Entry.ts.html +205 -0
  21. package/coverage/lcov-report/src/client/Client.ts.html +1468 -0
  22. package/coverage/lcov-report/src/client/DirectDeliveryPipe.ts.html +658 -0
  23. package/coverage/lcov-report/src/client/http/API.ts.html +526 -0
  24. package/coverage/lcov-report/src/client/http/index.html +116 -0
  25. package/coverage/lcov-report/src/client/index.html +131 -0
  26. package/coverage/lcov-report/src/index.html +116 -0
  27. package/coverage/lcov-report/src/scaffolding/ExceptionPipe.ts.html +430 -0
  28. package/coverage/lcov-report/src/scaffolding/Exceptions.ts.html +616 -0
  29. package/coverage/lcov-report/src/scaffolding/GoogleAnalytics.ts.html +424 -0
  30. package/coverage/lcov-report/src/scaffolding/Helpers.ts.html +412 -0
  31. package/coverage/lcov-report/src/scaffolding/Version.ts.html +118 -0
  32. package/coverage/lcov-report/src/scaffolding/index.html +176 -0
  33. package/coverage/lcov-report/src/video/FallbackPlayer.ts.html +133 -0
  34. package/coverage/lcov-report/src/video/Player.ts.html +1663 -0
  35. package/coverage/lcov-report/src/video/VideoPlayer.ts.html +679 -0
  36. package/coverage/lcov-report/src/video/index.html +146 -0
  37. package/coverage/lcov.info +1426 -0
  38. package/coverage/prettify.css +1 -0
  39. package/coverage/prettify.js +2 -0
  40. package/coverage/sort-arrow-sprite.png +0 -0
  41. package/coverage/sorter.js +210 -0
  42. package/coverage/src/Entry.ts.html +205 -0
  43. package/coverage/src/client/Client.ts.html +1468 -0
  44. package/coverage/src/client/DirectDeliveryPipe.ts.html +658 -0
  45. package/coverage/src/client/http/API.ts.html +526 -0
  46. package/coverage/src/client/http/index.html +116 -0
  47. package/coverage/src/client/index.html +131 -0
  48. package/coverage/src/index.html +116 -0
  49. package/coverage/src/scaffolding/ExceptionPipe.ts.html +430 -0
  50. package/coverage/src/scaffolding/Exceptions.ts.html +616 -0
  51. package/coverage/src/scaffolding/GoogleAnalytics.ts.html +424 -0
  52. package/coverage/src/scaffolding/Helpers.ts.html +412 -0
  53. package/coverage/src/scaffolding/Version.ts.html +118 -0
  54. package/coverage/src/scaffolding/index.html +176 -0
  55. package/coverage/src/video/FallbackPlayer.ts.html +133 -0
  56. package/coverage/src/video/Player.ts.html +1663 -0
  57. package/coverage/src/video/VideoPlayer.ts.html +679 -0
  58. package/coverage/src/video/index.html +146 -0
  59. package/eslint-report.xml +1 -0
  60. package/examples/web/.eslintrc.json +10 -14
  61. package/lib/imposium.js +18815 -61068
  62. package/lib/imposium.js.map +1 -1
  63. package/lib/imposium.min.js +1 -1
  64. package/lib/imposium.min.js.LICENSE.txt +15 -2
  65. package/lib/imposium.min.js.map +1 -1
  66. package/package.json +40 -11
  67. package/tsconfig.eslint.json +8 -0
  68. package/vitest.config.ts +37 -0
  69. package/.eslintrc.js +0 -168
  70. package/CODEOWNERS +0 -1
@@ -0,0 +1,1468 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/client/Client.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> / <a href="index.html">src/client</a> Client.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">91.54% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>130/142</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">80% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>68/85</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">95% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>19/20</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">91.36% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>127/139</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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-yes">1x</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">33x</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-yes">33x</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-yes">33x</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-yes">33x</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-yes">33x</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-yes">33x</span>
628
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
+ <span class="cline-any cline-yes">33x</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-yes">33x</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-yes">33x</span>
642
+ <span class="cline-any cline-yes">33x</span>
643
+ <span class="cline-any cline-yes">33x</span>
644
+ <span class="cline-any cline-yes">33x</span>
645
+ <span class="cline-any cline-yes">33x</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-yes">33x</span>
648
+ <span class="cline-any cline-yes">33x</span>
649
+ <span class="cline-any cline-yes">1x</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-yes">32x</span>
653
+ <span class="cline-any cline-yes">1x</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-yes">31x</span>
657
+ <span class="cline-any cline-yes">1x</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-yes">30x</span>
661
+ <span class="cline-any cline-yes">30x</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-yes">30x</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-yes">30x</span>
671
+ <span class="cline-any cline-yes">30x</span>
672
+ <span class="cline-any cline-yes">30x</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-yes">30x</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-yes">30x</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-yes">30x</span>
683
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-yes">30x</span>
685
+ <span class="cline-any cline-no">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-no">&nbsp;</span>
688
+ <span class="cline-any cline-no">&nbsp;</span>
689
+ <span class="cline-any cline-no">&nbsp;</span>
690
+ <span class="cline-any cline-neutral">&nbsp;</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-no">&nbsp;</span>
695
+ <span class="cline-any cline-no">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-yes">3x</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-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-yes">33x</span>
707
+ <span class="cline-any cline-yes">6x</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-yes">6x</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-yes">6x</span>
713
+ <span class="cline-any cline-yes">6x</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-yes">6x</span>
716
+ <span class="cline-any cline-yes">6x</span>
717
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-yes">33x</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</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">20x</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">20x</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-yes">20x</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">20x</span>
737
+ <span class="cline-any cline-yes">20x</span>
738
+ <span class="cline-any cline-yes">1x</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-yes">19x</span>
742
+ <span class="cline-any cline-yes">1x</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-yes">18x</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">2x</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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">33x</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-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-yes">4x</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-yes">4x</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-yes">4x</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-yes">4x</span>
767
+ <span class="cline-any cline-yes">4x</span>
768
+ <span class="cline-any cline-yes">3x</span>
769
+ <span class="cline-any cline-yes">2x</span>
770
+ <span class="cline-any cline-neutral">&nbsp;</span>
771
+ <span class="cline-any cline-yes">1x</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">1x</span>
775
+ <span class="cline-any cline-yes">5x</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-yes">1x</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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">33x</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-yes">2x</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-yes">2x</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-yes">2x</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-yes">2x</span>
798
+ <span class="cline-any cline-yes">2x</span>
799
+ <span class="cline-any cline-yes">1x</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-yes">1x</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-yes">1x</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&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">33x</span>
814
+ <span class="cline-any cline-yes">3x</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-yes">3x</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-yes">3x</span>
822
+ <span class="cline-any cline-yes">3x</span>
823
+ <span class="cline-any cline-yes">1x</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-yes">2x</span>
830
+ <span class="cline-any cline-yes">1x</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-yes">2x</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-yes">1x</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-yes">33x</span>
844
+ <span class="cline-any cline-yes">2x</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-yes">2x</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-yes">2x</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-yes">2x</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-yes">2x</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-no">&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-yes">33x</span>
869
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-yes">1x</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-yes">1x</span>
880
+ <span class="cline-any cline-no">&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-yes">1x</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-no">&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-yes">33x</span>
894
+ <span class="cline-any cline-yes">1x</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-yes">1x</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-yes">1x</span>
905
+ <span class="cline-any cline-no">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-no">&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-yes">33x</span>
922
+ <span class="cline-any cline-yes">6x</span>
923
+ <span class="cline-any cline-yes">1x</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-yes">33x</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-yes">2x</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-yes">2x</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-yes">2x</span>
938
+ <span class="cline-any cline-yes">1x</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-yes">2x</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-yes">33x</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-yes">3x</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-yes">3x</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-yes">3x</span>
957
+ <span class="cline-any cline-yes">3x</span>
958
+ <span class="cline-any cline-yes">1x</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-yes">2x</span>
962
+ <span class="cline-any cline-yes">1x</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-yes">2x</span>
966
+ <span class="cline-any cline-yes">1x</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-yes">2x</span>
970
+ <span class="cline-any cline-yes">2x</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-yes">1x</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-yes">33x</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-yes">1x</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-yes">1x</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></td><td class="text"><pre class="prettyprint lang-js">import API from './http/API';
989
+ import VideoPlayer from '../video/VideoPlayer';
990
+ import FallbackPlayer from '../video/FallbackPlayer';
991
+ import GoogleAnalytics from '../scaffolding/GoogleAnalytics';
992
+ import ExceptionPipe from '../scaffolding/ExceptionPipe';
993
+ import DirectDeliveryPipe, { DelegateMap } from './DirectDeliveryPipe';
994
+ &nbsp;
995
+ import {
996
+ ClientConfigurationError,
997
+ PlayerConfigurationError,
998
+ ModerationError,
999
+ HTTPError
1000
+ } from '../scaffolding/Exceptions';
1001
+ &nbsp;
1002
+ import { prepConfig, keyExists, cloneWithKeys, isFunc } from '../scaffolding/Helpers';
1003
+ &nbsp;
1004
+ export type ExperienceCreated = (e: IExperience) =&gt; any;
1005
+ export type GotExperience = (e: IExperience) =&gt; any;
1006
+ export type onError = (e: Error) =&gt; any;
1007
+ export type UploadProgress = (n: number) =&gt; any;
1008
+ &nbsp;
1009
+ export interface IClientEvents {
1010
+ EXPERIENCE_CREATED?: ExperienceCreated &amp; string;
1011
+ GOT_EXPERIENCE?: GotExperience &amp; string;
1012
+ ERROR?: onError &amp; string;
1013
+ UPLOAD_PROGRESS?: UploadProgress &amp; string;
1014
+ }
1015
+ &nbsp;
1016
+ export interface IClientConfig {
1017
+ accessToken: string;
1018
+ storyId: string;
1019
+ compositionId: string;
1020
+ environment: string;
1021
+ gaPlacement: string;
1022
+ deliveryMode: string;
1023
+ pollRate: number;
1024
+ }
1025
+ &nbsp;
1026
+ export interface IRenderHistory {
1027
+ prevExperienceId: string;
1028
+ prevMessage: string;
1029
+ }
1030
+ &nbsp;
1031
+ export interface IExperience {
1032
+ id: string;
1033
+ rendering: boolean;
1034
+ date_created: number;
1035
+ moderation_status: string;
1036
+ error?: string;
1037
+ input: any;
1038
+ output: IExperienceOutput;
1039
+ }
1040
+ &nbsp;
1041
+ export interface IExperienceOutput {
1042
+ videos: IOutputVideos;
1043
+ images?: IOutputImages;
1044
+ }
1045
+ &nbsp;
1046
+ export interface IOutputImages {
1047
+ poster: string;
1048
+ }
1049
+ &nbsp;
1050
+ export interface IOutputVideos {
1051
+ m3u8?: IPlaylistOutput;
1052
+ mp4_480?: IVideoOutput;
1053
+ mp4_720?: IVideoOutput;
1054
+ mp4_1090?: IVideoOutput;
1055
+ }
1056
+ &nbsp;
1057
+ export interface IPlaylistOutput {
1058
+ format: string;
1059
+ duration: number;
1060
+ rate: number;
1061
+ url: string;
1062
+ }
1063
+ &nbsp;
1064
+ export interface IVideoOutput {
1065
+ url: string;
1066
+ format: string;
1067
+ rate: number;
1068
+ width: number;
1069
+ height: number;
1070
+ duration: number;
1071
+ }
1072
+ &nbsp;
1073
+ const { ...settings } = require('../conf/settings.json').client;
1074
+ &nbsp;
1075
+ export default class Client {
1076
+ public static eventNames: IClientEvents = settings.eventNames;
1077
+ &nbsp;
1078
+ public clientConfig: IClientConfig = undefined;
1079
+ &nbsp;
1080
+ public gaProperty: string = '';
1081
+ &nbsp;
1082
+ private directDeliveryPipe: DirectDeliveryPipe = undefined;
1083
+ &nbsp;
1084
+ private player: VideoPlayer = undefined;
1085
+ &nbsp;
1086
+ private renderHistory: IRenderHistory = settings.emptyHistory;
1087
+ &nbsp;
1088
+ private eventDelegateRefs: IClientEvents = cloneWithKeys(Client.eventNames);
1089
+ &nbsp;
1090
+ private playerIsFallback: boolean = false;
1091
+ &nbsp;
1092
+ /*
1093
+ Initialize Imposium client
1094
+ */
1095
+ constructor(config: IClientConfig) {
1096
+ this.setup(config);
1097
+ }
1098
+ &nbsp;
1099
+ /*
1100
+ Exposed for users who may want to re-use a client for n stories
1101
+ */
1102
+ public setup = (config: IClientConfig): void =&gt; {
1103
+ const { defaultConfig } = settings;
1104
+ const prevConfig = this.clientConfig || settings.defaultConfig;
1105
+ const clientDelegates: DelegateMap = new Map();
1106
+ let api: API = null;
1107
+ &nbsp;
1108
+ try {
1109
+ if (typeof config !== 'object') {
1110
+ throw new ClientConfigurationError('badConfig', null);
1111
+ }
1112
+ &nbsp;
1113
+ if (!config.hasOwnProperty('storyId') || typeof config.storyId !== 'string') {
1114
+ throw new ClientConfigurationError('storyId', null);
1115
+ }
1116
+ &nbsp;
1117
+ if (!config.hasOwnProperty('accessToken') || typeof config.accessToken !== 'string') {
1118
+ throw new ClientConfigurationError('accessToken', null);
1119
+ }
1120
+ &nbsp;
1121
+ prepConfig(config, defaultConfig);
1122
+ this.clientConfig = { ...prevConfig, ...config };
1123
+ &nbsp;
1124
+ api = new API(
1125
+ this.clientConfig.accessToken,
1126
+ this.clientConfig.environment,
1127
+ this.clientConfig.storyId,
1128
+ this.clientConfig.compositionId
1129
+ );
1130
+ &nbsp;
1131
+ clientDelegates.set('experienceCreated', (e: IExperience) =&gt; this.experienceCreated(e));
1132
+ clientDelegates.set('gotExperience', (e: IExperience) =&gt; this.gotExperience(e));
1133
+ clientDelegates.set('internalError', (e: any) =&gt; this.internalError(e));
1134
+ &nbsp;
1135
+ this.directDeliveryPipe = new DirectDeliveryPipe({
1136
+ api,
1137
+ clientDelegates,
1138
+ environment: this.clientConfig.environment
1139
+ });
1140
+ &nbsp;
1141
+ api.getGAProperty()
1142
+ .then((story: any) =&gt; {
1143
+ const { gaTrackingId: property } = story;
1144
+ &nbsp;
1145
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof property === 'string' &amp;&amp; property.length &gt; 0) {
1146
+ <span class="cstat-no" title="statement not covered" > GoogleAnalytics.initialize(this.clientConfig.gaPlacement);</span>
1147
+ &nbsp;
1148
+ <span class="cstat-no" title="statement not covered" > this.gaProperty = property;</span>
1149
+ <span class="cstat-no" title="statement not covered" > if (typeof this.player !== 'undefined') {</span>
1150
+ <span class="cstat-no" title="statement not covered" > this.player.setGaProperty(property);</span>
1151
+ }
1152
+ }
1153
+ })
1154
+ .<span class="fstat-no" title="function not covered" >catch((e</span>) =&gt; {
1155
+ const wrappedError = <span class="cstat-no" title="statement not covered" >new HTTPError('httpFailure', null, e);</span>
1156
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(wrappedError, this.clientConfig.storyId, null);</span>
1157
+ });
1158
+ } catch (e) {
1159
+ const storyId: string = config &amp;&amp; config.storyId ? config.storyId : '';
1160
+ ExceptionPipe.trapError(e, storyId);
1161
+ }
1162
+ };
1163
+ &nbsp;
1164
+ /*
1165
+ Bind player to client
1166
+ */
1167
+ public bindPlayer = (player: VideoPlayer, isFallback: boolean = false): void =&gt; {
1168
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1169
+ const {
1170
+ clientConfig: { storyId }
1171
+ } = this;
1172
+ &nbsp;
1173
+ this.playerIsFallback = isFallback;
1174
+ this.player = player;
1175
+ &nbsp;
1176
+ player.setStoryId(storyId);
1177
+ if (this.gaProperty) {
1178
+ player.setGaProperty(this.gaProperty);
1179
+ }
1180
+ }
1181
+ };
1182
+ &nbsp;
1183
+ /*
1184
+ Sets a callback for an event
1185
+ */
1186
+ public on = (eventName: string, callback: any): void =&gt; {
1187
+ const {
1188
+ eventDelegateRefs,
1189
+ eventDelegateRefs: { ERROR }
1190
+ } = this;
1191
+ &nbsp;
1192
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1193
+ const {
1194
+ clientConfig: { storyId }
1195
+ } = this;
1196
+ &nbsp;
1197
+ try {
1198
+ if (!isFunc(callback)) {
1199
+ throw new ClientConfigurationError('invalidCallbackType', eventName);
1200
+ }
1201
+ &nbsp;
1202
+ if (!keyExists(Client.eventNames, eventName)) {
1203
+ throw new ClientConfigurationError('invalidEventName', eventName);
1204
+ }
1205
+ &nbsp;
1206
+ eventDelegateRefs[eventName] = callback;
1207
+ } catch (e) {
1208
+ ExceptionPipe.trapError(e, storyId, ERROR);
1209
+ }
1210
+ }
1211
+ };
1212
+ &nbsp;
1213
+ /*
1214
+ Turns off a specific event or all events
1215
+ */
1216
+ public off = (eventName: string = ''): void =&gt; {
1217
+ const {
1218
+ eventDelegateRefs,
1219
+ eventDelegateRefs: { ERROR }
1220
+ } = this;
1221
+ &nbsp;
1222
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1223
+ const {
1224
+ clientConfig: { storyId }
1225
+ } = this;
1226
+ &nbsp;
1227
+ try {
1228
+ if (eventName) {
1229
+ if (keyExists(Client.eventNames, eventName)) {
1230
+ eventDelegateRefs[eventName] = null;
1231
+ } else {
1232
+ throw new ClientConfigurationError('invalidEventName', eventName);
1233
+ }
1234
+ } else {
1235
+ Object.keys(Client.eventNames).forEach((event) =&gt; {
1236
+ eventDelegateRefs[event] = null;
1237
+ });
1238
+ }
1239
+ } catch (e) {
1240
+ ExceptionPipe.trapError(e, storyId, ERROR);
1241
+ }
1242
+ }
1243
+ };
1244
+ &nbsp;
1245
+ /*
1246
+ Sets up analytics using fallback video player wrapper class
1247
+ */
1248
+ public captureAnalytics = (playerRef: HTMLVideoElement = null): void =&gt; {
1249
+ const {
1250
+ eventDelegateRefs: { ERROR }
1251
+ } = this;
1252
+ &nbsp;
1253
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1254
+ const {
1255
+ clientConfig: { storyId }
1256
+ } = this;
1257
+ &nbsp;
1258
+ try {
1259
+ if (playerRef instanceof HTMLVideoElement) {
1260
+ this.bindPlayer(new FallbackPlayer(playerRef), true);
1261
+ } else {
1262
+ // Prop passed wasn't of type HTMLVideoElement
1263
+ throw new PlayerConfigurationError('invalidPlayerRef', null);
1264
+ }
1265
+ } catch (e) {
1266
+ ExceptionPipe.trapError(e, storyId, ERROR);
1267
+ }
1268
+ }
1269
+ };
1270
+ &nbsp;
1271
+ /*
1272
+ Call exposed to users that fetches experience data
1273
+ */
1274
+ public getExperience = (experienceId: string): void =&gt; {
1275
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1276
+ const {
1277
+ player,
1278
+ clientConfig: { storyId },
1279
+ eventDelegateRefs: { GOT_EXPERIENCE, ERROR }
1280
+ } = this;
1281
+ &nbsp;
1282
+ try {
1283
+ if (player === null &amp;&amp; !isFunc(GOT_EXPERIENCE)) {
1284
+ throw new ClientConfigurationError(
1285
+ 'badConfigOnGet',
1286
+ Client.eventNames.GOT_EXPERIENCE
1287
+ );
1288
+ }
1289
+ &nbsp;
1290
+ if (experienceId.length &gt; settings.uuidLength) {
1291
+ experienceId = experienceId.substring(0, settings.uuidLength);
1292
+ }
1293
+ &nbsp;
1294
+ this.directDeliveryPipe.getExperience(experienceId);
1295
+ } catch (e) {
1296
+ ExceptionPipe.trapError(e, storyId, ERROR);
1297
+ }
1298
+ }
1299
+ };
1300
+ &nbsp;
1301
+ /*
1302
+ Creates experiences and handles various render flows
1303
+ */
1304
+ public createExperience = (inventory: any, render: boolean = true): void =&gt; {
1305
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1306
+ const {
1307
+ player,
1308
+ playerIsFallback,
1309
+ clientConfig: { storyId },
1310
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1311
+ } = this;
1312
+ &nbsp;
1313
+ try {
1314
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1315
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1316
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1317
+ 'bagConfigOnPostRender',
1318
+ Client.eventNames.GOT_EXPERIENCE
1319
+ );
1320
+ }
1321
+ &nbsp;
1322
+ this.directDeliveryPipe.createExperience(inventory, render, UPLOAD_PROGRESS);
1323
+ } catch (e) {
1324
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(e, storyId, ERROR);</span>
1325
+ }
1326
+ }
1327
+ };
1328
+ &nbsp;
1329
+ public renderExperience = (inventory: any): void =&gt; {
1330
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1331
+ const {
1332
+ player,
1333
+ playerIsFallback,
1334
+ clientConfig: { storyId },
1335
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1336
+ } = this;
1337
+ &nbsp;
1338
+ try {
1339
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1340
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1341
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1342
+ 'bagConfigOnPostRender',
1343
+ Client.eventNames.GOT_EXPERIENCE
1344
+ );
1345
+ }
1346
+ &nbsp;
1347
+ this.directDeliveryPipe.fetchExperience(inventory, UPLOAD_PROGRESS);
1348
+ } catch (e) {
1349
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(e, storyId, ERROR);</span>
1350
+ }
1351
+ }
1352
+ };
1353
+ &nbsp;
1354
+ public renderExperienceFromId = (experienceId): void =&gt; {
1355
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1356
+ const {
1357
+ player,
1358
+ playerIsFallback,
1359
+ clientConfig: { storyId },
1360
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1361
+ } = this;
1362
+ &nbsp;
1363
+ try {
1364
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1365
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1366
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1367
+ 'bagConfigOnPostRender',
1368
+ Client.eventNames.GOT_EXPERIENCE
1369
+ );
1370
+ }
1371
+ &nbsp;
1372
+ this.directDeliveryPipe.fetchExperience(null, UPLOAD_PROGRESS, 1, experienceId);
1373
+ } catch (e) {
1374
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(e, storyId, ERROR);</span>
1375
+ }
1376
+ }
1377
+ };
1378
+ &nbsp;
1379
+ /*
1380
+ Update render history state, prevents storing duplicates
1381
+ */
1382
+ private updateHistory = (key: string, value: string): void =&gt; {
1383
+ if (this.renderHistory[key] !== value) {
1384
+ this.renderHistory[key] = value;
1385
+ }
1386
+ };
1387
+ &nbsp;
1388
+ /*
1389
+ Handler for emitting expereince data on first creation
1390
+ */
1391
+ private experienceCreated = (experience: IExperience): void =&gt; {
1392
+ const {
1393
+ eventDelegateRefs: { EXPERIENCE_CREATED }
1394
+ } = this;
1395
+ &nbsp;
1396
+ const { id } = experience;
1397
+ &nbsp;
1398
+ if (isFunc(EXPERIENCE_CREATED)) {
1399
+ EXPERIENCE_CREATED(experience);
1400
+ }
1401
+ &nbsp;
1402
+ this.updateHistory('prevExperienceId', id);
1403
+ };
1404
+ &nbsp;
1405
+ /*
1406
+ Handler for validating and deferring / emitting experience data after rendering is complete
1407
+ */
1408
+ private gotExperience = (experience: IExperience): void =&gt; {
1409
+ const {
1410
+ player,
1411
+ clientConfig: { storyId },
1412
+ eventDelegateRefs: { GOT_EXPERIENCE, ERROR }
1413
+ } = this;
1414
+ &nbsp;
1415
+ const { id, moderation_status } = experience;
1416
+ &nbsp;
1417
+ try {
1418
+ if (moderation_status === 'rejected') {
1419
+ throw new ModerationError('rejection', id);
1420
+ }
1421
+ &nbsp;
1422
+ if (isFunc(GOT_EXPERIENCE)) {
1423
+ GOT_EXPERIENCE(experience);
1424
+ }
1425
+ &nbsp;
1426
+ if (typeof player !== 'undefined') {
1427
+ player.experienceGenerated(experience);
1428
+ }
1429
+ &nbsp;
1430
+ this.updateHistory('prevExperienceId', id);
1431
+ this.updateHistory('prevMessage', '');
1432
+ } catch (e) {
1433
+ ExceptionPipe.trapError(e, storyId, ERROR);
1434
+ }
1435
+ };
1436
+ &nbsp;
1437
+ /*
1438
+ Handler for handling async internal errors
1439
+ */
1440
+ private internalError = (e: any): void =&gt; {
1441
+ const {
1442
+ clientConfig: { storyId },
1443
+ eventDelegateRefs: { ERROR }
1444
+ } = this;
1445
+ &nbsp;
1446
+ ExceptionPipe.trapError(e, storyId, ERROR);
1447
+ };
1448
+ }
1449
+ &nbsp;</pre></td></tr></table></pre>
1450
+
1451
+ <div class='push'></div><!-- for sticky footer -->
1452
+ </div><!-- /wrapper -->
1453
+ <div class='footer quiet pad2 space-top1 center small'>
1454
+ Code coverage generated by
1455
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1456
+ at 2026-06-24T14:34:09.170Z
1457
+ </div>
1458
+ <script src="../../prettify.js"></script>
1459
+ <script>
1460
+ window.onload = function () {
1461
+ prettyPrint();
1462
+ };
1463
+ </script>
1464
+ <script src="../../sorter.js"></script>
1465
+ <script src="../../block-navigation.js"></script>
1466
+ </body>
1467
+ </html>
1468
+