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,781 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for a3/modules/@apostrophecms/oembed/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/oembed</a> index.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">21.42% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>15/70</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">11.11% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>4/36</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">54.54% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>6/11</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">21.42% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>15/70</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 low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
|
|
299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
303
|
-
<span class="cline-any cline-neutral"> </span>
|
|
304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-yes">90x</span>
|
|
322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-yes">90x</span>
|
|
328
|
-
<span class="cline-any cline-yes">90x</span>
|
|
329
|
-
<span class="cline-any cline-yes">90x</span>
|
|
330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
332
|
-
<span class="cline-any cline-yes">90x</span>
|
|
333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-yes">90x</span>
|
|
339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
342
|
-
<span class="cline-any cline-yes">90x</span>
|
|
343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
347
|
-
<span class="cline-any cline-yes">90x</span>
|
|
348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">90x</span>
|
|
356
|
-
<span class="cline-any cline-yes">90x</span>
|
|
357
|
-
<span class="cline-any cline-yes">90x</span>
|
|
358
|
-
<span class="cline-any cline-yes">90x</span>
|
|
359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
372
|
-
<span class="cline-any cline-neutral"> </span>
|
|
373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-no"> </span>
|
|
395
|
-
<span class="cline-any cline-no"> </span>
|
|
396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
397
|
-
<span class="cline-any cline-no"> </span>
|
|
398
|
-
<span class="cline-any cline-no"> </span>
|
|
399
|
-
<span class="cline-any cline-no"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-no"> </span>
|
|
403
|
-
<span class="cline-any cline-no"> </span>
|
|
404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
405
|
-
<span class="cline-any cline-no"> </span>
|
|
406
|
-
<span class="cline-any cline-no"> </span>
|
|
407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-no"> </span>
|
|
409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-no"> </span>
|
|
438
|
-
<span class="cline-any cline-no"> </span>
|
|
439
|
-
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-no"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-no"> </span>
|
|
452
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
-
<span class="cline-any cline-no"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-no"> </span>
|
|
485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-no"> </span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-yes">29x</span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-yes">90x</span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-no"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const cheerio = require('cheerio');
|
|
531
|
-
|
|
532
|
-
// The oembed module provides an oembed query service for embedding
|
|
533
|
-
// third-party website content, such as YouTube videos. The service includes
|
|
534
|
-
// enhancements and substitutes for several services that do not support
|
|
535
|
-
// oembed or do not support it well, and it is possible to add more by
|
|
536
|
-
// extending the `enhanceOembetter` method. The server-side
|
|
537
|
-
// code provides a query route with caching. The browser-side code
|
|
538
|
-
// provides methods to make a query, and also to make a query and then immediately
|
|
539
|
-
// display the result.
|
|
540
|
-
//
|
|
541
|
-
// Also see the [oembetter](https://www.npmjs.com/package/oembetter) npm module and
|
|
542
|
-
// the [oembed](http://oembed.com/) documentation.
|
|
543
|
-
//
|
|
544
|
-
// Sites to be embedded need to be allowlisted, to avoid XSS attacks. Many
|
|
545
|
-
// widely trusted sites are already allowlisted.
|
|
546
|
-
//
|
|
547
|
-
// Your `allowlist` option is concatenated with `oembetter`'s standard
|
|
548
|
-
// allowlist, plus wufoo.com, infogr.am, and slideshare.net.
|
|
549
|
-
//
|
|
550
|
-
// Your `endpoints` option is concatenated with `oembetter`'s standard
|
|
551
|
-
// endpoints list.
|
|
552
|
-
|
|
553
|
-
module.exports = {
|
|
554
|
-
options: {
|
|
555
|
-
alias: 'oembed',
|
|
556
|
-
cacheLifetime: 60 * 60
|
|
557
|
-
},
|
|
558
|
-
init(self) {
|
|
559
|
-
self.createOembetter();
|
|
560
|
-
self.enhanceOembetter();
|
|
561
|
-
self.enableBrowserData();
|
|
562
|
-
},
|
|
563
|
-
methods(self) {
|
|
564
|
-
return {
|
|
565
|
-
|
|
566
|
-
// Creates an instance of the `oembetter` module and adds the standard allowlist.
|
|
567
|
-
// Called by `afterConstruct`.
|
|
568
|
-
|
|
569
|
-
createOembetter() {
|
|
570
|
-
self.oembetter = require('oembetter')();
|
|
571
|
-
// Don't permit oembed of untrusted sites, which could
|
|
572
|
-
// lead to XSS attacks
|
|
573
|
-
|
|
574
|
-
self.oembetter.allowlist(self.oembetter.suggestedAllowlist.concat(self.options.allowlist || [], [
|
|
575
|
-
'wufoo.com',
|
|
576
|
-
'infogr.am',
|
|
577
|
-
'slideshare.net'
|
|
578
|
-
]));
|
|
579
|
-
self.oembetter.endpoints(self.oembetter.suggestedEndpoints.concat(self.options.endpoints || []));
|
|
580
|
-
},
|
|
581
|
-
|
|
582
|
-
// Enhances oembetter to support services better or to support services
|
|
583
|
-
// that have no oembed support by default. Called by `afterConstruct`.
|
|
584
|
-
// Extend this method to add additional `oembetter` filters.
|
|
585
|
-
|
|
586
|
-
enhanceOembetter() {
|
|
587
|
-
require('./lib/youtube.js')(self, self.oembetter);
|
|
588
|
-
require('./lib/vimeo.js')(self, self.oembetter);
|
|
589
|
-
require('./lib/wufoo.js')(self, self.oembetter);
|
|
590
|
-
require('./lib/infogram.js')(self, self.oembetter);
|
|
591
|
-
},
|
|
592
|
-
|
|
593
|
-
// This method fetches the specified URL, determines its best embedded
|
|
594
|
-
// representation via `oembetter`, and on success returns an
|
|
595
|
-
// object containing the oembed API response from the service provider.
|
|
596
|
-
//
|
|
597
|
-
// If `options.alwaysIframe` is true, the result is a simple
|
|
598
|
-
// iframe of the URL. If `options.iframeHeight` is set, the iframe
|
|
599
|
-
// has that height in pixels, otherwise it is left to CSS.
|
|
600
|
-
//
|
|
601
|
-
// The `options` object is passed on to `oembetter.fetch`.
|
|
602
|
-
//
|
|
603
|
-
// Responses are automatically cached, by default for one hour. See the
|
|
604
|
-
// cacheLifetime option to the module.
|
|
605
|
-
<span class="fstat-no" title="function not covered" > as</span>ync query(req, url, options) {
|
|
606
|
-
<span class="cstat-no" title="statement not covered" > if (!options) {</span>
|
|
607
|
-
<span class="cstat-no" title="statement not covered" > options = {};</span>
|
|
608
|
-
}
|
|
609
|
-
<span class="cstat-no" title="statement not covered" > if (!options.headers) {</span>
|
|
610
|
-
<span class="cstat-no" title="statement not covered" > options = {</span>
|
|
611
|
-
...options,
|
|
612
|
-
headers: {
|
|
613
|
-
// Enables access to vimeo private videos locked to this domain
|
|
614
|
-
Referer: req.baseUrlWithPrefix
|
|
615
|
-
}
|
|
616
|
-
};
|
|
617
|
-
}
|
|
618
|
-
<span class="cstat-no" title="statement not covered" > if (!options.headers.Referer) {</span>
|
|
619
|
-
<span class="cstat-no" title="statement not covered" > options.headers = {</span>
|
|
620
|
-
...options.headers,
|
|
621
|
-
Referer: req.baseUrlWithPrefix
|
|
622
|
-
};
|
|
623
|
-
}
|
|
624
|
-
// Tolerant URL handling
|
|
625
|
-
<span class="cstat-no" title="statement not covered" > url = self.apos.launder.url(url, null, true);</span>
|
|
626
|
-
<span class="cstat-no" title="statement not covered" > if (!url) {</span>
|
|
627
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'Video URL invalid');</span>
|
|
628
|
-
}
|
|
629
|
-
const key = <span class="cstat-no" title="statement not covered" >url + ':' + JSON.stringify(options);</span>
|
|
630
|
-
let response = <span class="cstat-no" title="statement not covered" >await self.apos.cache.get('@apostrophecms/oembed', key);</span>
|
|
631
|
-
<span class="cstat-no" title="statement not covered" > if (response !== undefined) {</span>
|
|
632
|
-
<span class="cstat-no" title="statement not covered" > return response;</span>
|
|
633
|
-
}
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > if (options.alwaysIframe) {</span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > response = await self.iframe(req, url, options);</span>
|
|
636
|
-
} else {
|
|
637
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
638
|
-
<span class="cstat-no" title="statement not covered" > response = await require('util').promisify(self.oembetter.fetch)(url, options);</span>
|
|
639
|
-
} catch (err) {
|
|
640
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'Video URL invalid');</span>
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
// Make non-secure URLs protocol relative and
|
|
644
|
-
// let the browser upgrade them to https if needed
|
|
645
|
-
function <span class="fstat-no" title="function not covered" >makeProtocolRelative(</span>s) {
|
|
646
|
-
<span class="cstat-no" title="statement not covered" > s = s.replace(/^http:\/\//, '//');</span>
|
|
647
|
-
<span class="cstat-no" title="statement not covered" > return s.replace(/(["'])http:\/\//g, '$1//');</span>
|
|
648
|
-
}
|
|
649
|
-
<span class="cstat-no" title="statement not covered" > if (response.thumbnail_url) {</span>
|
|
650
|
-
<span class="cstat-no" title="statement not covered" > response.thumbnail_url = makeProtocolRelative(response.thumbnail_url);</span>
|
|
651
|
-
}
|
|
652
|
-
<span class="cstat-no" title="statement not covered" > if (response.html) {</span>
|
|
653
|
-
<span class="cstat-no" title="statement not covered" > response.html = makeProtocolRelative(response.html);</span>
|
|
654
|
-
}
|
|
655
|
-
// cache oembed responses for one hour
|
|
656
|
-
<span class="cstat-no" title="statement not covered" > await self.apos.cache.set('@apostrophecms/oembed', key, response, self.options.cacheLifetime);</span>
|
|
657
|
-
<span class="cstat-no" title="statement not covered" > return response;</span>
|
|
658
|
-
},
|
|
659
|
-
// Given a URL, return an oembed response for it
|
|
660
|
-
// which just iframes the URL given. Fetches the page
|
|
661
|
-
// first to get the title property.
|
|
662
|
-
//
|
|
663
|
-
// If options.iframeHeight is set, use that # of
|
|
664
|
-
// pixels, otherwise do not specify & let CSS do it.
|
|
665
|
-
//
|
|
666
|
-
// Called by `self.query` if the `alwaysIframe` option
|
|
667
|
-
// is true.
|
|
668
|
-
<span class="fstat-no" title="function not covered" > as</span>ync iframe(req, url, options) {
|
|
669
|
-
const body = <span class="cstat-no" title="statement not covered" >await self.apos.http.get(url);</span>
|
|
670
|
-
const $ = <span class="cstat-no" title="statement not covered" >cheerio.load(body);</span>
|
|
671
|
-
let title = <span class="cstat-no" title="statement not covered" >url;</span>
|
|
672
|
-
<span class="cstat-no" title="statement not covered" > if ($) {</span>
|
|
673
|
-
<span class="cstat-no" title="statement not covered" > title = $('meta[property="og:title"]').attr('content') || $('title').text();</span>
|
|
674
|
-
<span class="cstat-no" title="statement not covered" > if (!title) {</span>
|
|
675
|
-
// A common goof these days
|
|
676
|
-
<span class="cstat-no" title="statement not covered" > title = $('h1').text();</span>
|
|
677
|
-
<span class="cstat-no" title="statement not covered" > if (!title) {</span>
|
|
678
|
-
// Oh c'mon
|
|
679
|
-
<span class="cstat-no" title="statement not covered" > title = url;</span>
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
let style = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
684
|
-
let html = <span class="cstat-no" title="statement not covered" >'<iframe STYLE src="' + self.escapeHtml(url) + '" class="apos-always-iframe"></iframe>';</span>
|
|
685
|
-
<span class="cstat-no" title="statement not covered" > if (options.iframeHeight) {</span>
|
|
686
|
-
<span class="cstat-no" title="statement not covered" > style = 'style="height:' + options.iframeHeight + 'px"';</span>
|
|
687
|
-
}
|
|
688
|
-
<span class="cstat-no" title="statement not covered" > html = html.replace('STYLE', style);</span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
690
|
-
title: title,
|
|
691
|
-
type: 'rich',
|
|
692
|
-
html: html
|
|
693
|
-
};
|
|
694
|
-
},
|
|
695
|
-
// Returns browser-side javascript to load a given
|
|
696
|
-
// cross-domain js file dynamically and then run
|
|
697
|
-
// the javascript code in the `then` string argument.
|
|
698
|
-
// `script` should be a URL pointing to the third-party
|
|
699
|
-
// js file and may start with // to autoselect
|
|
700
|
-
// http or https depending on how the page was loaded.
|
|
701
|
-
//
|
|
702
|
-
// You may supply an id attribute for the script tag.
|
|
703
|
-
// Some services rely on these (infogr.am).
|
|
704
|
-
//
|
|
705
|
-
// You may also supply the ID of an element that the
|
|
706
|
-
// script should be inserted immediately before. Some
|
|
707
|
-
// services try to infer how they should behave from the
|
|
708
|
-
// context the script tag is in (infogr.am).
|
|
709
|
-
//
|
|
710
|
-
// This code was inspired by the wufoo embed code and
|
|
711
|
-
// is used to dynamically load wufoo and other services
|
|
712
|
-
// that use js-based embed codes. See the oembetter
|
|
713
|
-
// filter in `wufoo.js`.
|
|
714
|
-
<span class="fstat-no" title="function not covered" > af</span>terScriptLoads(script, beforeId, scriptId, then) {
|
|
715
|
-
<span class="cstat-no" title="statement not covered" > if (script.match(/^\/\//)) {</span>
|
|
716
|
-
<span class="cstat-no" title="statement not covered" > script = '(\'https:\' == d.location.protocol ? \'https:\' : \'http:\') + \'' + script + '\'';</span>
|
|
717
|
-
} else {
|
|
718
|
-
<span class="cstat-no" title="statement not covered" > script = '\'' + script + '\'';</span>
|
|
719
|
-
}
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > if (scriptId) {</span>
|
|
721
|
-
<span class="cstat-no" title="statement not covered" > scriptId = 's.id = "' + scriptId + '"; ';</span>
|
|
722
|
-
} else {
|
|
723
|
-
<span class="cstat-no" title="statement not covered" > scriptId = '';</span>
|
|
724
|
-
}
|
|
725
|
-
let before;
|
|
726
|
-
<span class="cstat-no" title="statement not covered" > if (beforeId) {</span>
|
|
727
|
-
<span class="cstat-no" title="statement not covered" > before = 'd.getElementById("' + beforeId + '")';</span>
|
|
728
|
-
} else {
|
|
729
|
-
<span class="cstat-no" title="statement not covered" > before = 'd.getElementsByTagName(t)[0]';</span>
|
|
730
|
-
}
|
|
731
|
-
<span class="cstat-no" title="statement not covered" > return '<script type="text/javascript">' + '(function(d, t) {' + 'var s = d.createElement(t);' + 's.src = ' + script + ';' + scriptId + 's.onload = s.onreadystatechange = function() {' + 'var rs = this.readyState; if (rs) if (rs != \'complete\') if (rs != \'loaded\') return;' + then + '};' + 'var scr = ' + before + ', par = scr.parentNode; par.insertBefore(s, scr);' + '})(document, \'script\');' + '</script>';</span>
|
|
732
|
-
},
|
|
733
|
-
getBrowserData(req) {
|
|
734
|
-
// api is public
|
|
735
|
-
return {
|
|
736
|
-
action: self.action
|
|
737
|
-
};
|
|
738
|
-
}
|
|
739
|
-
};
|
|
740
|
-
},
|
|
741
|
-
apiRoutes(self) {
|
|
742
|
-
return {
|
|
743
|
-
// Simple API to self.query, with caching. Accepts url and
|
|
744
|
-
// alwaysIframe parameters; alwaysIframe is assumed false
|
|
745
|
-
// if not provided. The response is a JSON object as returned
|
|
746
|
-
// by apos.oembed. A GET request because it is cache-friendly.
|
|
747
|
-
get: {
|
|
748
|
-
<span class="fstat-no" title="function not covered" > as</span>ync query(req) {
|
|
749
|
-
const url = <span class="cstat-no" title="statement not covered" >self.apos.launder.string(req.query.url);</span>
|
|
750
|
-
const options = <span class="cstat-no" title="statement not covered" >{</span>
|
|
751
|
-
alwaysIframe: self.apos.launder.boolean(req.query.alwaysIframe),
|
|
752
|
-
iframeHeight: self.apos.launder.integer(req.query.iframeHeight)
|
|
753
|
-
};
|
|
754
|
-
|
|
755
|
-
const result = <span class="cstat-no" title="statement not covered" >await self.query(req, url, options);</span>
|
|
756
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
|
-
};
|
|
760
|
-
}
|
|
761
|
-
};
|
|
762
|
-
</pre></td></tr></table></pre>
|
|
763
|
-
|
|
764
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
765
|
-
</div><!-- /wrapper -->
|
|
766
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
767
|
-
Code coverage generated by
|
|
768
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
769
|
-
at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
|
|
770
|
-
</div>
|
|
771
|
-
<script src="../../../../prettify.js"></script>
|
|
772
|
-
<script>
|
|
773
|
-
window.onload = function () {
|
|
774
|
-
prettyPrint();
|
|
775
|
-
};
|
|
776
|
-
</script>
|
|
777
|
-
<script src="../../../../sorter.js"></script>
|
|
778
|
-
<script src="../../../../block-navigation.js"></script>
|
|
779
|
-
</body>
|
|
780
|
-
</html>
|
|
781
|
-
|