@herdctl/core 0.0.1 → 0.0.2
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/dist/config/__tests__/agent.test.js +31 -13
- package/dist/config/__tests__/agent.test.js.map +1 -1
- package/dist/config/__tests__/merge.test.js +9 -2
- package/dist/config/__tests__/merge.test.js.map +1 -1
- package/dist/config/__tests__/schema.test.js +350 -1
- package/dist/config/__tests__/schema.test.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +828 -24
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +118 -6
- package/dist/config/schema.js.map +1 -1
- package/dist/fleet-manager/__tests__/coverage.test.js +11 -332
- package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/errors.test.js +1 -49
- package/dist/fleet-manager/__tests__/errors.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/integration.test.js +109 -0
- package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/reload.test.js +1 -1
- package/dist/fleet-manager/__tests__/reload.test.js.map +1 -1
- package/dist/fleet-manager/config-reload.d.ts +164 -0
- package/dist/fleet-manager/config-reload.d.ts.map +1 -0
- package/dist/fleet-manager/config-reload.js +445 -0
- package/dist/fleet-manager/config-reload.js.map +1 -0
- package/dist/fleet-manager/context.d.ts +76 -0
- package/dist/fleet-manager/context.d.ts.map +1 -0
- package/dist/fleet-manager/context.js +11 -0
- package/dist/fleet-manager/context.js.map +1 -0
- package/dist/fleet-manager/errors.d.ts +0 -25
- package/dist/fleet-manager/errors.d.ts.map +1 -1
- package/dist/fleet-manager/errors.js +0 -38
- package/dist/fleet-manager/errors.js.map +1 -1
- package/dist/fleet-manager/event-emitters.d.ts +123 -0
- package/dist/fleet-manager/event-emitters.d.ts.map +1 -0
- package/dist/fleet-manager/event-emitters.js +136 -0
- package/dist/fleet-manager/event-emitters.js.map +1 -0
- package/dist/fleet-manager/event-types.d.ts +0 -15
- package/dist/fleet-manager/event-types.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.d.ts +40 -653
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +95 -1720
- package/dist/fleet-manager/fleet-manager.js.map +1 -1
- package/dist/fleet-manager/index.d.ts +13 -2
- package/dist/fleet-manager/index.d.ts.map +1 -1
- package/dist/fleet-manager/index.js +19 -6
- package/dist/fleet-manager/index.js.map +1 -1
- package/dist/fleet-manager/job-control.d.ts +64 -0
- package/dist/fleet-manager/job-control.d.ts.map +1 -0
- package/dist/fleet-manager/job-control.js +296 -0
- package/dist/fleet-manager/job-control.js.map +1 -0
- package/dist/fleet-manager/log-streaming.d.ts +171 -0
- package/dist/fleet-manager/log-streaming.d.ts.map +1 -0
- package/dist/fleet-manager/log-streaming.js +503 -0
- package/dist/fleet-manager/log-streaming.js.map +1 -0
- package/dist/fleet-manager/schedule-executor.d.ts +63 -0
- package/dist/fleet-manager/schedule-executor.d.ts.map +1 -0
- package/dist/fleet-manager/schedule-executor.js +209 -0
- package/dist/fleet-manager/schedule-executor.js.map +1 -0
- package/dist/fleet-manager/schedule-management.d.ts +71 -0
- package/dist/fleet-manager/schedule-management.d.ts.map +1 -0
- package/dist/fleet-manager/schedule-management.js +171 -0
- package/dist/fleet-manager/schedule-management.js.map +1 -0
- package/dist/fleet-manager/status-queries.d.ts +105 -0
- package/dist/fleet-manager/status-queries.d.ts.map +1 -0
- package/dist/fleet-manager/status-queries.js +247 -0
- package/dist/fleet-manager/status-queries.js.map +1 -0
- package/dist/fleet-manager/types.d.ts +0 -39
- package/dist/fleet-manager/types.d.ts.map +1 -1
- package/dist/runner/__tests__/job-executor.test.js +206 -1
- package/dist/runner/__tests__/job-executor.test.js.map +1 -1
- package/dist/runner/job-executor.d.ts +9 -0
- package/dist/runner/job-executor.d.ts.map +1 -1
- package/dist/runner/job-executor.js +78 -4
- package/dist/runner/job-executor.js.map +1 -1
- package/dist/runner/types.d.ts +2 -0
- package/dist/runner/types.d.ts.map +1 -1
- package/dist/scheduler/__tests__/cron.test.d.ts +2 -0
- package/dist/scheduler/__tests__/cron.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/cron.test.js +867 -0
- package/dist/scheduler/__tests__/cron.test.js.map +1 -0
- package/dist/scheduler/__tests__/scheduler.test.js +164 -5
- package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
- package/dist/scheduler/cron.d.ts +126 -0
- package/dist/scheduler/cron.d.ts.map +1 -0
- package/dist/scheduler/cron.js +390 -0
- package/dist/scheduler/cron.js.map +1 -0
- package/dist/scheduler/errors.d.ts +81 -1
- package/dist/scheduler/errors.d.ts.map +1 -1
- package/dist/scheduler/errors.js +81 -6
- package/dist/scheduler/errors.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +2 -0
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/schedule-runner.d.ts +2 -2
- package/dist/scheduler/schedule-runner.d.ts.map +1 -1
- package/dist/scheduler/schedule-runner.js +20 -8
- package/dist/scheduler/schedule-runner.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +4 -4
- package/dist/scheduler/scheduler.d.ts.map +1 -1
- package/dist/scheduler/scheduler.js +86 -20
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/state/schemas/job-metadata.d.ts +2 -2
- package/package.json +33 -8
- package/.turbo/turbo-build.log +0 -4
- package/.turbo/turbo-test.log +0 -219
- package/.turbo/turbo-typecheck.log +0 -4
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -51
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -251
- 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/config/index.html +0 -191
- package/coverage/src/config/index.ts.html +0 -442
- package/coverage/src/config/interpolate.ts.html +0 -652
- package/coverage/src/config/loader.ts.html +0 -1501
- package/coverage/src/config/merge.ts.html +0 -823
- package/coverage/src/config/parser.ts.html +0 -1213
- package/coverage/src/config/schema.ts.html +0 -1123
- package/coverage/src/fleet-manager/errors.ts.html +0 -2326
- package/coverage/src/fleet-manager/event-types.ts.html +0 -1219
- package/coverage/src/fleet-manager/fleet-manager.ts.html +0 -7030
- package/coverage/src/fleet-manager/index.html +0 -206
- package/coverage/src/fleet-manager/index.ts.html +0 -469
- package/coverage/src/fleet-manager/job-manager.ts.html +0 -2074
- package/coverage/src/fleet-manager/job-queue.ts.html +0 -2479
- package/coverage/src/fleet-manager/types.ts.html +0 -2602
- package/coverage/src/index.html +0 -116
- package/coverage/src/index.ts.html +0 -181
- package/coverage/src/runner/errors.ts.html +0 -1006
- package/coverage/src/runner/index.html +0 -191
- package/coverage/src/runner/index.ts.html +0 -256
- package/coverage/src/runner/job-executor.ts.html +0 -1429
- package/coverage/src/runner/message-processor.ts.html +0 -1150
- package/coverage/src/runner/sdk-adapter.ts.html +0 -658
- package/coverage/src/runner/types.ts.html +0 -559
- package/coverage/src/scheduler/errors.ts.html +0 -388
- package/coverage/src/scheduler/index.html +0 -206
- package/coverage/src/scheduler/index.ts.html +0 -244
- package/coverage/src/scheduler/interval.ts.html +0 -652
- package/coverage/src/scheduler/schedule-runner.ts.html +0 -1411
- package/coverage/src/scheduler/schedule-state.ts.html +0 -718
- package/coverage/src/scheduler/scheduler.ts.html +0 -1795
- package/coverage/src/scheduler/types.ts.html +0 -733
- package/coverage/src/state/directory.ts.html +0 -736
- package/coverage/src/state/errors.ts.html +0 -376
- package/coverage/src/state/fleet-state.ts.html +0 -937
- package/coverage/src/state/index.html +0 -221
- package/coverage/src/state/index.ts.html +0 -322
- package/coverage/src/state/job-metadata.ts.html +0 -1420
- package/coverage/src/state/job-output.ts.html +0 -1033
- package/coverage/src/state/schemas/fleet-state.ts.html +0 -445
- package/coverage/src/state/schemas/index.html +0 -176
- package/coverage/src/state/schemas/index.ts.html +0 -286
- package/coverage/src/state/schemas/job-metadata.ts.html +0 -628
- package/coverage/src/state/schemas/job-output.ts.html +0 -616
- package/coverage/src/state/schemas/session-info.ts.html +0 -361
- package/coverage/src/state/session.ts.html +0 -844
- package/coverage/src/state/types.ts.html +0 -262
- package/coverage/src/state/utils/atomic.ts.html +0 -748
- package/coverage/src/state/utils/index.html +0 -146
- package/coverage/src/state/utils/index.ts.html +0 -103
- package/coverage/src/state/utils/reads.ts.html +0 -1621
- package/coverage/src/work-sources/adapters/github.ts.html +0 -3583
- package/coverage/src/work-sources/adapters/index.html +0 -131
- package/coverage/src/work-sources/adapters/index.ts.html +0 -277
- package/coverage/src/work-sources/errors.ts.html +0 -298
- package/coverage/src/work-sources/index.html +0 -176
- package/coverage/src/work-sources/index.ts.html +0 -529
- package/coverage/src/work-sources/manager.ts.html +0 -1324
- package/coverage/src/work-sources/registry.ts.html +0 -619
- package/coverage/src/work-sources/types.ts.html +0 -568
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +0 -7
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +0 -1
- package/dist/fleet-manager/__tests__/event-helpers.test.js +0 -368
- package/dist/fleet-manager/__tests__/event-helpers.test.js.map +0 -1
- package/src/config/__tests__/agent.test.ts +0 -864
- package/src/config/__tests__/interpolate.test.ts +0 -644
- package/src/config/__tests__/loader.test.ts +0 -784
- package/src/config/__tests__/merge.test.ts +0 -751
- package/src/config/__tests__/parser.test.ts +0 -533
- package/src/config/__tests__/schema.test.ts +0 -873
- package/src/config/index.ts +0 -119
- package/src/config/interpolate.ts +0 -189
- package/src/config/loader.ts +0 -472
- package/src/config/merge.ts +0 -246
- package/src/config/parser.ts +0 -376
- package/src/config/schema.ts +0 -346
- package/src/fleet-manager/__tests__/coverage.test.ts +0 -2869
- package/src/fleet-manager/__tests__/errors.test.ts +0 -660
- package/src/fleet-manager/__tests__/event-helpers.test.ts +0 -448
- package/src/fleet-manager/__tests__/integration.test.ts +0 -1209
- package/src/fleet-manager/__tests__/job-control.test.ts +0 -283
- package/src/fleet-manager/__tests__/job-manager.test.ts +0 -869
- package/src/fleet-manager/__tests__/job-queue.test.ts +0 -401
- package/src/fleet-manager/__tests__/reload.test.ts +0 -751
- package/src/fleet-manager/__tests__/status-queries.test.ts +0 -595
- package/src/fleet-manager/__tests__/trigger.test.ts +0 -601
- package/src/fleet-manager/errors.ts +0 -747
- package/src/fleet-manager/event-types.ts +0 -378
- package/src/fleet-manager/fleet-manager.ts +0 -2315
- package/src/fleet-manager/index.ts +0 -128
- package/src/fleet-manager/job-manager.ts +0 -663
- package/src/fleet-manager/job-queue.ts +0 -798
- package/src/fleet-manager/types.ts +0 -839
- package/src/index.ts +0 -32
- package/src/runner/__tests__/errors.test.ts +0 -382
- package/src/runner/__tests__/job-executor.test.ts +0 -1708
- package/src/runner/__tests__/message-processor.test.ts +0 -960
- package/src/runner/__tests__/sdk-adapter.test.ts +0 -626
- package/src/runner/errors.ts +0 -307
- package/src/runner/index.ts +0 -57
- package/src/runner/job-executor.ts +0 -448
- package/src/runner/message-processor.ts +0 -355
- package/src/runner/sdk-adapter.ts +0 -191
- package/src/runner/types.ts +0 -158
- package/src/scheduler/__tests__/errors.test.ts +0 -159
- package/src/scheduler/__tests__/interval.test.ts +0 -515
- package/src/scheduler/__tests__/schedule-runner.test.ts +0 -798
- package/src/scheduler/__tests__/schedule-state.test.ts +0 -671
- package/src/scheduler/__tests__/scheduler.test.ts +0 -1280
- package/src/scheduler/errors.ts +0 -101
- package/src/scheduler/index.ts +0 -53
- package/src/scheduler/interval.ts +0 -189
- package/src/scheduler/schedule-runner.ts +0 -442
- package/src/scheduler/schedule-state.ts +0 -211
- package/src/scheduler/scheduler.ts +0 -570
- package/src/scheduler/types.ts +0 -216
- package/src/state/__tests__/directory.test.ts +0 -595
- package/src/state/__tests__/fleet-state.test.ts +0 -868
- package/src/state/__tests__/job-metadata-schema.test.ts +0 -414
- package/src/state/__tests__/job-metadata.test.ts +0 -831
- package/src/state/__tests__/job-output.test.ts +0 -856
- package/src/state/__tests__/session-schema.test.ts +0 -378
- package/src/state/__tests__/session.test.ts +0 -604
- package/src/state/directory.ts +0 -217
- package/src/state/errors.ts +0 -97
- package/src/state/fleet-state.ts +0 -284
- package/src/state/index.ts +0 -79
- package/src/state/job-metadata.ts +0 -445
- package/src/state/job-output.ts +0 -316
- package/src/state/schemas/__tests__/job-output.test.ts +0 -338
- package/src/state/schemas/fleet-state.ts +0 -120
- package/src/state/schemas/index.ts +0 -67
- package/src/state/schemas/job-metadata.ts +0 -181
- package/src/state/schemas/job-output.ts +0 -177
- package/src/state/schemas/session-info.ts +0 -92
- package/src/state/session.ts +0 -253
- package/src/state/types.ts +0 -59
- package/src/state/utils/__tests__/atomic.test.ts +0 -723
- package/src/state/utils/__tests__/reads.test.ts +0 -1071
- package/src/state/utils/atomic.ts +0 -221
- package/src/state/utils/index.ts +0 -6
- package/src/state/utils/reads.ts +0 -512
- package/src/work-sources/__tests__/github.test.ts +0 -1800
- package/src/work-sources/__tests__/manager.test.ts +0 -529
- package/src/work-sources/__tests__/registry.test.ts +0 -477
- package/src/work-sources/__tests__/types.test.ts +0 -479
- package/src/work-sources/adapters/github.ts +0 -1166
- package/src/work-sources/adapters/index.ts +0 -64
- package/src/work-sources/errors.ts +0 -71
- package/src/work-sources/index.ts +0 -148
- package/src/work-sources/manager.ts +0 -413
- package/src/work-sources/registry.ts +0 -178
- package/src/work-sources/types.ts +0 -161
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -19
|
@@ -1,3583 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/work-sources/adapters/github.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/work-sources/adapters</a> github.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">93.94% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>295/314</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">85.65% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>191/223</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">100% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>48/48</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">93.64% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>280/299</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
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>
|
|
833
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
-
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
-
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
-
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
-
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
-
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
-
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
-
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
-
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
-
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
-
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
-
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
-
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
-
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
-
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
-
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
-
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
-
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
-
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
-
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
-
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
-
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
-
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
-
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
-
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
-
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
-
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
-
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
-
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
-
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
-
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
-
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
-
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
-
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
-
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
-
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
-
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
-
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
-
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
-
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
-
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
-
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
-
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
-
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
-
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
-
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
-
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
-
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
-
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
-
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
-
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
-
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
-
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
-
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
-
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
-
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
-
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
-
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
-
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
-
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
-
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
-
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
-
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
-
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
-
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
-
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
-
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
-
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
-
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
-
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
-
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
-
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
-
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
-
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
-
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
-
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
-
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
-
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
-
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
-
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
-
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
-
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
-
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
-
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
-
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
-
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
-
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
-
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
-
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
-
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
-
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
-
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
-
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
-
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
-
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
-
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
-
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
-
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
-
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
-
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
-
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
-
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
-
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
-
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
-
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
-
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
-
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
-
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
-
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
-
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
-
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
-
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
-
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
-
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
-
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
-
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
-
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
-
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
-
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
-
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
-
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
-
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
-
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
-
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
-
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
-
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
-
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
-
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
-
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
-
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
-
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
-
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
-
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
-
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
-
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
-
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
-
<a name='L1088'></a><a href='#L1088'>1088</a>
|
|
1154
|
-
<a name='L1089'></a><a href='#L1089'>1089</a>
|
|
1155
|
-
<a name='L1090'></a><a href='#L1090'>1090</a>
|
|
1156
|
-
<a name='L1091'></a><a href='#L1091'>1091</a>
|
|
1157
|
-
<a name='L1092'></a><a href='#L1092'>1092</a>
|
|
1158
|
-
<a name='L1093'></a><a href='#L1093'>1093</a>
|
|
1159
|
-
<a name='L1094'></a><a href='#L1094'>1094</a>
|
|
1160
|
-
<a name='L1095'></a><a href='#L1095'>1095</a>
|
|
1161
|
-
<a name='L1096'></a><a href='#L1096'>1096</a>
|
|
1162
|
-
<a name='L1097'></a><a href='#L1097'>1097</a>
|
|
1163
|
-
<a name='L1098'></a><a href='#L1098'>1098</a>
|
|
1164
|
-
<a name='L1099'></a><a href='#L1099'>1099</a>
|
|
1165
|
-
<a name='L1100'></a><a href='#L1100'>1100</a>
|
|
1166
|
-
<a name='L1101'></a><a href='#L1101'>1101</a>
|
|
1167
|
-
<a name='L1102'></a><a href='#L1102'>1102</a>
|
|
1168
|
-
<a name='L1103'></a><a href='#L1103'>1103</a>
|
|
1169
|
-
<a name='L1104'></a><a href='#L1104'>1104</a>
|
|
1170
|
-
<a name='L1105'></a><a href='#L1105'>1105</a>
|
|
1171
|
-
<a name='L1106'></a><a href='#L1106'>1106</a>
|
|
1172
|
-
<a name='L1107'></a><a href='#L1107'>1107</a>
|
|
1173
|
-
<a name='L1108'></a><a href='#L1108'>1108</a>
|
|
1174
|
-
<a name='L1109'></a><a href='#L1109'>1109</a>
|
|
1175
|
-
<a name='L1110'></a><a href='#L1110'>1110</a>
|
|
1176
|
-
<a name='L1111'></a><a href='#L1111'>1111</a>
|
|
1177
|
-
<a name='L1112'></a><a href='#L1112'>1112</a>
|
|
1178
|
-
<a name='L1113'></a><a href='#L1113'>1113</a>
|
|
1179
|
-
<a name='L1114'></a><a href='#L1114'>1114</a>
|
|
1180
|
-
<a name='L1115'></a><a href='#L1115'>1115</a>
|
|
1181
|
-
<a name='L1116'></a><a href='#L1116'>1116</a>
|
|
1182
|
-
<a name='L1117'></a><a href='#L1117'>1117</a>
|
|
1183
|
-
<a name='L1118'></a><a href='#L1118'>1118</a>
|
|
1184
|
-
<a name='L1119'></a><a href='#L1119'>1119</a>
|
|
1185
|
-
<a name='L1120'></a><a href='#L1120'>1120</a>
|
|
1186
|
-
<a name='L1121'></a><a href='#L1121'>1121</a>
|
|
1187
|
-
<a name='L1122'></a><a href='#L1122'>1122</a>
|
|
1188
|
-
<a name='L1123'></a><a href='#L1123'>1123</a>
|
|
1189
|
-
<a name='L1124'></a><a href='#L1124'>1124</a>
|
|
1190
|
-
<a name='L1125'></a><a href='#L1125'>1125</a>
|
|
1191
|
-
<a name='L1126'></a><a href='#L1126'>1126</a>
|
|
1192
|
-
<a name='L1127'></a><a href='#L1127'>1127</a>
|
|
1193
|
-
<a name='L1128'></a><a href='#L1128'>1128</a>
|
|
1194
|
-
<a name='L1129'></a><a href='#L1129'>1129</a>
|
|
1195
|
-
<a name='L1130'></a><a href='#L1130'>1130</a>
|
|
1196
|
-
<a name='L1131'></a><a href='#L1131'>1131</a>
|
|
1197
|
-
<a name='L1132'></a><a href='#L1132'>1132</a>
|
|
1198
|
-
<a name='L1133'></a><a href='#L1133'>1133</a>
|
|
1199
|
-
<a name='L1134'></a><a href='#L1134'>1134</a>
|
|
1200
|
-
<a name='L1135'></a><a href='#L1135'>1135</a>
|
|
1201
|
-
<a name='L1136'></a><a href='#L1136'>1136</a>
|
|
1202
|
-
<a name='L1137'></a><a href='#L1137'>1137</a>
|
|
1203
|
-
<a name='L1138'></a><a href='#L1138'>1138</a>
|
|
1204
|
-
<a name='L1139'></a><a href='#L1139'>1139</a>
|
|
1205
|
-
<a name='L1140'></a><a href='#L1140'>1140</a>
|
|
1206
|
-
<a name='L1141'></a><a href='#L1141'>1141</a>
|
|
1207
|
-
<a name='L1142'></a><a href='#L1142'>1142</a>
|
|
1208
|
-
<a name='L1143'></a><a href='#L1143'>1143</a>
|
|
1209
|
-
<a name='L1144'></a><a href='#L1144'>1144</a>
|
|
1210
|
-
<a name='L1145'></a><a href='#L1145'>1145</a>
|
|
1211
|
-
<a name='L1146'></a><a href='#L1146'>1146</a>
|
|
1212
|
-
<a name='L1147'></a><a href='#L1147'>1147</a>
|
|
1213
|
-
<a name='L1148'></a><a href='#L1148'>1148</a>
|
|
1214
|
-
<a name='L1149'></a><a href='#L1149'>1149</a>
|
|
1215
|
-
<a name='L1150'></a><a href='#L1150'>1150</a>
|
|
1216
|
-
<a name='L1151'></a><a href='#L1151'>1151</a>
|
|
1217
|
-
<a name='L1152'></a><a href='#L1152'>1152</a>
|
|
1218
|
-
<a name='L1153'></a><a href='#L1153'>1153</a>
|
|
1219
|
-
<a name='L1154'></a><a href='#L1154'>1154</a>
|
|
1220
|
-
<a name='L1155'></a><a href='#L1155'>1155</a>
|
|
1221
|
-
<a name='L1156'></a><a href='#L1156'>1156</a>
|
|
1222
|
-
<a name='L1157'></a><a href='#L1157'>1157</a>
|
|
1223
|
-
<a name='L1158'></a><a href='#L1158'>1158</a>
|
|
1224
|
-
<a name='L1159'></a><a href='#L1159'>1159</a>
|
|
1225
|
-
<a name='L1160'></a><a href='#L1160'>1160</a>
|
|
1226
|
-
<a name='L1161'></a><a href='#L1161'>1161</a>
|
|
1227
|
-
<a name='L1162'></a><a href='#L1162'>1162</a>
|
|
1228
|
-
<a name='L1163'></a><a href='#L1163'>1163</a>
|
|
1229
|
-
<a name='L1164'></a><a href='#L1164'>1164</a>
|
|
1230
|
-
<a name='L1165'></a><a href='#L1165'>1165</a>
|
|
1231
|
-
<a name='L1166'></a><a href='#L1166'>1166</a>
|
|
1232
|
-
<a name='L1167'></a><a href='#L1167'>1167</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1397
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1398
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1399
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1400
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1401
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1402
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1403
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1412
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1413
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1417
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1420
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1421
|
-
<span class="cline-any cline-yes">15x</span>
|
|
1422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1425
|
-
<span class="cline-any cline-no"> </span>
|
|
1426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1449
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1452
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1453
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1477
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1478
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1479
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1480
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1481
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1497
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1508
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1521
|
-
<span class="cline-any cline-yes">110x</span>
|
|
1522
|
-
<span class="cline-any cline-yes">110x</span>
|
|
1523
|
-
<span class="cline-any cline-yes">110x</span>
|
|
1524
|
-
<span class="cline-any cline-yes">110x</span>
|
|
1525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
-
<span class="cline-any cline-yes">110x</span>
|
|
1527
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1530
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1545
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1548
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1549
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1550
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1565
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1567
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1574
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1577
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1615
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1619
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1620
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1621
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1634
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1641
|
-
<span class="cline-any cline-yes">102x</span>
|
|
1642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1649
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1650
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1654
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1667
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1670
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1688
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1692
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1693
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1698
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1699
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1700
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1703
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1704
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1705
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1713
|
-
<span class="cline-any cline-no"> </span>
|
|
1714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1721
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1725
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1734
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1736
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1737
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
-
<span class="cline-any cline-no"> </span>
|
|
1740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1751
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1769
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1775
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1782
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1783
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1791
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1792
|
-
<span class="cline-any cline-no"> </span>
|
|
1793
|
-
<span class="cline-any cline-no"> </span>
|
|
1794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
-
<span class="cline-any cline-yes">47x</span>
|
|
1797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1801
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1802
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1803
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1804
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1818
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1819
|
-
<span class="cline-any cline-no"> </span>
|
|
1820
|
-
<span class="cline-any cline-no"> </span>
|
|
1821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
-
<span class="cline-any cline-no"> </span>
|
|
1826
|
-
<span class="cline-any cline-no"> </span>
|
|
1827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
-
<span class="cline-any cline-yes">40x</span>
|
|
1834
|
-
<span class="cline-any cline-yes">15x</span>
|
|
1835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1841
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1851
|
-
<span class="cline-any cline-no"> </span>
|
|
1852
|
-
<span class="cline-any cline-no"> </span>
|
|
1853
|
-
<span class="cline-any cline-no"> </span>
|
|
1854
|
-
<span class="cline-any cline-no"> </span>
|
|
1855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1857
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
-
<span class="cline-any cline-no"> </span>
|
|
1863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1876
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1877
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1882
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1883
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1889
|
-
<span class="cline-any cline-yes">49x</span>
|
|
1890
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1891
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1898
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1899
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1900
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1901
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1906
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1909
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1910
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1911
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1912
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1918
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1926
|
-
<span class="cline-any cline-yes">17x</span>
|
|
1927
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1928
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1934
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1937
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1941
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1942
|
-
<span class="cline-any cline-no"> </span>
|
|
1943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1945
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1946
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1949
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1950
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1954
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1955
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1959
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1960
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1961
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1962
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1963
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1966
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1971
|
-
<span class="cline-any cline-no"> </span>
|
|
1972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1979
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1980
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1981
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1985
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1992
|
-
<span class="cline-any cline-yes">51x</span>
|
|
1993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1994
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2005
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2026
|
-
<span class="cline-any cline-yes">35x</span>
|
|
2027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2028
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2031
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
-
<span class="cline-any cline-yes">30x</span>
|
|
2034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
-
<span class="cline-any cline-yes">41x</span>
|
|
2036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2040
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2041
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2043
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2050
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2053
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2056
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2057
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2060
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2063
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2064
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2066
|
-
<span class="cline-any cline-yes">47x</span>
|
|
2067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2069
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2070
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2073
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2080
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2083
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2084
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2085
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2086
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2087
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2090
|
-
<span class="cline-any cline-no"> </span>
|
|
2091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2102
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2103
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2104
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2106
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2112
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2113
|
-
<span class="cline-any cline-yes">58x</span>
|
|
2114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2116
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2117
|
-
<span class="cline-any cline-yes">71x</span>
|
|
2118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2122
|
-
<span class="cline-any cline-yes">34x</span>
|
|
2123
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2126
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
-
<span class="cline-any cline-yes">33x</span>
|
|
2131
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2132
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2134
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2141
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2142
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2143
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2144
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2149
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2150
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2152
|
-
<span class="cline-any cline-yes">39x</span>
|
|
2153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
-
<span class="cline-any cline-yes">10x</span>
|
|
2163
|
-
<span class="cline-any cline-yes">10x</span>
|
|
2164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
-
<span class="cline-any cline-yes">10x</span>
|
|
2166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
-
<span class="cline-any cline-yes">10x</span>
|
|
2168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2172
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2173
|
-
<span class="cline-any cline-no"> </span>
|
|
2174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2180
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2181
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2188
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2191
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2192
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2200
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2207
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2208
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2209
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2219
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2224
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2229
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2230
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2231
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2237
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2238
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2244
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2250
|
-
<span class="cline-any cline-no"> </span>
|
|
2251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2252
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2262
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2263
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2265
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2267
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2273
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2274
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2275
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2277
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2278
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2281
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2282
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2283
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2284
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2288
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2289
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2293
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2300
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2301
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2303
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2310
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2311
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2326
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2327
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2329
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2331
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2332
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2340
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2341
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2350
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2351
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2358
|
-
<span class="cline-any cline-yes">6x</span>
|
|
2359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2360
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2371
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2372
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2374
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2375
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2380
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2382
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2383
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2385
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2396
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2398
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
2399
|
-
* GitHub Work Source Adapter
|
|
2400
|
-
*
|
|
2401
|
-
* Provides work items from GitHub Issues. Uses labels to identify
|
|
2402
|
-
* work that is ready for agents and to track in-progress work.
|
|
2403
|
-
*
|
|
2404
|
-
* Includes robust handling of GitHub API edge cases:
|
|
2405
|
-
* - Exponential backoff for rate limit errors (HTTP 403 with X-RateLimit-Remaining: 0)
|
|
2406
|
-
* - Rate limit status detection and surfacing
|
|
2407
|
-
* - Network error retries (max 3 attempts)
|
|
2408
|
-
* - Graceful handling of 404 errors (issue deleted/moved)
|
|
2409
|
-
* - PAT scope validation
|
|
2410
|
-
* - Warnings for approaching rate limit (< 100 remaining)
|
|
2411
|
-
*/
|
|
2412
|
-
|
|
2413
|
-
import type { WorkSourceAdapter } from "../index.js";
|
|
2414
|
-
import type {
|
|
2415
|
-
FetchOptions,
|
|
2416
|
-
FetchResult,
|
|
2417
|
-
ClaimResult,
|
|
2418
|
-
WorkResult,
|
|
2419
|
-
ReleaseOptions,
|
|
2420
|
-
ReleaseResult,
|
|
2421
|
-
WorkItem,
|
|
2422
|
-
WorkItemPriority,
|
|
2423
|
-
} from "../types.js";
|
|
2424
|
-
import type { WorkSourceConfig } from "../registry.js";
|
|
2425
|
-
import { WorkSourceError } from "../errors.js";
|
|
2426
|
-
|
|
2427
|
-
// =============================================================================
|
|
2428
|
-
// Rate Limit Types
|
|
2429
|
-
// =============================================================================
|
|
2430
|
-
|
|
2431
|
-
/**
|
|
2432
|
-
* GitHub API rate limit information extracted from response headers
|
|
2433
|
-
*/
|
|
2434
|
-
export interface RateLimitInfo {
|
|
2435
|
-
/** Maximum number of requests allowed per hour */
|
|
2436
|
-
limit: number;
|
|
2437
|
-
/** Number of requests remaining in current window */
|
|
2438
|
-
remaining: number;
|
|
2439
|
-
/** Unix timestamp when rate limit resets */
|
|
2440
|
-
reset: number;
|
|
2441
|
-
/** Resource type (core, search, graphql, etc.) */
|
|
2442
|
-
resource: string;
|
|
2443
|
-
}
|
|
2444
|
-
|
|
2445
|
-
/**
|
|
2446
|
-
* Options for rate limit warning callback
|
|
2447
|
-
*/
|
|
2448
|
-
export interface RateLimitWarningOptions {
|
|
2449
|
-
/** Threshold below which warnings are triggered (default: 100) */
|
|
2450
|
-
warningThreshold?: number;
|
|
2451
|
-
/** Callback invoked when rate limit is approaching */
|
|
2452
|
-
onWarning?: (info: RateLimitInfo) => void;
|
|
2453
|
-
}
|
|
2454
|
-
|
|
2455
|
-
// =============================================================================
|
|
2456
|
-
// Retry Configuration
|
|
2457
|
-
// =============================================================================
|
|
2458
|
-
|
|
2459
|
-
/**
|
|
2460
|
-
* Configuration for retry behavior
|
|
2461
|
-
*/
|
|
2462
|
-
export interface RetryOptions {
|
|
2463
|
-
/** Maximum number of retry attempts (default: 3) */
|
|
2464
|
-
maxRetries?: number;
|
|
2465
|
-
/** Base delay in milliseconds for exponential backoff (default: 1000) */
|
|
2466
|
-
baseDelayMs?: number;
|
|
2467
|
-
/** Maximum delay in milliseconds (default: 30000) */
|
|
2468
|
-
maxDelayMs?: number;
|
|
2469
|
-
/** Jitter factor (0-1) to randomize delays (default: 0.1) */
|
|
2470
|
-
jitterFactor?: number;
|
|
2471
|
-
}
|
|
2472
|
-
|
|
2473
|
-
// =============================================================================
|
|
2474
|
-
// Types
|
|
2475
|
-
// =============================================================================
|
|
2476
|
-
|
|
2477
|
-
/**
|
|
2478
|
-
* Configuration specific to GitHub work source
|
|
2479
|
-
*/
|
|
2480
|
-
export interface GitHubWorkSourceConfig extends WorkSourceConfig {
|
|
2481
|
-
type: "github";
|
|
2482
|
-
/** GitHub repository owner */
|
|
2483
|
-
owner?: string;
|
|
2484
|
-
/** GitHub repository name */
|
|
2485
|
-
repo?: string;
|
|
2486
|
-
/** GitHub API token (defaults to GITHUB_TOKEN env var) */
|
|
2487
|
-
token?: string;
|
|
2488
|
-
/** GitHub API base URL (defaults to https://api.github.com) */
|
|
2489
|
-
apiBaseUrl?: string;
|
|
2490
|
-
/** Label configuration for work item states */
|
|
2491
|
-
labels?: {
|
|
2492
|
-
/** Label that marks issues as ready for agent work (default: "ready") */
|
|
2493
|
-
ready?: string;
|
|
2494
|
-
/** Label applied when an agent claims the issue (default: "agent-working") */
|
|
2495
|
-
in_progress?: string;
|
|
2496
|
-
};
|
|
2497
|
-
/** Labels to exclude from fetched issues (default: ["blocked", "wip"]) */
|
|
2498
|
-
exclude_labels?: string[];
|
|
2499
|
-
/** Re-add ready label when releasing work on failure (default: true) */
|
|
2500
|
-
cleanup_on_failure?: boolean;
|
|
2501
|
-
/** Retry configuration for handling transient failures */
|
|
2502
|
-
retry?: RetryOptions;
|
|
2503
|
-
/** Rate limit warning configuration */
|
|
2504
|
-
rateLimitWarning?: RateLimitWarningOptions;
|
|
2505
|
-
}
|
|
2506
|
-
|
|
2507
|
-
/**
|
|
2508
|
-
* GitHub API issue response structure
|
|
2509
|
-
*/
|
|
2510
|
-
export interface GitHubIssue {
|
|
2511
|
-
number: number;
|
|
2512
|
-
title: string;
|
|
2513
|
-
body: string | null;
|
|
2514
|
-
html_url: string;
|
|
2515
|
-
state: "open" | "closed";
|
|
2516
|
-
labels: Array<{ name: string }>;
|
|
2517
|
-
created_at: string;
|
|
2518
|
-
updated_at: string;
|
|
2519
|
-
assignee: { login: string } | null;
|
|
2520
|
-
assignees: Array<{ login: string }>;
|
|
2521
|
-
milestone: { title: string; number: number } | null;
|
|
2522
|
-
user: { login: string } | null;
|
|
2523
|
-
}
|
|
2524
|
-
|
|
2525
|
-
/**
|
|
2526
|
-
* GitHub API error response
|
|
2527
|
-
*/
|
|
2528
|
-
interface GitHubErrorResponse {
|
|
2529
|
-
message: string;
|
|
2530
|
-
documentation_url?: string;
|
|
2531
|
-
}
|
|
2532
|
-
|
|
2533
|
-
// =============================================================================
|
|
2534
|
-
// Errors
|
|
2535
|
-
// =============================================================================
|
|
2536
|
-
|
|
2537
|
-
/**
|
|
2538
|
-
* Error thrown when GitHub API requests fail
|
|
2539
|
-
*/
|
|
2540
|
-
export class GitHubAPIError extends WorkSourceError {
|
|
2541
|
-
/** HTTP status code from the API response */
|
|
2542
|
-
public readonly statusCode?: number;
|
|
2543
|
-
/** The API endpoint that was called */
|
|
2544
|
-
public readonly endpoint?: string;
|
|
2545
|
-
/** Rate limit information if available */
|
|
2546
|
-
public readonly rateLimitInfo?: RateLimitInfo;
|
|
2547
|
-
/** Whether this error was caused by rate limiting */
|
|
2548
|
-
public readonly isRateLimitError: boolean;
|
|
2549
|
-
/** Timestamp when rate limit resets (for rate limit errors) */
|
|
2550
|
-
public readonly rateLimitResetAt?: Date;
|
|
2551
|
-
|
|
2552
|
-
constructor(
|
|
2553
|
-
message: string,
|
|
2554
|
-
options?: {
|
|
2555
|
-
cause?: Error;
|
|
2556
|
-
statusCode?: number;
|
|
2557
|
-
endpoint?: string;
|
|
2558
|
-
rateLimitInfo?: RateLimitInfo;
|
|
2559
|
-
isRateLimitError?: boolean;
|
|
2560
|
-
}
|
|
2561
|
-
) {
|
|
2562
|
-
super(message, options);
|
|
2563
|
-
this.name = "GitHubAPIError";
|
|
2564
|
-
this.statusCode = options?.statusCode;
|
|
2565
|
-
this.endpoint = options?.endpoint;
|
|
2566
|
-
this.rateLimitInfo = options?.rateLimitInfo;
|
|
2567
|
-
this.isRateLimitError = options?.isRateLimitError ?? false;
|
|
2568
|
-
if (options?.rateLimitInfo?.reset) {
|
|
2569
|
-
this.rateLimitResetAt = new Date(options.rateLimitInfo.reset * 1000);
|
|
2570
|
-
}
|
|
2571
|
-
}
|
|
2572
|
-
|
|
2573
|
-
/**
|
|
2574
|
-
* Check if this error is retryable (rate limit or network error)
|
|
2575
|
-
*/
|
|
2576
|
-
isRetryable(): boolean {
|
|
2577
|
-
// Rate limit errors are retryable after waiting
|
|
2578
|
-
if (this.isRateLimitError) {
|
|
2579
|
-
return true;
|
|
2580
|
-
}
|
|
2581
|
-
// Network errors (no status code) are retryable
|
|
2582
|
-
if (this.statusCode === undefined) {
|
|
2583
|
-
return true;
|
|
2584
|
-
}
|
|
2585
|
-
// Server errors (5xx) are retryable
|
|
2586
|
-
if (this.statusCode >= 500 && this.statusCode < 600) {
|
|
2587
|
-
return true;
|
|
2588
|
-
}
|
|
2589
|
-
// 408 Request Timeout is retryable
|
|
2590
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.statusCode === 408) {
|
|
2591
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
2592
|
-
}
|
|
2593
|
-
return false;
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
/**
|
|
2597
|
-
* Check if this is a not found error (404)
|
|
2598
|
-
*/
|
|
2599
|
-
isNotFound(): boolean {
|
|
2600
|
-
return this.statusCode === 404;
|
|
2601
|
-
}
|
|
2602
|
-
|
|
2603
|
-
/**
|
|
2604
|
-
* Check if this is a permission error (403 without rate limit)
|
|
2605
|
-
*/
|
|
2606
|
-
isPermissionDenied(): boolean {
|
|
2607
|
-
return this.statusCode === 403 && !this.isRateLimitError;
|
|
2608
|
-
}
|
|
2609
|
-
|
|
2610
|
-
/**
|
|
2611
|
-
* Get time in milliseconds until rate limit resets
|
|
2612
|
-
*/
|
|
2613
|
-
getTimeUntilReset(): number | undefined {
|
|
2614
|
-
if (!this.rateLimitResetAt) {
|
|
2615
|
-
return undefined;
|
|
2616
|
-
}
|
|
2617
|
-
const now = Date.now();
|
|
2618
|
-
const resetTime = this.rateLimitResetAt.getTime();
|
|
2619
|
-
return Math.max(0, resetTime - now);
|
|
2620
|
-
}
|
|
2621
|
-
}
|
|
2622
|
-
|
|
2623
|
-
/**
|
|
2624
|
-
* Error thrown when PAT validation fails
|
|
2625
|
-
*/
|
|
2626
|
-
export class GitHubAuthError extends WorkSourceError {
|
|
2627
|
-
/** The scopes that were found */
|
|
2628
|
-
public readonly foundScopes: string[];
|
|
2629
|
-
/** The scopes that were required */
|
|
2630
|
-
public readonly requiredScopes: string[];
|
|
2631
|
-
/** The missing scopes */
|
|
2632
|
-
public readonly missingScopes: string[];
|
|
2633
|
-
|
|
2634
|
-
constructor(
|
|
2635
|
-
message: string,
|
|
2636
|
-
options: {
|
|
2637
|
-
cause?: Error;
|
|
2638
|
-
foundScopes: string[];
|
|
2639
|
-
requiredScopes: string[];
|
|
2640
|
-
}
|
|
2641
|
-
) {
|
|
2642
|
-
super(message, options);
|
|
2643
|
-
this.name = "GitHubAuthError";
|
|
2644
|
-
this.foundScopes = options.foundScopes;
|
|
2645
|
-
this.requiredScopes = options.requiredScopes;
|
|
2646
|
-
this.missingScopes = options.requiredScopes.filter(
|
|
2647
|
-
(s) => !options.foundScopes.includes(s)
|
|
2648
|
-
);
|
|
2649
|
-
}
|
|
2650
|
-
}
|
|
2651
|
-
|
|
2652
|
-
// =============================================================================
|
|
2653
|
-
// Default Configuration
|
|
2654
|
-
// =============================================================================
|
|
2655
|
-
|
|
2656
|
-
const DEFAULT_LABELS = {
|
|
2657
|
-
ready: "ready",
|
|
2658
|
-
in_progress: "agent-working",
|
|
2659
|
-
};
|
|
2660
|
-
|
|
2661
|
-
const DEFAULT_EXCLUDE_LABELS = ["blocked", "wip"];
|
|
2662
|
-
|
|
2663
|
-
const DEFAULT_API_BASE_URL = "https://api.github.com";
|
|
2664
|
-
|
|
2665
|
-
/** Default retry options */
|
|
2666
|
-
const DEFAULT_RETRY_OPTIONS: Required<RetryOptions> = {
|
|
2667
|
-
maxRetries: 3,
|
|
2668
|
-
baseDelayMs: 1000,
|
|
2669
|
-
maxDelayMs: 30000,
|
|
2670
|
-
jitterFactor: 0.1,
|
|
2671
|
-
};
|
|
2672
|
-
|
|
2673
|
-
/** Default rate limit warning threshold */
|
|
2674
|
-
const DEFAULT_RATE_LIMIT_WARNING_THRESHOLD = 100;
|
|
2675
|
-
|
|
2676
|
-
/** Required scopes for full GitHub adapter functionality */
|
|
2677
|
-
const REQUIRED_SCOPES = ["repo"] as const;
|
|
2678
|
-
|
|
2679
|
-
// =============================================================================
|
|
2680
|
-
// Utility Functions
|
|
2681
|
-
// =============================================================================
|
|
2682
|
-
|
|
2683
|
-
/**
|
|
2684
|
-
* Extract rate limit information from GitHub API response headers
|
|
2685
|
-
*/
|
|
2686
|
-
export function extractRateLimitInfo(headers: Headers): RateLimitInfo | undefined {
|
|
2687
|
-
const remaining = headers.get("X-RateLimit-Remaining");
|
|
2688
|
-
const limit = headers.get("X-RateLimit-Limit");
|
|
2689
|
-
const reset = headers.get("X-RateLimit-Reset");
|
|
2690
|
-
const resource = headers.get("X-RateLimit-Resource");
|
|
2691
|
-
|
|
2692
|
-
if (remaining === null || limit === null || reset === null) {
|
|
2693
|
-
return undefined;
|
|
2694
|
-
}
|
|
2695
|
-
|
|
2696
|
-
return {
|
|
2697
|
-
remaining: parseInt(remaining, 10),
|
|
2698
|
-
limit: parseInt(limit, 10),
|
|
2699
|
-
reset: parseInt(reset, 10),
|
|
2700
|
-
resource: resource ?? "core",
|
|
2701
|
-
};
|
|
2702
|
-
}
|
|
2703
|
-
|
|
2704
|
-
/**
|
|
2705
|
-
* Check if a response indicates rate limiting
|
|
2706
|
-
*/
|
|
2707
|
-
export function isRateLimitResponse(response: Response): boolean {
|
|
2708
|
-
// GitHub returns 403 with X-RateLimit-Remaining: 0 for rate limits
|
|
2709
|
-
// Also check for 429 which some GitHub endpoints may return
|
|
2710
|
-
if (response.status !== 403 && response.status !== 429) {
|
|
2711
|
-
return false;
|
|
2712
|
-
}
|
|
2713
|
-
|
|
2714
|
-
const remaining = response.headers.get("X-RateLimit-Remaining");
|
|
2715
|
-
if (remaining === null) {
|
|
2716
|
-
return response.status === 429;
|
|
2717
|
-
}
|
|
2718
|
-
|
|
2719
|
-
return parseInt(remaining, 10) === 0;
|
|
2720
|
-
}
|
|
2721
|
-
|
|
2722
|
-
/**
|
|
2723
|
-
* Calculate delay with exponential backoff and jitter
|
|
2724
|
-
*/
|
|
2725
|
-
export function calculateBackoffDelay(
|
|
2726
|
-
attempt: number,
|
|
2727
|
-
options: Required<RetryOptions>,
|
|
2728
|
-
rateLimitResetMs?: number
|
|
2729
|
-
): number {
|
|
2730
|
-
// If we have rate limit reset info, use that as the delay
|
|
2731
|
-
if (rateLimitResetMs !== undefined && rateLimitResetMs > 0) {
|
|
2732
|
-
// Add a small buffer (1 second) to ensure the limit has reset
|
|
2733
|
-
return Math.min(rateLimitResetMs + 1000, options.maxDelayMs);
|
|
2734
|
-
}
|
|
2735
|
-
|
|
2736
|
-
// Calculate exponential backoff: baseDelay * 2^attempt
|
|
2737
|
-
const exponentialDelay = options.baseDelayMs * Math.pow(2, attempt);
|
|
2738
|
-
|
|
2739
|
-
// Cap at max delay
|
|
2740
|
-
const cappedDelay = Math.min(exponentialDelay, options.maxDelayMs);
|
|
2741
|
-
|
|
2742
|
-
// Add jitter to prevent thundering herd
|
|
2743
|
-
const jitter = cappedDelay * options.jitterFactor * Math.random();
|
|
2744
|
-
|
|
2745
|
-
return Math.floor(cappedDelay + jitter);
|
|
2746
|
-
}
|
|
2747
|
-
|
|
2748
|
-
/**
|
|
2749
|
-
* Sleep for a specified number of milliseconds
|
|
2750
|
-
*/
|
|
2751
|
-
function sleep(ms: number): Promise<void> {
|
|
2752
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
2753
|
-
}
|
|
2754
|
-
|
|
2755
|
-
// =============================================================================
|
|
2756
|
-
// GitHub Adapter Implementation
|
|
2757
|
-
// =============================================================================
|
|
2758
|
-
|
|
2759
|
-
/**
|
|
2760
|
-
* Work source adapter for GitHub Issues
|
|
2761
|
-
*
|
|
2762
|
-
* Fetches issues with a specific label and allows claiming/completing them.
|
|
2763
|
-
* Uses the GitHub REST API to manage issue labels and comments.
|
|
2764
|
-
*/
|
|
2765
|
-
export class GitHubWorkSourceAdapter implements WorkSourceAdapter {
|
|
2766
|
-
public readonly type = "github" as const;
|
|
2767
|
-
|
|
2768
|
-
private readonly config: GitHubWorkSourceConfig;
|
|
2769
|
-
private readonly labels: { ready: string; in_progress: string };
|
|
2770
|
-
private readonly excludeLabels: string[];
|
|
2771
|
-
private readonly apiBaseUrl: string;
|
|
2772
|
-
private readonly retryOptions: Required<RetryOptions>;
|
|
2773
|
-
private readonly rateLimitWarningThreshold: number;
|
|
2774
|
-
private readonly onRateLimitWarning?: (info: RateLimitInfo) => void;
|
|
2775
|
-
|
|
2776
|
-
/** Last known rate limit info, updated after each request */
|
|
2777
|
-
private _lastRateLimitInfo?: RateLimitInfo;
|
|
2778
|
-
|
|
2779
|
-
constructor(config: GitHubWorkSourceConfig) {
|
|
2780
|
-
this.config = config;
|
|
2781
|
-
this.labels = {
|
|
2782
|
-
ready: config.labels?.ready ?? DEFAULT_LABELS.ready,
|
|
2783
|
-
in_progress: config.labels?.in_progress ?? DEFAULT_LABELS.in_progress,
|
|
2784
|
-
};
|
|
2785
|
-
this.excludeLabels = config.exclude_labels ?? DEFAULT_EXCLUDE_LABELS;
|
|
2786
|
-
this.apiBaseUrl = config.apiBaseUrl ?? DEFAULT_API_BASE_URL;
|
|
2787
|
-
this.retryOptions = {
|
|
2788
|
-
...DEFAULT_RETRY_OPTIONS,
|
|
2789
|
-
...config.retry,
|
|
2790
|
-
};
|
|
2791
|
-
this.rateLimitWarningThreshold =
|
|
2792
|
-
config.rateLimitWarning?.warningThreshold ?? DEFAULT_RATE_LIMIT_WARNING_THRESHOLD;
|
|
2793
|
-
this.onRateLimitWarning = config.rateLimitWarning?.onWarning;
|
|
2794
|
-
}
|
|
2795
|
-
|
|
2796
|
-
/**
|
|
2797
|
-
* Get the last known rate limit information
|
|
2798
|
-
*/
|
|
2799
|
-
get lastRateLimitInfo(): RateLimitInfo | undefined {
|
|
2800
|
-
return this._lastRateLimitInfo;
|
|
2801
|
-
}
|
|
2802
|
-
|
|
2803
|
-
/**
|
|
2804
|
-
* Get the GitHub API token from config or environment
|
|
2805
|
-
*/
|
|
2806
|
-
private getToken(): string | undefined {
|
|
2807
|
-
return this.config.token ?? process.env.GITHUB_TOKEN;
|
|
2808
|
-
}
|
|
2809
|
-
|
|
2810
|
-
/**
|
|
2811
|
-
* Get required owner and repo from config
|
|
2812
|
-
*/
|
|
2813
|
-
private getOwnerRepo(): { owner: string; repo: string } {
|
|
2814
|
-
const { owner, repo } = this.config;
|
|
2815
|
-
if (!owner || !repo) {
|
|
2816
|
-
throw new GitHubAPIError(
|
|
2817
|
-
"GitHub adapter requires 'owner' and 'repo' configuration"
|
|
2818
|
-
);
|
|
2819
|
-
}
|
|
2820
|
-
return { owner, repo };
|
|
2821
|
-
}
|
|
2822
|
-
|
|
2823
|
-
/**
|
|
2824
|
-
* Validate PAT has required scopes for GitHub adapter functionality
|
|
2825
|
-
*
|
|
2826
|
-
* Makes a request to check the token scopes and verifies
|
|
2827
|
-
* that the required scopes (repo) are present.
|
|
2828
|
-
*
|
|
2829
|
-
* @throws GitHubAuthError if required scopes are missing
|
|
2830
|
-
* @throws GitHubAPIError if the validation request fails
|
|
2831
|
-
*/
|
|
2832
|
-
async validateToken(): Promise<{ scopes: string[]; valid: boolean }> {
|
|
2833
|
-
const token = this.getToken();
|
|
2834
|
-
|
|
2835
|
-
if (!token) {
|
|
2836
|
-
throw new GitHubAuthError(
|
|
2837
|
-
"No GitHub token configured. Set GITHUB_TOKEN environment variable or provide token in config.",
|
|
2838
|
-
{
|
|
2839
|
-
foundScopes: [],
|
|
2840
|
-
requiredScopes: [...REQUIRED_SCOPES],
|
|
2841
|
-
}
|
|
2842
|
-
);
|
|
2843
|
-
}
|
|
2844
|
-
|
|
2845
|
-
const headers: Record<string, string> = {
|
|
2846
|
-
Accept: "application/vnd.github+json",
|
|
2847
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
2848
|
-
Authorization: `Bearer ${token}`,
|
|
2849
|
-
};
|
|
2850
|
-
|
|
2851
|
-
const url = `${this.apiBaseUrl}/user`;
|
|
2852
|
-
|
|
2853
|
-
try {
|
|
2854
|
-
const response = await fetch(url, { method: "GET", headers });
|
|
2855
|
-
|
|
2856
|
-
// Extract scopes from response header
|
|
2857
|
-
const scopesHeader = response.headers.get("X-OAuth-Scopes");
|
|
2858
|
-
const scopes = scopesHeader
|
|
2859
|
-
? scopesHeader.split(",").map((s) => s.trim()).filter((s) => s.length > 0)
|
|
2860
|
-
: [];
|
|
2861
|
-
|
|
2862
|
-
// Update rate limit info
|
|
2863
|
-
const rateLimitInfo = extractRateLimitInfo(response.headers);
|
|
2864
|
-
if (rateLimitInfo) {
|
|
2865
|
-
this._lastRateLimitInfo = rateLimitInfo;
|
|
2866
|
-
this.checkRateLimitWarning(rateLimitInfo);
|
|
2867
|
-
}
|
|
2868
|
-
|
|
2869
|
-
if (!response.ok) {
|
|
2870
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (response.status === 401) {
|
|
2871
|
-
throw new GitHubAuthError(
|
|
2872
|
-
"Invalid GitHub token. The token may be expired or revoked.",
|
|
2873
|
-
{
|
|
2874
|
-
foundScopes: scopes,
|
|
2875
|
-
requiredScopes: [...REQUIRED_SCOPES],
|
|
2876
|
-
}
|
|
2877
|
-
);
|
|
2878
|
-
}
|
|
2879
|
-
<span class="cstat-no" title="statement not covered" > throw new GitHubAPIError(</span>
|
|
2880
|
-
`GitHub API error: ${response.status} ${response.statusText}`,
|
|
2881
|
-
{ statusCode: response.status, endpoint: "/user" }
|
|
2882
|
-
);
|
|
2883
|
-
}
|
|
2884
|
-
|
|
2885
|
-
// Check for required scopes
|
|
2886
|
-
const hasRequiredScopes = REQUIRED_SCOPES.every((required) =>
|
|
2887
|
-
scopes.some((scope) => scope === required || scope.startsWith(`${required}:`))
|
|
2888
|
-
);
|
|
2889
|
-
|
|
2890
|
-
if (!hasRequiredScopes) {
|
|
2891
|
-
throw new GitHubAuthError(
|
|
2892
|
-
`GitHub token is missing required scopes. Found: [${scopes.join(", ")}], Required: [${REQUIRED_SCOPES.join(", ")}]`,
|
|
2893
|
-
{
|
|
2894
|
-
foundScopes: scopes,
|
|
2895
|
-
requiredScopes: [...REQUIRED_SCOPES],
|
|
2896
|
-
}
|
|
2897
|
-
);
|
|
2898
|
-
}
|
|
2899
|
-
|
|
2900
|
-
return { scopes, valid: true };
|
|
2901
|
-
} catch (error) {
|
|
2902
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (error instanceof GitHubAuthError || <span class="branch-1 cbranch-no" title="branch not covered" >error instanceof GitHubAPIError) {</span>
|
|
2903
|
-
throw error;
|
|
2904
|
-
}
|
|
2905
|
-
<span class="cstat-no" title="statement not covered" > throw new GitHubAPIError(</span>
|
|
2906
|
-
`Failed to validate GitHub token: ${error instanceof Error ? error.message : String(error)}`,
|
|
2907
|
-
{ cause: error instanceof Error ? error : undefined, endpoint: "/user" }
|
|
2908
|
-
);
|
|
2909
|
-
}
|
|
2910
|
-
}
|
|
2911
|
-
|
|
2912
|
-
/**
|
|
2913
|
-
* Check rate limit and invoke warning callback if below threshold
|
|
2914
|
-
*/
|
|
2915
|
-
private checkRateLimitWarning(info: RateLimitInfo): void {
|
|
2916
|
-
if (info.remaining < this.rateLimitWarningThreshold && this.onRateLimitWarning) {
|
|
2917
|
-
this.onRateLimitWarning(info);
|
|
2918
|
-
}
|
|
2919
|
-
}
|
|
2920
|
-
|
|
2921
|
-
/**
|
|
2922
|
-
* Make an authenticated request to the GitHub API with retry logic
|
|
2923
|
-
*
|
|
2924
|
-
* Implements:
|
|
2925
|
-
* - Exponential backoff for rate limit errors (HTTP 403 with X-RateLimit-Remaining: 0)
|
|
2926
|
-
* - Network error retries (max 3 attempts by default)
|
|
2927
|
-
* - Rate limit status tracking and warnings
|
|
2928
|
-
*/
|
|
2929
|
-
private async apiRequest<T>(
|
|
2930
|
-
method: string,
|
|
2931
|
-
endpoint: string,
|
|
2932
|
-
body?: unknown
|
|
2933
|
-
): Promise<T> {
|
|
2934
|
-
const token = this.getToken();
|
|
2935
|
-
const headers: Record<string, string> = {
|
|
2936
|
-
Accept: "application/vnd.github+json",
|
|
2937
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
2938
|
-
};
|
|
2939
|
-
|
|
2940
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (token) {
|
|
2941
|
-
headers["Authorization"] = `Bearer ${token}`;
|
|
2942
|
-
}
|
|
2943
|
-
|
|
2944
|
-
const url = `${this.apiBaseUrl}${endpoint}`;
|
|
2945
|
-
let lastError: GitHubAPIError | undefined;
|
|
2946
|
-
|
|
2947
|
-
for (let attempt = 0; attempt <= this.retryOptions.maxRetries; attempt++) {
|
|
2948
|
-
try {
|
|
2949
|
-
const response = await fetch(url, {
|
|
2950
|
-
method,
|
|
2951
|
-
headers,
|
|
2952
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
2953
|
-
});
|
|
2954
|
-
|
|
2955
|
-
// Extract and store rate limit info from every response
|
|
2956
|
-
const rateLimitInfo = extractRateLimitInfo(response.headers);
|
|
2957
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (rateLimitInfo) {
|
|
2958
|
-
<span class="cstat-no" title="statement not covered" > this._lastRateLimitInfo = rateLimitInfo;</span>
|
|
2959
|
-
<span class="cstat-no" title="statement not covered" > this.checkRateLimitWarning(rateLimitInfo);</span>
|
|
2960
|
-
}
|
|
2961
|
-
|
|
2962
|
-
if (!response.ok) {
|
|
2963
|
-
// Check for rate limiting
|
|
2964
|
-
const isRateLimit = isRateLimitResponse(response);
|
|
2965
|
-
|
|
2966
|
-
let errorMessage = `GitHub API error: ${response.status} ${response.statusText}`;
|
|
2967
|
-
try {
|
|
2968
|
-
const errorBody = (await response.json()) as GitHubErrorResponse;
|
|
2969
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (errorBody.message) {
|
|
2970
|
-
errorMessage = `GitHub API error: ${errorBody.message}`;
|
|
2971
|
-
}
|
|
2972
|
-
} catch {
|
|
2973
|
-
// Ignore JSON parse errors
|
|
2974
|
-
}
|
|
2975
|
-
|
|
2976
|
-
const error = new GitHubAPIError(errorMessage, {
|
|
2977
|
-
statusCode: response.status,
|
|
2978
|
-
endpoint,
|
|
2979
|
-
rateLimitInfo,
|
|
2980
|
-
isRateLimitError: isRateLimit,
|
|
2981
|
-
});
|
|
2982
|
-
|
|
2983
|
-
// Only retry on retryable errors
|
|
2984
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (error.isRetryable() && attempt < this.retryOptions.maxRetries) {
|
|
2985
|
-
<span class="cstat-no" title="statement not covered" > lastError = error;</span>
|
|
2986
|
-
const delay = <span class="cstat-no" title="statement not covered" >calculateBackoffDelay(</span>
|
|
2987
|
-
attempt,
|
|
2988
|
-
this.retryOptions,
|
|
2989
|
-
error.getTimeUntilReset()
|
|
2990
|
-
);
|
|
2991
|
-
<span class="cstat-no" title="statement not covered" > await sleep(delay);</span>
|
|
2992
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
2993
|
-
}
|
|
2994
|
-
|
|
2995
|
-
throw error;
|
|
2996
|
-
}
|
|
2997
|
-
|
|
2998
|
-
// Handle 204 No Content responses
|
|
2999
|
-
if (response.status === 204) {
|
|
3000
|
-
return undefined as T;
|
|
3001
|
-
}
|
|
3002
|
-
|
|
3003
|
-
return (await response.json()) as T;
|
|
3004
|
-
} catch (error) {
|
|
3005
|
-
// Re-throw GitHubAPIError as-is (already handled above)
|
|
3006
|
-
if (error instanceof GitHubAPIError) {
|
|
3007
|
-
throw error;
|
|
3008
|
-
}
|
|
3009
|
-
|
|
3010
|
-
// Network errors - wrap and potentially retry
|
|
3011
|
-
const networkError = new GitHubAPIError(
|
|
3012
|
-
`Failed to connect to GitHub API: ${error instanceof Error ? error.message : <span class="branch-1 cbranch-no" title="branch not covered" >String(error)}</span>`,
|
|
3013
|
-
{ cause: error instanceof Error ? error : <span class="branch-1 cbranch-no" title="branch not covered" >undefined, e</span>ndpoint }
|
|
3014
|
-
);
|
|
3015
|
-
|
|
3016
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (networkError.isRetryable() && attempt < this.retryOptions.maxRetries) {
|
|
3017
|
-
<span class="cstat-no" title="statement not covered" > lastError = networkError;</span>
|
|
3018
|
-
const delay = <span class="cstat-no" title="statement not covered" >calculateBackoffDelay(attempt, this.retryOptions);</span>
|
|
3019
|
-
<span class="cstat-no" title="statement not covered" > await sleep(delay);</span>
|
|
3020
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
3021
|
-
}
|
|
3022
|
-
|
|
3023
|
-
throw networkError;
|
|
3024
|
-
}
|
|
3025
|
-
}
|
|
3026
|
-
|
|
3027
|
-
// Should not reach here, but throw last error if we do
|
|
3028
|
-
<span class="cstat-no" title="statement not covered" > throw lastError ?? new GitHubAPIError("Unknown error during API request", { endpoint });</span>
|
|
3029
|
-
}
|
|
3030
|
-
|
|
3031
|
-
/**
|
|
3032
|
-
* Make an authenticated request to the GitHub API with retry logic, returning both data and headers
|
|
3033
|
-
*
|
|
3034
|
-
* This variant returns the response headers along with the data, useful for
|
|
3035
|
-
* pagination (Link header) and other response metadata.
|
|
3036
|
-
*/
|
|
3037
|
-
private async apiRequestWithHeaders<T>(
|
|
3038
|
-
method: string,
|
|
3039
|
-
endpoint: string,
|
|
3040
|
-
body?: unknown
|
|
3041
|
-
): Promise<{ data: T; headers: Headers }> {
|
|
3042
|
-
const token = this.getToken();
|
|
3043
|
-
const headers: Record<string, string> = {
|
|
3044
|
-
Accept: "application/vnd.github+json",
|
|
3045
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
3046
|
-
};
|
|
3047
|
-
|
|
3048
|
-
if (token) {
|
|
3049
|
-
headers["Authorization"] = `Bearer ${token}`;
|
|
3050
|
-
}
|
|
3051
|
-
|
|
3052
|
-
const url = `${this.apiBaseUrl}${endpoint}`;
|
|
3053
|
-
let lastError: GitHubAPIError | undefined;
|
|
3054
|
-
|
|
3055
|
-
for (let attempt = 0; attempt <= this.retryOptions.maxRetries; attempt++) {
|
|
3056
|
-
try {
|
|
3057
|
-
const response = await fetch(url, {
|
|
3058
|
-
method,
|
|
3059
|
-
headers,
|
|
3060
|
-
body: body ? <span class="branch-0 cbranch-no" title="branch not covered" >JSON.stringify(body) : u</span>ndefined,
|
|
3061
|
-
});
|
|
3062
|
-
|
|
3063
|
-
// Extract and store rate limit info from every response
|
|
3064
|
-
const rateLimitInfo = extractRateLimitInfo(response.headers);
|
|
3065
|
-
if (rateLimitInfo) {
|
|
3066
|
-
this._lastRateLimitInfo = rateLimitInfo;
|
|
3067
|
-
this.checkRateLimitWarning(rateLimitInfo);
|
|
3068
|
-
}
|
|
3069
|
-
|
|
3070
|
-
if (!response.ok) {
|
|
3071
|
-
// Check for rate limiting
|
|
3072
|
-
const isRateLimit = isRateLimitResponse(response);
|
|
3073
|
-
|
|
3074
|
-
let errorMessage = `GitHub API error: ${response.status} ${response.statusText}`;
|
|
3075
|
-
try {
|
|
3076
|
-
const errorBody = (await response.json()) as GitHubErrorResponse;
|
|
3077
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (errorBody.message) {
|
|
3078
|
-
errorMessage = `GitHub API error: ${errorBody.message}`;
|
|
3079
|
-
}
|
|
3080
|
-
} catch {
|
|
3081
|
-
// Ignore JSON parse errors
|
|
3082
|
-
}
|
|
3083
|
-
|
|
3084
|
-
const error = new GitHubAPIError(errorMessage, {
|
|
3085
|
-
statusCode: response.status,
|
|
3086
|
-
endpoint,
|
|
3087
|
-
rateLimitInfo,
|
|
3088
|
-
isRateLimitError: isRateLimit,
|
|
3089
|
-
});
|
|
3090
|
-
|
|
3091
|
-
// Only retry on retryable errors
|
|
3092
|
-
if (error.isRetryable() && attempt < this.retryOptions.maxRetries) {
|
|
3093
|
-
lastError = error;
|
|
3094
|
-
const delay = calculateBackoffDelay(
|
|
3095
|
-
attempt,
|
|
3096
|
-
this.retryOptions,
|
|
3097
|
-
error.getTimeUntilReset()
|
|
3098
|
-
);
|
|
3099
|
-
await sleep(delay);
|
|
3100
|
-
continue;
|
|
3101
|
-
}
|
|
3102
|
-
|
|
3103
|
-
throw error;
|
|
3104
|
-
}
|
|
3105
|
-
|
|
3106
|
-
// Handle 204 No Content responses
|
|
3107
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (response.status === 204) {
|
|
3108
|
-
<span class="cstat-no" title="statement not covered" > return { data: undefined as T, headers: response.headers };</span>
|
|
3109
|
-
}
|
|
3110
|
-
|
|
3111
|
-
const data = (await response.json()) as T;
|
|
3112
|
-
return { data, headers: response.headers };
|
|
3113
|
-
} catch (error) {
|
|
3114
|
-
// Re-throw GitHubAPIError as-is (already handled above)
|
|
3115
|
-
if (error instanceof GitHubAPIError) {
|
|
3116
|
-
throw error;
|
|
3117
|
-
}
|
|
3118
|
-
|
|
3119
|
-
// Network errors - wrap and potentially retry
|
|
3120
|
-
const networkError = new GitHubAPIError(
|
|
3121
|
-
`Failed to connect to GitHub API: ${error instanceof Error ? error.message : <span class="branch-1 cbranch-no" title="branch not covered" >String(error)}</span>`,
|
|
3122
|
-
{ cause: error instanceof Error ? error : <span class="branch-1 cbranch-no" title="branch not covered" >undefined, e</span>ndpoint }
|
|
3123
|
-
);
|
|
3124
|
-
|
|
3125
|
-
if (networkError.isRetryable() && attempt < this.retryOptions.maxRetries) {
|
|
3126
|
-
lastError = networkError;
|
|
3127
|
-
const delay = calculateBackoffDelay(attempt, this.retryOptions);
|
|
3128
|
-
await sleep(delay);
|
|
3129
|
-
continue;
|
|
3130
|
-
}
|
|
3131
|
-
|
|
3132
|
-
throw networkError;
|
|
3133
|
-
}
|
|
3134
|
-
}
|
|
3135
|
-
|
|
3136
|
-
// Should not reach here, but throw last error if we do
|
|
3137
|
-
<span class="cstat-no" title="statement not covered" > throw lastError ?? new GitHubAPIError("Unknown error during API request", { endpoint });</span>
|
|
3138
|
-
}
|
|
3139
|
-
|
|
3140
|
-
/**
|
|
3141
|
-
* Extract the issue number from a work item ID
|
|
3142
|
-
*/
|
|
3143
|
-
private parseWorkItemId(workItemId: string): number {
|
|
3144
|
-
// Work item IDs are formatted as "github-{issueNumber}"
|
|
3145
|
-
const match = workItemId.match(/^github-(\d+)$/);
|
|
3146
|
-
if (!match) {
|
|
3147
|
-
throw new GitHubAPIError(
|
|
3148
|
-
`Invalid work item ID format: "${workItemId}". Expected "github-{number}"`
|
|
3149
|
-
);
|
|
3150
|
-
}
|
|
3151
|
-
return parseInt(match[1], 10);
|
|
3152
|
-
}
|
|
3153
|
-
|
|
3154
|
-
/**
|
|
3155
|
-
* Convert a GitHub issue to a WorkItem
|
|
3156
|
-
*/
|
|
3157
|
-
private issueToWorkItem(issue: GitHubIssue): WorkItem {
|
|
3158
|
-
const labelNames = issue.labels.map((l) => l.name);
|
|
3159
|
-
|
|
3160
|
-
return {
|
|
3161
|
-
id: `github-${issue.number}`,
|
|
3162
|
-
source: "github",
|
|
3163
|
-
externalId: String(issue.number),
|
|
3164
|
-
title: issue.title,
|
|
3165
|
-
description: issue.body ?? "",
|
|
3166
|
-
priority: this.inferPriority(labelNames),
|
|
3167
|
-
labels: labelNames,
|
|
3168
|
-
metadata: {
|
|
3169
|
-
state: issue.state,
|
|
3170
|
-
assignee: issue.assignee?.login ?? null,
|
|
3171
|
-
assignees: issue.assignees.map((a) => a.login),
|
|
3172
|
-
milestone: issue.milestone
|
|
3173
|
-
? {
|
|
3174
|
-
title: issue.milestone.title,
|
|
3175
|
-
number: issue.milestone.number,
|
|
3176
|
-
}
|
|
3177
|
-
: null,
|
|
3178
|
-
author: issue.user?.login ?? <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
|
|
3179
|
-
},
|
|
3180
|
-
url: issue.html_url,
|
|
3181
|
-
createdAt: new Date(issue.created_at),
|
|
3182
|
-
updatedAt: new Date(issue.updated_at),
|
|
3183
|
-
};
|
|
3184
|
-
}
|
|
3185
|
-
|
|
3186
|
-
/**
|
|
3187
|
-
* Infer priority from issue labels
|
|
3188
|
-
*/
|
|
3189
|
-
private inferPriority(labels: string[]): WorkItemPriority {
|
|
3190
|
-
const lowerLabels = labels.map((l) => l.toLowerCase());
|
|
3191
|
-
|
|
3192
|
-
if (
|
|
3193
|
-
lowerLabels.some(
|
|
3194
|
-
(l) => l.includes("critical") || l.includes("p0") || l.includes("urgent")
|
|
3195
|
-
)
|
|
3196
|
-
) {
|
|
3197
|
-
return "critical";
|
|
3198
|
-
}
|
|
3199
|
-
if (
|
|
3200
|
-
lowerLabels.some(
|
|
3201
|
-
(l) => l.includes("high") || l.includes("p1") || l.includes("important")
|
|
3202
|
-
)
|
|
3203
|
-
) {
|
|
3204
|
-
return "high";
|
|
3205
|
-
}
|
|
3206
|
-
if (lowerLabels.some((l) => l.includes("low") || l.includes("p3"))) {
|
|
3207
|
-
return "low";
|
|
3208
|
-
}
|
|
3209
|
-
return "medium";
|
|
3210
|
-
}
|
|
3211
|
-
|
|
3212
|
-
/**
|
|
3213
|
-
* Build the query string for fetching issues
|
|
3214
|
-
*/
|
|
3215
|
-
private buildIssueQuery(options?: FetchOptions): string {
|
|
3216
|
-
const params = new URLSearchParams();
|
|
3217
|
-
|
|
3218
|
-
// Always filter by ready label
|
|
3219
|
-
params.set("labels", this.labels.ready);
|
|
3220
|
-
|
|
3221
|
-
// Sort by creation date (oldest first for FIFO)
|
|
3222
|
-
params.set("sort", "created");
|
|
3223
|
-
params.set("direction", "asc");
|
|
3224
|
-
|
|
3225
|
-
// State filter - only open issues unless claimed are included
|
|
3226
|
-
params.set("state", "open");
|
|
3227
|
-
|
|
3228
|
-
// Pagination
|
|
3229
|
-
if (options?.limit) {
|
|
3230
|
-
params.set("per_page", String(Math.min(options.limit, 100)));
|
|
3231
|
-
} else {
|
|
3232
|
-
params.set("per_page", "30");
|
|
3233
|
-
}
|
|
3234
|
-
|
|
3235
|
-
if (options?.cursor) {
|
|
3236
|
-
params.set("page", options.cursor);
|
|
3237
|
-
}
|
|
3238
|
-
|
|
3239
|
-
return params.toString();
|
|
3240
|
-
}
|
|
3241
|
-
|
|
3242
|
-
/**
|
|
3243
|
-
* Extract pagination cursor from Link header
|
|
3244
|
-
*/
|
|
3245
|
-
private extractNextPage(linkHeader: string | null): string | undefined {
|
|
3246
|
-
if (!linkHeader) return undefined;
|
|
3247
|
-
|
|
3248
|
-
// Parse Link header format: <url>; rel="next", <url>; rel="last"
|
|
3249
|
-
const links = linkHeader.split(",");
|
|
3250
|
-
for (const link of links) {
|
|
3251
|
-
const match = link.match(/<[^>]*[?&]page=(\d+)[^>]*>;\s*rel="next"/);
|
|
3252
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (match) {
|
|
3253
|
-
return match[1];
|
|
3254
|
-
}
|
|
3255
|
-
}
|
|
3256
|
-
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
3257
|
-
}
|
|
3258
|
-
|
|
3259
|
-
/**
|
|
3260
|
-
* Fetch available work items from GitHub Issues
|
|
3261
|
-
*
|
|
3262
|
-
* Queries issues with the ready label, excludes issues with blocked/wip labels,
|
|
3263
|
-
* and returns them sorted by creation date (oldest first).
|
|
3264
|
-
*
|
|
3265
|
-
* Includes retry logic for transient failures and rate limit handling.
|
|
3266
|
-
*/
|
|
3267
|
-
async fetchAvailableWork(options?: FetchOptions): Promise<FetchResult> {
|
|
3268
|
-
const { owner, repo } = this.getOwnerRepo();
|
|
3269
|
-
const query = this.buildIssueQuery(options);
|
|
3270
|
-
const endpoint = `/repos/${owner}/${repo}/issues?${query}`;
|
|
3271
|
-
|
|
3272
|
-
const { data: issues, headers } = await this.apiRequestWithHeaders<GitHubIssue[]>(
|
|
3273
|
-
"GET",
|
|
3274
|
-
endpoint
|
|
3275
|
-
);
|
|
3276
|
-
|
|
3277
|
-
// Filter out issues with excluded labels and issues that are already claimed
|
|
3278
|
-
const filteredIssues = issues.filter((issue) => {
|
|
3279
|
-
const labelNames = issue.labels.map((l) => l.name.toLowerCase());
|
|
3280
|
-
|
|
3281
|
-
// Exclude issues with any of the exclude labels
|
|
3282
|
-
const hasExcludedLabel = this.excludeLabels.some((excluded) =>
|
|
3283
|
-
labelNames.includes(excluded.toLowerCase())
|
|
3284
|
-
);
|
|
3285
|
-
if (hasExcludedLabel) return false;
|
|
3286
|
-
|
|
3287
|
-
// Unless includeClaimed is true, exclude issues with in_progress label
|
|
3288
|
-
if (!options?.includeClaimed) {
|
|
3289
|
-
const hasInProgressLabel = labelNames.includes(
|
|
3290
|
-
this.labels.in_progress.toLowerCase()
|
|
3291
|
-
);
|
|
3292
|
-
if (hasInProgressLabel) return false;
|
|
3293
|
-
}
|
|
3294
|
-
|
|
3295
|
-
// Apply additional label filters if specified
|
|
3296
|
-
if (options?.labels && options.labels.length > 0) {
|
|
3297
|
-
const hasAllLabels = options.labels.every((required) =>
|
|
3298
|
-
labelNames.includes(required.toLowerCase())
|
|
3299
|
-
);
|
|
3300
|
-
if (!hasAllLabels) return false;
|
|
3301
|
-
}
|
|
3302
|
-
|
|
3303
|
-
return true;
|
|
3304
|
-
});
|
|
3305
|
-
|
|
3306
|
-
// Filter by priority if specified
|
|
3307
|
-
let workItems = filteredIssues.map((issue) => this.issueToWorkItem(issue));
|
|
3308
|
-
if (options?.priority && options.priority.length > 0) {
|
|
3309
|
-
workItems = workItems.filter((item) =>
|
|
3310
|
-
options.priority!.includes(item.priority)
|
|
3311
|
-
);
|
|
3312
|
-
}
|
|
3313
|
-
|
|
3314
|
-
// Extract pagination info from Link header
|
|
3315
|
-
const linkHeader = headers.get("Link");
|
|
3316
|
-
const nextCursor = this.extractNextPage(linkHeader);
|
|
3317
|
-
|
|
3318
|
-
return {
|
|
3319
|
-
items: workItems,
|
|
3320
|
-
nextCursor,
|
|
3321
|
-
};
|
|
3322
|
-
}
|
|
3323
|
-
|
|
3324
|
-
/**
|
|
3325
|
-
* Claim a work item by adding the in-progress label and removing the ready label
|
|
3326
|
-
*/
|
|
3327
|
-
async claimWork(workItemId: string): Promise<ClaimResult> {
|
|
3328
|
-
const { owner, repo } = this.getOwnerRepo();
|
|
3329
|
-
const issueNumber = this.parseWorkItemId(workItemId);
|
|
3330
|
-
|
|
3331
|
-
try {
|
|
3332
|
-
// First, get the current issue to verify it exists and is claimable
|
|
3333
|
-
const issue = await this.apiRequest<GitHubIssue>(
|
|
3334
|
-
"GET",
|
|
3335
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}`
|
|
3336
|
-
);
|
|
3337
|
-
|
|
3338
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!issue) {
|
|
3339
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
3340
|
-
success: false,
|
|
3341
|
-
reason: "not_found",
|
|
3342
|
-
message: `Issue #${issueNumber} not found`,
|
|
3343
|
-
};
|
|
3344
|
-
}
|
|
3345
|
-
|
|
3346
|
-
if (issue.state === "closed") {
|
|
3347
|
-
return {
|
|
3348
|
-
success: false,
|
|
3349
|
-
reason: "invalid_state",
|
|
3350
|
-
message: `Issue #${issueNumber} is closed`,
|
|
3351
|
-
};
|
|
3352
|
-
}
|
|
3353
|
-
|
|
3354
|
-
const labelNames = issue.labels.map((l) => l.name.toLowerCase());
|
|
3355
|
-
|
|
3356
|
-
// Check if already claimed
|
|
3357
|
-
if (labelNames.includes(this.labels.in_progress.toLowerCase())) {
|
|
3358
|
-
return {
|
|
3359
|
-
success: false,
|
|
3360
|
-
reason: "already_claimed",
|
|
3361
|
-
message: `Issue #${issueNumber} is already claimed`,
|
|
3362
|
-
};
|
|
3363
|
-
}
|
|
3364
|
-
|
|
3365
|
-
// Add the in-progress label
|
|
3366
|
-
await this.apiRequest<void>(
|
|
3367
|
-
"POST",
|
|
3368
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/labels`,
|
|
3369
|
-
{ labels: [this.labels.in_progress] }
|
|
3370
|
-
);
|
|
3371
|
-
|
|
3372
|
-
// Remove the ready label (if present)
|
|
3373
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (labelNames.includes(this.labels.ready.toLowerCase())) {
|
|
3374
|
-
try {
|
|
3375
|
-
await this.apiRequest<void>(
|
|
3376
|
-
"DELETE",
|
|
3377
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/labels/${encodeURIComponent(this.labels.ready)}`
|
|
3378
|
-
);
|
|
3379
|
-
} catch {
|
|
3380
|
-
// Ignore errors removing the ready label - it might not exist
|
|
3381
|
-
}
|
|
3382
|
-
}
|
|
3383
|
-
|
|
3384
|
-
// Fetch the updated issue
|
|
3385
|
-
const updatedIssue = await this.apiRequest<GitHubIssue>(
|
|
3386
|
-
"GET",
|
|
3387
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}`
|
|
3388
|
-
);
|
|
3389
|
-
|
|
3390
|
-
return {
|
|
3391
|
-
success: true,
|
|
3392
|
-
workItem: this.issueToWorkItem(updatedIssue),
|
|
3393
|
-
};
|
|
3394
|
-
} catch (error) {
|
|
3395
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (error instanceof GitHubAPIError) {
|
|
3396
|
-
if (error.statusCode === 404) {
|
|
3397
|
-
return {
|
|
3398
|
-
success: false,
|
|
3399
|
-
reason: "not_found",
|
|
3400
|
-
message: `Issue #${issueNumber} not found`,
|
|
3401
|
-
};
|
|
3402
|
-
}
|
|
3403
|
-
if (error.statusCode === 403) {
|
|
3404
|
-
return {
|
|
3405
|
-
success: false,
|
|
3406
|
-
reason: "permission_denied",
|
|
3407
|
-
message: `Permission denied for issue #${issueNumber}`,
|
|
3408
|
-
};
|
|
3409
|
-
}
|
|
3410
|
-
return {
|
|
3411
|
-
success: false,
|
|
3412
|
-
reason: "source_error",
|
|
3413
|
-
message: error.message,
|
|
3414
|
-
};
|
|
3415
|
-
}
|
|
3416
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
3417
|
-
success: false,
|
|
3418
|
-
reason: "source_error",
|
|
3419
|
-
message: `Failed to claim issue: ${error instanceof Error ? error.message : String(error)}`,
|
|
3420
|
-
};
|
|
3421
|
-
}
|
|
3422
|
-
}
|
|
3423
|
-
|
|
3424
|
-
/**
|
|
3425
|
-
* Complete a work item by posting a comment with the result and optionally closing the issue
|
|
3426
|
-
*/
|
|
3427
|
-
async completeWork(workItemId: string, result: WorkResult): Promise<void> {
|
|
3428
|
-
const { owner, repo } = this.getOwnerRepo();
|
|
3429
|
-
const issueNumber = this.parseWorkItemId(workItemId);
|
|
3430
|
-
|
|
3431
|
-
// Build the completion comment
|
|
3432
|
-
const outcomeEmoji =
|
|
3433
|
-
result.outcome === "success"
|
|
3434
|
-
? "✅"
|
|
3435
|
-
: result.outcome === "partial"
|
|
3436
|
-
? "⚠️"
|
|
3437
|
-
: "❌";
|
|
3438
|
-
|
|
3439
|
-
let commentBody = `## ${outcomeEmoji} Work Completed\n\n`;
|
|
3440
|
-
commentBody += `**Outcome:** ${result.outcome}\n\n`;
|
|
3441
|
-
commentBody += `**Summary:** ${result.summary}\n`;
|
|
3442
|
-
|
|
3443
|
-
if (result.details) {
|
|
3444
|
-
commentBody += `\n### Details\n\n${result.details}\n`;
|
|
3445
|
-
}
|
|
3446
|
-
|
|
3447
|
-
if (result.artifacts && result.artifacts.length > 0) {
|
|
3448
|
-
commentBody += `\n### Artifacts\n\n`;
|
|
3449
|
-
for (const artifact of result.artifacts) {
|
|
3450
|
-
commentBody += `- ${artifact}\n`;
|
|
3451
|
-
}
|
|
3452
|
-
}
|
|
3453
|
-
|
|
3454
|
-
if (result.error) {
|
|
3455
|
-
commentBody += `\n### Error\n\n\`\`\`\n${result.error}\n\`\`\`\n`;
|
|
3456
|
-
}
|
|
3457
|
-
|
|
3458
|
-
// Post the comment
|
|
3459
|
-
await this.apiRequest<void>(
|
|
3460
|
-
"POST",
|
|
3461
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/comments`,
|
|
3462
|
-
{ body: commentBody }
|
|
3463
|
-
);
|
|
3464
|
-
|
|
3465
|
-
// Remove the in-progress label
|
|
3466
|
-
try {
|
|
3467
|
-
await this.apiRequest<void>(
|
|
3468
|
-
"DELETE",
|
|
3469
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/labels/${encodeURIComponent(this.labels.in_progress)}`
|
|
3470
|
-
);
|
|
3471
|
-
} catch {
|
|
3472
|
-
// Ignore errors removing the label
|
|
3473
|
-
}
|
|
3474
|
-
|
|
3475
|
-
// Close the issue if the outcome was success
|
|
3476
|
-
if (result.outcome === "success") {
|
|
3477
|
-
await this.apiRequest<void>(
|
|
3478
|
-
"PATCH",
|
|
3479
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}`,
|
|
3480
|
-
{ state: "closed", state_reason: "completed" }
|
|
3481
|
-
);
|
|
3482
|
-
}
|
|
3483
|
-
}
|
|
3484
|
-
|
|
3485
|
-
/**
|
|
3486
|
-
* Release a claimed work item by removing in-progress label and re-adding ready label
|
|
3487
|
-
*/
|
|
3488
|
-
async releaseWork(
|
|
3489
|
-
workItemId: string,
|
|
3490
|
-
options?: ReleaseOptions
|
|
3491
|
-
): Promise<ReleaseResult> {
|
|
3492
|
-
const { owner, repo } = this.getOwnerRepo();
|
|
3493
|
-
const issueNumber = this.parseWorkItemId(workItemId);
|
|
3494
|
-
|
|
3495
|
-
try {
|
|
3496
|
-
// Add a comment if requested
|
|
3497
|
-
if (options?.addComment && options?.reason) {
|
|
3498
|
-
await this.apiRequest<void>(
|
|
3499
|
-
"POST",
|
|
3500
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/comments`,
|
|
3501
|
-
{ body: `⏸️ **Work Released**\n\nReason: ${options.reason}` }
|
|
3502
|
-
);
|
|
3503
|
-
}
|
|
3504
|
-
|
|
3505
|
-
// Remove the in-progress label
|
|
3506
|
-
try {
|
|
3507
|
-
await this.apiRequest<void>(
|
|
3508
|
-
"DELETE",
|
|
3509
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/labels/${encodeURIComponent(this.labels.in_progress)}`
|
|
3510
|
-
);
|
|
3511
|
-
} catch {
|
|
3512
|
-
// Ignore errors removing the label
|
|
3513
|
-
}
|
|
3514
|
-
|
|
3515
|
-
// Re-add the ready label if cleanup_on_failure is true (default)
|
|
3516
|
-
if (this.config.cleanup_on_failure !== false) {
|
|
3517
|
-
await this.apiRequest<void>(
|
|
3518
|
-
"POST",
|
|
3519
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}/labels`,
|
|
3520
|
-
{ labels: [this.labels.ready] }
|
|
3521
|
-
);
|
|
3522
|
-
}
|
|
3523
|
-
|
|
3524
|
-
return { success: true };
|
|
3525
|
-
} catch (error) {
|
|
3526
|
-
return {
|
|
3527
|
-
success: false,
|
|
3528
|
-
message: `Failed to release issue: ${error instanceof Error ? error.message : <span class="branch-1 cbranch-no" title="branch not covered" >String(error)}</span>`,
|
|
3529
|
-
};
|
|
3530
|
-
}
|
|
3531
|
-
}
|
|
3532
|
-
|
|
3533
|
-
/**
|
|
3534
|
-
* Get a specific work item by ID
|
|
3535
|
-
*/
|
|
3536
|
-
async getWork(workItemId: string): Promise<WorkItem | undefined> {
|
|
3537
|
-
const { owner, repo } = this.getOwnerRepo();
|
|
3538
|
-
const issueNumber = this.parseWorkItemId(workItemId);
|
|
3539
|
-
|
|
3540
|
-
try {
|
|
3541
|
-
const issue = await this.apiRequest<GitHubIssue>(
|
|
3542
|
-
"GET",
|
|
3543
|
-
`/repos/${owner}/${repo}/issues/${issueNumber}`
|
|
3544
|
-
);
|
|
3545
|
-
|
|
3546
|
-
return this.issueToWorkItem(issue);
|
|
3547
|
-
} catch (error) {
|
|
3548
|
-
if (error instanceof GitHubAPIError && error.statusCode === 404) {
|
|
3549
|
-
return undefined;
|
|
3550
|
-
}
|
|
3551
|
-
throw error;
|
|
3552
|
-
}
|
|
3553
|
-
}
|
|
3554
|
-
}
|
|
3555
|
-
|
|
3556
|
-
/**
|
|
3557
|
-
* Factory function for creating GitHub adapters
|
|
3558
|
-
*/
|
|
3559
|
-
export function createGitHubAdapter(
|
|
3560
|
-
config: WorkSourceConfig
|
|
3561
|
-
): WorkSourceAdapter {
|
|
3562
|
-
return new GitHubWorkSourceAdapter(config as GitHubWorkSourceConfig);
|
|
3563
|
-
}
|
|
3564
|
-
</pre></td></tr></table></pre>
|
|
3565
|
-
|
|
3566
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
3567
|
-
</div><!-- /wrapper -->
|
|
3568
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
3569
|
-
Code coverage generated by
|
|
3570
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3571
|
-
at 2026-01-20T17:39:02.193Z
|
|
3572
|
-
</div>
|
|
3573
|
-
<script src="../../../prettify.js"></script>
|
|
3574
|
-
<script>
|
|
3575
|
-
window.onload = function () {
|
|
3576
|
-
prettyPrint();
|
|
3577
|
-
};
|
|
3578
|
-
</script>
|
|
3579
|
-
<script src="../../../sorter.js"></script>
|
|
3580
|
-
<script src="../../../block-navigation.js"></script>
|
|
3581
|
-
</body>
|
|
3582
|
-
</html>
|
|
3583
|
-
|