apostrophe 2.221.0 → 2.221.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/modules/apostrophe-caches/index.js +23 -1
- package/lib/modules/apostrophe-soft-redirects/index.js +21 -14
- package/package.json +1 -1
- package/test/caches.js +29 -0
- package/test/soft-redirects.js +16 -3
- package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
- package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
- package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
- package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
- package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
- package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
- package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
- package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
- package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
- package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/a3/defaults.js.html +0 -253
- package/coverage/a3/index.html +0 -131
- package/coverage/a3/index.js.html +0 -2338
- package/coverage/a3/lib/escape-host.js.html +0 -109
- package/coverage/a3/lib/index.html +0 -176
- package/coverage/a3/lib/mongodb-connect.js.html +0 -250
- package/coverage/a3/lib/moog-require.js.html +0 -790
- package/coverage/a3/lib/moog.js.html +0 -1711
- package/coverage/a3/lib/opentelemetry.js.html +0 -517
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +0 -931
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +0 -115
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +0 -1105
- package/coverage/a3/modules/@apostrophecms/archive-page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +0 -97
- package/coverage/a3/modules/@apostrophecms/area/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/area/index.js.html +0 -2104
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +0 -469
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +0 -286
- package/coverage/a3/modules/@apostrophecms/asset/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/index.js.html +0 -3982
- package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +0 -346
- package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +0 -289
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +0 -148
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +0 -184
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +0 -238
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +0 -958
- package/coverage/a3/modules/@apostrophecms/attachment/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +0 -3676
- package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +0 -205
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +0 -328
- package/coverage/a3/modules/@apostrophecms/busy/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/busy/index.js.html +0 -145
- package/coverage/a3/modules/@apostrophecms/cache/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/cache/index.js.html +0 -424
- package/coverage/a3/modules/@apostrophecms/db/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/db/index.js.html +0 -640
- package/coverage/a3/modules/@apostrophecms/doc/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc/index.js.html +0 -3937
- package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +0 -622
- package/coverage/a3/modules/@apostrophecms/doc-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +0 -8638
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +0 -319
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/email/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/email/index.js.html +0 -301
- package/coverage/a3/modules/@apostrophecms/error/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/error/index.js.html +0 -202
- package/coverage/a3/modules/@apostrophecms/express/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/express/index.js.html +0 -2116
- package/coverage/a3/modules/@apostrophecms/file/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/file/index.js.html +0 -367
- package/coverage/a3/modules/@apostrophecms/file-tag/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +0 -127
- package/coverage/a3/modules/@apostrophecms/global/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/global/index.js.html +0 -535
- package/coverage/a3/modules/@apostrophecms/home-page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +0 -94
- package/coverage/a3/modules/@apostrophecms/html-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +0 -271
- package/coverage/a3/modules/@apostrophecms/http/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/http/index.js.html +0 -976
- package/coverage/a3/modules/@apostrophecms/i18n/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +0 -2083
- package/coverage/a3/modules/@apostrophecms/image/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image/index.js.html +0 -1486
- package/coverage/a3/modules/@apostrophecms/image-tag/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +0 -127
- package/coverage/a3/modules/@apostrophecms/image-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +0 -145
- package/coverage/a3/modules/@apostrophecms/job/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/job/index.js.html +0 -1321
- package/coverage/a3/modules/@apostrophecms/launder/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/launder/index.js.html +0 -124
- package/coverage/a3/modules/@apostrophecms/lock/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/lock/index.js.html +0 -676
- package/coverage/a3/modules/@apostrophecms/login/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/login/index.js.html +0 -2617
- package/coverage/a3/modules/@apostrophecms/migration/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/migration/index.js.html +0 -970
- package/coverage/a3/modules/@apostrophecms/modal/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/modal/index.js.html +0 -193
- package/coverage/a3/modules/@apostrophecms/module/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/module/index.js.html +0 -2500
- package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +0 -547
- package/coverage/a3/modules/@apostrophecms/module/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/notification/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/notification/index.js.html +0 -1315
- package/coverage/a3/modules/@apostrophecms/oembed/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +0 -781
- package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +0 -161
- package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +0 -178
- package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +0 -124
- package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +0 -256
- package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +0 -322
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +0 -268
- package/coverage/a3/modules/@apostrophecms/page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page/index.js.html +0 -6955
- package/coverage/a3/modules/@apostrophecms/page/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +0 -568
- package/coverage/a3/modules/@apostrophecms/page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +0 -1501
- package/coverage/a3/modules/@apostrophecms/pager/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/pager/index.js.html +0 -232
- package/coverage/a3/modules/@apostrophecms/permission/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/permission/index.js.html +0 -1057
- package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +0 -160
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +0 -1051
- package/coverage/a3/modules/@apostrophecms/piece-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +0 -3103
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +0 -157
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +0 -1363
- package/coverage/a3/modules/@apostrophecms/schema/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/schema/index.js.html +0 -4603
- package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +0 -3502
- package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +0 -703
- package/coverage/a3/modules/@apostrophecms/search/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/search/index.js.html +0 -1222
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +0 -343
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +0 -595
- package/coverage/a3/modules/@apostrophecms/task/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/task/index.js.html +0 -1147
- package/coverage/a3/modules/@apostrophecms/template/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/template/index.js.html +0 -2731
- package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +0 -559
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +0 -310
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +0 -325
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +0 -146
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +0 -490
- package/coverage/a3/modules/@apostrophecms/template/lib/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +0 -658
- package/coverage/a3/modules/@apostrophecms/ui/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/ui/index.js.html +0 -181
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +0 -286
- package/coverage/a3/modules/@apostrophecms/url/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/url/index.js.html +0 -733
- package/coverage/a3/modules/@apostrophecms/user/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/user/index.js.html +0 -1684
- package/coverage/a3/modules/@apostrophecms/user/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +0 -157
- package/coverage/a3/modules/@apostrophecms/util/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/util/index.js.html +0 -3424
- package/coverage/a3/modules/@apostrophecms/util/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +0 -319
- package/coverage/a3/modules/@apostrophecms/video-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +0 -178
- package/coverage/a3/modules/@apostrophecms/widget-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +0 -1225
- package/coverage/a3/test-lib/index.html +0 -131
- package/coverage/a3/test-lib/test.js.html +0 -232
- package/coverage/a3/test-lib/util.js.html +0 -373
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -1256
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
|
@@ -1,3424 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for a3/modules/@apostrophecms/util/index.js</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">a3/modules/@apostrophecms/util</a> index.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">70.29% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>258/367</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">72.32% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>162/224</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">55.31% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>52/94</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">70.68% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>258/365</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 oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line medium'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
795
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
796
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
797
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
-
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
-
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
-
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
-
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
-
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
-
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
-
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
-
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
-
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
-
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
-
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
-
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
-
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
-
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
-
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
-
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
-
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
-
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
-
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
-
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
-
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
-
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
-
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
-
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
-
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
-
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
-
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
-
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
-
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
-
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
-
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
-
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
-
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
-
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
-
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
-
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
-
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
-
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
-
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
-
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
-
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
-
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
-
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
-
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
-
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
-
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
-
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
-
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
-
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
-
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
-
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
-
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
-
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
-
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
-
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
-
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
-
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
-
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
-
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
-
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
-
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
-
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
-
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
-
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
-
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
-
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
-
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
-
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
-
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
-
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
-
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
-
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
-
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
-
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
-
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
-
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
-
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
-
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
-
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
-
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
-
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
-
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
-
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
-
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
-
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
-
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
-
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
-
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
-
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
-
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
-
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
-
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
-
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
-
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
-
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
-
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
-
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
-
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
-
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
-
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
-
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
-
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
-
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
-
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
-
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
-
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
-
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
-
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
-
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
-
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
-
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
-
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
-
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
-
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
-
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
-
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
-
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
-
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
-
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
-
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
-
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
-
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
-
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
-
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
-
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
-
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
-
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
-
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
-
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
-
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
-
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
-
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
-
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
-
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
-
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
-
<a name='L1088'></a><a href='#L1088'>1088</a>
|
|
1154
|
-
<a name='L1089'></a><a href='#L1089'>1089</a>
|
|
1155
|
-
<a name='L1090'></a><a href='#L1090'>1090</a>
|
|
1156
|
-
<a name='L1091'></a><a href='#L1091'>1091</a>
|
|
1157
|
-
<a name='L1092'></a><a href='#L1092'>1092</a>
|
|
1158
|
-
<a name='L1093'></a><a href='#L1093'>1093</a>
|
|
1159
|
-
<a name='L1094'></a><a href='#L1094'>1094</a>
|
|
1160
|
-
<a name='L1095'></a><a href='#L1095'>1095</a>
|
|
1161
|
-
<a name='L1096'></a><a href='#L1096'>1096</a>
|
|
1162
|
-
<a name='L1097'></a><a href='#L1097'>1097</a>
|
|
1163
|
-
<a name='L1098'></a><a href='#L1098'>1098</a>
|
|
1164
|
-
<a name='L1099'></a><a href='#L1099'>1099</a>
|
|
1165
|
-
<a name='L1100'></a><a href='#L1100'>1100</a>
|
|
1166
|
-
<a name='L1101'></a><a href='#L1101'>1101</a>
|
|
1167
|
-
<a name='L1102'></a><a href='#L1102'>1102</a>
|
|
1168
|
-
<a name='L1103'></a><a href='#L1103'>1103</a>
|
|
1169
|
-
<a name='L1104'></a><a href='#L1104'>1104</a>
|
|
1170
|
-
<a name='L1105'></a><a href='#L1105'>1105</a>
|
|
1171
|
-
<a name='L1106'></a><a href='#L1106'>1106</a>
|
|
1172
|
-
<a name='L1107'></a><a href='#L1107'>1107</a>
|
|
1173
|
-
<a name='L1108'></a><a href='#L1108'>1108</a>
|
|
1174
|
-
<a name='L1109'></a><a href='#L1109'>1109</a>
|
|
1175
|
-
<a name='L1110'></a><a href='#L1110'>1110</a>
|
|
1176
|
-
<a name='L1111'></a><a href='#L1111'>1111</a>
|
|
1177
|
-
<a name='L1112'></a><a href='#L1112'>1112</a>
|
|
1178
|
-
<a name='L1113'></a><a href='#L1113'>1113</a>
|
|
1179
|
-
<a name='L1114'></a><a href='#L1114'>1114</a></td><td class="line-coverage quiet"><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-yes">90x</span>
|
|
1199
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1200
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1201
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1202
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1203
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1205
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1206
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1207
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1208
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1223
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1224
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1225
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
-
<span class="cline-any cline-yes">90x</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-yes">1813x</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-yes">3x</span>
|
|
1241
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1242
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1243
|
-
<span class="cline-any cline-no"> </span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1246
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1247
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1248
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1251
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1252
|
-
<span class="cline-any cline-yes">6x</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-yes">2x</span>
|
|
1263
|
-
<span class="cline-any cline-no"> </span>
|
|
1264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1266
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1267
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1268
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1269
|
-
<span class="cline-any cline-no"> </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-yes">2x</span>
|
|
1274
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1280
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1283
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1303
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1306
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1307
|
-
<span class="cline-any cline-no"> </span>
|
|
1308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1310
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1313
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1314
|
-
<span class="cline-any cline-yes">165x</span>
|
|
1315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
-
<span class="cline-any cline-yes">170x</span>
|
|
1317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1319
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1322
|
-
<span class="cline-any cline-no"> </span>
|
|
1323
|
-
<span class="cline-any cline-no"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-yes">335x</span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1333
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1334
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1335
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
-
<span class="cline-any cline-yes">465x</span>
|
|
1340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-yes">5016x</span>
|
|
1347
|
-
<span class="cline-any cline-yes">5016x</span>
|
|
1348
|
-
<span class="cline-any cline-yes">5016x</span>
|
|
1349
|
-
<span class="cline-any cline-yes">27179x</span>
|
|
1350
|
-
<span class="cline-any cline-yes">27179x</span>
|
|
1351
|
-
<span class="cline-any cline-yes">27179x</span>
|
|
1352
|
-
<span class="cline-any cline-yes">27179x</span>
|
|
1353
|
-
<span class="cline-any cline-yes">27179x</span>
|
|
1354
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1355
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
-
<span class="cline-any cline-yes">27169x</span>
|
|
1358
|
-
<span class="cline-any cline-yes">815x</span>
|
|
1359
|
-
<span class="cline-any cline-yes">815x</span>
|
|
1360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
-
<span class="cline-any cline-yes">815x</span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-yes">27169x</span>
|
|
1364
|
-
<span class="cline-any cline-yes">822x</span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
-
<span class="cline-any cline-yes">822x</span>
|
|
1368
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-yes">822x</span>
|
|
1371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
-
<span class="cline-any cline-yes">27169x</span>
|
|
1373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
-
<span class="cline-any cline-yes">5016x</span>
|
|
1375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1389
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1390
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1391
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1395
|
-
<span class="cline-any cline-no"> </span>
|
|
1396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1397
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1398
|
-
<span class="cline-any cline-yes">15x</span>
|
|
1399
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1400
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1408
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1412
|
-
<span class="cline-any cline-yes">1021x</span>
|
|
1413
|
-
<span class="cline-any cline-yes">1021x</span>
|
|
1414
|
-
<span class="cline-any cline-yes">1021x</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-yes">6280x</span>
|
|
1419
|
-
<span class="cline-any cline-yes">6280x</span>
|
|
1420
|
-
<span class="cline-any cline-yes">6280x</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-yes">8x</span>
|
|
1425
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1426
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1427
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1428
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1434
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1435
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1442
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-yes">7613x</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-neutral"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
-
<span class="cline-any cline-yes">7476x</span>
|
|
1466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
-
<span class="cline-any cline-no"> </span>
|
|
1480
|
-
<span class="cline-any cline-no"> </span>
|
|
1481
|
-
<span class="cline-any cline-no"> </span>
|
|
1482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
-
<span class="cline-any cline-no"> </span>
|
|
1484
|
-
<span class="cline-any cline-no"> </span>
|
|
1485
|
-
<span class="cline-any cline-no"> </span>
|
|
1486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1513
|
-
<span class="cline-any cline-yes">15120x</span>
|
|
1514
|
-
<span class="cline-any cline-yes">15120x</span>
|
|
1515
|
-
<span class="cline-any cline-yes">6006x</span>
|
|
1516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
-
<span class="cline-any cline-yes">9114x</span>
|
|
1518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1521
|
-
<span class="cline-any cline-yes">119122x</span>
|
|
1522
|
-
<span class="cline-any cline-yes">106034x</span>
|
|
1523
|
-
<span class="cline-any cline-yes">1352x</span>
|
|
1524
|
-
<span class="cline-any cline-yes">1350x</span>
|
|
1525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
-
<span class="cline-any cline-yes">117772x</span>
|
|
1529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1530
|
-
<span class="cline-any cline-yes">8201x</span>
|
|
1531
|
-
<span class="cline-any cline-yes">109571x</span>
|
|
1532
|
-
<span class="cline-any cline-yes">84592x</span>
|
|
1533
|
-
<span class="cline-any cline-yes">24979x</span>
|
|
1534
|
-
<span class="cline-any cline-yes">14215x</span>
|
|
1535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
-
<span class="cline-any cline-yes">10764x</span>
|
|
1537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1539
|
-
<span class="cline-any cline-yes">15120x</span>
|
|
1540
|
-
<span class="cline-any cline-yes">6006x</span>
|
|
1541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
-
<span class="cline-any cline-yes">9114x</span>
|
|
1543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
-
<span class="cline-any cline-yes">15120x</span>
|
|
1545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1558
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1559
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1562
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1563
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1564
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1565
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1566
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1568
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1571
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1572
|
-
<span class="cline-any cline-yes">66x</span>
|
|
1573
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1576
|
-
<span class="cline-any cline-yes">25x</span>
|
|
1577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1592
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1601
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1603
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1604
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1609
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1610
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1611
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1612
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1613
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1616
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1617
|
-
<span class="cline-any cline-yes">48x</span>
|
|
1618
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1619
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1621
|
-
<span class="cline-any cline-no"> </span>
|
|
1622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1634
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1635
|
-
<span class="cline-any cline-no"> </span>
|
|
1636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1638
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1639
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1640
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1642
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1643
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1644
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
-
<span class="cline-any cline-yes">525x</span>
|
|
1664
|
-
<span class="cline-any cline-yes">525x</span>
|
|
1665
|
-
<span class="cline-any cline-yes">2652x</span>
|
|
1666
|
-
<span class="cline-any cline-yes">599x</span>
|
|
1667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
-
<span class="cline-any cline-yes">2053x</span>
|
|
1669
|
-
<span class="cline-any cline-yes">2053x</span>
|
|
1670
|
-
<span class="cline-any cline-yes">517x</span>
|
|
1671
|
-
<span class="cline-any cline-yes">517x</span>
|
|
1672
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
-
<span class="cline-any cline-yes">503x</span>
|
|
1678
|
-
<span class="cline-any cline-yes">503x</span>
|
|
1679
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1699
|
-
<span class="cline-any cline-yes">234x</span>
|
|
1700
|
-
<span class="cline-any cline-no"> </span>
|
|
1701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1702
|
-
<span class="cline-any cline-yes">234x</span>
|
|
1703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1722
|
-
<span class="cline-any cline-no"> </span>
|
|
1723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1736
|
-
<span class="cline-any cline-yes">46x</span>
|
|
1737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1745
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1746
|
-
<span class="cline-any cline-no"> </span>
|
|
1747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1749
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
-
<span class="cline-any cline-yes">2598x</span>
|
|
1761
|
-
<span class="cline-any cline-yes">2598x</span>
|
|
1762
|
-
<span class="cline-any cline-yes">2598x</span>
|
|
1763
|
-
<span class="cline-any cline-yes">2586x</span>
|
|
1764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1765
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1766
|
-
<span class="cline-any cline-no"> </span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1769
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1770
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1771
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1772
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
-
<span class="cline-any cline-yes">19x</span>
|
|
1789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1816
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1817
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
-
<span class="cline-any cline-no"> </span>
|
|
1834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1838
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1839
|
-
<span class="cline-any cline-no"> </span>
|
|
1840
|
-
<span class="cline-any cline-no"> </span>
|
|
1841
|
-
<span class="cline-any cline-no"> </span>
|
|
1842
|
-
<span class="cline-any cline-no"> </span>
|
|
1843
|
-
<span class="cline-any cline-no"> </span>
|
|
1844
|
-
<span class="cline-any cline-no"> </span>
|
|
1845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1846
|
-
<span class="cline-any cline-no"> </span>
|
|
1847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1856
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1857
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1858
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1859
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1860
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
-
<span class="cline-any cline-yes">20x</span>
|
|
1863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1873
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1874
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1875
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1876
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1879
|
-
<span class="cline-any cline-no"> </span>
|
|
1880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1884
|
-
<span class="cline-any cline-no"> </span>
|
|
1885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1904
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1905
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1906
|
-
<span class="cline-any cline-no"> </span>
|
|
1907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1909
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1910
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1911
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1912
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1914
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1917
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1921
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1922
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1923
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1925
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1926
|
-
<span class="cline-any cline-yes">14x</span>
|
|
1927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1934
|
-
<span class="cline-any cline-yes">709x</span>
|
|
1935
|
-
<span class="cline-any cline-yes">709x</span>
|
|
1936
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1945
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1950
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1955
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1956
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1958
|
-
<span class="cline-any cline-yes">706x</span>
|
|
1959
|
-
<span class="cline-any cline-yes">706x</span>
|
|
1960
|
-
<span class="cline-any cline-yes">706x</span>
|
|
1961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1973
|
-
<span class="cline-any cline-yes">131x</span>
|
|
1974
|
-
<span class="cline-any cline-yes">131x</span>
|
|
1975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1976
|
-
<span class="cline-any cline-yes">131x</span>
|
|
1977
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1979
|
-
<span class="cline-any cline-yes">131x</span>
|
|
1980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1984
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1992
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1999
|
-
<span class="cline-any cline-no"> </span>
|
|
2000
|
-
<span class="cline-any cline-no"> </span>
|
|
2001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2007
|
-
<span class="cline-any cline-no"> </span>
|
|
2008
|
-
<span class="cline-any cline-no"> </span>
|
|
2009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2013
|
-
<span class="cline-any cline-no"> </span>
|
|
2014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
-
<span class="cline-any cline-no"> </span>
|
|
2021
|
-
<span class="cline-any cline-no"> </span>
|
|
2022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2026
|
-
<span class="cline-any cline-no"> </span>
|
|
2027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2031
|
-
<span class="cline-any cline-no"> </span>
|
|
2032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2036
|
-
<span class="cline-any cline-no"> </span>
|
|
2037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2041
|
-
<span class="cline-any cline-no"> </span>
|
|
2042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2046
|
-
<span class="cline-any cline-no"> </span>
|
|
2047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2053
|
-
<span class="cline-any cline-no"> </span>
|
|
2054
|
-
<span class="cline-any cline-no"> </span>
|
|
2055
|
-
<span class="cline-any cline-no"> </span>
|
|
2056
|
-
<span class="cline-any cline-no"> </span>
|
|
2057
|
-
<span class="cline-any cline-no"> </span>
|
|
2058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2060
|
-
<span class="cline-any cline-no"> </span>
|
|
2061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
-
<span class="cline-any cline-no"> </span>
|
|
2063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2074
|
-
<span class="cline-any cline-no"> </span>
|
|
2075
|
-
<span class="cline-any cline-no"> </span>
|
|
2076
|
-
<span class="cline-any cline-no"> </span>
|
|
2077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
-
<span class="cline-any cline-no"> </span>
|
|
2080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2085
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2086
|
-
<span class="cline-any cline-no"> </span>
|
|
2087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2093
|
-
<span class="cline-any cline-no"> </span>
|
|
2094
|
-
<span class="cline-any cline-no"> </span>
|
|
2095
|
-
<span class="cline-any cline-no"> </span>
|
|
2096
|
-
<span class="cline-any cline-no"> </span>
|
|
2097
|
-
<span class="cline-any cline-no"> </span>
|
|
2098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2101
|
-
<span class="cline-any cline-no"> </span>
|
|
2102
|
-
<span class="cline-any cline-no"> </span>
|
|
2103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2105
|
-
<span class="cline-any cline-no"> </span>
|
|
2106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2112
|
-
<span class="cline-any cline-no"> </span>
|
|
2113
|
-
<span class="cline-any cline-no"> </span>
|
|
2114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2121
|
-
<span class="cline-any cline-no"> </span>
|
|
2122
|
-
<span class="cline-any cline-no"> </span>
|
|
2123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
-
<span class="cline-any cline-no"> </span>
|
|
2131
|
-
<span class="cline-any cline-no"> </span>
|
|
2132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
-
<span class="cline-any cline-no"> </span>
|
|
2140
|
-
<span class="cline-any cline-no"> </span>
|
|
2141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
-
<span class="cline-any cline-no"> </span>
|
|
2149
|
-
<span class="cline-any cline-no"> </span>
|
|
2150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2158
|
-
<span class="cline-any cline-no"> </span>
|
|
2159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
-
<span class="cline-any cline-no"> </span>
|
|
2166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2173
|
-
<span class="cline-any cline-no"> </span>
|
|
2174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2190
|
-
<span class="cline-any cline-no"> </span>
|
|
2191
|
-
<span class="cline-any cline-no"> </span>
|
|
2192
|
-
<span class="cline-any cline-no"> </span>
|
|
2193
|
-
<span class="cline-any cline-no"> </span>
|
|
2194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2195
|
-
<span class="cline-any cline-no"> </span>
|
|
2196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2212
|
-
<span class="cline-any cline-no"> </span>
|
|
2213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2214
|
-
<span class="cline-any cline-no"> </span>
|
|
2215
|
-
<span class="cline-any cline-no"> </span>
|
|
2216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2217
|
-
<span class="cline-any cline-no"> </span>
|
|
2218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2226
|
-
<span class="cline-any cline-no"> </span>
|
|
2227
|
-
<span class="cline-any cline-no"> </span>
|
|
2228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2229
|
-
<span class="cline-any cline-no"> </span>
|
|
2230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2232
|
-
<span class="cline-any cline-no"> </span>
|
|
2233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2234
|
-
<span class="cline-any cline-no"> </span>
|
|
2235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2236
|
-
<span class="cline-any cline-no"> </span>
|
|
2237
|
-
<span class="cline-any cline-no"> </span>
|
|
2238
|
-
<span class="cline-any cline-no"> </span>
|
|
2239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2241
|
-
<span class="cline-any cline-no"> </span>
|
|
2242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2245
|
-
<span class="cline-any cline-no"> </span>
|
|
2246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2252
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2258
|
-
<span class="cline-any cline-no"> </span>
|
|
2259
|
-
<span class="cline-any cline-no"> </span>
|
|
2260
|
-
<span class="cline-any cline-no"> </span>
|
|
2261
|
-
<span class="cline-any cline-no"> </span>
|
|
2262
|
-
<span class="cline-any cline-no"> </span>
|
|
2263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2264
|
-
<span class="cline-any cline-no"> </span>
|
|
2265
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2279
|
-
<span class="cline-any cline-no"> </span>
|
|
2280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2281
|
-
<span class="cline-any cline-no"> </span>
|
|
2282
|
-
<span class="cline-any cline-no"> </span>
|
|
2283
|
-
<span class="cline-any cline-no"> </span>
|
|
2284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2285
|
-
<span class="cline-any cline-no"> </span>
|
|
2286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2287
|
-
<span class="cline-any cline-no"> </span>
|
|
2288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2292
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// Methods here should be of short, of universal utility, and not
|
|
2293
|
-
// clearly in the domain of any other module. If you don't wish
|
|
2294
|
-
// it was standard in JavaScript, it probably doesn't belong here.
|
|
2295
|
-
// Many methods are simple wrappers for [lodash](https://npmjs.org/package/lodash) methods.
|
|
2296
|
-
|
|
2297
|
-
// ## Options
|
|
2298
|
-
//
|
|
2299
|
-
// ### `logger`
|
|
2300
|
-
//
|
|
2301
|
-
// A function which accepts `apos` and returns an object with
|
|
2302
|
-
// at least `info`, `debug`, `warn` and `error` methods. These methods should
|
|
2303
|
-
// support placeholders (see `util.format`). If this option is
|
|
2304
|
-
// not supplied, logs are simply written to the Node.js `console`.
|
|
2305
|
-
// A `log` method may also be supplied; if it is not, `info`
|
|
2306
|
-
// is called in its place. Calls to `apos.util.log`,
|
|
2307
|
-
// `apos.util.error`, etc. are routed through this object
|
|
2308
|
-
// by Apostrophe. This provides compatibility out of
|
|
2309
|
-
// the box with many popular logging modules, including `winston`.
|
|
2310
|
-
|
|
2311
|
-
const _ = require('lodash');
|
|
2312
|
-
const he = require('he');
|
|
2313
|
-
_.str = require('underscore.string');
|
|
2314
|
-
const XRegExp = require('xregexp').XRegExp;
|
|
2315
|
-
const crypto = require('crypto');
|
|
2316
|
-
const cuid = require('cuid');
|
|
2317
|
-
const fs = require('fs');
|
|
2318
|
-
const now = require('performance-now');
|
|
2319
|
-
const Promise = require('bluebird');
|
|
2320
|
-
const util = require('util');
|
|
2321
|
-
const { stripIndent } = require('common-tags');
|
|
2322
|
-
|
|
2323
|
-
module.exports = {
|
|
2324
|
-
options: {
|
|
2325
|
-
alias: 'util',
|
|
2326
|
-
// No more than 50 combined levels deep in:
|
|
2327
|
-
// * relationship fetches
|
|
2328
|
-
// * widget loaders
|
|
2329
|
-
// * async components
|
|
2330
|
-
stackLimit: 50
|
|
2331
|
-
},
|
|
2332
|
-
init(self) {
|
|
2333
|
-
// An id for this particular Apostrophe instance that should be
|
|
2334
|
-
// unique even in a multiple server environment.
|
|
2335
|
-
self.apos.pid = self.generateId();
|
|
2336
|
-
self.regExpQuote = require('regexp-quote');
|
|
2337
|
-
self.warnedDev = {};
|
|
2338
|
-
return self.enableLogger();
|
|
2339
|
-
},
|
|
2340
|
-
methods(self) {
|
|
2341
|
-
return {
|
|
2342
|
-
// generate a unique identifier for a new page or other object.
|
|
2343
|
-
// IDs are generated with the cuid module which prevents
|
|
2344
|
-
// collisions and easy guessing of another's ID.
|
|
2345
|
-
generateId() {
|
|
2346
|
-
return cuid();
|
|
2347
|
-
},
|
|
2348
|
-
// Globally replace a string with another string.
|
|
2349
|
-
// Regular `String.replace` does NOT offer global replace, except
|
|
2350
|
-
// when using regular expressions, which are great but
|
|
2351
|
-
// problematic when UTF8 characters may be present.
|
|
2352
|
-
globalReplace(haystack, needle, replacement) {
|
|
2353
|
-
let result = '';
|
|
2354
|
-
while (true) {
|
|
2355
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!haystack.length) {
|
|
2356
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
2357
|
-
}
|
|
2358
|
-
const index = haystack.indexOf(needle);
|
|
2359
|
-
if (index === -1) {
|
|
2360
|
-
result += haystack;
|
|
2361
|
-
return result;
|
|
2362
|
-
}
|
|
2363
|
-
result += haystack.substr(0, index);
|
|
2364
|
-
result += replacement;
|
|
2365
|
-
haystack = haystack.substr(index + needle.length);
|
|
2366
|
-
}
|
|
2367
|
-
},
|
|
2368
|
-
// Truncate a plaintext string at the specified number of
|
|
2369
|
-
// characters without breaking words if possible, see
|
|
2370
|
-
// underscore.string's prune function, of which this is
|
|
2371
|
-
// a copy (but replacing RegExp with XRegExp for
|
|
2372
|
-
// better UTF-8 support)
|
|
2373
|
-
//
|
|
2374
|
-
truncatePlaintext(str, length, pruneStr) {
|
|
2375
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (str == null) {
|
|
2376
|
-
<span class="cstat-no" title="statement not covered" > return '';</span>
|
|
2377
|
-
}
|
|
2378
|
-
str = String(str);
|
|
2379
|
-
length = ~~length;
|
|
2380
|
-
pruneStr = pruneStr != null ? String(pruneStr) : '...';
|
|
2381
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (str.length <= length) {
|
|
2382
|
-
<span class="cstat-no" title="statement not covered" > return str;</span>
|
|
2383
|
-
}
|
|
2384
|
-
// XRegExp is different.
|
|
2385
|
-
// eslint-disable-next-line no-useless-escape
|
|
2386
|
-
const r = '.(?=W*w*$)';
|
|
2387
|
-
const regex = new XRegExp(r, 'g');
|
|
2388
|
-
function tmpl(c) {
|
|
2389
|
-
return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' ';
|
|
2390
|
-
}
|
|
2391
|
-
;
|
|
2392
|
-
let template = str.slice(0, length + 1);
|
|
2393
|
-
template = XRegExp.replace(template, regex, tmpl);
|
|
2394
|
-
// 'Hello, world' -> 'HellAA AAAAA'
|
|
2395
|
-
if (template.slice(template.length - 2).match(/\w\w/)) {
|
|
2396
|
-
template = template.replace(/\s*\S+$/, '');
|
|
2397
|
-
} else {
|
|
2398
|
-
template = _.str.rtrim(template.slice(0, template.length - 1));
|
|
2399
|
-
}
|
|
2400
|
-
return (template + pruneStr).length > str.length ? <span class="branch-0 cbranch-no" title="branch not covered" >str </span>: str.slice(0, template.length) + pruneStr;
|
|
2401
|
-
},
|
|
2402
|
-
// Escape a plaintext string correctly for use in HTML.
|
|
2403
|
-
// If `{ pretty: true }` is in the options object,
|
|
2404
|
-
// newlines become br tags, and URLs become links to
|
|
2405
|
-
// those URLs. Otherwise we just do basic escaping.
|
|
2406
|
-
//
|
|
2407
|
-
// If `{ single: true }` is in the options object,
|
|
2408
|
-
// single-quotes are escaped, otherwise double-quotes
|
|
2409
|
-
// are escaped.
|
|
2410
|
-
//
|
|
2411
|
-
// For bc, if the second argument is truthy and not an
|
|
2412
|
-
// object, `{ pretty: true }` is assumed.
|
|
2413
|
-
escapeHtml(s, options) {
|
|
2414
|
-
// for bc
|
|
2415
|
-
if (options && typeof options !== 'object') {
|
|
2416
|
-
options = { pretty: true };
|
|
2417
|
-
}
|
|
2418
|
-
options = options || {};
|
|
2419
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (s === 'undefined') {
|
|
2420
|
-
<span class="cstat-no" title="statement not covered" > s = '';</span>
|
|
2421
|
-
}
|
|
2422
|
-
if (typeof s !== 'string') {
|
|
2423
|
-
s = s + '';
|
|
2424
|
-
}
|
|
2425
|
-
s = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
|
|
2426
|
-
if (options.single) {
|
|
2427
|
-
s = s.replace(/'/g, '&#39;');
|
|
2428
|
-
} else {
|
|
2429
|
-
s = s.replace(/"/g, '&#34;');
|
|
2430
|
-
}
|
|
2431
|
-
if (options.pretty) {
|
|
2432
|
-
s = s.replace(/\r?\n/g, '<br />');
|
|
2433
|
-
// URLs to links. Careful, newlines are already <br /> at this point
|
|
2434
|
-
s = s.replace(/https?:[^\s<]+/g, <span class="fstat-no" title="function not covered" >fu</span>nction (match) {
|
|
2435
|
-
<span class="cstat-no" title="statement not covered" > match = match.trim();</span>
|
|
2436
|
-
<span class="cstat-no" title="statement not covered" > return '<a href="' + self.escapeHtml(match) + '">' + match + '</a>';</span>
|
|
2437
|
-
});
|
|
2438
|
-
}
|
|
2439
|
-
return s;
|
|
2440
|
-
},
|
|
2441
|
-
// Convert HTML to true plaintext, with all entities decoded.
|
|
2442
|
-
htmlToPlaintext(html) {
|
|
2443
|
-
// The awesomest HTML renderer ever (look out webkit):
|
|
2444
|
-
// block element opening tags = newlines, closing tags and non-container tags just gone
|
|
2445
|
-
html = html.replace(/<\/.*?>/g, '');
|
|
2446
|
-
html = html.replace(/<(h1|h2|h3|h4|h5|h6|p|br|blockquote|li|article|address|footer|pre|header|table|tr|td|th|tfoot|thead|div|dl|dt|dd).*?>/gi, '\n');
|
|
2447
|
-
html = html.replace(/<.*?>/g, '');
|
|
2448
|
-
return he.decode(html);
|
|
2449
|
-
},
|
|
2450
|
-
// Capitalize the first letter of a string.
|
|
2451
|
-
capitalizeFirst(s) {
|
|
2452
|
-
return s.charAt(0).toUpperCase() + s.substr(1);
|
|
2453
|
-
},
|
|
2454
|
-
// Convert other name formats such as underscore and camelCase to a hyphenated css-style
|
|
2455
|
-
// name.
|
|
2456
|
-
cssName(camel) {
|
|
2457
|
-
// Keep in sync with client side version
|
|
2458
|
-
let i;
|
|
2459
|
-
let css = '';
|
|
2460
|
-
let dash = false;
|
|
2461
|
-
for (i = 0; i < camel.length; i++) {
|
|
2462
|
-
let c = camel.charAt(i);
|
|
2463
|
-
const lower = c >= 'a' && c <= 'z';
|
|
2464
|
-
const upper = c >= 'A' && c <= 'Z';
|
|
2465
|
-
const digit = c >= '0' && c <= '9';
|
|
2466
|
-
if (!(lower || upper || digit)) {
|
|
2467
|
-
dash = true;
|
|
2468
|
-
continue;
|
|
2469
|
-
}
|
|
2470
|
-
if (upper) {
|
|
2471
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (i > 0) {
|
|
2472
|
-
dash = true;
|
|
2473
|
-
}
|
|
2474
|
-
c = c.toLowerCase();
|
|
2475
|
-
}
|
|
2476
|
-
if (dash) {
|
|
2477
|
-
css += '-';
|
|
2478
|
-
// Preserve double dash if they were literal dashes.
|
|
2479
|
-
// This is common in modern CSS patterns
|
|
2480
|
-
if (i >= 2 && camel.substr(i - 2, 2) === '--') {
|
|
2481
|
-
css += '-';
|
|
2482
|
-
}
|
|
2483
|
-
dash = false;
|
|
2484
|
-
}
|
|
2485
|
-
css += c;
|
|
2486
|
-
}
|
|
2487
|
-
return css;
|
|
2488
|
-
},
|
|
2489
|
-
// Convert a name to camel case.
|
|
2490
|
-
//
|
|
2491
|
-
// Useful in converting CSV with friendly headings into sensible property names.
|
|
2492
|
-
//
|
|
2493
|
-
// Only digits and ASCII letters remain.
|
|
2494
|
-
//
|
|
2495
|
-
// Anything that isn't a digit or an ASCII letter prompts the next character
|
|
2496
|
-
// to be uppercase. Existing uppercase letters also trigger uppercase, unless
|
|
2497
|
-
// they are the first character; this preserves existing camelCase names.
|
|
2498
|
-
camelName(s) {
|
|
2499
|
-
// Keep in sync with client side version
|
|
2500
|
-
let i;
|
|
2501
|
-
let n = '';
|
|
2502
|
-
let nextUp = false;
|
|
2503
|
-
for (i = 0; i < s.length; i++) {
|
|
2504
|
-
const c = s.charAt(i);
|
|
2505
|
-
// If the next character is already uppercase, preserve that, unless
|
|
2506
|
-
// it is the first character
|
|
2507
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (i > 0 && c.match(/[A-Z]/)) {
|
|
2508
|
-
<span class="cstat-no" title="statement not covered" > nextUp = true;</span>
|
|
2509
|
-
}
|
|
2510
|
-
if (c.match(/[A-Za-z0-9]/)) {
|
|
2511
|
-
if (nextUp) {
|
|
2512
|
-
n += c.toUpperCase();
|
|
2513
|
-
nextUp = false;
|
|
2514
|
-
} else {
|
|
2515
|
-
n += c.toLowerCase();
|
|
2516
|
-
}
|
|
2517
|
-
} else {
|
|
2518
|
-
nextUp = true;
|
|
2519
|
-
}
|
|
2520
|
-
}
|
|
2521
|
-
return n;
|
|
2522
|
-
},
|
|
2523
|
-
// Add a slash to a path, but only if it does not already end in a slash.
|
|
2524
|
-
addSlashIfNeeded(path) {
|
|
2525
|
-
path += '/';
|
|
2526
|
-
path = path.replace(/\/\/$/, '/');
|
|
2527
|
-
return path;
|
|
2528
|
-
},
|
|
2529
|
-
// Perform an md5 checksum on a string. Returns hex string.
|
|
2530
|
-
md5(s) {
|
|
2531
|
-
const md5 = crypto.createHash('md5');
|
|
2532
|
-
md5.update(s);
|
|
2533
|
-
return md5.digest('hex');
|
|
2534
|
-
},
|
|
2535
|
-
// perform an md5 checksum on a file. Async. Returns a hex string.
|
|
2536
|
-
async md5File(filename) {
|
|
2537
|
-
return new Promise(function (resolve, reject) {
|
|
2538
|
-
const md5 = crypto.createHash('md5');
|
|
2539
|
-
const s = fs.ReadStream(filename);
|
|
2540
|
-
s.on('data', function (d) {
|
|
2541
|
-
md5.update(d);
|
|
2542
|
-
});
|
|
2543
|
-
s.on('error', <span class="fstat-no" title="function not covered" >fu</span>nction (err) {
|
|
2544
|
-
<span class="cstat-no" title="statement not covered" > return reject(err);</span>
|
|
2545
|
-
});
|
|
2546
|
-
s.on('end', function () {
|
|
2547
|
-
const d = md5.digest('hex');
|
|
2548
|
-
return resolve(d);
|
|
2549
|
-
});
|
|
2550
|
-
});
|
|
2551
|
-
},
|
|
2552
|
-
// Get file size in bytes. Async. Returns size.
|
|
2553
|
-
async fileLength(filename) {
|
|
2554
|
-
const stat = await Promise.promisify(function (name, cb) {
|
|
2555
|
-
return fs.stat(name, cb);
|
|
2556
|
-
})(filename);
|
|
2557
|
-
return stat.size;
|
|
2558
|
-
},
|
|
2559
|
-
// Turn the provided string into a string suitable for use as a slug.
|
|
2560
|
-
// ONE punctuation character normally forbidden in slugs may
|
|
2561
|
-
// optionally be permitted by specifying it via options.allow.
|
|
2562
|
-
// The separator may be changed via options.separator.
|
|
2563
|
-
slugify(s, options) {
|
|
2564
|
-
return require('sluggo')(s, options);
|
|
2565
|
-
},
|
|
2566
|
-
// Returns a string that, when used for indexes, behaves
|
|
2567
|
-
// similarly to MySQL's default behavior for sorting, plus a little
|
|
2568
|
-
// extra tolerance of punctuation and whitespace differences. This is
|
|
2569
|
-
// in contrast to MongoDB's default "absolute match with same case only"
|
|
2570
|
-
// behavior which is no good for most practical purposes involving text.
|
|
2571
|
-
//
|
|
2572
|
-
// The use of this method to create sortable properties like
|
|
2573
|
-
// "titleSortified" is encouraged. It should not be used for full text
|
|
2574
|
-
// search, as MongoDB full text search is now available (see the
|
|
2575
|
-
// "search" option to apos.get and everything layered on top of it).
|
|
2576
|
-
// It is however used as part of our "autocomplete" search implementation.
|
|
2577
|
-
sortify(s) {
|
|
2578
|
-
return self.slugify(s, { separator: ' ' });
|
|
2579
|
-
},
|
|
2580
|
-
// Turns a user-entered search query into a regular expression.
|
|
2581
|
-
// If the string contains multiple words, at least one space is
|
|
2582
|
-
// required between them in matching documents, but additional words
|
|
2583
|
-
// may also be skipped between them, up to a reasonable limit to
|
|
2584
|
-
// preserve performance and avoid useless strings.
|
|
2585
|
-
//
|
|
2586
|
-
// Although we now have MongoDB full text search this is still
|
|
2587
|
-
// a highly useful method, for instance to locate autocomplete
|
|
2588
|
-
// candidates via highSearchWords.
|
|
2589
|
-
//
|
|
2590
|
-
// If the prefix flag is true the search matches only at the start.
|
|
2591
|
-
<span class="fstat-no" title="function not covered" > se</span>archify(q, prefix) {
|
|
2592
|
-
<span class="cstat-no" title="statement not covered" > q = self.sortify(q);</span>
|
|
2593
|
-
<span class="cstat-no" title="statement not covered" > if (prefix) {</span>
|
|
2594
|
-
<span class="cstat-no" title="statement not covered" > q = '^' + q;</span>
|
|
2595
|
-
}
|
|
2596
|
-
<span class="cstat-no" title="statement not covered" > q = q.replace(/ /g, ' .{0,20}?');</span>
|
|
2597
|
-
<span class="cstat-no" title="statement not covered" > q = new RegExp(q);</span>
|
|
2598
|
-
<span class="cstat-no" title="statement not covered" > return q;</span>
|
|
2599
|
-
},
|
|
2600
|
-
// Clone the given object recursively, discarding all
|
|
2601
|
-
// properties whose names begin with `_` except
|
|
2602
|
-
// for `_id`. Returns the clone.
|
|
2603
|
-
//
|
|
2604
|
-
// This removes the output of relationships and
|
|
2605
|
-
// other dynamic loaders, so that dynamically available
|
|
2606
|
-
// content is not stored redundantly in MongoDB.
|
|
2607
|
-
//
|
|
2608
|
-
// If the object is an array, the clone is also an array.
|
|
2609
|
-
//
|
|
2610
|
-
// Date objects are cloned as such. All other non-JSON
|
|
2611
|
-
// objects are cloned as plain JSON objects.
|
|
2612
|
-
//
|
|
2613
|
-
// If `keepScalars` is true, properties beginning with `_`
|
|
2614
|
-
// are kept as long as they are not objects. This is useful
|
|
2615
|
-
// when using `clonePermanent` to limit JSON inserted into
|
|
2616
|
-
// browser attributes, rather than filtering for the database.
|
|
2617
|
-
// Preserving simple string properties like `._url` is usually
|
|
2618
|
-
// a good thing in the former case.
|
|
2619
|
-
//
|
|
2620
|
-
// Arrays are cloned as such only if they are true arrays
|
|
2621
|
-
// (Array.isArray returns true). Otherwise all objects with
|
|
2622
|
-
// a length property would be treated as arrays, which is
|
|
2623
|
-
// an unrealistic restriction on apostrophe doc schemas.
|
|
2624
|
-
clonePermanent(o, keepScalars) {
|
|
2625
|
-
let c;
|
|
2626
|
-
const isArray = Array.isArray(o);
|
|
2627
|
-
if (isArray) {
|
|
2628
|
-
c = [];
|
|
2629
|
-
} else {
|
|
2630
|
-
c = {};
|
|
2631
|
-
}
|
|
2632
|
-
function iterator(val, key) {
|
|
2633
|
-
// careful, don't crash on numeric keys
|
|
2634
|
-
if (typeof key === 'string') {
|
|
2635
|
-
if (key.charAt(0) === '_' && key !== '_id') {
|
|
2636
|
-
if (!keepScalars || typeof val === 'object') {
|
|
2637
|
-
return;
|
|
2638
|
-
}
|
|
2639
|
-
}
|
|
2640
|
-
}
|
|
2641
|
-
if (val === null || val === undefined) {
|
|
2642
|
-
// typeof(null) is object, sigh
|
|
2643
|
-
c[key] = null;
|
|
2644
|
-
} else if (typeof val !== 'object') {
|
|
2645
|
-
c[key] = val;
|
|
2646
|
-
} else if (val instanceof Date) {
|
|
2647
|
-
c[key] = new Date(val);
|
|
2648
|
-
} else {
|
|
2649
|
-
c[key] = self.clonePermanent(val, keepScalars);
|
|
2650
|
-
}
|
|
2651
|
-
}
|
|
2652
|
-
if (isArray) {
|
|
2653
|
-
_.each(o, iterator);
|
|
2654
|
-
} else {
|
|
2655
|
-
_.forOwn(o, iterator);
|
|
2656
|
-
}
|
|
2657
|
-
return c;
|
|
2658
|
-
},
|
|
2659
|
-
// `ids` should be an array of mongodb IDs. The elements of the `items` array, which
|
|
2660
|
-
// should be the result of a mongodb query, are returned in the order specified by `ids`.
|
|
2661
|
-
// This is useful after performing an `$in` query with MongoDB (note that `$in` does NOT sort its
|
|
2662
|
-
// strings in the order given).
|
|
2663
|
-
//
|
|
2664
|
-
// Any IDs that do not actually exist for an item in the `items` array are not returned,
|
|
2665
|
-
// and vice versa. You should not assume the result will have the same length as
|
|
2666
|
-
// either array.
|
|
2667
|
-
//
|
|
2668
|
-
// Optionally you may specify a property name other than _id as the third argument.
|
|
2669
|
-
// You may use dot notation in this argument.
|
|
2670
|
-
orderById(ids, items, idProperty) {
|
|
2671
|
-
if (idProperty === undefined) {
|
|
2672
|
-
idProperty = '_id';
|
|
2673
|
-
}
|
|
2674
|
-
const byId = {};
|
|
2675
|
-
_.each(items, function (item) {
|
|
2676
|
-
let value = item;
|
|
2677
|
-
const keys = idProperty.split('.');
|
|
2678
|
-
_.each(keys, function (key) {
|
|
2679
|
-
value = value[key];
|
|
2680
|
-
});
|
|
2681
|
-
byId[value] = item;
|
|
2682
|
-
});
|
|
2683
|
-
items = [];
|
|
2684
|
-
_.each(ids, function (_id) {
|
|
2685
|
-
if (_.has(byId, _id)) {
|
|
2686
|
-
items.push(byId[_id]);
|
|
2687
|
-
}
|
|
2688
|
-
});
|
|
2689
|
-
return items;
|
|
2690
|
-
},
|
|
2691
|
-
// Return true if `req` is an AJAX request (`req.xhr` is set, or
|
|
2692
|
-
// `req.query.xhr` is set to emulate it) and Apostrophe's
|
|
2693
|
-
// main content area refresh mechanism is not in play.
|
|
2694
|
-
isAjaxRequest(req) {
|
|
2695
|
-
return (req.xhr || req.query.xhr) && (<span class="branch-2 cbranch-no" title="branch not covered" >req.query.aposRefresh !== '1')</span>;
|
|
2696
|
-
},
|
|
2697
|
-
// Sort the given array of strings in place, comparing strings in a case-insensitive way.
|
|
2698
|
-
insensitiveSort(strings) {
|
|
2699
|
-
strings.sort(self.insensitiveSortCompare);
|
|
2700
|
-
},
|
|
2701
|
-
// Sort the given array of objects in place, based on the value of the given property of each object,
|
|
2702
|
-
// in a case-insensitive way.
|
|
2703
|
-
insensitiveSortByProperty(objects, property) {
|
|
2704
|
-
objects.sort(function (a, b) {
|
|
2705
|
-
return self.insensitiveSortCompare(a[property], b[property]);
|
|
2706
|
-
});
|
|
2707
|
-
},
|
|
2708
|
-
// Compare two strings in a case-insensitive way, returning -1, 0 or 1, suitable for use with sort().
|
|
2709
|
-
// If the two strings represent numbers, compare them as numbers for a natural sort order
|
|
2710
|
-
// when comparing strings like '4' and '10'.
|
|
2711
|
-
insensitiveSortCompare(a, b) {
|
|
2712
|
-
let na, nb;
|
|
2713
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (a && a.toString().toLowerCase()) {
|
|
2714
|
-
a = a.toString().toLowerCase();
|
|
2715
|
-
}
|
|
2716
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (b && b.toString().toLowerCase()) {
|
|
2717
|
-
b = b.toString().toLowerCase();
|
|
2718
|
-
}
|
|
2719
|
-
// Sort naturally when comparing two numbers,
|
|
2720
|
-
// so the relative order of 10 and 2 makes sense
|
|
2721
|
-
if (a.match(/^[\d.]+$/) && b.match(/^[\d.]+/)) {
|
|
2722
|
-
na = parseFloat(a);
|
|
2723
|
-
nb = parseFloat(b);
|
|
2724
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!(isNaN(na) || isNaN(nb))) {
|
|
2725
|
-
a = na;
|
|
2726
|
-
b = nb;
|
|
2727
|
-
}
|
|
2728
|
-
}
|
|
2729
|
-
if (a < b) {
|
|
2730
|
-
return -1;
|
|
2731
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (a > b) {
|
|
2732
|
-
return 1;
|
|
2733
|
-
} else {
|
|
2734
|
-
<span class="cstat-no" title="statement not covered" > return 0;</span>
|
|
2735
|
-
}
|
|
2736
|
-
},
|
|
2737
|
-
// Within the given object (typically a doc or widget),
|
|
2738
|
-
// find a subobject with the given `_id` property.
|
|
2739
|
-
// Can be nested at any depth.
|
|
2740
|
-
//
|
|
2741
|
-
// Useful to locate a specific widget within a doc.
|
|
2742
|
-
findNestedObjectById(object, _id, { ignoreDynamicProperties = false } = {}) {
|
|
2743
|
-
let key;
|
|
2744
|
-
let val;
|
|
2745
|
-
let result;
|
|
2746
|
-
for (key in object) {
|
|
2747
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (ignoreDynamicProperties && (<span class="branch-1 cbranch-no" title="branch not covered" >key.charAt(0) === '_')</span>) {
|
|
2748
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
2749
|
-
}
|
|
2750
|
-
val = object[key];
|
|
2751
|
-
if (val && typeof val === 'object') {
|
|
2752
|
-
if (val._id === _id) {
|
|
2753
|
-
return val;
|
|
2754
|
-
}
|
|
2755
|
-
result = self.findNestedObjectById(val, _id);
|
|
2756
|
-
if (result) {
|
|
2757
|
-
return result;
|
|
2758
|
-
}
|
|
2759
|
-
}
|
|
2760
|
-
}
|
|
2761
|
-
},
|
|
2762
|
-
// Within the given object (typically a doc or widget),
|
|
2763
|
-
// find a subobject with the given `_id` property.
|
|
2764
|
-
// Can be nested at any depth.
|
|
2765
|
-
//
|
|
2766
|
-
// Useful to locate a specific widget within a doc.
|
|
2767
|
-
//
|
|
2768
|
-
// Returns an object like this: `{ object: { ... }, dotPath: 'dot.path.of.object' }`
|
|
2769
|
-
//
|
|
2770
|
-
// Ignore the `_dotPath` argument to this method; it is used for recursion.
|
|
2771
|
-
findNestedObjectAndDotPathById(object, id, { ignoreDynamicProperties = false } = {}, _dotPath) {
|
|
2772
|
-
let key;
|
|
2773
|
-
let val;
|
|
2774
|
-
let result;
|
|
2775
|
-
let subPath;
|
|
2776
|
-
_dotPath = _dotPath || [];
|
|
2777
|
-
for (key in object) {
|
|
2778
|
-
if (ignoreDynamicProperties && (key.charAt(0) === '_')) {
|
|
2779
|
-
continue;
|
|
2780
|
-
}
|
|
2781
|
-
val = object[key];
|
|
2782
|
-
if (val && typeof val === 'object') {
|
|
2783
|
-
subPath = _dotPath.concat(key);
|
|
2784
|
-
if (val._id === id) {
|
|
2785
|
-
return {
|
|
2786
|
-
object: val,
|
|
2787
|
-
dotPath: subPath.join('.')
|
|
2788
|
-
};
|
|
2789
|
-
}
|
|
2790
|
-
result = self.findNestedObjectAndDotPathById(val, id, { ignoreDynamicProperties }, subPath);
|
|
2791
|
-
if (result) {
|
|
2792
|
-
return result;
|
|
2793
|
-
}
|
|
2794
|
-
}
|
|
2795
|
-
}
|
|
2796
|
-
},
|
|
2797
|
-
enableLogger() {
|
|
2798
|
-
self.logger = self.options.logger ? <span class="branch-0 cbranch-no" title="branch not covered" >self.options.logger(self.apos) </span>: require('./lib/logger.js')(self.apos);
|
|
2799
|
-
},
|
|
2800
|
-
// Log a message. The default
|
|
2801
|
-
// implementation wraps `console.log` and passes on
|
|
2802
|
-
// all arguments, so substitution strings may be used.
|
|
2803
|
-
//
|
|
2804
|
-
// Overrides should be written with support for
|
|
2805
|
-
// substitution strings in mind. See the
|
|
2806
|
-
// `console.log` documentation.
|
|
2807
|
-
//
|
|
2808
|
-
// If the logger has no `log` method, the `info` method
|
|
2809
|
-
// is used. This allows an instance of `bole` or similar
|
|
2810
|
-
// to be used directly.
|
|
2811
|
-
log(msg) {
|
|
2812
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!self.logger.log) {
|
|
2813
|
-
<span class="cstat-no" title="statement not covered" > return self.logger.info.apply(self.logger.info, arguments);</span>
|
|
2814
|
-
}
|
|
2815
|
-
self.logger.log.apply(self.logger, arguments);
|
|
2816
|
-
},
|
|
2817
|
-
// Log an informational message. The default
|
|
2818
|
-
// implementation wraps `console.info` and passes on
|
|
2819
|
-
// all arguments, so substitution strings may be used.
|
|
2820
|
-
//
|
|
2821
|
-
// Overrides should be written with support for
|
|
2822
|
-
// substitution strings in mind. See the
|
|
2823
|
-
// `console.log` documentation.
|
|
2824
|
-
info(msg) {
|
|
2825
|
-
self.logger.info.apply(self.logger, arguments);
|
|
2826
|
-
},
|
|
2827
|
-
// Log a debug message. The default implementation wraps
|
|
2828
|
-
// `console.debug` if available, otherwise `console.log`,
|
|
2829
|
-
// and passes on all arguments, so substitution strings may be used.
|
|
2830
|
-
//
|
|
2831
|
-
// Overrides should be written with support for
|
|
2832
|
-
// substitution strings in mind. See the
|
|
2833
|
-
// `console.warn` documentation.
|
|
2834
|
-
<span class="fstat-no" title="function not covered" > de</span>bug(msg) {
|
|
2835
|
-
<span class="cstat-no" title="statement not covered" > self.logger.debug.apply(self.logger, arguments);</span>
|
|
2836
|
-
},
|
|
2837
|
-
// Log a warning. The default implementation wraps
|
|
2838
|
-
// `console.warn` and passes on all arguments,
|
|
2839
|
-
// so substitution strings may be used.
|
|
2840
|
-
//
|
|
2841
|
-
// Overrides should be written with support for
|
|
2842
|
-
// substitution strings in mind. See the
|
|
2843
|
-
// `console.warn` documentation.
|
|
2844
|
-
//
|
|
2845
|
-
// The intention is that `apos.util.warn` should be
|
|
2846
|
-
// called for situations less dire than
|
|
2847
|
-
// `apos.util.error`.
|
|
2848
|
-
warn(msg) {
|
|
2849
|
-
self.logger.warn.apply(self.logger, arguments);
|
|
2850
|
-
},
|
|
2851
|
-
|
|
2852
|
-
// Identical to `apos.util.warn`, except that the warning is
|
|
2853
|
-
// not displayed if `process.env.NODE_ENV` is `production`.
|
|
2854
|
-
// Also see `warnDevOnce` which is less likely to irritate
|
|
2855
|
-
// the developer until they stop paying attention.
|
|
2856
|
-
|
|
2857
|
-
warnDev(msg) {
|
|
2858
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.NODE_ENV === 'production') {
|
|
2859
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2860
|
-
}
|
|
2861
|
-
const args = [ '\n⚠️', ...arguments ];
|
|
2862
|
-
self.warn.apply(self, args);
|
|
2863
|
-
},
|
|
2864
|
-
|
|
2865
|
-
// Identical to `apos.util.warnDev`, except that the warning is
|
|
2866
|
-
// only displayed once per `name` unless the command line
|
|
2867
|
-
// option `--all-[name]` is present. Nothing appears if
|
|
2868
|
-
// `process.env.NODE_ENV` is `production`, unless
|
|
2869
|
-
// `--all-[name]` is present on the command line. You can
|
|
2870
|
-
// also suppress these with `--ignore-[name]`.
|
|
2871
|
-
|
|
2872
|
-
warnDevOnce(name, msg) {
|
|
2873
|
-
const always = self.apos.argv[`all-${name}`];
|
|
2874
|
-
const hide = self.apos.argv[`ignore-${name}`];
|
|
2875
|
-
if (hide) {
|
|
2876
|
-
return;
|
|
2877
|
-
}
|
|
2878
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if ((process.env.NODE_ENV === 'production') && (<span class="branch-1 cbranch-no" title="branch not covered" >!always)</span>) {
|
|
2879
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2880
|
-
}
|
|
2881
|
-
if (always || (!self.warnedDev[name])) {
|
|
2882
|
-
self.warn.apply(self, Array.prototype.slice.call(arguments, 1));
|
|
2883
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!always) {
|
|
2884
|
-
self.warnedDev[name] = true;
|
|
2885
|
-
self.info(stripIndent`
|
|
2886
|
-
This warning appears only once to save space. Pass --all-${name}
|
|
2887
|
-
on the command line to see the warning for all cases.
|
|
2888
|
-
`);
|
|
2889
|
-
}
|
|
2890
|
-
}
|
|
2891
|
-
},
|
|
2892
|
-
|
|
2893
|
-
// Log an error message. The default implementation
|
|
2894
|
-
// wraps `console.error` and passes on all arguments,
|
|
2895
|
-
// so substitution strings may be used.
|
|
2896
|
-
//
|
|
2897
|
-
// Overrides should be written with support for
|
|
2898
|
-
// substitution strings in mind. See the
|
|
2899
|
-
// `console.error` documentation.
|
|
2900
|
-
error(msg) {
|
|
2901
|
-
self.logger.error.apply(self.logger, arguments);
|
|
2902
|
-
},
|
|
2903
|
-
// Performance profiling method. At the start of the operation you want
|
|
2904
|
-
// to profile, call with req (may be null or omitted entirely) and a
|
|
2905
|
-
// dot-namespaced key. A function is returned. Call that function
|
|
2906
|
-
// with no arguments at the end of your operation.
|
|
2907
|
-
//
|
|
2908
|
-
// Alternatively, you may pass the duration in milliseconds yourself as the
|
|
2909
|
-
// third argument. In this case no function is returned. This is useful if
|
|
2910
|
-
// you are already gathering timing information for other purposes.
|
|
2911
|
-
//
|
|
2912
|
-
// Profiler modules such as `@apostrophecms/profiler` override this
|
|
2913
|
-
// method to provide detailed performance analysis. Note that they must
|
|
2914
|
-
// support both calling syntaxes. The default implementation does nothing.
|
|
2915
|
-
//
|
|
2916
|
-
// If the dot-separated key looks like `callAll.pageBeforeSend.module-name`,
|
|
2917
|
-
// time is tracked to `callAll`, `callAll.pageBeforeSend`, and
|
|
2918
|
-
// `callAll.pageBeforeSend.module-name` as categories. Note that the
|
|
2919
|
-
// most general category should come first.
|
|
2920
|
-
//
|
|
2921
|
-
// To avoid overhead and bloat in the core, the default implementation
|
|
2922
|
-
// does nothing. Also most core modules and methods do not invoke this method.
|
|
2923
|
-
// However, the `@apostrophecms/profiler` module extends them to invoke it,
|
|
2924
|
-
// for performance reasons: the profiler itself can have
|
|
2925
|
-
// a performance overhead.
|
|
2926
|
-
profile(req, key, optionalDuration) {
|
|
2927
|
-
if (typeof req === 'string') {
|
|
2928
|
-
// Called without a `req`
|
|
2929
|
-
if (arguments.length === 2) {
|
|
2930
|
-
return self.profile(null, arguments[0], arguments[1]);
|
|
2931
|
-
} else {
|
|
2932
|
-
return self.profile(null, arguments[0]);
|
|
2933
|
-
}
|
|
2934
|
-
}
|
|
2935
|
-
if (arguments.length === 2) {
|
|
2936
|
-
// You did not supply duration so we return a function
|
|
2937
|
-
// for you to call at the end
|
|
2938
|
-
return function () {
|
|
2939
|
-
};
|
|
2940
|
-
}
|
|
2941
|
-
},
|
|
2942
|
-
// Returns time since the start of the process in milliseconds,
|
|
2943
|
-
// with high-resolution accuracy. Used by apos.util.profile.
|
|
2944
|
-
// See: https://www.npmjs.com/package/performance-now
|
|
2945
|
-
<span class="fstat-no" title="function not covered" > no</span>w() {
|
|
2946
|
-
<span class="cstat-no" title="statement not covered" > return now();</span>
|
|
2947
|
-
},
|
|
2948
|
-
// Given a widget or doc, return the appropriate manager module.
|
|
2949
|
-
getManagerOf(object) {
|
|
2950
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (object.metaType === 'doc') {
|
|
2951
|
-
return self.apos.doc.getManager(object.type);
|
|
2952
|
-
} else <span class="cstat-no" title="statement not covered" >if (object.metaType === 'widget') {</span>
|
|
2953
|
-
<span class="cstat-no" title="statement not covered" > return self.apos.area.getWidgetManager(object.type);</span>
|
|
2954
|
-
} else <span class="cstat-no" title="statement not covered" >if (object.metaType === 'arrayItem') {</span>
|
|
2955
|
-
<span class="cstat-no" title="statement not covered" > return self.apos.schema.getArrayManager(object.scopedArrayName);</span>
|
|
2956
|
-
} else <span class="cstat-no" title="statement not covered" >if (object.metaType === 'object') {</span>
|
|
2957
|
-
<span class="cstat-no" title="statement not covered" > return self.apos.schema.getArrayManager(object.scopedObjectName);</span>
|
|
2958
|
-
} else {
|
|
2959
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`Unsupported metaType in getManagerOf: ${object.metaType}`);</span>
|
|
2960
|
-
}
|
|
2961
|
-
},
|
|
2962
|
-
// fetch the value at the given path from the object or
|
|
2963
|
-
// array `o`. `path` supports dot notation like MongoDB, and
|
|
2964
|
-
// in addition if the first component begins with `@xyz` the
|
|
2965
|
-
// sub-object within `o` with an `_id` property equal to `xyz`.
|
|
2966
|
-
// is found and returned, no matter how deeply nested it is.
|
|
2967
|
-
get(o, path) {
|
|
2968
|
-
let i;
|
|
2969
|
-
path = path.split('.');
|
|
2970
|
-
for (i = 0; (i < path.length); i++) {
|
|
2971
|
-
const p = path[i];
|
|
2972
|
-
if ((i === 0) && (p.charAt(0) === '@')) {
|
|
2973
|
-
o = self.apos.util.findNestedObjectById(o, p.substring(1));
|
|
2974
|
-
} else {
|
|
2975
|
-
o = o[p];
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
return o;
|
|
2979
|
-
},
|
|
2980
|
-
|
|
2981
|
-
// Returns `path` with any @ reference present resolved to a full
|
|
2982
|
-
// dot path. If the reference cannot be resolved the @ reference
|
|
2983
|
-
// remains in the returned value.
|
|
2984
|
-
resolveAtReference(o, path) {
|
|
2985
|
-
path = path.split('.');
|
|
2986
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (path[0] && (path[0].charAt(0) === '@')) {
|
|
2987
|
-
const info = self.apos.util.findNestedObjectAndDotPathById(o, path[0].substring(1));
|
|
2988
|
-
if (!info) {
|
|
2989
|
-
return path.join('.');
|
|
2990
|
-
}
|
|
2991
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (path.length > 1) {
|
|
2992
|
-
<span class="cstat-no" title="statement not covered" > return info.dotPath + '.' + (path.slice(1).join('.'));</span>
|
|
2993
|
-
} else {
|
|
2994
|
-
return info.dotPath;
|
|
2995
|
-
}
|
|
2996
|
-
} else {
|
|
2997
|
-
<span class="cstat-no" title="statement not covered" > return path.join('.');</span>
|
|
2998
|
-
}
|
|
2999
|
-
},
|
|
3000
|
-
|
|
3001
|
-
// set the value at the given path within the object or
|
|
3002
|
-
// array `o`. `path` supports dot notation like MongoDB. In
|
|
3003
|
-
// addition if the first component begins with `@xyz` the
|
|
3004
|
-
// sub-object within `o` with an `_id` property equal to `xyz`.
|
|
3005
|
-
// is located, no matter how deeply nested it is. If that is
|
|
3006
|
-
// the only component of the path the sub-object is replaced
|
|
3007
|
-
// with v. If there are further components via dot notation,
|
|
3008
|
-
// they are honored to locate the final location for `v`.
|
|
3009
|
-
//
|
|
3010
|
-
// The `@` syntax works only for locating sub-objects. You may
|
|
3011
|
-
// not pass `@abc` where `abc` is the `_id` of `o` itself.
|
|
3012
|
-
set(o, path, v) {
|
|
3013
|
-
let i;
|
|
3014
|
-
let p;
|
|
3015
|
-
let matches;
|
|
3016
|
-
if (path.charAt(0) === '@') {
|
|
3017
|
-
matches = path.match(/^@([^.]+)(.*)$/);
|
|
3018
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!matches) {
|
|
3019
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`@ syntax used without an id: ${path}`);</span>
|
|
3020
|
-
}
|
|
3021
|
-
const found = self.apos.util.findNestedObjectAndDotPathById(o, matches[1], { ignoreDynamicProperties: true });
|
|
3022
|
-
if (found) {
|
|
3023
|
-
if (matches[2].length) {
|
|
3024
|
-
o = found.object;
|
|
3025
|
-
path = matches[2].substring(1);
|
|
3026
|
-
} else {
|
|
3027
|
-
path = found.dotPath;
|
|
3028
|
-
}
|
|
3029
|
-
} else {
|
|
3030
|
-
return;
|
|
3031
|
-
}
|
|
3032
|
-
}
|
|
3033
|
-
path = path.split('.');
|
|
3034
|
-
for (i = 0; (i < (path.length - 1)); i++) {
|
|
3035
|
-
p = path[i];
|
|
3036
|
-
o = o[p];
|
|
3037
|
-
}
|
|
3038
|
-
p = path[i];
|
|
3039
|
-
o[p] = v;
|
|
3040
|
-
},
|
|
3041
|
-
// Pushes the given label onto `req.aposStack` before awaiting the given function; then pops the label off the stack
|
|
3042
|
-
// and returns the result of the function. If the stack limit is reached, a warning which includes the stack itself
|
|
3043
|
-
// is printed to assist in debugging, and the return value is `undefined`. Code that calls this function should be
|
|
3044
|
-
// prepared not to crash if `undefined` is returned.
|
|
3045
|
-
|
|
3046
|
-
async recursionGuard(req, label, fn) {
|
|
3047
|
-
req.aposStack.push(label);
|
|
3048
|
-
if (req.aposStack.length === self.options.stackLimit) {
|
|
3049
|
-
self.apos.util.warn(stripIndent`
|
|
3050
|
-
WARNING: reached the maximum depth of Apostrophe's asynchronous stack.
|
|
3051
|
-
This is usually because widget loaders, async components, and/or relationships
|
|
3052
|
-
are causing an infinite loop.
|
|
3053
|
-
|
|
3054
|
-
Please review the stack to find the problem:
|
|
3055
|
-
|
|
3056
|
-
${req.aposStack.join('\n')}
|
|
3057
|
-
|
|
3058
|
-
Suggested fixes:
|
|
3059
|
-
* For each relationship, set "areas: false" or configure a projection with
|
|
3060
|
-
"project".
|
|
3061
|
-
* Use the "neverLoad" option in your widget modules to block them from loading
|
|
3062
|
-
particular widget types recursively.
|
|
3063
|
-
* Do not use "neverLoadSelf: false" for any widget type unless you can guarantee
|
|
3064
|
-
it will never cause an infinite loop.
|
|
3065
|
-
* Make sure your async components do not call themselves recursively in a way
|
|
3066
|
-
that will never terminate.
|
|
3067
|
-
`);
|
|
3068
|
-
req.aposStack.pop();
|
|
3069
|
-
return;
|
|
3070
|
-
}
|
|
3071
|
-
const result = await fn();
|
|
3072
|
-
req.aposStack.pop();
|
|
3073
|
-
return result;
|
|
3074
|
-
},
|
|
3075
|
-
// Returns a new `req` object with the properties of the original plus any
|
|
3076
|
-
// in the optional `properties` parameter. Used when a request object
|
|
3077
|
-
// with one change is desired, such as `mode: 'published'`. Avoids
|
|
3078
|
-
// the need to push and pop properties of the original `req`.
|
|
3079
|
-
// Also available as `req.clone(properties = {})`.
|
|
3080
|
-
cloneReq(req, properties = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
3081
|
-
// Express and Node.js offer no official constructor for a req object.
|
|
3082
|
-
// But a plain object "clone" only takes us so far because we need
|
|
3083
|
-
// access to things like `req.get`. Solution: ask `Object.create` to
|
|
3084
|
-
// create a new object with the same prototype as `req`, then copy the
|
|
3085
|
-
// own properties of `req` into the new object.
|
|
3086
|
-
const result = Object.assign(Object.create(Object.getPrototypeOf(req)), req, properties);
|
|
3087
|
-
self.apos.i18n.setPrefixUrls(result);
|
|
3088
|
-
// Must have its own clone function or we can't clone two levels deep
|
|
3089
|
-
result.clone = (properties = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> => {
|
|
3090
|
-
return self.apos.util.cloneReq(result, properties);
|
|
3091
|
-
};
|
|
3092
|
-
return result;
|
|
3093
|
-
}
|
|
3094
|
-
};
|
|
3095
|
-
},
|
|
3096
|
-
helpers(self) {
|
|
3097
|
-
return {
|
|
3098
|
-
|
|
3099
|
-
// Turn the provided string into a string suitable for use as a slug.
|
|
3100
|
-
// ONE punctuation character normally forbidden in slugs may
|
|
3101
|
-
// optionally be permitted by specifying it via options.allow.
|
|
3102
|
-
// The separator may be changed via options.separator.
|
|
3103
|
-
|
|
3104
|
-
slugify: function(string, options) {
|
|
3105
|
-
return self.slugify(string, options);
|
|
3106
|
-
},
|
|
3107
|
-
|
|
3108
|
-
// Log a message from a Nunjucks template. Great for debugging.
|
|
3109
|
-
// Outputs nothing to the template. Invokes apos.util.log,
|
|
3110
|
-
// which by default invokes console.log.
|
|
3111
|
-
log: <span class="fstat-no" title="function not covered" >fu</span>nction(msg) {
|
|
3112
|
-
<span class="cstat-no" title="statement not covered" > self.log.apply(self.apos, arguments);</span>
|
|
3113
|
-
<span class="cstat-no" title="statement not covered" > return '';</span>
|
|
3114
|
-
},
|
|
3115
|
-
|
|
3116
|
-
// Log the properties of the given object in detail.
|
|
3117
|
-
// Invokes `util.inspect` on the given object, down to a
|
|
3118
|
-
// depth of 10. Outputs nothing to the template.
|
|
3119
|
-
inspect: <span class="fstat-no" title="function not covered" >fu</span>nction(o) {
|
|
3120
|
-
<span class="cstat-no" title="statement not covered" > self.log(util.inspect(o, { depth: 10 }));</span>
|
|
3121
|
-
<span class="cstat-no" title="statement not covered" > return '';</span>
|
|
3122
|
-
},
|
|
3123
|
-
|
|
3124
|
-
// Generate a globally unique ID
|
|
3125
|
-
generateId: <span class="fstat-no" title="function not covered" >fu</span>nction() {
|
|
3126
|
-
<span class="cstat-no" title="statement not covered" > return self.generateId();</span>
|
|
3127
|
-
},
|
|
3128
|
-
|
|
3129
|
-
// Test whether the specified date object refers to a date in the current year.
|
|
3130
|
-
// The events module utilizes this
|
|
3131
|
-
|
|
3132
|
-
isCurrentYear: <span class="fstat-no" title="function not covered" >fu</span>nction(date) {
|
|
3133
|
-
const now = <span class="cstat-no" title="statement not covered" >new Date();</span>
|
|
3134
|
-
<span class="cstat-no" title="statement not covered" > return date.getYear() === now.getYear();</span>
|
|
3135
|
-
},
|
|
3136
|
-
|
|
3137
|
-
// check if something is properly undefined
|
|
3138
|
-
isUndefined: <span class="fstat-no" title="function not covered" >fu</span>nction(o) {
|
|
3139
|
-
<span class="cstat-no" title="statement not covered" > return (o === undefined);</span>
|
|
3140
|
-
},
|
|
3141
|
-
|
|
3142
|
-
// check if something is strictly equal to false
|
|
3143
|
-
isFalse: <span class="fstat-no" title="function not covered" >fu</span>nction(o) {
|
|
3144
|
-
<span class="cstat-no" title="statement not covered" > return (o === false);</span>
|
|
3145
|
-
},
|
|
3146
|
-
|
|
3147
|
-
// Convert string to start case (make default labels out of camelCase property names)
|
|
3148
|
-
startCase: <span class="fstat-no" title="function not covered" >fu</span>nction(o) {
|
|
3149
|
-
<span class="cstat-no" title="statement not covered" > return _.startCase(o);</span>
|
|
3150
|
-
},
|
|
3151
|
-
|
|
3152
|
-
// check if something is a function (as opposed to property)
|
|
3153
|
-
isFunction: <span class="fstat-no" title="function not covered" >fu</span>nction(o) {
|
|
3154
|
-
<span class="cstat-no" title="statement not covered" > return (typeof o === 'function');</span>
|
|
3155
|
-
},
|
|
3156
|
-
|
|
3157
|
-
// make up for lack of triple equals
|
|
3158
|
-
eqStrict: <span class="fstat-no" title="function not covered" >fu</span>nction(a, b) {
|
|
3159
|
-
<span class="cstat-no" title="statement not covered" > return (a === b);</span>
|
|
3160
|
-
},
|
|
3161
|
-
|
|
3162
|
-
// Returns true if the list contains the specified value.
|
|
3163
|
-
// If value is an array, returns true if the list contains
|
|
3164
|
-
// *any of* the specified values
|
|
3165
|
-
contains: <span class="fstat-no" title="function not covered" >fu</span>nction(list, value) {
|
|
3166
|
-
<span class="cstat-no" title="statement not covered" > if (_.isArray(value)) {</span>
|
|
3167
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < value.length; i++) {</span>
|
|
3168
|
-
const valueItem = <span class="cstat-no" title="statement not covered" >value[i];</span>
|
|
3169
|
-
<span class="cstat-no" title="statement not covered" > if (_.includes(list, valueItem)) {</span>
|
|
3170
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
3171
|
-
}
|
|
3172
|
-
}
|
|
3173
|
-
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
3174
|
-
} else {
|
|
3175
|
-
<span class="cstat-no" title="statement not covered" > return _.includes(list, value);</span>
|
|
3176
|
-
}
|
|
3177
|
-
},
|
|
3178
|
-
|
|
3179
|
-
// Returns true if the list contains at least one
|
|
3180
|
-
// object with the named property.
|
|
3181
|
-
|
|
3182
|
-
// The first parameter may also be a single object, in
|
|
3183
|
-
// which case this function returns true if that object
|
|
3184
|
-
// has the named property.
|
|
3185
|
-
|
|
3186
|
-
containsProperty: <span class="fstat-no" title="function not covered" >fu</span>nction(list, property) {
|
|
3187
|
-
<span class="cstat-no" title="statement not covered" > if (_.isArray(list)) {</span>
|
|
3188
|
-
<span class="cstat-no" title="statement not covered" > return _.some(list, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3189
|
-
<span class="cstat-no" title="statement not covered" > return _.has(item, property);</span>
|
|
3190
|
-
});
|
|
3191
|
-
} else {
|
|
3192
|
-
<span class="cstat-no" title="statement not covered" > return _.has(list, property);</span>
|
|
3193
|
-
}
|
|
3194
|
-
},
|
|
3195
|
-
|
|
3196
|
-
// Reverses the order of the array. This MODIFIES the array
|
|
3197
|
-
// in addition to returning it
|
|
3198
|
-
reverse: <span class="fstat-no" title="function not covered" >fu</span>nction(array) {
|
|
3199
|
-
<span class="cstat-no" title="statement not covered" > return array.reverse();</span>
|
|
3200
|
-
},
|
|
3201
|
-
|
|
3202
|
-
// If the `list` argument is a string, returns true if it begins
|
|
3203
|
-
// with `value`. If the `list` argument is an array, returns
|
|
3204
|
-
// true if at least one of its elements begins with `value`.
|
|
3205
|
-
beginsWith: <span class="fstat-no" title="function not covered" >fu</span>nction(list, value) {
|
|
3206
|
-
<span class="cstat-no" title="statement not covered" > if (_.isArray(list)) {</span>
|
|
3207
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < list.length; i++) {</span>
|
|
3208
|
-
const listItem = <span class="cstat-no" title="statement not covered" >list[i];</span>
|
|
3209
|
-
<span class="cstat-no" title="statement not covered" > if (listItem.indexOf(value) === 0) {</span>
|
|
3210
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
3211
|
-
}
|
|
3212
|
-
}
|
|
3213
|
-
} else {
|
|
3214
|
-
<span class="cstat-no" title="statement not covered" > if (list.indexOf(value) === 0) {</span>
|
|
3215
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
3216
|
-
}
|
|
3217
|
-
}
|
|
3218
|
-
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
3219
|
-
},
|
|
3220
|
-
|
|
3221
|
-
// Find the first array element, if any, that has the specified value for
|
|
3222
|
-
// the specified property.
|
|
3223
|
-
|
|
3224
|
-
find: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property, value) {
|
|
3225
|
-
<span class="cstat-no" title="statement not covered" > return _.find(arr, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3226
|
-
<span class="cstat-no" title="statement not covered" > return (item[property] === value);</span>
|
|
3227
|
-
});
|
|
3228
|
-
},
|
|
3229
|
-
|
|
3230
|
-
// Find all the array elements, if any, that have the specified value for
|
|
3231
|
-
// the specified property.
|
|
3232
|
-
|
|
3233
|
-
filter: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property, value) {
|
|
3234
|
-
<span class="cstat-no" title="statement not covered" > return _.filter(arr, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3235
|
-
<span class="cstat-no" title="statement not covered" > return (item[property] === value);</span>
|
|
3236
|
-
});
|
|
3237
|
-
},
|
|
3238
|
-
|
|
3239
|
-
// Reject array elements that have the specified value for
|
|
3240
|
-
// the specified property.
|
|
3241
|
-
|
|
3242
|
-
reject: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property, value) {
|
|
3243
|
-
<span class="cstat-no" title="statement not covered" > return _.reject(arr, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3244
|
-
<span class="cstat-no" title="statement not covered" > return (item[property] === value);</span>
|
|
3245
|
-
});
|
|
3246
|
-
},
|
|
3247
|
-
|
|
3248
|
-
// Find all the array elements, if any, for which the specified property
|
|
3249
|
-
// is truthy.
|
|
3250
|
-
|
|
3251
|
-
filterNonempty: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property) {
|
|
3252
|
-
<span class="cstat-no" title="statement not covered" > return _.filter(arr, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3253
|
-
<span class="cstat-no" title="statement not covered" > return (item[property]);</span>
|
|
3254
|
-
});
|
|
3255
|
-
},
|
|
3256
|
-
|
|
3257
|
-
// Find all the array elements, if any, for which the specified property
|
|
3258
|
-
// is not truthy.
|
|
3259
|
-
|
|
3260
|
-
filterEmpty: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property) {
|
|
3261
|
-
<span class="cstat-no" title="statement not covered" > return _.filter(arr, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3262
|
-
<span class="cstat-no" title="statement not covered" > return (!item[property]);</span>
|
|
3263
|
-
});
|
|
3264
|
-
},
|
|
3265
|
-
|
|
3266
|
-
// Returns true if the specified array or object is considered empty.
|
|
3267
|
-
// Objects are empty if they have no own enumerable properties.
|
|
3268
|
-
// Arrays are considered empty if they have a length of 0.
|
|
3269
|
-
|
|
3270
|
-
isEmpty: <span class="fstat-no" title="function not covered" >fu</span>nction(item) {
|
|
3271
|
-
<span class="cstat-no" title="statement not covered" > return _.isEmpty(item);</span>
|
|
3272
|
-
},
|
|
3273
|
-
|
|
3274
|
-
// Given an array of objects with the given property, return an array with
|
|
3275
|
-
// the value of that property for each object.
|
|
3276
|
-
|
|
3277
|
-
pluck: <span class="fstat-no" title="function not covered" >fu</span>nction(arr, property) {
|
|
3278
|
-
<span class="cstat-no" title="statement not covered" > return _.map(arr, property);</span>
|
|
3279
|
-
},
|
|
3280
|
-
|
|
3281
|
-
// Given an object, return an object without
|
|
3282
|
-
// the named properties or array of named
|
|
3283
|
-
// properties (see _.omit()).
|
|
3284
|
-
|
|
3285
|
-
omit: <span class="fstat-no" title="function not covered" >fu</span>nction(object, property /* , property... */) {
|
|
3286
|
-
<span class="cstat-no" title="statement not covered" > return _.omit.apply(_, arguments);</span>
|
|
3287
|
-
},
|
|
3288
|
-
|
|
3289
|
-
// Given the arrays `array` and `without`, return
|
|
3290
|
-
// only the elements of `array` that do not occur
|
|
3291
|
-
// in `without`. If `without` is not an array it is
|
|
3292
|
-
// treated as an empty array.
|
|
3293
|
-
//
|
|
3294
|
-
// If `property` is present, then that property of
|
|
3295
|
-
// each element of array is compared to elements
|
|
3296
|
-
// of `without`. This is useful when `array` contains
|
|
3297
|
-
// full-blown choices with a `value` property, while
|
|
3298
|
-
// `without `just contains actual values.
|
|
3299
|
-
//
|
|
3300
|
-
// A deep comparison is performed with `_.isEqual`.
|
|
3301
|
-
|
|
3302
|
-
difference: <span class="fstat-no" title="function not covered" >fu</span>nction(array, without, property) {
|
|
3303
|
-
<span class="cstat-no" title="statement not covered" > return _.filter(Array.isArray(array) ? array : [], <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3304
|
-
<span class="cstat-no" title="statement not covered" > return !_.find(without || [], <span class="fstat-no" title="function not covered" >fu</span>nction(other) {</span>
|
|
3305
|
-
<span class="cstat-no" title="statement not covered" > if (property) {</span>
|
|
3306
|
-
<span class="cstat-no" title="statement not covered" > return _.isEqual(item[property], other);</span>
|
|
3307
|
-
} else {
|
|
3308
|
-
<span class="cstat-no" title="statement not covered" > return _.isEqual(item, other);</span>
|
|
3309
|
-
}
|
|
3310
|
-
});
|
|
3311
|
-
});
|
|
3312
|
-
},
|
|
3313
|
-
|
|
3314
|
-
// Concatenate all of the given arrays and/or values
|
|
3315
|
-
// into a single array. If an argument is an array, all
|
|
3316
|
-
// of its elements are individually added to the
|
|
3317
|
-
// resulting array. If an argument is a value, it is
|
|
3318
|
-
// added directly to the array.
|
|
3319
|
-
|
|
3320
|
-
concat: <span class="fstat-no" title="function not covered" >fu</span>nction(arrOrObj1, arrOrObj2 /* , ... */) {
|
|
3321
|
-
// I tried to implement this with call() but I kept
|
|
3322
|
-
// getting arrays in my values. We still get the
|
|
3323
|
-
// benefit of concat() and its built-in support for
|
|
3324
|
-
// treating arrays and scalar values differently. -Tom
|
|
3325
|
-
let result = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
3326
|
-
let i;
|
|
3327
|
-
<span class="cstat-no" title="statement not covered" > for (i = 0; (i < arguments.length); i++) {</span>
|
|
3328
|
-
<span class="cstat-no" title="statement not covered" > result = result.concat(arguments[i]);</span>
|
|
3329
|
-
}
|
|
3330
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
3331
|
-
},
|
|
3332
|
-
|
|
3333
|
-
// Groups by the property named by 'key' on each of the values.
|
|
3334
|
-
// If the property referred to by the string 'key' is found to be
|
|
3335
|
-
// an array property of the first object, apos.util.groupByArray is called.
|
|
3336
|
-
//
|
|
3337
|
-
// Usage: {{ apos.util.groupBy(people, 'age') }} or {{ apos.util.groupBy(items, 'colors') }}
|
|
3338
|
-
groupBy: <span class="fstat-no" title="function not covered" >fu</span>nction(items, key) {
|
|
3339
|
-
<span class="cstat-no" title="statement not covered" > if (items.length && Array.isArray(items[0][key])) {</span>
|
|
3340
|
-
<span class="cstat-no" title="statement not covered" > return groupByArray(items, key);</span>
|
|
3341
|
-
}
|
|
3342
|
-
<span class="cstat-no" title="statement not covered" > return _.groupBy(items, key);</span>
|
|
3343
|
-
|
|
3344
|
-
function <span class="fstat-no" title="function not covered" >groupByArray(</span>items, arrayName) {
|
|
3345
|
-
const results = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
3346
|
-
// looping over each item in the original array
|
|
3347
|
-
<span class="cstat-no" title="statement not covered" > _.each(items, <span class="fstat-no" title="function not covered" >fu</span>nction(item) {</span>
|
|
3348
|
-
// looping over each item in the array within the top level item
|
|
3349
|
-
<span class="cstat-no" title="statement not covered" > _.each(item[arrayName] || [], <span class="fstat-no" title="function not covered" >fu</span>nction(inner) {</span>
|
|
3350
|
-
<span class="cstat-no" title="statement not covered" > if (!results[inner]) {</span>
|
|
3351
|
-
<span class="cstat-no" title="statement not covered" > results[inner] = [];</span>
|
|
3352
|
-
}
|
|
3353
|
-
// grouping top level items on the sub properties
|
|
3354
|
-
<span class="cstat-no" title="statement not covered" > results[inner].push(item);</span>
|
|
3355
|
-
});
|
|
3356
|
-
});
|
|
3357
|
-
|
|
3358
|
-
<span class="cstat-no" title="statement not covered" > return results;</span>
|
|
3359
|
-
}
|
|
3360
|
-
|
|
3361
|
-
},
|
|
3362
|
-
|
|
3363
|
-
// Given a series of alternating keys and values, this
|
|
3364
|
-
// function returns an object with those values for
|
|
3365
|
-
// those keys. For instance, apos.util.object('name', 'bob')
|
|
3366
|
-
// returns { name: 'bob' }. This is useful because
|
|
3367
|
-
// Nunjucks does not allow you to create an object with
|
|
3368
|
-
// a property whose name is unknown at the time the
|
|
3369
|
-
// template is written.
|
|
3370
|
-
object: <span class="fstat-no" title="function not covered" >fu</span>nction(/* key, value, ... */) {
|
|
3371
|
-
const o = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
3372
|
-
let i = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
3373
|
-
<span class="cstat-no" title="statement not covered" > while (i < arguments.length) {</span>
|
|
3374
|
-
<span class="cstat-no" title="statement not covered" > o[arguments[i]] = arguments[i + 1];</span>
|
|
3375
|
-
<span class="cstat-no" title="statement not covered" > i += 2;</span>
|
|
3376
|
-
}
|
|
3377
|
-
<span class="cstat-no" title="statement not covered" > return o;</span>
|
|
3378
|
-
},
|
|
3379
|
-
|
|
3380
|
-
// Pass as many objects as you want; they will get merged via
|
|
3381
|
-
// `_.merge` into a new object, without modifying any of them, and
|
|
3382
|
-
// the resulting object will be returned. If several objects have
|
|
3383
|
-
// a property, the last object wins.
|
|
3384
|
-
//
|
|
3385
|
-
// This is useful to add one more option to an options object
|
|
3386
|
-
// which was passed to you.
|
|
3387
|
-
//
|
|
3388
|
-
// If any argument is null, it is skipped gracefully. This allows
|
|
3389
|
-
// you to pass in an options object without checking if it is null.
|
|
3390
|
-
|
|
3391
|
-
merge: <span class="fstat-no" title="function not covered" >fu</span>nction() {
|
|
3392
|
-
let result = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
3393
|
-
let i;
|
|
3394
|
-
<span class="cstat-no" title="statement not covered" > for (i = 0; (i < arguments.length); i++) {</span>
|
|
3395
|
-
<span class="cstat-no" title="statement not covered" > if (!arguments[i]) {</span>
|
|
3396
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
3397
|
-
}
|
|
3398
|
-
<span class="cstat-no" title="statement not covered" > result = _.merge(result, arguments[i]);</span>
|
|
3399
|
-
}
|
|
3400
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
3401
|
-
}
|
|
3402
|
-
};
|
|
3403
|
-
}
|
|
3404
|
-
};
|
|
3405
|
-
</pre></td></tr></table></pre>
|
|
3406
|
-
|
|
3407
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
3408
|
-
</div><!-- /wrapper -->
|
|
3409
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
3410
|
-
Code coverage generated by
|
|
3411
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3412
|
-
at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
|
|
3413
|
-
</div>
|
|
3414
|
-
<script src="../../../../prettify.js"></script>
|
|
3415
|
-
<script>
|
|
3416
|
-
window.onload = function () {
|
|
3417
|
-
prettyPrint();
|
|
3418
|
-
};
|
|
3419
|
-
</script>
|
|
3420
|
-
<script src="../../../../sorter.js"></script>
|
|
3421
|
-
<script src="../../../../block-navigation.js"></script>
|
|
3422
|
-
</body>
|
|
3423
|
-
</html>
|
|
3424
|
-
|