@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,1150 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/runner/message-processor.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/runner</a> message-processor.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">95.55% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>86/90</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">95.78% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>91/95</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">91.66% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>11/12</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">95.55% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>86/90</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
440
|
-
<span class="cline-any cline-yes">10x</span>
|
|
441
|
-
<span class="cline-any cline-yes">3x</span>
|
|
442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-yes">7x</span>
|
|
444
|
-
<span class="cline-any cline-yes">5x</span>
|
|
445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-yes">2x</span>
|
|
448
|
-
<span class="cline-any cline-yes">2x</span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-no"> </span>
|
|
451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-no"> </span>
|
|
462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-yes">280x</span>
|
|
471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-yes">57x</span>
|
|
491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-yes">57x</span>
|
|
495
|
-
<span class="cline-any cline-yes">40x</span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-yes">57x</span>
|
|
499
|
-
<span class="cline-any cline-yes">34x</span>
|
|
500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-yes">57x</span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-yes">57x</span>
|
|
508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-yes">182x</span>
|
|
518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-yes">182x</span>
|
|
522
|
-
<span class="cline-any cline-yes">181x</span>
|
|
523
|
-
<span class="cline-any cline-neutral"> </span>
|
|
524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-yes">182x</span>
|
|
526
|
-
<span class="cline-any cline-yes">7x</span>
|
|
527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-yes">182x</span>
|
|
531
|
-
<span class="cline-any cline-yes">3x</span>
|
|
532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-yes">3x</span>
|
|
536
|
-
<span class="cline-any cline-yes">3x</span>
|
|
537
|
-
<span class="cline-any cline-yes">3x</span>
|
|
538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-yes">3x</span>
|
|
540
|
-
<span class="cline-any cline-yes">2x</span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-yes">182x</span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-yes">12x</span>
|
|
553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
554
|
-
<span class="cline-any cline-yes">12x</span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
559
|
-
<span class="cline-any cline-yes">12x</span>
|
|
560
|
-
<span class="cline-any cline-yes">5x</span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-yes">12x</span>
|
|
564
|
-
<span class="cline-any cline-yes">12x</span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-yes">12x</span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-yes">10x</span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-yes">10x</span>
|
|
579
|
-
<span class="cline-any cline-yes">5x</span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-yes">10x</span>
|
|
583
|
-
<span class="cline-any cline-yes">7x</span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-yes">10x</span>
|
|
587
|
-
<span class="cline-any cline-yes">9x</span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-yes">10x</span>
|
|
591
|
-
<span class="cline-any cline-yes">2x</span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-yes">10x</span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-yes">9x</span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-yes">9x</span>
|
|
607
|
-
<span class="cline-any cline-yes">6x</span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-yes">9x</span>
|
|
611
|
-
<span class="cline-any cline-yes">1x</span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-yes">9x</span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-yes">285x</span>
|
|
645
|
-
<span class="cline-any cline-yes">3x</span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-yes">282x</span>
|
|
656
|
-
<span class="cline-any cline-yes">2x</span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-yes">280x</span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-yes">280x</span>
|
|
669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-yes">10x</span>
|
|
671
|
-
<span class="cline-any cline-yes">10x</span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-yes">270x</span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-yes">57x</span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">182x</span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-yes">12x</span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-yes">10x</span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-yes">9x</span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">248x</span>
|
|
708
|
-
<span class="cline-any cline-yes">1x</span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-yes">247x</span>
|
|
713
|
-
<span class="cline-any cline-yes">5x</span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-yes">242x</span>
|
|
718
|
-
<span class="cline-any cline-yes">54x</span>
|
|
719
|
-
<span class="cline-any cline-yes">54x</span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-yes">3x</span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-yes">239x</span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-yes">10x</span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-yes">11x</span>
|
|
739
|
-
<span class="cline-any cline-yes">8x</span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-yes">3x</span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
756
|
-
<span class="cline-any cline-yes">260x</span>
|
|
757
|
-
<span class="cline-any cline-yes">5x</span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-yes">255x</span>
|
|
762
|
-
<span class="cline-any cline-yes">11x</span>
|
|
763
|
-
<span class="cline-any cline-yes">11x</span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-yes">244x</span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-yes">168x</span>
|
|
770
|
-
<span class="cline-any cline-yes">164x</span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-yes">80x</span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
777
|
-
* Message processor for transforming SDK messages to job output format
|
|
778
|
-
*
|
|
779
|
-
* Handles all Claude SDK message types and converts them to the format
|
|
780
|
-
* expected by the job output logging system. Includes robust handling
|
|
781
|
-
* of malformed or unexpected SDK responses.
|
|
782
|
-
*/
|
|
783
|
-
|
|
784
|
-
import type { SDKMessage, ProcessedMessage } from "./types.js";
|
|
785
|
-
import type { JobOutputInput } from "../state/index.js";
|
|
786
|
-
|
|
787
|
-
// =============================================================================
|
|
788
|
-
// Validation Helpers
|
|
789
|
-
// =============================================================================
|
|
790
|
-
|
|
791
|
-
/**
|
|
792
|
-
* Safely extract a string value from an unknown field
|
|
793
|
-
*/
|
|
794
|
-
function safeString(value: unknown): string | undefined {
|
|
795
|
-
if (typeof value === "string") {
|
|
796
|
-
return value;
|
|
797
|
-
}
|
|
798
|
-
if (value === null || value === undefined) {
|
|
799
|
-
return undefined;
|
|
800
|
-
}
|
|
801
|
-
// Convert other types to string for safety
|
|
802
|
-
try {
|
|
803
|
-
return String(value);
|
|
804
|
-
} catch {
|
|
805
|
-
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
/**
|
|
810
|
-
* Safely extract a boolean value from an unknown field
|
|
811
|
-
*/
|
|
812
|
-
function <span class="fstat-no" title="function not covered" >safeBoolean(v</span>alue: unknown): boolean | undefined {
|
|
813
|
-
<span class="cstat-no" title="statement not covered" > if (typeof value === "boolean") {</span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" > return value;</span>
|
|
815
|
-
}
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
/**
|
|
820
|
-
* Check if a value is a valid SDK message type
|
|
821
|
-
*/
|
|
822
|
-
function isValidMessageType(
|
|
823
|
-
type: unknown
|
|
824
|
-
): type is "system" | "assistant" | "tool_use" | "tool_result" | "error" {
|
|
825
|
-
return (
|
|
826
|
-
type === "system" ||
|
|
827
|
-
type === "assistant" ||
|
|
828
|
-
type === "tool_use" ||
|
|
829
|
-
type === "tool_result" ||
|
|
830
|
-
type === "error"
|
|
831
|
-
);
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
// =============================================================================
|
|
835
|
-
// Message Type Handlers
|
|
836
|
-
// =============================================================================
|
|
837
|
-
|
|
838
|
-
/**
|
|
839
|
-
* Process a system message from the SDK
|
|
840
|
-
*
|
|
841
|
-
* Session ID is specifically extracted from messages with subtype "init",
|
|
842
|
-
* as this is when the Claude SDK provides the session identifier.
|
|
843
|
-
*/
|
|
844
|
-
function processSystemMessage(message: SDKMessage): ProcessedMessage {
|
|
845
|
-
const output: JobOutputInput = {
|
|
846
|
-
type: "system",
|
|
847
|
-
};
|
|
848
|
-
|
|
849
|
-
if (message.content) {
|
|
850
|
-
output.content = message.content;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
if (message.subtype) {
|
|
854
|
-
output.subtype = message.subtype;
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
// Extract session ID specifically from init messages
|
|
858
|
-
// The Claude SDK provides session_id in the system message with subtype "init"
|
|
859
|
-
const sessionId =
|
|
860
|
-
message.subtype === "init" ? message.session_id : undefined;
|
|
861
|
-
|
|
862
|
-
return {
|
|
863
|
-
output,
|
|
864
|
-
sessionId,
|
|
865
|
-
};
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
/**
|
|
869
|
-
* Process an assistant message from the SDK
|
|
870
|
-
*/
|
|
871
|
-
function processAssistantMessage(message: SDKMessage): ProcessedMessage {
|
|
872
|
-
const output: JobOutputInput = {
|
|
873
|
-
type: "assistant",
|
|
874
|
-
};
|
|
875
|
-
|
|
876
|
-
if (message.content !== undefined) {
|
|
877
|
-
output.content = message.content;
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
if (message.partial !== undefined) {
|
|
881
|
-
output.partial = message.partial as boolean;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
// Handle usage statistics
|
|
885
|
-
if (message.usage) {
|
|
886
|
-
const usage = message.usage as {
|
|
887
|
-
input_tokens?: number;
|
|
888
|
-
output_tokens?: number;
|
|
889
|
-
};
|
|
890
|
-
output.usage = {};
|
|
891
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (usage.input_tokens !== undefined) {
|
|
892
|
-
output.usage.input_tokens = usage.input_tokens;
|
|
893
|
-
}
|
|
894
|
-
if (usage.output_tokens !== undefined) {
|
|
895
|
-
output.usage.output_tokens = usage.output_tokens;
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
return { output };
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
/**
|
|
903
|
-
* Process a tool use message from the SDK
|
|
904
|
-
*/
|
|
905
|
-
function processToolUseMessage(message: SDKMessage): ProcessedMessage {
|
|
906
|
-
// Tool name is required - try multiple possible field names
|
|
907
|
-
const toolName = message.tool_name ?? message.name ?? "unknown";
|
|
908
|
-
|
|
909
|
-
const output: JobOutputInput = {
|
|
910
|
-
type: "tool_use",
|
|
911
|
-
tool_name: toolName as string,
|
|
912
|
-
};
|
|
913
|
-
|
|
914
|
-
if (message.tool_use_id) {
|
|
915
|
-
output.tool_use_id = message.tool_use_id;
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (message.input !== undefined) {
|
|
919
|
-
output.input = message.input;
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
return { output };
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
/**
|
|
926
|
-
* Process a tool result message from the SDK
|
|
927
|
-
*/
|
|
928
|
-
function processToolResultMessage(message: SDKMessage): ProcessedMessage {
|
|
929
|
-
const output: JobOutputInput = {
|
|
930
|
-
type: "tool_result",
|
|
931
|
-
};
|
|
932
|
-
|
|
933
|
-
if (message.tool_use_id) {
|
|
934
|
-
output.tool_use_id = message.tool_use_id;
|
|
935
|
-
}
|
|
936
|
-
|
|
937
|
-
if (message.result !== undefined) {
|
|
938
|
-
output.result = message.result;
|
|
939
|
-
}
|
|
940
|
-
|
|
941
|
-
if (message.success !== undefined) {
|
|
942
|
-
output.success = message.success as boolean;
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
if (message.error !== undefined) {
|
|
946
|
-
output.error = message.error as string;
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
return { output };
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
/**
|
|
953
|
-
* Process an error message from the SDK
|
|
954
|
-
*/
|
|
955
|
-
function processErrorMessage(message: SDKMessage): ProcessedMessage {
|
|
956
|
-
const output: JobOutputInput = {
|
|
957
|
-
type: "error",
|
|
958
|
-
message: (message.message as string) ?? "Unknown error",
|
|
959
|
-
};
|
|
960
|
-
|
|
961
|
-
if (message.code) {
|
|
962
|
-
output.code = message.code;
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
if (message.stack) {
|
|
966
|
-
output.stack = message.stack as string;
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
return {
|
|
970
|
-
output,
|
|
971
|
-
isFinal: true,
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
// =============================================================================
|
|
976
|
-
// Main Processing Function
|
|
977
|
-
// =============================================================================
|
|
978
|
-
|
|
979
|
-
/**
|
|
980
|
-
* Process an SDK message into job output format
|
|
981
|
-
*
|
|
982
|
-
* Takes a message from the Claude Agent SDK and transforms it into
|
|
983
|
-
* the format expected by the job output logging system. This function
|
|
984
|
-
* handles malformed responses gracefully without crashing.
|
|
985
|
-
*
|
|
986
|
-
* @param message - The SDK message to process
|
|
987
|
-
* @returns Processed message with output and optional metadata
|
|
988
|
-
*
|
|
989
|
-
* @example
|
|
990
|
-
* ```typescript
|
|
991
|
-
* const sdkMessage = { type: "assistant", content: "Hello!" };
|
|
992
|
-
* const { output, sessionId } = processSDKMessage(sdkMessage);
|
|
993
|
-
* await appendJobOutput(jobsDir, jobId, output);
|
|
994
|
-
* ```
|
|
995
|
-
*/
|
|
996
|
-
export function processSDKMessage(message: SDKMessage): ProcessedMessage {
|
|
997
|
-
// Handle null/undefined messages - log as system warning, not error
|
|
998
|
-
// to avoid terminating execution due to malformed SDK responses
|
|
999
|
-
if (message === null || message === undefined) {
|
|
1000
|
-
return {
|
|
1001
|
-
output: {
|
|
1002
|
-
type: "system",
|
|
1003
|
-
content: "Received null or undefined SDK message",
|
|
1004
|
-
subtype: "malformed_message",
|
|
1005
|
-
},
|
|
1006
|
-
};
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
// Handle non-object messages - log as system warning
|
|
1010
|
-
if (typeof message !== "object") {
|
|
1011
|
-
return {
|
|
1012
|
-
output: {
|
|
1013
|
-
type: "system",
|
|
1014
|
-
content: `Expected object message, received ${typeof message}`,
|
|
1015
|
-
subtype: "malformed_message",
|
|
1016
|
-
},
|
|
1017
|
-
};
|
|
1018
|
-
}
|
|
1019
|
-
|
|
1020
|
-
// Validate message type
|
|
1021
|
-
const messageType = message.type;
|
|
1022
|
-
|
|
1023
|
-
if (!isValidMessageType(messageType)) {
|
|
1024
|
-
// Handle unknown or missing message types gracefully
|
|
1025
|
-
const unknownType = safeString(messageType) ?? "undefined";
|
|
1026
|
-
return {
|
|
1027
|
-
output: {
|
|
1028
|
-
type: "system",
|
|
1029
|
-
content: `Unknown message type: ${unknownType}`,
|
|
1030
|
-
subtype: "unknown_type",
|
|
1031
|
-
},
|
|
1032
|
-
};
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
// Process known message types
|
|
1036
|
-
switch (messageType) {
|
|
1037
|
-
case "system":
|
|
1038
|
-
return processSystemMessage(message);
|
|
1039
|
-
|
|
1040
|
-
case "assistant":
|
|
1041
|
-
return processAssistantMessage(message);
|
|
1042
|
-
|
|
1043
|
-
case "tool_use":
|
|
1044
|
-
return processToolUseMessage(message);
|
|
1045
|
-
|
|
1046
|
-
case "tool_result":
|
|
1047
|
-
return processToolResultMessage(message);
|
|
1048
|
-
|
|
1049
|
-
case "error":
|
|
1050
|
-
return processErrorMessage(message);
|
|
1051
|
-
}
|
|
1052
|
-
}
|
|
1053
|
-
|
|
1054
|
-
/**
|
|
1055
|
-
* Check if a message indicates the end of execution
|
|
1056
|
-
*
|
|
1057
|
-
* @param message - The SDK message to check
|
|
1058
|
-
* @returns true if this is a terminal message
|
|
1059
|
-
*/
|
|
1060
|
-
export function isTerminalMessage(message: SDKMessage): boolean {
|
|
1061
|
-
// Handle null/undefined/non-object messages - these are not terminal
|
|
1062
|
-
if (message === null || message === undefined || typeof message !== "object") {
|
|
1063
|
-
return false;
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
|
-
// Error messages are terminal
|
|
1067
|
-
if (message.type === "error") {
|
|
1068
|
-
return true;
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
// System messages with certain subtypes indicate completion
|
|
1072
|
-
if (message.type === "system") {
|
|
1073
|
-
const subtype = message.subtype as string | undefined;
|
|
1074
|
-
if (
|
|
1075
|
-
subtype === "end" ||
|
|
1076
|
-
subtype === "complete" ||
|
|
1077
|
-
subtype === "session_end"
|
|
1078
|
-
) {
|
|
1079
|
-
return true;
|
|
1080
|
-
}
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
|
-
return false;
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
/** Maximum summary length in characters */
|
|
1087
|
-
const MAX_SUMMARY_LENGTH = 500;
|
|
1088
|
-
|
|
1089
|
-
/**
|
|
1090
|
-
* Truncate a string to maximum length, adding ellipsis if truncated
|
|
1091
|
-
*/
|
|
1092
|
-
function truncateSummary(text: string): string {
|
|
1093
|
-
if (text.length <= MAX_SUMMARY_LENGTH) {
|
|
1094
|
-
return text;
|
|
1095
|
-
}
|
|
1096
|
-
return text.slice(0, MAX_SUMMARY_LENGTH - 3) + "...";
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
/**
|
|
1100
|
-
* Extract the final summary from a message if present
|
|
1101
|
-
*
|
|
1102
|
-
* Looks for summaries in the following order:
|
|
1103
|
-
* 1. Explicit `summary` field on the message (truncated to 500 chars)
|
|
1104
|
-
* 2. Short assistant message content (≤500 chars, non-partial)
|
|
1105
|
-
*
|
|
1106
|
-
* @param message - The SDK message to extract summary from
|
|
1107
|
-
* @returns Summary string if present, undefined otherwise
|
|
1108
|
-
*/
|
|
1109
|
-
export function extractSummary(message: SDKMessage): string | undefined {
|
|
1110
|
-
// Handle null/undefined/non-object messages
|
|
1111
|
-
if (message === null || message === undefined || typeof message !== "object") {
|
|
1112
|
-
return undefined;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
// Check for explicit summary field (truncate if too long)
|
|
1116
|
-
if (message.summary) {
|
|
1117
|
-
const summaryStr = String(message.summary);
|
|
1118
|
-
return truncateSummary(summaryStr);
|
|
1119
|
-
}
|
|
1120
|
-
|
|
1121
|
-
// For assistant messages, use content as potential summary
|
|
1122
|
-
if (message.type === "assistant" && message.content && !message.partial) {
|
|
1123
|
-
// Only use if it looks like a conclusion (short enough)
|
|
1124
|
-
if (message.content.length <= MAX_SUMMARY_LENGTH) {
|
|
1125
|
-
return message.content;
|
|
1126
|
-
}
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
|
-
return undefined;
|
|
1130
|
-
}
|
|
1131
|
-
</pre></td></tr></table></pre>
|
|
1132
|
-
|
|
1133
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1134
|
-
</div><!-- /wrapper -->
|
|
1135
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1136
|
-
Code coverage generated by
|
|
1137
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1138
|
-
at 2026-01-20T17:39:02.193Z
|
|
1139
|
-
</div>
|
|
1140
|
-
<script src="../../prettify.js"></script>
|
|
1141
|
-
<script>
|
|
1142
|
-
window.onload = function () {
|
|
1143
|
-
prettyPrint();
|
|
1144
|
-
};
|
|
1145
|
-
</script>
|
|
1146
|
-
<script src="../../sorter.js"></script>
|
|
1147
|
-
<script src="../../block-navigation.js"></script>
|
|
1148
|
-
</body>
|
|
1149
|
-
</html>
|
|
1150
|
-
|