@vizabi/reader-ddfcsv 4.3.5 → 4.3.10
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/.travis.yml +0 -0
- package/CHANGELOG.md +0 -0
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/deploy.js +0 -0
- package/dist/reader-ddfcsv-polyfill.js +1 -1
- package/dist/reader-ddfcsv-polyfill.js.map +1 -1
- package/dist/reader-ddfcsv.js +1 -1
- package/dist/reader-ddfcsv.js.map +1 -1
- package/icon.png +0 -0
- package/lib/src/ddf-csv.d.ts +0 -0
- package/lib/src/ddf-csv.js +8 -0
- package/lib/src/ddf-csv.js.map +1 -1
- package/lib/src/ddfcsv-error.d.ts +0 -0
- package/lib/src/ddfcsv-error.js +0 -0
- package/lib/src/ddfcsv-error.js.map +0 -0
- package/lib/src/ddfcsv-reader.d.ts +0 -0
- package/lib/src/ddfcsv-reader.js +1 -1
- package/lib/src/ddfcsv-reader.js.map +0 -0
- package/lib/src/file-readers/backend-file-reader.d.ts +0 -0
- package/lib/src/file-readers/backend-file-reader.js +0 -0
- package/lib/src/file-readers/backend-file-reader.js.map +0 -0
- package/lib/src/file-readers/github-path-adapter.d.ts +0 -0
- package/lib/src/file-readers/github-path-adapter.js +0 -0
- package/lib/src/file-readers/github-path-adapter.js.map +0 -0
- package/lib/src/index.d.ts +0 -0
- package/lib/src/index.js +0 -0
- package/lib/src/index.js.map +0 -0
- package/lib/src/interfaces.d.ts +0 -0
- package/lib/src/interfaces.js +0 -0
- package/lib/src/interfaces.js.map +0 -0
- package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.d.ts +0 -0
- package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.js +0 -0
- package/lib/src/resource-selection-optimizer/in-clause-under-conjunction.js.map +0 -0
- package/lib/src/resource-selection-optimizer/index.d.ts +0 -0
- package/lib/src/resource-selection-optimizer/index.js +0 -0
- package/lib/src/resource-selection-optimizer/index.js.map +0 -0
- package/lib-web/src/ddf-csv.d.ts +0 -0
- package/lib-web/src/ddf-csv.js +8 -0
- package/lib-web/src/ddf-csv.js.map +1 -1
- package/lib-web/src/ddfcsv-error.d.ts +0 -0
- package/lib-web/src/ddfcsv-error.js +0 -0
- package/lib-web/src/ddfcsv-error.js.map +0 -0
- package/lib-web/src/ddfcsv-reader.d.ts +0 -0
- package/lib-web/src/ddfcsv-reader.js +1 -1
- package/lib-web/src/ddfcsv-reader.js.map +0 -0
- package/lib-web/src/file-readers/frontend-file-reader.d.ts +0 -0
- package/lib-web/src/file-readers/frontend-file-reader.js +0 -0
- package/lib-web/src/file-readers/frontend-file-reader.js.map +0 -0
- package/lib-web/src/file-readers/github-path-adapter.d.ts +0 -0
- package/lib-web/src/file-readers/github-path-adapter.js +0 -0
- package/lib-web/src/file-readers/github-path-adapter.js.map +0 -0
- package/lib-web/src/index-web.d.ts +0 -0
- package/lib-web/src/index-web.js +0 -0
- package/lib-web/src/index-web.js.map +0 -0
- package/lib-web/src/interfaces.d.ts +0 -0
- package/lib-web/src/interfaces.js +0 -0
- package/lib-web/src/interfaces.js.map +0 -0
- package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.d.ts +0 -0
- package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.js +0 -0
- package/lib-web/src/resource-selection-optimizer/in-clause-under-conjunction.js.map +0 -0
- package/lib-web/src/resource-selection-optimizer/index.d.ts +0 -0
- package/lib-web/src/resource-selection-optimizer/index.js +0 -0
- package/lib-web/src/resource-selection-optimizer/index.js.map +0 -0
- package/package.json +1 -1
- package/scripts/set-own-version.js +0 -0
- package/src/ddf-csv.ts +9 -0
- package/src/ddfcsv-error.ts +0 -0
- package/src/ddfcsv-reader.ts +0 -0
- package/src/file-readers/backend-file-reader.ts +0 -0
- package/src/file-readers/frontend-file-reader.ts +0 -0
- package/src/file-readers/github-path-adapter.ts +0 -0
- package/src/index-web.ts +0 -0
- package/src/index.ts +0 -0
- package/src/interfaces.ts +0 -0
- package/src/resource-selection-optimizer/in-clause-under-conjunction.ts +0 -0
- package/src/resource-selection-optimizer/index.ts +0 -0
- package/src/test-cases/concepts.ts +0 -0
- package/src/test-cases/entities.ts +0 -0
- package/test/assets-fixtures/world-50m.json +0 -0
- package/test/assets.spec.ts +0 -0
- package/test/common.ts +0 -0
- package/test/definition/concepts-definition.spec.ts +0 -0
- package/test/definition/datapoints-definition.spec.ts +50 -0
- package/test/definition/entities-definition.spec.ts +0 -0
- package/test/definition/schema-definition.spec.ts +0 -0
- package/test/diagnostics.spec.ts +0 -0
- package/test/features-service.spec.ts +0 -0
- package/test/high-load.spec.ts +0 -0
- package/test/main.spec.ts +0 -0
- package/test/mocha.opts +0 -0
- package/test/multi-instances.spec.ts +0 -0
- package/test/result-fixtures/datapoints-assets.json +0 -0
- package/test/result-fixtures/in-clause-under-conjunction-1.json +0 -0
- package/test/result-fixtures/in-clause-under-conjunction-2.json +0 -0
- package/test/result-fixtures/multi-instances/concepts-sg.json +0 -0
- package/test/result-fixtures/multi-instances/concepts-soderstornsmodellen.json +0 -0
- package/test/result-fixtures/multi-instances/datapoints-sg.json +0 -0
- package/test/result-fixtures/multi-instances/datapoints-soderstornsmodellen.json +0 -0
- package/test/result-fixtures/multi-instances/entities-sg.json +0 -0
- package/test/result-fixtures/multi-instances/entities-soderstornsmodellen.json +0 -0
- package/test/result-fixtures/multi-instances/schema-sg.json +0 -0
- package/test/result-fixtures/multi-instances/schema-soderstornsmodellen.json +0 -0
- package/test/schema.spec.ts +0 -0
- package/test/tslint.json +0 -0
- package/tsconfig-web.json +0 -0
- package/tsconfig.json +0 -0
- package/tslint.json +0 -0
- package/.nyc_output/04da916d5240a86facf0fcb14d89854a.json +0 -1
- package/.nyc_output/b6c2172ea4b73ef30a769f84462d042b.json +0 -1
- package/coverage/base.css +0 -223
- package/coverage/block-navigation.js +0 -63
- package/coverage/index.html +0 -136
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -1
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -158
- package/coverage/src/ddf-csv.ts.html +0 -2799
- package/coverage/src/ddfcsv-error.ts.html +0 -132
- package/coverage/src/ddfcsv-reader.ts.html +0 -501
- package/coverage/src/file-readers/backend-file-reader.ts.html +0 -159
- package/coverage/src/file-readers/github-path-adapter.ts.html +0 -228
- package/coverage/src/file-readers/index.html +0 -110
- package/coverage/src/index.html +0 -136
- package/coverage/src/index.ts.html +0 -114
- package/coverage/src/resource-selection-optimizer/in-clause-under-conjunction.ts.html +0 -729
- package/coverage/src/resource-selection-optimizer/index.html +0 -110
- package/coverage/src/resource-selection-optimizer/index.ts.html +0 -102
- package/coverage/src/test-cases/concepts.ts.html +0 -150
- package/coverage/src/test-cases/entities.ts.html +0 -225
- package/coverage/src/test-cases/index.html +0 -110
|
@@ -1,2799 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for src/ddf-csv.ts</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../base.css" />
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<style type='text/css'>
|
|
10
|
-
.coverage-summary .sorter {
|
|
11
|
-
background-image: url(../sort-arrow-sprite.png);
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
</head>
|
|
15
|
-
<body>
|
|
16
|
-
<div class='wrapper'>
|
|
17
|
-
<div class='pad1'>
|
|
18
|
-
<h1>
|
|
19
|
-
<a href="../index.html">All files</a> / <a href="index.html">src</a> ddf-csv.ts
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">91.22% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>374/410</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">85.96% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>147/171</span>
|
|
31
|
-
</div>
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">92.13% </span>
|
|
34
|
-
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>117/127</span>
|
|
36
|
-
</div>
|
|
37
|
-
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">91.3% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>357/391</span>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
<p class="quiet">
|
|
44
|
-
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.
|
|
45
|
-
</p>
|
|
46
|
-
</div>
|
|
47
|
-
<div class='status-line high'></div>
|
|
48
|
-
<pre><table class="coverage">
|
|
49
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
50
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
51
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
52
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
53
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
54
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
55
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
56
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
57
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
58
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
59
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
60
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
61
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
62
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
63
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
64
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
65
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
66
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
67
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
68
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
69
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
70
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
71
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
72
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
73
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
74
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
75
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
76
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
77
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
78
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
79
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
80
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
81
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
82
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
83
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
84
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
85
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
86
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
87
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
88
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
89
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
90
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
91
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
92
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
93
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
94
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
95
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
96
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
97
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
98
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
99
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
100
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
101
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
102
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
103
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
104
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
105
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
106
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
107
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
108
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
109
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
110
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
111
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
112
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
113
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
114
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
115
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
116
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
117
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
118
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
119
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
120
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
121
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
122
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
123
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
124
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
125
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
126
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
127
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
128
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
129
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
130
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
131
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
132
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
133
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
134
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
135
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
136
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
137
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
138
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
139
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
140
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
141
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
142
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
143
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
144
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
145
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
146
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
147
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
148
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
149
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
150
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
151
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
152
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
153
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
154
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
155
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
156
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
157
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
158
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
159
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
160
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
161
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
162
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
163
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
164
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
165
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
166
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
167
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
168
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
169
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
170
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
171
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
172
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
173
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
174
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
175
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
176
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
177
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
178
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
179
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
180
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
181
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
182
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
183
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
184
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
185
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
186
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
187
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
188
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
189
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
190
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
191
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
192
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
193
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
194
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
195
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
196
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
197
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
198
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
199
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
200
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
201
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
202
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
203
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
204
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
205
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
206
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
207
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
208
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
209
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
210
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
211
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
212
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
213
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
214
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
215
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
216
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
217
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
218
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
219
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
220
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
221
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
222
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
223
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
224
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
225
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
226
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
227
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
228
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
229
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
230
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
231
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
232
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
233
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
234
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
235
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
236
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
237
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
238
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
239
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
240
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
241
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
242
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
243
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
244
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
245
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
246
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
247
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
248
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
249
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
250
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
251
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
252
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
253
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
254
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
255
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
256
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
257
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
258
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
259
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
260
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
261
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
262
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
263
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
264
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
265
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
266
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
267
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
268
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
269
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
270
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
271
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
272
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
273
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
274
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
275
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
276
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
277
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
278
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
279
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
280
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
281
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
282
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
283
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
284
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
285
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
286
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
287
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
288
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
289
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
290
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
291
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
292
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
293
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
294
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
295
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
296
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
297
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
298
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
299
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
300
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
301
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
302
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
303
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
304
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
305
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
306
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
307
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
308
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
309
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
310
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
311
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
312
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
313
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
314
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
315
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
316
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
317
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
318
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
319
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
320
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
321
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
322
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
323
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
324
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
325
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
326
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
327
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
328
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
329
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
330
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
331
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
332
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
333
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
334
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
335
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
336
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
337
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
338
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
339
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
340
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
341
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
342
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
343
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
344
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
345
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
346
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
347
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
348
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
349
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
350
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
351
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
352
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
353
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
354
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
355
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
356
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
357
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
358
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
359
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
360
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
361
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
362
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
363
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
364
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
365
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
366
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
367
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
368
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
369
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
370
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
371
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
372
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
373
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
374
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
375
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
376
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
377
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
378
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
379
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
380
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
381
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
382
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
383
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
384
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
385
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
386
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
387
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
388
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
389
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
390
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
391
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
392
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
393
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
394
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
395
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
396
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
397
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
398
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
399
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
400
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
401
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
402
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
403
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
404
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
405
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
406
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
407
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
408
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
409
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
410
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
411
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
412
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
413
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
414
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
415
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
416
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
417
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
418
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
419
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
420
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
421
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
422
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
423
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
424
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
425
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
426
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
427
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
428
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
429
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
430
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
431
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
432
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
433
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
434
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
435
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
436
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
437
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
438
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
439
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
440
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
441
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
442
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
443
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
444
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
445
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
446
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
447
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
448
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
449
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
450
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
451
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
452
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
453
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
454
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
455
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
456
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
457
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
458
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
459
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
460
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
461
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
462
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
463
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
464
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
465
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
466
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
467
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
468
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
469
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
470
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
471
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
472
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
473
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
474
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
475
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
476
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
477
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
478
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
479
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
480
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
481
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
482
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
483
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
484
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
485
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
486
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
487
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
488
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
489
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
490
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
491
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
492
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
493
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
494
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
495
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
496
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
497
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
498
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
499
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
500
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
501
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
502
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
503
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
504
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
505
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
506
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
507
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
508
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
509
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
510
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
511
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
512
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
513
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
514
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
515
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
516
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
517
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
518
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
519
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
520
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
521
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
522
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
523
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
524
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
525
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
526
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
527
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
528
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
529
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
530
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
531
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
532
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
533
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
534
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
535
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
536
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
537
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
538
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
539
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
540
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
541
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
542
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
543
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
544
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
545
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
546
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
547
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
548
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
549
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
550
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
551
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
552
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
553
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
554
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
555
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
556
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
557
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
558
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
559
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
560
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
561
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
562
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
563
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
564
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
565
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
566
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
567
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
568
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
569
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
570
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
571
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
572
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
573
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
574
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
575
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
576
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
577
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
578
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
579
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
580
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
581
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
582
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
583
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
584
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
585
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
586
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
587
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
588
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
589
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
590
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
591
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
592
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
593
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
594
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
595
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
596
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
597
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
598
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
599
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
600
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
601
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
602
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
603
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
604
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
605
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
606
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
607
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
608
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
609
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
610
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
611
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
612
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
613
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
614
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
615
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
616
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
617
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
618
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
619
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
620
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
621
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
622
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
623
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
624
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
625
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
626
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
627
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
628
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
629
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
630
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
631
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
632
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
633
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
634
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
635
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
636
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
637
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
638
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
639
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
640
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
641
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
642
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
643
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
644
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
645
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
646
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
647
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
648
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
649
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
650
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
651
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
652
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
653
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
654
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
655
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
656
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
657
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
658
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
659
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
660
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
661
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
662
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
663
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
664
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
665
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
666
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
667
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
668
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
669
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
670
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
671
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
672
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
673
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
674
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
675
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
676
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
677
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
678
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
679
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
680
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
681
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
682
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
683
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
684
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
685
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
686
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
687
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
688
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
689
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
690
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
691
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
692
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
693
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
694
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
695
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
696
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
697
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
698
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
699
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
700
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
701
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
702
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
703
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
704
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
705
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
706
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
707
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
708
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
709
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
710
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
711
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
712
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
713
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
714
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
715
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
716
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
717
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
718
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
719
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
720
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
721
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
722
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
723
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
724
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
725
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
726
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
727
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
728
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
729
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
730
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
731
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
732
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
733
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
734
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
735
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
736
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
737
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
738
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
739
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
740
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
741
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
742
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
743
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
744
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
745
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
746
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
747
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
748
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
749
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
750
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
751
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
752
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
753
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
754
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
755
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
756
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
757
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
758
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
759
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
760
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
761
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
762
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
763
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
764
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
765
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
766
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
767
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
768
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
769
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
770
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
771
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
772
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
773
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
774
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
775
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
776
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
777
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
778
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
779
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
780
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
781
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
782
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
783
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
784
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
785
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
786
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
787
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
788
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
789
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
790
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
791
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
792
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
793
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
794
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
795
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
796
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
797
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
798
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
799
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
800
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
801
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
802
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
803
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
804
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
805
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
806
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
807
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
808
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
809
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
810
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
811
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
812
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
813
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
814
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
815
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
816
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
817
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
818
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
819
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
820
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
821
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
822
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
823
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
824
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
825
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
826
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
827
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
828
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
829
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
830
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
831
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
832
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
833
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
834
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
835
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
836
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
837
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
838
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
839
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
840
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
841
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
842
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
843
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
844
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
845
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
846
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
847
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
848
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
849
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
850
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
851
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
852
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
853
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
854
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
855
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
856
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
857
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
858
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
859
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
860
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
861
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
862
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
863
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
864
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
865
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
866
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
867
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
868
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
869
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
870
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
871
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
872
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
873
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
874
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
875
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
876
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
877
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
878
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
879
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
880
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
881
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
882
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
883
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
884
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
885
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
886
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
887
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
888
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
889
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
890
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
891
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
892
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
893
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
894
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
895
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
896
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
897
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
898
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
899
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
900
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
901
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
902
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
903
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
904
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
905
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
906
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
907
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
908
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
909
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
910
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
911
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
912
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
913
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
914
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
915
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
916
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
917
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
918
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
919
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
920
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
921
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
922
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
923
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
924
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
925
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
926
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
927
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
928
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
929
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
930
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
931
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
932
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
933
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
934
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
935
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
936
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
937
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
938
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
939
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
940
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
941
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
942
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
943
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
944
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
945
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
946
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
947
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
948
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
949
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
950
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
951
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
952
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
953
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
954
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
955
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
956
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
957
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
958
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
959
|
-
<a name='L911'></a><a href='#L911'>911</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
960
|
-
<span class="cline-any cline-yes">1x</span>
|
|
961
|
-
<span class="cline-any cline-yes">1x</span>
|
|
962
|
-
<span class="cline-any cline-yes">1x</span>
|
|
963
|
-
<span class="cline-any cline-yes">1x</span>
|
|
964
|
-
<span class="cline-any cline-yes">1x</span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-yes">1x</span>
|
|
967
|
-
<span class="cline-any cline-yes">1x</span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-yes">826859x</span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-yes">1x</span>
|
|
973
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
979
|
-
<span class="cline-any cline-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-yes">7917818x</span>
|
|
981
|
-
<span class="cline-any cline-yes">3171x</span>
|
|
982
|
-
<span class="cline-any cline-no"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-yes">3249870x</span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-yes">451528x</span>
|
|
989
|
-
<span class="cline-any cline-no"> </span>
|
|
990
|
-
<span class="cline-any cline-yes">370385x</span>
|
|
991
|
-
<span class="cline-any cline-yes">4946x</span>
|
|
992
|
-
<span class="cline-any cline-yes">3758598x</span>
|
|
993
|
-
<span class="cline-any cline-yes">408x</span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
997
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1006
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1009
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1014
|
-
<span class="cline-any cline-yes">5530x</span>
|
|
1015
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1016
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-yes">5526x</span>
|
|
1020
|
-
<span class="cline-any cline-yes">5526x</span>
|
|
1021
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1022
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1023
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1026
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1050
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1051
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-no"> </span>
|
|
1058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1064
|
-
<span class="cline-any cline-yes">123269x</span>
|
|
1065
|
-
<span class="cline-any cline-yes">11482x</span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1092
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1093
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1097
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1100
|
-
<span class="cline-any cline-yes">22755x</span>
|
|
1101
|
-
<span class="cline-any cline-yes">22755x</span>
|
|
1102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
-
<span class="cline-any cline-yes">22755x</span>
|
|
1104
|
-
<span class="cline-any cline-no"> </span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </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">5528x</span>
|
|
1110
|
-
<span class="cline-any cline-yes">123269x</span>
|
|
1111
|
-
<span class="cline-any cline-no"> </span>
|
|
1112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-yes">11056x</span>
|
|
1124
|
-
<span class="cline-any cline-yes">156863x</span>
|
|
1125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-yes">5536x</span>
|
|
1129
|
-
<span class="cline-any cline-yes">5536x</span>
|
|
1130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-yes">5536x</span>
|
|
1133
|
-
<span class="cline-any cline-yes">5536x</span>
|
|
1134
|
-
<span class="cline-any cline-yes">5534x</span>
|
|
1135
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1136
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1137
|
-
<span class="cline-any cline-yes">5528x</span>
|
|
1138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
-
<span class="cline-any cline-yes">5516x</span>
|
|
1140
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
-
<span class="cline-any cline-yes">5497x</span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-yes">5497x</span>
|
|
1145
|
-
<span class="cline-any cline-yes">5497x</span>
|
|
1146
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1147
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1148
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-yes">5497x</span>
|
|
1154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-yes">20x</span>
|
|
1157
|
-
<span class="cline-any cline-yes">20x</span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-yes">5516x</span>
|
|
1161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1165
|
-
<span class="cline-any cline-yes">13240x</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-neutral"> </span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1174
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1179
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1192
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1195
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1202
|
-
<span class="cline-any cline-yes">4379145x</span>
|
|
1203
|
-
<span class="cline-any cline-yes">677402x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">677402x</span>
|
|
1205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1207
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1208
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1220
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1221
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1222
|
-
<span class="cline-any cline-yes">21220x</span>
|
|
1223
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1224
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1225
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1226
|
-
<span class="cline-any cline-yes">512588x</span>
|
|
1227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
-
<span class="cline-any cline-yes">13240x</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-neutral"> </span>
|
|
1234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1238
|
-
<span class="cline-any cline-yes">25x</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-neutral"> </span>
|
|
1248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
-
<span class="cline-any cline-yes">468381x</span>
|
|
1250
|
-
<span class="cline-any cline-yes">468381x</span>
|
|
1251
|
-
<span class="cline-any cline-yes">468381x</span>
|
|
1252
|
-
<span class="cline-any cline-yes">468381x</span>
|
|
1253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
-
<span class="cline-any cline-no"> </span>
|
|
1256
|
-
<span class="cline-any cline-no"> </span>
|
|
1257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1259
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1262
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1263
|
-
<span class="cline-any cline-yes">15x</span>
|
|
1264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1270
|
-
<span class="cline-any cline-yes">13204x</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-yes">36x</span>
|
|
1275
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1276
|
-
<span class="cline-any cline-yes">52x</span>
|
|
1277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1279
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1289
|
-
<span class="cline-any cline-yes">3683404x</span>
|
|
1290
|
-
<span class="cline-any cline-yes">5723346x</span>
|
|
1291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
-
<span class="cline-any cline-yes">5723346x</span>
|
|
1293
|
-
<span class="cline-any cline-yes">1706925x</span>
|
|
1294
|
-
<span class="cline-any cline-yes">4016421x</span>
|
|
1295
|
-
<span class="cline-any cline-yes">1640228x</span>
|
|
1296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
-
<span class="cline-any cline-yes">336251x</span>
|
|
1300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-yes">13350x</span>
|
|
1313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
-
<span class="cline-any cline-yes">13350x</span>
|
|
1315
|
-
<span class="cline-any cline-yes">5620x</span>
|
|
1316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
-
<span class="cline-any cline-yes">5620x</span>
|
|
1318
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1319
|
-
<span class="cline-any cline-yes">5584x</span>
|
|
1320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
-
<span class="cline-any cline-yes">22x</span>
|
|
1322
|
-
<span class="cline-any cline-yes">5562x</span>
|
|
1323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1330
|
-
<span class="cline-any cline-yes">5534x</span>
|
|
1331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
-
<span class="cline-any cline-yes">5491x</span>
|
|
1338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
-
<span class="cline-any cline-yes">13350x</span>
|
|
1342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1348
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1349
|
-
<span class="cline-any cline-yes">7692x</span>
|
|
1350
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1351
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1352
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1353
|
-
<span class="cline-any cline-no"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1371
|
-
<span class="cline-any cline-yes">26480x</span>
|
|
1372
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1373
|
-
<span class="cline-any cline-yes">7689x</span>
|
|
1374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
-
<span class="cline-any cline-yes">26480x</span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1382
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1383
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1384
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1385
|
-
<span class="cline-any cline-yes">11638x</span>
|
|
1386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1392
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1393
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1394
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
-
<span class="cline-any cline-no"> </span>
|
|
1399
|
-
<span class="cline-any cline-no"> </span>
|
|
1400
|
-
<span class="cline-any cline-no"> </span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
-
<span class="cline-any cline-yes">677402x</span>
|
|
1406
|
-
<span class="cline-any cline-yes">2943551x</span>
|
|
1407
|
-
<span class="cline-any cline-yes">149832x</span>
|
|
1408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1411
|
-
<span class="cline-any cline-yes">677402x</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-yes">16528323x</span>
|
|
1417
|
-
<span class="cline-any cline-yes">16916919x</span>
|
|
1418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
-
<span class="cline-any cline-yes">16916919x</span>
|
|
1420
|
-
<span class="cline-any cline-yes">9455969x</span>
|
|
1421
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1422
|
-
<span class="cline-any cline-yes">7460950x</span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
-
<span class="cline-any cline-yes">3232761x</span>
|
|
1425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
-
<span class="cline-any cline-yes">4228189x</span>
|
|
1429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1435
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
-
<span class="cline-any cline-yes">27x</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">27x</span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1452
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
-
<span class="cline-any cline-yes">1658x</span>
|
|
1461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
-
<span class="cline-any cline-yes">13307x</span>
|
|
1469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
-
<span class="cline-any cline-yes">13307x</span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-yes">5569x</span>
|
|
1473
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-yes">5533x</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">13307x</span>
|
|
1480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
-
<span class="cline-any cline-yes">26244x</span>
|
|
1490
|
-
<span class="cline-any cline-yes">26244x</span>
|
|
1491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
-
<span class="cline-any cline-yes">26244x</span>
|
|
1493
|
-
<span class="cline-any cline-yes">195161x</span>
|
|
1494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
-
<span class="cline-any cline-yes">195161x</span>
|
|
1496
|
-
<span class="cline-any cline-yes">27121x</span>
|
|
1497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
-
<span class="cline-any cline-yes">26244x</span>
|
|
1501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1511
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1512
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1515
|
-
<span class="cline-any cline-yes">5570x</span>
|
|
1516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1518
|
-
<span class="cline-any cline-yes">3717x</span>
|
|
1519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1520
|
-
<span class="cline-any cline-yes">3717x</span>
|
|
1521
|
-
<span class="cline-any cline-yes">3926x</span>
|
|
1522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1523
|
-
<span class="cline-any cline-yes">23276x</span>
|
|
1524
|
-
<span class="cline-any cline-yes">2616x</span>
|
|
1525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
-
<span class="cline-any cline-neutral"> </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-yes">20660x</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-neutral"> </span>
|
|
1537
|
-
<span class="cline-any cline-yes">1211x</span>
|
|
1538
|
-
<span class="cline-any cline-yes">3926x</span>
|
|
1539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1540
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1548
|
-
<span class="cline-any cline-yes">2190x</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-yes">2190x</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-neutral"> </span>
|
|
1557
|
-
<span class="cline-any cline-yes">28221x</span>
|
|
1558
|
-
<span class="cline-any cline-yes">26059x</span>
|
|
1559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1564
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1565
|
-
<span class="cline-any cline-yes">13240x</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-neutral"> </span>
|
|
1577
|
-
<span class="cline-any cline-yes">37622x</span>
|
|
1578
|
-
<span class="cline-any cline-yes">5583x</span>
|
|
1579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
-
<span class="cline-any cline-yes">12097x</span>
|
|
1583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
-
<span class="cline-any cline-yes">32039x</span>
|
|
1587
|
-
<span class="cline-any cline-yes">13211x</span>
|
|
1588
|
-
<span class="cline-any cline-yes">18854x</span>
|
|
1589
|
-
<span class="cline-any cline-yes">18854x</span>
|
|
1590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
-
<span class="cline-any cline-yes">18828x</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-yes">18828x</span>
|
|
1597
|
-
<span class="cline-any cline-yes">13417x</span>
|
|
1598
|
-
<span class="cline-any cline-yes">15222x</span>
|
|
1599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1601
|
-
<span class="cline-any cline-yes">18828x</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-yes">9287x</span>
|
|
1606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1607
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1609
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1612
|
-
<span class="cline-any cline-neutral"> </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-yes">9287x</span>
|
|
1619
|
-
<span class="cline-any cline-yes">5627691x</span>
|
|
1620
|
-
<span class="cline-any cline-yes">5627691x</span>
|
|
1621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1625
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
-
<span class="cline-any cline-yes">13240x</span>
|
|
1630
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1635
|
-
<span class="cline-any cline-yes">6305093x</span>
|
|
1636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
-
<span class="cline-any cline-yes">6305093x</span>
|
|
1638
|
-
<span class="cline-any cline-yes">23736497x</span>
|
|
1639
|
-
<span class="cline-any cline-yes">22892785x</span>
|
|
1640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1643
|
-
<span class="cline-any cline-yes">6305093x</span>
|
|
1644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1647
|
-
<span class="cline-any cline-yes">5627691x</span>
|
|
1648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
-
<span class="cline-any cline-yes">5627691x</span>
|
|
1650
|
-
<span class="cline-any cline-yes">19949234x</span>
|
|
1651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
-
<span class="cline-any cline-yes">5627691x</span>
|
|
1654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
-
<span class="cline-any cline-yes">22527x</span>
|
|
1658
|
-
<span class="cline-any cline-yes">15986x</span>
|
|
1659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1661
|
-
<span class="cline-any cline-yes">6541x</span>
|
|
1662
|
-
<span class="cline-any cline-yes">6541x</span>
|
|
1663
|
-
<span class="cline-any cline-yes">2609x</span>
|
|
1664
|
-
<span class="cline-any cline-yes">14291132x</span>
|
|
1665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
-
<span class="cline-any cline-yes">5707053x</span>
|
|
1667
|
-
<span class="cline-any cline-yes">1249640x</span>
|
|
1668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
-
<span class="cline-any cline-yes">1249640x</span>
|
|
1670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1671
|
-
<span class="cline-any cline-yes">4457413x</span>
|
|
1672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
-
<span class="cline-any cline-yes">2609x</span>
|
|
1676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
-
<span class="cline-any cline-yes">6541x</span>
|
|
1678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
-
<span class="cline-any cline-yes">1249640x</span>
|
|
1682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
-
<span class="cline-any cline-yes">1248546x</span>
|
|
1685
|
-
<span class="cline-any cline-yes">1248546x</span>
|
|
1686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1689
|
-
<span class="cline-any cline-yes">1094x</span>
|
|
1690
|
-
<span class="cline-any cline-yes">5476x</span>
|
|
1691
|
-
<span class="cline-any cline-yes">2901x</span>
|
|
1692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1694
|
-
<span class="cline-any cline-yes">1094x</span>
|
|
1695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
-
<span class="cline-any cline-no"> </span>
|
|
1698
|
-
<span class="cline-any cline-no"> </span>
|
|
1699
|
-
<span class="cline-any cline-no"> </span>
|
|
1700
|
-
<span class="cline-any cline-no"> </span>
|
|
1701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1702
|
-
<span class="cline-any cline-no"> </span>
|
|
1703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
-
<span class="cline-any cline-no"> </span>
|
|
1705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1706
|
-
<span class="cline-any cline-no"> </span>
|
|
1707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
-
<span class="cline-any cline-no"> </span>
|
|
1710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1714
|
-
<span class="cline-any cline-no"> </span>
|
|
1715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
-
<span class="cline-any cline-no"> </span>
|
|
1717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
-
<span class="cline-any cline-no"> </span>
|
|
1719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1722
|
-
<span class="cline-any cline-yes">308136x</span>
|
|
1723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
-
<span class="cline-any cline-yes">308136x</span>
|
|
1725
|
-
<span class="cline-any cline-yes">308136x</span>
|
|
1726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
-
<span class="cline-any cline-no"> </span>
|
|
1728
|
-
<span class="cline-any cline-neutral"> </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">9287x</span>
|
|
1733
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1736
|
-
<span class="cline-any cline-yes">9179x</span>
|
|
1737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1742
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1745
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1746
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1753
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
-
<span class="cline-any cline-yes">9308x</span>
|
|
1763
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1764
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1766
|
-
<span class="cline-any cline-yes">9287x</span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1772
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1773
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
-
<span class="cline-any cline-yes">305x</span>
|
|
1777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1781
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1783
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1786
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1787
|
-
<span class="cline-any cline-yes">9200x</span>
|
|
1788
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1789
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1792
|
-
<span class="cline-any cline-yes">9182x</span>
|
|
1793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
-
<span class="cline-any cline-yes">41215x</span>
|
|
1798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
-
<span class="cline-any cline-yes">41215x</span>
|
|
1800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-yes">9182x</span>
|
|
1803
|
-
<span class="cline-any cline-yes">9182x</span>
|
|
1804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1806
|
-
<span class="cline-any cline-no"> </span>
|
|
1807
|
-
<span class="cline-any cline-no"> </span>
|
|
1808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1816
|
-
<span class="cline-any cline-no"> </span>
|
|
1817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1820
|
-
<span class="cline-any cline-yes">111742x</span>
|
|
1821
|
-
<span class="cline-any cline-yes">33456x</span>
|
|
1822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
-
<span class="cline-any cline-yes">111742x</span>
|
|
1825
|
-
<span class="cline-any cline-yes">391673x</span>
|
|
1826
|
-
<span class="cline-any cline-yes">2414x</span>
|
|
1827
|
-
<span class="cline-any cline-yes">2414x</span>
|
|
1828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
-
<span class="cline-any cline-yes">391673x</span>
|
|
1830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
-
<span class="cline-any cline-yes">111742x</span>
|
|
1832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
-
<span class="cline-any cline-yes">111742x</span>
|
|
1834
|
-
<span class="cline-any cline-yes">111742x</span>
|
|
1835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1841
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1842
|
-
<span class="cline-any cline-no"> </span>
|
|
1843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1846
|
-
<span class="cline-any cline-yes">16597x</span>
|
|
1847
|
-
<span class="cline-any cline-yes">283725x</span>
|
|
1848
|
-
<span class="cline-any cline-yes">283725x</span>
|
|
1849
|
-
<span class="cline-any cline-yes">350974x</span>
|
|
1850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1852
|
-
<span class="cline-any cline-yes">283725x</span>
|
|
1853
|
-
<span class="cline-any cline-yes">200653x</span>
|
|
1854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1855
|
-
<span class="cline-any cline-yes">83072x</span>
|
|
1856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1860
|
-
<span class="cline-any cline-yes">5524x</span>
|
|
1861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1863
|
-
<span class="cline-any cline-yes">5543x</span>
|
|
1864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as includes from 'lodash.includes';
|
|
1870
|
-
import * as isEmpty from 'lodash.isempty';
|
|
1871
|
-
import * as stripBom from 'strip-bom';
|
|
1872
|
-
import { getAppropriatePlugin } from './resource-selection-optimizer';
|
|
1873
|
-
import { CSV_PARSING_ERROR, DDF_ERROR, DdfCsvError, FILE_READING_ERROR, JSON_PARSING_ERROR } from './ddfcsv-error';
|
|
1874
|
-
import { getFilePath, isSchemaQuery, validateQueryDefinitions, validateQueryStructure } from 'ddf-query-validator';
|
|
1875
|
-
|
|
1876
|
-
import * as Papa from 'papaparse';
|
|
1877
|
-
import { utcParse } from 'd3-time-format';
|
|
1878
|
-
import { IBaseReaderOptions, IDatapackage } from './interfaces';
|
|
1879
|
-
|
|
1880
|
-
const isValidNumeric = val => typeof val !== 'number' && !val ? false : true;
|
|
1881
|
-
|
|
1882
|
-
export function ddfCsvReader (logger?: any) {
|
|
1883
|
-
const internalConcepts = [
|
|
1884
|
-
{ concept: 'concept', concept_type: 'string', domain: null },
|
|
1885
|
-
{ concept: 'concept_type', concept_type: 'string', domain: null }
|
|
1886
|
-
];
|
|
1887
|
-
|
|
1888
|
-
const operators = new Map([
|
|
1889
|
-
/* logical operators */
|
|
1890
|
-
[ '$and', (row, predicates) => predicates.every(p => applyFilterRow(row, p)) ],
|
|
1891
|
-
[ '$or', (row, predicates) => predicates.some(p => applyFilterRow(row, p)) ],
|
|
1892
|
-
[ '$not', <span class="fstat-no" title="function not covered" >(r</span>ow, predicate) => <span class="cstat-no" title="statement not covered" >!applyFilterRow(row, predicate) </span>],
|
|
1893
|
-
[ '$nor', <span class="fstat-no" title="function not covered" >(r</span>ow, predicates) => <span class="cstat-no" title="statement not covered" >!predicates.some(<span class="fstat-no" title="function not covered" >p </span>=> <span class="cstat-no" title="statement not covered" >applyFilterRow(row, p))</span> </span>],
|
|
1894
|
-
|
|
1895
|
-
/* equality operators */
|
|
1896
|
-
[ '$eq', (rowValue, filterValue) => rowValue == filterValue ],
|
|
1897
|
-
[ '$ne', <span class="fstat-no" title="function not covered" >(r</span>owValue, filterValue) => <span class="cstat-no" title="statement not covered" >rowValue != filterValue </span>],
|
|
1898
|
-
[ '$gt', (rowValue, filterValue) => isValidNumeric(rowValue) && rowValue > filterValue ],
|
|
1899
|
-
[ '$gte', <span class="fstat-no" title="function not covered" >(r</span>owValue, filterValue) => <span class="cstat-no" title="statement not covered" >isValidNumeric(rowValue) && rowValue >= filterValue </span>],
|
|
1900
|
-
[ '$lt', (rowValue, filterValue) => isValidNumeric(rowValue) && rowValue < filterValue ],
|
|
1901
|
-
[ '$lte', (rowValue, filterValue) => isValidNumeric(rowValue) && rowValue <= filterValue ],
|
|
1902
|
-
[ '$in', (rowValue, filterValue) => filterValue.has(rowValue) ],
|
|
1903
|
-
[ '$nin', (rowValue, filterValue) => !filterValue.has(rowValue) ],
|
|
1904
|
-
]);
|
|
1905
|
-
|
|
1906
|
-
const keyValueLookup = new Map<string, any>();
|
|
1907
|
-
const resourcesLookup = new Map();
|
|
1908
|
-
|
|
1909
|
-
let optimalFilesSet = [];
|
|
1910
|
-
let datapackage;
|
|
1911
|
-
let datapackagePromise;
|
|
1912
|
-
let datasetWithConstraints = false;
|
|
1913
|
-
|
|
1914
|
-
function loadDataPackage (baseOptions: IBaseReaderOptions): Promise<IDatapackage> {
|
|
1915
|
-
const datapackagePath = getFilePath(baseOptions.basePath);
|
|
1916
|
-
const { debug, error } = baseOptions.diagnostic.prepareDiagnosticFor('loadDataPackage');
|
|
1917
|
-
|
|
1918
|
-
return new Promise((resolve, reject) => {
|
|
1919
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (datapackage) {
|
|
1920
|
-
<span class="cstat-no" title="statement not covered" > return resolve(datapackage);</span>
|
|
1921
|
-
}
|
|
1922
|
-
|
|
1923
|
-
baseOptions.fileReader.readText(datapackagePath, (err, data) => {
|
|
1924
|
-
if (err) {
|
|
1925
|
-
error('file reading', err);
|
|
1926
|
-
return reject(new DdfCsvError(FILE_READING_ERROR, err, datapackagePath));
|
|
1927
|
-
}
|
|
1928
|
-
|
|
1929
|
-
try {
|
|
1930
|
-
datapackage = JSON.parse(stripBom(data));
|
|
1931
|
-
optimalFilesSet = [];
|
|
1932
|
-
buildResourcesLookup(datapackage);
|
|
1933
|
-
buildKeyValueLookup(datapackage);
|
|
1934
|
-
} catch (parseErr) {
|
|
1935
|
-
error('json file parsing', parseErr);
|
|
1936
|
-
return reject(new DdfCsvError(JSON_PARSING_ERROR, parseErr.message, datapackagePath));
|
|
1937
|
-
}
|
|
1938
|
-
|
|
1939
|
-
debug('datapackage content is ready');
|
|
1940
|
-
|
|
1941
|
-
resolve(datapackage);
|
|
1942
|
-
});
|
|
1943
|
-
});
|
|
1944
|
-
}
|
|
1945
|
-
|
|
1946
|
-
async function loadConcepts (queryParam, options: IBaseReaderOptions): Promise<object> {
|
|
1947
|
-
const { error } = options.diagnostic.prepareDiagnosticFor('loadConcepts');
|
|
1948
|
-
// start off with internal concepts
|
|
1949
|
-
setConceptsLookup(internalConcepts, options);
|
|
1950
|
-
// query concepts
|
|
1951
|
-
const conceptQuery = {
|
|
1952
|
-
select: { key: [ 'concept' ], value: [ 'concept_type', 'domain' ] },
|
|
1953
|
-
from: 'concepts'
|
|
1954
|
-
};
|
|
1955
|
-
|
|
1956
|
-
let result;
|
|
1957
|
-
|
|
1958
|
-
// not using query() to circumvent the conceptPromise resolving
|
|
1959
|
-
try {
|
|
1960
|
-
const concepts = await queryData(conceptQuery, options);
|
|
1961
|
-
buildConceptsLookup(concepts, options);
|
|
1962
|
-
// with conceptsLookup built, we can parse other concept properties
|
|
1963
|
-
// according to their concept_type
|
|
1964
|
-
result = await reparseConcepts(options);
|
|
1965
|
-
} catch (err) {
|
|
1966
|
-
<span class="cstat-no" title="statement not covered" > error('concepts processing', err);</span>
|
|
1967
|
-
<span class="cstat-no" title="statement not covered" > throw err;</span>
|
|
1968
|
-
}
|
|
1969
|
-
return result;
|
|
1970
|
-
}
|
|
1971
|
-
|
|
1972
|
-
function buildConceptsLookup (concepts, options) {
|
|
1973
|
-
const entitySetMembershipConcepts = concepts
|
|
1974
|
-
.filter(concept => concept.concept_type === 'entity_set')
|
|
1975
|
-
.map(concept => ({
|
|
1976
|
-
concept: 'is--' + concept.concept,
|
|
1977
|
-
concept_type: 'boolean',
|
|
1978
|
-
domain: null
|
|
1979
|
-
}));
|
|
1980
|
-
|
|
1981
|
-
concepts = concepts
|
|
1982
|
-
.concat(entitySetMembershipConcepts)
|
|
1983
|
-
.concat(internalConcepts);
|
|
1984
|
-
|
|
1985
|
-
setConceptsLookup(concepts, options);
|
|
1986
|
-
}
|
|
1987
|
-
|
|
1988
|
-
/**
|
|
1989
|
-
* Iterates resources for query and applies parsing according to concept_type
|
|
1990
|
-
* of headers. Does not take into account join clause.
|
|
1991
|
-
* Impure function as it parses data in-place.
|
|
1992
|
-
* @return {[type]} [description]
|
|
1993
|
-
*/
|
|
1994
|
-
function reparseConcepts ({ conceptsLookup }) {
|
|
1995
|
-
const parsingFunctions = new Map<string, Function>([
|
|
1996
|
-
[ 'boolean', <span class="fstat-no" title="function not covered" >(s</span>tr) => <span class="cstat-no" title="statement not covered" >str === 'true' || str === 'TRUE' </span>],
|
|
1997
|
-
[ 'measure', <span class="fstat-no" title="function not covered" >(s</span>tr) => <span class="cstat-no" title="statement not covered" >parseFloat(str) </span>]
|
|
1998
|
-
]);
|
|
1999
|
-
|
|
2000
|
-
const resources = getResources([ 'concept' ]);
|
|
2001
|
-
|
|
2002
|
-
const resourceUpdates = [ ...resources ].map(resource => {
|
|
2003
|
-
return resource.data.then(response => {
|
|
2004
|
-
|
|
2005
|
-
// first find out which resource concepts need parsing
|
|
2006
|
-
const resourceConcepts = Object.keys(response.data[ 0 ]);
|
|
2007
|
-
const parsingConcepts = new Map<string, Function>();
|
|
2008
|
-
|
|
2009
|
-
resourceConcepts.forEach(concept => {
|
|
2010
|
-
const type = conceptsLookup.get(concept).concept_type;
|
|
2011
|
-
const fn = parsingFunctions.get(type);
|
|
2012
|
-
|
|
2013
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (fn) {
|
|
2014
|
-
<span class="cstat-no" title="statement not covered" > parsingConcepts.set(concept, fn);</span>
|
|
2015
|
-
}
|
|
2016
|
-
});
|
|
2017
|
-
|
|
2018
|
-
// then parse only those concepts
|
|
2019
|
-
return response.data.forEach(row => {
|
|
2020
|
-
for (const [ concept, parseFn ] of parsingConcepts) {
|
|
2021
|
-
<span class="cstat-no" title="statement not covered" > row[ concept ] = parseFn(row[ concept ]);</span>
|
|
2022
|
-
}
|
|
2023
|
-
});
|
|
2024
|
-
|
|
2025
|
-
});
|
|
2026
|
-
});
|
|
2027
|
-
|
|
2028
|
-
return Promise.all(resourceUpdates);
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2031
|
-
// can only take single-dimensional key
|
|
2032
|
-
function setConceptsLookup (concepts, options) {
|
|
2033
|
-
options.conceptsLookup.clear();
|
|
2034
|
-
concepts.forEach(row => options.conceptsLookup.set(row.concept, row));
|
|
2035
|
-
}
|
|
2036
|
-
|
|
2037
|
-
async function query (queryParam, _baseOptions: IBaseReaderOptions) {
|
|
2038
|
-
const baseOptions = Object.assign({}, _baseOptions);
|
|
2039
|
-
const { warning, error } = baseOptions.diagnostic.prepareDiagnosticFor('query');
|
|
2040
|
-
let data;
|
|
2041
|
-
|
|
2042
|
-
try {
|
|
2043
|
-
await validateQueryStructure(queryParam, baseOptions);
|
|
2044
|
-
baseOptions.datapackage = await (datapackagePromise || (datapackagePromise = loadDataPackage(baseOptions)));
|
|
2045
|
-
baseOptions.resourcesLookup = resourcesLookup;
|
|
2046
|
-
await loadConcepts(queryParam, baseOptions);
|
|
2047
|
-
await validateQueryDefinitions(queryParam, baseOptions);
|
|
2048
|
-
|
|
2049
|
-
if (isSchemaQuery(queryParam)) {
|
|
2050
|
-
data = await querySchema(queryParam, baseOptions);
|
|
2051
|
-
} else {
|
|
2052
|
-
const appropriatePlugin = datasetWithConstraints && getAppropriatePlugin(this, queryParam, baseOptions);
|
|
2053
|
-
|
|
2054
|
-
optimalFilesSet = [];
|
|
2055
|
-
if (appropriatePlugin) {
|
|
2056
|
-
const files = await appropriatePlugin.getRecommendedFilesSet();
|
|
2057
|
-
optimalFilesSet = files;
|
|
2058
|
-
queryParam.optimalFilesSet = [].concat(files, queryParam.optimalFilesSet);
|
|
2059
|
-
|
|
2060
|
-
warning('get custom optimal files list by a plugin', optimalFilesSet);
|
|
2061
|
-
}
|
|
2062
|
-
|
|
2063
|
-
data = await queryData(queryParam, baseOptions);
|
|
2064
|
-
}
|
|
2065
|
-
} catch (err) {
|
|
2066
|
-
error('general query error', err);
|
|
2067
|
-
throw err;
|
|
2068
|
-
}
|
|
2069
|
-
|
|
2070
|
-
return data;
|
|
2071
|
-
}
|
|
2072
|
-
|
|
2073
|
-
function queryData (queryParam, _options: IBaseReaderOptions) {
|
|
2074
|
-
const options = Object.assign({}, _options);
|
|
2075
|
-
const { debug } = options.diagnostic.prepareDiagnosticFor('queryData');
|
|
2076
|
-
const {
|
|
2077
|
-
select: { key = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span> value = [] },
|
|
2078
|
-
from = <span class="branch-0 cbranch-no" title="branch not covered" >'',</span>
|
|
2079
|
-
where = {},
|
|
2080
|
-
join = {},
|
|
2081
|
-
order_by = [],
|
|
2082
|
-
language
|
|
2083
|
-
} = queryParam;
|
|
2084
|
-
const select = { key, value };
|
|
2085
|
-
|
|
2086
|
-
debug('start all data loading', queryParam);
|
|
2087
|
-
|
|
2088
|
-
const projection = new Set(select.key.concat(select.value));
|
|
2089
|
-
const filterFields = getFilterFields(where).filter(field => from === 'entities' || !projection.has(field));
|
|
2090
|
-
// load all relevant resources
|
|
2091
|
-
const resourcesPromise = loadResources(select.key, [ ...select.value, ...filterFields ], language, options, queryParam);
|
|
2092
|
-
// list of entities selected from a join clause, later insterted in where clause
|
|
2093
|
-
const joinsPromise = getJoinFilters(join, queryParam, options);
|
|
2094
|
-
// filter which ensures result only includes queried entity sets
|
|
2095
|
-
const entitySetFilterPromise = getEntitySetFilter(select.key, queryParam, options);
|
|
2096
|
-
|
|
2097
|
-
return Promise.all([ resourcesPromise, entitySetFilterPromise, joinsPromise ])
|
|
2098
|
-
.then(([ resourceResponses, entitySetFilter, joinFilters ]) => {
|
|
2099
|
-
debug('finish all data loading', queryParam);
|
|
2100
|
-
// create filter from where, join filters and entity set filters
|
|
2101
|
-
const whereResolved = processWhere(where, joinFilters);
|
|
2102
|
-
const filter = mergeFilters(entitySetFilter, whereResolved);
|
|
2103
|
-
|
|
2104
|
-
debug('dataTables processing', queryParam);
|
|
2105
|
-
const dataTables = resourceResponses
|
|
2106
|
-
// rename key-columns and remove irrelevant value-columns
|
|
2107
|
-
.map(response => processResourceResponse(response, select, filterFields, options));
|
|
2108
|
-
|
|
2109
|
-
debug('queryResult processing', queryParam);
|
|
2110
|
-
// join (reduce) data to one data table
|
|
2111
|
-
const queryResult = joinData(select.key, 'overwrite', ...dataTables)
|
|
2112
|
-
.filter(row => applyFilterRow(row, filter)) // apply filters (entity sets and where (including join))
|
|
2113
|
-
.map(row => fillMissingValues(row, projection)) // fill any missing values with null values
|
|
2114
|
-
.map(row => projectRow(row, projection)); // remove fields used only for filtering
|
|
2115
|
-
|
|
2116
|
-
debug('result ordering', queryParam);
|
|
2117
|
-
orderData(queryResult, order_by);
|
|
2118
|
-
debug('final result is ready', queryParam);
|
|
2119
|
-
|
|
2120
|
-
return parseTime(queryResult, options);
|
|
2121
|
-
});
|
|
2122
|
-
}
|
|
2123
|
-
|
|
2124
|
-
/**
|
|
2125
|
-
* Parses time concept strings in result to Date objects
|
|
2126
|
-
* @param result
|
|
2127
|
-
* @param options
|
|
2128
|
-
*/
|
|
2129
|
-
function parseTime(result, options: IBaseReaderOptions) {
|
|
2130
|
-
const conceptsLookup = options.conceptsLookup;
|
|
2131
|
-
const concepts = Object.keys(result[0] || {});
|
|
2132
|
-
const timeConcepts = concepts.map(c => conceptsLookup.get(c) || {}).filter(co => co.concept_type == 'time');
|
|
2133
|
-
timeConcepts.forEach(({ concept }) => {
|
|
2134
|
-
const parse = getTimeParser(concept, options);
|
|
2135
|
-
result.forEach(row => {
|
|
2136
|
-
row[concept] = parse(row[concept]);
|
|
2137
|
-
});
|
|
2138
|
-
});
|
|
2139
|
-
return result;
|
|
2140
|
-
}
|
|
2141
|
-
|
|
2142
|
-
/**
|
|
2143
|
-
* Time parsers for DDF built-in time concepts
|
|
2144
|
-
* @param concept
|
|
2145
|
-
*/
|
|
2146
|
-
function getTimeParser(concept, options: IBaseReaderOptions) {
|
|
2147
|
-
const { error } = options.diagnostic.prepareDiagnosticFor('queryData');
|
|
2148
|
-
const parsers = {
|
|
2149
|
-
year: utcParse('%Y'),
|
|
2150
|
-
month: utcParse('%Y-%m'),
|
|
2151
|
-
day: utcParse('%Y%m%d'),
|
|
2152
|
-
hour: utcParse('%Y%m%dt%H'),
|
|
2153
|
-
minute: utcParse('%Y%m%dt%H%M'),
|
|
2154
|
-
second: utcParse('%Y%m%dt%H%M%S'),
|
|
2155
|
-
week: utcParse('%Yw%V'),
|
|
2156
|
-
quarter: utcParse('%Yq%q')
|
|
2157
|
-
};
|
|
2158
|
-
function tryParse(str) {
|
|
2159
|
-
for (const i in parsers) {
|
|
2160
|
-
const dateObject = parsers[i](str);
|
|
2161
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (dateObject) {
|
|
2162
|
-
return dateObject;
|
|
2163
|
-
}
|
|
2164
|
-
}
|
|
2165
|
-
<span class="cstat-no" title="statement not covered" > error('Could not parse time string: ' + str);</span>
|
|
2166
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
2167
|
-
}
|
|
2168
|
-
if (concept == 'time') {
|
|
2169
|
-
return tryParse;
|
|
2170
|
-
}
|
|
2171
|
-
if (!parsers[concept]) {
|
|
2172
|
-
error('No time parser found for time concept: ' + concept);
|
|
2173
|
-
return str => str;
|
|
2174
|
-
}
|
|
2175
|
-
return parsers[concept];
|
|
2176
|
-
}
|
|
2177
|
-
|
|
2178
|
-
function orderData (data, orderBy = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span> {
|
|
2179
|
-
if (orderBy.length === 0) {
|
|
2180
|
-
return;
|
|
2181
|
-
}
|
|
2182
|
-
|
|
2183
|
-
// process ["geo"] or [{"geo": "asc"}] to [{ concept: "geo", direction: 1 }];
|
|
2184
|
-
const orderNormalized = orderBy.map(orderPart => {
|
|
2185
|
-
if (typeof orderPart === 'string') {
|
|
2186
|
-
return { concept: orderPart, direction: 1 };
|
|
2187
|
-
} else {
|
|
2188
|
-
const concept = Object.keys(orderPart)[ 0 ];
|
|
2189
|
-
const direction = (orderPart[ concept ] === 'asc' ? 1 : -1);
|
|
2190
|
-
|
|
2191
|
-
return { concept, direction };
|
|
2192
|
-
}
|
|
2193
|
-
});
|
|
2194
|
-
|
|
2195
|
-
// sort by one or more fields
|
|
2196
|
-
const n = orderNormalized.length;
|
|
2197
|
-
|
|
2198
|
-
data.sort((a, b) => {
|
|
2199
|
-
for (let i = 0; i < n; i++) {
|
|
2200
|
-
const order = orderNormalized[ i ];
|
|
2201
|
-
|
|
2202
|
-
if (a[ order.concept ] < b[ order.concept ]) {
|
|
2203
|
-
return -1 * order.direction;
|
|
2204
|
-
} else if (a[ order.concept ] > b[ order.concept ]) {
|
|
2205
|
-
return 1 * order.direction;
|
|
2206
|
-
}
|
|
2207
|
-
}
|
|
2208
|
-
|
|
2209
|
-
return 0;
|
|
2210
|
-
});
|
|
2211
|
-
}
|
|
2212
|
-
|
|
2213
|
-
/**
|
|
2214
|
-
* Replaces `$join` placeholders with relevant `{ "$in": [...] }` operator.
|
|
2215
|
-
* Replaces $in- and $nin-arrays with sets for faster filtering
|
|
2216
|
-
* @param {Object} where Where clause possibly containing $join placeholders as field values.
|
|
2217
|
-
* @param {Object} joinFilters Collection of lists of entity or time values,
|
|
2218
|
-
* coming from other tables defined in query `join` clause.
|
|
2219
|
-
* @return {Object} Where clause with $join placeholders replaced by valid filter statements
|
|
2220
|
-
*/
|
|
2221
|
-
function processWhere (where, joinFilters) {
|
|
2222
|
-
const result = {};
|
|
2223
|
-
|
|
2224
|
-
for (const field in where) {
|
|
2225
|
-
const fieldValue = where[ field ];
|
|
2226
|
-
|
|
2227
|
-
if (includes([ '$and', '$or', '$nor' ], field)) {
|
|
2228
|
-
result[ field ] = fieldValue.map(subFilter => processWhere(subFilter, joinFilters));
|
|
2229
|
-
} else if (field === '$in' || field === '$nin') {
|
|
2230
|
-
// prepare "$in" fields for optimized lookup
|
|
2231
|
-
result[ field ] = new Set(fieldValue);
|
|
2232
|
-
} else if (typeof joinFilters[ fieldValue ] !== 'undefined') {
|
|
2233
|
-
// found a join!
|
|
2234
|
-
// not assigning to result[field] because joinFilter can contain $and/$or statements in case of
|
|
2235
|
-
// time concept (join-where is directly copied, not executed)
|
|
2236
|
-
// otherwise could end up with where: { year: { $and: [{ ... }]}}, which is invalid
|
|
2237
|
-
// (no boolean ops inside field objects)
|
|
2238
|
-
// in case of entity join, joinFilters contains correct field
|
|
2239
|
-
Object.assign(result, joinFilters[ fieldValue ]);
|
|
2240
|
-
} else if (typeof fieldValue === 'object') {
|
|
2241
|
-
// catches $not and fields with equality operator-objects
|
|
2242
|
-
// { <field>: { "$lt": 1500 }}
|
|
2243
|
-
result[ field ] = processWhere(fieldValue, joinFilters);
|
|
2244
|
-
} else {
|
|
2245
|
-
// catches rest, being all equality operators except for $in and $nin
|
|
2246
|
-
// { "$lt": 1500 }
|
|
2247
|
-
result[ field ] = fieldValue;
|
|
2248
|
-
}
|
|
2249
|
-
}
|
|
2250
|
-
|
|
2251
|
-
return result;
|
|
2252
|
-
}
|
|
2253
|
-
|
|
2254
|
-
function patchFilterForOrClause(filter) {
|
|
2255
|
-
|
|
2256
|
-
function processFilter(where) {
|
|
2257
|
-
const whereKeys = Object.keys(where);
|
|
2258
|
-
for (const key of whereKeys) {
|
|
2259
|
-
if (key == "$or") {
|
|
2260
|
-
where[key] = where[key].reduce((res, value) => {
|
|
2261
|
-
const valueKeys = Object.keys(value);
|
|
2262
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (valueKeys.length > 1) {
|
|
2263
|
-
<span class="cstat-no" title="statement not covered" > for (const key of valueKeys) {</span>
|
|
2264
|
-
<span class="cstat-no" title="statement not covered" > res.push({ [key]: value[key] });</span>
|
|
2265
|
-
}
|
|
2266
|
-
} else {
|
|
2267
|
-
res.push(value);
|
|
2268
|
-
}
|
|
2269
|
-
return res;
|
|
2270
|
-
}, []);
|
|
2271
|
-
}
|
|
2272
|
-
}
|
|
2273
|
-
return where;
|
|
2274
|
-
}
|
|
2275
|
-
|
|
2276
|
-
return processFilter(filter);
|
|
2277
|
-
}
|
|
2278
|
-
|
|
2279
|
-
function mergeFilters (...filters) {
|
|
2280
|
-
return filters.reduce((a, b) => {
|
|
2281
|
-
if (!isEmpty(b)) {
|
|
2282
|
-
patchFilterForOrClause(b);
|
|
2283
|
-
a.$and.push(b);
|
|
2284
|
-
}
|
|
2285
|
-
|
|
2286
|
-
return a;
|
|
2287
|
-
}, { $and: [] });
|
|
2288
|
-
}
|
|
2289
|
-
|
|
2290
|
-
function querySchema (queryParam, baseOptions: IBaseReaderOptions) {
|
|
2291
|
-
const { debug, error } = baseOptions.diagnostic.prepareDiagnosticFor('query');
|
|
2292
|
-
const getSchemaFromCollection = collectionPar => {
|
|
2293
|
-
debug(`get schema for collection ${collectionPar}`);
|
|
2294
|
-
return baseOptions.datapackage.ddfSchema[ collectionPar ].map(
|
|
2295
|
-
({ primaryKey, value }) => ({ key: primaryKey, value })
|
|
2296
|
-
);
|
|
2297
|
-
};
|
|
2298
|
-
|
|
2299
|
-
const collection = queryParam.from.split('.')[ 0 ];
|
|
2300
|
-
|
|
2301
|
-
if (baseOptions.datapackage.ddfSchema[ collection ]) {
|
|
2302
|
-
return getSchemaFromCollection(collection);
|
|
2303
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (collection === '*') {
|
|
2304
|
-
return Object.keys(baseOptions.datapackage.ddfSchema)
|
|
2305
|
-
.map(getSchemaFromCollection)
|
|
2306
|
-
.reduce((a, b) => a.concat(b));
|
|
2307
|
-
} else {
|
|
2308
|
-
const message = <span class="cstat-no" title="statement not covered" >`No valid collection (${collection}) for schema query`;</span>
|
|
2309
|
-
<span class="cstat-no" title="statement not covered" > error(message);</span>
|
|
2310
|
-
<span class="cstat-no" title="statement not covered" > throwError(new DdfCsvError(DDF_ERROR, message));</span>
|
|
2311
|
-
}
|
|
2312
|
-
}
|
|
2313
|
-
|
|
2314
|
-
function fillMissingValues (row, projection) {
|
|
2315
|
-
for (const field of projection) {
|
|
2316
|
-
if (typeof row[ field ] === 'undefined') {
|
|
2317
|
-
row[ field ] = null;
|
|
2318
|
-
}
|
|
2319
|
-
}
|
|
2320
|
-
|
|
2321
|
-
return row;
|
|
2322
|
-
}
|
|
2323
|
-
|
|
2324
|
-
function applyFilterRow (row, filter) {
|
|
2325
|
-
// implicit $and in filter object handled by .every()
|
|
2326
|
-
return Object.keys(filter).every(filterKey => {
|
|
2327
|
-
const operator = operators.get(filterKey);
|
|
2328
|
-
|
|
2329
|
-
if (operator) {
|
|
2330
|
-
return operator(row, filter[ filterKey ]);
|
|
2331
|
-
// assuming values are primitives not Number/Boolean/String objects
|
|
2332
|
-
} else if (typeof filter[ filterKey ] !== 'object') {
|
|
2333
|
-
// { <field>: <value> } is shorthand for { <field>: { $eq: <value> }}
|
|
2334
|
-
return operators.get('$eq')(row[ filterKey ], filter[ filterKey ]);
|
|
2335
|
-
} else {
|
|
2336
|
-
// filter[filterKey] is an object and will thus contain
|
|
2337
|
-
// an equality operator (no deep objects (like in Mongo) supported)
|
|
2338
|
-
return applyFilterRow(row[ filterKey ], filter[ filterKey ]);
|
|
2339
|
-
}
|
|
2340
|
-
});
|
|
2341
|
-
}
|
|
2342
|
-
|
|
2343
|
-
function getJoinFilters (join, queryParam, options) {
|
|
2344
|
-
return Promise.all(Object.keys(join).map(joinID => getJoinFilter(joinID, join[ joinID ], queryParam, options)))
|
|
2345
|
-
.then(results => results.reduce(mergeObjects, {}));
|
|
2346
|
-
}
|
|
2347
|
-
|
|
2348
|
-
function mergeObjects (a, b) {
|
|
2349
|
-
return Object.assign(a, b);
|
|
2350
|
-
}
|
|
2351
|
-
|
|
2352
|
-
function getJoinFilter (joinID, join, queryParam, options) {
|
|
2353
|
-
// assumption: join.key is same as field in where clause
|
|
2354
|
-
// - where: { geo: $geo }, join: { "$geo": { key: geo, where: { ... }}}
|
|
2355
|
-
// - where: { year: $year }, join: { "$year": { key: year, where { ... }}}
|
|
2356
|
-
if (options.conceptsLookup.get(join.key).concept_type === 'time') {
|
|
2357
|
-
// time, no query needed as time values are not explicit in the dataSource
|
|
2358
|
-
// assumption: there are no time-properties. E.g. data like <year>,population
|
|
2359
|
-
return Promise.resolve({ [ joinID ]: join.where });
|
|
2360
|
-
} else {
|
|
2361
|
-
// entity concept
|
|
2362
|
-
return queryData({
|
|
2363
|
-
select: { key: [ join.key ] },
|
|
2364
|
-
where: join.where,
|
|
2365
|
-
from: options.conceptsLookup.has(join.key) ? 'entities' : <span class="branch-1 cbranch-no" title="branch not covered" >'concepts'</span>
|
|
2366
|
-
}, Object.assign({ joinID }, options))
|
|
2367
|
-
.then(result => ({
|
|
2368
|
-
[ joinID ]: {
|
|
2369
|
-
[ join.key ]: {
|
|
2370
|
-
$in: new Set(result.map(row => row[ join.key ]))
|
|
2371
|
-
}
|
|
2372
|
-
}
|
|
2373
|
-
}));
|
|
2374
|
-
}
|
|
2375
|
-
}
|
|
2376
|
-
|
|
2377
|
-
function getFilterFields (filter) {
|
|
2378
|
-
const fields = [];
|
|
2379
|
-
|
|
2380
|
-
for (const field in filter) {
|
|
2381
|
-
// no support for deeper object structures (mongo style)
|
|
2382
|
-
if (includes([ '$and', '$or', '$not', '$nor' ], field)) {
|
|
2383
|
-
filter[ field ].map(getFilterFields).forEach(subFields => fields.push(...subFields));
|
|
2384
|
-
} else {
|
|
2385
|
-
fields.push(field);
|
|
2386
|
-
}
|
|
2387
|
-
}
|
|
2388
|
-
|
|
2389
|
-
return [...new Set(fields)];
|
|
2390
|
-
}
|
|
2391
|
-
|
|
2392
|
-
/**
|
|
2393
|
-
* Filter concepts by type
|
|
2394
|
-
* @param {Array} conceptStrings Array of concept strings to filter out. Default all concepts.
|
|
2395
|
-
* @param {Array} conceptTypes Array of concept types to filter out
|
|
2396
|
-
* @return {Array} Array of concept strings only of given types
|
|
2397
|
-
*/
|
|
2398
|
-
function filterConceptsByType (conceptTypes, queryKey, options) {
|
|
2399
|
-
const conceptStrings = queryKey || Array.from(options.conceptsLookup.keys());
|
|
2400
|
-
const concepts = [];
|
|
2401
|
-
|
|
2402
|
-
for (const conceptString of conceptStrings) {
|
|
2403
|
-
const concept = options.conceptsLookup.get(conceptString);
|
|
2404
|
-
|
|
2405
|
-
if (includes(conceptTypes, concept.concept_type)) {
|
|
2406
|
-
concepts.push(concept);
|
|
2407
|
-
}
|
|
2408
|
-
}
|
|
2409
|
-
|
|
2410
|
-
return concepts;
|
|
2411
|
-
}
|
|
2412
|
-
|
|
2413
|
-
/**
|
|
2414
|
-
* Find the aliases an entity concept can have
|
|
2415
|
-
* @param {Array} conceptStrings An array of concept strings for which entity aliases
|
|
2416
|
-
* are found if they're entity concepts
|
|
2417
|
-
* @return {Map} Map with all aliases as keys and the entity concept as value
|
|
2418
|
-
*/
|
|
2419
|
-
function getEntityConceptRenameMap (queryKey, resourceKey, options) {
|
|
2420
|
-
const resourceKeySet = new Set(resourceKey);
|
|
2421
|
-
const entityConceptTypes = [ 'entity_set', 'entity_domain' ];
|
|
2422
|
-
const queryEntityConcepts = filterConceptsByType(entityConceptTypes, queryKey, options);
|
|
2423
|
-
|
|
2424
|
-
if (queryEntityConcepts.length === 0) {
|
|
2425
|
-
return new Map();
|
|
2426
|
-
}
|
|
2427
|
-
|
|
2428
|
-
const allEntityConcepts = filterConceptsByType(entityConceptTypes, null, options);
|
|
2429
|
-
|
|
2430
|
-
return queryEntityConcepts
|
|
2431
|
-
.map(concept => allEntityConcepts
|
|
2432
|
-
.filter(lookupConcept => {
|
|
2433
|
-
if (concept.concept_type === 'entity_set') {
|
|
2434
|
-
return resourceKeySet.has(lookupConcept.concept) &&
|
|
2435
|
-
lookupConcept.concept !== concept.concept && // not the actual concept
|
|
2436
|
-
(
|
|
2437
|
-
lookupConcept.domain === concept.domain || // other entity sets in entity domain
|
|
2438
|
-
lookupConcept.concept === concept.domain // entity domain of the entity set
|
|
2439
|
-
);
|
|
2440
|
-
} else {
|
|
2441
|
-
// concept_type == "entity_domain"
|
|
2442
|
-
return resourceKeySet.has(lookupConcept.concept) &&
|
|
2443
|
-
lookupConcept.concept !== concept.concept && // not the actual concept
|
|
2444
|
-
lookupConcept.domain === concept.concept; // entity sets of the entity domain
|
|
2445
|
-
}
|
|
2446
|
-
})
|
|
2447
|
-
.reduce((map, aliasConcept) => map.set(aliasConcept.concept, concept.concept), new Map())
|
|
2448
|
-
).reduce((mapA, mapB) => new Map([ ...mapA, ...mapB ]), new Map());
|
|
2449
|
-
}
|
|
2450
|
-
|
|
2451
|
-
/**
|
|
2452
|
-
* Get a "$in" filter containing all entities for a entity concept.
|
|
2453
|
-
* @param {Array} conceptStrings Array of concept strings for which entities should be found
|
|
2454
|
-
* @return {Array} Array of filter objects for each entity concept
|
|
2455
|
-
*/
|
|
2456
|
-
function getEntitySetFilter (conceptStrings, queryParam, options) {
|
|
2457
|
-
const promises = filterConceptsByType([ 'entity_set' ], conceptStrings, options)
|
|
2458
|
-
.map(concept => queryData({
|
|
2459
|
-
select: { key: [ concept.domain ], value: [ 'is--' + concept.concept ] },
|
|
2460
|
-
from: 'entities'
|
|
2461
|
-
}, Object.assign({}, options))
|
|
2462
|
-
.then(result => ({
|
|
2463
|
-
[ concept.concept ]:
|
|
2464
|
-
{
|
|
2465
|
-
$in: new Set(
|
|
2466
|
-
result
|
|
2467
|
-
.filter(row => row[ 'is--' + concept.concept ])
|
|
2468
|
-
.map(row => row[ concept.domain ])
|
|
2469
|
-
)
|
|
2470
|
-
}
|
|
2471
|
-
}))
|
|
2472
|
-
);
|
|
2473
|
-
|
|
2474
|
-
return Promise.all(promises).then(results => {
|
|
2475
|
-
return results.reduce((a, b) => Object.assign(a, b), {});
|
|
2476
|
-
});
|
|
2477
|
-
}
|
|
2478
|
-
|
|
2479
|
-
/**
|
|
2480
|
-
* Returns all resources for a certain key value pair or multiple values for one key
|
|
2481
|
-
* @param {Array} key The key of the requested resources
|
|
2482
|
-
* @param {Array/string} value The value or values found in the requested resources
|
|
2483
|
-
* @return {Array} Array of resource objects
|
|
2484
|
-
*/
|
|
2485
|
-
function getResources (key, value?) {
|
|
2486
|
-
// value not given, load all resources for key
|
|
2487
|
-
if (!value || value.length === 0 || key[0] === value) {
|
|
2488
|
-
return new Set(
|
|
2489
|
-
[ ...keyValueLookup
|
|
2490
|
-
.get(createKeyString(key))
|
|
2491
|
-
.values()
|
|
2492
|
-
].reduce((a, b) => a.concat(b))
|
|
2493
|
-
);
|
|
2494
|
-
}
|
|
2495
|
-
// multiple values
|
|
2496
|
-
if (Array.isArray(value)) {
|
|
2497
|
-
return value
|
|
2498
|
-
.map(singleValue => getResources(key, singleValue))
|
|
2499
|
-
.reduce((resultSet, resources) => new Set([ ...resultSet, ...resources ]), new Set());
|
|
2500
|
-
}
|
|
2501
|
-
// one key, one value
|
|
2502
|
-
let oneKeyOneValueResourcesArray = keyValueLookup
|
|
2503
|
-
.get(createKeyString(key))
|
|
2504
|
-
.get(value);
|
|
2505
|
-
|
|
2506
|
-
if (oneKeyOneValueResourcesArray) {
|
|
2507
|
-
oneKeyOneValueResourcesArray = oneKeyOneValueResourcesArray
|
|
2508
|
-
.filter(v => isEmpty(optimalFilesSet) || includes(optimalFilesSet, v.path));
|
|
2509
|
-
}
|
|
2510
|
-
|
|
2511
|
-
return new Set(oneKeyOneValueResourcesArray);
|
|
2512
|
-
}
|
|
2513
|
-
|
|
2514
|
-
function processResourceResponse (response, select, filterFields, options) {
|
|
2515
|
-
const resourcePK = response.resource.schema.primaryKey;
|
|
2516
|
-
// all fields used for select or filters
|
|
2517
|
-
const resourceProjection = new Set([ ...resourcePK, ...select.value, ...filterFields ]);
|
|
2518
|
-
// rename map to rename relevant entity headers to requested entity concepts
|
|
2519
|
-
const renameMap = getEntityConceptRenameMap(select.key, resourcePK, options);
|
|
2520
|
-
|
|
2521
|
-
// Renaming must happen after projection to prevent ambiguity
|
|
2522
|
-
// E.g. a resource with `<geo>,name,region` fields.
|
|
2523
|
-
// Assume `region` is an entity set in domain `geo`.
|
|
2524
|
-
// { select: { key: ["region"], value: ["name"] } } is queried
|
|
2525
|
-
// If one did rename first the file would have headers `<region>,name,region`.
|
|
2526
|
-
// This would be invalid and make unambiguous projection impossible.
|
|
2527
|
-
// Thus we need to apply projection first with result: `<geo>,name`, then we can rename.
|
|
2528
|
-
return response.data
|
|
2529
|
-
.map(row => projectRow(row, resourceProjection)) // remove fields not used for select or filter
|
|
2530
|
-
.map(row => renameHeaderRow(row, renameMap)); // rename header rows (must happen **after** projection)
|
|
2531
|
-
}
|
|
2532
|
-
|
|
2533
|
-
function loadResources (key, value, language, options, queryParam) {
|
|
2534
|
-
const { debug } = options.diagnostic.prepareDiagnosticFor('loadResource');
|
|
2535
|
-
const resources = getResources(key, value);
|
|
2536
|
-
|
|
2537
|
-
debug('resources list by query', {queryParam, resources: [ ...resources ]});
|
|
2538
|
-
|
|
2539
|
-
return Promise.all([ ...resources ].map(
|
|
2540
|
-
resource => loadResource(resource, language, options)
|
|
2541
|
-
));
|
|
2542
|
-
}
|
|
2543
|
-
|
|
2544
|
-
function projectRow (row, projectionSet) {
|
|
2545
|
-
const result = {};
|
|
2546
|
-
|
|
2547
|
-
for (const concept of Object.keys(row)) {
|
|
2548
|
-
if (projectionSet.has(concept)) {
|
|
2549
|
-
result[ concept ] = row[ concept ];
|
|
2550
|
-
}
|
|
2551
|
-
}
|
|
2552
|
-
|
|
2553
|
-
return result;
|
|
2554
|
-
}
|
|
2555
|
-
|
|
2556
|
-
function renameHeaderRow (row, renameMap) {
|
|
2557
|
-
const result = {};
|
|
2558
|
-
|
|
2559
|
-
for (const concept of Object.keys(row)) {
|
|
2560
|
-
result[ renameMap.get(concept) || concept ] = row[ concept ];
|
|
2561
|
-
}
|
|
2562
|
-
|
|
2563
|
-
return result;
|
|
2564
|
-
}
|
|
2565
|
-
|
|
2566
|
-
function joinData (key, joinMode, ...data) {
|
|
2567
|
-
if (data.length === 1) {
|
|
2568
|
-
return data[ 0 ];
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
const canonicalKey = key.slice(0).sort();
|
|
2572
|
-
const dataMap = data.reduce((result, dataPar) => {
|
|
2573
|
-
dataPar.forEach(row => {
|
|
2574
|
-
const keyString = canonicalKey.map(concept => row[ concept ]).join(',');
|
|
2575
|
-
|
|
2576
|
-
if (result.has(keyString)) {
|
|
2577
|
-
const resultRow = result.get(keyString);
|
|
2578
|
-
|
|
2579
|
-
joinRow(resultRow, row, joinMode);
|
|
2580
|
-
} else {
|
|
2581
|
-
result.set(keyString, row);
|
|
2582
|
-
}
|
|
2583
|
-
});
|
|
2584
|
-
|
|
2585
|
-
return result;
|
|
2586
|
-
}, new Map());
|
|
2587
|
-
return [ ...dataMap.values() ];
|
|
2588
|
-
}
|
|
2589
|
-
|
|
2590
|
-
function joinRow (resultRow, sourceRow, mode) {
|
|
2591
|
-
switch (mode) {
|
|
2592
|
-
case 'overwrite':
|
|
2593
|
-
/* Simple alternative without empty value or error handling */
|
|
2594
|
-
Object.assign(resultRow, sourceRow);
|
|
2595
|
-
break;
|
|
2596
|
-
case 'translation':
|
|
2597
|
-
// Translation joining ignores empty values
|
|
2598
|
-
// and allows different values for strings (= translations)
|
|
2599
|
-
for (const concept in sourceRow) {
|
|
2600
|
-
if (sourceRow[ concept ] !== '') {
|
|
2601
|
-
resultRow[ concept ] = sourceRow[ concept ];
|
|
2602
|
-
}
|
|
2603
|
-
}
|
|
2604
|
-
break;
|
|
2605
|
-
<span class="branch-2 cbranch-no" title="branch not covered" > case 'overwriteWithError':</span>
|
|
2606
|
-
/* Alternative for "overwrite" with JOIN error detection */
|
|
2607
|
-
<span class="cstat-no" title="statement not covered" > for (const concept in sourceRow) {</span>
|
|
2608
|
-
<span class="cstat-no" title="statement not covered" > if (resultRow[ concept ] !== undefined && resultRow[ concept ] !== sourceRow[ concept ]) {</span>
|
|
2609
|
-
const sourceRowStr = <span class="cstat-no" title="statement not covered" >JSON.stringify(sourceRow);</span>
|
|
2610
|
-
const resultRowStr = <span class="cstat-no" title="statement not covered" >JSON.stringify(resultRow);</span>
|
|
2611
|
-
const errStr =
|
|
2612
|
-
<span class="cstat-no" title="statement not covered" > `JOIN Error: two resources have different data for "${concept}": ${sourceRowStr},${resultRowStr}`;</span>
|
|
2613
|
-
|
|
2614
|
-
<span class="cstat-no" title="statement not covered" > throwError(new DdfCsvError(DDF_ERROR, errStr));</span>
|
|
2615
|
-
} else {
|
|
2616
|
-
<span class="cstat-no" title="statement not covered" > resultRow[ concept ] = sourceRow[ concept ];</span>
|
|
2617
|
-
}
|
|
2618
|
-
}
|
|
2619
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2620
|
-
}
|
|
2621
|
-
}
|
|
2622
|
-
|
|
2623
|
-
function <span class="fstat-no" title="function not covered" >throwError </span>(error: DdfCsvError) {
|
|
2624
|
-
const currentLogger = <span class="cstat-no" title="statement not covered" >logger || console;</span>
|
|
2625
|
-
|
|
2626
|
-
<span class="cstat-no" title="statement not covered" > currentLogger.error(error.message);</span>
|
|
2627
|
-
|
|
2628
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
2629
|
-
}
|
|
2630
|
-
|
|
2631
|
-
function createKeyString (key, row = false) {
|
|
2632
|
-
const canonicalKey = key.slice(0).sort();
|
|
2633
|
-
|
|
2634
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!row) {
|
|
2635
|
-
return canonicalKey.join(',');
|
|
2636
|
-
} else {
|
|
2637
|
-
<span class="cstat-no" title="statement not covered" > return canonicalKey.map(<span class="fstat-no" title="function not covered" >concept</span> => <span class="cstat-no" title="statement not covered" >row[ concept ])</span>.join(',');</span>
|
|
2638
|
-
}
|
|
2639
|
-
}
|
|
2640
|
-
|
|
2641
|
-
function loadResource (resource, language, options) {
|
|
2642
|
-
const { warning } = options.diagnostic.prepareDiagnosticFor('loadResource');
|
|
2643
|
-
const filePromises = [];
|
|
2644
|
-
|
|
2645
|
-
if (typeof resource.data === 'undefined') {
|
|
2646
|
-
resource.data = loadFile(resource.path, options);
|
|
2647
|
-
}
|
|
2648
|
-
|
|
2649
|
-
filePromises.push(resource.data);
|
|
2650
|
-
|
|
2651
|
-
const languageValid = typeof language !== 'undefined' && includes(getLanguages(options), language);
|
|
2652
|
-
const languageLoaded = typeof resource.translations[ language ] !== 'undefined';
|
|
2653
|
-
|
|
2654
|
-
if (languageValid) {
|
|
2655
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!languageLoaded) {
|
|
2656
|
-
const translationPath = `lang/${language}/${resource.path}`;
|
|
2657
|
-
|
|
2658
|
-
// error loading translation file is expected when specific file is not translated
|
|
2659
|
-
// more correct would be to only resolve file-not-found errors but current solution is sufficient
|
|
2660
|
-
resource.translations[ language ] = loadFile(translationPath, options)
|
|
2661
|
-
.catch(err => {
|
|
2662
|
-
warning(`translation file ${translationPath}`, err);
|
|
2663
|
-
return Promise.resolve({});
|
|
2664
|
-
});
|
|
2665
|
-
}
|
|
2666
|
-
|
|
2667
|
-
filePromises.push(resource.translations[ language ]);
|
|
2668
|
-
}
|
|
2669
|
-
|
|
2670
|
-
return Promise.all(filePromises).then(fileResponses => {
|
|
2671
|
-
// resp.data does not exist if translation file not found
|
|
2672
|
-
const filesData = fileResponses.map(resp => resp.data || []);
|
|
2673
|
-
const primaryKey = resource.schema.primaryKey;
|
|
2674
|
-
const data = joinData(primaryKey, 'translation', ...filesData);
|
|
2675
|
-
|
|
2676
|
-
return { data, resource };
|
|
2677
|
-
});
|
|
2678
|
-
|
|
2679
|
-
}
|
|
2680
|
-
|
|
2681
|
-
function getLanguages (options: {datapackage}): string[] {
|
|
2682
|
-
if (!options.datapackage.translations) {
|
|
2683
|
-
return [];
|
|
2684
|
-
}
|
|
2685
|
-
|
|
2686
|
-
return options.datapackage.translations.map(lang => lang.id);
|
|
2687
|
-
}
|
|
2688
|
-
|
|
2689
|
-
function loadFile (filePath, options) {
|
|
2690
|
-
const { debug, error } = options.diagnostic.prepareDiagnosticFor('loadFile');
|
|
2691
|
-
const fullFilePath = getFilePath(options.basePath, filePath);
|
|
2692
|
-
|
|
2693
|
-
debug(`start reading "${filePath}"`);
|
|
2694
|
-
|
|
2695
|
-
return new Promise((resolve, reject) => {
|
|
2696
|
-
options.fileReader.readText(fullFilePath, (err, data) => {
|
|
2697
|
-
if (err) {
|
|
2698
|
-
error(`fail "${filePath}" reading`, err);
|
|
2699
|
-
return reject(new DdfCsvError(FILE_READING_ERROR, err, fullFilePath));
|
|
2700
|
-
}
|
|
2701
|
-
|
|
2702
|
-
Papa.parse(stripBom(data), {
|
|
2703
|
-
header: true,
|
|
2704
|
-
skipEmptyLines: true,
|
|
2705
|
-
dynamicTyping: (headerName) => {
|
|
2706
|
-
// skip parsing time/string concept types
|
|
2707
|
-
const concept: any = options.conceptsLookup.get(headerName) || {};
|
|
2708
|
-
|
|
2709
|
-
return !includes([ 'time', 'string' ], concept.concept_type);
|
|
2710
|
-
},
|
|
2711
|
-
complete: result => {
|
|
2712
|
-
debug(`finish reading "${filePath}"`);
|
|
2713
|
-
resolve(result);
|
|
2714
|
-
},
|
|
2715
|
-
error: <span class="fstat-no" title="function not covered" >parseErr</span> => {
|
|
2716
|
-
<span class="cstat-no" title="statement not covered" > error(`fail "${filePath}" parsing`, parseErr);</span>
|
|
2717
|
-
<span class="cstat-no" title="statement not covered" > reject(new DdfCsvError(CSV_PARSING_ERROR, parseErr, filePath));</span>
|
|
2718
|
-
}
|
|
2719
|
-
});
|
|
2720
|
-
});
|
|
2721
|
-
});
|
|
2722
|
-
}
|
|
2723
|
-
|
|
2724
|
-
function buildResourcesLookup (datapackagePar) {
|
|
2725
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (resourcesLookup.size > 0) {
|
|
2726
|
-
<span class="cstat-no" title="statement not covered" > return resourcesLookup;</span>
|
|
2727
|
-
}
|
|
2728
|
-
|
|
2729
|
-
datapackagePar.resources.forEach(resource => {
|
|
2730
|
-
if (!Array.isArray(resource.schema.primaryKey)) {
|
|
2731
|
-
resource.schema.primaryKey = [ resource.schema.primaryKey ];
|
|
2732
|
-
}
|
|
2733
|
-
|
|
2734
|
-
const constraints = resource.schema.fields.reduce((result, field) => {
|
|
2735
|
-
if (field.constraints?.enum) {
|
|
2736
|
-
if (!datasetWithConstraints) datasetWithConstraints = true;
|
|
2737
|
-
result[field.name] = field.constraints.enum.map(e => +e || e);
|
|
2738
|
-
}
|
|
2739
|
-
return result;
|
|
2740
|
-
}, {});
|
|
2741
|
-
resource.constraints = constraints;
|
|
2742
|
-
|
|
2743
|
-
resource.translations = {};
|
|
2744
|
-
resourcesLookup.set(resource.name, resource);
|
|
2745
|
-
});
|
|
2746
|
-
|
|
2747
|
-
return resourcesLookup;
|
|
2748
|
-
}
|
|
2749
|
-
|
|
2750
|
-
function buildKeyValueLookup (datapackagePar) {
|
|
2751
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (keyValueLookup.size > 0) {
|
|
2752
|
-
<span class="cstat-no" title="statement not covered" > return keyValueLookup;</span>
|
|
2753
|
-
}
|
|
2754
|
-
|
|
2755
|
-
for (const collection in datapackagePar.ddfSchema) {
|
|
2756
|
-
datapackagePar.ddfSchema[ collection ].map(kvPair => {
|
|
2757
|
-
const key = createKeyString(kvPair.primaryKey);
|
|
2758
|
-
const resources = kvPair.resources.map(
|
|
2759
|
-
resourceName => resourcesLookup.get(resourceName)
|
|
2760
|
-
);
|
|
2761
|
-
|
|
2762
|
-
if (keyValueLookup.has(key)) {
|
|
2763
|
-
keyValueLookup.get(key).set(kvPair.value, resources);
|
|
2764
|
-
} else {
|
|
2765
|
-
keyValueLookup.set(key, new Map([ [ kvPair.value, resources ] ]));
|
|
2766
|
-
}
|
|
2767
|
-
});
|
|
2768
|
-
}
|
|
2769
|
-
|
|
2770
|
-
return keyValueLookup;
|
|
2771
|
-
}
|
|
2772
|
-
|
|
2773
|
-
return {
|
|
2774
|
-
query,
|
|
2775
|
-
queryData,
|
|
2776
|
-
loadFile
|
|
2777
|
-
};
|
|
2778
|
-
}
|
|
2779
|
-
</pre></td></tr>
|
|
2780
|
-
</table></pre>
|
|
2781
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2782
|
-
</div><!-- /wrapper -->
|
|
2783
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2784
|
-
Code coverage
|
|
2785
|
-
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Jun 24 2024 00:21:40 GMT+0300 (Moscow Standard Time)
|
|
2786
|
-
</div>
|
|
2787
|
-
</div>
|
|
2788
|
-
<script src="../prettify.js"></script>
|
|
2789
|
-
<script>
|
|
2790
|
-
window.onload = function () {
|
|
2791
|
-
if (typeof prettyPrint === 'function') {
|
|
2792
|
-
prettyPrint();
|
|
2793
|
-
}
|
|
2794
|
-
};
|
|
2795
|
-
</script>
|
|
2796
|
-
<script src="../sorter.js"></script>
|
|
2797
|
-
<script src="../block-navigation.js"></script>
|
|
2798
|
-
</body>
|
|
2799
|
-
</html>
|