@md2do/cli 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +29 -3
- package/dist/cli.js +466 -6
- package/dist/index.d.ts +6 -1
- package/dist/index.js +461 -0
- package/package.json +7 -4
- package/src/cli.ts +2 -0
- package/src/commands/config.ts +731 -0
- package/src/commands/index.ts +1 -0
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -10
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -146
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -146
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/src/cli.ts.html +0 -211
- package/coverage/lcov-report/src/commands/index.html +0 -161
- package/coverage/lcov-report/src/commands/index.ts.html +0 -97
- package/coverage/lcov-report/src/commands/list.ts.html +0 -898
- package/coverage/lcov-report/src/commands/stats.ts.html +0 -1168
- package/coverage/lcov-report/src/commands/todoist.ts.html +0 -2383
- package/coverage/lcov-report/src/formatters/index.html +0 -131
- package/coverage/lcov-report/src/formatters/json.ts.html +0 -280
- package/coverage/lcov-report/src/formatters/pretty.ts.html +0 -955
- package/coverage/lcov-report/src/index.html +0 -146
- package/coverage/lcov-report/src/index.ts.html +0 -91
- package/coverage/lcov-report/src/scanner.ts.html +0 -481
- package/coverage/lcov.info +0 -2041
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/cli.ts.html +0 -211
- package/coverage/src/commands/index.html +0 -161
- package/coverage/src/commands/index.ts.html +0 -97
- package/coverage/src/commands/list.ts.html +0 -898
- package/coverage/src/commands/stats.ts.html +0 -1168
- package/coverage/src/commands/todoist.ts.html +0 -2383
- package/coverage/src/formatters/index.html +0 -131
- package/coverage/src/formatters/json.ts.html +0 -280
- package/coverage/src/formatters/pretty.ts.html +0 -955
- package/coverage/src/index.html +0 -146
- package/coverage/src/index.ts.html +0 -91
- package/coverage/src/scanner.ts.html +0 -481
|
@@ -1,2383 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/commands/todoist.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/commands</a> todoist.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/766</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/1</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/1</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/766</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
795
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
796
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
797
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
-
<a name='L767'></a><a href='#L767'>767</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
833
|
-
<span class="cline-any cline-no"> </span>
|
|
834
|
-
<span class="cline-any cline-no"> </span>
|
|
835
|
-
<span class="cline-any cline-no"> </span>
|
|
836
|
-
<span class="cline-any cline-no"> </span>
|
|
837
|
-
<span class="cline-any cline-no"> </span>
|
|
838
|
-
<span class="cline-any cline-no"> </span>
|
|
839
|
-
<span class="cline-any cline-no"> </span>
|
|
840
|
-
<span class="cline-any cline-no"> </span>
|
|
841
|
-
<span class="cline-any cline-no"> </span>
|
|
842
|
-
<span class="cline-any cline-no"> </span>
|
|
843
|
-
<span class="cline-any cline-no"> </span>
|
|
844
|
-
<span class="cline-any cline-no"> </span>
|
|
845
|
-
<span class="cline-any cline-no"> </span>
|
|
846
|
-
<span class="cline-any cline-no"> </span>
|
|
847
|
-
<span class="cline-any cline-no"> </span>
|
|
848
|
-
<span class="cline-any cline-no"> </span>
|
|
849
|
-
<span class="cline-any cline-no"> </span>
|
|
850
|
-
<span class="cline-any cline-no"> </span>
|
|
851
|
-
<span class="cline-any cline-no"> </span>
|
|
852
|
-
<span class="cline-any cline-no"> </span>
|
|
853
|
-
<span class="cline-any cline-no"> </span>
|
|
854
|
-
<span class="cline-any cline-no"> </span>
|
|
855
|
-
<span class="cline-any cline-no"> </span>
|
|
856
|
-
<span class="cline-any cline-no"> </span>
|
|
857
|
-
<span class="cline-any cline-no"> </span>
|
|
858
|
-
<span class="cline-any cline-no"> </span>
|
|
859
|
-
<span class="cline-any cline-no"> </span>
|
|
860
|
-
<span class="cline-any cline-no"> </span>
|
|
861
|
-
<span class="cline-any cline-no"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-no"> </span>
|
|
870
|
-
<span class="cline-any cline-no"> </span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-no"> </span>
|
|
873
|
-
<span class="cline-any cline-no"> </span>
|
|
874
|
-
<span class="cline-any cline-no"> </span>
|
|
875
|
-
<span class="cline-any cline-no"> </span>
|
|
876
|
-
<span class="cline-any cline-no"> </span>
|
|
877
|
-
<span class="cline-any cline-no"> </span>
|
|
878
|
-
<span class="cline-any cline-no"> </span>
|
|
879
|
-
<span class="cline-any cline-no"> </span>
|
|
880
|
-
<span class="cline-any cline-no"> </span>
|
|
881
|
-
<span class="cline-any cline-no"> </span>
|
|
882
|
-
<span class="cline-any cline-no"> </span>
|
|
883
|
-
<span class="cline-any cline-no"> </span>
|
|
884
|
-
<span class="cline-any cline-no"> </span>
|
|
885
|
-
<span class="cline-any cline-no"> </span>
|
|
886
|
-
<span class="cline-any cline-no"> </span>
|
|
887
|
-
<span class="cline-any cline-no"> </span>
|
|
888
|
-
<span class="cline-any cline-no"> </span>
|
|
889
|
-
<span class="cline-any cline-no"> </span>
|
|
890
|
-
<span class="cline-any cline-no"> </span>
|
|
891
|
-
<span class="cline-any cline-no"> </span>
|
|
892
|
-
<span class="cline-any cline-no"> </span>
|
|
893
|
-
<span class="cline-any cline-no"> </span>
|
|
894
|
-
<span class="cline-any cline-no"> </span>
|
|
895
|
-
<span class="cline-any cline-no"> </span>
|
|
896
|
-
<span class="cline-any cline-no"> </span>
|
|
897
|
-
<span class="cline-any cline-no"> </span>
|
|
898
|
-
<span class="cline-any cline-no"> </span>
|
|
899
|
-
<span class="cline-any cline-no"> </span>
|
|
900
|
-
<span class="cline-any cline-no"> </span>
|
|
901
|
-
<span class="cline-any cline-no"> </span>
|
|
902
|
-
<span class="cline-any cline-no"> </span>
|
|
903
|
-
<span class="cline-any cline-no"> </span>
|
|
904
|
-
<span class="cline-any cline-no"> </span>
|
|
905
|
-
<span class="cline-any cline-no"> </span>
|
|
906
|
-
<span class="cline-any cline-no"> </span>
|
|
907
|
-
<span class="cline-any cline-no"> </span>
|
|
908
|
-
<span class="cline-any cline-no"> </span>
|
|
909
|
-
<span class="cline-any cline-no"> </span>
|
|
910
|
-
<span class="cline-any cline-no"> </span>
|
|
911
|
-
<span class="cline-any cline-no"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-no"> </span>
|
|
914
|
-
<span class="cline-any cline-no"> </span>
|
|
915
|
-
<span class="cline-any cline-no"> </span>
|
|
916
|
-
<span class="cline-any cline-no"> </span>
|
|
917
|
-
<span class="cline-any cline-no"> </span>
|
|
918
|
-
<span class="cline-any cline-no"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-no"> </span>
|
|
922
|
-
<span class="cline-any cline-no"> </span>
|
|
923
|
-
<span class="cline-any cline-no"> </span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-no"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-no"> </span>
|
|
930
|
-
<span class="cline-any cline-no"> </span>
|
|
931
|
-
<span class="cline-any cline-no"> </span>
|
|
932
|
-
<span class="cline-any cline-no"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-no"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-no"> </span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-no"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-no"> </span>
|
|
943
|
-
<span class="cline-any cline-no"> </span>
|
|
944
|
-
<span class="cline-any cline-no"> </span>
|
|
945
|
-
<span class="cline-any cline-no"> </span>
|
|
946
|
-
<span class="cline-any cline-no"> </span>
|
|
947
|
-
<span class="cline-any cline-no"> </span>
|
|
948
|
-
<span class="cline-any cline-no"> </span>
|
|
949
|
-
<span class="cline-any cline-no"> </span>
|
|
950
|
-
<span class="cline-any cline-no"> </span>
|
|
951
|
-
<span class="cline-any cline-no"> </span>
|
|
952
|
-
<span class="cline-any cline-no"> </span>
|
|
953
|
-
<span class="cline-any cline-no"> </span>
|
|
954
|
-
<span class="cline-any cline-no"> </span>
|
|
955
|
-
<span class="cline-any cline-no"> </span>
|
|
956
|
-
<span class="cline-any cline-no"> </span>
|
|
957
|
-
<span class="cline-any cline-no"> </span>
|
|
958
|
-
<span class="cline-any cline-no"> </span>
|
|
959
|
-
<span class="cline-any cline-no"> </span>
|
|
960
|
-
<span class="cline-any cline-no"> </span>
|
|
961
|
-
<span class="cline-any cline-no"> </span>
|
|
962
|
-
<span class="cline-any cline-no"> </span>
|
|
963
|
-
<span class="cline-any cline-no"> </span>
|
|
964
|
-
<span class="cline-any cline-no"> </span>
|
|
965
|
-
<span class="cline-any cline-no"> </span>
|
|
966
|
-
<span class="cline-any cline-no"> </span>
|
|
967
|
-
<span class="cline-any cline-no"> </span>
|
|
968
|
-
<span class="cline-any cline-no"> </span>
|
|
969
|
-
<span class="cline-any cline-no"> </span>
|
|
970
|
-
<span class="cline-any cline-no"> </span>
|
|
971
|
-
<span class="cline-any cline-no"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-no"> </span>
|
|
974
|
-
<span class="cline-any cline-no"> </span>
|
|
975
|
-
<span class="cline-any cline-no"> </span>
|
|
976
|
-
<span class="cline-any cline-no"> </span>
|
|
977
|
-
<span class="cline-any cline-no"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-no"> </span>
|
|
980
|
-
<span class="cline-any cline-no"> </span>
|
|
981
|
-
<span class="cline-any cline-no"> </span>
|
|
982
|
-
<span class="cline-any cline-no"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-no"> </span>
|
|
985
|
-
<span class="cline-any cline-no"> </span>
|
|
986
|
-
<span class="cline-any cline-no"> </span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-no"> </span>
|
|
989
|
-
<span class="cline-any cline-no"> </span>
|
|
990
|
-
<span class="cline-any cline-no"> </span>
|
|
991
|
-
<span class="cline-any cline-no"> </span>
|
|
992
|
-
<span class="cline-any cline-no"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-no"> </span>
|
|
995
|
-
<span class="cline-any cline-no"> </span>
|
|
996
|
-
<span class="cline-any cline-no"> </span>
|
|
997
|
-
<span class="cline-any cline-no"> </span>
|
|
998
|
-
<span class="cline-any cline-no"> </span>
|
|
999
|
-
<span class="cline-any cline-no"> </span>
|
|
1000
|
-
<span class="cline-any cline-no"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-no"> </span>
|
|
1005
|
-
<span class="cline-any cline-no"> </span>
|
|
1006
|
-
<span class="cline-any cline-no"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-no"> </span>
|
|
1009
|
-
<span class="cline-any cline-no"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-no"> </span>
|
|
1012
|
-
<span class="cline-any cline-no"> </span>
|
|
1013
|
-
<span class="cline-any cline-no"> </span>
|
|
1014
|
-
<span class="cline-any cline-no"> </span>
|
|
1015
|
-
<span class="cline-any cline-no"> </span>
|
|
1016
|
-
<span class="cline-any cline-no"> </span>
|
|
1017
|
-
<span class="cline-any cline-no"> </span>
|
|
1018
|
-
<span class="cline-any cline-no"> </span>
|
|
1019
|
-
<span class="cline-any cline-no"> </span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-no"> </span>
|
|
1023
|
-
<span class="cline-any cline-no"> </span>
|
|
1024
|
-
<span class="cline-any cline-no"> </span>
|
|
1025
|
-
<span class="cline-any cline-no"> </span>
|
|
1026
|
-
<span class="cline-any cline-no"> </span>
|
|
1027
|
-
<span class="cline-any cline-no"> </span>
|
|
1028
|
-
<span class="cline-any cline-no"> </span>
|
|
1029
|
-
<span class="cline-any cline-no"> </span>
|
|
1030
|
-
<span class="cline-any cline-no"> </span>
|
|
1031
|
-
<span class="cline-any cline-no"> </span>
|
|
1032
|
-
<span class="cline-any cline-no"> </span>
|
|
1033
|
-
<span class="cline-any cline-no"> </span>
|
|
1034
|
-
<span class="cline-any cline-no"> </span>
|
|
1035
|
-
<span class="cline-any cline-no"> </span>
|
|
1036
|
-
<span class="cline-any cline-no"> </span>
|
|
1037
|
-
<span class="cline-any cline-no"> </span>
|
|
1038
|
-
<span class="cline-any cline-no"> </span>
|
|
1039
|
-
<span class="cline-any cline-no"> </span>
|
|
1040
|
-
<span class="cline-any cline-no"> </span>
|
|
1041
|
-
<span class="cline-any cline-no"> </span>
|
|
1042
|
-
<span class="cline-any cline-no"> </span>
|
|
1043
|
-
<span class="cline-any cline-no"> </span>
|
|
1044
|
-
<span class="cline-any cline-no"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-no"> </span>
|
|
1047
|
-
<span class="cline-any cline-no"> </span>
|
|
1048
|
-
<span class="cline-any cline-no"> </span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-no"> </span>
|
|
1051
|
-
<span class="cline-any cline-no"> </span>
|
|
1052
|
-
<span class="cline-any cline-no"> </span>
|
|
1053
|
-
<span class="cline-any cline-no"> </span>
|
|
1054
|
-
<span class="cline-any cline-no"> </span>
|
|
1055
|
-
<span class="cline-any cline-no"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-no"> </span>
|
|
1058
|
-
<span class="cline-any cline-no"> </span>
|
|
1059
|
-
<span class="cline-any cline-no"> </span>
|
|
1060
|
-
<span class="cline-any cline-no"> </span>
|
|
1061
|
-
<span class="cline-any cline-no"> </span>
|
|
1062
|
-
<span class="cline-any cline-no"> </span>
|
|
1063
|
-
<span class="cline-any cline-no"> </span>
|
|
1064
|
-
<span class="cline-any cline-no"> </span>
|
|
1065
|
-
<span class="cline-any cline-no"> </span>
|
|
1066
|
-
<span class="cline-any cline-no"> </span>
|
|
1067
|
-
<span class="cline-any cline-no"> </span>
|
|
1068
|
-
<span class="cline-any cline-no"> </span>
|
|
1069
|
-
<span class="cline-any cline-no"> </span>
|
|
1070
|
-
<span class="cline-any cline-no"> </span>
|
|
1071
|
-
<span class="cline-any cline-no"> </span>
|
|
1072
|
-
<span class="cline-any cline-no"> </span>
|
|
1073
|
-
<span class="cline-any cline-no"> </span>
|
|
1074
|
-
<span class="cline-any cline-no"> </span>
|
|
1075
|
-
<span class="cline-any cline-no"> </span>
|
|
1076
|
-
<span class="cline-any cline-no"> </span>
|
|
1077
|
-
<span class="cline-any cline-no"> </span>
|
|
1078
|
-
<span class="cline-any cline-no"> </span>
|
|
1079
|
-
<span class="cline-any cline-no"> </span>
|
|
1080
|
-
<span class="cline-any cline-no"> </span>
|
|
1081
|
-
<span class="cline-any cline-no"> </span>
|
|
1082
|
-
<span class="cline-any cline-no"> </span>
|
|
1083
|
-
<span class="cline-any cline-no"> </span>
|
|
1084
|
-
<span class="cline-any cline-no"> </span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-no"> </span>
|
|
1089
|
-
<span class="cline-any cline-no"> </span>
|
|
1090
|
-
<span class="cline-any cline-no"> </span>
|
|
1091
|
-
<span class="cline-any cline-no"> </span>
|
|
1092
|
-
<span class="cline-any cline-no"> </span>
|
|
1093
|
-
<span class="cline-any cline-no"> </span>
|
|
1094
|
-
<span class="cline-any cline-no"> </span>
|
|
1095
|
-
<span class="cline-any cline-no"> </span>
|
|
1096
|
-
<span class="cline-any cline-no"> </span>
|
|
1097
|
-
<span class="cline-any cline-no"> </span>
|
|
1098
|
-
<span class="cline-any cline-no"> </span>
|
|
1099
|
-
<span class="cline-any cline-no"> </span>
|
|
1100
|
-
<span class="cline-any cline-no"> </span>
|
|
1101
|
-
<span class="cline-any cline-no"> </span>
|
|
1102
|
-
<span class="cline-any cline-no"> </span>
|
|
1103
|
-
<span class="cline-any cline-no"> </span>
|
|
1104
|
-
<span class="cline-any cline-no"> </span>
|
|
1105
|
-
<span class="cline-any cline-no"> </span>
|
|
1106
|
-
<span class="cline-any cline-no"> </span>
|
|
1107
|
-
<span class="cline-any cline-no"> </span>
|
|
1108
|
-
<span class="cline-any cline-no"> </span>
|
|
1109
|
-
<span class="cline-any cline-no"> </span>
|
|
1110
|
-
<span class="cline-any cline-no"> </span>
|
|
1111
|
-
<span class="cline-any cline-no"> </span>
|
|
1112
|
-
<span class="cline-any cline-no"> </span>
|
|
1113
|
-
<span class="cline-any cline-no"> </span>
|
|
1114
|
-
<span class="cline-any cline-no"> </span>
|
|
1115
|
-
<span class="cline-any cline-no"> </span>
|
|
1116
|
-
<span class="cline-any cline-no"> </span>
|
|
1117
|
-
<span class="cline-any cline-no"> </span>
|
|
1118
|
-
<span class="cline-any cline-no"> </span>
|
|
1119
|
-
<span class="cline-any cline-no"> </span>
|
|
1120
|
-
<span class="cline-any cline-no"> </span>
|
|
1121
|
-
<span class="cline-any cline-no"> </span>
|
|
1122
|
-
<span class="cline-any cline-no"> </span>
|
|
1123
|
-
<span class="cline-any cline-no"> </span>
|
|
1124
|
-
<span class="cline-any cline-no"> </span>
|
|
1125
|
-
<span class="cline-any cline-no"> </span>
|
|
1126
|
-
<span class="cline-any cline-no"> </span>
|
|
1127
|
-
<span class="cline-any cline-no"> </span>
|
|
1128
|
-
<span class="cline-any cline-no"> </span>
|
|
1129
|
-
<span class="cline-any cline-no"> </span>
|
|
1130
|
-
<span class="cline-any cline-no"> </span>
|
|
1131
|
-
<span class="cline-any cline-no"> </span>
|
|
1132
|
-
<span class="cline-any cline-no"> </span>
|
|
1133
|
-
<span class="cline-any cline-no"> </span>
|
|
1134
|
-
<span class="cline-any cline-no"> </span>
|
|
1135
|
-
<span class="cline-any cline-no"> </span>
|
|
1136
|
-
<span class="cline-any cline-no"> </span>
|
|
1137
|
-
<span class="cline-any cline-no"> </span>
|
|
1138
|
-
<span class="cline-any cline-no"> </span>
|
|
1139
|
-
<span class="cline-any cline-no"> </span>
|
|
1140
|
-
<span class="cline-any cline-no"> </span>
|
|
1141
|
-
<span class="cline-any cline-no"> </span>
|
|
1142
|
-
<span class="cline-any cline-no"> </span>
|
|
1143
|
-
<span class="cline-any cline-no"> </span>
|
|
1144
|
-
<span class="cline-any cline-no"> </span>
|
|
1145
|
-
<span class="cline-any cline-no"> </span>
|
|
1146
|
-
<span class="cline-any cline-no"> </span>
|
|
1147
|
-
<span class="cline-any cline-no"> </span>
|
|
1148
|
-
<span class="cline-any cline-no"> </span>
|
|
1149
|
-
<span class="cline-any cline-no"> </span>
|
|
1150
|
-
<span class="cline-any cline-no"> </span>
|
|
1151
|
-
<span class="cline-any cline-no"> </span>
|
|
1152
|
-
<span class="cline-any cline-no"> </span>
|
|
1153
|
-
<span class="cline-any cline-no"> </span>
|
|
1154
|
-
<span class="cline-any cline-no"> </span>
|
|
1155
|
-
<span class="cline-any cline-no"> </span>
|
|
1156
|
-
<span class="cline-any cline-no"> </span>
|
|
1157
|
-
<span class="cline-any cline-no"> </span>
|
|
1158
|
-
<span class="cline-any cline-no"> </span>
|
|
1159
|
-
<span class="cline-any cline-no"> </span>
|
|
1160
|
-
<span class="cline-any cline-no"> </span>
|
|
1161
|
-
<span class="cline-any cline-no"> </span>
|
|
1162
|
-
<span class="cline-any cline-no"> </span>
|
|
1163
|
-
<span class="cline-any cline-no"> </span>
|
|
1164
|
-
<span class="cline-any cline-no"> </span>
|
|
1165
|
-
<span class="cline-any cline-no"> </span>
|
|
1166
|
-
<span class="cline-any cline-no"> </span>
|
|
1167
|
-
<span class="cline-any cline-no"> </span>
|
|
1168
|
-
<span class="cline-any cline-no"> </span>
|
|
1169
|
-
<span class="cline-any cline-no"> </span>
|
|
1170
|
-
<span class="cline-any cline-no"> </span>
|
|
1171
|
-
<span class="cline-any cline-no"> </span>
|
|
1172
|
-
<span class="cline-any cline-no"> </span>
|
|
1173
|
-
<span class="cline-any cline-no"> </span>
|
|
1174
|
-
<span class="cline-any cline-no"> </span>
|
|
1175
|
-
<span class="cline-any cline-no"> </span>
|
|
1176
|
-
<span class="cline-any cline-no"> </span>
|
|
1177
|
-
<span class="cline-any cline-no"> </span>
|
|
1178
|
-
<span class="cline-any cline-no"> </span>
|
|
1179
|
-
<span class="cline-any cline-no"> </span>
|
|
1180
|
-
<span class="cline-any cline-no"> </span>
|
|
1181
|
-
<span class="cline-any cline-no"> </span>
|
|
1182
|
-
<span class="cline-any cline-no"> </span>
|
|
1183
|
-
<span class="cline-any cline-no"> </span>
|
|
1184
|
-
<span class="cline-any cline-no"> </span>
|
|
1185
|
-
<span class="cline-any cline-no"> </span>
|
|
1186
|
-
<span class="cline-any cline-no"> </span>
|
|
1187
|
-
<span class="cline-any cline-no"> </span>
|
|
1188
|
-
<span class="cline-any cline-no"> </span>
|
|
1189
|
-
<span class="cline-any cline-no"> </span>
|
|
1190
|
-
<span class="cline-any cline-no"> </span>
|
|
1191
|
-
<span class="cline-any cline-no"> </span>
|
|
1192
|
-
<span class="cline-any cline-no"> </span>
|
|
1193
|
-
<span class="cline-any cline-no"> </span>
|
|
1194
|
-
<span class="cline-any cline-no"> </span>
|
|
1195
|
-
<span class="cline-any cline-no"> </span>
|
|
1196
|
-
<span class="cline-any cline-no"> </span>
|
|
1197
|
-
<span class="cline-any cline-no"> </span>
|
|
1198
|
-
<span class="cline-any cline-no"> </span>
|
|
1199
|
-
<span class="cline-any cline-no"> </span>
|
|
1200
|
-
<span class="cline-any cline-no"> </span>
|
|
1201
|
-
<span class="cline-any cline-no"> </span>
|
|
1202
|
-
<span class="cline-any cline-no"> </span>
|
|
1203
|
-
<span class="cline-any cline-no"> </span>
|
|
1204
|
-
<span class="cline-any cline-no"> </span>
|
|
1205
|
-
<span class="cline-any cline-no"> </span>
|
|
1206
|
-
<span class="cline-any cline-no"> </span>
|
|
1207
|
-
<span class="cline-any cline-no"> </span>
|
|
1208
|
-
<span class="cline-any cline-no"> </span>
|
|
1209
|
-
<span class="cline-any cline-no"> </span>
|
|
1210
|
-
<span class="cline-any cline-no"> </span>
|
|
1211
|
-
<span class="cline-any cline-no"> </span>
|
|
1212
|
-
<span class="cline-any cline-no"> </span>
|
|
1213
|
-
<span class="cline-any cline-no"> </span>
|
|
1214
|
-
<span class="cline-any cline-no"> </span>
|
|
1215
|
-
<span class="cline-any cline-no"> </span>
|
|
1216
|
-
<span class="cline-any cline-no"> </span>
|
|
1217
|
-
<span class="cline-any cline-no"> </span>
|
|
1218
|
-
<span class="cline-any cline-no"> </span>
|
|
1219
|
-
<span class="cline-any cline-no"> </span>
|
|
1220
|
-
<span class="cline-any cline-no"> </span>
|
|
1221
|
-
<span class="cline-any cline-no"> </span>
|
|
1222
|
-
<span class="cline-any cline-no"> </span>
|
|
1223
|
-
<span class="cline-any cline-no"> </span>
|
|
1224
|
-
<span class="cline-any cline-no"> </span>
|
|
1225
|
-
<span class="cline-any cline-no"> </span>
|
|
1226
|
-
<span class="cline-any cline-no"> </span>
|
|
1227
|
-
<span class="cline-any cline-no"> </span>
|
|
1228
|
-
<span class="cline-any cline-no"> </span>
|
|
1229
|
-
<span class="cline-any cline-no"> </span>
|
|
1230
|
-
<span class="cline-any cline-no"> </span>
|
|
1231
|
-
<span class="cline-any cline-no"> </span>
|
|
1232
|
-
<span class="cline-any cline-no"> </span>
|
|
1233
|
-
<span class="cline-any cline-no"> </span>
|
|
1234
|
-
<span class="cline-any cline-no"> </span>
|
|
1235
|
-
<span class="cline-any cline-no"> </span>
|
|
1236
|
-
<span class="cline-any cline-no"> </span>
|
|
1237
|
-
<span class="cline-any cline-no"> </span>
|
|
1238
|
-
<span class="cline-any cline-no"> </span>
|
|
1239
|
-
<span class="cline-any cline-no"> </span>
|
|
1240
|
-
<span class="cline-any cline-no"> </span>
|
|
1241
|
-
<span class="cline-any cline-no"> </span>
|
|
1242
|
-
<span class="cline-any cline-no"> </span>
|
|
1243
|
-
<span class="cline-any cline-no"> </span>
|
|
1244
|
-
<span class="cline-any cline-no"> </span>
|
|
1245
|
-
<span class="cline-any cline-no"> </span>
|
|
1246
|
-
<span class="cline-any cline-no"> </span>
|
|
1247
|
-
<span class="cline-any cline-no"> </span>
|
|
1248
|
-
<span class="cline-any cline-no"> </span>
|
|
1249
|
-
<span class="cline-any cline-no"> </span>
|
|
1250
|
-
<span class="cline-any cline-no"> </span>
|
|
1251
|
-
<span class="cline-any cline-no"> </span>
|
|
1252
|
-
<span class="cline-any cline-no"> </span>
|
|
1253
|
-
<span class="cline-any cline-no"> </span>
|
|
1254
|
-
<span class="cline-any cline-no"> </span>
|
|
1255
|
-
<span class="cline-any cline-no"> </span>
|
|
1256
|
-
<span class="cline-any cline-no"> </span>
|
|
1257
|
-
<span class="cline-any cline-no"> </span>
|
|
1258
|
-
<span class="cline-any cline-no"> </span>
|
|
1259
|
-
<span class="cline-any cline-no"> </span>
|
|
1260
|
-
<span class="cline-any cline-no"> </span>
|
|
1261
|
-
<span class="cline-any cline-no"> </span>
|
|
1262
|
-
<span class="cline-any cline-no"> </span>
|
|
1263
|
-
<span class="cline-any cline-no"> </span>
|
|
1264
|
-
<span class="cline-any cline-no"> </span>
|
|
1265
|
-
<span class="cline-any cline-no"> </span>
|
|
1266
|
-
<span class="cline-any cline-no"> </span>
|
|
1267
|
-
<span class="cline-any cline-no"> </span>
|
|
1268
|
-
<span class="cline-any cline-no"> </span>
|
|
1269
|
-
<span class="cline-any cline-no"> </span>
|
|
1270
|
-
<span class="cline-any cline-no"> </span>
|
|
1271
|
-
<span class="cline-any cline-no"> </span>
|
|
1272
|
-
<span class="cline-any cline-no"> </span>
|
|
1273
|
-
<span class="cline-any cline-no"> </span>
|
|
1274
|
-
<span class="cline-any cline-no"> </span>
|
|
1275
|
-
<span class="cline-any cline-no"> </span>
|
|
1276
|
-
<span class="cline-any cline-no"> </span>
|
|
1277
|
-
<span class="cline-any cline-no"> </span>
|
|
1278
|
-
<span class="cline-any cline-no"> </span>
|
|
1279
|
-
<span class="cline-any cline-no"> </span>
|
|
1280
|
-
<span class="cline-any cline-no"> </span>
|
|
1281
|
-
<span class="cline-any cline-no"> </span>
|
|
1282
|
-
<span class="cline-any cline-no"> </span>
|
|
1283
|
-
<span class="cline-any cline-no"> </span>
|
|
1284
|
-
<span class="cline-any cline-no"> </span>
|
|
1285
|
-
<span class="cline-any cline-no"> </span>
|
|
1286
|
-
<span class="cline-any cline-no"> </span>
|
|
1287
|
-
<span class="cline-any cline-no"> </span>
|
|
1288
|
-
<span class="cline-any cline-no"> </span>
|
|
1289
|
-
<span class="cline-any cline-no"> </span>
|
|
1290
|
-
<span class="cline-any cline-no"> </span>
|
|
1291
|
-
<span class="cline-any cline-no"> </span>
|
|
1292
|
-
<span class="cline-any cline-no"> </span>
|
|
1293
|
-
<span class="cline-any cline-no"> </span>
|
|
1294
|
-
<span class="cline-any cline-no"> </span>
|
|
1295
|
-
<span class="cline-any cline-no"> </span>
|
|
1296
|
-
<span class="cline-any cline-no"> </span>
|
|
1297
|
-
<span class="cline-any cline-no"> </span>
|
|
1298
|
-
<span class="cline-any cline-no"> </span>
|
|
1299
|
-
<span class="cline-any cline-no"> </span>
|
|
1300
|
-
<span class="cline-any cline-no"> </span>
|
|
1301
|
-
<span class="cline-any cline-no"> </span>
|
|
1302
|
-
<span class="cline-any cline-no"> </span>
|
|
1303
|
-
<span class="cline-any cline-no"> </span>
|
|
1304
|
-
<span class="cline-any cline-no"> </span>
|
|
1305
|
-
<span class="cline-any cline-no"> </span>
|
|
1306
|
-
<span class="cline-any cline-no"> </span>
|
|
1307
|
-
<span class="cline-any cline-no"> </span>
|
|
1308
|
-
<span class="cline-any cline-no"> </span>
|
|
1309
|
-
<span class="cline-any cline-no"> </span>
|
|
1310
|
-
<span class="cline-any cline-no"> </span>
|
|
1311
|
-
<span class="cline-any cline-no"> </span>
|
|
1312
|
-
<span class="cline-any cline-no"> </span>
|
|
1313
|
-
<span class="cline-any cline-no"> </span>
|
|
1314
|
-
<span class="cline-any cline-no"> </span>
|
|
1315
|
-
<span class="cline-any cline-no"> </span>
|
|
1316
|
-
<span class="cline-any cline-no"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-no"> </span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-no"> </span>
|
|
1321
|
-
<span class="cline-any cline-no"> </span>
|
|
1322
|
-
<span class="cline-any cline-no"> </span>
|
|
1323
|
-
<span class="cline-any cline-no"> </span>
|
|
1324
|
-
<span class="cline-any cline-no"> </span>
|
|
1325
|
-
<span class="cline-any cline-no"> </span>
|
|
1326
|
-
<span class="cline-any cline-no"> </span>
|
|
1327
|
-
<span class="cline-any cline-no"> </span>
|
|
1328
|
-
<span class="cline-any cline-no"> </span>
|
|
1329
|
-
<span class="cline-any cline-no"> </span>
|
|
1330
|
-
<span class="cline-any cline-no"> </span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-no"> </span>
|
|
1333
|
-
<span class="cline-any cline-no"> </span>
|
|
1334
|
-
<span class="cline-any cline-no"> </span>
|
|
1335
|
-
<span class="cline-any cline-no"> </span>
|
|
1336
|
-
<span class="cline-any cline-no"> </span>
|
|
1337
|
-
<span class="cline-any cline-no"> </span>
|
|
1338
|
-
<span class="cline-any cline-no"> </span>
|
|
1339
|
-
<span class="cline-any cline-no"> </span>
|
|
1340
|
-
<span class="cline-any cline-no"> </span>
|
|
1341
|
-
<span class="cline-any cline-no"> </span>
|
|
1342
|
-
<span class="cline-any cline-no"> </span>
|
|
1343
|
-
<span class="cline-any cline-no"> </span>
|
|
1344
|
-
<span class="cline-any cline-no"> </span>
|
|
1345
|
-
<span class="cline-any cline-no"> </span>
|
|
1346
|
-
<span class="cline-any cline-no"> </span>
|
|
1347
|
-
<span class="cline-any cline-no"> </span>
|
|
1348
|
-
<span class="cline-any cline-no"> </span>
|
|
1349
|
-
<span class="cline-any cline-no"> </span>
|
|
1350
|
-
<span class="cline-any cline-no"> </span>
|
|
1351
|
-
<span class="cline-any cline-no"> </span>
|
|
1352
|
-
<span class="cline-any cline-no"> </span>
|
|
1353
|
-
<span class="cline-any cline-no"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-no"> </span>
|
|
1356
|
-
<span class="cline-any cline-no"> </span>
|
|
1357
|
-
<span class="cline-any cline-no"> </span>
|
|
1358
|
-
<span class="cline-any cline-no"> </span>
|
|
1359
|
-
<span class="cline-any cline-no"> </span>
|
|
1360
|
-
<span class="cline-any cline-no"> </span>
|
|
1361
|
-
<span class="cline-any cline-no"> </span>
|
|
1362
|
-
<span class="cline-any cline-no"> </span>
|
|
1363
|
-
<span class="cline-any cline-no"> </span>
|
|
1364
|
-
<span class="cline-any cline-no"> </span>
|
|
1365
|
-
<span class="cline-any cline-no"> </span>
|
|
1366
|
-
<span class="cline-any cline-no"> </span>
|
|
1367
|
-
<span class="cline-any cline-no"> </span>
|
|
1368
|
-
<span class="cline-any cline-no"> </span>
|
|
1369
|
-
<span class="cline-any cline-no"> </span>
|
|
1370
|
-
<span class="cline-any cline-no"> </span>
|
|
1371
|
-
<span class="cline-any cline-no"> </span>
|
|
1372
|
-
<span class="cline-any cline-no"> </span>
|
|
1373
|
-
<span class="cline-any cline-no"> </span>
|
|
1374
|
-
<span class="cline-any cline-no"> </span>
|
|
1375
|
-
<span class="cline-any cline-no"> </span>
|
|
1376
|
-
<span class="cline-any cline-no"> </span>
|
|
1377
|
-
<span class="cline-any cline-no"> </span>
|
|
1378
|
-
<span class="cline-any cline-no"> </span>
|
|
1379
|
-
<span class="cline-any cline-no"> </span>
|
|
1380
|
-
<span class="cline-any cline-no"> </span>
|
|
1381
|
-
<span class="cline-any cline-no"> </span>
|
|
1382
|
-
<span class="cline-any cline-no"> </span>
|
|
1383
|
-
<span class="cline-any cline-no"> </span>
|
|
1384
|
-
<span class="cline-any cline-no"> </span>
|
|
1385
|
-
<span class="cline-any cline-no"> </span>
|
|
1386
|
-
<span class="cline-any cline-no"> </span>
|
|
1387
|
-
<span class="cline-any cline-no"> </span>
|
|
1388
|
-
<span class="cline-any cline-no"> </span>
|
|
1389
|
-
<span class="cline-any cline-no"> </span>
|
|
1390
|
-
<span class="cline-any cline-no"> </span>
|
|
1391
|
-
<span class="cline-any cline-no"> </span>
|
|
1392
|
-
<span class="cline-any cline-no"> </span>
|
|
1393
|
-
<span class="cline-any cline-no"> </span>
|
|
1394
|
-
<span class="cline-any cline-no"> </span>
|
|
1395
|
-
<span class="cline-any cline-no"> </span>
|
|
1396
|
-
<span class="cline-any cline-no"> </span>
|
|
1397
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1402
|
-
<span class="cline-any cline-no"> </span>
|
|
1403
|
-
<span class="cline-any cline-no"> </span>
|
|
1404
|
-
<span class="cline-any cline-no"> </span>
|
|
1405
|
-
<span class="cline-any cline-no"> </span>
|
|
1406
|
-
<span class="cline-any cline-no"> </span>
|
|
1407
|
-
<span class="cline-any cline-no"> </span>
|
|
1408
|
-
<span class="cline-any cline-no"> </span>
|
|
1409
|
-
<span class="cline-any cline-no"> </span>
|
|
1410
|
-
<span class="cline-any cline-no"> </span>
|
|
1411
|
-
<span class="cline-any cline-no"> </span>
|
|
1412
|
-
<span class="cline-any cline-no"> </span>
|
|
1413
|
-
<span class="cline-any cline-no"> </span>
|
|
1414
|
-
<span class="cline-any cline-no"> </span>
|
|
1415
|
-
<span class="cline-any cline-no"> </span>
|
|
1416
|
-
<span class="cline-any cline-no"> </span>
|
|
1417
|
-
<span class="cline-any cline-no"> </span>
|
|
1418
|
-
<span class="cline-any cline-no"> </span>
|
|
1419
|
-
<span class="cline-any cline-no"> </span>
|
|
1420
|
-
<span class="cline-any cline-no"> </span>
|
|
1421
|
-
<span class="cline-any cline-no"> </span>
|
|
1422
|
-
<span class="cline-any cline-no"> </span>
|
|
1423
|
-
<span class="cline-any cline-no"> </span>
|
|
1424
|
-
<span class="cline-any cline-no"> </span>
|
|
1425
|
-
<span class="cline-any cline-no"> </span>
|
|
1426
|
-
<span class="cline-any cline-no"> </span>
|
|
1427
|
-
<span class="cline-any cline-no"> </span>
|
|
1428
|
-
<span class="cline-any cline-no"> </span>
|
|
1429
|
-
<span class="cline-any cline-no"> </span>
|
|
1430
|
-
<span class="cline-any cline-no"> </span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-no"> </span>
|
|
1433
|
-
<span class="cline-any cline-no"> </span>
|
|
1434
|
-
<span class="cline-any cline-no"> </span>
|
|
1435
|
-
<span class="cline-any cline-no"> </span>
|
|
1436
|
-
<span class="cline-any cline-no"> </span>
|
|
1437
|
-
<span class="cline-any cline-no"> </span>
|
|
1438
|
-
<span class="cline-any cline-no"> </span>
|
|
1439
|
-
<span class="cline-any cline-no"> </span>
|
|
1440
|
-
<span class="cline-any cline-no"> </span>
|
|
1441
|
-
<span class="cline-any cline-no"> </span>
|
|
1442
|
-
<span class="cline-any cline-no"> </span>
|
|
1443
|
-
<span class="cline-any cline-no"> </span>
|
|
1444
|
-
<span class="cline-any cline-no"> </span>
|
|
1445
|
-
<span class="cline-any cline-no"> </span>
|
|
1446
|
-
<span class="cline-any cline-no"> </span>
|
|
1447
|
-
<span class="cline-any cline-no"> </span>
|
|
1448
|
-
<span class="cline-any cline-no"> </span>
|
|
1449
|
-
<span class="cline-any cline-no"> </span>
|
|
1450
|
-
<span class="cline-any cline-no"> </span>
|
|
1451
|
-
<span class="cline-any cline-no"> </span>
|
|
1452
|
-
<span class="cline-any cline-no"> </span>
|
|
1453
|
-
<span class="cline-any cline-no"> </span>
|
|
1454
|
-
<span class="cline-any cline-no"> </span>
|
|
1455
|
-
<span class="cline-any cline-no"> </span>
|
|
1456
|
-
<span class="cline-any cline-no"> </span>
|
|
1457
|
-
<span class="cline-any cline-no"> </span>
|
|
1458
|
-
<span class="cline-any cline-no"> </span>
|
|
1459
|
-
<span class="cline-any cline-no"> </span>
|
|
1460
|
-
<span class="cline-any cline-no"> </span>
|
|
1461
|
-
<span class="cline-any cline-no"> </span>
|
|
1462
|
-
<span class="cline-any cline-no"> </span>
|
|
1463
|
-
<span class="cline-any cline-no"> </span>
|
|
1464
|
-
<span class="cline-any cline-no"> </span>
|
|
1465
|
-
<span class="cline-any cline-no"> </span>
|
|
1466
|
-
<span class="cline-any cline-no"> </span>
|
|
1467
|
-
<span class="cline-any cline-no"> </span>
|
|
1468
|
-
<span class="cline-any cline-no"> </span>
|
|
1469
|
-
<span class="cline-any cline-no"> </span>
|
|
1470
|
-
<span class="cline-any cline-no"> </span>
|
|
1471
|
-
<span class="cline-any cline-no"> </span>
|
|
1472
|
-
<span class="cline-any cline-no"> </span>
|
|
1473
|
-
<span class="cline-any cline-no"> </span>
|
|
1474
|
-
<span class="cline-any cline-no"> </span>
|
|
1475
|
-
<span class="cline-any cline-no"> </span>
|
|
1476
|
-
<span class="cline-any cline-no"> </span>
|
|
1477
|
-
<span class="cline-any cline-no"> </span>
|
|
1478
|
-
<span class="cline-any cline-no"> </span>
|
|
1479
|
-
<span class="cline-any cline-no"> </span>
|
|
1480
|
-
<span class="cline-any cline-no"> </span>
|
|
1481
|
-
<span class="cline-any cline-no"> </span>
|
|
1482
|
-
<span class="cline-any cline-no"> </span>
|
|
1483
|
-
<span class="cline-any cline-no"> </span>
|
|
1484
|
-
<span class="cline-any cline-no"> </span>
|
|
1485
|
-
<span class="cline-any cline-no"> </span>
|
|
1486
|
-
<span class="cline-any cline-no"> </span>
|
|
1487
|
-
<span class="cline-any cline-no"> </span>
|
|
1488
|
-
<span class="cline-any cline-no"> </span>
|
|
1489
|
-
<span class="cline-any cline-no"> </span>
|
|
1490
|
-
<span class="cline-any cline-no"> </span>
|
|
1491
|
-
<span class="cline-any cline-no"> </span>
|
|
1492
|
-
<span class="cline-any cline-no"> </span>
|
|
1493
|
-
<span class="cline-any cline-no"> </span>
|
|
1494
|
-
<span class="cline-any cline-no"> </span>
|
|
1495
|
-
<span class="cline-any cline-no"> </span>
|
|
1496
|
-
<span class="cline-any cline-no"> </span>
|
|
1497
|
-
<span class="cline-any cline-no"> </span>
|
|
1498
|
-
<span class="cline-any cline-no"> </span>
|
|
1499
|
-
<span class="cline-any cline-no"> </span>
|
|
1500
|
-
<span class="cline-any cline-no"> </span>
|
|
1501
|
-
<span class="cline-any cline-no"> </span>
|
|
1502
|
-
<span class="cline-any cline-no"> </span>
|
|
1503
|
-
<span class="cline-any cline-no"> </span>
|
|
1504
|
-
<span class="cline-any cline-no"> </span>
|
|
1505
|
-
<span class="cline-any cline-no"> </span>
|
|
1506
|
-
<span class="cline-any cline-no"> </span>
|
|
1507
|
-
<span class="cline-any cline-no"> </span>
|
|
1508
|
-
<span class="cline-any cline-no"> </span>
|
|
1509
|
-
<span class="cline-any cline-no"> </span>
|
|
1510
|
-
<span class="cline-any cline-no"> </span>
|
|
1511
|
-
<span class="cline-any cline-no"> </span>
|
|
1512
|
-
<span class="cline-any cline-no"> </span>
|
|
1513
|
-
<span class="cline-any cline-no"> </span>
|
|
1514
|
-
<span class="cline-any cline-no"> </span>
|
|
1515
|
-
<span class="cline-any cline-no"> </span>
|
|
1516
|
-
<span class="cline-any cline-no"> </span>
|
|
1517
|
-
<span class="cline-any cline-no"> </span>
|
|
1518
|
-
<span class="cline-any cline-no"> </span>
|
|
1519
|
-
<span class="cline-any cline-no"> </span>
|
|
1520
|
-
<span class="cline-any cline-no"> </span>
|
|
1521
|
-
<span class="cline-any cline-no"> </span>
|
|
1522
|
-
<span class="cline-any cline-no"> </span>
|
|
1523
|
-
<span class="cline-any cline-no"> </span>
|
|
1524
|
-
<span class="cline-any cline-no"> </span>
|
|
1525
|
-
<span class="cline-any cline-no"> </span>
|
|
1526
|
-
<span class="cline-any cline-no"> </span>
|
|
1527
|
-
<span class="cline-any cline-no"> </span>
|
|
1528
|
-
<span class="cline-any cline-no"> </span>
|
|
1529
|
-
<span class="cline-any cline-no"> </span>
|
|
1530
|
-
<span class="cline-any cline-no"> </span>
|
|
1531
|
-
<span class="cline-any cline-no"> </span>
|
|
1532
|
-
<span class="cline-any cline-no"> </span>
|
|
1533
|
-
<span class="cline-any cline-no"> </span>
|
|
1534
|
-
<span class="cline-any cline-no"> </span>
|
|
1535
|
-
<span class="cline-any cline-no"> </span>
|
|
1536
|
-
<span class="cline-any cline-no"> </span>
|
|
1537
|
-
<span class="cline-any cline-no"> </span>
|
|
1538
|
-
<span class="cline-any cline-no"> </span>
|
|
1539
|
-
<span class="cline-any cline-no"> </span>
|
|
1540
|
-
<span class="cline-any cline-no"> </span>
|
|
1541
|
-
<span class="cline-any cline-no"> </span>
|
|
1542
|
-
<span class="cline-any cline-no"> </span>
|
|
1543
|
-
<span class="cline-any cline-no"> </span>
|
|
1544
|
-
<span class="cline-any cline-no"> </span>
|
|
1545
|
-
<span class="cline-any cline-no"> </span>
|
|
1546
|
-
<span class="cline-any cline-no"> </span>
|
|
1547
|
-
<span class="cline-any cline-no"> </span>
|
|
1548
|
-
<span class="cline-any cline-no"> </span>
|
|
1549
|
-
<span class="cline-any cline-no"> </span>
|
|
1550
|
-
<span class="cline-any cline-no"> </span>
|
|
1551
|
-
<span class="cline-any cline-no"> </span>
|
|
1552
|
-
<span class="cline-any cline-no"> </span>
|
|
1553
|
-
<span class="cline-any cline-no"> </span>
|
|
1554
|
-
<span class="cline-any cline-no"> </span>
|
|
1555
|
-
<span class="cline-any cline-no"> </span>
|
|
1556
|
-
<span class="cline-any cline-no"> </span>
|
|
1557
|
-
<span class="cline-any cline-no"> </span>
|
|
1558
|
-
<span class="cline-any cline-no"> </span>
|
|
1559
|
-
<span class="cline-any cline-no"> </span>
|
|
1560
|
-
<span class="cline-any cline-no"> </span>
|
|
1561
|
-
<span class="cline-any cline-no"> </span>
|
|
1562
|
-
<span class="cline-any cline-no"> </span>
|
|
1563
|
-
<span class="cline-any cline-no"> </span>
|
|
1564
|
-
<span class="cline-any cline-no"> </span>
|
|
1565
|
-
<span class="cline-any cline-no"> </span>
|
|
1566
|
-
<span class="cline-any cline-no"> </span>
|
|
1567
|
-
<span class="cline-any cline-no"> </span>
|
|
1568
|
-
<span class="cline-any cline-no"> </span>
|
|
1569
|
-
<span class="cline-any cline-no"> </span>
|
|
1570
|
-
<span class="cline-any cline-no"> </span>
|
|
1571
|
-
<span class="cline-any cline-no"> </span>
|
|
1572
|
-
<span class="cline-any cline-no"> </span>
|
|
1573
|
-
<span class="cline-any cline-no"> </span>
|
|
1574
|
-
<span class="cline-any cline-no"> </span>
|
|
1575
|
-
<span class="cline-any cline-no"> </span>
|
|
1576
|
-
<span class="cline-any cline-no"> </span>
|
|
1577
|
-
<span class="cline-any cline-no"> </span>
|
|
1578
|
-
<span class="cline-any cline-no"> </span>
|
|
1579
|
-
<span class="cline-any cline-no"> </span>
|
|
1580
|
-
<span class="cline-any cline-no"> </span>
|
|
1581
|
-
<span class="cline-any cline-no"> </span>
|
|
1582
|
-
<span class="cline-any cline-no"> </span>
|
|
1583
|
-
<span class="cline-any cline-no"> </span>
|
|
1584
|
-
<span class="cline-any cline-no"> </span>
|
|
1585
|
-
<span class="cline-any cline-no"> </span>
|
|
1586
|
-
<span class="cline-any cline-no"> </span>
|
|
1587
|
-
<span class="cline-any cline-no"> </span>
|
|
1588
|
-
<span class="cline-any cline-no"> </span>
|
|
1589
|
-
<span class="cline-any cline-no"> </span>
|
|
1590
|
-
<span class="cline-any cline-no"> </span>
|
|
1591
|
-
<span class="cline-any cline-no"> </span>
|
|
1592
|
-
<span class="cline-any cline-no"> </span>
|
|
1593
|
-
<span class="cline-any cline-no"> </span>
|
|
1594
|
-
<span class="cline-any cline-no"> </span>
|
|
1595
|
-
<span class="cline-any cline-no"> </span>
|
|
1596
|
-
<span class="cline-any cline-no"> </span>
|
|
1597
|
-
<span class="cline-any cline-no"> </span>
|
|
1598
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { Command } from 'commander';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
1599
|
-
<span class="cstat-no" title="statement not covered" >import { loadConfig } from '@md2do/config';</span>
|
|
1600
|
-
<span class="cstat-no" title="statement not covered" >import {</span>
|
|
1601
|
-
<span class="cstat-no" title="statement not covered" > TodoistClient,</span>
|
|
1602
|
-
<span class="cstat-no" title="statement not covered" > md2doToTodoistPriority,</span>
|
|
1603
|
-
<span class="cstat-no" title="statement not covered" > md2doToTodoist,</span>
|
|
1604
|
-
<span class="cstat-no" title="statement not covered" > todoistToMd2do,</span>
|
|
1605
|
-
<span class="cstat-no" title="statement not covered" >} from '@md2do/todoist';</span>
|
|
1606
|
-
<span class="cstat-no" title="statement not covered" >import { parseTask, updateTask } from '@md2do/core';</span>
|
|
1607
|
-
<span class="cstat-no" title="statement not covered" >import type { Task as TodoistTask } from '@doist/todoist-api-typescript';</span>
|
|
1608
|
-
<span class="cstat-no" title="statement not covered" >import type { Task } from '@md2do/core';</span>
|
|
1609
|
-
<span class="cstat-no" title="statement not covered" >import { scanMarkdownFiles } from '../scanner.js';</span>
|
|
1610
|
-
<span class="cstat-no" title="statement not covered" >import fs from 'fs/promises';</span>
|
|
1611
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1612
|
-
<span class="cstat-no" title="statement not covered" >interface TodoistListOptions {</span>
|
|
1613
|
-
<span class="cstat-no" title="statement not covered" > project?: string;</span>
|
|
1614
|
-
<span class="cstat-no" title="statement not covered" > limit?: number;</span>
|
|
1615
|
-
<span class="cstat-no" title="statement not covered" > format?: string;</span>
|
|
1616
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1617
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1618
|
-
<span class="cstat-no" title="statement not covered" >interface TodoistAddOptions {</span>
|
|
1619
|
-
<span class="cstat-no" title="statement not covered" > project?: string;</span>
|
|
1620
|
-
<span class="cstat-no" title="statement not covered" > priority?: string;</span>
|
|
1621
|
-
<span class="cstat-no" title="statement not covered" > due?: string;</span>
|
|
1622
|
-
<span class="cstat-no" title="statement not covered" > labels?: string;</span>
|
|
1623
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1624
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1625
|
-
<span class="cstat-no" title="statement not covered" >interface TodoistImportOptions {</span>
|
|
1626
|
-
<span class="cstat-no" title="statement not covered" > project?: string;</span>
|
|
1627
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1628
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1629
|
-
<span class="cstat-no" title="statement not covered" >interface TodoistSyncOptions {</span>
|
|
1630
|
-
<span class="cstat-no" title="statement not covered" > path?: string;</span>
|
|
1631
|
-
<span class="cstat-no" title="statement not covered" > dryRun?: boolean;</span>
|
|
1632
|
-
<span class="cstat-no" title="statement not covered" > direction?: 'push' | 'pull' | 'both';</span>
|
|
1633
|
-
<span class="cstat-no" title="statement not covered" > force?: boolean;</span>
|
|
1634
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1635
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1636
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1637
|
-
<span class="cstat-no" title="statement not covered" > * Create the todoist command group</span>
|
|
1638
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1639
|
-
<span class="cstat-no" title="statement not covered" >export function createTodoistCommand(): Command {</span>
|
|
1640
|
-
<span class="cstat-no" title="statement not covered" > const command = new Command('todoist');</span>
|
|
1641
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1642
|
-
<span class="cstat-no" title="statement not covered" > command.description('Manage Todoist integration');</span>
|
|
1643
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1644
|
-
<span class="cstat-no" title="statement not covered" > // Add subcommands</span>
|
|
1645
|
-
<span class="cstat-no" title="statement not covered" > command.addCommand(createTodoistListCommand());</span>
|
|
1646
|
-
<span class="cstat-no" title="statement not covered" > command.addCommand(createTodoistAddCommand());</span>
|
|
1647
|
-
<span class="cstat-no" title="statement not covered" > command.addCommand(createTodoistImportCommand());</span>
|
|
1648
|
-
<span class="cstat-no" title="statement not covered" > command.addCommand(createTodoistSyncCommand());</span>
|
|
1649
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1650
|
-
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1652
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1653
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1654
|
-
<span class="cstat-no" title="statement not covered" > * Create the 'todoist list' subcommand</span>
|
|
1655
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1656
|
-
<span class="cstat-no" title="statement not covered" >function createTodoistListCommand(): Command {</span>
|
|
1657
|
-
<span class="cstat-no" title="statement not covered" > const command = new Command('list');</span>
|
|
1658
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1659
|
-
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1660
|
-
<span class="cstat-no" title="statement not covered" > .description('List tasks from Todoist')</span>
|
|
1661
|
-
<span class="cstat-no" title="statement not covered" > .option('--project <name>', 'Filter by project name')</span>
|
|
1662
|
-
<span class="cstat-no" title="statement not covered" > .option('--limit <n>', 'Limit number of results', parseInt)</span>
|
|
1663
|
-
<span class="cstat-no" title="statement not covered" > .option('-f, --format <type>', 'Output format (pretty|json)', 'pretty')</span>
|
|
1664
|
-
<span class="cstat-no" title="statement not covered" > .action(async (options: TodoistListOptions) => {</span>
|
|
1665
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1666
|
-
<span class="cstat-no" title="statement not covered" > await todoistListAction(options);</span>
|
|
1667
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1668
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1669
|
-
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1670
|
-
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1671
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1672
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1673
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1674
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1675
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1676
|
-
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1677
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1678
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1679
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1680
|
-
<span class="cstat-no" title="statement not covered" > * Action handler for 'todoist list' command</span>
|
|
1681
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1682
|
-
<span class="cstat-no" title="statement not covered" >async function todoistListAction(options: TodoistListOptions): Promise<void> {</span>
|
|
1683
|
-
<span class="cstat-no" title="statement not covered" > // Load configuration</span>
|
|
1684
|
-
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
1685
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1686
|
-
<span class="cstat-no" title="statement not covered" > // Validate API token</span>
|
|
1687
|
-
<span class="cstat-no" title="statement not covered" > if (!config.todoist?.apiToken) {</span>
|
|
1688
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Todoist API token not configured');</span>
|
|
1689
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
1690
|
-
<span class="cstat-no" title="statement not covered" > console.error('Please set your API token using one of these methods:');</span>
|
|
1691
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1692
|
-
<span class="cstat-no" title="statement not covered" > ' 1. Environment variable: export TODOIST_API_TOKEN=<token>',</span>
|
|
1693
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1694
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 2. Global config: ~/.md2do.json or ~/.md2do.yaml');</span>
|
|
1695
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 3. Project config: .md2do.json or .md2do.yaml');</span>
|
|
1696
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
1697
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1698
|
-
<span class="cstat-no" title="statement not covered" > 'See docs/todoist-setup.md for instructions on generating a token.',</span>
|
|
1699
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1700
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1701
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1702
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1703
|
-
<span class="cstat-no" title="statement not covered" > // Create client</span>
|
|
1704
|
-
<span class="cstat-no" title="statement not covered" > const client = new TodoistClient({ apiToken: config.todoist.apiToken });</span>
|
|
1705
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1706
|
-
<span class="cstat-no" title="statement not covered" > // Find project ID if project name provided</span>
|
|
1707
|
-
<span class="cstat-no" title="statement not covered" > let projectId: string | undefined;</span>
|
|
1708
|
-
<span class="cstat-no" title="statement not covered" > if (options.project) {</span>
|
|
1709
|
-
<span class="cstat-no" title="statement not covered" > const project = await client.findProjectByName(options.project);</span>
|
|
1710
|
-
<span class="cstat-no" title="statement not covered" > if (!project) {</span>
|
|
1711
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Project "${options.project}" not found`);</span>
|
|
1712
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1713
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1714
|
-
<span class="cstat-no" title="statement not covered" > projectId = project.id;</span>
|
|
1715
|
-
<span class="cstat-no" title="statement not covered" > } else if (config.todoist.defaultProject) {</span>
|
|
1716
|
-
<span class="cstat-no" title="statement not covered" > // Use default project from config</span>
|
|
1717
|
-
<span class="cstat-no" title="statement not covered" > const project = await client.findProjectByName(</span>
|
|
1718
|
-
<span class="cstat-no" title="statement not covered" > config.todoist.defaultProject,</span>
|
|
1719
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1720
|
-
<span class="cstat-no" title="statement not covered" > if (project) {</span>
|
|
1721
|
-
<span class="cstat-no" title="statement not covered" > projectId = project.id;</span>
|
|
1722
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1723
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1724
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1725
|
-
<span class="cstat-no" title="statement not covered" > // Fetch tasks</span>
|
|
1726
|
-
<span class="cstat-no" title="statement not covered" > const tasks = await client.getTasks(projectId ? { projectId } : undefined);</span>
|
|
1727
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1728
|
-
<span class="cstat-no" title="statement not covered" > // Apply limit</span>
|
|
1729
|
-
<span class="cstat-no" title="statement not covered" > const limitedTasks = options.limit ? tasks.slice(0, options.limit) : tasks;</span>
|
|
1730
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1731
|
-
<span class="cstat-no" title="statement not covered" > // Format and display</span>
|
|
1732
|
-
<span class="cstat-no" title="statement not covered" > if (options.format === 'json') {</span>
|
|
1733
|
-
<span class="cstat-no" title="statement not covered" > formatAsJsonTodoist(limitedTasks);</span>
|
|
1734
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1735
|
-
<span class="cstat-no" title="statement not covered" > formatAsPrettyTodoist(</span>
|
|
1736
|
-
<span class="cstat-no" title="statement not covered" > limitedTasks,</span>
|
|
1737
|
-
<span class="cstat-no" title="statement not covered" > options.project || config.todoist.defaultProject,</span>
|
|
1738
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1739
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1740
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1741
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1742
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1743
|
-
<span class="cstat-no" title="statement not covered" > * Format Todoist tasks as JSON</span>
|
|
1744
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1745
|
-
<span class="cstat-no" title="statement not covered" >function formatAsJsonTodoist(tasks: TodoistTask[]): void {</span>
|
|
1746
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
1747
|
-
<span class="cstat-no" title="statement not covered" > JSON.stringify(</span>
|
|
1748
|
-
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1749
|
-
<span class="cstat-no" title="statement not covered" > tasks: tasks.map((t) => ({</span>
|
|
1750
|
-
<span class="cstat-no" title="statement not covered" > id: t.id,</span>
|
|
1751
|
-
<span class="cstat-no" title="statement not covered" > content: t.content,</span>
|
|
1752
|
-
<span class="cstat-no" title="statement not covered" > description: t.description,</span>
|
|
1753
|
-
<span class="cstat-no" title="statement not covered" > completed: t.isCompleted,</span>
|
|
1754
|
-
<span class="cstat-no" title="statement not covered" > priority: t.priority,</span>
|
|
1755
|
-
<span class="cstat-no" title="statement not covered" > due: t.due?.date,</span>
|
|
1756
|
-
<span class="cstat-no" title="statement not covered" > labels: t.labels,</span>
|
|
1757
|
-
<span class="cstat-no" title="statement not covered" > projectId: t.projectId,</span>
|
|
1758
|
-
<span class="cstat-no" title="statement not covered" > url: t.url,</span>
|
|
1759
|
-
<span class="cstat-no" title="statement not covered" > })),</span>
|
|
1760
|
-
<span class="cstat-no" title="statement not covered" > metadata: {</span>
|
|
1761
|
-
<span class="cstat-no" title="statement not covered" > total: tasks.length,</span>
|
|
1762
|
-
<span class="cstat-no" title="statement not covered" > completed: tasks.filter((t) => t.isCompleted).length,</span>
|
|
1763
|
-
<span class="cstat-no" title="statement not covered" > incomplete: tasks.filter((t) => !t.isCompleted).length,</span>
|
|
1764
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1765
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1766
|
-
<span class="cstat-no" title="statement not covered" > null,</span>
|
|
1767
|
-
<span class="cstat-no" title="statement not covered" > 2,</span>
|
|
1768
|
-
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1769
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1770
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1771
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1772
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1773
|
-
<span class="cstat-no" title="statement not covered" > * Format Todoist tasks as pretty output</span>
|
|
1774
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1775
|
-
<span class="cstat-no" title="statement not covered" >function formatAsPrettyTodoist(</span>
|
|
1776
|
-
<span class="cstat-no" title="statement not covered" > tasks: TodoistTask[],</span>
|
|
1777
|
-
<span class="cstat-no" title="statement not covered" > projectName?: string,</span>
|
|
1778
|
-
<span class="cstat-no" title="statement not covered" >): void {</span>
|
|
1779
|
-
<span class="cstat-no" title="statement not covered" > const completed = tasks.filter((t) => t.isCompleted).length;</span>
|
|
1780
|
-
<span class="cstat-no" title="statement not covered" > const incomplete = tasks.filter((t) => !t.isCompleted).length;</span>
|
|
1781
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1782
|
-
<span class="cstat-no" title="statement not covered" > // Header</span>
|
|
1783
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1784
|
-
<span class="cstat-no" title="statement not covered" > if (projectName) {</span>
|
|
1785
|
-
<span class="cstat-no" title="statement not covered" > console.log(`📋 Todoist tasks from "${projectName}"`);</span>
|
|
1786
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1787
|
-
<span class="cstat-no" title="statement not covered" > console.log('📋 Todoist tasks');</span>
|
|
1788
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1789
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Found ${tasks.length} tasks`);</span>
|
|
1790
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ✓ ${completed} completed | ○ ${incomplete} incomplete`);</span>
|
|
1791
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1792
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1793
|
-
<span class="cstat-no" title="statement not covered" > if (tasks.length === 0) {</span>
|
|
1794
|
-
<span class="cstat-no" title="statement not covered" > console.log('No tasks found.');</span>
|
|
1795
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1796
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1797
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1798
|
-
<span class="cstat-no" title="statement not covered" > // Sort by priority (higher priority first)</span>
|
|
1799
|
-
<span class="cstat-no" title="statement not covered" > const sortedTasks = [...tasks].sort((a, b) => b.priority - a.priority);</span>
|
|
1800
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1801
|
-
<span class="cstat-no" title="statement not covered" > // Display tasks</span>
|
|
1802
|
-
<span class="cstat-no" title="statement not covered" > for (const task of sortedTasks) {</span>
|
|
1803
|
-
<span class="cstat-no" title="statement not covered" > const checkbox = task.isCompleted ? '✓' : '○';</span>
|
|
1804
|
-
<span class="cstat-no" title="statement not covered" > const priority = formatPriority(task.priority);</span>
|
|
1805
|
-
<span class="cstat-no" title="statement not covered" > const labels =</span>
|
|
1806
|
-
<span class="cstat-no" title="statement not covered" > task.labels.length > 0</span>
|
|
1807
|
-
<span class="cstat-no" title="statement not covered" > ? ` ${task.labels.map((l: string) => `#${l}`).join(' ')}`</span>
|
|
1808
|
-
<span class="cstat-no" title="statement not covered" > : '';</span>
|
|
1809
|
-
<span class="cstat-no" title="statement not covered" > const due = task.due?.date ? ` (${task.due.date})` : '';</span>
|
|
1810
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1811
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${checkbox} ${priority}${task.content}${due}${labels}`);</span>
|
|
1812
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${task.url}`);</span>
|
|
1813
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1814
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1815
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1816
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1817
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1818
|
-
<span class="cstat-no" title="statement not covered" > * Format Todoist priority as visual indicator</span>
|
|
1819
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1820
|
-
<span class="cstat-no" title="statement not covered" >function formatPriority(priority: number): string {</span>
|
|
1821
|
-
<span class="cstat-no" title="statement not covered" > switch (priority) {</span>
|
|
1822
|
-
<span class="cstat-no" title="statement not covered" > case 4:</span>
|
|
1823
|
-
<span class="cstat-no" title="statement not covered" > return '!!! '; // urgent</span>
|
|
1824
|
-
<span class="cstat-no" title="statement not covered" > case 3:</span>
|
|
1825
|
-
<span class="cstat-no" title="statement not covered" > return '!! '; // high</span>
|
|
1826
|
-
<span class="cstat-no" title="statement not covered" > case 2:</span>
|
|
1827
|
-
<span class="cstat-no" title="statement not covered" > return '! '; // normal</span>
|
|
1828
|
-
<span class="cstat-no" title="statement not covered" > default:</span>
|
|
1829
|
-
<span class="cstat-no" title="statement not covered" > return ''; // low</span>
|
|
1830
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1831
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1832
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1833
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1834
|
-
<span class="cstat-no" title="statement not covered" > * Create the 'todoist add' subcommand</span>
|
|
1835
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1836
|
-
<span class="cstat-no" title="statement not covered" >function createTodoistAddCommand(): Command {</span>
|
|
1837
|
-
<span class="cstat-no" title="statement not covered" > const command = new Command('add');</span>
|
|
1838
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1839
|
-
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1840
|
-
<span class="cstat-no" title="statement not covered" > .description('Create a task directly in Todoist')</span>
|
|
1841
|
-
<span class="cstat-no" title="statement not covered" > .argument('<task>', 'Task content')</span>
|
|
1842
|
-
<span class="cstat-no" title="statement not covered" > .option('--project <name>', 'Project name')</span>
|
|
1843
|
-
<span class="cstat-no" title="statement not covered" > .option('--priority <level>', 'Priority: urgent|high|normal|low', 'normal')</span>
|
|
1844
|
-
<span class="cstat-no" title="statement not covered" > .option(</span>
|
|
1845
|
-
<span class="cstat-no" title="statement not covered" > '--due <date>',</span>
|
|
1846
|
-
<span class="cstat-no" title="statement not covered" > 'Due date (YYYY-MM-DD, "today", "tomorrow", or natural language)',</span>
|
|
1847
|
-
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1848
|
-
<span class="cstat-no" title="statement not covered" > .option('--labels <tags>', 'Comma-separated labels')</span>
|
|
1849
|
-
<span class="cstat-no" title="statement not covered" > .action(async (taskContent: string, options: TodoistAddOptions) => {</span>
|
|
1850
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1851
|
-
<span class="cstat-no" title="statement not covered" > await todoistAddAction(taskContent, options);</span>
|
|
1852
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1853
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1854
|
-
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1855
|
-
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1856
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1857
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1858
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1859
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1860
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1861
|
-
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1862
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1863
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1864
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1865
|
-
<span class="cstat-no" title="statement not covered" > * Action handler for 'todoist add' command</span>
|
|
1866
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1867
|
-
<span class="cstat-no" title="statement not covered" >async function todoistAddAction(</span>
|
|
1868
|
-
<span class="cstat-no" title="statement not covered" > taskContent: string,</span>
|
|
1869
|
-
<span class="cstat-no" title="statement not covered" > options: TodoistAddOptions,</span>
|
|
1870
|
-
<span class="cstat-no" title="statement not covered" >): Promise<void> {</span>
|
|
1871
|
-
<span class="cstat-no" title="statement not covered" > // Load configuration</span>
|
|
1872
|
-
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
1873
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1874
|
-
<span class="cstat-no" title="statement not covered" > // Validate API token</span>
|
|
1875
|
-
<span class="cstat-no" title="statement not covered" > if (!config.todoist?.apiToken) {</span>
|
|
1876
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Todoist API token not configured');</span>
|
|
1877
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
1878
|
-
<span class="cstat-no" title="statement not covered" > console.error('Please set your API token using one of these methods:');</span>
|
|
1879
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1880
|
-
<span class="cstat-no" title="statement not covered" > ' 1. Environment variable: export TODOIST_API_TOKEN=<token>',</span>
|
|
1881
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1882
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 2. Global config: ~/.md2do.json or ~/.md2do.yaml');</span>
|
|
1883
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 3. Project config: .md2do.json or .md2do.yaml');</span>
|
|
1884
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
1885
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1886
|
-
<span class="cstat-no" title="statement not covered" > 'See docs/todoist-setup.md for instructions on generating a token.',</span>
|
|
1887
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1888
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1889
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1890
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1891
|
-
<span class="cstat-no" title="statement not covered" > // Create client</span>
|
|
1892
|
-
<span class="cstat-no" title="statement not covered" > const client = new TodoistClient({ apiToken: config.todoist.apiToken });</span>
|
|
1893
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1894
|
-
<span class="cstat-no" title="statement not covered" > // Find project ID if project name provided</span>
|
|
1895
|
-
<span class="cstat-no" title="statement not covered" > let projectId: string | undefined;</span>
|
|
1896
|
-
<span class="cstat-no" title="statement not covered" > const projectName =</span>
|
|
1897
|
-
<span class="cstat-no" title="statement not covered" > options.project || config.todoist.defaultProject || 'Inbox';</span>
|
|
1898
|
-
<span class="cstat-no" title="statement not covered" > const project = await client.findProjectByName(projectName);</span>
|
|
1899
|
-
<span class="cstat-no" title="statement not covered" > if (project) {</span>
|
|
1900
|
-
<span class="cstat-no" title="statement not covered" > projectId = project.id;</span>
|
|
1901
|
-
<span class="cstat-no" title="statement not covered" > } else if (options.project) {</span>
|
|
1902
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Project "${options.project}" not found`);</span>
|
|
1903
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1904
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1905
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1906
|
-
<span class="cstat-no" title="statement not covered" > // Parse labels</span>
|
|
1907
|
-
<span class="cstat-no" title="statement not covered" > const labels = options.labels</span>
|
|
1908
|
-
<span class="cstat-no" title="statement not covered" > ? options.labels.split(',').map((l) => l.trim())</span>
|
|
1909
|
-
<span class="cstat-no" title="statement not covered" > : [];</span>
|
|
1910
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1911
|
-
<span class="cstat-no" title="statement not covered" > // Ensure labels exist</span>
|
|
1912
|
-
<span class="cstat-no" title="statement not covered" > for (const labelName of labels) {</span>
|
|
1913
|
-
<span class="cstat-no" title="statement not covered" > await client.ensureLabel(labelName);</span>
|
|
1914
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1915
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1916
|
-
<span class="cstat-no" title="statement not covered" > // Create task</span>
|
|
1917
|
-
<span class="cstat-no" title="statement not covered" > const priority = md2doToTodoistPriority(options.priority);</span>
|
|
1918
|
-
<span class="cstat-no" title="statement not covered" > const taskParams: Record<string, string | number | string[]> = {</span>
|
|
1919
|
-
<span class="cstat-no" title="statement not covered" > content: taskContent,</span>
|
|
1920
|
-
<span class="cstat-no" title="statement not covered" > priority,</span>
|
|
1921
|
-
<span class="cstat-no" title="statement not covered" > labels,</span>
|
|
1922
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1923
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1924
|
-
<span class="cstat-no" title="statement not covered" > if (options.due) {</span>
|
|
1925
|
-
<span class="cstat-no" title="statement not covered" > taskParams.due_string = options.due;</span>
|
|
1926
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1927
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1928
|
-
<span class="cstat-no" title="statement not covered" > if (projectId) {</span>
|
|
1929
|
-
<span class="cstat-no" title="statement not covered" > taskParams.project_id = projectId;</span>
|
|
1930
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1931
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1932
|
-
<span class="cstat-no" title="statement not covered" > const task = await client.createTask(taskParams);</span>
|
|
1933
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1934
|
-
<span class="cstat-no" title="statement not covered" > // Display success</span>
|
|
1935
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1936
|
-
<span class="cstat-no" title="statement not covered" > console.log('✅ Task created in Todoist!');</span>
|
|
1937
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1938
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Content: ${task.content}`);</span>
|
|
1939
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Priority: ${formatPriority(task.priority).trim() || 'low'}`);</span>
|
|
1940
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Project: ${projectName}`);</span>
|
|
1941
|
-
<span class="cstat-no" title="statement not covered" > if (task.due?.date) {</span>
|
|
1942
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Due: ${task.due.date}`);</span>
|
|
1943
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1944
|
-
<span class="cstat-no" title="statement not covered" > if (task.labels.length > 0) {</span>
|
|
1945
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Labels: ${task.labels.join(', ')}`);</span>
|
|
1946
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1947
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1948
|
-
<span class="cstat-no" title="statement not covered" > console.log(` View in Todoist: ${task.url}`);</span>
|
|
1949
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1950
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1951
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1952
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1953
|
-
<span class="cstat-no" title="statement not covered" > * Create the 'todoist import' subcommand</span>
|
|
1954
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1955
|
-
<span class="cstat-no" title="statement not covered" >function createTodoistImportCommand(): Command {</span>
|
|
1956
|
-
<span class="cstat-no" title="statement not covered" > const command = new Command('import');</span>
|
|
1957
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1958
|
-
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1959
|
-
<span class="cstat-no" title="statement not covered" > .description('Import a markdown task to Todoist and write back the ID')</span>
|
|
1960
|
-
<span class="cstat-no" title="statement not covered" > .argument('<location>', 'File location in format: <file>:<line>')</span>
|
|
1961
|
-
<span class="cstat-no" title="statement not covered" > .option('--project <name>', 'Project name (overrides config default)')</span>
|
|
1962
|
-
<span class="cstat-no" title="statement not covered" > .action(async (location: string, options: TodoistImportOptions) => {</span>
|
|
1963
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1964
|
-
<span class="cstat-no" title="statement not covered" > await todoistImportAction(location, options);</span>
|
|
1965
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1966
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1967
|
-
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1968
|
-
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1969
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1970
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1971
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1972
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1973
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1974
|
-
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1975
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1976
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1977
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1978
|
-
<span class="cstat-no" title="statement not covered" > * Action handler for 'todoist import' command</span>
|
|
1979
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1980
|
-
<span class="cstat-no" title="statement not covered" >async function todoistImportAction(</span>
|
|
1981
|
-
<span class="cstat-no" title="statement not covered" > location: string,</span>
|
|
1982
|
-
<span class="cstat-no" title="statement not covered" > options: TodoistImportOptions,</span>
|
|
1983
|
-
<span class="cstat-no" title="statement not covered" >): Promise<void> {</span>
|
|
1984
|
-
<span class="cstat-no" title="statement not covered" > // Parse location</span>
|
|
1985
|
-
<span class="cstat-no" title="statement not covered" > const parts = location.split(':');</span>
|
|
1986
|
-
<span class="cstat-no" title="statement not covered" > if (parts.length !== 2) {</span>
|
|
1987
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Invalid location format. Expected <file>:<line>');</span>
|
|
1988
|
-
<span class="cstat-no" title="statement not covered" > console.error(' Example: tasks.md:15');</span>
|
|
1989
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1990
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1991
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1992
|
-
<span class="cstat-no" title="statement not covered" > const file = parts[0];</span>
|
|
1993
|
-
<span class="cstat-no" title="statement not covered" > const lineStr = parts[1];</span>
|
|
1994
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1995
|
-
<span class="cstat-no" title="statement not covered" > if (!file || !lineStr) {</span>
|
|
1996
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Invalid location format. Expected <file>:<line>');</span>
|
|
1997
|
-
<span class="cstat-no" title="statement not covered" > console.error(' Example: tasks.md:15');</span>
|
|
1998
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1999
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2000
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2001
|
-
<span class="cstat-no" title="statement not covered" > const line = parseInt(lineStr, 10);</span>
|
|
2002
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2003
|
-
<span class="cstat-no" title="statement not covered" > if (isNaN(line) || line < 1) {</span>
|
|
2004
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Invalid line number: ${lineStr}`);</span>
|
|
2005
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2006
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2007
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2008
|
-
<span class="cstat-no" title="statement not covered" > // Load configuration</span>
|
|
2009
|
-
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
2010
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2011
|
-
<span class="cstat-no" title="statement not covered" > // Validate API token</span>
|
|
2012
|
-
<span class="cstat-no" title="statement not covered" > if (!config.todoist?.apiToken) {</span>
|
|
2013
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Todoist API token not configured');</span>
|
|
2014
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
2015
|
-
<span class="cstat-no" title="statement not covered" > console.error('Please set your API token using one of these methods:');</span>
|
|
2016
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2017
|
-
<span class="cstat-no" title="statement not covered" > ' 1. Environment variable: export TODOIST_API_TOKEN=<token>',</span>
|
|
2018
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2019
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 2. Global config: ~/.md2do.json or ~/.md2do.yaml');</span>
|
|
2020
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 3. Project config: .md2do.json or .md2do.yaml');</span>
|
|
2021
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
2022
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2023
|
-
<span class="cstat-no" title="statement not covered" > 'See docs/todoist-setup.md for instructions on generating a token.',</span>
|
|
2024
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2025
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2026
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2027
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2028
|
-
<span class="cstat-no" title="statement not covered" > // Read file</span>
|
|
2029
|
-
<span class="cstat-no" title="statement not covered" > let content: string;</span>
|
|
2030
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2031
|
-
<span class="cstat-no" title="statement not covered" > content = await fs.readFile(file, 'utf-8');</span>
|
|
2032
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2033
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Could not read file: ${file}`);</span>
|
|
2034
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2035
|
-
<span class="cstat-no" title="statement not covered" > ` ${error instanceof Error ? error.message : String(error)}`,</span>
|
|
2036
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2037
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2038
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2039
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2040
|
-
<span class="cstat-no" title="statement not covered" > const lines = content.split('\n');</span>
|
|
2041
|
-
<span class="cstat-no" title="statement not covered" > if (line > lines.length) {</span>
|
|
2042
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Line ${line} does not exist in ${file}`);</span>
|
|
2043
|
-
<span class="cstat-no" title="statement not covered" > console.error(` File has ${lines.length} lines`);</span>
|
|
2044
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2045
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2046
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2047
|
-
<span class="cstat-no" title="statement not covered" > const lineContent = lines[line - 1];</span>
|
|
2048
|
-
<span class="cstat-no" title="statement not covered" > if (!lineContent) {</span>
|
|
2049
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Line ${line} is empty`);</span>
|
|
2050
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2051
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2052
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2053
|
-
<span class="cstat-no" title="statement not covered" > // Parse task from line</span>
|
|
2054
|
-
<span class="cstat-no" title="statement not covered" > const parseResult = parseTask(lineContent, line, file, {});</span>
|
|
2055
|
-
<span class="cstat-no" title="statement not covered" > if (!parseResult.task) {</span>
|
|
2056
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Line ${line} is not a task`);</span>
|
|
2057
|
-
<span class="cstat-no" title="statement not covered" > console.error(` Line content: ${lineContent}`);</span>
|
|
2058
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2059
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2060
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2061
|
-
<span class="cstat-no" title="statement not covered" > const task = parseResult.task;</span>
|
|
2062
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2063
|
-
<span class="cstat-no" title="statement not covered" > // Check if already has Todoist ID</span>
|
|
2064
|
-
<span class="cstat-no" title="statement not covered" > if (task.todoistId) {</span>
|
|
2065
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Task already has a Todoist ID: ${task.todoistId}`);</span>
|
|
2066
|
-
<span class="cstat-no" title="statement not covered" > console.error(" Use 'md2do todoist sync' to sync existing tasks");</span>
|
|
2067
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2068
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2069
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2070
|
-
<span class="cstat-no" title="statement not covered" > // Create client</span>
|
|
2071
|
-
<span class="cstat-no" title="statement not covered" > const client = new TodoistClient({ apiToken: config.todoist.apiToken });</span>
|
|
2072
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2073
|
-
<span class="cstat-no" title="statement not covered" > // Find project ID</span>
|
|
2074
|
-
<span class="cstat-no" title="statement not covered" > let projectId: string | undefined;</span>
|
|
2075
|
-
<span class="cstat-no" title="statement not covered" > const projectName =</span>
|
|
2076
|
-
<span class="cstat-no" title="statement not covered" > options.project || config.todoist.defaultProject || 'Inbox';</span>
|
|
2077
|
-
<span class="cstat-no" title="statement not covered" > const project = await client.findProjectByName(projectName);</span>
|
|
2078
|
-
<span class="cstat-no" title="statement not covered" > if (project) {</span>
|
|
2079
|
-
<span class="cstat-no" title="statement not covered" > projectId = project.id;</span>
|
|
2080
|
-
<span class="cstat-no" title="statement not covered" > } else if (options.project) {</span>
|
|
2081
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Project "${options.project}" not found`);</span>
|
|
2082
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2083
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2084
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2085
|
-
<span class="cstat-no" title="statement not covered" > // Convert task to Todoist format</span>
|
|
2086
|
-
<span class="cstat-no" title="statement not covered" > const todoistParams = md2doToTodoist(task, projectId);</span>
|
|
2087
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2088
|
-
<span class="cstat-no" title="statement not covered" > // Ensure labels exist</span>
|
|
2089
|
-
<span class="cstat-no" title="statement not covered" > if (todoistParams.labels) {</span>
|
|
2090
|
-
<span class="cstat-no" title="statement not covered" > for (const labelName of todoistParams.labels) {</span>
|
|
2091
|
-
<span class="cstat-no" title="statement not covered" > await client.ensureLabel(labelName);</span>
|
|
2092
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2093
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2094
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2095
|
-
<span class="cstat-no" title="statement not covered" > // Create task in Todoist</span>
|
|
2096
|
-
<span class="cstat-no" title="statement not covered" > const todoistTask = await client.createTask(todoistParams);</span>
|
|
2097
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2098
|
-
<span class="cstat-no" title="statement not covered" > // Update markdown file with Todoist ID</span>
|
|
2099
|
-
<span class="cstat-no" title="statement not covered" > const updateResult = await updateTask({</span>
|
|
2100
|
-
<span class="cstat-no" title="statement not covered" > file: file,</span>
|
|
2101
|
-
<span class="cstat-no" title="statement not covered" > line,</span>
|
|
2102
|
-
<span class="cstat-no" title="statement not covered" > updates: {</span>
|
|
2103
|
-
<span class="cstat-no" title="statement not covered" > text: `${task.text} [todoist:${todoistTask.id}]`,</span>
|
|
2104
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
2105
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2106
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2107
|
-
<span class="cstat-no" title="statement not covered" > if (!updateResult.success) {</span>
|
|
2108
|
-
<span class="cstat-no" title="statement not covered" > console.error(`❌ Error: Failed to update ${file}:${line}`);</span>
|
|
2109
|
-
<span class="cstat-no" title="statement not covered" > console.error(` ${updateResult.error}`);</span>
|
|
2110
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2111
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2112
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2113
|
-
<span class="cstat-no" title="statement not covered" > // Display success</span>
|
|
2114
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2115
|
-
<span class="cstat-no" title="statement not covered" > console.log('✅ Task imported to Todoist!');</span>
|
|
2116
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2117
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Content: ${todoistTask.content}`);</span>
|
|
2118
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
2119
|
-
<span class="cstat-no" title="statement not covered" > ` Priority: ${formatPriority(todoistTask.priority).trim() || 'low'}`,</span>
|
|
2120
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2121
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Project: ${projectName}`);</span>
|
|
2122
|
-
<span class="cstat-no" title="statement not covered" > if (todoistTask.due?.date) {</span>
|
|
2123
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Due: ${todoistTask.due.date}`);</span>
|
|
2124
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2125
|
-
<span class="cstat-no" title="statement not covered" > if (todoistTask.labels.length > 0) {</span>
|
|
2126
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Labels: ${todoistTask.labels.join(', ')}`);</span>
|
|
2127
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2128
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2129
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Todoist ID: ${todoistTask.id}`);</span>
|
|
2130
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Updated: ${file}:${line}`);</span>
|
|
2131
|
-
<span class="cstat-no" title="statement not covered" > console.log(` View in Todoist: ${todoistTask.url}`);</span>
|
|
2132
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2133
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2134
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2135
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2136
|
-
<span class="cstat-no" title="statement not covered" > * Create the 'todoist sync' subcommand</span>
|
|
2137
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2138
|
-
<span class="cstat-no" title="statement not covered" >function createTodoistSyncCommand(): Command {</span>
|
|
2139
|
-
<span class="cstat-no" title="statement not covered" > const command = new Command('sync');</span>
|
|
2140
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2141
|
-
<span class="cstat-no" title="statement not covered" > command</span>
|
|
2142
|
-
<span class="cstat-no" title="statement not covered" > .description('Bidirectional sync between markdown and Todoist')</span>
|
|
2143
|
-
<span class="cstat-no" title="statement not covered" > .option('-p, --path <path>', 'Path to sync (default: current directory)')</span>
|
|
2144
|
-
<span class="cstat-no" title="statement not covered" > .option('--dry-run', 'Show what would be synced without making changes')</span>
|
|
2145
|
-
<span class="cstat-no" title="statement not covered" > .option('--direction <dir>', 'Sync direction: push|pull|both', 'both')</span>
|
|
2146
|
-
<span class="cstat-no" title="statement not covered" > .option('--force', 'Skip confirmation prompts')</span>
|
|
2147
|
-
<span class="cstat-no" title="statement not covered" > .action(async (options: TodoistSyncOptions) => {</span>
|
|
2148
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2149
|
-
<span class="cstat-no" title="statement not covered" > await todoistSyncAction(options);</span>
|
|
2150
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2151
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2152
|
-
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
2153
|
-
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
2154
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2155
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2156
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2157
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2158
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2159
|
-
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
2160
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2161
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2162
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2163
|
-
<span class="cstat-no" title="statement not covered" > * Action handler for 'todoist sync' command</span>
|
|
2164
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2165
|
-
<span class="cstat-no" title="statement not covered" >async function todoistSyncAction(options: TodoistSyncOptions): Promise<void> {</span>
|
|
2166
|
-
<span class="cstat-no" title="statement not covered" > // Load configuration</span>
|
|
2167
|
-
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
2168
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2169
|
-
<span class="cstat-no" title="statement not covered" > // Validate API token</span>
|
|
2170
|
-
<span class="cstat-no" title="statement not covered" > if (!config.todoist?.apiToken) {</span>
|
|
2171
|
-
<span class="cstat-no" title="statement not covered" > console.error('❌ Error: Todoist API token not configured');</span>
|
|
2172
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
2173
|
-
<span class="cstat-no" title="statement not covered" > console.error('Please set your API token using one of these methods:');</span>
|
|
2174
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2175
|
-
<span class="cstat-no" title="statement not covered" > ' 1. Environment variable: export TODOIST_API_TOKEN=<token>',</span>
|
|
2176
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2177
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 2. Global config: ~/.md2do.json or ~/.md2do.yaml');</span>
|
|
2178
|
-
<span class="cstat-no" title="statement not covered" > console.error(' 3. Project config: .md2do.json or .md2do.yaml');</span>
|
|
2179
|
-
<span class="cstat-no" title="statement not covered" > console.error('');</span>
|
|
2180
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2181
|
-
<span class="cstat-no" title="statement not covered" > 'See docs/todoist-setup.md for instructions on generating a token.',</span>
|
|
2182
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2183
|
-
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2184
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2185
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2186
|
-
<span class="cstat-no" title="statement not covered" > // Create client</span>
|
|
2187
|
-
<span class="cstat-no" title="statement not covered" > const client = new TodoistClient({ apiToken: config.todoist.apiToken });</span>
|
|
2188
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2189
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2190
|
-
<span class="cstat-no" title="statement not covered" > console.log('🔄 Scanning markdown files...');</span>
|
|
2191
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2192
|
-
<span class="cstat-no" title="statement not covered" > // Scan markdown files</span>
|
|
2193
|
-
<span class="cstat-no" title="statement not covered" > const scanResult = await scanMarkdownFiles({</span>
|
|
2194
|
-
<span class="cstat-no" title="statement not covered" > root: options.path || process.cwd(),</span>
|
|
2195
|
-
<span class="cstat-no" title="statement not covered" > pattern: config.markdown?.pattern || '**/*.md',</span>
|
|
2196
|
-
<span class="cstat-no" title="statement not covered" > exclude: config.markdown?.exclude || [],</span>
|
|
2197
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2198
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2199
|
-
<span class="cstat-no" title="statement not covered" > // Filter tasks with Todoist IDs</span>
|
|
2200
|
-
<span class="cstat-no" title="statement not covered" > const tasksWithTodoist = scanResult.tasks.filter((t) => t.todoistId);</span>
|
|
2201
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2202
|
-
<span class="cstat-no" title="statement not covered" > if (tasksWithTodoist.length === 0) {</span>
|
|
2203
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2204
|
-
<span class="cstat-no" title="statement not covered" > console.log('No tasks with Todoist IDs found.');</span>
|
|
2205
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2206
|
-
<span class="cstat-no" title="statement not covered" > console.log("Tip: Use 'md2do todoist import <file>:<line>' to link tasks");</span>
|
|
2207
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2208
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2209
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2210
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2211
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Found ${tasksWithTodoist.length} tasks with Todoist IDs`);</span>
|
|
2212
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2213
|
-
<span class="cstat-no" title="statement not covered" > console.log('🔍 Fetching tasks from Todoist...');</span>
|
|
2214
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2215
|
-
<span class="cstat-no" title="statement not covered" > // Fetch corresponding Todoist tasks</span>
|
|
2216
|
-
<span class="cstat-no" title="statement not covered" > const todoistTasks = new Map<string, TodoistTask>();</span>
|
|
2217
|
-
<span class="cstat-no" title="statement not covered" > const notFoundIds: string[] = [];</span>
|
|
2218
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2219
|
-
<span class="cstat-no" title="statement not covered" > for (const task of tasksWithTodoist) {</span>
|
|
2220
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2221
|
-
<span class="cstat-no" title="statement not covered" > const todoistTask = await client.getTask(task.todoistId!);</span>
|
|
2222
|
-
<span class="cstat-no" title="statement not covered" > todoistTasks.set(task.todoistId!, todoistTask);</span>
|
|
2223
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2224
|
-
<span class="cstat-no" title="statement not covered" > // Task not found in Todoist (deleted)</span>
|
|
2225
|
-
<span class="cstat-no" title="statement not covered" > notFoundIds.push(task.todoistId!);</span>
|
|
2226
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2227
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2228
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2229
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Retrieved ${todoistTasks.size} tasks from Todoist`);</span>
|
|
2230
|
-
<span class="cstat-no" title="statement not covered" > if (notFoundIds.length > 0) {</span>
|
|
2231
|
-
<span class="cstat-no" title="statement not covered" > console.log(`${notFoundIds.length} tasks not found (deleted in Todoist)`);</span>
|
|
2232
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2233
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2234
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2235
|
-
<span class="cstat-no" title="statement not covered" > // Detect changes</span>
|
|
2236
|
-
<span class="cstat-no" title="statement not covered" > const updates: Array<{</span>
|
|
2237
|
-
<span class="cstat-no" title="statement not covered" > type: 'pull' | 'push';</span>
|
|
2238
|
-
<span class="cstat-no" title="statement not covered" > task: Task;</span>
|
|
2239
|
-
<span class="cstat-no" title="statement not covered" > todoistTask?: TodoistTask;</span>
|
|
2240
|
-
<span class="cstat-no" title="statement not covered" > reason: string;</span>
|
|
2241
|
-
<span class="cstat-no" title="statement not covered" > }> = [];</span>
|
|
2242
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2243
|
-
<span class="cstat-no" title="statement not covered" > for (const mdTask of tasksWithTodoist) {</span>
|
|
2244
|
-
<span class="cstat-no" title="statement not covered" > const todoistTask = todoistTasks.get(mdTask.todoistId!);</span>
|
|
2245
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2246
|
-
<span class="cstat-no" title="statement not covered" > if (!todoistTask) {</span>
|
|
2247
|
-
<span class="cstat-no" title="statement not covered" > // Task deleted in Todoist</span>
|
|
2248
|
-
<span class="cstat-no" title="statement not covered" > if (options.direction === 'pull' || options.direction === 'both') {</span>
|
|
2249
|
-
<span class="cstat-no" title="statement not covered" > updates.push({</span>
|
|
2250
|
-
<span class="cstat-no" title="statement not covered" > type: 'pull',</span>
|
|
2251
|
-
<span class="cstat-no" title="statement not covered" > task: mdTask,</span>
|
|
2252
|
-
<span class="cstat-no" title="statement not covered" > reason: 'Task deleted in Todoist',</span>
|
|
2253
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2254
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2255
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
2256
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2257
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2258
|
-
<span class="cstat-no" title="statement not covered" > // Check for differences</span>
|
|
2259
|
-
<span class="cstat-no" title="statement not covered" > const completionDiffers = mdTask.completed !== todoistTask.isCompleted;</span>
|
|
2260
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2261
|
-
<span class="cstat-no" title="statement not covered" > if (completionDiffers) {</span>
|
|
2262
|
-
<span class="cstat-no" title="statement not covered" > if (options.direction === 'pull' || options.direction === 'both') {</span>
|
|
2263
|
-
<span class="cstat-no" title="statement not covered" > // Todoist wins for completion status</span>
|
|
2264
|
-
<span class="cstat-no" title="statement not covered" > updates.push({</span>
|
|
2265
|
-
<span class="cstat-no" title="statement not covered" > type: 'pull',</span>
|
|
2266
|
-
<span class="cstat-no" title="statement not covered" > task: mdTask,</span>
|
|
2267
|
-
<span class="cstat-no" title="statement not covered" > todoistTask,</span>
|
|
2268
|
-
<span class="cstat-no" title="statement not covered" > reason: todoistTask.isCompleted</span>
|
|
2269
|
-
<span class="cstat-no" title="statement not covered" > ? 'Mark as completed'</span>
|
|
2270
|
-
<span class="cstat-no" title="statement not covered" > : 'Mark as incomplete',</span>
|
|
2271
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2272
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2273
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2274
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2275
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2276
|
-
<span class="cstat-no" title="statement not covered" > // Display results</span>
|
|
2277
|
-
<span class="cstat-no" title="statement not covered" > if (updates.length === 0) {</span>
|
|
2278
|
-
<span class="cstat-no" title="statement not covered" > console.log('✅ Everything is in sync!');</span>
|
|
2279
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2280
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2281
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2282
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2283
|
-
<span class="cstat-no" title="statement not covered" > console.log(`📋 Found ${updates.length} changes to sync:`);</span>
|
|
2284
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2285
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2286
|
-
<span class="cstat-no" title="statement not covered" > for (const update of updates) {</span>
|
|
2287
|
-
<span class="cstat-no" title="statement not covered" > const arrow = update.type === 'pull' ? '←' : '→';</span>
|
|
2288
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${arrow} ${update.task.file}:${update.task.line}`);</span>
|
|
2289
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${update.reason}`);</span>
|
|
2290
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${update.task.text.substring(0, 60)}...`);</span>
|
|
2291
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2292
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2293
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2294
|
-
<span class="cstat-no" title="statement not covered" > if (options.dryRun) {</span>
|
|
2295
|
-
<span class="cstat-no" title="statement not covered" > console.log('🔍 Dry run - no changes made');</span>
|
|
2296
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2297
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2298
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2299
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2300
|
-
<span class="cstat-no" title="statement not covered" > // Execute sync</span>
|
|
2301
|
-
<span class="cstat-no" title="statement not covered" > console.log('🔄 Syncing tasks...');</span>
|
|
2302
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2303
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2304
|
-
<span class="cstat-no" title="statement not covered" > let successCount = 0;</span>
|
|
2305
|
-
<span class="cstat-no" title="statement not covered" > let errorCount = 0;</span>
|
|
2306
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2307
|
-
<span class="cstat-no" title="statement not covered" > for (const update of updates) {</span>
|
|
2308
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2309
|
-
<span class="cstat-no" title="statement not covered" > if (update.type === 'pull' && update.todoistTask) {</span>
|
|
2310
|
-
<span class="cstat-no" title="statement not covered" > // Update markdown from Todoist</span>
|
|
2311
|
-
<span class="cstat-no" title="statement not covered" > const mdUpdate = todoistToMd2do(update.todoistTask);</span>
|
|
2312
|
-
<span class="cstat-no" title="statement not covered" > const result = await updateTask({</span>
|
|
2313
|
-
<span class="cstat-no" title="statement not covered" > file: update.task.file,</span>
|
|
2314
|
-
<span class="cstat-no" title="statement not covered" > line: update.task.line,</span>
|
|
2315
|
-
<span class="cstat-no" title="statement not covered" > updates: {</span>
|
|
2316
|
-
<span class="cstat-no" title="statement not covered" > completed: mdUpdate.completed,</span>
|
|
2317
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
2318
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2319
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2320
|
-
<span class="cstat-no" title="statement not covered" > if (result.success) {</span>
|
|
2321
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ✓ ${update.task.file}:${update.task.line}`);</span>
|
|
2322
|
-
<span class="cstat-no" title="statement not covered" > successCount++;</span>
|
|
2323
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
2324
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ✗ ${update.task.file}:${update.task.line}`);</span>
|
|
2325
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Error: ${result.error}`);</span>
|
|
2326
|
-
<span class="cstat-no" title="statement not covered" > errorCount++;</span>
|
|
2327
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2328
|
-
<span class="cstat-no" title="statement not covered" > } else if (update.type === 'pull' && !update.todoistTask) {</span>
|
|
2329
|
-
<span class="cstat-no" title="statement not covered" > // Remove Todoist ID from deleted task</span>
|
|
2330
|
-
<span class="cstat-no" title="statement not covered" > const result = await updateTask({</span>
|
|
2331
|
-
<span class="cstat-no" title="statement not covered" > file: update.task.file,</span>
|
|
2332
|
-
<span class="cstat-no" title="statement not covered" > line: update.task.line,</span>
|
|
2333
|
-
<span class="cstat-no" title="statement not covered" > updates: {</span>
|
|
2334
|
-
<span class="cstat-no" title="statement not covered" > text: update.task.text.replace(/\s*\[todoist:\d+\]/, ''),</span>
|
|
2335
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
2336
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2337
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2338
|
-
<span class="cstat-no" title="statement not covered" > if (result.success) {</span>
|
|
2339
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
2340
|
-
<span class="cstat-no" title="statement not covered" > ` ✓ ${update.task.file}:${update.task.line} (removed ID)`,</span>
|
|
2341
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2342
|
-
<span class="cstat-no" title="statement not covered" > successCount++;</span>
|
|
2343
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
2344
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ✗ ${update.task.file}:${update.task.line}`);</span>
|
|
2345
|
-
<span class="cstat-no" title="statement not covered" > console.log(` Error: ${result.error}`);</span>
|
|
2346
|
-
<span class="cstat-no" title="statement not covered" > errorCount++;</span>
|
|
2347
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2348
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2349
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2350
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ✗ ${update.task.file}:${update.task.line}`);</span>
|
|
2351
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
2352
|
-
<span class="cstat-no" title="statement not covered" > ` Error: ${error instanceof Error ? error.message : String(error)}`,</span>
|
|
2353
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2354
|
-
<span class="cstat-no" title="statement not covered" > errorCount++;</span>
|
|
2355
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2356
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2357
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
2358
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2359
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
2360
|
-
<span class="cstat-no" title="statement not covered" > `✅ Sync complete: ${successCount} succeeded, ${errorCount} failed`,</span>
|
|
2361
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2362
|
-
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
2363
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2364
|
-
</pre></td></tr></table></pre>
|
|
2365
|
-
|
|
2366
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2367
|
-
</div><!-- /wrapper -->
|
|
2368
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2369
|
-
Code coverage generated by
|
|
2370
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2371
|
-
at 2026-02-05T05:58:17.761Z
|
|
2372
|
-
</div>
|
|
2373
|
-
<script src="../../prettify.js"></script>
|
|
2374
|
-
<script>
|
|
2375
|
-
window.onload = function () {
|
|
2376
|
-
prettyPrint();
|
|
2377
|
-
};
|
|
2378
|
-
</script>
|
|
2379
|
-
<script src="../../sorter.js"></script>
|
|
2380
|
-
<script src="../../block-navigation.js"></script>
|
|
2381
|
-
</body>
|
|
2382
|
-
</html>
|
|
2383
|
-
|