vscode-json-languageservice 3.7.0 → 3.8.3
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.
- package/CHANGELOG.md +12 -8
- package/README.md +2 -1
- package/lib/esm/jsonLanguageService.d.ts +6 -2
- package/lib/esm/jsonLanguageService.js +1 -0
- package/lib/esm/jsonLanguageTypes.d.ts +7 -4
- package/lib/esm/jsonLanguageTypes.js +7 -3
- package/lib/esm/parser/jsonParser.js +33 -6
- package/lib/esm/services/jsonCompletion.js +61 -3
- package/lib/esm/services/jsonSchemaService.js +18 -3
- package/lib/umd/jsonLanguageService.d.ts +6 -2
- package/lib/umd/jsonLanguageService.js +13 -4
- package/lib/umd/jsonLanguageTypes.d.ts +7 -4
- package/lib/umd/jsonLanguageTypes.js +31 -6
- package/lib/umd/parser/jsonParser.js +34 -6
- package/lib/umd/services/configuration.js +1 -0
- package/lib/umd/services/jsonCompletion.js +62 -3
- package/lib/umd/services/jsonDefinition.js +1 -0
- package/lib/umd/services/jsonDocumentSymbols.js +1 -0
- package/lib/umd/services/jsonFolding.js +1 -0
- package/lib/umd/services/jsonHover.js +1 -0
- package/lib/umd/services/jsonSchemaService.js +19 -3
- package/lib/umd/services/jsonSelectionRanges.js +1 -0
- package/lib/umd/services/jsonValidation.js +1 -0
- package/lib/umd/utils/colors.js +1 -0
- package/lib/umd/utils/json.js +1 -0
- package/lib/umd/utils/objects.js +1 -0
- package/lib/umd/utils/strings.js +1 -0
- package/package.json +1 -1
- package/.nyc_output/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
- package/.nyc_output/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
- package/.nyc_output/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
- package/.nyc_output/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
- package/.nyc_output/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
- package/.nyc_output/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
- package/.nyc_output/processinfo/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
- package/.nyc_output/processinfo/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
- package/.nyc_output/processinfo/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
- package/.nyc_output/processinfo/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
- package/.nyc_output/processinfo/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
- package/.nyc_output/processinfo/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -79
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -156
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -170
- package/coverage/lcov-report/src/index.html +0 -126
- package/coverage/lcov-report/src/jsonLanguageService.ts.html +0 -383
- package/coverage/lcov-report/src/jsonLanguageTypes.ts.html +0 -968
- package/coverage/lcov-report/src/parser/index.html +0 -111
- package/coverage/lcov-report/src/parser/jsonParser.ts.html +0 -3860
- package/coverage/lcov-report/src/services/configuration.ts.html +0 -1679
- package/coverage/lcov-report/src/services/index.html +0 -216
- package/coverage/lcov-report/src/services/jsonCompletion.ts.html +0 -2843
- package/coverage/lcov-report/src/services/jsonDocumentSymbols.ts.html +0 -911
- package/coverage/lcov-report/src/services/jsonFolding.ts.html +0 -455
- package/coverage/lcov-report/src/services/jsonHover.ts.html +0 -461
- package/coverage/lcov-report/src/services/jsonSchemaService.ts.html +0 -1895
- package/coverage/lcov-report/src/services/jsonSelectionRanges.ts.html +0 -311
- package/coverage/lcov-report/src/services/jsonValidation.ts.html +0 -560
- package/coverage/lcov-report/src/utils/colors.ts.html +0 -299
- package/coverage/lcov-report/src/utils/index.html +0 -156
- package/coverage/lcov-report/src/utils/json.ts.html +0 -206
- package/coverage/lcov-report/src/utils/objects.ts.html +0 -296
- package/coverage/lcov-report/src/utils/strings.ts.html +0 -224
- package/coverage/lcov.info +0 -4219
|
@@ -1,2843 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/services/jsonCompletion.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/services</a> jsonCompletion.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">84.57% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>433/512</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">77.5% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>341/440</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">81.54% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>53/65</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">84.23% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>406/482</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
</div>
|
|
58
|
-
<div class='status-line high'></div>
|
|
59
|
-
<pre><table class="coverage">
|
|
60
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
62
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
63
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
64
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
65
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
66
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
67
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
68
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
69
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
70
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
71
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
72
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
73
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
74
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
75
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
76
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
77
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
78
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
79
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
80
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
81
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
82
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
83
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
84
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
85
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
86
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
87
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
88
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
89
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
90
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
91
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
92
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
93
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
94
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
95
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
96
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
97
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
98
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
99
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
100
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
101
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
102
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
103
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
104
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
105
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
106
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
107
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
108
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
109
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
110
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
111
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
112
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
113
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
114
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
115
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
116
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
117
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
118
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
119
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
120
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
121
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
122
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
123
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
128
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
129
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
130
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
131
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
132
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
133
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
134
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
135
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
257
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
258
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
259
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
260
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
261
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
262
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
263
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
264
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
265
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
266
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
267
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
268
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
269
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
270
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
271
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
272
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
273
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
274
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
275
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
276
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
277
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
278
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
279
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
280
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
281
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
282
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
283
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
284
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
285
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
286
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
287
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
288
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
289
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
290
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
291
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
292
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
293
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
294
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
295
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
296
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
297
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
298
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
299
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
300
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
301
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
302
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
303
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
304
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
305
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
306
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
307
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
308
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
309
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
310
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
311
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
312
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
313
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
314
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
315
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
316
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
317
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
318
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
319
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
320
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
321
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
322
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
323
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
324
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
325
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
326
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
327
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
328
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
329
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
330
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
331
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
332
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
333
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
334
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
335
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
336
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
337
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
338
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
339
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
340
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
341
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
342
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
343
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
344
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
345
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
346
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
347
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
348
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
349
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
350
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
351
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
352
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
353
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
354
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
355
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
356
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
357
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
358
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
359
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
360
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
361
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
362
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
363
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
364
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
365
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
366
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
367
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
368
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
369
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
370
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
371
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
372
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
373
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
374
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
375
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
376
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
377
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
378
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
379
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
380
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
381
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
382
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
383
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
384
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
385
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
386
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
387
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
388
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
389
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
390
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
391
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
392
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
393
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
394
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
395
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
396
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
397
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
398
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
399
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
400
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
401
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
402
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
403
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
404
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
405
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
406
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
407
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
408
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
409
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
410
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
411
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
412
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
413
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
414
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
415
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
416
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
417
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
418
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
419
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
420
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
421
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
422
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
423
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
424
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
425
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
426
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
427
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
428
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
429
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
430
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
431
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
432
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
433
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
434
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
435
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
436
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
437
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
438
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
439
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
440
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
441
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
442
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
443
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
444
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
445
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
446
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
447
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
448
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
449
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
450
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
451
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
452
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
453
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
454
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
455
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
456
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
457
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
458
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
459
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
460
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
461
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
462
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
463
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
464
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
465
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
466
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
467
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
468
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
469
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
470
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
471
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
472
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
473
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
474
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
475
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
476
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
477
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
478
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
479
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
480
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
481
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
482
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
483
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
484
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
485
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
486
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
487
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
488
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
489
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
490
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
491
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
492
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
493
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
494
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
495
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
496
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
497
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
498
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
499
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
500
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
501
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
502
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
503
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
504
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
505
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
506
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
507
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
508
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
509
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
510
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
511
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
512
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
513
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
514
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
515
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
516
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
517
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
518
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
519
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
520
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
521
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
522
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
523
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
524
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
525
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
526
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
527
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
528
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
529
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
530
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
531
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
532
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
533
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
534
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
535
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
536
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
537
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
538
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
539
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
540
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
541
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
542
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
543
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
544
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
545
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
546
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
547
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
548
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
549
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
550
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
551
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
552
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
553
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
554
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
555
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
556
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
557
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
558
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
559
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
560
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
561
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
562
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
563
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
564
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
565
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
566
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
567
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
568
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
569
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
570
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
571
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
572
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
573
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
574
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
575
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
576
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
577
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
578
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
579
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
580
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
581
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
582
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
583
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
584
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
585
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
586
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
587
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
588
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
589
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
590
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
591
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
592
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
593
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
594
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
595
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
596
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
597
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
598
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
599
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
600
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
601
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
602
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
603
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
604
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
605
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
606
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
607
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
608
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
609
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
610
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
611
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
612
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
613
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
614
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
615
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
616
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
617
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
618
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
619
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
620
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
621
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
622
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
623
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
624
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
625
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
626
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
627
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
628
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
629
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
630
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
631
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
632
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
633
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
634
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
635
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
636
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
637
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
638
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
639
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
640
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
641
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
642
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
643
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
644
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
645
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
646
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
647
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
648
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
649
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
650
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
651
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
652
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
653
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
654
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
655
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
656
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
657
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
658
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
659
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
660
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
661
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
662
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
663
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
664
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
665
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
666
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
667
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
668
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
669
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
670
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
671
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
672
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
673
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
674
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
675
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
676
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
677
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
678
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
679
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
680
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
681
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
682
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
683
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
684
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
685
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
686
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
687
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
688
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
689
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
690
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
691
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
692
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
693
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
694
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
695
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
696
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
697
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
698
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
699
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
700
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
701
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
702
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
703
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
704
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
705
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
706
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
707
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
708
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
709
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
710
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
711
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
712
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
713
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
714
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
715
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
716
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
717
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
718
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
719
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
720
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
721
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
722
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
723
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
724
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
725
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
726
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
727
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
728
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
729
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
730
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
731
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
732
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
733
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
734
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
735
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
736
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
737
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
738
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
739
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
740
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
741
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
742
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
743
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
744
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
745
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
746
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
747
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
748
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
749
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
750
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
751
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
752
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
753
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
754
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
755
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
756
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
757
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
758
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
759
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
760
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
761
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
762
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
763
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
764
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
765
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
766
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
767
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
768
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
769
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
770
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
771
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
772
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
773
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
774
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
775
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
776
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
777
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
778
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
779
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
780
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
781
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
782
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
783
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
784
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
785
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
786
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
787
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
788
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
789
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
790
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
791
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
792
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
793
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
794
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
795
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
796
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
797
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
798
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
799
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
800
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
801
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
802
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
803
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
804
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
805
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
806
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
807
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
808
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
809
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
810
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
811
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
812
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
813
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
814
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
815
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
816
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
817
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
818
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
819
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
820
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
821
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
822
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
823
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
824
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
825
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
826
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
827
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
828
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
829
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
830
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
831
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
832
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
833
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
834
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
835
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
836
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
837
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
838
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
839
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
840
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
841
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
842
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
843
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
844
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
845
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
846
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
847
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
848
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
849
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
850
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
851
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
852
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
853
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
854
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
855
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
856
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
857
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
858
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
859
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
860
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
861
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
862
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
863
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
864
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
865
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
866
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
867
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
868
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
869
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
870
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
871
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
872
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
873
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
874
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
875
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
876
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
877
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
878
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
879
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
880
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
881
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
882
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
883
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
884
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
885
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
886
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
887
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
888
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
889
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
890
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
891
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
892
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
893
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
894
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
895
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
896
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
897
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
898
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
899
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
900
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
901
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
902
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
903
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
904
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
905
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
906
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
907
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
908
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
909
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
910
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
911
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
912
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
913
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
914
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
915
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
916
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
917
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
918
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
919
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
920
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
921
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
922
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
923
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
924
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
925
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
926
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
927
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
928
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
929
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
930
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
931
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
932
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
933
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
934
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
935
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
936
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
937
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
938
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
939
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
940
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
941
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
942
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
943
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
944
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
945
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
946
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
947
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
948
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
949
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
950
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
951
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
952
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
953
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
954
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
955
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
956
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
957
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
958
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
959
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
960
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
961
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
962
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
963
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
964
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
965
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
966
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
967
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
968
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
969
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
970
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
971
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
972
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
973
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
974
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
975
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
976
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
977
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
978
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
979
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
980
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
981
|
-
<a name='L922'></a><a href='#L922'>922</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-yes">1x</span>
|
|
987
|
-
<span class="cline-any cline-yes">1x</span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-yes">1x</span>
|
|
992
|
-
<span class="cline-any cline-yes">1x</span>
|
|
993
|
-
<span class="cline-any cline-yes">1x</span>
|
|
994
|
-
<span class="cline-any cline-yes">1x</span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1002
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1005
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-yes">329x</span>
|
|
1014
|
-
<span class="cline-any cline-yes">658x</span>
|
|
1015
|
-
<span class="cline-any cline-yes">329x</span>
|
|
1016
|
-
<span class="cline-any cline-yes">550x</span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-no"> </span>
|
|
1023
|
-
<span class="cline-any cline-no"> </span>
|
|
1024
|
-
<span class="cline-any cline-no"> </span>
|
|
1025
|
-
<span class="cline-any cline-no"> </span>
|
|
1026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-no"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1042
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1043
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1044
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1047
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1048
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1058
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-yes">64x</span>
|
|
1061
|
-
<span class="cline-any cline-yes">64x</span>
|
|
1062
|
-
<span class="cline-any cline-no"> </span>
|
|
1063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
-
<span class="cline-any cline-yes">64x</span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1070
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-yes">232x</span>
|
|
1073
|
-
<span class="cline-any cline-yes">232x</span>
|
|
1074
|
-
<span class="cline-any cline-yes">232x</span>
|
|
1075
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1076
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1077
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1078
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1079
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1083
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1089
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1090
|
-
<span class="cline-any cline-yes">208x</span>
|
|
1091
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1092
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-no"> </span>
|
|
1097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-no"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
-
<span class="cline-any cline-no"> </span>
|
|
1103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1110
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1113
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1116
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-yes">86x</span>
|
|
1119
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1120
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1121
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1122
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1123
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1124
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1125
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1135
|
-
<span class="cline-any cline-no"> </span>
|
|
1136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1139
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1140
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1141
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1145
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1146
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1151
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1158
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1159
|
-
<span class="cline-any cline-no"> </span>
|
|
1160
|
-
<span class="cline-any cline-no"> </span>
|
|
1161
|
-
<span class="cline-any cline-no"> </span>
|
|
1162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1165
|
-
<span class="cline-any cline-no"> </span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
-
<span class="cline-any cline-no"> </span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1177
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1185
|
-
<span class="cline-any cline-no"> </span>
|
|
1186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1189
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1190
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1191
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1192
|
-
<span class="cline-any cline-no"> </span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1195
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1203
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1205
|
-
<span class="cline-any cline-yes">81x</span>
|
|
1206
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1207
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1208
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1209
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1210
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1211
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1220
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1233
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1234
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1235
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1236
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1237
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1248
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1251
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1252
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1253
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
-
<span class="cline-any cline-yes">24x</span>
|
|
1256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1260
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1261
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1266
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1277
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1278
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1279
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1280
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1284
|
-
<span class="cline-any cline-no"> </span>
|
|
1285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-no"> </span>
|
|
1292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-no"> </span>
|
|
1299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1301
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1302
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1303
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1311
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1316
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1319
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1320
|
-
<span class="cline-any cline-no"> </span>
|
|
1321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1324
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1325
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1326
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1336
|
-
<span class="cline-any cline-no"> </span>
|
|
1337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
-
<span class="cline-any cline-no"> </span>
|
|
1340
|
-
<span class="cline-any cline-no"> </span>
|
|
1341
|
-
<span class="cline-any cline-no"> </span>
|
|
1342
|
-
<span class="cline-any cline-no"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-no"> </span>
|
|
1345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
-
<span class="cline-any cline-no"> </span>
|
|
1349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1355
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1356
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1357
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1360
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1361
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1362
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1366
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1367
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-yes">69x</span>
|
|
1371
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1372
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1373
|
-
<span class="cline-any cline-no"> </span>
|
|
1374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1376
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-yes">69x</span>
|
|
1380
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1383
|
-
<span class="cline-any cline-yes">74x</span>
|
|
1384
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1385
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1386
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1387
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1388
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1389
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1396
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1397
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1398
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1404
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1407
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1408
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1411
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1417
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1418
|
-
<span class="cline-any cline-no"> </span>
|
|
1419
|
-
<span class="cline-any cline-no"> </span>
|
|
1420
|
-
<span class="cline-any cline-no"> </span>
|
|
1421
|
-
<span class="cline-any cline-no"> </span>
|
|
1422
|
-
<span class="cline-any cline-no"> </span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
-
<span class="cline-any cline-no"> </span>
|
|
1427
|
-
<span class="cline-any cline-no"> </span>
|
|
1428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
-
<span class="cline-any cline-no"> </span>
|
|
1430
|
-
<span class="cline-any cline-no"> </span>
|
|
1431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
-
<span class="cline-any cline-no"> </span>
|
|
1433
|
-
<span class="cline-any cline-no"> </span>
|
|
1434
|
-
<span class="cline-any cline-no"> </span>
|
|
1435
|
-
<span class="cline-any cline-no"> </span>
|
|
1436
|
-
<span class="cline-any cline-no"> </span>
|
|
1437
|
-
<span class="cline-any cline-no"> </span>
|
|
1438
|
-
<span class="cline-any cline-no"> </span>
|
|
1439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1447
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1448
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1449
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1450
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1451
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1452
|
-
<span class="cline-any cline-no"> </span>
|
|
1453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1455
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1458
|
-
<span class="cline-any cline-no"> </span>
|
|
1459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
-
<span class="cline-any cline-yes">85x</span>
|
|
1464
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1465
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1466
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1467
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1468
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1469
|
-
<span class="cline-any cline-no"> </span>
|
|
1470
|
-
<span class="cline-any cline-no"> </span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1481
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1482
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1483
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1484
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1485
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1486
|
-
<span class="cline-any cline-no"> </span>
|
|
1487
|
-
<span class="cline-any cline-no"> </span>
|
|
1488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1499
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1500
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1501
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1502
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1506
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1507
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1508
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1509
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1512
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1513
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1514
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1515
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1516
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1517
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1518
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1519
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1520
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1522
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1523
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
-
<span class="cline-any cline-no"> </span>
|
|
1527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1539
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1540
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1545
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1546
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1547
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1556
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1557
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1558
|
-
<span class="cline-any cline-yes">68x</span>
|
|
1559
|
-
<span class="cline-any cline-yes">68x</span>
|
|
1560
|
-
<span class="cline-any cline-yes">68x</span>
|
|
1561
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1562
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1563
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1565
|
-
<span class="cline-any cline-yes">68x</span>
|
|
1566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1576
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1577
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1578
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1581
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1582
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1583
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1584
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1588
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1589
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1590
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1600
|
-
<span class="cline-any cline-no"> </span>
|
|
1601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1612
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1621
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1622
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1631
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1632
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1633
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1642
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1643
|
-
<span class="cline-any cline-yes">94x</span>
|
|
1644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1646
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1647
|
-
<span class="cline-any cline-yes">132x</span>
|
|
1648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1650
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1651
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1654
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1655
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1656
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1660
|
-
<span class="cline-any cline-yes">233x</span>
|
|
1661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1664
|
-
<span class="cline-any cline-yes">217x</span>
|
|
1665
|
-
<span class="cline-any cline-yes">217x</span>
|
|
1666
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1667
|
-
<span class="cline-any cline-yes">214x</span>
|
|
1668
|
-
<span class="cline-any cline-no"> </span>
|
|
1669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1670
|
-
<span class="cline-any cline-yes">214x</span>
|
|
1671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1673
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1674
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1675
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1676
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1677
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1680
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1686
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1689
|
-
<span class="cline-any cline-no"> </span>
|
|
1690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1694
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1695
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1696
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1699
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1701
|
-
<span class="cline-any cline-no"> </span>
|
|
1702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1705
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1706
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1707
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1710
|
-
<span class="cline-any cline-yes">60x</span>
|
|
1711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
-
<span class="cline-any cline-yes">40x</span>
|
|
1713
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1714
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1715
|
-
<span class="cline-any cline-no"> </span>
|
|
1716
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1721
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1723
|
-
<span class="cline-any cline-no"> </span>
|
|
1724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1725
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1728
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1733
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
-
<span class="cline-any cline-no"> </span>
|
|
1736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1737
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1740
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1746
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1747
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1748
|
-
<span class="cline-any cline-no"> </span>
|
|
1749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1754
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1755
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1756
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1757
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1758
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1759
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1765
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1766
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1770
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1771
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1772
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1777
|
-
<span class="cline-any cline-no"> </span>
|
|
1778
|
-
<span class="cline-any cline-no"> </span>
|
|
1779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
-
<span class="cline-any cline-no"> </span>
|
|
1781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1783
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1784
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1785
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1786
|
-
<span class="cline-any cline-no"> </span>
|
|
1787
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1788
|
-
<span class="cline-any cline-no"> </span>
|
|
1789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
-
<span class="cline-any cline-yes">77x</span>
|
|
1792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1793
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1794
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
-
<span class="cline-any cline-yes">41x</span>
|
|
1797
|
-
<span class="cline-any cline-yes">41x</span>
|
|
1798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1800
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1803
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1806
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1807
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
-
<span class="cline-any cline-no"> </span>
|
|
1810
|
-
<span class="cline-any cline-no"> </span>
|
|
1811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1816
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1817
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1823
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1824
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1825
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1826
|
-
<span class="cline-any cline-yes">26x</span>
|
|
1827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1832
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1833
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1834
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1835
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
-
<span class="cline-any cline-yes">91x</span>
|
|
1841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1842
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1846
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1847
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1848
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1849
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1850
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1851
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1852
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1853
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1854
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1855
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1857
|
-
<span class="cline-any cline-no"> </span>
|
|
1858
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1859
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1866
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1867
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1868
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1869
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1870
|
-
<span class="cline-any cline-yes">181x</span>
|
|
1871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1875
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1876
|
-
<span class="cline-any cline-yes">180x</span>
|
|
1877
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1882
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1886
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1887
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1888
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1890
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1894
|
-
<span class="cline-any cline-no"> </span>
|
|
1895
|
-
<span class="cline-any cline-no"> </span>
|
|
1896
|
-
<span class="cline-any cline-no"> </span>
|
|
1897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1898
|
-
<span class="cline-any cline-no"> </span>
|
|
1899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1901
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1902
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*---------------------------------------------------------------------------------------------
|
|
1903
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
1904
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
1905
|
-
*--------------------------------------------------------------------------------------------*/
|
|
1906
|
-
|
|
1907
|
-
import * as Parser from '../parser/jsonParser';
|
|
1908
|
-
import * as Json from 'jsonc-parser';
|
|
1909
|
-
import * as SchemaService from './jsonSchemaService';
|
|
1910
|
-
import { JSONSchema, JSONSchemaRef } from '../jsonSchema';
|
|
1911
|
-
import { JSONWorkerContribution, CompletionsCollector } from '../jsonContributions';
|
|
1912
|
-
import { stringifyObject } from '../utils/json';
|
|
1913
|
-
import { endsWith } from '../utils/strings';
|
|
1914
|
-
import { isDefined } from '../utils/objects';
|
|
1915
|
-
import {
|
|
1916
|
-
PromiseConstructor, Thenable,
|
|
1917
|
-
ASTNode, ObjectASTNode, ArrayASTNode, PropertyASTNode, ClientCapabilities,
|
|
1918
|
-
TextDocument,
|
|
1919
|
-
CompletionItem, CompletionItemKind, CompletionList, Position, Range, TextEdit, InsertTextFormat, MarkupContent, MarkupKind
|
|
1920
|
-
} from '../jsonLanguageTypes';
|
|
1921
|
-
|
|
1922
|
-
import * as nls from 'vscode-nls';
|
|
1923
|
-
const localize = nls.loadMessageBundle();
|
|
1924
|
-
|
|
1925
|
-
const valueCommitCharacters = [',', '}', ']'];
|
|
1926
|
-
const propertyCommitCharacters = [':'];
|
|
1927
|
-
|
|
1928
|
-
export class JSONCompletion {
|
|
1929
|
-
|
|
1930
|
-
private supportsMarkdown: boolean | undefined;
|
|
1931
|
-
private supportsCommitCharacters: boolean | undefined;
|
|
1932
|
-
|
|
1933
|
-
constructor(
|
|
1934
|
-
private schemaService: SchemaService.IJSONSchemaService,
|
|
1935
|
-
private <span class="missing-if-branch" title="else path not taken" >E</span>contributions: JSONWorkerContribution[] = [],
|
|
1936
|
-
private <span class="missing-if-branch" title="if path not taken" >I</span>promiseConstructor: PromiseConstructor = Promise,
|
|
1937
|
-
private clientCapabilities: ClientCapabilities = {}) {
|
|
1938
|
-
}
|
|
1939
|
-
|
|
1940
|
-
<span class="fstat-no" title="function not covered" > public d</span>oResolve(item: CompletionItem): Thenable<CompletionItem> {
|
|
1941
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >this.contributions.length - 1;</span> i >= 0; i--) {</span>
|
|
1942
|
-
const resolveCompletion = <span class="cstat-no" title="statement not covered" >this.contributions[i].resolveCompletion;</span>
|
|
1943
|
-
<span class="cstat-no" title="statement not covered" > if (resolveCompletion) {</span>
|
|
1944
|
-
const resolver = <span class="cstat-no" title="statement not covered" >resolveCompletion(item);</span>
|
|
1945
|
-
<span class="cstat-no" title="statement not covered" > if (resolver) {</span>
|
|
1946
|
-
<span class="cstat-no" title="statement not covered" > return resolver;</span>
|
|
1947
|
-
}
|
|
1948
|
-
}
|
|
1949
|
-
}
|
|
1950
|
-
<span class="cstat-no" title="statement not covered" > return this.promiseConstructor.resolve(item);</span>
|
|
1951
|
-
}
|
|
1952
|
-
|
|
1953
|
-
public doComplete(document: TextDocument, position: Position, doc: Parser.JSONDocument): Thenable<CompletionList> {
|
|
1954
|
-
|
|
1955
|
-
const result: CompletionList = {
|
|
1956
|
-
items: [],
|
|
1957
|
-
isIncomplete: false
|
|
1958
|
-
};
|
|
1959
|
-
|
|
1960
|
-
const text = document.getText();
|
|
1961
|
-
|
|
1962
|
-
const offset = document.offsetAt(position);
|
|
1963
|
-
let node = doc.getNodeFromOffset(offset, true);
|
|
1964
|
-
if (this.isInComment(document, node ? node.offset : 0, offset)) {
|
|
1965
|
-
return Promise.resolve(result);
|
|
1966
|
-
}
|
|
1967
|
-
if (node && (offset === node.offset + node.length) && offset > 0) {
|
|
1968
|
-
const ch = text[offset - 1];
|
|
1969
|
-
if (node.type === 'object' && ch === '}' || node.type === 'array' && ch === ']') {
|
|
1970
|
-
// after ] or }
|
|
1971
|
-
node = node.parent;
|
|
1972
|
-
}
|
|
1973
|
-
}
|
|
1974
|
-
|
|
1975
|
-
const currentWord = this.getCurrentWord(document, offset);
|
|
1976
|
-
let overwriteRange: Range;
|
|
1977
|
-
|
|
1978
|
-
if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
|
|
1979
|
-
overwriteRange = Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));
|
|
1980
|
-
} else {
|
|
1981
|
-
let overwriteStart = offset - currentWord.length;
|
|
1982
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (overwriteStart > 0 && text[overwriteStart - 1] === '"') {
|
|
1983
|
-
<span class="cstat-no" title="statement not covered" > overwriteStart--;</span>
|
|
1984
|
-
}
|
|
1985
|
-
overwriteRange = Range.create(document.positionAt(overwriteStart), position);
|
|
1986
|
-
}
|
|
1987
|
-
|
|
1988
|
-
const supportsCommitCharacters = false; //this.doesSupportsCommitCharacters(); disabled for now, waiting for new API: https://github.com/microsoft/vscode/issues/42544
|
|
1989
|
-
|
|
1990
|
-
const proposed: { [key: string]: CompletionItem } = {};
|
|
1991
|
-
const collector: CompletionsCollector = {
|
|
1992
|
-
add: (suggestion: CompletionItem) => {
|
|
1993
|
-
let label = suggestion.label;
|
|
1994
|
-
const existing = proposed[label];
|
|
1995
|
-
if (!existing) {
|
|
1996
|
-
label = label.replace(/[\n]/g, '↵');
|
|
1997
|
-
if (label.length > 60) {
|
|
1998
|
-
const shortendedLabel = label.substr(0, 57).trim() + '...';
|
|
1999
|
-
if (!proposed[shortendedLabel]) {
|
|
2000
|
-
label = shortendedLabel;
|
|
2001
|
-
}
|
|
2002
|
-
}
|
|
2003
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (overwriteRange && suggestion.insertText !== undefined) {
|
|
2004
|
-
suggestion.textEdit = TextEdit.replace(overwriteRange, suggestion.insertText);
|
|
2005
|
-
}
|
|
2006
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (supportsCommitCharacters) {
|
|
2007
|
-
<span class="cstat-no" title="statement not covered" > suggestion.commitCharacters = suggestion.kind === CompletionItemKind.Property ? propertyCommitCharacters : valueCommitCharacters;</span>
|
|
2008
|
-
}
|
|
2009
|
-
suggestion.label = label;
|
|
2010
|
-
proposed[label] = suggestion;
|
|
2011
|
-
result.items.push(suggestion);
|
|
2012
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (!existing.documentation) {
|
|
2013
|
-
existing.documentation = suggestion.documentation;
|
|
2014
|
-
}
|
|
2015
|
-
},
|
|
2016
|
-
setAsIncomplete: <span class="fstat-no" title="function not covered" >() => {</span>
|
|
2017
|
-
<span class="cstat-no" title="statement not covered" > result.isIncomplete = true;</span>
|
|
2018
|
-
},
|
|
2019
|
-
error: <span class="fstat-no" title="function not covered" >(m</span>essage: string) => {
|
|
2020
|
-
<span class="cstat-no" title="statement not covered" > console.error(message);</span>
|
|
2021
|
-
},
|
|
2022
|
-
log: <span class="fstat-no" title="function not covered" >(m</span>essage: string) => {
|
|
2023
|
-
<span class="cstat-no" title="statement not covered" > console.log(message);</span>
|
|
2024
|
-
},
|
|
2025
|
-
getNumberOfProposals: () => {
|
|
2026
|
-
return result.items.length;
|
|
2027
|
-
}
|
|
2028
|
-
};
|
|
2029
|
-
|
|
2030
|
-
return this.schemaService.getSchemaForResource(document.uri, doc).then((schema) => {
|
|
2031
|
-
const collectionPromises: Thenable<any>[] = [];
|
|
2032
|
-
|
|
2033
|
-
let addValue = true;
|
|
2034
|
-
let currentKey = '';
|
|
2035
|
-
|
|
2036
|
-
let currentProperty: PropertyASTNode | undefined = undefined;
|
|
2037
|
-
if (node) {
|
|
2038
|
-
|
|
2039
|
-
if (node.type === 'string') {
|
|
2040
|
-
const parent = node.parent;
|
|
2041
|
-
if (parent && parent.type === 'property' && parent.keyNode === node) {
|
|
2042
|
-
addValue = !parent.valueNode;
|
|
2043
|
-
currentProperty = parent;
|
|
2044
|
-
currentKey = text.substr(node.offset + 1, node.length - 2);
|
|
2045
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (parent) {
|
|
2046
|
-
node = parent.parent;
|
|
2047
|
-
}
|
|
2048
|
-
}
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
|
-
|
|
2052
|
-
// proposals for properties
|
|
2053
|
-
if (node && node.type === 'object') {
|
|
2054
|
-
// don't suggest keys when the cursor is just before the opening curly brace
|
|
2055
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (node.offset === offset) {
|
|
2056
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
2057
|
-
}
|
|
2058
|
-
// don't suggest properties that are already present
|
|
2059
|
-
const properties = node.properties;
|
|
2060
|
-
properties.forEach(p => {
|
|
2061
|
-
if (!currentProperty || currentProperty !== p) {
|
|
2062
|
-
proposed[p.keyNode.value] = CompletionItem.create('__');
|
|
2063
|
-
}
|
|
2064
|
-
});
|
|
2065
|
-
let separatorAfter = '';
|
|
2066
|
-
if (addValue) {
|
|
2067
|
-
separatorAfter = this.evaluateSeparatorAfter(document, document.offsetAt(overwriteRange.end));
|
|
2068
|
-
}
|
|
2069
|
-
|
|
2070
|
-
if (schema) {
|
|
2071
|
-
// property proposals with schema
|
|
2072
|
-
this.getPropertyCompletions(schema, doc, node, addValue, separatorAfter, collector);
|
|
2073
|
-
} else {
|
|
2074
|
-
// property proposals without schema
|
|
2075
|
-
this.getSchemaLessPropertyCompletions(doc, node, currentKey, collector);
|
|
2076
|
-
}
|
|
2077
|
-
|
|
2078
|
-
const location = Parser.getNodePath(node);
|
|
2079
|
-
this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) => {
|
|
2080
|
-
const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectPropertyCompletions(document.uri, location, currentWord, addValue, separatorAfter === '', collector);</span>
|
|
2081
|
-
<span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
|
|
2082
|
-
<span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
|
|
2083
|
-
}
|
|
2084
|
-
});
|
|
2085
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if ((!schema && currentWord.length > 0 && text.charAt(offset - currentWord.length - 1) !== '"')) {
|
|
2086
|
-
<span class="cstat-no" title="statement not covered" > collector.add({</span>
|
|
2087
|
-
kind: CompletionItemKind.Property,
|
|
2088
|
-
label: this.getLabelForValue(currentWord),
|
|
2089
|
-
insertText: this.getInsertTextForProperty(currentWord, undefined, false, separatorAfter),
|
|
2090
|
-
insertTextFormat: InsertTextFormat.Snippet, documentation: '',
|
|
2091
|
-
});
|
|
2092
|
-
<span class="cstat-no" title="statement not covered" > collector.setAsIncomplete();</span>
|
|
2093
|
-
}
|
|
2094
|
-
}
|
|
2095
|
-
|
|
2096
|
-
// proposals for values
|
|
2097
|
-
const types: { [type: string]: boolean } = {};
|
|
2098
|
-
if (schema) {
|
|
2099
|
-
// value proposals with schema
|
|
2100
|
-
this.getValueCompletions(schema, doc, node, offset, document, collector, types);
|
|
2101
|
-
} else {
|
|
2102
|
-
// value proposals without schema
|
|
2103
|
-
this.getSchemaLessValueCompletions(doc, node, offset, document, collector);
|
|
2104
|
-
}
|
|
2105
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.contributions.length > 0) {
|
|
2106
|
-
<span class="cstat-no" title="statement not covered" > this.getContributedValueCompletions(doc, node, offset, document, collector, collectionPromises);</span>
|
|
2107
|
-
}
|
|
2108
|
-
|
|
2109
|
-
return this.promiseConstructor.all(collectionPromises).then(() => {
|
|
2110
|
-
if (collector.getNumberOfProposals() === 0) {
|
|
2111
|
-
let offsetForSeparator = offset;
|
|
2112
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
|
|
2113
|
-
<span class="cstat-no" title="statement not covered" > offsetForSeparator = node.offset + node.length;</span>
|
|
2114
|
-
}
|
|
2115
|
-
const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
|
|
2116
|
-
this.addFillerValueCompletions(types, separatorAfter, collector);
|
|
2117
|
-
}
|
|
2118
|
-
return result;
|
|
2119
|
-
});
|
|
2120
|
-
});
|
|
2121
|
-
}
|
|
2122
|
-
|
|
2123
|
-
private getPropertyCompletions(schema: SchemaService.ResolvedSchema, doc: Parser.JSONDocument, node: ASTNode, addValue: boolean, separatorAfter: string, collector: CompletionsCollector): void {
|
|
2124
|
-
const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset);
|
|
2125
|
-
matchingSchemas.forEach((s) => {
|
|
2126
|
-
if (s.node === node && !s.inverted) {
|
|
2127
|
-
const schemaProperties = s.schema.properties;
|
|
2128
|
-
if (schemaProperties) {
|
|
2129
|
-
Object.keys(schemaProperties).forEach((key: string) => {
|
|
2130
|
-
const propertySchema = schemaProperties[key];
|
|
2131
|
-
if (typeof propertySchema === 'object' && !propertySchema.deprecationMessage && !propertySchema.doNotSuggest) {
|
|
2132
|
-
const proposal: CompletionItem = {
|
|
2133
|
-
kind: CompletionItemKind.Property,
|
|
2134
|
-
label: key,
|
|
2135
|
-
insertText: this.getInsertTextForProperty(key, propertySchema, addValue, separatorAfter),
|
|
2136
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2137
|
-
filterText: this.getFilterTextForValue(key),
|
|
2138
|
-
documentation: this.fromMarkup(propertySchema.markdownDescription) || propertySchema.description || '',
|
|
2139
|
-
};
|
|
2140
|
-
if (proposal.insertText && endsWith(proposal.insertText, `$1${separatorAfter}`)) {
|
|
2141
|
-
proposal.command = {
|
|
2142
|
-
title: 'Suggest',
|
|
2143
|
-
command: 'editor.action.triggerSuggest'
|
|
2144
|
-
};
|
|
2145
|
-
}
|
|
2146
|
-
collector.add(proposal);
|
|
2147
|
-
}
|
|
2148
|
-
});
|
|
2149
|
-
}
|
|
2150
|
-
}
|
|
2151
|
-
});
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
|
-
private getSchemaLessPropertyCompletions(doc: Parser.JSONDocument, node: ASTNode, currentKey: string, collector: CompletionsCollector): void {
|
|
2155
|
-
const collectCompletionsForSimilarObject = (obj: ObjectASTNode) => {
|
|
2156
|
-
obj.properties.forEach((p) => {
|
|
2157
|
-
const key = p.keyNode.value;
|
|
2158
|
-
collector.add({
|
|
2159
|
-
kind: CompletionItemKind.Property,
|
|
2160
|
-
label: key,
|
|
2161
|
-
insertText: this.getInsertTextForValue(key, ''),
|
|
2162
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2163
|
-
filterText: this.getFilterTextForValue(key),
|
|
2164
|
-
documentation: ''
|
|
2165
|
-
});
|
|
2166
|
-
});
|
|
2167
|
-
};
|
|
2168
|
-
if (node.parent) {
|
|
2169
|
-
if (node.parent.type === 'property') {
|
|
2170
|
-
// if the object is a property value, check the tree for other objects that hang under a property of the same name
|
|
2171
|
-
const parentKey = node.parent.keyNode.value;
|
|
2172
|
-
doc.visit(n => {
|
|
2173
|
-
if (n.type === 'property' && n !== node.parent && n.keyNode.value === parentKey && n.valueNode && n.valueNode.type === 'object') {
|
|
2174
|
-
collectCompletionsForSimilarObject(n.valueNode);
|
|
2175
|
-
}
|
|
2176
|
-
return true;
|
|
2177
|
-
});
|
|
2178
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (node.parent.type === 'array') {
|
|
2179
|
-
// if the object is in an array, use all other array elements as similar objects
|
|
2180
|
-
node.parent.items.forEach(n => {
|
|
2181
|
-
if (n.type === 'object' && n !== node) {
|
|
2182
|
-
collectCompletionsForSimilarObject(n);
|
|
2183
|
-
}
|
|
2184
|
-
});
|
|
2185
|
-
}
|
|
2186
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (node.type === 'object') {
|
|
2187
|
-
collector.add({
|
|
2188
|
-
kind: CompletionItemKind.Property,
|
|
2189
|
-
label: '$schema',
|
|
2190
|
-
insertText: this.getInsertTextForProperty('$schema', undefined, true, ''),
|
|
2191
|
-
insertTextFormat: InsertTextFormat.Snippet, documentation: '',
|
|
2192
|
-
filterText: this.getFilterTextForValue("$schema")
|
|
2193
|
-
});
|
|
2194
|
-
}
|
|
2195
|
-
}
|
|
2196
|
-
|
|
2197
|
-
private getSchemaLessValueCompletions(doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector): void {
|
|
2198
|
-
let offsetForSeparator = offset;
|
|
2199
|
-
if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
|
|
2200
|
-
offsetForSeparator = node.offset + node.length;
|
|
2201
|
-
node = node.parent;
|
|
2202
|
-
}
|
|
2203
|
-
|
|
2204
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!node) {
|
|
2205
|
-
<span class="cstat-no" title="statement not covered" > collector.add({</span>
|
|
2206
|
-
kind: this.getSuggestionKind('object'),
|
|
2207
|
-
label: 'Empty object',
|
|
2208
|
-
insertText: this.getInsertTextForValue({}, ''),
|
|
2209
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2210
|
-
documentation: ''
|
|
2211
|
-
});
|
|
2212
|
-
<span class="cstat-no" title="statement not covered" > collector.add({</span>
|
|
2213
|
-
kind: this.getSuggestionKind('array'),
|
|
2214
|
-
label: 'Empty array',
|
|
2215
|
-
insertText: this.getInsertTextForValue([], ''),
|
|
2216
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2217
|
-
documentation: ''
|
|
2218
|
-
});
|
|
2219
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2220
|
-
}
|
|
2221
|
-
const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
|
|
2222
|
-
const collectSuggestionsForValues = (value: ASTNode) => {
|
|
2223
|
-
if (value.parent && !Parser.contains(value.parent, offset, true)) {
|
|
2224
|
-
collector.add({
|
|
2225
|
-
kind: this.getSuggestionKind(value.type),
|
|
2226
|
-
label: this.getLabelTextForMatchingNode(value, document),
|
|
2227
|
-
insertText: this.getInsertTextForMatchingNode(value, document, separatorAfter),
|
|
2228
|
-
insertTextFormat: InsertTextFormat.Snippet, documentation: ''
|
|
2229
|
-
});
|
|
2230
|
-
}
|
|
2231
|
-
if (value.type === 'boolean') {
|
|
2232
|
-
this.addBooleanValueCompletion(!value.value, separatorAfter, collector);
|
|
2233
|
-
}
|
|
2234
|
-
};
|
|
2235
|
-
|
|
2236
|
-
if (node.type === 'property') {
|
|
2237
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (offset > (node.colonOffset || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) {
|
|
2238
|
-
|
|
2239
|
-
const valueNode = node.valueNode;
|
|
2240
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (valueNode && (offset > (valueNode.offset + valueNode.length) || valueNode.type === 'object' || valueNode.type === 'array')) {
|
|
2241
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2242
|
-
}
|
|
2243
|
-
// suggest values at the same key
|
|
2244
|
-
const parentKey = node.keyNode.value;
|
|
2245
|
-
doc.visit(n => {
|
|
2246
|
-
if (n.type === 'property' && n.keyNode.value === parentKey && n.valueNode) {
|
|
2247
|
-
collectSuggestionsForValues(n.valueNode);
|
|
2248
|
-
}
|
|
2249
|
-
return true;
|
|
2250
|
-
});
|
|
2251
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (parentKey === '$schema' && <span class="branch-1 cbranch-no" title="branch not covered" >node.parent </span>&& <span class="branch-2 cbranch-no" title="branch not covered" >!node.parent.parent)</span> {
|
|
2252
|
-
<span class="cstat-no" title="statement not covered" > this.addDollarSchemaCompletions(separatorAfter, collector);</span>
|
|
2253
|
-
}
|
|
2254
|
-
}
|
|
2255
|
-
}
|
|
2256
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (node.type === 'array') {
|
|
2257
|
-
<span class="cstat-no" title="statement not covered" > if (node.parent && node.parent.type === 'property') {</span>
|
|
2258
|
-
|
|
2259
|
-
// suggest items of an array at the same key
|
|
2260
|
-
const parentKey = <span class="cstat-no" title="statement not covered" >node.parent.keyNode.value;</span>
|
|
2261
|
-
<span class="cstat-no" title="statement not covered" > doc.visit(<span class="fstat-no" title="function not covered" >(n</span>) => {</span>
|
|
2262
|
-
<span class="cstat-no" title="statement not covered" > if (n.type === 'property' && n.keyNode.value === parentKey && n.valueNode && n.valueNode.type === 'array') {</span>
|
|
2263
|
-
<span class="cstat-no" title="statement not covered" > n.valueNode.items.forEach(collectSuggestionsForValues);</span>
|
|
2264
|
-
}
|
|
2265
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
2266
|
-
});
|
|
2267
|
-
} else {
|
|
2268
|
-
// suggest items in the same array
|
|
2269
|
-
<span class="cstat-no" title="statement not covered" > node.items.forEach(collectSuggestionsForValues);</span>
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
|
-
}
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
private getValueCompletions(schema: SchemaService.ResolvedSchema, doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector, types: { [type: string]: boolean }): void {
|
|
2276
|
-
let offsetForSeparator = offset;
|
|
2277
|
-
let parentKey: string | undefined = undefined;
|
|
2278
|
-
let valueNode: ASTNode | undefined = undefined;
|
|
2279
|
-
|
|
2280
|
-
if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
|
|
2281
|
-
offsetForSeparator = node.offset + node.length;
|
|
2282
|
-
valueNode = node;
|
|
2283
|
-
node = node.parent;
|
|
2284
|
-
}
|
|
2285
|
-
|
|
2286
|
-
if (!node) {
|
|
2287
|
-
this.addSchemaValueCompletions(schema.schema, '', collector, types);
|
|
2288
|
-
return;
|
|
2289
|
-
}
|
|
2290
|
-
|
|
2291
|
-
if ((node.type === 'property') && offset > (node.colonOffset || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) {
|
|
2292
|
-
const valueNode = node.valueNode;
|
|
2293
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (valueNode && offset > (valueNode.offset + valueNode.length)) {
|
|
2294
|
-
<span class="cstat-no" title="statement not covered" > return; </span>// we are past the value node
|
|
2295
|
-
}
|
|
2296
|
-
parentKey = node.keyNode.value;
|
|
2297
|
-
node = node.parent;
|
|
2298
|
-
}
|
|
2299
|
-
|
|
2300
|
-
if (node && (parentKey !== undefined || node.type === 'array')) {
|
|
2301
|
-
const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
|
|
2302
|
-
|
|
2303
|
-
const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset, valueNode);
|
|
2304
|
-
for (const s of matchingSchemas) {
|
|
2305
|
-
if (s.node === node && !s.inverted && s.schema) {
|
|
2306
|
-
if (node.type === 'array' && s.schema.items) {
|
|
2307
|
-
if (Array.isArray(s.schema.items)) {
|
|
2308
|
-
const index = this.findItemAtOffset(node, document, offset);
|
|
2309
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (index < s.schema.items.length) {
|
|
2310
|
-
this.addSchemaValueCompletions(s.schema.items[index], separatorAfter, collector, types);
|
|
2311
|
-
}
|
|
2312
|
-
} else {
|
|
2313
|
-
this.addSchemaValueCompletions(s.schema.items, separatorAfter, collector, types);
|
|
2314
|
-
}
|
|
2315
|
-
}
|
|
2316
|
-
if (s.schema.properties && parentKey !== undefined) {
|
|
2317
|
-
const propertySchema = s.schema.properties[parentKey];
|
|
2318
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (propertySchema) {
|
|
2319
|
-
this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types);
|
|
2320
|
-
}
|
|
2321
|
-
}
|
|
2322
|
-
}
|
|
2323
|
-
}
|
|
2324
|
-
if (parentKey === '$schema' && !node.parent) {
|
|
2325
|
-
this.addDollarSchemaCompletions(separatorAfter, collector);
|
|
2326
|
-
}
|
|
2327
|
-
if (types['boolean']) {
|
|
2328
|
-
this.addBooleanValueCompletion(true, separatorAfter, collector);
|
|
2329
|
-
this.addBooleanValueCompletion(false, separatorAfter, collector);
|
|
2330
|
-
}
|
|
2331
|
-
if (types['null']) {
|
|
2332
|
-
this.addNullValueCompletion(separatorAfter, collector);
|
|
2333
|
-
}
|
|
2334
|
-
}
|
|
2335
|
-
|
|
2336
|
-
}
|
|
2337
|
-
|
|
2338
|
-
<span class="fstat-no" title="function not covered" > private g</span>etContributedValueCompletions(doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector, collectionPromises: Thenable<any>[]) {
|
|
2339
|
-
<span class="cstat-no" title="statement not covered" > if (!node) {</span>
|
|
2340
|
-
<span class="cstat-no" title="statement not covered" > this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) => {</span>
|
|
2341
|
-
const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectDefaultCompletions(document.uri, collector);</span>
|
|
2342
|
-
<span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
|
|
2343
|
-
<span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
|
|
2344
|
-
}
|
|
2345
|
-
});
|
|
2346
|
-
} else {
|
|
2347
|
-
<span class="cstat-no" title="statement not covered" > if (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null') {</span>
|
|
2348
|
-
<span class="cstat-no" title="statement not covered" > node = node.parent;</span>
|
|
2349
|
-
}
|
|
2350
|
-
<span class="cstat-no" title="statement not covered" > if (node && (node.type === 'property') && offset > (node.colonOffset || 0)) {</span>
|
|
2351
|
-
const parentKey = <span class="cstat-no" title="statement not covered" >node.keyNode.value;</span>
|
|
2352
|
-
|
|
2353
|
-
const valueNode = <span class="cstat-no" title="statement not covered" >node.valueNode;</span>
|
|
2354
|
-
<span class="cstat-no" title="statement not covered" > if ((!valueNode || offset <= (valueNode.offset + valueNode.length)) && node.parent) {</span>
|
|
2355
|
-
const location = <span class="cstat-no" title="statement not covered" >Parser.getNodePath(node.parent);</span>
|
|
2356
|
-
<span class="cstat-no" title="statement not covered" > this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) => {</span>
|
|
2357
|
-
const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectValueCompletions(document.uri, location, parentKey, collector);</span>
|
|
2358
|
-
<span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
|
|
2359
|
-
<span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
|
|
2360
|
-
}
|
|
2361
|
-
});
|
|
2362
|
-
}
|
|
2363
|
-
}
|
|
2364
|
-
}
|
|
2365
|
-
}
|
|
2366
|
-
|
|
2367
|
-
private addSchemaValueCompletions(schema: JSONSchemaRef, separatorAfter: string, collector: CompletionsCollector, types: { [type: string]: boolean }): void {
|
|
2368
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof schema === 'object') {
|
|
2369
|
-
this.addEnumValueCompletions(schema, separatorAfter, collector);
|
|
2370
|
-
this.addDefaultValueCompletions(schema, separatorAfter, collector);
|
|
2371
|
-
this.collectTypes(schema, types);
|
|
2372
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(schema.allOf)) {
|
|
2373
|
-
<span class="cstat-no" title="statement not covered" > schema.allOf.forEach(<span class="fstat-no" title="function not covered" >s </span>=> <span class="cstat-no" title="statement not covered" >this.addSchemaValueCompletions(s, separatorAfter, collector, types));</span></span>
|
|
2374
|
-
}
|
|
2375
|
-
if (Array.isArray(schema.anyOf)) {
|
|
2376
|
-
schema.anyOf.forEach(s => this.addSchemaValueCompletions(s, separatorAfter, collector, types));
|
|
2377
|
-
}
|
|
2378
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(schema.oneOf)) {
|
|
2379
|
-
<span class="cstat-no" title="statement not covered" > schema.oneOf.forEach(<span class="fstat-no" title="function not covered" >s </span>=> <span class="cstat-no" title="statement not covered" >this.addSchemaValueCompletions(s, separatorAfter, collector, types));</span></span>
|
|
2380
|
-
}
|
|
2381
|
-
}
|
|
2382
|
-
}
|
|
2383
|
-
|
|
2384
|
-
private addDefaultValueCompletions(schema: JSONSchema, separatorAfter: string, collector: CompletionsCollector, arrayDepth = 0): void {
|
|
2385
|
-
let hasProposals = false;
|
|
2386
|
-
if (isDefined(schema.default)) {
|
|
2387
|
-
let type = schema.type;
|
|
2388
|
-
let value = schema.default;
|
|
2389
|
-
for (let i = arrayDepth; i > 0; i--) {
|
|
2390
|
-
<span class="cstat-no" title="statement not covered" > value = [value];</span>
|
|
2391
|
-
<span class="cstat-no" title="statement not covered" > type = 'array';</span>
|
|
2392
|
-
}
|
|
2393
|
-
collector.add({
|
|
2394
|
-
kind: this.getSuggestionKind(type),
|
|
2395
|
-
label: this.getLabelForValue(value),
|
|
2396
|
-
insertText: this.getInsertTextForValue(value, separatorAfter),
|
|
2397
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2398
|
-
detail: localize('json.suggest.default', 'Default value')
|
|
2399
|
-
});
|
|
2400
|
-
hasProposals = true;
|
|
2401
|
-
}
|
|
2402
|
-
if (Array.isArray(schema.examples)) {
|
|
2403
|
-
schema.examples.forEach(example => {
|
|
2404
|
-
let type = schema.type;
|
|
2405
|
-
let value = example;
|
|
2406
|
-
for (let i = arrayDepth; i > 0; i--) {
|
|
2407
|
-
<span class="cstat-no" title="statement not covered" > value = [value];</span>
|
|
2408
|
-
<span class="cstat-no" title="statement not covered" > type = 'array';</span>
|
|
2409
|
-
}
|
|
2410
|
-
collector.add({
|
|
2411
|
-
kind: this.getSuggestionKind(type),
|
|
2412
|
-
label: this.getLabelForValue(value),
|
|
2413
|
-
insertText: this.getInsertTextForValue(value, separatorAfter),
|
|
2414
|
-
insertTextFormat: InsertTextFormat.Snippet
|
|
2415
|
-
});
|
|
2416
|
-
hasProposals = true;
|
|
2417
|
-
});
|
|
2418
|
-
}
|
|
2419
|
-
if (Array.isArray(schema.defaultSnippets)) {
|
|
2420
|
-
schema.defaultSnippets.forEach(s => {
|
|
2421
|
-
let type = schema.type;
|
|
2422
|
-
let value = s.body;
|
|
2423
|
-
let label = s.label;
|
|
2424
|
-
let insertText: string;
|
|
2425
|
-
let filterText: string;
|
|
2426
|
-
if (isDefined(value)) {
|
|
2427
|
-
let type = schema.type;
|
|
2428
|
-
for (let i = arrayDepth; i > 0; i--) {
|
|
2429
|
-
value = [value];
|
|
2430
|
-
type = 'array';
|
|
2431
|
-
}
|
|
2432
|
-
insertText = this.getInsertTextForSnippetValue(value, separatorAfter);
|
|
2433
|
-
filterText = this.getFilterTextForSnippetValue(value);
|
|
2434
|
-
label = label || this.getLabelForSnippetValue(value);
|
|
2435
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof s.bodyText === 'string') {
|
|
2436
|
-
let prefix = '', suffix = '', indent = '';
|
|
2437
|
-
for (let i = arrayDepth; i > 0; i--) {
|
|
2438
|
-
prefix = prefix + indent + '[\n';
|
|
2439
|
-
suffix = suffix + '\n' + indent + ']';
|
|
2440
|
-
indent += '\t';
|
|
2441
|
-
type = 'array';
|
|
2442
|
-
}
|
|
2443
|
-
insertText = prefix + indent + s.bodyText.split('\n').join('\n' + indent) + suffix + separatorAfter;
|
|
2444
|
-
label = label || <span class="branch-1 cbranch-no" title="branch not covered" >insertText,</span>
|
|
2445
|
-
filterText = insertText.replace(/[\n]/g, ''); // remove new lines
|
|
2446
|
-
} else {
|
|
2447
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2448
|
-
}
|
|
2449
|
-
collector.add({
|
|
2450
|
-
kind: this.getSuggestionKind(type),
|
|
2451
|
-
label,
|
|
2452
|
-
documentation: this.fromMarkup(s.markdownDescription) || s.description,
|
|
2453
|
-
insertText,
|
|
2454
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2455
|
-
filterText
|
|
2456
|
-
});
|
|
2457
|
-
hasProposals = true;
|
|
2458
|
-
});
|
|
2459
|
-
}
|
|
2460
|
-
if (!hasProposals && typeof schema.items === 'object' && !Array.isArray(schema.items) && arrayDepth < 5 /* beware of recursion */) {
|
|
2461
|
-
this.addDefaultValueCompletions(schema.items, separatorAfter, collector, arrayDepth + 1);
|
|
2462
|
-
}
|
|
2463
|
-
}
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
private addEnumValueCompletions(schema: JSONSchema, separatorAfter: string, collector: CompletionsCollector): void {
|
|
2467
|
-
if (isDefined(schema.const)) {
|
|
2468
|
-
collector.add({
|
|
2469
|
-
kind: this.getSuggestionKind(schema.type),
|
|
2470
|
-
label: this.getLabelForValue(schema.const),
|
|
2471
|
-
insertText: this.getInsertTextForValue(schema.const, separatorAfter),
|
|
2472
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2473
|
-
documentation: this.fromMarkup(schema.markdownDescription) || schema.description
|
|
2474
|
-
});
|
|
2475
|
-
}
|
|
2476
|
-
|
|
2477
|
-
if (Array.isArray(schema.enum)) {
|
|
2478
|
-
for (let i = 0, length = schema.enum.length; i < length; i++) {
|
|
2479
|
-
const enm = schema.enum[i];
|
|
2480
|
-
let documentation: string | MarkupContent | undefined = this.fromMarkup(schema.markdownDescription) || schema.description;
|
|
2481
|
-
if (schema.markdownEnumDescriptions && i < schema.markdownEnumDescriptions.length && this.doesSupportMarkdown()) {
|
|
2482
|
-
documentation = this.fromMarkup(schema.markdownEnumDescriptions[i]);
|
|
2483
|
-
} else if (schema.enumDescriptions && i < schema.enumDescriptions.length) {
|
|
2484
|
-
documentation = schema.enumDescriptions[i];
|
|
2485
|
-
}
|
|
2486
|
-
collector.add({
|
|
2487
|
-
kind: this.getSuggestionKind(schema.type),
|
|
2488
|
-
label: this.getLabelForValue(enm),
|
|
2489
|
-
insertText: this.getInsertTextForValue(enm, separatorAfter),
|
|
2490
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2491
|
-
documentation
|
|
2492
|
-
});
|
|
2493
|
-
}
|
|
2494
|
-
}
|
|
2495
|
-
}
|
|
2496
|
-
|
|
2497
|
-
private collectTypes(schema: JSONSchema, types: { [type: string]: boolean }) {
|
|
2498
|
-
if (Array.isArray(schema.enum) || isDefined(schema.const)) {
|
|
2499
|
-
return;
|
|
2500
|
-
}
|
|
2501
|
-
const type = schema.type;
|
|
2502
|
-
if (Array.isArray(type)) {
|
|
2503
|
-
type.forEach(t => types[t] = true);
|
|
2504
|
-
} else if (type) {
|
|
2505
|
-
types[type] = true;
|
|
2506
|
-
}
|
|
2507
|
-
}
|
|
2508
|
-
|
|
2509
|
-
private addFillerValueCompletions(types: { [type: string]: boolean }, separatorAfter: string, collector: CompletionsCollector): void {
|
|
2510
|
-
if (types['object']) {
|
|
2511
|
-
collector.add({
|
|
2512
|
-
kind: this.getSuggestionKind('object'),
|
|
2513
|
-
label: '{}',
|
|
2514
|
-
insertText: this.getInsertTextForGuessedValue({}, separatorAfter),
|
|
2515
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2516
|
-
detail: localize('defaults.object', 'New object'),
|
|
2517
|
-
documentation: ''
|
|
2518
|
-
});
|
|
2519
|
-
}
|
|
2520
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (types['array']) {
|
|
2521
|
-
<span class="cstat-no" title="statement not covered" > collector.add({</span>
|
|
2522
|
-
kind: this.getSuggestionKind('array'),
|
|
2523
|
-
label: '[]',
|
|
2524
|
-
insertText: this.getInsertTextForGuessedValue([], separatorAfter),
|
|
2525
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2526
|
-
detail: localize('defaults.array', 'New array'),
|
|
2527
|
-
documentation: ''
|
|
2528
|
-
});
|
|
2529
|
-
}
|
|
2530
|
-
}
|
|
2531
|
-
|
|
2532
|
-
private addBooleanValueCompletion(value: boolean, separatorAfter: string, collector: CompletionsCollector): void {
|
|
2533
|
-
collector.add({
|
|
2534
|
-
kind: this.getSuggestionKind('boolean'),
|
|
2535
|
-
label: value ? 'true' : 'false',
|
|
2536
|
-
insertText: this.getInsertTextForValue(value, separatorAfter),
|
|
2537
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2538
|
-
documentation: ''
|
|
2539
|
-
});
|
|
2540
|
-
}
|
|
2541
|
-
|
|
2542
|
-
private addNullValueCompletion(separatorAfter: string, collector: CompletionsCollector): void {
|
|
2543
|
-
collector.add({
|
|
2544
|
-
kind: this.getSuggestionKind('null'),
|
|
2545
|
-
label: 'null',
|
|
2546
|
-
insertText: 'null' + separatorAfter,
|
|
2547
|
-
insertTextFormat: InsertTextFormat.Snippet,
|
|
2548
|
-
documentation: ''
|
|
2549
|
-
});
|
|
2550
|
-
}
|
|
2551
|
-
|
|
2552
|
-
private addDollarSchemaCompletions(separatorAfter: string, collector: CompletionsCollector): void {
|
|
2553
|
-
const schemaIds = this.schemaService.getRegisteredSchemaIds(schema => schema === 'http' || <span class="branch-1 cbranch-no" title="branch not covered" >schema === 'https')</span>;
|
|
2554
|
-
schemaIds.forEach(schemaId => collector.add({
|
|
2555
|
-
kind: CompletionItemKind.Module,
|
|
2556
|
-
label: this.getLabelForValue(schemaId),
|
|
2557
|
-
filterText: this.getFilterTextForValue(schemaId),
|
|
2558
|
-
insertText: this.getInsertTextForValue(schemaId, separatorAfter),
|
|
2559
|
-
insertTextFormat: InsertTextFormat.Snippet, documentation: ''
|
|
2560
|
-
}));
|
|
2561
|
-
}
|
|
2562
|
-
|
|
2563
|
-
private getLabelForValue(value: any): string {
|
|
2564
|
-
return JSON.stringify(value);
|
|
2565
|
-
}
|
|
2566
|
-
|
|
2567
|
-
private getFilterTextForValue(value: any): string {
|
|
2568
|
-
return JSON.stringify(value);
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
private getFilterTextForSnippetValue(value: any): string {
|
|
2572
|
-
return JSON.stringify(value).replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1');
|
|
2573
|
-
}
|
|
2574
|
-
|
|
2575
|
-
private getLabelForSnippetValue(value: any): string {
|
|
2576
|
-
const label = JSON.stringify(value);
|
|
2577
|
-
return label.replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1');
|
|
2578
|
-
}
|
|
2579
|
-
|
|
2580
|
-
private getInsertTextForPlainText(text: string): string {
|
|
2581
|
-
return text.replace(/[\\\$\}]/g, '\\$&'); // escape $, \ and }
|
|
2582
|
-
}
|
|
2583
|
-
|
|
2584
|
-
private getInsertTextForValue(value: any, separatorAfter: string): string {
|
|
2585
|
-
var text = JSON.stringify(value, null, '\t');
|
|
2586
|
-
if (text === '{}') {
|
|
2587
|
-
return '{$1}' + separatorAfter;
|
|
2588
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (text === '[]') {
|
|
2589
|
-
<span class="cstat-no" title="statement not covered" > return '[$1]' + separatorAfter;</span>
|
|
2590
|
-
}
|
|
2591
|
-
return this.getInsertTextForPlainText(text + separatorAfter);
|
|
2592
|
-
}
|
|
2593
|
-
|
|
2594
|
-
private getInsertTextForSnippetValue(value: any, separatorAfter: string): string {
|
|
2595
|
-
const replacer = (value: any) => {
|
|
2596
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'string') {
|
|
2597
|
-
if (value[0] === '^') {
|
|
2598
|
-
return value.substr(1);
|
|
2599
|
-
}
|
|
2600
|
-
}
|
|
2601
|
-
return JSON.stringify(value);
|
|
2602
|
-
};
|
|
2603
|
-
return stringifyObject(value, '', replacer) + separatorAfter;
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
private getInsertTextForGuessedValue(value: any, separatorAfter: string): string {
|
|
2607
|
-
switch (typeof value) {
|
|
2608
|
-
case 'object':
|
|
2609
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (value === null) {
|
|
2610
|
-
<span class="cstat-no" title="statement not covered" > return '${1:null}' + separatorAfter;</span>
|
|
2611
|
-
}
|
|
2612
|
-
return this.getInsertTextForValue(value, separatorAfter);
|
|
2613
|
-
case 'string':
|
|
2614
|
-
let snippetValue = JSON.stringify(value);
|
|
2615
|
-
snippetValue = snippetValue.substr(1, snippetValue.length - 2); // remove quotes
|
|
2616
|
-
snippetValue = this.getInsertTextForPlainText(snippetValue); // escape \ and }
|
|
2617
|
-
return '"${1:' + snippetValue + '}"' + separatorAfter;
|
|
2618
|
-
case 'number':
|
|
2619
|
-
case 'boolean':
|
|
2620
|
-
return '${1:' + JSON.stringify(value) + '}' + separatorAfter;
|
|
2621
|
-
}
|
|
2622
|
-
<span class="cstat-no" title="statement not covered" > return this.getInsertTextForValue(value, separatorAfter);</span>
|
|
2623
|
-
}
|
|
2624
|
-
|
|
2625
|
-
private getSuggestionKind(type: any): CompletionItemKind {
|
|
2626
|
-
if (Array.isArray(type)) {
|
|
2627
|
-
const array = <any[]>type;
|
|
2628
|
-
type = array.length > 0 ? array[0] : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
2629
|
-
}
|
|
2630
|
-
if (!type) {
|
|
2631
|
-
return CompletionItemKind.Value;
|
|
2632
|
-
}
|
|
2633
|
-
switch (type) {
|
|
2634
|
-
case 'string': return CompletionItemKind.Value;
|
|
2635
|
-
case 'object': return CompletionItemKind.Module;
|
|
2636
|
-
<span class="branch-2 cbranch-no" title="branch not covered" > case 'property': <span class="cstat-no" title="statement not covered" >return CompletionItemKind.Property;</span></span>
|
|
2637
|
-
default: return CompletionItemKind.Value;
|
|
2638
|
-
}
|
|
2639
|
-
}
|
|
2640
|
-
|
|
2641
|
-
private getLabelTextForMatchingNode(node: ASTNode, document: TextDocument): string {
|
|
2642
|
-
switch (node.type) {
|
|
2643
|
-
<span class="branch-0 cbranch-no" title="branch not covered" > case 'array':</span>
|
|
2644
|
-
<span class="cstat-no" title="statement not covered" > return '[]';</span>
|
|
2645
|
-
case 'object':
|
|
2646
|
-
return '{}';
|
|
2647
|
-
default:
|
|
2648
|
-
const content = document.getText().substr(node.offset, node.length);
|
|
2649
|
-
return content;
|
|
2650
|
-
}
|
|
2651
|
-
}
|
|
2652
|
-
|
|
2653
|
-
private getInsertTextForMatchingNode(node: ASTNode, document: TextDocument, separatorAfter: string): string {
|
|
2654
|
-
switch (node.type) {
|
|
2655
|
-
<span class="branch-0 cbranch-no" title="branch not covered" > case 'array':</span>
|
|
2656
|
-
<span class="cstat-no" title="statement not covered" > return this.getInsertTextForValue([], separatorAfter);</span>
|
|
2657
|
-
case 'object':
|
|
2658
|
-
return this.getInsertTextForValue({}, separatorAfter);
|
|
2659
|
-
default:
|
|
2660
|
-
const content = document.getText().substr(node.offset, node.length) + separatorAfter;
|
|
2661
|
-
return this.getInsertTextForPlainText(content);
|
|
2662
|
-
}
|
|
2663
|
-
}
|
|
2664
|
-
|
|
2665
|
-
private getInsertTextForProperty(key: string, propertySchema: JSONSchema | undefined, addValue: boolean, separatorAfter: string): string {
|
|
2666
|
-
|
|
2667
|
-
const propertyText = this.getInsertTextForValue(key, '');
|
|
2668
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!addValue) {
|
|
2669
|
-
<span class="cstat-no" title="statement not covered" > return propertyText;</span>
|
|
2670
|
-
}
|
|
2671
|
-
const resultText = propertyText + ': ';
|
|
2672
|
-
|
|
2673
|
-
let value;
|
|
2674
|
-
let nValueProposals = 0;
|
|
2675
|
-
if (propertySchema) {
|
|
2676
|
-
if (Array.isArray(propertySchema.defaultSnippets)) {
|
|
2677
|
-
if (propertySchema.defaultSnippets.length === 1) {
|
|
2678
|
-
const body = propertySchema.defaultSnippets[0].body;
|
|
2679
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (isDefined(body)) {
|
|
2680
|
-
value = this.getInsertTextForSnippetValue(body, '');
|
|
2681
|
-
}
|
|
2682
|
-
}
|
|
2683
|
-
nValueProposals += propertySchema.defaultSnippets.length;
|
|
2684
|
-
}
|
|
2685
|
-
if (propertySchema.enum) {
|
|
2686
|
-
if (!value && propertySchema.enum.length === 1) {
|
|
2687
|
-
value = this.getInsertTextForGuessedValue(propertySchema.enum[0], '');
|
|
2688
|
-
}
|
|
2689
|
-
nValueProposals += propertySchema.enum.length;
|
|
2690
|
-
}
|
|
2691
|
-
if (isDefined(propertySchema.default)) {
|
|
2692
|
-
if (!value) {
|
|
2693
|
-
value = this.getInsertTextForGuessedValue(propertySchema.default, '');
|
|
2694
|
-
}
|
|
2695
|
-
nValueProposals++;
|
|
2696
|
-
}
|
|
2697
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(propertySchema.examples) && <span class="branch-1 cbranch-no" title="branch not covered" >propertySchema.examples.length)</span> {
|
|
2698
|
-
<span class="cstat-no" title="statement not covered" > if (!value) {</span>
|
|
2699
|
-
<span class="cstat-no" title="statement not covered" > value = this.getInsertTextForGuessedValue(propertySchema.examples[0], '');</span>
|
|
2700
|
-
}
|
|
2701
|
-
<span class="cstat-no" title="statement not covered" > nValueProposals += propertySchema.examples.length;</span>
|
|
2702
|
-
}
|
|
2703
|
-
if (nValueProposals === 0) {
|
|
2704
|
-
var type = Array.isArray(propertySchema.type) ? <span class="branch-0 cbranch-no" title="branch not covered" >propertySchema.type[0] </span>: propertySchema.type;
|
|
2705
|
-
if (!type) {
|
|
2706
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (propertySchema.properties) {
|
|
2707
|
-
<span class="cstat-no" title="statement not covered" > type = 'object';</span>
|
|
2708
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (propertySchema.items) {
|
|
2709
|
-
<span class="cstat-no" title="statement not covered" > type = 'array';</span>
|
|
2710
|
-
}
|
|
2711
|
-
}
|
|
2712
|
-
switch (type) {
|
|
2713
|
-
case 'boolean':
|
|
2714
|
-
value = '$1';
|
|
2715
|
-
break;
|
|
2716
|
-
case 'string':
|
|
2717
|
-
value = '"$1"';
|
|
2718
|
-
break;
|
|
2719
|
-
case 'object':
|
|
2720
|
-
value = '{$1}';
|
|
2721
|
-
break;
|
|
2722
|
-
case 'array':
|
|
2723
|
-
value = '[$1]';
|
|
2724
|
-
break;
|
|
2725
|
-
case 'number':
|
|
2726
|
-
case 'integer':
|
|
2727
|
-
value = '${1:0}';
|
|
2728
|
-
break;
|
|
2729
|
-
<span class="branch-6 cbranch-no" title="branch not covered" > case 'null':</span>
|
|
2730
|
-
<span class="cstat-no" title="statement not covered" > value = '${1:null}';</span>
|
|
2731
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2732
|
-
default:
|
|
2733
|
-
return propertyText;
|
|
2734
|
-
}
|
|
2735
|
-
}
|
|
2736
|
-
}
|
|
2737
|
-
if (!value || nValueProposals > 1) {
|
|
2738
|
-
value = '$1';
|
|
2739
|
-
}
|
|
2740
|
-
return resultText + value + separatorAfter;
|
|
2741
|
-
}
|
|
2742
|
-
|
|
2743
|
-
private getCurrentWord(document: TextDocument, offset: number) {
|
|
2744
|
-
var i = offset - 1;
|
|
2745
|
-
var text = document.getText();
|
|
2746
|
-
while (i >= 0 && ' \t\n\r\v":{[,]}'.indexOf(text.charAt(i)) === -1) {
|
|
2747
|
-
i--;
|
|
2748
|
-
}
|
|
2749
|
-
return text.substring(i + 1, offset);
|
|
2750
|
-
}
|
|
2751
|
-
|
|
2752
|
-
private evaluateSeparatorAfter(document: TextDocument, offset: number) {
|
|
2753
|
-
const scanner = Json.createScanner(document.getText(), true);
|
|
2754
|
-
scanner.setPosition(offset);
|
|
2755
|
-
const token = scanner.scan();
|
|
2756
|
-
switch (token) {
|
|
2757
|
-
case Json.SyntaxKind.CommaToken:
|
|
2758
|
-
case Json.SyntaxKind.CloseBraceToken:
|
|
2759
|
-
case Json.SyntaxKind.CloseBracketToken:
|
|
2760
|
-
case Json.SyntaxKind.EOF:
|
|
2761
|
-
return '';
|
|
2762
|
-
default:
|
|
2763
|
-
return ',';
|
|
2764
|
-
}
|
|
2765
|
-
}
|
|
2766
|
-
|
|
2767
|
-
private findItemAtOffset(node: ArrayASTNode, document: TextDocument, offset: number) {
|
|
2768
|
-
const scanner = Json.createScanner(document.getText(), true);
|
|
2769
|
-
const children = node.items;
|
|
2770
|
-
for (let i = children.length - 1; i >= 0; i--) {
|
|
2771
|
-
const child = children[i];
|
|
2772
|
-
if (offset > child.offset + child.length) {
|
|
2773
|
-
scanner.setPosition(child.offset + child.length);
|
|
2774
|
-
const token = scanner.scan();
|
|
2775
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (token === Json.SyntaxKind.CommaToken && offset >= scanner.getTokenOffset() + scanner.getTokenLength()) {
|
|
2776
|
-
return i + 1;
|
|
2777
|
-
}
|
|
2778
|
-
<span class="cstat-no" title="statement not covered" > return i;</span>
|
|
2779
|
-
} else if (offset >= child.offset) {
|
|
2780
|
-
return i;
|
|
2781
|
-
}
|
|
2782
|
-
}
|
|
2783
|
-
return 0;
|
|
2784
|
-
}
|
|
2785
|
-
|
|
2786
|
-
private isInComment(document: TextDocument, start: number, offset: number) {
|
|
2787
|
-
const scanner = Json.createScanner(document.getText(), false);
|
|
2788
|
-
scanner.setPosition(start);
|
|
2789
|
-
let token = scanner.scan();
|
|
2790
|
-
while (token !== Json.SyntaxKind.EOF && (scanner.getTokenOffset() + scanner.getTokenLength() < offset)) {
|
|
2791
|
-
token = scanner.scan();
|
|
2792
|
-
}
|
|
2793
|
-
return (token === Json.SyntaxKind.LineCommentTrivia || token === Json.SyntaxKind.BlockCommentTrivia) && scanner.getTokenOffset() <= offset;
|
|
2794
|
-
}
|
|
2795
|
-
|
|
2796
|
-
private fromMarkup(markupString: string | undefined): MarkupContent | string | undefined {
|
|
2797
|
-
if (markupString && this.doesSupportMarkdown()) {
|
|
2798
|
-
return {
|
|
2799
|
-
kind: MarkupKind.Markdown,
|
|
2800
|
-
value: markupString
|
|
2801
|
-
};
|
|
2802
|
-
}
|
|
2803
|
-
return undefined;
|
|
2804
|
-
}
|
|
2805
|
-
|
|
2806
|
-
private doesSupportMarkdown() {
|
|
2807
|
-
if (!isDefined(this.supportsMarkdown)) {
|
|
2808
|
-
const completion = this.clientCapabilities.textDocument && this.clientCapabilities.textDocument.completion;
|
|
2809
|
-
this.supportsMarkdown = completion && completion.completionItem && Array.isArray(completion.completionItem.documentationFormat) && completion.completionItem.documentationFormat.indexOf(MarkupKind.Markdown) !== -1;
|
|
2810
|
-
}
|
|
2811
|
-
return this.supportsMarkdown;
|
|
2812
|
-
}
|
|
2813
|
-
|
|
2814
|
-
<span class="fstat-no" title="function not covered" > private d</span>oesSupportsCommitCharacters() {
|
|
2815
|
-
<span class="cstat-no" title="statement not covered" > if (!isDefined(this.supportsCommitCharacters)) {</span>
|
|
2816
|
-
const completion = <span class="cstat-no" title="statement not covered" >this.clientCapabilities.textDocument && this.clientCapabilities.textDocument.completion;</span>
|
|
2817
|
-
<span class="cstat-no" title="statement not covered" > this.supportsCommitCharacters = completion && completion.completionItem && !!completion.completionItem.commitCharactersSupport;</span>
|
|
2818
|
-
}
|
|
2819
|
-
<span class="cstat-no" title="statement not covered" > return this.supportsCommitCharacters;</span>
|
|
2820
|
-
}
|
|
2821
|
-
|
|
2822
|
-
}
|
|
2823
|
-
</pre></td></tr></table></pre>
|
|
2824
|
-
|
|
2825
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2826
|
-
</div><!-- /wrapper -->
|
|
2827
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2828
|
-
Code coverage generated by
|
|
2829
|
-
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
2830
|
-
at Mon Apr 27 2020 21:56:17 GMT+0200 (Central European Summer Time)
|
|
2831
|
-
</div>
|
|
2832
|
-
</div>
|
|
2833
|
-
<script src="../../prettify.js"></script>
|
|
2834
|
-
<script>
|
|
2835
|
-
window.onload = function () {
|
|
2836
|
-
prettyPrint();
|
|
2837
|
-
};
|
|
2838
|
-
</script>
|
|
2839
|
-
<script src="../../sorter.js"></script>
|
|
2840
|
-
<script src="../../block-navigation.js"></script>
|
|
2841
|
-
</body>
|
|
2842
|
-
</html>
|
|
2843
|
-
|