@kalisio/kdk 2.6.3 → 2.6.5

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.
Files changed (273) hide show
  1. package/core/api/hooks/hooks.model.js +1 -1
  2. package/extras/tours/pane.top.js +9 -0
  3. package/map/client/i18n/map_en.json +2 -1
  4. package/map/client/i18n/map_fr.json +2 -1
  5. package/package.json +1 -1
  6. package/test/api/core/test-log-2026-03-26.log +0 -0
  7. package/client/css/core.variables.scss +0 -72
  8. package/client/i18n/core_en.json +0 -744
  9. package/client/i18n/core_fr.json +0 -744
  10. package/client/i18n/map_en.json +0 -800
  11. package/client/i18n/map_fr.json +0 -800
  12. package/client/kdk.client.css +0 -47
  13. package/client/kdk.client.js +0 -41097
  14. package/client/kdk.client.map.css +0 -47
  15. package/client/kdk.client.map.js +0 -38182
  16. package/client/kdk.client.map.min.css +0 -1
  17. package/client/kdk.client.map.min.js +0 -27032
  18. package/client/kdk.client.min.css +0 -1
  19. package/client/kdk.client.min.js +0 -29074
  20. package/client/schemas/capture.create.json +0 -132
  21. package/client/schemas/catalog.update.json +0 -44
  22. package/client/schemas/messages.update.json +0 -16
  23. package/client/schemas/projects.create.json +0 -52
  24. package/client/schemas/projects.update.json +0 -52
  25. package/client/schemas/settings.update.json +0 -286
  26. package/client/schemas/tags.update.json +0 -35
  27. package/client/schemas/users.update-profile.json +0 -34
  28. package/coverage/base.css +0 -224
  29. package/coverage/block-navigation.js +0 -87
  30. package/coverage/core/api/application.js.html +0 -1864
  31. package/coverage/core/api/authentication.js.html +0 -907
  32. package/coverage/core/api/db.js.html +0 -817
  33. package/coverage/core/api/hooks/hooks.authentication.js.html +0 -139
  34. package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -964
  35. package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
  36. package/coverage/core/api/hooks/hooks.model.js.html +0 -967
  37. package/coverage/core/api/hooks/hooks.push.js.html +0 -268
  38. package/coverage/core/api/hooks/hooks.query.js.html +0 -910
  39. package/coverage/core/api/hooks/hooks.schemas.js.html +0 -298
  40. package/coverage/core/api/hooks/hooks.service.js.html +0 -319
  41. package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
  42. package/coverage/core/api/hooks/hooks.tags.js.html +0 -253
  43. package/coverage/core/api/hooks/hooks.users.js.html +0 -676
  44. package/coverage/core/api/hooks/index.html +0 -281
  45. package/coverage/core/api/hooks/index.js.html +0 -115
  46. package/coverage/core/api/index.html +0 -176
  47. package/coverage/core/api/index.js.html +0 -148
  48. package/coverage/core/api/marshall.js.html +0 -448
  49. package/coverage/core/api/models/configurations.model.mongodb.js.html +0 -97
  50. package/coverage/core/api/models/index.html +0 -161
  51. package/coverage/core/api/models/messages.model.mongodb.js.html +0 -121
  52. package/coverage/core/api/models/tags.model.mongodb.js.html +0 -109
  53. package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
  54. package/coverage/core/api/services/account/account.hooks.js.html +0 -208
  55. package/coverage/core/api/services/account/account.service.js.html +0 -436
  56. package/coverage/core/api/services/account/index.html +0 -131
  57. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  58. package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -520
  59. package/coverage/core/api/services/authorisations/index.html +0 -131
  60. package/coverage/core/api/services/configurations/configurations.hooks.js.html +0 -184
  61. package/coverage/core/api/services/configurations/index.html +0 -116
  62. package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
  63. package/coverage/core/api/services/databases/databases.service.js.html +0 -100
  64. package/coverage/core/api/services/databases/index.html +0 -131
  65. package/coverage/core/api/services/import-export/import-export.hooks.js.html +0 -184
  66. package/coverage/core/api/services/import-export/import-export.service.js.html +0 -118
  67. package/coverage/core/api/services/import-export/index.html +0 -131
  68. package/coverage/core/api/services/index.html +0 -116
  69. package/coverage/core/api/services/index.js.html +0 -727
  70. package/coverage/core/api/services/mailer/index.html +0 -131
  71. package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
  72. package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
  73. package/coverage/core/api/services/messages/index.html +0 -116
  74. package/coverage/core/api/services/messages/messages.hooks.js.html +0 -220
  75. package/coverage/core/api/services/push/index.html +0 -131
  76. package/coverage/core/api/services/push/push.hooks.js.html +0 -190
  77. package/coverage/core/api/services/push/push.service.js.html +0 -121
  78. package/coverage/core/api/services/storage/index.html +0 -131
  79. package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
  80. package/coverage/core/api/services/storage/storage.service.js.html +0 -172
  81. package/coverage/core/api/services/tags/index.html +0 -116
  82. package/coverage/core/api/services/tags/tags.hooks.js.html +0 -226
  83. package/coverage/core/api/services/users/index.html +0 -131
  84. package/coverage/core/api/services/users/users.hooks.js.html +0 -310
  85. package/coverage/core/api/services/users/users.service.js.html +0 -100
  86. package/coverage/core/common/errors.js.html +0 -88
  87. package/coverage/core/common/index.html +0 -191
  88. package/coverage/core/common/index.js.html +0 -115
  89. package/coverage/core/common/permissions.js.html +0 -742
  90. package/coverage/core/common/schema.js.html +0 -190
  91. package/coverage/core/common/utils.js.html +0 -226
  92. package/coverage/core/common/utils.offline.js.html +0 -199
  93. package/coverage/favicon.png +0 -0
  94. package/coverage/index.html +0 -506
  95. package/coverage/lcov-report/base.css +0 -224
  96. package/coverage/lcov-report/block-navigation.js +0 -87
  97. package/coverage/lcov-report/core/api/application.js.html +0 -1864
  98. package/coverage/lcov-report/core/api/authentication.js.html +0 -907
  99. package/coverage/lcov-report/core/api/db.js.html +0 -817
  100. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -139
  101. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -964
  102. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
  103. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -967
  104. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +0 -268
  105. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -910
  106. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -298
  107. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
  108. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
  109. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +0 -253
  110. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -676
  111. package/coverage/lcov-report/core/api/hooks/index.html +0 -281
  112. package/coverage/lcov-report/core/api/hooks/index.js.html +0 -115
  113. package/coverage/lcov-report/core/api/index.html +0 -176
  114. package/coverage/lcov-report/core/api/index.js.html +0 -148
  115. package/coverage/lcov-report/core/api/marshall.js.html +0 -448
  116. package/coverage/lcov-report/core/api/models/configurations.model.mongodb.js.html +0 -97
  117. package/coverage/lcov-report/core/api/models/index.html +0 -161
  118. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +0 -121
  119. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -109
  120. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
  121. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -208
  122. package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -436
  123. package/coverage/lcov-report/core/api/services/account/index.html +0 -131
  124. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  125. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -520
  126. package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
  127. package/coverage/lcov-report/core/api/services/configurations/configurations.hooks.js.html +0 -184
  128. package/coverage/lcov-report/core/api/services/configurations/index.html +0 -116
  129. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
  130. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
  131. package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
  132. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +0 -184
  133. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +0 -118
  134. package/coverage/lcov-report/core/api/services/import-export/index.html +0 -131
  135. package/coverage/lcov-report/core/api/services/index.html +0 -116
  136. package/coverage/lcov-report/core/api/services/index.js.html +0 -727
  137. package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
  138. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
  139. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
  140. package/coverage/lcov-report/core/api/services/messages/index.html +0 -116
  141. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +0 -220
  142. package/coverage/lcov-report/core/api/services/push/index.html +0 -131
  143. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +0 -190
  144. package/coverage/lcov-report/core/api/services/push/push.service.js.html +0 -121
  145. package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
  146. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
  147. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
  148. package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
  149. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -226
  150. package/coverage/lcov-report/core/api/services/users/index.html +0 -131
  151. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -310
  152. package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
  153. package/coverage/lcov-report/core/common/errors.js.html +0 -88
  154. package/coverage/lcov-report/core/common/index.html +0 -191
  155. package/coverage/lcov-report/core/common/index.js.html +0 -115
  156. package/coverage/lcov-report/core/common/permissions.js.html +0 -742
  157. package/coverage/lcov-report/core/common/schema.js.html +0 -190
  158. package/coverage/lcov-report/core/common/utils.js.html +0 -226
  159. package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
  160. package/coverage/lcov-report/favicon.png +0 -0
  161. package/coverage/lcov-report/index.html +0 -506
  162. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -595
  163. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -397
  164. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1309
  165. package/coverage/lcov-report/map/api/hooks/index.html +0 -161
  166. package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
  167. package/coverage/lcov-report/map/api/index.html +0 -131
  168. package/coverage/lcov-report/map/api/index.js.html +0 -139
  169. package/coverage/lcov-report/map/api/marshall.js.html +0 -178
  170. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
  171. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -202
  172. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -196
  173. package/coverage/lcov-report/map/api/models/index.html +0 -176
  174. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +0 -109
  175. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
  176. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
  177. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
  178. package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
  179. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -337
  180. package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
  181. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  182. package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
  183. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -316
  184. package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -544
  185. package/coverage/lcov-report/map/api/services/features/index.html +0 -131
  186. package/coverage/lcov-report/map/api/services/index.html +0 -116
  187. package/coverage/lcov-report/map/api/services/index.js.html +0 -1093
  188. package/coverage/lcov-report/map/api/services/projects/index.html +0 -116
  189. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +0 -439
  190. package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
  191. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -211
  192. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
  193. package/coverage/lcov-report/map/common/errors.js.html +0 -94
  194. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -538
  195. package/coverage/lcov-report/map/common/grid.js.html +0 -1612
  196. package/coverage/lcov-report/map/common/index.html +0 -371
  197. package/coverage/lcov-report/map/common/index.js.html +0 -172
  198. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
  199. package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
  200. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
  201. package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -823
  202. package/coverage/lcov-report/map/common/permissions.js.html +0 -130
  203. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
  204. package/coverage/lcov-report/map/common/tms-utils.js.html +0 -271
  205. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
  206. package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -583
  207. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
  208. package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -571
  209. package/coverage/lcov-report/map/common/wms-utils.js.html +0 -469
  210. package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -544
  211. package/coverage/lcov-report/prettify.css +0 -1
  212. package/coverage/lcov-report/prettify.js +0 -2
  213. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  214. package/coverage/lcov-report/sorter.js +0 -196
  215. package/coverage/lcov.info +0 -11012
  216. package/coverage/map/api/hooks/hooks.catalog.js.html +0 -595
  217. package/coverage/map/api/hooks/hooks.features.js.html +0 -397
  218. package/coverage/map/api/hooks/hooks.query.js.html +0 -1309
  219. package/coverage/map/api/hooks/index.html +0 -161
  220. package/coverage/map/api/hooks/index.js.html +0 -94
  221. package/coverage/map/api/index.html +0 -131
  222. package/coverage/map/api/index.js.html +0 -139
  223. package/coverage/map/api/marshall.js.html +0 -178
  224. package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
  225. package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -202
  226. package/coverage/map/api/models/features.model.mongodb.js.html +0 -196
  227. package/coverage/map/api/models/index.html +0 -176
  228. package/coverage/map/api/models/projects.model.mongodb.js.html +0 -109
  229. package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
  230. package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
  231. package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
  232. package/coverage/map/api/services/alerts/index.html +0 -131
  233. package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -337
  234. package/coverage/map/api/services/catalog/index.html +0 -116
  235. package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  236. package/coverage/map/api/services/daptiles/index.html +0 -116
  237. package/coverage/map/api/services/features/features.hooks.js.html +0 -316
  238. package/coverage/map/api/services/features/features.service.js.html +0 -544
  239. package/coverage/map/api/services/features/index.html +0 -131
  240. package/coverage/map/api/services/index.html +0 -116
  241. package/coverage/map/api/services/index.js.html +0 -1093
  242. package/coverage/map/api/services/projects/index.html +0 -116
  243. package/coverage/map/api/services/projects/projects.hooks.js.html +0 -439
  244. package/coverage/map/api/services/styles/index.html +0 -116
  245. package/coverage/map/api/services/styles/styles.hooks.js.html +0 -211
  246. package/coverage/map/common/dynamic-grid-source.js.html +0 -466
  247. package/coverage/map/common/errors.js.html +0 -94
  248. package/coverage/map/common/geotiff-grid-source.js.html +0 -538
  249. package/coverage/map/common/grid.js.html +0 -1612
  250. package/coverage/map/common/index.html +0 -371
  251. package/coverage/map/common/index.js.html +0 -172
  252. package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
  253. package/coverage/map/common/moment-utils.js.html +0 -157
  254. package/coverage/map/common/opendap-grid-source.js.html +0 -868
  255. package/coverage/map/common/opendap-utils.js.html +0 -823
  256. package/coverage/map/common/permissions.js.html +0 -130
  257. package/coverage/map/common/time-based-grid-source.js.html +0 -418
  258. package/coverage/map/common/tms-utils.js.html +0 -271
  259. package/coverage/map/common/wcs-grid-source.js.html +0 -364
  260. package/coverage/map/common/wcs-utils.js.html +0 -583
  261. package/coverage/map/common/weacast-grid-source.js.html +0 -1033
  262. package/coverage/map/common/wfs-utils.js.html +0 -571
  263. package/coverage/map/common/wms-utils.js.html +0 -469
  264. package/coverage/map/common/wmts-utils.js.html +0 -544
  265. package/coverage/prettify.css +0 -1
  266. package/coverage/prettify.js +0 -2
  267. package/coverage/sort-arrow-sprite.png +0 -0
  268. package/coverage/sorter.js +0 -196
  269. package/coverage/tmp/coverage-222524-1765963609350-0.json +0 -1
  270. package/coverage/tmp/coverage-222536-1765963609335-0.json +0 -1
  271. package/coverage/tmp/coverage-222547-1765963609324-0.json +0 -1
  272. package/coverage/tmp/coverage-222559-1765963609309-0.json +0 -1
  273. package/coverage/tmp/coverage-222566-1765963609278-0.json +0 -1
@@ -1,910 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for core/api/hooks/hooks.query.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">core/api/hooks</a> hooks.query.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">63.76% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>176/276</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">57.69% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>30/52</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">58.33% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>7/12</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">63.76% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>176/276</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
342
- <span class="cline-any cline-yes">1x</span>
343
- <span class="cline-any cline-yes">1x</span>
344
- <span class="cline-any cline-yes">1x</span>
345
- <span class="cline-any cline-yes">1x</span>
346
- <span class="cline-any cline-yes">1x</span>
347
- <span class="cline-any cline-yes">1x</span>
348
- <span class="cline-any cline-yes">1x</span>
349
- <span class="cline-any cline-yes">1x</span>
350
- <span class="cline-any cline-yes">1x</span>
351
- <span class="cline-any cline-yes">1x</span>
352
- <span class="cline-any cline-no">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-no">&nbsp;</span>
358
- <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-yes">1x</span>
360
- <span class="cline-any cline-yes">4x</span>
361
- <span class="cline-any cline-yes">4x</span>
362
- <span class="cline-any cline-yes">3x</span>
363
- <span class="cline-any cline-yes">3x</span>
364
- <span class="cline-any cline-yes">3x</span>
365
- <span class="cline-any cline-yes">4x</span>
366
- <span class="cline-any cline-yes">1x</span>
367
- <span class="cline-any cline-yes">1x</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
369
- <span class="cline-any cline-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-yes">1x</span>
375
- <span class="cline-any cline-yes">1x</span>
376
- <span class="cline-any cline-yes">1x</span>
377
- <span class="cline-any cline-yes">1x</span>
378
- <span class="cline-any cline-yes">1x</span>
379
- <span class="cline-any cline-yes">1x</span>
380
- <span class="cline-any cline-yes">1x</span>
381
- <span class="cline-any cline-yes">1x</span>
382
- <span class="cline-any cline-yes">1x</span>
383
- <span class="cline-any cline-no">&nbsp;</span>
384
- <span class="cline-any cline-no">&nbsp;</span>
385
- <span class="cline-any cline-no">&nbsp;</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-yes">1x</span>
390
- <span class="cline-any cline-yes">2x</span>
391
- <span class="cline-any cline-yes">2x</span>
392
- <span class="cline-any cline-yes">1x</span>
393
- <span class="cline-any cline-yes">1x</span>
394
- <span class="cline-any cline-yes">1x</span>
395
- <span class="cline-any cline-yes">1x</span>
396
- <span class="cline-any cline-yes">1x</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">2x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-no">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-no">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-yes">1x</span>
414
- <span class="cline-any cline-yes">1x</span>
415
- <span class="cline-any cline-yes">4x</span>
416
- <span class="cline-any cline-yes">4x</span>
417
- <span class="cline-any cline-yes">4x</span>
418
- <span class="cline-any cline-yes">4x</span>
419
- <span class="cline-any cline-yes">4x</span>
420
- <span class="cline-any cline-yes">4x</span>
421
- <span class="cline-any cline-yes">4x</span>
422
- <span class="cline-any cline-yes">4x</span>
423
- <span class="cline-any cline-yes">4x</span>
424
- <span class="cline-any cline-yes">4x</span>
425
- <span class="cline-any cline-yes">4x</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
429
- <span class="cline-any cline-yes">4x</span>
430
- <span class="cline-any cline-no">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-no">&nbsp;</span>
433
- <span class="cline-any cline-yes">4x</span>
434
- <span class="cline-any cline-yes">4x</span>
435
- <span class="cline-any cline-yes">4x</span>
436
- <span class="cline-any cline-yes">4x</span>
437
- <span class="cline-any cline-yes">4x</span>
438
- <span class="cline-any cline-yes">4x</span>
439
- <span class="cline-any cline-yes">4x</span>
440
- <span class="cline-any cline-yes">4x</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-yes">4x</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
448
- <span class="cline-any cline-yes">4x</span>
449
- <span class="cline-any cline-yes">4x</span>
450
- <span class="cline-any cline-yes">4x</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-yes">4x</span>
455
- <span class="cline-any cline-yes">4x</span>
456
- <span class="cline-any cline-yes">4x</span>
457
- <span class="cline-any cline-yes">4x</span>
458
- <span class="cline-any cline-yes">4x</span>
459
- <span class="cline-any cline-yes">4x</span>
460
- <span class="cline-any cline-yes">4x</span>
461
- <span class="cline-any cline-yes">4x</span>
462
- <span class="cline-any cline-yes">4x</span>
463
- <span class="cline-any cline-yes">4x</span>
464
- <span class="cline-any cline-yes">4x</span>
465
- <span class="cline-any cline-yes">4x</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-yes">4x</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-yes">4x</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-yes">4x</span>
479
- <span class="cline-any cline-yes">4x</span>
480
- <span class="cline-any cline-yes">4x</span>
481
- <span class="cline-any cline-yes">4x</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-yes">4x</span>
487
- <span class="cline-any cline-yes">4x</span>
488
- <span class="cline-any cline-yes">1x</span>
489
- <span class="cline-any cline-yes">1x</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-yes">1x</span>
503
- <span class="cline-any cline-yes">1x</span>
504
- <span class="cline-any cline-yes">4x</span>
505
- <span class="cline-any cline-yes">4x</span>
506
- <span class="cline-any cline-yes">4x</span>
507
- <span class="cline-any cline-yes">4x</span>
508
- <span class="cline-any cline-yes">4x</span>
509
- <span class="cline-any cline-yes">4x</span>
510
- <span class="cline-any cline-yes">4x</span>
511
- <span class="cline-any cline-yes">4x</span>
512
- <span class="cline-any cline-yes">4x</span>
513
- <span class="cline-any cline-yes">4x</span>
514
- <span class="cline-any cline-yes">4x</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-yes">4x</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-yes">4x</span>
523
- <span class="cline-any cline-yes">4x</span>
524
- <span class="cline-any cline-yes">4x</span>
525
- <span class="cline-any cline-yes">4x</span>
526
- <span class="cline-any cline-yes">4x</span>
527
- <span class="cline-any cline-yes">4x</span>
528
- <span class="cline-any cline-yes">4x</span>
529
- <span class="cline-any cline-yes">4x</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-yes">4x</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-yes">4x</span>
538
- <span class="cline-any cline-yes">4x</span>
539
- <span class="cline-any cline-yes">4x</span>
540
- <span class="cline-any cline-yes">4x</span>
541
- <span class="cline-any cline-yes">4x</span>
542
- <span class="cline-any cline-yes">4x</span>
543
- <span class="cline-any cline-yes">4x</span>
544
- <span class="cline-any cline-yes">4x</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-yes">4x</span>
552
- <span class="cline-any cline-yes">4x</span>
553
- <span class="cline-any cline-yes">4x</span>
554
- <span class="cline-any cline-yes">4x</span>
555
- <span class="cline-any cline-yes">4x</span>
556
- <span class="cline-any cline-yes">4x</span>
557
- <span class="cline-any cline-yes">4x</span>
558
- <span class="cline-any cline-yes">4x</span>
559
- <span class="cline-any cline-yes">4x</span>
560
- <span class="cline-any cline-yes">4x</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-yes">4x</span>
565
- <span class="cline-any cline-no">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-yes">4x</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-yes">4x</span>
573
- <span class="cline-any cline-yes">4x</span>
574
- <span class="cline-any cline-yes">4x</span>
575
- <span class="cline-any cline-yes">4x</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-yes">4x</span>
581
- <span class="cline-any cline-yes">4x</span>
582
- <span class="cline-any cline-yes">4x</span>
583
- <span class="cline-any cline-yes">1x</span>
584
- <span class="cline-any cline-yes">1x</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-yes">1x</span>
589
- <span class="cline-any cline-yes">1x</span>
590
- <span class="cline-any cline-yes">1x</span>
591
- <span class="cline-any cline-yes">1x</span>
592
- <span class="cline-any cline-yes">29x</span>
593
- <span class="cline-any cline-yes">2x</span>
594
- <span class="cline-any cline-yes">29x</span>
595
- <span class="cline-any cline-yes">17x</span>
596
- <span class="cline-any cline-yes">17x</span>
597
- <span class="cline-any cline-yes">17x</span>
598
- <span class="cline-any cline-yes">17x</span>
599
- <span class="cline-any cline-yes">6x</span>
600
- <span class="cline-any cline-yes">6x</span>
601
- <span class="cline-any cline-yes">6x</span>
602
- <span class="cline-any cline-yes">6x</span>
603
- <span class="cline-any cline-yes">17x</span>
604
- <span class="cline-any cline-yes">11x</span>
605
- <span class="cline-any cline-yes">11x</span>
606
- <span class="cline-any cline-yes">17x</span>
607
- <span class="cline-any cline-yes">17x</span>
608
- <span class="cline-any cline-yes">29x</span>
609
- <span class="cline-any cline-yes">1x</span>
610
- <span class="cline-any cline-yes">1x</span>
611
- <span class="cline-any cline-yes">1x</span>
612
- <span class="cline-any cline-yes">6x</span>
613
- <span class="cline-any cline-yes">16x</span>
614
- <span class="cline-any cline-yes">16x</span>
615
- <span class="cline-any cline-yes">16x</span>
616
- <span class="cline-any cline-yes">6x</span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
617
- import mongodb from 'mongodb'
618
- import makeDebug from 'debug'
619
- import { marshallComparisonFields, marshallTime, marshallBooleanFields, marshallNumberFields, marshallDateFields } from '../marshall.js'
620
- import { isValidObjectID, isObjectID } from '../db.js'
621
- import { makeDiacriticPattern } from '../../common/utils.js'
622
- &nbsp;
623
- const { ObjectID } = mongodb
624
- const debug = makeDebug('kdk:core:query:hooks')
625
- &nbsp;
626
- export <span class="fstat-no" title="function not covered" >function marshallTimeQuery (hook) {</span>
627
- <span class="cstat-no" title="statement not covered" > const query = hook.params.query</span>
628
- <span class="cstat-no" title="statement not covered" > if (query) {</span>
629
- <span class="cstat-no" title="statement not covered" > // Need to convert from client/server side types : string or moment dates</span>
630
- <span class="cstat-no" title="statement not covered" > marshallTime(query, 'time')</span>
631
- <span class="cstat-no" title="statement not covered" > }</span>
632
- <span class="cstat-no" title="statement not covered" >}</span>
633
- &nbsp;
634
- export function marshallComparisonQuery (hook) {
635
- const query = hook.params.query
636
- if (query) {
637
- // Complex queries might have nested objects so we call a recursive function to handle this
638
- marshallComparisonFields(query)
639
- }
640
- }
641
- &nbsp;
642
- export <span class="fstat-no" title="function not covered" >function marshallSortQuery (hook) {</span>
643
- <span class="cstat-no" title="statement not covered" > const query = hook.params.query</span>
644
- <span class="cstat-no" title="statement not covered" > if (query &amp;&amp; query.$sort) {</span>
645
- <span class="cstat-no" title="statement not covered" > // Complex queries might have nested objects so we call a recursive function to handle this</span>
646
- <span class="cstat-no" title="statement not covered" > marshallNumberFields(query.$sort)</span>
647
- <span class="cstat-no" title="statement not covered" > }</span>
648
- <span class="cstat-no" title="statement not covered" >}</span>
649
- &nbsp;
650
- export function marshallCollationQuery (hook) {
651
- const query = hook.params.query
652
- if (!query) <span class="branch-0 cbranch-no" title="branch not covered" >return</span>
653
- // Locale shortcut or whole query provided
654
- if (query.$locale) {
655
- hook.params.collation = { locale: query.$locale }
656
- delete query.$locale
657
- }<span class="branch-0 cbranch-no" title="branch not covered" > else if (query.$collation) {</span>
658
- <span class="cstat-no" title="statement not covered" > hook.params.collation = query.$collation</span>
659
- <span class="cstat-no" title="statement not covered" > delete query.$collation</span>
660
- <span class="cstat-no" title="statement not covered" > }</span>
661
- return hook
662
- }
663
- &nbsp;
664
- export function marshallHttpQuery (hook) {
665
- const provider = _.get(hook.params, 'provider')
666
- if (provider !== 'rest') return hook
667
- const query = hook.params.query
668
- if (query) {
669
- // Need to convert from client/server side types : numbers, boolean, dates, ...
670
- // ORder matters here as a boolean can be converted to number (0/1)
671
- marshallNumberFields(query)
672
- marshallBooleanFields(query)
673
- marshallDateFields(query)
674
- }
675
- }
676
- &nbsp;
677
- export <span class="fstat-no" title="function not covered" >async function aggregationQuery (hook) {</span>
678
- <span class="cstat-no" title="statement not covered" > const query = hook.params.query</span>
679
- <span class="cstat-no" title="statement not covered" > if (!query) return</span>
680
- <span class="cstat-no" title="statement not covered" > const service = hook.service</span>
681
- <span class="cstat-no" title="statement not covered" > if (query.$aggregation) {</span>
682
- <span class="cstat-no" title="statement not covered" > const collection = service.Model</span>
683
- <span class="cstat-no" title="statement not covered" > // Set result to avoid service DB call</span>
684
- <span class="cstat-no" title="statement not covered" > hook.result = await collection.aggregate(query.$aggregation.pipeline, query.$aggregation.options).toArray()</span>
685
- <span class="cstat-no" title="statement not covered" > }</span>
686
- <span class="cstat-no" title="statement not covered" > return hook</span>
687
- <span class="cstat-no" title="statement not covered" >}</span>
688
- &nbsp;
689
- export function populateObject (options) {
690
- return async function (hook) {
691
- const app = hook.app
692
- const data = hook.data
693
- const params = hook.params
694
- const query = params.query
695
- const context = hook.service.context
696
- const idProperty = options.nameIdAs || options.idField
697
- const serviceProperty = options.nameServiceAs || options.serviceField
698
- &nbsp;
699
- // Check if not already done
700
- if (typeof _.get(params, idProperty) === 'object') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
701
- <span class="cstat-no" title="statement not covered" > debug(`Skipping populating ${idProperty} as already done`)</span>
702
- <span class="cstat-no" title="statement not covered" > return hook</span>
703
- <span class="cstat-no" title="statement not covered" > }</span>
704
- if (typeof _.get(params, serviceProperty) === 'object') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
705
- <span class="cstat-no" title="statement not covered" > debug(`Skipping populating ${serviceProperty} as already done`)</span>
706
- <span class="cstat-no" title="statement not covered" > return hook</span>
707
- <span class="cstat-no" title="statement not covered" > }</span>
708
- &nbsp;
709
- // Get service where we can find the object to populate
710
- // Make hook usable with query params as well and service name or real object
711
- let service = _.get(data, options.serviceField) || _.get(query, options.serviceField)
712
- if (typeof service === 'string') {
713
- const message = `Cannot find the service for ${options.serviceField} = ${service} to dynamically populate.`
714
- service = app.getService(service, context)
715
- if (!service) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
716
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(message)</span>
717
- <span class="cstat-no" title="statement not covered" > else return hook</span>
718
- <span class="cstat-no" title="statement not covered" > }</span>
719
- }<span class="branch-0 cbranch-no" title="branch not covered" > else if (!service) {</span>
720
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(`No ${options.serviceField} given to dynamically populate.`)</span>
721
- <span class="cstat-no" title="statement not covered" > else return hook</span>
722
- <span class="cstat-no" title="statement not covered" > }</span>
723
- // Then the object ID
724
- const id = _.get(data, options.idField) || _.get(query, options.idField) || _.get(hook, 'id')
725
- if (!id) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
726
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(`Cannot find the ${options.idField} to dynamically populate.`)</span>
727
- <span class="cstat-no" title="statement not covered" > else return hook</span>
728
- <span class="cstat-no" title="statement not covered" > }</span>
729
- debug(`Populating ${idProperty} with ID ${id}`)
730
- // Set the retrieved service on the same field or given one in hook params
731
- _.set(params, serviceProperty, service)
732
- // Let it work with id/name string or real object
733
- if (typeof id === 'string' || isObjectID(id)) {
734
- const args = { user: hook.params.user }
735
- let object
736
- try {
737
- // Get by ID or name ?
738
- if (isObjectID(id) || isValidObjectID(id)) {
739
- object = await service.get(id.toString(), args)
740
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
741
- <span class="cstat-no" title="statement not covered" > Object.assign(args, { query: { name: id.toString() }, paginate: false })</span>
742
- <span class="cstat-no" title="statement not covered" > const results = await service.find(args)</span>
743
- <span class="cstat-no" title="statement not covered" > if (results.length &gt;= 0) object = results[0]</span>
744
- <span class="cstat-no" title="statement not covered" > }</span>
745
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
746
- <span class="cstat-no" title="statement not covered" > // Not found error is managed hereafter</span>
747
- <span class="cstat-no" title="statement not covered" > if (error.code !== 404) throw error</span>
748
- <span class="cstat-no" title="statement not covered" > }</span>
749
- if (!object) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
750
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(`Cannot find object with id ${id} to dynamically populate.`)</span>
751
- <span class="cstat-no" title="statement not covered" > else return hook</span>
752
- <span class="cstat-no" title="statement not covered" > }</span>
753
- // Set the retrieved object on the same field or given one in hook params
754
- _.set(params, idProperty, object)
755
- return hook
756
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
757
- <span class="cstat-no" title="statement not covered" > // Set the object on the same field or given one in hook params</span>
758
- <span class="cstat-no" title="statement not covered" > _.set(params, idProperty, id)</span>
759
- <span class="cstat-no" title="statement not covered" > return hook</span>
760
- <span class="cstat-no" title="statement not covered" > }</span>
761
- }
762
- }
763
- &nbsp;
764
- export <span class="fstat-no" title="function not covered" >function unpopulateObject (options) {</span>
765
- <span class="cstat-no" title="statement not covered" > return function (hook) {</span>
766
- <span class="cstat-no" title="statement not covered" > const params = hook.params</span>
767
- <span class="cstat-no" title="statement not covered" > const idProperty = options.nameIdAs || options.idField</span>
768
- <span class="cstat-no" title="statement not covered" > const serviceProperty = options.nameServiceAs || options.serviceField</span>
769
- <span class="cstat-no" title="statement not covered" ></span>
770
- <span class="cstat-no" title="statement not covered" > // Check if not already done</span>
771
- <span class="cstat-no" title="statement not covered" > _.unset(params, idProperty)</span>
772
- <span class="cstat-no" title="statement not covered" > _.unset(params, serviceProperty)</span>
773
- <span class="cstat-no" title="statement not covered" ></span>
774
- <span class="cstat-no" title="statement not covered" > return hook</span>
775
- <span class="cstat-no" title="statement not covered" > }</span>
776
- <span class="cstat-no" title="statement not covered" >}</span>
777
- &nbsp;
778
- export function populateObjects (options) {
779
- return async function (hook) {
780
- const app = hook.app
781
- const data = hook.data
782
- const params = hook.params
783
- const query = params.query
784
- const context = hook.service.context
785
- const idProperty = options.nameIdAs || options.idField
786
- const serviceProperty = options.nameServiceAs || options.serviceField
787
- &nbsp;
788
- // Check if not already done
789
- if (Array.isArray(_.get(params, idProperty))) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
790
- <span class="cstat-no" title="statement not covered" > debug(`Skipping populating ${idProperty} as already done`)</span>
791
- <span class="cstat-no" title="statement not covered" > return hook</span>
792
- <span class="cstat-no" title="statement not covered" > }</span>
793
- if (typeof _.get(params, serviceProperty) === 'object') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
794
- <span class="cstat-no" title="statement not covered" > debug(`Skipping populating ${serviceProperty} as already done`)</span>
795
- <span class="cstat-no" title="statement not covered" > return hook</span>
796
- <span class="cstat-no" title="statement not covered" > }</span>
797
- &nbsp;
798
- // Get service where we can find the object to populate
799
- // Make hook usable with query params as well and service name or real object
800
- let service = _.get(data, options.serviceField) || _.get(query, options.serviceField)
801
- if (typeof service === 'string') {
802
- const message = `Cannot find the service for ${options.serviceField} = ${service} to dynamically populate.`
803
- service = app.getService(service, context)
804
- if (!service) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
805
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(message)</span>
806
- <span class="cstat-no" title="statement not covered" > else return hook</span>
807
- <span class="cstat-no" title="statement not covered" > }</span>
808
- }<span class="branch-0 cbranch-no" title="branch not covered" > else if (!service) {</span>
809
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(`No ${options.serviceField} given to dynamically populate.`)</span>
810
- <span class="cstat-no" title="statement not covered" > else return hook</span>
811
- <span class="cstat-no" title="statement not covered" > }</span>
812
- &nbsp;
813
- // Set the retrieved service on the same field or given one in hook params
814
- _.set(params, serviceProperty, service)
815
- &nbsp;
816
- // Then the object ID
817
- const id = _.get(data, options.idField) || _.get(query, options.idField)
818
- // If no ID given we perform a find, no pagination to be sure we get all objects
819
- if (!id) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
820
- <span class="cstat-no" title="statement not covered" > debug(`Populating ${idProperty}`)</span>
821
- <span class="cstat-no" title="statement not covered" > const objects = await service.find({ query: {}, paginate: false, user: hook.params.user })</span>
822
- <span class="cstat-no" title="statement not covered" > // Set the retrieved objects on the same field or given one in hook params</span>
823
- <span class="cstat-no" title="statement not covered" > debug(`Populated ${objects.length} ${idProperty}`)</span>
824
- <span class="cstat-no" title="statement not covered" > _.set(params, idProperty, objects)</span>
825
- <span class="cstat-no" title="statement not covered" > return hook</span>
826
- } else {
827
- debug(`Populating ${idProperty} with ID ${id}`)
828
- // Let it work with id/name string or real object
829
- if (typeof id === 'string' <span class="branch-0 cbranch-no" title="branch not covered" >|| isObjectID(id))</span> {
830
- let object
831
- try {
832
- // Get by ID or name ?
833
- if (isObjectID(id) || isValidObjectID(id)) {
834
- object = await service.get(id.toString(), { user: hook.params.user })
835
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
836
- <span class="cstat-no" title="statement not covered" > const results = await service.find({ query: { name: id.toString() }, paginate: false, user: hook.params.user })</span>
837
- <span class="cstat-no" title="statement not covered" > if (results.length &gt;= 0) object = results[0]</span>
838
- <span class="cstat-no" title="statement not covered" > }</span>
839
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
840
- <span class="cstat-no" title="statement not covered" > // Not found error is managed hereafter</span>
841
- <span class="cstat-no" title="statement not covered" > if (error.code !== 404) throw error</span>
842
- <span class="cstat-no" title="statement not covered" > }</span>
843
- if (!object) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
844
- <span class="cstat-no" title="statement not covered" > if (options.throwOnNotFound) throw new Error(`Cannot find ${options.idField} = ${id} to dynamically populate.`)</span>
845
- <span class="cstat-no" title="statement not covered" > else return hook</span>
846
- <span class="cstat-no" title="statement not covered" > }</span>
847
- // Set the retrieved object on the same field or given one in hook params
848
- _.set(params, idProperty, [object])
849
- return hook
850
- }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
851
- <span class="cstat-no" title="statement not covered" > // Set the object on the same field or given one in hook params</span>
852
- <span class="cstat-no" title="statement not covered" > _.set(params, idProperty, [id])</span>
853
- <span class="cstat-no" title="statement not covered" > return hook</span>
854
- <span class="cstat-no" title="statement not covered" > }</span>
855
- }
856
- }
857
- }
858
- &nbsp;
859
- export <span class="fstat-no" title="function not covered" >function unpopulateObjects (options) {</span>
860
- <span class="cstat-no" title="statement not covered" > // These are similar behaviour</span>
861
- <span class="cstat-no" title="statement not covered" > return unpopulateObject(options)</span>
862
- <span class="cstat-no" title="statement not covered" >}</span>
863
- &nbsp;
864
- // Recursively transform any $regex on object to a new $regex managing diacritics.
865
- // Will flag the regex items with a diacritic property in order to avoid do it twice.
866
- export function toDiacriticRegex(object) {
867
- if (Array.isArray(object)) {
868
- object.forEach(toDiacriticRegex)
869
- } else if (typeof object === 'object') {
870
- _.forOwn(object, (value, key) =&gt; {
871
- if (!value) <span class="branch-0 cbranch-no" title="branch not covered" >return</span>
872
- // Check if applicable
873
- if (value.$regex &amp;&amp; !value.$regex.diacritic &amp;&amp; value.$regex.source &amp;&amp; !value.$diacriticSensitive) {
874
- // Take care to support as well case sensitivity by keeping flags
875
- value.$regex = new RegExp(makeDiacriticPattern(value.$regex.source), value.$regex.flags)
876
- // Custom internal property to make the hook reentrant
877
- value.$regex.diacritic = true
878
- } else {
879
- toDiacriticRegex(value)
880
- }
881
- })
882
- }
883
- }
884
- &nbsp;
885
- // Used to manage diacritic insensitive fuzzy search
886
- export function diacriticSearch (options = {}) {
887
- return hook =&gt; {
888
- const query = hook.params.query
889
- if (query) toDiacriticRegex(query)
890
- }
891
- }</pre></td></tr></table></pre>
892
-
893
- <div class='push'></div><!-- for sticky footer -->
894
- </div><!-- /wrapper -->
895
- <div class='footer quiet pad2 space-top1 center small'>
896
- Code coverage generated by
897
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
898
- at 2025-12-17T09:26:49.774Z
899
- </div>
900
- <script src="../../../prettify.js"></script>
901
- <script>
902
- window.onload = function () {
903
- prettyPrint();
904
- };
905
- </script>
906
- <script src="../../../sorter.js"></script>
907
- <script src="../../../block-navigation.js"></script>
908
- </body>
909
- </html>
910
-