@c15t/backend 1.2.0-canary.8 → 1.2.0
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/.turbo/turbo-build.log +53 -52
- package/CHANGELOG.md +7 -0
- package/dist/__tests__/server.test.d.ts +2 -0
- package/dist/__tests__/server.test.d.ts.map +1 -0
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts.cjs +708 -0
- package/dist/contracts.js +661 -0
- package/dist/core.cjs +98 -47
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +98 -47
- package/dist/middleware/openapi/config.d.ts +1 -1
- package/dist/middleware/openapi/config.d.ts.map +1 -1
- package/dist/pkgs/data-model/index.cjs +57 -39
- package/dist/pkgs/data-model/index.js +57 -39
- package/dist/pkgs/data-model/schema/index.cjs +57 -39
- package/dist/pkgs/data-model/schema/index.js +57 -39
- package/dist/router.cjs +3 -1
- package/dist/router.js +3 -1
- package/dist/schema/consent-policy/registry.d.ts.map +1 -1
- package/dist/schema/create-registry.d.ts.map +1 -1
- package/dist/schema/index.cjs +57 -39
- package/dist/schema/index.js +57 -39
- package/package.json +9 -4
- package/rslib.config.ts +1 -0
- package/src/__tests__/server.test.ts +96 -0
- package/src/contracts/index.ts +2 -0
- package/src/core.ts +34 -1
- package/src/middleware/cors/cors.test.ts +0 -1
- package/src/middleware/openapi/config.ts +10 -7
- package/src/schema/consent-policy/registry.ts +74 -51
- package/.turbo/turbo-fmt.log +0 -7
- package/.turbo/turbo-test.log +0 -426
- package/coverage/coverage-final.json +0 -88
- package/coverage/coverage-summary.json +0 -89
- package/coverage/html/backend/index.html +0 -116
- package/coverage/html/backend/rslib.config.ts.html +0 -415
- package/coverage/html/backend/src/contracts/consent/index.html +0 -161
- package/coverage/html/backend/src/contracts/consent/index.ts.html +0 -112
- package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +0 -550
- package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +0 -220
- package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +0 -463
- package/coverage/html/backend/src/contracts/index.html +0 -116
- package/coverage/html/backend/src/contracts/index.ts.html +0 -139
- package/coverage/html/backend/src/contracts/meta/index.html +0 -131
- package/coverage/html/backend/src/contracts/meta/index.ts.html +0 -100
- package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +0 -196
- package/coverage/html/backend/src/contracts/shared/index.html +0 -116
- package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +0 -175
- package/coverage/html/backend/src/core.ts.html +0 -1342
- package/coverage/html/backend/src/handlers/consent/index.html +0 -161
- package/coverage/html/backend/src/handlers/consent/index.ts.html +0 -112
- package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +0 -904
- package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +0 -532
- package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +0 -1000
- package/coverage/html/backend/src/handlers/meta/index.html +0 -131
- package/coverage/html/backend/src/handlers/meta/index.ts.html +0 -100
- package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +0 -226
- package/coverage/html/backend/src/index.html +0 -161
- package/coverage/html/backend/src/init.ts.html +0 -1018
- package/coverage/html/backend/src/middleware/cors/cors.ts.html +0 -661
- package/coverage/html/backend/src/middleware/cors/index.html +0 -146
- package/coverage/html/backend/src/middleware/cors/is-origin-trusted.ts.html +0 -463
- package/coverage/html/backend/src/middleware/cors/process-cors.ts.html +0 -358
- package/coverage/html/backend/src/middleware/openapi/config.ts.html +0 -160
- package/coverage/html/backend/src/middleware/openapi/handlers.ts.html +0 -481
- package/coverage/html/backend/src/middleware/openapi/index.html +0 -131
- package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +0 -116
- package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +0 -544
- package/coverage/html/backend/src/pkgs/api-router/index.html +0 -116
- package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +0 -334
- package/coverage/html/backend/src/pkgs/api-router/utils/index.html +0 -116
- package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +0 -361
- package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +0 -709
- package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +0 -256
- package/coverage/html/backend/src/pkgs/data-model/fields/index.html +0 -161
- package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +0 -136
- package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +0 -496
- package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +0 -349
- package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +0 -176
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +0 -358
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +0 -613
- package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +0 -538
- package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +0 -289
- package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +0 -289
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +0 -2203
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +0 -116
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +0 -116
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +0 -670
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +0 -131
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +0 -3634
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +0 -116
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +0 -1417
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +0 -116
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +0 -2071
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +0 -116
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +0 -1834
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +0 -316
- package/coverage/html/backend/src/pkgs/db-adapters/index.html +0 -131
- package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +0 -238
- package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +0 -343
- package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +0 -217
- package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +0 -146
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +0 -280
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +0 -289
- package/coverage/html/backend/src/pkgs/migrations/index.html +0 -176
- package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +0 -595
- package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +0 -301
- package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +0 -694
- package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +0 -817
- package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +0 -976
- package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +0 -703
- package/coverage/html/backend/src/pkgs/results/core/index.html +0 -146
- package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +0 -280
- package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +0 -271
- package/coverage/html/backend/src/pkgs/results/index.html +0 -131
- package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +0 -496
- package/coverage/html/backend/src/pkgs/results/results/index.html +0 -131
- package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +0 -628
- package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +0 -1234
- package/coverage/html/backend/src/pkgs/utils/env.ts.html +0 -337
- package/coverage/html/backend/src/pkgs/utils/index.html +0 -146
- package/coverage/html/backend/src/pkgs/utils/logger.ts.html +0 -199
- package/coverage/html/backend/src/pkgs/utils/url.ts.html +0 -400
- package/coverage/html/backend/src/router.ts.html +0 -109
- package/coverage/html/backend/src/schema/audit-log/index.html +0 -146
- package/coverage/html/backend/src/schema/audit-log/registry.ts.html +0 -436
- package/coverage/html/backend/src/schema/audit-log/schema.ts.html +0 -223
- package/coverage/html/backend/src/schema/audit-log/table.ts.html +0 -640
- package/coverage/html/backend/src/schema/consent/index.html +0 -146
- package/coverage/html/backend/src/schema/consent/registry.ts.html +0 -616
- package/coverage/html/backend/src/schema/consent/schema.ts.html +0 -238
- package/coverage/html/backend/src/schema/consent/table.ts.html +0 -748
- package/coverage/html/backend/src/schema/consent-policy/index.html +0 -146
- package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +0 -1063
- package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +0 -265
- package/coverage/html/backend/src/schema/consent-policy/table.ts.html +0 -535
- package/coverage/html/backend/src/schema/consent-purpose/index.html +0 -146
- package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +0 -589
- package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +0 -259
- package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +0 -547
- package/coverage/html/backend/src/schema/consent-record/index.html +0 -131
- package/coverage/html/backend/src/schema/consent-record/schema.ts.html +0 -211
- package/coverage/html/backend/src/schema/consent-record/table.ts.html +0 -457
- package/coverage/html/backend/src/schema/create-registry.ts.html +0 -148
- package/coverage/html/backend/src/schema/definition.ts.html +0 -685
- package/coverage/html/backend/src/schema/domain/index.html +0 -146
- package/coverage/html/backend/src/schema/domain/registry.ts.html +0 -973
- package/coverage/html/backend/src/schema/domain/schema.ts.html +0 -214
- package/coverage/html/backend/src/schema/domain/table.ts.html +0 -496
- package/coverage/html/backend/src/schema/index.html +0 -146
- package/coverage/html/backend/src/schema/schemas.ts.html +0 -166
- package/coverage/html/backend/src/schema/subject/index.html +0 -146
- package/coverage/html/backend/src/schema/subject/registry.ts.html +0 -973
- package/coverage/html/backend/src/schema/subject/schema.ts.html +0 -208
- package/coverage/html/backend/src/schema/subject/table.ts.html +0 -499
- package/coverage/html/backend/src/server.ts.html +0 -463
- package/coverage/html/backend/src/testing/contract-testing.ts.html +0 -1396
- package/coverage/html/backend/src/testing/index.html +0 -116
- package/coverage/html/base.css +0 -224
- package/coverage/html/block-navigation.js +0 -87
- package/coverage/html/favicon.png +0 -0
- package/coverage/html/index.html +0 -656
- package/coverage/html/prettify.css +0 -1
- package/coverage/html/prettify.js +0 -2
- package/coverage/html/sort-arrow-sprite.png +0 -0
- package/coverage/html/sorter.js +0 -196
package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html
DELETED
|
@@ -1,2203 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.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">backend/src/pkgs/db-adapters/adapters/drizzle-adapter</a> drizzle-adapter.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">1.19% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>2/167</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/111</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/26</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">1.22% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>2/163</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
818
|
-
<span class="cline-any cline-yes">3x</span>
|
|
819
|
-
<span class="cline-any cline-neutral"> </span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-no"> </span>
|
|
835
|
-
<span class="cline-any cline-no"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-no"> </span>
|
|
838
|
-
<span class="cline-any cline-no"> </span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-no"> </span>
|
|
851
|
-
<span class="cline-any cline-no"> </span>
|
|
852
|
-
<span class="cline-any cline-no"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-neutral"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-no"> </span>
|
|
879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-no"> </span>
|
|
889
|
-
<span class="cline-any cline-no"> </span>
|
|
890
|
-
<span class="cline-any cline-no"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-no"> </span>
|
|
894
|
-
<span class="cline-any cline-no"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-no"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-no"> </span>
|
|
915
|
-
<span class="cline-any cline-no"> </span>
|
|
916
|
-
<span class="cline-any cline-no"> </span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-no"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-no"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-no"> </span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-no"> </span>
|
|
941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-neutral"> </span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-neutral"> </span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-no"> </span>
|
|
955
|
-
<span class="cline-any cline-neutral"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-no"> </span>
|
|
958
|
-
<span class="cline-any cline-no"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-no"> </span>
|
|
962
|
-
<span class="cline-any cline-no"> </span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-no"> </span>
|
|
966
|
-
<span class="cline-any cline-no"> </span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-no"> </span>
|
|
970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-no"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
974
|
-
<span class="cline-any cline-no"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-no"> </span>
|
|
977
|
-
<span class="cline-any cline-no"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-no"> </span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-no"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-no"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-no"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-no"> </span>
|
|
1006
|
-
<span class="cline-any cline-no"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-no"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-no"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
-
<span class="cline-any cline-no"> </span>
|
|
1016
|
-
<span class="cline-any cline-no"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-no"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-no"> </span>
|
|
1043
|
-
<span class="cline-any cline-no"> </span>
|
|
1044
|
-
<span class="cline-any cline-no"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-no"> </span>
|
|
1047
|
-
<span class="cline-any cline-no"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-no"> </span>
|
|
1073
|
-
<span class="cline-any cline-no"> </span>
|
|
1074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-no"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-no"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-no"> </span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-no"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-no"> </span>
|
|
1091
|
-
<span class="cline-any cline-no"> </span>
|
|
1092
|
-
<span class="cline-any cline-no"> </span>
|
|
1093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-no"> </span>
|
|
1096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1114
|
-
<span class="cline-any cline-no"> </span>
|
|
1115
|
-
<span class="cline-any cline-no"> </span>
|
|
1116
|
-
<span class="cline-any cline-no"> </span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
-
<span class="cline-any cline-no"> </span>
|
|
1120
|
-
<span class="cline-any cline-no"> </span>
|
|
1121
|
-
<span class="cline-any cline-no"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-no"> </span>
|
|
1124
|
-
<span class="cline-any cline-no"> </span>
|
|
1125
|
-
<span class="cline-any cline-no"> </span>
|
|
1126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
-
<span class="cline-any cline-no"> </span>
|
|
1130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-no"> </span>
|
|
1133
|
-
<span class="cline-any cline-no"> </span>
|
|
1134
|
-
<span class="cline-any cline-no"> </span>
|
|
1135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
-
<span class="cline-any cline-no"> </span>
|
|
1139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1141
|
-
<span class="cline-any cline-no"> </span>
|
|
1142
|
-
<span class="cline-any cline-no"> </span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-no"> </span>
|
|
1147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
-
<span class="cline-any cline-no"> </span>
|
|
1218
|
-
<span class="cline-any cline-no"> </span>
|
|
1219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
-
<span class="cline-any cline-no"> </span>
|
|
1227
|
-
<span class="cline-any cline-no"> </span>
|
|
1228
|
-
<span class="cline-any cline-no"> </span>
|
|
1229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1233
|
-
<span class="cline-any cline-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-yes">3x</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-no"> </span>
|
|
1303
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1314
|
-
<span class="cline-any cline-no"> </span>
|
|
1315
|
-
<span class="cline-any cline-no"> </span>
|
|
1316
|
-
<span class="cline-any cline-no"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-no"> </span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-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-no"> </span>
|
|
1330
|
-
<span class="cline-any cline-no"> </span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-no"> </span>
|
|
1333
|
-
<span class="cline-any cline-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-no"> </span>
|
|
1338
|
-
<span class="cline-any cline-no"> </span>
|
|
1339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1351
|
-
<span class="cline-any cline-no"> </span>
|
|
1352
|
-
<span class="cline-any cline-no"> </span>
|
|
1353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1361
|
-
<span class="cline-any cline-no"> </span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-no"> </span>
|
|
1364
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1375
|
-
<span class="cline-any cline-no"> </span>
|
|
1376
|
-
<span class="cline-any cline-no"> </span>
|
|
1377
|
-
<span class="cline-any cline-no"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1392
|
-
<span class="cline-any cline-no"> </span>
|
|
1393
|
-
<span class="cline-any cline-no"> </span>
|
|
1394
|
-
<span class="cline-any cline-no"> </span>
|
|
1395
|
-
<span class="cline-any cline-no"> </span>
|
|
1396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
-
<span class="cline-any cline-no"> </span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
-
<span class="cline-any cline-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-no"> </span>
|
|
1411
|
-
<span class="cline-any cline-no"> </span>
|
|
1412
|
-
<span class="cline-any cline-no"> </span>
|
|
1413
|
-
<span class="cline-any cline-no"> </span>
|
|
1414
|
-
<span class="cline-any cline-no"> </span>
|
|
1415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1418
|
-
<span class="cline-any cline-no"> </span>
|
|
1419
|
-
<span class="cline-any cline-no"> </span>
|
|
1420
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1421
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
-
<span class="cline-any cline-no"> </span>
|
|
1429
|
-
<span class="cline-any cline-no"> </span>
|
|
1430
|
-
<span class="cline-any cline-no"> </span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-no"> </span>
|
|
1433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1442
|
-
<span class="cline-any cline-no"> </span>
|
|
1443
|
-
<span class="cline-any cline-no"> </span>
|
|
1444
|
-
<span class="cline-any cline-no"> </span>
|
|
1445
|
-
<span class="cline-any cline-no"> </span>
|
|
1446
|
-
<span class="cline-any cline-no"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
-
<span class="cline-any cline-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-no"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-no"> </span>
|
|
1465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">//@ts-nocheck
|
|
1479
|
-
|
|
1480
|
-
import {
|
|
1481
|
-
type SQL,
|
|
1482
|
-
and,
|
|
1483
|
-
asc,
|
|
1484
|
-
count,
|
|
1485
|
-
desc,
|
|
1486
|
-
eq,
|
|
1487
|
-
inArray,
|
|
1488
|
-
like,
|
|
1489
|
-
or,
|
|
1490
|
-
} from 'drizzle-orm';
|
|
1491
|
-
import { type EntityName, generateId } from '~/pkgs/data-model';
|
|
1492
|
-
import { DoubleTieError, ERROR_CODES } from '~/pkgs/results';
|
|
1493
|
-
import type { Adapter, C15TOptions, Where } from '~/pkgs/types';
|
|
1494
|
-
import { getConsentTables } from '~/schema/definition';
|
|
1495
|
-
import { applyDefaultValue } from '../../utils';
|
|
1496
|
-
|
|
1497
|
-
/**
|
|
1498
|
-
* Database interface for Drizzle ORM integration
|
|
1499
|
-
*
|
|
1500
|
-
* This generic interface represents a Drizzle ORM database connection.
|
|
1501
|
-
* It allows the adapter to work with different Drizzle providers.
|
|
1502
|
-
*
|
|
1503
|
-
* @remarks
|
|
1504
|
-
* The interface uses an index signature to allow for dynamic access to
|
|
1505
|
-
* the database's properties and methods.
|
|
1506
|
-
*/
|
|
1507
|
-
export interface DB {
|
|
1508
|
-
[key: string]: unknown;
|
|
1509
|
-
}
|
|
1510
|
-
|
|
1511
|
-
/**
|
|
1512
|
-
* Creates a transformer for converting between c15t data models and Drizzle schema
|
|
1513
|
-
*
|
|
1514
|
-
* This function creates an object with utility methods for converting data between
|
|
1515
|
-
* the c15t internal representation and the Drizzle ORM schema representation.
|
|
1516
|
-
*
|
|
1517
|
-
* @internal This function is primarily used internally by the drizzleAdapter
|
|
1518
|
-
* @param db - The Drizzle database instance
|
|
1519
|
-
* @param config - Configuration options for the Drizzle adapter
|
|
1520
|
-
* @param options - c15t options
|
|
1521
|
-
* @returns An object containing entity transformation utilities
|
|
1522
|
-
* @throws {DoubleTieError} If the schema is not found or if a model or field doesn't exist
|
|
1523
|
-
*/
|
|
1524
|
-
const createEntityTransformer = <span class="fstat-no" title="function not covered" >(</span>
|
|
1525
|
-
db: DB,
|
|
1526
|
-
config: DrizzleAdapterConfig,
|
|
1527
|
-
options: C15TOptions
|
|
1528
|
-
) => {
|
|
1529
|
-
const schema = <span class="cstat-no" title="statement not covered" >getConsentTables(options);</span>
|
|
1530
|
-
|
|
1531
|
-
/**
|
|
1532
|
-
* Gets the field name in the database schema
|
|
1533
|
-
*
|
|
1534
|
-
* @internal
|
|
1535
|
-
* @param model - The model name
|
|
1536
|
-
* @param field - The field name in the c15t model
|
|
1537
|
-
* @returns The corresponding field name in the database schema
|
|
1538
|
-
*/
|
|
1539
|
-
function <span class="fstat-no" title="function not covered" >getField(m</span>odel: string, field: string) {
|
|
1540
|
-
<span class="cstat-no" title="statement not covered" > if (field === 'id') {</span>
|
|
1541
|
-
<span class="cstat-no" title="statement not covered" > return field;</span>
|
|
1542
|
-
}
|
|
1543
|
-
const f = <span class="cstat-no" title="statement not covered" >schema[model].fields[field];</span>
|
|
1544
|
-
<span class="cstat-no" title="statement not covered" > return f.fieldName || field;</span>
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
/**
|
|
1548
|
-
* Gets the schema model for a given entity name
|
|
1549
|
-
*
|
|
1550
|
-
* @internal
|
|
1551
|
-
* @param entityName - The entity name to get the schema for
|
|
1552
|
-
* @returns The schema model for the entity
|
|
1553
|
-
* @throws {DoubleTieError} If the schema is not found or the model doesn't exist in the schema
|
|
1554
|
-
*/
|
|
1555
|
-
function <span class="fstat-no" title="function not covered" >getSchema(e</span>ntityName: string) {
|
|
1556
|
-
const schema = <span class="cstat-no" title="statement not covered" >config.schema || db._.fullSchema;</span>
|
|
1557
|
-
<span class="cstat-no" title="statement not covered" > if (!schema) {</span>
|
|
1558
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1559
|
-
'The schema could not be found. Please ensure the schema is properly configured in the adapter.',
|
|
1560
|
-
{
|
|
1561
|
-
code: ERROR_CODES.DATABASE_CONNECTION_ERROR,
|
|
1562
|
-
status: 500,
|
|
1563
|
-
meta: {
|
|
1564
|
-
provider: config.provider,
|
|
1565
|
-
},
|
|
1566
|
-
}
|
|
1567
|
-
);
|
|
1568
|
-
}
|
|
1569
|
-
const model = <span class="cstat-no" title="statement not covered" >getEntityName(entityName);</span>
|
|
1570
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >schema[model];</span>
|
|
1571
|
-
<span class="cstat-no" title="statement not covered" > if (!schemaModel) {</span>
|
|
1572
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1573
|
-
`The model "${model}" does not exist in the schema. Please verify the model name and ensure it is defined in your schema.`,
|
|
1574
|
-
{
|
|
1575
|
-
code: ERROR_CODES.DATABASE_QUERY_ERROR,
|
|
1576
|
-
status: 404,
|
|
1577
|
-
meta: {
|
|
1578
|
-
model,
|
|
1579
|
-
availableModels: Object.keys(schema),
|
|
1580
|
-
},
|
|
1581
|
-
}
|
|
1582
|
-
);
|
|
1583
|
-
}
|
|
1584
|
-
<span class="cstat-no" title="statement not covered" > return schemaModel;</span>
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
/**
|
|
1588
|
-
* Converts a model name to its corresponding entity name in the database
|
|
1589
|
-
*
|
|
1590
|
-
* @internal
|
|
1591
|
-
* @param model - The model name to convert
|
|
1592
|
-
* @returns The database entity name
|
|
1593
|
-
*/
|
|
1594
|
-
const getEntityName = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(m</span>odel: string) => {</span>
|
|
1595
|
-
<span class="cstat-no" title="statement not covered" > if (schema[model].entityName !== model) {</span>
|
|
1596
|
-
<span class="cstat-no" title="statement not covered" > return schema[model].entityName;</span>
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
|
-
<span class="cstat-no" title="statement not covered" > if (config.usePlural) {</span>
|
|
1600
|
-
<span class="cstat-no" title="statement not covered" > return `${model}s`;</span>
|
|
1601
|
-
}
|
|
1602
|
-
|
|
1603
|
-
<span class="cstat-no" title="statement not covered" > return model;</span>
|
|
1604
|
-
};
|
|
1605
|
-
|
|
1606
|
-
/**
|
|
1607
|
-
* Converts c15t where clauses to Drizzle ORM conditions
|
|
1608
|
-
*
|
|
1609
|
-
* @internal
|
|
1610
|
-
* @typeParam EntityType - The type of entity being queried
|
|
1611
|
-
* @param where - Array of where conditions from c15t
|
|
1612
|
-
* @param model - The model name
|
|
1613
|
-
* @returns Array of Drizzle ORM conditions
|
|
1614
|
-
* @throws {DoubleTieError} If a field doesn't exist or if the operator value is invalid
|
|
1615
|
-
*/
|
|
1616
|
-
function <span class="fstat-no" title="function not covered" >convertWhereClause<EntityType extends EntityName>(</span>
|
|
1617
|
-
where: Where<EntityType>[],
|
|
1618
|
-
model: EntityType
|
|
1619
|
-
) {
|
|
1620
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
1621
|
-
<span class="cstat-no" title="statement not covered" > if (!where) {</span>
|
|
1622
|
-
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
1623
|
-
}
|
|
1624
|
-
<span class="cstat-no" title="statement not covered" > if (where.length === 1) {</span>
|
|
1625
|
-
const w = <span class="cstat-no" title="statement not covered" >where[0];</span>
|
|
1626
|
-
<span class="cstat-no" title="statement not covered" > if (!w) {</span>
|
|
1627
|
-
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
1628
|
-
}
|
|
1629
|
-
const field = <span class="cstat-no" title="statement not covered" >getField(model, w.field);</span>
|
|
1630
|
-
<span class="cstat-no" title="statement not covered" > if (!schemaModel[field]) {</span>
|
|
1631
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1632
|
-
`The field "${field}" does not exist in model "${model}". Please verify the field name and ensure it is defined in your schema.`,
|
|
1633
|
-
{
|
|
1634
|
-
code: ERROR_CODES.DATABASE_QUERY_ERROR,
|
|
1635
|
-
status: 404,
|
|
1636
|
-
meta: {
|
|
1637
|
-
model,
|
|
1638
|
-
field,
|
|
1639
|
-
availableFields: Object.keys(schemaModel),
|
|
1640
|
-
},
|
|
1641
|
-
}
|
|
1642
|
-
);
|
|
1643
|
-
}
|
|
1644
|
-
<span class="cstat-no" title="statement not covered" > if (w.operator === 'in') {</span>
|
|
1645
|
-
<span class="cstat-no" title="statement not covered" > if (!Array.isArray(w.value)) {</span>
|
|
1646
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1647
|
-
`The value for the field "${field}" must be an array when using the "in" operator.`,
|
|
1648
|
-
{
|
|
1649
|
-
code: ERROR_CODES.BAD_REQUEST,
|
|
1650
|
-
status: 400,
|
|
1651
|
-
meta: {
|
|
1652
|
-
field,
|
|
1653
|
-
operator: w.operator,
|
|
1654
|
-
expectedType: 'array',
|
|
1655
|
-
actualType: typeof w.value,
|
|
1656
|
-
},
|
|
1657
|
-
}
|
|
1658
|
-
);
|
|
1659
|
-
}
|
|
1660
|
-
<span class="cstat-no" title="statement not covered" > return [inArray(schemaModel[field], w.value)];</span>
|
|
1661
|
-
}
|
|
1662
|
-
|
|
1663
|
-
<span class="cstat-no" title="statement not covered" > if (w.operator === 'contains') {</span>
|
|
1664
|
-
<span class="cstat-no" title="statement not covered" > return [like(schemaModel[field], `%${w.value}%`)];</span>
|
|
1665
|
-
}
|
|
1666
|
-
|
|
1667
|
-
<span class="cstat-no" title="statement not covered" > if (w.operator === 'starts_with') {</span>
|
|
1668
|
-
<span class="cstat-no" title="statement not covered" > return [like(schemaModel[field], `${w.value}%`)];</span>
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
|
-
<span class="cstat-no" title="statement not covered" > if (w.operator === 'ends_with') {</span>
|
|
1672
|
-
<span class="cstat-no" title="statement not covered" > return [like(schemaModel[field], `%${w.value}`)];</span>
|
|
1673
|
-
}
|
|
1674
|
-
|
|
1675
|
-
<span class="cstat-no" title="statement not covered" > return [eq(schemaModel[field], w.value)];</span>
|
|
1676
|
-
}
|
|
1677
|
-
const andGroup = <span class="cstat-no" title="statement not covered" >where.filter(<span class="fstat-no" title="function not covered" >(w</span>) => <span class="cstat-no" title="statement not covered" >w.connector === 'AND' || !w.connector)</span>;</span>
|
|
1678
|
-
const orGroup = <span class="cstat-no" title="statement not covered" >where.filter(<span class="fstat-no" title="function not covered" >(w</span>) => <span class="cstat-no" title="statement not covered" >w.connector === 'OR')</span>;</span>
|
|
1679
|
-
|
|
1680
|
-
const andClause = <span class="cstat-no" title="statement not covered" >and(</span>
|
|
1681
|
-
...andGroup.map(<span class="fstat-no" title="function not covered" >(w</span>) => {
|
|
1682
|
-
const field = <span class="cstat-no" title="statement not covered" >getField(model, w.field);</span>
|
|
1683
|
-
<span class="cstat-no" title="statement not covered" > if (w.operator === 'in') {</span>
|
|
1684
|
-
<span class="cstat-no" title="statement not covered" > if (!Array.isArray(w.value)) {</span>
|
|
1685
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1686
|
-
`The value for the field "${field}" must be an array when using the "in" operator.`,
|
|
1687
|
-
{
|
|
1688
|
-
code: ERROR_CODES.BAD_REQUEST,
|
|
1689
|
-
status: 400,
|
|
1690
|
-
meta: {
|
|
1691
|
-
field,
|
|
1692
|
-
operator: w.operator,
|
|
1693
|
-
expectedType: 'array',
|
|
1694
|
-
actualType: typeof w.value,
|
|
1695
|
-
},
|
|
1696
|
-
}
|
|
1697
|
-
);
|
|
1698
|
-
}
|
|
1699
|
-
<span class="cstat-no" title="statement not covered" > return inArray(schemaModel[field], w.value);</span>
|
|
1700
|
-
}
|
|
1701
|
-
<span class="cstat-no" title="statement not covered" > return eq(schemaModel[field], w.value);</span>
|
|
1702
|
-
})
|
|
1703
|
-
);
|
|
1704
|
-
const orClause = <span class="cstat-no" title="statement not covered" >or(</span>
|
|
1705
|
-
...orGroup.map(<span class="fstat-no" title="function not covered" >(w</span>) => {
|
|
1706
|
-
const field = <span class="cstat-no" title="statement not covered" >getField(model, w.field);</span>
|
|
1707
|
-
<span class="cstat-no" title="statement not covered" > return eq(schemaModel[field], w.value);</span>
|
|
1708
|
-
})
|
|
1709
|
-
);
|
|
1710
|
-
|
|
1711
|
-
const clause: SQL<unknown>[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1712
|
-
<span class="cstat-no" title="statement not covered" > if (andGroup.length && andClause) {</span>
|
|
1713
|
-
<span class="cstat-no" title="statement not covered" > clause.push(andClause);</span>
|
|
1714
|
-
}
|
|
1715
|
-
<span class="cstat-no" title="statement not covered" > if (orGroup.length && orClause) {</span>
|
|
1716
|
-
<span class="cstat-no" title="statement not covered" > clause.push(orClause);</span>
|
|
1717
|
-
}
|
|
1718
|
-
<span class="cstat-no" title="statement not covered" > return clause;</span>
|
|
1719
|
-
}
|
|
1720
|
-
|
|
1721
|
-
const useDatabaseGeneratedId = <span class="cstat-no" title="statement not covered" >options?.advanced?.generateId === false;</span>
|
|
1722
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1723
|
-
getSchema,
|
|
1724
|
-
/**
|
|
1725
|
-
* Transforms input data from c15t format to Drizzle format
|
|
1726
|
-
*
|
|
1727
|
-
* @internal
|
|
1728
|
-
* @param data - The data to transform
|
|
1729
|
-
* @param model - The model name
|
|
1730
|
-
* @param action - Whether this is a create or update operation
|
|
1731
|
-
* @returns Transformed data for Drizzle ORM
|
|
1732
|
-
*/
|
|
1733
|
-
<span class="fstat-no" title="function not covered" > transformInput(</span>
|
|
1734
|
-
data: Record<string, unknown>,
|
|
1735
|
-
model: string,
|
|
1736
|
-
action: 'create' | 'update'
|
|
1737
|
-
) {
|
|
1738
|
-
const transformedData: Record<string, unknown> =
|
|
1739
|
-
<span class="cstat-no" title="statement not covered" > useDatabaseGeneratedId || action === 'update'</span>
|
|
1740
|
-
? {}
|
|
1741
|
-
: {
|
|
1742
|
-
id: options.advanced?.generateId
|
|
1743
|
-
? options.advanced.generateId({
|
|
1744
|
-
model,
|
|
1745
|
-
})
|
|
1746
|
-
: data.id || generateId(schema[model].entityPrefix),
|
|
1747
|
-
};
|
|
1748
|
-
const fields = <span class="cstat-no" title="statement not covered" >schema[model].fields;</span>
|
|
1749
|
-
<span class="cstat-no" title="statement not covered" > for (const field in fields) {</span>
|
|
1750
|
-
<span class="cstat-no" title="statement not covered" > if (Object.hasOwn(fields, field)) {</span>
|
|
1751
|
-
const value = <span class="cstat-no" title="statement not covered" >data[field];</span>
|
|
1752
|
-
<span class="cstat-no" title="statement not covered" > if (value === undefined && !fields[field].defaultValue) {</span>
|
|
1753
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1754
|
-
}
|
|
1755
|
-
<span class="cstat-no" title="statement not covered" > transformedData[fields[field].fieldName || field] = applyDefaultValue(</span>
|
|
1756
|
-
value,
|
|
1757
|
-
fields[field],
|
|
1758
|
-
action
|
|
1759
|
-
);
|
|
1760
|
-
}
|
|
1761
|
-
}
|
|
1762
|
-
<span class="cstat-no" title="statement not covered" > return transformedData;</span>
|
|
1763
|
-
},
|
|
1764
|
-
/**
|
|
1765
|
-
* Transforms output data from Drizzle format to c15t format
|
|
1766
|
-
*
|
|
1767
|
-
* @internal
|
|
1768
|
-
* @param data - The data to transform
|
|
1769
|
-
* @param model - The model name
|
|
1770
|
-
* @param select - Optional array of fields to select
|
|
1771
|
-
* @returns Transformed data for c15t or null if no data
|
|
1772
|
-
*/
|
|
1773
|
-
<span class="fstat-no" title="function not covered" > transformOutput(</span>
|
|
1774
|
-
data: Record<string, unknown>,
|
|
1775
|
-
model: string,
|
|
1776
|
-
select: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[]</span>
|
|
1777
|
-
) {
|
|
1778
|
-
<span class="cstat-no" title="statement not covered" > if (!data) {</span>
|
|
1779
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1780
|
-
}
|
|
1781
|
-
|
|
1782
|
-
let transformedData: Record<string, unknown> = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
1783
|
-
|
|
1784
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1785
|
-
(data.id || data._id) &&
|
|
1786
|
-
(select.length === 0 || select.includes('id'))
|
|
1787
|
-
) {
|
|
1788
|
-
<span class="cstat-no" title="statement not covered" > transformedData = { id: data.id };</span>
|
|
1789
|
-
}
|
|
1790
|
-
|
|
1791
|
-
const tableSchema = <span class="cstat-no" title="statement not covered" >schema[model].fields;</span>
|
|
1792
|
-
<span class="cstat-no" title="statement not covered" > for (const key in tableSchema) {</span>
|
|
1793
|
-
<span class="cstat-no" title="statement not covered" > if (select.length && !select.includes(key)) {</span>
|
|
1794
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1795
|
-
}
|
|
1796
|
-
const field = <span class="cstat-no" title="statement not covered" >tableSchema[key];</span>
|
|
1797
|
-
<span class="cstat-no" title="statement not covered" > if (field) {</span>
|
|
1798
|
-
<span class="cstat-no" title="statement not covered" > transformedData[key] = data[field.fieldName || key];</span>
|
|
1799
|
-
}
|
|
1800
|
-
}
|
|
1801
|
-
<span class="cstat-no" title="statement not covered" > return transformedData;</span>
|
|
1802
|
-
},
|
|
1803
|
-
convertWhereClause,
|
|
1804
|
-
/**
|
|
1805
|
-
* Helper for returning data from operations in MySQL
|
|
1806
|
-
*
|
|
1807
|
-
* @internal
|
|
1808
|
-
* @param model - The model name
|
|
1809
|
-
* @param builder - The query builder
|
|
1810
|
-
* @param data - The data being operated on
|
|
1811
|
-
* @param where - Optional where conditions
|
|
1812
|
-
* @returns The result of the operation
|
|
1813
|
-
*/
|
|
1814
|
-
withReturning: <span class="fstat-no" title="function not covered" >async (</span>
|
|
1815
|
-
model: string,
|
|
1816
|
-
builder: unknown,
|
|
1817
|
-
data: Record<string, unknown>,
|
|
1818
|
-
where?: Where<string>[]
|
|
1819
|
-
) => {
|
|
1820
|
-
<span class="cstat-no" title="statement not covered" > if (config.provider !== 'mysql') {</span>
|
|
1821
|
-
const c = <span class="cstat-no" title="statement not covered" >await builder.returning();</span>
|
|
1822
|
-
<span class="cstat-no" title="statement not covered" > return c[0];</span>
|
|
1823
|
-
}
|
|
1824
|
-
|
|
1825
|
-
<span class="cstat-no" title="statement not covered" > await builder.execute();</span>
|
|
1826
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
1827
|
-
const builderVal = <span class="cstat-no" title="statement not covered" >builder.config?.values;</span>
|
|
1828
|
-
|
|
1829
|
-
<span class="cstat-no" title="statement not covered" > if (where?.length) {</span>
|
|
1830
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
1831
|
-
const res = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
1832
|
-
.select()
|
|
1833
|
-
.from(schemaModel)
|
|
1834
|
-
.where(...clause);
|
|
1835
|
-
<span class="cstat-no" title="statement not covered" > return res[0];</span>
|
|
1836
|
-
}
|
|
1837
|
-
|
|
1838
|
-
<span class="cstat-no" title="statement not covered" > if (builderVal) {</span>
|
|
1839
|
-
const tId = <span class="cstat-no" title="statement not covered" >builderVal[0]?.id.value;</span>
|
|
1840
|
-
const res = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
1841
|
-
.select()
|
|
1842
|
-
.from(schemaModel)
|
|
1843
|
-
.where(eq(schemaModel.id, tId));
|
|
1844
|
-
<span class="cstat-no" title="statement not covered" > return res[0];</span>
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
|
-
<span class="cstat-no" title="statement not covered" > if (data.id) {</span>
|
|
1848
|
-
const res = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
1849
|
-
.select()
|
|
1850
|
-
.from(schemaModel)
|
|
1851
|
-
.where(eq(schemaModel.id, data.id));
|
|
1852
|
-
<span class="cstat-no" title="statement not covered" > return res[0];</span>
|
|
1853
|
-
}
|
|
1854
|
-
},
|
|
1855
|
-
getField,
|
|
1856
|
-
getEntityName,
|
|
1857
|
-
};
|
|
1858
|
-
};
|
|
1859
|
-
|
|
1860
|
-
/**
|
|
1861
|
-
* Configuration options for the Drizzle adapter
|
|
1862
|
-
*
|
|
1863
|
-
* @example
|
|
1864
|
-
* ```typescript
|
|
1865
|
-
* // Basic Drizzle adapter configuration
|
|
1866
|
-
* const config: DrizzleAdapterConfig = {
|
|
1867
|
-
* provider: 'pg', // PostgreSQL
|
|
1868
|
-
* usePlural: true // Use plural table names
|
|
1869
|
-
* };
|
|
1870
|
-
*
|
|
1871
|
-
* // Configuration with explicit schema
|
|
1872
|
-
* const configWithSchema: DrizzleAdapterConfig = {
|
|
1873
|
-
* provider: 'mysql',
|
|
1874
|
-
* schema: {
|
|
1875
|
-
* subjects: subjects, // Drizzle schema objects
|
|
1876
|
-
* consents: consents,
|
|
1877
|
-
* purposes: purposes
|
|
1878
|
-
* }
|
|
1879
|
-
* };
|
|
1880
|
-
* ```
|
|
1881
|
-
*/
|
|
1882
|
-
export interface DrizzleAdapterConfig {
|
|
1883
|
-
/**
|
|
1884
|
-
* The schema object that defines the tables and fields
|
|
1885
|
-
*
|
|
1886
|
-
* @remarks
|
|
1887
|
-
* If not provided, the adapter will attempt to use `db._.fullSchema`
|
|
1888
|
-
*/
|
|
1889
|
-
schema?: Record<string, unknown>;
|
|
1890
|
-
|
|
1891
|
-
/**
|
|
1892
|
-
* The database provider
|
|
1893
|
-
*
|
|
1894
|
-
* @remarks
|
|
1895
|
-
* Different providers have different SQL dialects and features
|
|
1896
|
-
*/
|
|
1897
|
-
provider: 'pg' | 'mysql' | 'sqlite';
|
|
1898
|
-
|
|
1899
|
-
/**
|
|
1900
|
-
* If the table names in the schema are plural
|
|
1901
|
-
* set this to true. For example, if the schema
|
|
1902
|
-
* has an object with a key "subjects" instead of "subject"
|
|
1903
|
-
*
|
|
1904
|
-
* @default false
|
|
1905
|
-
*/
|
|
1906
|
-
usePlural?: boolean;
|
|
1907
|
-
}
|
|
1908
|
-
|
|
1909
|
-
/**
|
|
1910
|
-
* Validates that the schema contains all required fields
|
|
1911
|
-
*
|
|
1912
|
-
* @internal
|
|
1913
|
-
* @param schema - The schema to check
|
|
1914
|
-
* @param model - The model name
|
|
1915
|
-
* @param values - The values to validate against the schema
|
|
1916
|
-
* @throws {DoubleTieError} If the schema is missing or a field doesn't exist
|
|
1917
|
-
*/
|
|
1918
|
-
function <span class="fstat-no" title="function not covered" >checkMissingFields(</span>
|
|
1919
|
-
schema: Record<string, unknown>,
|
|
1920
|
-
model: string,
|
|
1921
|
-
values: Record<string, unknown>
|
|
1922
|
-
) {
|
|
1923
|
-
<span class="cstat-no" title="statement not covered" > if (!schema) {</span>
|
|
1924
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1925
|
-
'The schema could not be found. Please ensure the schema is properly configured in the adapter.',
|
|
1926
|
-
{
|
|
1927
|
-
code: ERROR_CODES.DATABASE_CONNECTION_ERROR,
|
|
1928
|
-
status: 500,
|
|
1929
|
-
}
|
|
1930
|
-
);
|
|
1931
|
-
}
|
|
1932
|
-
<span class="cstat-no" title="statement not covered" > for (const key in values) {</span>
|
|
1933
|
-
<span class="cstat-no" title="statement not covered" > if (!schema[key]) {</span>
|
|
1934
|
-
<span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
|
|
1935
|
-
`The field "${key}" does not exist in the "${model}" schema. Please update your drizzle schema or re-generate using "npx @c15t/cli generate".`
|
|
1936
|
-
);
|
|
1937
|
-
}
|
|
1938
|
-
}
|
|
1939
|
-
}
|
|
1940
|
-
|
|
1941
|
-
/**
|
|
1942
|
-
* Creates a c15t adapter for Drizzle ORM
|
|
1943
|
-
*
|
|
1944
|
-
* This factory function creates an adapter that allows c15t to use Drizzle ORM
|
|
1945
|
-
* as its database layer. It supports PostgreSQL, MySQL, and SQLite.
|
|
1946
|
-
*
|
|
1947
|
-
* @param db - The Drizzle database instance
|
|
1948
|
-
* @param config - Configuration options for the Drizzle adapter
|
|
1949
|
-
* @returns A c15t adapter factory function
|
|
1950
|
-
*
|
|
1951
|
-
* @example
|
|
1952
|
-
* ```typescript
|
|
1953
|
-
* import { drizzle } from 'drizzle-orm/postgres-js';
|
|
1954
|
-
* import postgres from 'postgres';
|
|
1955
|
-
* import { drizzleAdapter } from '@c15t/db/adapters/drizzle';
|
|
1956
|
-
* import * as schema from './schema';
|
|
1957
|
-
* import { c15tInstance } from '@c15t/backend';
|
|
1958
|
-
*
|
|
1959
|
-
* // Create a Postgres connection
|
|
1960
|
-
* const connection = postgres('postgresql://user:password@localhost:5432/db');
|
|
1961
|
-
* const db = drizzle(connection, { schema });
|
|
1962
|
-
*
|
|
1963
|
-
* // Create the c15t instance with Drizzle adapter
|
|
1964
|
-
* const c15t = c15tInstance({
|
|
1965
|
-
* storage: drizzleAdapter(db, {
|
|
1966
|
-
* provider: 'pg',
|
|
1967
|
-
* schema, // Pass your Drizzle schema
|
|
1968
|
-
* usePlural: true
|
|
1969
|
-
* }),
|
|
1970
|
-
* });
|
|
1971
|
-
*
|
|
1972
|
-
* // Use in your application
|
|
1973
|
-
* export default c15tInstance.handler;
|
|
1974
|
-
* ```
|
|
1975
|
-
*
|
|
1976
|
-
* @example
|
|
1977
|
-
* ```typescript
|
|
1978
|
-
* // Using with MySQL
|
|
1979
|
-
* import { drizzle } from 'drizzle-orm/mysql2';
|
|
1980
|
-
* import mysql from 'mysql2/promise';
|
|
1981
|
-
* import { c15tInstance } from '@c15t/backend';
|
|
1982
|
-
*
|
|
1983
|
-
* const connection = await mysql.createConnection({
|
|
1984
|
-
* host: 'localhost',
|
|
1985
|
-
* user: 'root',
|
|
1986
|
-
* database: 'c15t'
|
|
1987
|
-
* });
|
|
1988
|
-
*
|
|
1989
|
-
* const db = drizzle(connection);
|
|
1990
|
-
*
|
|
1991
|
-
* const c15t = c15tInstance({
|
|
1992
|
-
* storage: drizzleAdapter(db, {
|
|
1993
|
-
* provider: 'mysql'
|
|
1994
|
-
* }),
|
|
1995
|
-
* });
|
|
1996
|
-
* ```
|
|
1997
|
-
*/
|
|
1998
|
-
export const drizzleAdapter =
|
|
1999
|
-
<span class="fstat-no" title="function not covered" > (d</span>b: DB, config: DrizzleAdapterConfig) => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>ptions: C15TOptions) => {</span>
|
|
2000
|
-
const {
|
|
2001
|
-
transformInput,
|
|
2002
|
-
transformOutput,
|
|
2003
|
-
convertWhereClause,
|
|
2004
|
-
getSchema,
|
|
2005
|
-
withReturning,
|
|
2006
|
-
getField,
|
|
2007
|
-
getEntityName,
|
|
2008
|
-
} = <span class="cstat-no" title="statement not covered" >createEntityTransformer(db, config, options);</span>
|
|
2009
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
2010
|
-
id: 'drizzle',
|
|
2011
|
-
/**
|
|
2012
|
-
* Creates a new record in the database
|
|
2013
|
-
*
|
|
2014
|
-
* @param data - The data for the create operation
|
|
2015
|
-
* @returns The created record
|
|
2016
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2017
|
-
*/
|
|
2018
|
-
<span class="fstat-no" title="function not covered" > async c</span>reate(data) {
|
|
2019
|
-
const { model, data: values } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2020
|
-
const transformed = <span class="cstat-no" title="statement not covered" >transformInput(values, model, 'create');</span>
|
|
2021
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2022
|
-
<span class="cstat-no" title="statement not covered" > checkMissingFields(schemaModel, getEntityName(model), transformed);</span>
|
|
2023
|
-
const builder = <span class="cstat-no" title="statement not covered" >db.insert(schemaModel).values(transformed);</span>
|
|
2024
|
-
const returned = <span class="cstat-no" title="statement not covered" >await withReturning(model, builder, transformed);</span>
|
|
2025
|
-
<span class="cstat-no" title="statement not covered" > return transformOutput(returned, model);</span>
|
|
2026
|
-
},
|
|
2027
|
-
/**
|
|
2028
|
-
* Finds a single record matching the where conditions
|
|
2029
|
-
*
|
|
2030
|
-
* @param data - The data for the find operation
|
|
2031
|
-
* @returns The found record or null if not found
|
|
2032
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2033
|
-
*/
|
|
2034
|
-
<span class="fstat-no" title="function not covered" > async f</span>indOne(data) {
|
|
2035
|
-
const { model, where, select } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2036
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2037
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
2038
|
-
const res = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
2039
|
-
.select()
|
|
2040
|
-
.from(schemaModel)
|
|
2041
|
-
.where(...clause);
|
|
2042
|
-
|
|
2043
|
-
<span class="cstat-no" title="statement not covered" > if (!res.length) {</span>
|
|
2044
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
2045
|
-
}
|
|
2046
|
-
<span class="cstat-no" title="statement not covered" > return transformOutput(res[0], model, select);</span>
|
|
2047
|
-
},
|
|
2048
|
-
/**
|
|
2049
|
-
* Finds multiple records matching the where conditions
|
|
2050
|
-
*
|
|
2051
|
-
* @param data - The data for the find operation
|
|
2052
|
-
* @returns Array of matching records
|
|
2053
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2054
|
-
*/
|
|
2055
|
-
<span class="fstat-no" title="function not covered" > async f</span>indMany(data) {
|
|
2056
|
-
const { model, where, sortBy, limit, offset } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2057
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2058
|
-
const clause = <span class="cstat-no" title="statement not covered" >where ? convertWhereClause(where, model) : [];</span>
|
|
2059
|
-
|
|
2060
|
-
const sortFn = <span class="cstat-no" title="statement not covered" >sortBy?.direction === 'desc' ? desc : asc;</span>
|
|
2061
|
-
const builder = <span class="cstat-no" title="statement not covered" >db</span>
|
|
2062
|
-
.select()
|
|
2063
|
-
.from(schemaModel)
|
|
2064
|
-
.limit(limit || 100)
|
|
2065
|
-
.offset(offset || 0);
|
|
2066
|
-
<span class="cstat-no" title="statement not covered" > if (sortBy?.field) {</span>
|
|
2067
|
-
<span class="cstat-no" title="statement not covered" > builder.orderBy(sortFn(schemaModel[getField(model, sortBy?.field)]));</span>
|
|
2068
|
-
}
|
|
2069
|
-
const res = <span class="cstat-no" title="statement not covered" >await builder.where(...clause);</span>
|
|
2070
|
-
<span class="cstat-no" title="statement not covered" > return res.map(<span class="fstat-no" title="function not covered" >(r</span>) => <span class="cstat-no" title="statement not covered" >transformOutput(r, model))</span>;</span>
|
|
2071
|
-
},
|
|
2072
|
-
/**
|
|
2073
|
-
* Counts records matching the where conditions
|
|
2074
|
-
*
|
|
2075
|
-
* @param data - The data for the count operation
|
|
2076
|
-
* @returns The count of matching records
|
|
2077
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2078
|
-
*/
|
|
2079
|
-
<span class="fstat-no" title="function not covered" > async c</span>ount(data) {
|
|
2080
|
-
const { model, where } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2081
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2082
|
-
const clause = <span class="cstat-no" title="statement not covered" >where ? convertWhereClause(where, model) : [];</span>
|
|
2083
|
-
const res = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
2084
|
-
.select({ count: count() })
|
|
2085
|
-
.from(schemaModel)
|
|
2086
|
-
.where(...clause);
|
|
2087
|
-
<span class="cstat-no" title="statement not covered" > return res[0].count;</span>
|
|
2088
|
-
},
|
|
2089
|
-
/**
|
|
2090
|
-
* Updates a single record matching the where conditions
|
|
2091
|
-
*
|
|
2092
|
-
* @param data - The data for the update operation
|
|
2093
|
-
* @returns The updated record
|
|
2094
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2095
|
-
*/
|
|
2096
|
-
<span class="fstat-no" title="function not covered" > async u</span>pdate(data) {
|
|
2097
|
-
const { model, where, update } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2098
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2099
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
2100
|
-
const transformed = <span class="cstat-no" title="statement not covered" >transformInput(update, model, 'update');</span>
|
|
2101
|
-
const result = <span class="cstat-no" title="statement not covered" >await db</span>
|
|
2102
|
-
.update(schemaModel)
|
|
2103
|
-
.set(transformed)
|
|
2104
|
-
.where(clause)
|
|
2105
|
-
.returning();
|
|
2106
|
-
<span class="cstat-no" title="statement not covered" > return result.length ? transformOutput(result[0], model) : null;</span>
|
|
2107
|
-
},
|
|
2108
|
-
/**
|
|
2109
|
-
* Updates multiple records matching the where conditions
|
|
2110
|
-
*
|
|
2111
|
-
* @param data - The data for the update operation
|
|
2112
|
-
* @returns The number of records updated
|
|
2113
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2114
|
-
*/
|
|
2115
|
-
<span class="fstat-no" title="function not covered" > async u</span>pdateMany(data) {
|
|
2116
|
-
const { model, where, update: values } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2117
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2118
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
2119
|
-
const transformed = <span class="cstat-no" title="statement not covered" >transformInput(values, model, 'update');</span>
|
|
2120
|
-
const builder = <span class="cstat-no" title="statement not covered" >db</span>
|
|
2121
|
-
.update(schemaModel)
|
|
2122
|
-
.set(transformed)
|
|
2123
|
-
.where(...clause);
|
|
2124
|
-
const res = <span class="cstat-no" title="statement not covered" >await builder;</span>
|
|
2125
|
-
<span class="cstat-no" title="statement not covered" > return res ? res.changes : 0;</span>
|
|
2126
|
-
},
|
|
2127
|
-
/**
|
|
2128
|
-
* Deletes a single record matching the where conditions
|
|
2129
|
-
*
|
|
2130
|
-
* @param data - The data for the delete operation
|
|
2131
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2132
|
-
*/
|
|
2133
|
-
<span class="fstat-no" title="function not covered" > async d</span>elete(data) {
|
|
2134
|
-
const { model, where } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2135
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2136
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
2137
|
-
const builder = <span class="cstat-no" title="statement not covered" >db.delete(schemaModel).where(...clause);</span>
|
|
2138
|
-
<span class="cstat-no" title="statement not covered" > await builder;</span>
|
|
2139
|
-
},
|
|
2140
|
-
/**
|
|
2141
|
-
* Deletes multiple records matching the where conditions
|
|
2142
|
-
*
|
|
2143
|
-
* @param data - The data for the delete operation
|
|
2144
|
-
* @returns The number of records deleted
|
|
2145
|
-
* @throws {DoubleTieError} If the model or fields don't exist
|
|
2146
|
-
*/
|
|
2147
|
-
<span class="fstat-no" title="function not covered" > async d</span>eleteMany(data) {
|
|
2148
|
-
const { model, where } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2149
|
-
const schemaModel = <span class="cstat-no" title="statement not covered" >getSchema(model);</span>
|
|
2150
|
-
const clause = <span class="cstat-no" title="statement not covered" >convertWhereClause(where, model);</span>
|
|
2151
|
-
const result = <span class="cstat-no" title="statement not covered" >await db.delete(schemaModel).where(clause);</span>
|
|
2152
|
-
<span class="cstat-no" title="statement not covered" > return result ? (result.rowCount as number) : 0;</span>
|
|
2153
|
-
},
|
|
2154
|
-
/**
|
|
2155
|
-
* Executes a function within a database transaction
|
|
2156
|
-
*
|
|
2157
|
-
* This method wraps Drizzle's transaction functionality to provide a consistent interface
|
|
2158
|
-
* for executing multiple database operations atomically.
|
|
2159
|
-
*
|
|
2160
|
-
* @typeParam ResultType - The type of data returned by the transaction
|
|
2161
|
-
* @param data - The transaction data containing the callback function
|
|
2162
|
-
* @returns A promise that resolves with the result of the callback function
|
|
2163
|
-
* @throws {Error} If the transaction fails to complete
|
|
2164
|
-
*/
|
|
2165
|
-
<span class="fstat-no" title="function not covered" > async t</span>ransaction<ResultType>(data: {
|
|
2166
|
-
callback: (transactionAdapter: Adapter) => Promise<ResultType>;
|
|
2167
|
-
}): Promise<ResultType> {
|
|
2168
|
-
const { callback } = <span class="cstat-no" title="statement not covered" >data;</span>
|
|
2169
|
-
|
|
2170
|
-
<span class="cstat-no" title="statement not covered" > return await db.transaction(<span class="fstat-no" title="function not covered" >async (t</span>x) => {</span>
|
|
2171
|
-
// Create a new adapter instance that uses the transaction connection
|
|
2172
|
-
const transactionAdapter = <span class="cstat-no" title="statement not covered" >drizzleAdapter(</span>
|
|
2173
|
-
tx as unknown as DB,
|
|
2174
|
-
config
|
|
2175
|
-
)(options);
|
|
2176
|
-
|
|
2177
|
-
// Execute the callback function with the transaction adapter
|
|
2178
|
-
<span class="cstat-no" title="statement not covered" > return await callback(transactionAdapter);</span>
|
|
2179
|
-
});
|
|
2180
|
-
},
|
|
2181
|
-
options: config,
|
|
2182
|
-
} satisfies Adapter;
|
|
2183
|
-
};
|
|
2184
|
-
</pre></td></tr></table></pre>
|
|
2185
|
-
|
|
2186
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2187
|
-
</div><!-- /wrapper -->
|
|
2188
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2189
|
-
Code coverage generated by
|
|
2190
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2191
|
-
at 2025-05-08T20:18:30.062Z
|
|
2192
|
-
</div>
|
|
2193
|
-
<script src="../../../../../../prettify.js"></script>
|
|
2194
|
-
<script>
|
|
2195
|
-
window.onload = function () {
|
|
2196
|
-
prettyPrint();
|
|
2197
|
-
};
|
|
2198
|
-
</script>
|
|
2199
|
-
<script src="../../../../../../sorter.js"></script>
|
|
2200
|
-
<script src="../../../../../../block-navigation.js"></script>
|
|
2201
|
-
</body>
|
|
2202
|
-
</html>
|
|
2203
|
-
|