@featurevisor/core 2.26.1 → 3.0.1

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 (390) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/coverage/clover.xml +4991 -3130
  3. package/coverage/coverage-final.json +63 -39
  4. package/coverage/lcov-report/block-navigation.js +1 -1
  5. package/coverage/lcov-report/index.html +248 -98
  6. package/coverage/lcov-report/sorter.js +21 -7
  7. package/coverage/lcov-report/src/assess-distribution/index.html +116 -0
  8. package/coverage/lcov-report/src/assess-distribution/index.ts.html +754 -0
  9. package/coverage/lcov-report/{list → src/benchmark}/index.html +30 -30
  10. package/coverage/lcov-report/src/benchmark/index.ts.html +793 -0
  11. package/coverage/lcov-report/{builder → src/builder}/allocator.ts.html +38 -38
  12. package/coverage/lcov-report/{builder/buildScopedConditions.ts.html → src/builder/applyContextToConditions.ts.html} +80 -65
  13. package/coverage/lcov-report/{builder/buildScopedDatafile.ts.html → src/builder/applyContextToDatafile.ts.html} +92 -92
  14. package/coverage/lcov-report/{builder/buildScopedSegments.ts.html → src/builder/applyContextToSegments.ts.html} +103 -67
  15. package/coverage/lcov-report/{builder → src/builder}/buildDatafile.ts.html +336 -306
  16. package/coverage/lcov-report/src/builder/buildProject.ts.html +1117 -0
  17. package/coverage/lcov-report/src/builder/buildRuntimeDatafiles.ts.html +256 -0
  18. package/coverage/lcov-report/{builder → src/builder}/getFeatureRanges.ts.html +22 -22
  19. package/coverage/lcov-report/{builder → src/builder}/hashes.ts.html +50 -50
  20. package/coverage/lcov-report/{builder → src/builder}/index.html +114 -84
  21. package/coverage/lcov-report/{tester/cliFormat.ts.html → src/builder/index.ts.html} +17 -29
  22. package/coverage/lcov-report/{builder → src/builder}/mutateVariables.ts.html +55 -55
  23. package/coverage/lcov-report/{builder → src/builder}/mutator.ts.html +118 -118
  24. package/coverage/lcov-report/{builder → src/builder}/revision.ts.html +15 -15
  25. package/coverage/lcov-report/{builder → src/builder}/traffic.ts.html +86 -86
  26. package/coverage/lcov-report/src/cli/cli.ts.html +400 -0
  27. package/coverage/lcov-report/{tester → src/cli}/index.html +41 -41
  28. package/coverage/lcov-report/src/cli/plugins.ts.html +214 -0
  29. package/coverage/lcov-report/{config → src/config}/index.html +31 -31
  30. package/coverage/lcov-report/{config → src/config}/index.ts.html +12 -12
  31. package/coverage/lcov-report/{config → src/config}/projectConfig.ts.html +312 -96
  32. package/coverage/lcov-report/{datasource → src/datasource}/adapter.ts.html +28 -73
  33. package/coverage/lcov-report/{datasource → src/datasource}/datasource.ts.html +191 -104
  34. package/coverage/lcov-report/{datasource → src/datasource}/filesystemAdapter.ts.html +233 -635
  35. package/coverage/lcov-report/{datasource → src/datasource}/index.html +48 -48
  36. package/coverage/lcov-report/{datasource → src/datasource}/index.ts.html +14 -14
  37. package/coverage/lcov-report/src/evaluate/index.html +116 -0
  38. package/coverage/lcov-report/src/evaluate/index.ts.html +814 -0
  39. package/coverage/lcov-report/src/find-duplicate-segments/findDuplicateSegments.ts.html +313 -0
  40. package/coverage/lcov-report/src/find-duplicate-segments/index.html +131 -0
  41. package/coverage/lcov-report/src/find-duplicate-segments/index.ts.html +307 -0
  42. package/coverage/lcov-report/src/find-usage/index.html +116 -0
  43. package/coverage/lcov-report/src/find-usage/index.ts.html +1780 -0
  44. package/coverage/lcov-report/src/generate-code/index.html +131 -0
  45. package/coverage/lcov-report/src/generate-code/index.ts.html +403 -0
  46. package/coverage/lcov-report/{generate-code → src/generate-code}/typescript.ts.html +266 -1361
  47. package/coverage/lcov-report/{generate-code → src}/index.html +38 -23
  48. package/coverage/lcov-report/src/info/index.html +116 -0
  49. package/coverage/lcov-report/src/info/index.ts.html +472 -0
  50. package/coverage/lcov-report/src/init/index.html +116 -0
  51. package/coverage/lcov-report/src/init/index.ts.html +280 -0
  52. package/coverage/lcov-report/{linter → src/linter}/attributeSchema.ts.html +160 -157
  53. package/coverage/lcov-report/{linter → src/linter}/checkCircularDependency.ts.html +25 -25
  54. package/coverage/lcov-report/{linter → src/linter}/checkPercentageExceedingSlot.ts.html +42 -42
  55. package/coverage/lcov-report/{linter → src/linter}/conditionSchema.ts.html +207 -207
  56. package/coverage/lcov-report/{linter → src/linter}/featureSchema.ts.html +462 -471
  57. package/coverage/lcov-report/{linter → src/linter}/groupSchema.ts.html +25 -22
  58. package/coverage/lcov-report/{linter → src/linter}/index.html +129 -99
  59. package/coverage/lcov-report/src/linter/index.ts.html +88 -0
  60. package/coverage/lcov-report/{linter → src/linter}/lintProject.ts.html +740 -332
  61. package/coverage/lcov-report/{linter → src/linter}/mutationNotation.ts.html +130 -130
  62. package/coverage/lcov-report/{linter → src/linter}/printError.ts.html +27 -27
  63. package/coverage/lcov-report/{linter → src/linter}/schema.ts.html +153 -150
  64. package/coverage/lcov-report/{linter → src/linter}/segmentSchema.ts.html +18 -15
  65. package/coverage/lcov-report/src/linter/targetSchema.ts.html +223 -0
  66. package/coverage/lcov-report/{linter → src/linter}/testSchema.ts.html +54 -48
  67. package/coverage/lcov-report/{linter → src/linter}/zodHelpers.ts.html +17 -17
  68. package/coverage/lcov-report/src/list/index.html +131 -0
  69. package/coverage/lcov-report/src/list/index.ts.html +2065 -0
  70. package/coverage/lcov-report/{list → src/list}/matrix.ts.html +43 -58
  71. package/coverage/lcov-report/src/promoter/index.html +116 -0
  72. package/coverage/lcov-report/src/promoter/index.ts.html +3883 -0
  73. package/coverage/lcov-report/src/sets.ts.html +313 -0
  74. package/coverage/lcov-report/src/targeting.ts.html +403 -0
  75. package/coverage/lcov-report/src/tester/cliFormat.ts.html +133 -0
  76. package/coverage/lcov-report/{tester → src/tester}/helpers.ts.html +15 -15
  77. package/coverage/lcov-report/src/tester/index.html +206 -0
  78. package/coverage/lcov-report/src/tester/prettyDuration.ts.html +187 -0
  79. package/coverage/lcov-report/src/tester/printTestResult.ts.html +337 -0
  80. package/coverage/lcov-report/src/tester/testFeature.ts.html +1186 -0
  81. package/coverage/lcov-report/src/tester/testProject.ts.html +1018 -0
  82. package/coverage/lcov-report/src/tester/testSegment.ts.html +316 -0
  83. package/coverage/lcov-report/{utils → src/utils}/extractKeys.ts.html +68 -68
  84. package/coverage/lcov-report/{utils → src/utils}/git.ts.html +44 -68
  85. package/coverage/lcov-report/{utils → src/utils}/index.html +44 -44
  86. package/coverage/lcov-report/{utils → src/utils}/index.ts.html +14 -14
  87. package/coverage/lcov-report/{utils → src/utils}/pretty.ts.html +20 -20
  88. package/coverage/lcov.info +10121 -5723
  89. package/jest.config.js +13 -4
  90. package/lib/assess-distribution/index.d.ts +1 -1
  91. package/lib/assess-distribution/index.js +59 -40
  92. package/lib/assess-distribution/index.js.map +1 -1
  93. package/lib/benchmark/index.d.ts +8 -5
  94. package/lib/benchmark/index.js +82 -65
  95. package/lib/benchmark/index.js.map +1 -1
  96. package/lib/builder/applyContextToConditions.d.ts +5 -0
  97. package/lib/builder/{buildScopedConditions.js → applyContextToConditions.js} +19 -14
  98. package/lib/builder/applyContextToConditions.js.map +1 -0
  99. package/lib/builder/applyContextToDatafile.d.ts +2 -0
  100. package/lib/builder/{buildScopedDatafile.js → applyContextToDatafile.js} +26 -26
  101. package/lib/builder/applyContextToDatafile.js.map +1 -0
  102. package/lib/builder/applyContextToSegments.d.ts +5 -0
  103. package/lib/builder/{buildScopedSegments.js → applyContextToSegments.js} +19 -14
  104. package/lib/builder/applyContextToSegments.js.map +1 -0
  105. package/lib/builder/buildDatafile.d.ts +9 -6
  106. package/lib/builder/buildDatafile.js +86 -51
  107. package/lib/builder/buildDatafile.js.map +1 -1
  108. package/lib/builder/buildProject.d.ts +17 -3
  109. package/lib/builder/buildProject.js +151 -59
  110. package/lib/builder/buildProject.js.map +1 -1
  111. package/lib/builder/buildRuntimeDatafiles.d.ts +12 -0
  112. package/lib/builder/buildRuntimeDatafiles.js +35 -0
  113. package/lib/builder/buildRuntimeDatafiles.js.map +1 -0
  114. package/lib/builder/getFeatureRanges.js +34 -1
  115. package/lib/builder/getFeatureRanges.js.map +1 -1
  116. package/lib/builder/hashes.js +34 -1
  117. package/lib/builder/hashes.js.map +1 -1
  118. package/lib/builder/index.d.ts +0 -1
  119. package/lib/builder/index.js +0 -1
  120. package/lib/builder/index.js.map +1 -1
  121. package/lib/cli/cli.js +0 -4
  122. package/lib/cli/cli.js.map +1 -1
  123. package/lib/cli/plugins.js +7 -2
  124. package/lib/cli/plugins.js.map +1 -1
  125. package/lib/config/projectConfig.d.ts +17 -17
  126. package/lib/config/projectConfig.js +101 -15
  127. package/lib/config/projectConfig.js.map +1 -1
  128. package/lib/datasource/adapter.d.ts +7 -9
  129. package/lib/datasource/adapter.js +0 -7
  130. package/lib/datasource/adapter.js.map +1 -1
  131. package/lib/datasource/datasource.d.ts +15 -5
  132. package/lib/datasource/datasource.js +37 -9
  133. package/lib/datasource/datasource.js.map +1 -1
  134. package/lib/datasource/filesystemAdapter.d.ts +4 -10
  135. package/lib/datasource/filesystemAdapter.js +111 -149
  136. package/lib/datasource/filesystemAdapter.js.map +1 -1
  137. package/lib/evaluate/index.d.ts +1 -7
  138. package/lib/evaluate/index.js +81 -67
  139. package/lib/evaluate/index.js.map +1 -1
  140. package/lib/find-duplicate-segments/findDuplicateSegments.js +34 -1
  141. package/lib/find-duplicate-segments/findDuplicateSegments.js.map +1 -1
  142. package/lib/find-duplicate-segments/index.js +21 -13
  143. package/lib/find-duplicate-segments/index.js.map +1 -1
  144. package/lib/find-usage/index.js +57 -41
  145. package/lib/find-usage/index.js.map +1 -1
  146. package/lib/generate-code/index.d.ts +1 -1
  147. package/lib/generate-code/index.js +64 -21
  148. package/lib/generate-code/index.js.map +1 -1
  149. package/lib/generate-code/typescript.d.ts +1 -1
  150. package/lib/generate-code/typescript.js +59 -333
  151. package/lib/generate-code/typescript.js.map +1 -1
  152. package/lib/index.d.ts +2 -1
  153. package/lib/index.js +2 -1
  154. package/lib/index.js.map +1 -1
  155. package/lib/info/index.js +57 -16
  156. package/lib/info/index.js.map +1 -1
  157. package/lib/init/index.d.ts +2 -2
  158. package/lib/init/index.js +39 -3
  159. package/lib/init/index.js.map +1 -1
  160. package/lib/linter/attributeSchema.d.ts +1 -0
  161. package/lib/linter/attributeSchema.js +1 -0
  162. package/lib/linter/attributeSchema.js.map +1 -1
  163. package/lib/linter/conditionSchema.js +5 -5
  164. package/lib/linter/conditionSchema.js.map +1 -1
  165. package/lib/linter/featureSchema.d.ts +4 -1
  166. package/lib/linter/featureSchema.js +15 -13
  167. package/lib/linter/featureSchema.js.map +1 -1
  168. package/lib/linter/groupSchema.d.ts +1 -0
  169. package/lib/linter/groupSchema.js +1 -0
  170. package/lib/linter/groupSchema.js.map +1 -1
  171. package/lib/linter/lintProject.d.ts +1 -3
  172. package/lib/linter/lintProject.js +198 -68
  173. package/lib/linter/lintProject.js.map +1 -1
  174. package/lib/linter/schema.js +1 -0
  175. package/lib/linter/schema.js.map +1 -1
  176. package/lib/linter/segmentSchema.d.ts +1 -0
  177. package/lib/linter/segmentSchema.js +1 -0
  178. package/lib/linter/segmentSchema.js.map +1 -1
  179. package/lib/linter/targetSchema.d.ts +16 -0
  180. package/lib/linter/targetSchema.js +40 -0
  181. package/lib/linter/targetSchema.js.map +1 -0
  182. package/lib/linter/testSchema.d.ts +4 -3
  183. package/lib/linter/testSchema.js +9 -4
  184. package/lib/linter/testSchema.js.map +1 -1
  185. package/lib/list/index.d.ts +1 -0
  186. package/lib/list/index.js +131 -12
  187. package/lib/list/index.js.map +1 -1
  188. package/lib/list/matrix.js +3 -7
  189. package/lib/list/matrix.js.map +1 -1
  190. package/lib/promoter/index.d.ts +50 -0
  191. package/lib/promoter/index.js +880 -0
  192. package/lib/promoter/index.js.map +1 -0
  193. package/lib/sets.d.ts +11 -0
  194. package/lib/sets.js +81 -0
  195. package/lib/sets.js.map +1 -0
  196. package/lib/targeting.d.ts +14 -0
  197. package/lib/targeting.js +82 -0
  198. package/lib/targeting.js.map +1 -0
  199. package/lib/tester/cliFormat.d.ts +7 -1
  200. package/lib/tester/cliFormat.js +11 -2
  201. package/lib/tester/cliFormat.js.map +1 -1
  202. package/lib/tester/printTestResult.js +2 -2
  203. package/lib/tester/printTestResult.js.map +1 -1
  204. package/lib/tester/testFeature.d.ts +0 -1
  205. package/lib/tester/testFeature.js +8 -25
  206. package/lib/tester/testFeature.js.map +1 -1
  207. package/lib/tester/testProject.d.ts +2 -3
  208. package/lib/tester/testProject.js +93 -86
  209. package/lib/tester/testProject.js.map +1 -1
  210. package/lib/tester/testSegment.d.ts +1 -1
  211. package/lib/tester/testSegment.js +3 -21
  212. package/lib/tester/testSegment.js.map +1 -1
  213. package/lib/utils/git.js +45 -19
  214. package/lib/utils/git.js.map +1 -1
  215. package/package.json +12 -12
  216. package/src/assess-distribution/index.ts +72 -52
  217. package/src/benchmark/index.ts +124 -91
  218. package/src/builder/{buildScopedConditions.spec.ts → applyContextToConditions.spec.ts} +160 -142
  219. package/src/builder/{buildScopedConditions.ts → applyContextToConditions.ts} +19 -14
  220. package/src/builder/{buildScopedDatafile.spec.ts → applyContextToDatafile.spec.ts} +141 -81
  221. package/src/builder/{buildScopedDatafile.ts → applyContextToDatafile.ts} +33 -33
  222. package/src/builder/{buildScopedSegments.spec.ts → applyContextToSegments.spec.ts} +171 -151
  223. package/src/builder/{buildScopedSegments.ts → applyContextToSegments.ts} +26 -14
  224. package/src/builder/buildDatafile.spec.ts +192 -14
  225. package/src/builder/buildDatafile.ts +74 -64
  226. package/src/builder/buildProject.ts +171 -86
  227. package/src/builder/buildRuntimeDatafiles.ts +57 -0
  228. package/src/builder/index.ts +0 -1
  229. package/src/cli/cli.ts +0 -5
  230. package/src/cli/plugins.ts +7 -2
  231. package/src/config/projectConfig.spec.ts +171 -8
  232. package/src/config/projectConfig.ts +100 -28
  233. package/src/datasource/adapter.ts +8 -23
  234. package/src/datasource/datasource.ts +50 -21
  235. package/src/datasource/filesystemAdapter.spec.ts +133 -74
  236. package/src/datasource/filesystemAdapter.ts +93 -227
  237. package/src/evaluate/index.ts +109 -97
  238. package/src/find-duplicate-segments/index.ts +34 -16
  239. package/src/find-usage/index.ts +89 -44
  240. package/src/generate-code/index.ts +36 -24
  241. package/src/generate-code/typescript.spec.ts +106 -0
  242. package/src/generate-code/typescript.ts +33 -398
  243. package/src/index.ts +2 -1
  244. package/src/info/index.ts +72 -16
  245. package/src/init/index.ts +1 -1
  246. package/src/linter/attributeSchema.ts +1 -0
  247. package/src/linter/conditionSchema.spec.ts +23 -3
  248. package/src/linter/conditionSchema.ts +5 -5
  249. package/src/linter/featureSchema.spec.ts +107 -18
  250. package/src/linter/featureSchema.ts +25 -28
  251. package/src/linter/groupSchema.ts +1 -0
  252. package/src/linter/lintProject.spec.ts +131 -92
  253. package/src/linter/lintProject.ts +233 -97
  254. package/src/linter/schema.ts +1 -0
  255. package/src/linter/segmentSchema.spec.ts +5 -3
  256. package/src/linter/segmentSchema.ts +1 -0
  257. package/src/linter/targetSchema.spec.ts +159 -0
  258. package/src/linter/targetSchema.ts +46 -0
  259. package/src/linter/testSchema.spec.ts +70 -5
  260. package/src/linter/testSchema.ts +12 -10
  261. package/src/list/index.spec.ts +135 -0
  262. package/src/list/index.ts +188 -12
  263. package/src/list/matrix.ts +3 -8
  264. package/src/promoter/index.spec.ts +617 -0
  265. package/src/promoter/index.ts +1266 -0
  266. package/src/sets.ts +76 -0
  267. package/src/targeting.spec.ts +74 -0
  268. package/src/targeting.ts +106 -0
  269. package/src/tester/cliFormat.ts +11 -1
  270. package/src/tester/printTestResult.ts +12 -3
  271. package/src/tester/testFeature.ts +10 -36
  272. package/src/tester/testProject.spec.ts +50 -0
  273. package/src/tester/testProject.ts +89 -140
  274. package/src/tester/testSegment.ts +5 -22
  275. package/src/utils/git.ts +13 -21
  276. package/tsconfig.cjs.json +5 -1
  277. package/tsconfig.typecheck.json +9 -0
  278. package/coverage/lcov-report/builder/convertToV1.ts.html +0 -583
  279. package/lib/builder/allocator.spec.d.ts +0 -1
  280. package/lib/builder/allocator.spec.js +0 -85
  281. package/lib/builder/allocator.spec.js.map +0 -1
  282. package/lib/builder/buildDatafile.spec.d.ts +0 -1
  283. package/lib/builder/buildDatafile.spec.js +0 -233
  284. package/lib/builder/buildDatafile.spec.js.map +0 -1
  285. package/lib/builder/buildScopedConditions.d.ts +0 -5
  286. package/lib/builder/buildScopedConditions.js.map +0 -1
  287. package/lib/builder/buildScopedConditions.spec.d.ts +0 -1
  288. package/lib/builder/buildScopedConditions.spec.js +0 -2167
  289. package/lib/builder/buildScopedConditions.spec.js.map +0 -1
  290. package/lib/builder/buildScopedDatafile.d.ts +0 -2
  291. package/lib/builder/buildScopedDatafile.js.map +0 -1
  292. package/lib/builder/buildScopedDatafile.spec.d.ts +0 -1
  293. package/lib/builder/buildScopedDatafile.spec.js +0 -2277
  294. package/lib/builder/buildScopedDatafile.spec.js.map +0 -1
  295. package/lib/builder/buildScopedSegments.d.ts +0 -5
  296. package/lib/builder/buildScopedSegments.js.map +0 -1
  297. package/lib/builder/buildScopedSegments.spec.d.ts +0 -1
  298. package/lib/builder/buildScopedSegments.spec.js +0 -1062
  299. package/lib/builder/buildScopedSegments.spec.js.map +0 -1
  300. package/lib/builder/convertToV1.d.ts +0 -10
  301. package/lib/builder/convertToV1.js +0 -119
  302. package/lib/builder/convertToV1.js.map +0 -1
  303. package/lib/builder/mutateVariables.spec.d.ts +0 -1
  304. package/lib/builder/mutateVariables.spec.js +0 -1074
  305. package/lib/builder/mutateVariables.spec.js.map +0 -1
  306. package/lib/builder/mutator.spec.d.ts +0 -1
  307. package/lib/builder/mutator.spec.js +0 -368
  308. package/lib/builder/mutator.spec.js.map +0 -1
  309. package/lib/builder/revision.spec.d.ts +0 -1
  310. package/lib/builder/revision.spec.js +0 -21
  311. package/lib/builder/revision.spec.js.map +0 -1
  312. package/lib/builder/traffic.spec.d.ts +0 -1
  313. package/lib/builder/traffic.spec.js +0 -872
  314. package/lib/builder/traffic.spec.js.map +0 -1
  315. package/lib/config/projectConfig.spec.d.ts +0 -1
  316. package/lib/config/projectConfig.spec.js +0 -24
  317. package/lib/config/projectConfig.spec.js.map +0 -1
  318. package/lib/datasource/filesystemAdapter.spec.d.ts +0 -1
  319. package/lib/datasource/filesystemAdapter.spec.js +0 -88
  320. package/lib/datasource/filesystemAdapter.spec.js.map +0 -1
  321. package/lib/generate-code/typescript.spec.d.ts +0 -1
  322. package/lib/generate-code/typescript.spec.js +0 -78
  323. package/lib/generate-code/typescript.spec.js.map +0 -1
  324. package/lib/linter/attributeSchema.spec.d.ts +0 -1
  325. package/lib/linter/attributeSchema.spec.js +0 -266
  326. package/lib/linter/attributeSchema.spec.js.map +0 -1
  327. package/lib/linter/conditionSchema.spec.d.ts +0 -1
  328. package/lib/linter/conditionSchema.spec.js +0 -380
  329. package/lib/linter/conditionSchema.spec.js.map +0 -1
  330. package/lib/linter/featureSchema.spec.d.ts +0 -1
  331. package/lib/linter/featureSchema.spec.js +0 -1552
  332. package/lib/linter/featureSchema.spec.js.map +0 -1
  333. package/lib/linter/lintProject.spec.d.ts +0 -1
  334. package/lib/linter/lintProject.spec.js +0 -211
  335. package/lib/linter/lintProject.spec.js.map +0 -1
  336. package/lib/linter/mutationNotation.spec.d.ts +0 -1
  337. package/lib/linter/mutationNotation.spec.js +0 -598
  338. package/lib/linter/mutationNotation.spec.js.map +0 -1
  339. package/lib/linter/schema.spec.d.ts +0 -1
  340. package/lib/linter/schema.spec.js +0 -535
  341. package/lib/linter/schema.spec.js.map +0 -1
  342. package/lib/linter/segmentSchema.spec.d.ts +0 -1
  343. package/lib/linter/segmentSchema.spec.js +0 -303
  344. package/lib/linter/segmentSchema.spec.js.map +0 -1
  345. package/lib/linter/testSchema.spec.d.ts +0 -1
  346. package/lib/linter/testSchema.spec.js +0 -162
  347. package/lib/linter/testSchema.spec.js.map +0 -1
  348. package/lib/list/matrix.spec.d.ts +0 -1
  349. package/lib/list/matrix.spec.js +0 -42
  350. package/lib/list/matrix.spec.js.map +0 -1
  351. package/lib/site/exportSite.d.ts +0 -2
  352. package/lib/site/exportSite.js +0 -30
  353. package/lib/site/exportSite.js.map +0 -1
  354. package/lib/site/generateHistory.d.ts +0 -3
  355. package/lib/site/generateHistory.js +0 -31
  356. package/lib/site/generateHistory.js.map +0 -1
  357. package/lib/site/generateSiteSearchIndex.d.ts +0 -4
  358. package/lib/site/generateSiteSearchIndex.js +0 -195
  359. package/lib/site/generateSiteSearchIndex.js.map +0 -1
  360. package/lib/site/getLastModifiedFromHistory.d.ts +0 -2
  361. package/lib/site/getLastModifiedFromHistory.js +0 -18
  362. package/lib/site/getLastModifiedFromHistory.js.map +0 -1
  363. package/lib/site/getOwnerAndRepoFromUrl.d.ts +0 -4
  364. package/lib/site/getOwnerAndRepoFromUrl.js +0 -20
  365. package/lib/site/getOwnerAndRepoFromUrl.js.map +0 -1
  366. package/lib/site/getRelativePaths.d.ts +0 -6
  367. package/lib/site/getRelativePaths.js +0 -15
  368. package/lib/site/getRelativePaths.js.map +0 -1
  369. package/lib/site/getRepoDetails.d.ts +0 -8
  370. package/lib/site/getRepoDetails.js +0 -48
  371. package/lib/site/getRepoDetails.js.map +0 -1
  372. package/lib/site/index.d.ts +0 -2
  373. package/lib/site/index.js +0 -43
  374. package/lib/site/index.js.map +0 -1
  375. package/lib/site/serveSite.d.ts +0 -2
  376. package/lib/site/serveSite.js +0 -54
  377. package/lib/site/serveSite.js.map +0 -1
  378. package/lib/tester/helpers.spec.d.ts +0 -1
  379. package/lib/tester/helpers.spec.js +0 -115
  380. package/lib/tester/helpers.spec.js.map +0 -1
  381. package/src/builder/convertToV1.ts +0 -166
  382. package/src/site/exportSite.ts +0 -42
  383. package/src/site/generateHistory.ts +0 -40
  384. package/src/site/generateSiteSearchIndex.ts +0 -258
  385. package/src/site/getLastModifiedFromHistory.ts +0 -21
  386. package/src/site/getOwnerAndRepoFromUrl.ts +0 -17
  387. package/src/site/getRelativePaths.ts +0 -24
  388. package/src/site/getRepoDetails.ts +0 -62
  389. package/src/site/index.ts +0 -46
  390. package/src/site/serveSite.ts +0 -58
@@ -3,15 +3,15 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for generate-code/typescript.ts</title>
6
+ <title>Code coverage report for src/generate-code/typescript.ts</title>
7
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" />
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
11
  <meta name="viewport" content="width=device-width, initial-scale=1" />
12
12
  <style type='text/css'>
13
13
  .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
14
+ background-image: url(../../sort-arrow-sprite.png);
15
15
  }
16
16
  </style>
17
17
  </head>
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">generate-code</a> typescript.ts</h1>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/generate-code</a> typescript.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">88.12% </span>
26
+ <span class="strong">88.55% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>334/379</span>
28
+ <span class='fraction'>209/236</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">79.92% </span>
33
+ <span class="strong">74.4% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>219/274</span>
35
+ <span class='fraction'>125/168</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">91.11% </span>
40
+ <span class="strong">93.93% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>41/45</span>
42
+ <span class='fraction'>31/33</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">90.02% </span>
47
+ <span class="strong">90.17% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>325/361</span>
49
+ <span class='fraction'>202/224</span>
50
50
  </div>
51
51
 
52
52
 
@@ -57,7 +57,7 @@
57
57
  <template id="filterTemplate">
58
58
  <div class="quiet">
59
59
  Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
60
+ <input type="search" id="fileSearch">
61
61
  </div>
62
62
  </template>
63
63
  </div>
@@ -671,372 +671,7 @@
671
671
  <a name='L606'></a><a href='#L606'>606</a>
672
672
  <a name='L607'></a><a href='#L607'>607</a>
673
673
  <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
674
+ <a name='L609'></a><a href='#L609'>609</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1040
675
  <span class="cline-any cline-yes">1x</span>
1041
676
  <span class="cline-any cline-neutral">&nbsp;</span>
1042
677
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1047,6 +682,7 @@
1047
682
  <span class="cline-any cline-neutral">&nbsp;</span>
1048
683
  <span class="cline-any cline-neutral">&nbsp;</span>
1049
684
  <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-yes">1x</span>
1050
686
  <span class="cline-any cline-neutral">&nbsp;</span>
1051
687
  <span class="cline-any cline-neutral">&nbsp;</span>
1052
688
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1055,37 +691,12 @@
1055
691
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
692
  <span class="cline-any cline-neutral">&nbsp;</span>
1057
693
  <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">41x</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-yes">9x</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-yes">25x</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">4x</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-yes">3x</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-no">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-no">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-no">&nbsp;</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-yes">37x</span>
1084
- <span class="cline-any cline-yes">37x</span>
694
+ <span class="cline-any cline-yes">44x</span>
695
+ <span class="cline-any cline-yes">44x</span>
1085
696
  <span class="cline-any cline-neutral">&nbsp;</span>
1086
697
  <span class="cline-any cline-neutral">&nbsp;</span>
1087
698
  <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-yes">354x</span>
699
+ <span class="cline-any cline-yes">443x</span>
1089
700
  <span class="cline-any cline-neutral">&nbsp;</span>
1090
701
  <span class="cline-any cline-neutral">&nbsp;</span>
1091
702
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1093,12 +704,12 @@
1093
704
  <span class="cline-any cline-neutral">&nbsp;</span>
1094
705
  <span class="cline-any cline-neutral">&nbsp;</span>
1095
706
  <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">86x</span>
1097
- <span class="cline-any cline-yes">86x</span>
1098
- <span class="cline-any cline-yes">86x</span>
1099
- <span class="cline-any cline-yes">86x</span>
707
+ <span class="cline-any cline-yes">98x</span>
708
+ <span class="cline-any cline-yes">98x</span>
709
+ <span class="cline-any cline-yes">98x</span>
710
+ <span class="cline-any cline-yes">98x</span>
1100
711
  <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">86x</span>
712
+ <span class="cline-any cline-yes">98x</span>
1102
713
  <span class="cline-any cline-no">&nbsp;</span>
1103
714
  <span class="cline-any cline-no">&nbsp;</span>
1104
715
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1119,21 +730,21 @@
1119
730
  <span class="cline-any cline-no">&nbsp;</span>
1120
731
  <span class="cline-any cline-neutral">&nbsp;</span>
1121
732
  <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-yes">86x</span>
1123
- <span class="cline-any cline-yes">81x</span>
1124
- <span class="cline-any cline-yes">81x</span>
733
+ <span class="cline-any cline-yes">98x</span>
734
+ <span class="cline-any cline-yes">90x</span>
735
+ <span class="cline-any cline-yes">90x</span>
1125
736
  <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-yes">156x</span>
1127
- <span class="cline-any cline-yes">156x</span>
1128
- <span class="cline-any cline-yes">156x</span>
737
+ <span class="cline-any cline-yes">193x</span>
738
+ <span class="cline-any cline-yes">193x</span>
739
+ <span class="cline-any cline-yes">193x</span>
1129
740
  <span class="cline-any cline-neutral">&nbsp;</span>
1130
741
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
742
  <span class="cline-any cline-neutral">&nbsp;</span>
1132
743
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-yes">81x</span>
744
+ <span class="cline-any cline-yes">90x</span>
1134
745
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
746
  <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-yes">5x</span>
747
+ <span class="cline-any cline-yes">8x</span>
1137
748
  <span class="cline-any cline-yes">2x</span>
1138
749
  <span class="cline-any cline-neutral">&nbsp;</span>
1139
750
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1142,593 +753,244 @@
1142
753
  <span class="cline-any cline-yes">2x</span>
1143
754
  <span class="cline-any cline-neutral">&nbsp;</span>
1144
755
  <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-yes">3x</span>
756
+ <span class="cline-any cline-yes">6x</span>
1146
757
  <span class="cline-any cline-neutral">&nbsp;</span>
1147
758
  <span class="cline-any cline-neutral">&nbsp;</span>
1148
759
  <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-yes">30x</span>
1150
- <span class="cline-any cline-yes">25x</span>
760
+ <span class="cline-any cline-yes">12x</span>
761
+ <span class="cline-any cline-yes">5x</span>
1151
762
  <span class="cline-any cline-neutral">&nbsp;</span>
1152
763
  <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-yes">60x</span>
764
+ <span class="cline-any cline-yes">98x</span>
1154
765
  <span class="cline-any cline-neutral">&nbsp;</span>
1155
766
  <span class="cline-any cline-neutral">&nbsp;</span>
1156
767
  <span class="cline-any cline-neutral">&nbsp;</span>
1157
768
  <span class="cline-any cline-neutral">&nbsp;</span>
1158
769
  <span class="cline-any cline-neutral">&nbsp;</span>
1159
770
  <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-yes">436x</span>
771
+ <span class="cline-any cline-yes">490x</span>
1161
772
  <span class="cline-any cline-no">&nbsp;</span>
1162
773
  <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-yes">436x</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-yes">490x</span>
1165
775
  <span class="cline-any cline-neutral">&nbsp;</span>
1166
776
  <span class="cline-any cline-neutral">&nbsp;</span>
1167
777
  <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-yes">26x</span>
1169
- <span class="cline-any cline-yes">26x</span>
1170
- <span class="cline-any cline-yes">1x</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-no">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-yes">8x</span>
1178
- <span class="cline-any cline-yes">8x</span>
1179
- <span class="cline-any cline-yes">8x</span>
1180
- <span class="cline-any cline-yes">20x</span>
1181
- <span class="cline-any cline-yes">20x</span>
1182
- <span class="cline-any cline-yes">20x</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-yes">8x</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-yes">390x</span>
1199
- <span class="cline-any cline-yes">11x</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">379x</span>
1202
- <span class="cline-any cline-yes">379x</span>
1203
- <span class="cline-any cline-yes">4x</span>
1204
- <span class="cline-any cline-yes">8x</span>
1205
778
  <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-yes">55x</span>
780
+ <span class="cline-any cline-yes">55x</span>
1206
781
  <span class="cline-any cline-yes">4x</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-yes">375x</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-yes">375x</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-yes">375x</span>
1214
- <span class="cline-any cline-yes">375x</span>
1215
782
  <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-yes">375x</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-yes">34x</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-yes">156x</span>
1223
- <span class="cline-any cline-neutral">&nbsp;</span>
1224
783
  <span class="cline-any cline-no">&nbsp;</span>
1225
784
  <span class="cline-any cline-neutral">&nbsp;</span>
1226
785
  <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-yes">58x</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-yes">41x</span>
1230
- <span class="cline-any cline-yes">37x</span>
1231
- <span class="cline-any cline-yes">37x</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-yes">4x</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-yes">86x</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-no">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-yes">279x</span>
1250
- <span class="cline-any cline-yes">24x</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-yes">255x</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-yes">109x</span>
1275
- <span class="cline-any cline-yes">109x</span>
1276
- <span class="cline-any cline-yes">109x</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-yes">109x</span>
1279
- <span class="cline-any cline-yes">29x</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-yes">109x</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-yes">24x</span>
1290
- <span class="cline-any cline-yes">24x</span>
1291
- <span class="cline-any cline-yes">24x</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-yes">24x</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-yes">24x</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-yes">24x</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-yes">24x</span>
1303
- <span class="cline-any cline-yes">24x</span>
1304
- <span class="cline-any cline-yes">3x</span>
1305
- <span class="cline-any cline-yes">3x</span>
1306
- <span class="cline-any cline-yes">1x</span>
1307
- <span class="cline-any cline-yes">1x</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">2x</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-yes">24x</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-yes">85x</span>
1323
- <span class="cline-any cline-yes">85x</span>
1324
- <span class="cline-any cline-yes">85x</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-yes">85x</span>
1327
- <span class="cline-any cline-yes">1x</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-yes">84x</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-yes">84x</span>
1335
- <span class="cline-any cline-yes">1x</span>
1336
- <span class="cline-any cline-yes">2x</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-yes">1x</span>
1339
- <span class="cline-any cline-yes">1x</span>
1340
- <span class="cline-any cline-yes">20x</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-yes">1x</span>
1344
- <span class="cline-any cline-yes">1x</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-yes">83x</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-yes">25x</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-yes">25x</span>
1360
- <span class="cline-any cline-yes">25x</span>
1361
- <span class="cline-any cline-yes">25x</span>
1362
786
  <span class="cline-any cline-neutral">&nbsp;</span>
1363
787
  <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-yes">23x</span>
1366
- <span class="cline-any cline-yes">23x</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-yes">18x</span>
789
+ <span class="cline-any cline-yes">18x</span>
790
+ <span class="cline-any cline-yes">18x</span>
1368
791
  <span class="cline-any cline-yes">45x</span>
1369
792
  <span class="cline-any cline-yes">45x</span>
1370
793
  <span class="cline-any cline-yes">45x</span>
1371
- <span class="cline-any cline-yes">900x</span>
1372
794
  <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-yes">45x</span>
1374
- <span class="cline-any cline-yes">45x</span>
795
+ <span class="cline-any cline-yes">18x</span>
1375
796
  <span class="cline-any cline-neutral">&nbsp;</span>
1376
797
  <span class="cline-any cline-neutral">&nbsp;</span>
1377
798
  <span class="cline-any cline-neutral">&nbsp;</span>
1378
799
  <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-yes">23x</span>
1380
- <span class="cline-any cline-yes">2x</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
800
  <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-yes">2x</span>
1386
- <span class="cline-any cline-yes">2x</span>
1387
- <span class="cline-any cline-yes">40x</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-yes">2x</span>
1390
- <span class="cline-any cline-no">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-yes">2x</span>
1393
- <span class="cline-any cline-yes">2x</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-yes">23x</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-yes">23x</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-yes">2x</span>
1401
- <span class="cline-any cline-yes">2x</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-yes">58x</span>
1405
- <span class="cline-any cline-yes">15x</span>
1406
- <span class="cline-any cline-yes">15x</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-yes">12x</span>
1409
801
  <span class="cline-any cline-neutral">&nbsp;</span>
1410
802
  <span class="cline-any cline-neutral">&nbsp;</span>
1411
803
  <span class="cline-any cline-neutral">&nbsp;</span>
1412
804
  <span class="cline-any cline-neutral">&nbsp;</span>
1413
805
  <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-yes">12x</span>
1415
- <span class="cline-any cline-yes">2x</span>
1416
- <span class="cline-any cline-yes">2x</span>
1417
- <span class="cline-any cline-yes">2x</span>
1418
- <span class="cline-any cline-neutral">&nbsp;</span>
1419
- <span class="cline-any cline-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-yes">10x</span>
1425
- <span class="cline-any cline-yes">10x</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-yes">4x</span>
1431
- <span class="cline-any cline-yes">4x</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-yes">9x</span>
1434
- <span class="cline-any cline-yes">9x</span>
1435
- <span class="cline-any cline-yes">9x</span>
1436
- <span class="cline-any cline-yes">180x</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-yes">9x</span>
1439
- <span class="cline-any cline-yes">9x</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-yes">4x</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-yes">4x</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-yes">6x</span>
1455
- <span class="cline-any cline-yes">6x</span>
1456
- <span class="cline-any cline-yes">6x</span>
1457
- <span class="cline-any cline-yes">120x</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-yes">6x</span>
1460
- <span class="cline-any cline-yes">6x</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
806
  <span class="cline-any cline-neutral">&nbsp;</span>
1466
807
  <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-yes">3x</span>
1468
- <span class="cline-any cline-yes">3x</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-yes">43x</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-yes">43x</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-neutral">&nbsp;</span>
1486
- <span class="cline-any cline-yes">43x</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-yes">43x</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-yes">43x</span>
1491
- <span class="cline-any cline-yes">43x</span>
1492
- <span class="cline-any cline-yes">43x</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-yes">536x</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
- <span class="cline-any cline-yes">537x</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-yes">536x</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-yes">34x</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-yes">34x</span>
1515
- <span class="cline-any cline-no">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-neutral">&nbsp;</span>
1518
- <span class="cline-any cline-yes">34x</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-neutral">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-yes">27x</span>
1523
- <span class="cline-any cline-yes">15x</span>
1524
808
  <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-yes">514x</span>
810
+ <span class="cline-any cline-yes">24x</span>
1525
811
  <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-yes">12x</span>
812
+ <span class="cline-any cline-yes">490x</span>
813
+ <span class="cline-any cline-yes">490x</span>
814
+ <span class="cline-any cline-yes">13x</span>
1527
815
  <span class="cline-any cline-yes">26x</span>
1528
816
  <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-yes">13x</span>
1529
818
  <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-yes">12x</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-yes">109x</span>
1539
- <span class="cline-any cline-yes">109x</span>
1540
- <span class="cline-any cline-yes">28x</span>
1541
- <span class="cline-any cline-yes">28x</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-yes">109x</span>
1546
- <span class="cline-any cline-neutral">&nbsp;</span>
1547
- <span class="cline-any cline-neutral">&nbsp;</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-yes">477x</span>
1550
820
  <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-yes">24x</span>
1552
- <span class="cline-any cline-yes">24x</span>
1553
- <span class="cline-any cline-yes">24x</span>
821
+ <span class="cline-any cline-yes">477x</span>
1554
822
  <span class="cline-any cline-neutral">&nbsp;</span>
1555
823
  <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-yes">85x</span>
1557
- <span class="cline-any cline-yes">85x</span>
824
+ <span class="cline-any cline-yes">477x</span>
825
+ <span class="cline-any cline-yes">477x</span>
1558
826
  <span class="cline-any cline-no">&nbsp;</span>
1559
827
  <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-yes">477x</span>
1560
829
  <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-yes">85x</span>
1562
- <span class="cline-any cline-yes">1x</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-neutral">&nbsp;</span>
1565
- <span class="cline-any cline-yes">84x</span>
830
+ <span class="cline-any cline-yes">32x</span>
1566
831
  <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-yes">84x</span>
1568
- <span class="cline-any cline-yes">84x</span>
1569
- <span class="cline-any cline-yes">1680x</span>
1570
- <span class="cline-any cline-yes">4x</span>
1571
- <span class="cline-any cline-neutral">&nbsp;</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-yes">84x</span>
1576
832
  <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-yes">230x</span>
1577
834
  <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-no">&nbsp;</span>
1578
836
  <span class="cline-any cline-neutral">&nbsp;</span>
1579
837
  <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-yes">66x</span>
1580
839
  <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-yes">51x</span>
841
+ <span class="cline-any cline-yes">44x</span>
842
+ <span class="cline-any cline-yes">44x</span>
1581
843
  <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-yes">7x</span>
1582
845
  <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-yes">98x</span>
1583
847
  <span class="cline-any cline-neutral">&nbsp;</span>
1584
848
  <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-yes">1x</span>
1586
- <span class="cline-any cline-yes">1x</span>
1587
- <span class="cline-any cline-yes">20x</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
1588
850
  <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-yes">1x</span>
1590
- <span class="cline-any cline-yes">1x</span>
1591
- <span class="cline-any cline-yes">20x</span>
1592
- <span class="cline-any cline-yes">20x</span>
1593
- <span class="cline-any cline-yes">20x</span>
1594
- <span class="cline-any cline-yes">20x</span>
1595
- <span class="cline-any cline-yes">20x</span>
1596
851
  <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-yes">1x</span>
1598
852
  <span class="cline-any cline-neutral">&nbsp;</span>
1599
853
  <span class="cline-any cline-neutral">&nbsp;</span>
1600
854
  <span class="cline-any cline-neutral">&nbsp;</span>
1601
855
  <span class="cline-any cline-neutral">&nbsp;</span>
1602
856
  <span class="cline-any cline-neutral">&nbsp;</span>
1603
857
  <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-yes">1x</span>
1605
858
  <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-yes">1x</span>
1607
- <span class="cline-any cline-yes">17x</span>
1608
- <span class="cline-any cline-yes">340x</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-yes">102x</span>
1609
861
  <span class="cline-any cline-no">&nbsp;</span>
1610
862
  <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-yes">102x</span>
1611
864
  <span class="cline-any cline-neutral">&nbsp;</span>
1612
865
  <span class="cline-any cline-neutral">&nbsp;</span>
1613
866
  <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-yes">1x</span>
1615
- <span class="cline-any cline-yes">1x</span>
1616
- <span class="cline-any cline-yes">17x</span>
1617
- <span class="cline-any cline-yes">17x</span>
1618
867
  <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-yes">296x</span>
1619
869
  <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-yes">1x</span>
1621
870
  <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-yes">296x</span>
1622
872
  <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-yes">296x</span>
1623
874
  <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-yes">1x</span>
1625
- <span class="cline-any cline-yes">1x</span>
1626
875
  <span class="cline-any cline-neutral">&nbsp;</span>
1627
- <span class="cline-any cline-yes">1x</span>
1628
876
  <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-yes">29x</span>
1629
878
  <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-yes">29x</span>
880
+ <span class="cline-any cline-no">&nbsp;</span>
1630
881
  <span class="cline-any cline-neutral">&nbsp;</span>
1631
882
  <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-yes">29x</span>
1632
884
  <span class="cline-any cline-neutral">&nbsp;</span>
1633
885
  <span class="cline-any cline-neutral">&nbsp;</span>
1634
886
  <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-yes">44x</span>
888
+ <span class="cline-any cline-yes">26x</span>
1635
889
  <span class="cline-any cline-neutral">&nbsp;</span>
1636
890
  <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-yes">18x</span>
892
+ <span class="cline-any cline-yes">38x</span>
1637
893
  <span class="cline-any cline-neutral">&nbsp;</span>
1638
894
  <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-yes">18x</span>
1639
896
  <span class="cline-any cline-neutral">&nbsp;</span>
1640
897
  <span class="cline-any cline-neutral">&nbsp;</span>
1641
- <span class="cline-any cline-yes">1x</span>
1642
898
  <span class="cline-any cline-neutral">&nbsp;</span>
1643
899
  <span class="cline-any cline-neutral">&nbsp;</span>
1644
900
  <span class="cline-any cline-neutral">&nbsp;</span>
1645
901
  <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-yes">1x</span>
1647
- <span class="cline-any cline-yes">1x</span>
1648
902
  <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-yes">138x</span>
904
+ <span class="cline-any cline-yes">138x</span>
905
+ <span class="cline-any cline-yes">40x</span>
906
+ <span class="cline-any cline-yes">40x</span>
1649
907
  <span class="cline-any cline-neutral">&nbsp;</span>
1650
908
  <span class="cline-any cline-neutral">&nbsp;</span>
1651
909
  <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-yes">1x</span>
1653
- <span class="cline-any cline-yes">1x</span>
910
+ <span class="cline-any cline-yes">138x</span>
1654
911
  <span class="cline-any cline-neutral">&nbsp;</span>
1655
- <span class="cline-any cline-yes">1x</span>
1656
912
  <span class="cline-any cline-neutral">&nbsp;</span>
1657
913
  <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-yes">1x</span>
1659
- <span class="cline-any cline-yes">1x</span>
1660
- <span class="cline-any cline-yes">1x</span>
1661
- <span class="cline-any cline-yes">20x</span>
1662
- <span class="cline-any cline-yes">20x</span>
1663
914
  <span class="cline-any cline-neutral">&nbsp;</span>
1664
915
  <span class="cline-any cline-neutral">&nbsp;</span>
916
+ <span class="cline-any cline-yes">36x</span>
917
+ <span class="cline-any cline-yes">36x</span>
918
+ <span class="cline-any cline-yes">36x</span>
1665
919
  <span class="cline-any cline-neutral">&nbsp;</span>
1666
920
  <span class="cline-any cline-neutral">&nbsp;</span>
1667
- <span class="cline-any cline-yes">1x</span>
1668
- <span class="cline-any cline-yes">1x</span>
1669
- <span class="cline-any cline-yes">1x</span>
1670
- <span class="cline-any cline-yes">1x</span>
1671
- <span class="cline-any cline-yes">1x</span>
1672
- <span class="cline-any cline-yes">1x</span>
921
+ <span class="cline-any cline-yes">102x</span>
922
+ <span class="cline-any cline-yes">102x</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-yes">102x</span>
1673
927
  <span class="cline-any cline-yes">1x</span>
1674
928
  <span class="cline-any cline-neutral">&nbsp;</span>
1675
929
  <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-yes">101x</span>
1676
931
  <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-yes">101x</span>
933
+ <span class="cline-any cline-yes">101x</span>
934
+ <span class="cline-any cline-yes">2020x</span>
935
+ <span class="cline-any cline-yes">4x</span>
1677
936
  <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-yes">1x</span>
1679
- <span class="cline-any cline-yes">1x</span>
1680
- <span class="cline-any cline-yes">20x</span>
1681
937
  <span class="cline-any cline-neutral">&nbsp;</span>
1682
938
  <span class="cline-any cline-neutral">&nbsp;</span>
1683
939
  <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-yes">1x</span>
1685
- <span class="cline-any cline-yes">1x</span>
1686
- <span class="cline-any cline-yes">1x</span>
940
+ <span class="cline-any cline-yes">101x</span>
1687
941
  <span class="cline-any cline-neutral">&nbsp;</span>
1688
942
  <span class="cline-any cline-neutral">&nbsp;</span>
1689
- <span class="cline-any cline-yes">1x</span>
1690
- <span class="cline-any cline-yes">1x</span>
1691
- <span class="cline-any cline-yes">1x</span>
1692
943
  <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-yes">1x</span>
1694
- <span class="cline-any cline-yes">17x</span>
1695
944
  <span class="cline-any cline-neutral">&nbsp;</span>
1696
- <span class="cline-any cline-yes">17x</span>
1697
- <span class="cline-any cline-no">&nbsp;</span>
1698
945
  <span class="cline-any cline-neutral">&nbsp;</span>
1699
946
  <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-yes">17x</span>
1701
947
  <span class="cline-any cline-neutral">&nbsp;</span>
1702
948
  <span class="cline-any cline-neutral">&nbsp;</span>
1703
949
  <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-yes">4x</span>
951
+ <span class="cline-any cline-yes">4x</span>
952
+ <span class="cline-any cline-yes">80x</span>
1704
953
  <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-yes">4x</span>
955
+ <span class="cline-any cline-yes">4x</span>
956
+ <span class="cline-any cline-yes">80x</span>
957
+ <span class="cline-any cline-yes">80x</span>
958
+ <span class="cline-any cline-yes">80x</span>
959
+ <span class="cline-any cline-yes">80x</span>
960
+ <span class="cline-any cline-yes">80x</span>
1705
961
  <span class="cline-any cline-neutral">&nbsp;</span>
1706
- <span class="cline-any cline-yes">17x</span>
962
+ <span class="cline-any cline-yes">4x</span>
1707
963
  <span class="cline-any cline-neutral">&nbsp;</span>
1708
964
  <span class="cline-any cline-neutral">&nbsp;</span>
1709
965
  <span class="cline-any cline-neutral">&nbsp;</span>
1710
966
  <span class="cline-any cline-neutral">&nbsp;</span>
1711
- <span class="cline-any cline-yes">17x</span>
1712
967
  <span class="cline-any cline-neutral">&nbsp;</span>
1713
968
  <span class="cline-any cline-neutral">&nbsp;</span>
1714
- <span class="cline-any cline-yes">1x</span>
969
+ <span class="cline-any cline-yes">4x</span>
1715
970
  <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-yes">4x</span>
972
+ <span class="cline-any cline-yes">68x</span>
973
+ <span class="cline-any cline-yes">1360x</span>
974
+ <span class="cline-any cline-no">&nbsp;</span>
1716
975
  <span class="cline-any cline-neutral">&nbsp;</span>
1717
976
  <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-yes">1x</span>
1719
- <span class="cline-any cline-yes">1x</span>
1720
- <span class="cline-any cline-yes">1x</span>
1721
977
  <span class="cline-any cline-neutral">&nbsp;</span>
1722
978
  <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-yes">4x</span>
980
+ <span class="cline-any cline-yes">4x</span>
981
+ <span class="cline-any cline-yes">68x</span>
982
+ <span class="cline-any cline-yes">68x</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-yes">4x</span>
1723
986
  <span class="cline-any cline-neutral">&nbsp;</span>
1724
987
  <span class="cline-any cline-neutral">&nbsp;</span>
1725
988
  <span class="cline-any cline-yes">1x</span>
1726
989
  <span class="cline-any cline-yes">1x</span>
1727
990
  <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-yes">17x</span>
991
+ <span class="cline-any cline-yes">1x</span>
1729
992
  <span class="cline-any cline-neutral">&nbsp;</span>
1730
993
  <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-yes">1x</span>
1732
994
  <span class="cline-any cline-neutral">&nbsp;</span>
1733
995
  <span class="cline-any cline-neutral">&nbsp;</span>
1734
996
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1736,177 +998,188 @@
1736
998
  <span class="cline-any cline-neutral">&nbsp;</span>
1737
999
  <span class="cline-any cline-neutral">&nbsp;</span>
1738
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-yes">1x</span>
1740
- <span class="cline-any cline-yes">1x</span>
1741
- <span class="cline-any cline-yes">1x</span>
1742
1001
  <span class="cline-any cline-neutral">&nbsp;</span>
1743
1002
  <span class="cline-any cline-neutral">&nbsp;</span>
1744
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
1745
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-yes">1x</span>
1005
+ <span class="cline-any cline-yes">6x</span>
1747
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
1748
1007
  <span class="cline-any cline-neutral">&nbsp;</span>
1749
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
1750
1009
  <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-yes">6x</span>
1011
+ <span class="cline-any cline-yes">6x</span>
1012
+ <span class="cline-any cline-yes">6x</span>
1751
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-yes">6x</span>
1015
+ <span class="cline-any cline-yes">6x</span>
1752
1016
  <span class="cline-any cline-yes">1x</span>
1753
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
1754
- <span class="cline-any cline-yes">1x</span>
1755
- <span class="cline-any cline-yes">27x</span>
1756
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
1757
- <span class="cline-any cline-yes">27x</span>
1758
- <span class="cline-any cline-no">&nbsp;</span>
1759
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
1760
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-yes">27x</span>
1762
- <span class="cline-any cline-no">&nbsp;</span>
1763
- <span class="cline-any cline-no">&nbsp;</span>
1764
- <span class="cline-any cline-no">&nbsp;</span>
1765
- <span class="cline-any cline-no">&nbsp;</span>
1021
+ <span class="cline-any cline-yes">5x</span>
1766
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
1767
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
1768
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-yes">27x</span>
1770
- <span class="cline-any cline-yes">27x</span>
1771
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-yes">4x</span>
1772
1027
  <span class="cline-any cline-neutral">&nbsp;</span>
1773
- <span class="cline-any cline-yes">1x</span>
1774
- <span class="cline-any cline-yes">1x</span>
1775
- <span class="cline-any cline-yes">1x</span>
1776
- <span class="cline-any cline-yes">27x</span>
1777
1028
  <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-yes">27x</span>
1779
- <span class="cline-any cline-yes">27x</span>
1780
- <span class="cline-any cline-yes">27x</span>
1029
+ <span class="cline-any cline-yes">4x</span>
1030
+ <span class="cline-any cline-yes">4x</span>
1031
+ <span class="cline-any cline-yes">4x</span>
1032
+ <span class="cline-any cline-yes">80x</span>
1033
+ <span class="cline-any cline-yes">80x</span>
1781
1034
  <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-yes">27x</span>
1783
- <span class="cline-any cline-yes">14x</span>
1784
- <span class="cline-any cline-yes">14x</span>
1785
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-yes">14x</span>
1787
- <span class="cline-any cline-yes">109x</span>
1788
- <span class="cline-any cline-yes">109x</span>
1789
- <span class="cline-any cline-yes">109x</span>
1790
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
1791
1037
  <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-yes">4x</span>
1039
+ <span class="cline-any cline-yes">4x</span>
1040
+ <span class="cline-any cline-yes">4x</span>
1041
+ <span class="cline-any cline-yes">4x</span>
1042
+ <span class="cline-any cline-yes">4x</span>
1043
+ <span class="cline-any cline-yes">4x</span>
1044
+ <span class="cline-any cline-yes">4x</span>
1792
1045
  <span class="cline-any cline-neutral">&nbsp;</span>
1793
1046
  <span class="cline-any cline-neutral">&nbsp;</span>
1794
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
1795
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-yes">4x</span>
1050
+ <span class="cline-any cline-yes">4x</span>
1051
+ <span class="cline-any cline-yes">80x</span>
1796
1052
  <span class="cline-any cline-neutral">&nbsp;</span>
1797
- <span class="cline-any cline-yes">109x</span>
1798
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
1799
1054
  <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-yes">4x</span>
1056
+ <span class="cline-any cline-yes">4x</span>
1057
+ <span class="cline-any cline-yes">4x</span>
1800
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
1801
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-yes">4x</span>
1061
+ <span class="cline-any cline-yes">4x</span>
1062
+ <span class="cline-any cline-yes">4x</span>
1802
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
1803
- <span class="cline-any cline-yes">109x</span>
1804
- <span class="cline-any cline-yes">109x</span>
1064
+ <span class="cline-any cline-yes">4x</span>
1065
+ <span class="cline-any cline-yes">68x</span>
1805
1066
  <span class="cline-any cline-neutral">&nbsp;</span>
1806
- <span class="cline-any cline-yes">109x</span>
1067
+ <span class="cline-any cline-yes">68x</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
1807
1069
  <span class="cline-any cline-neutral">&nbsp;</span>
1808
1070
  <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-yes">68x</span>
1809
1072
  <span class="cline-any cline-neutral">&nbsp;</span>
1810
1073
  <span class="cline-any cline-neutral">&nbsp;</span>
1811
- <span class="cline-any cline-yes">109x</span>
1812
- <span class="cline-any cline-yes">109x</span>
1813
- <span class="cline-any cline-yes">109x</span>
1814
- <span class="cline-any cline-yes">3x</span>
1815
1074
  <span class="cline-any cline-neutral">&nbsp;</span>
1816
1075
  <span class="cline-any cline-neutral">&nbsp;</span>
1817
1076
  <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-yes">68x</span>
1818
1078
  <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-yes">106x</span>
1820
- <span class="cline-any cline-yes">1x</span>
1821
1079
  <span class="cline-any cline-neutral">&nbsp;</span>
1822
1080
  <span class="cline-any cline-neutral">&nbsp;</span>
1823
1081
  <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-yes">68x</span>
1824
1083
  <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-yes">105x</span>
1826
- <span class="cline-any cline-yes">55x</span>
1827
1084
  <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-yes">4x</span>
1828
1086
  <span class="cline-any cline-neutral">&nbsp;</span>
1829
1087
  <span class="cline-any cline-neutral">&nbsp;</span>
1830
1088
  <span class="cline-any cline-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-yes">4x</span>
1090
+ <span class="cline-any cline-yes">4x</span>
1091
+ <span class="cline-any cline-yes">4x</span>
1831
1092
  <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-yes">50x</span>
1833
1093
  <span class="cline-any cline-neutral">&nbsp;</span>
1834
1094
  <span class="cline-any cline-neutral">&nbsp;</span>
1835
1095
  <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-yes">4x</span>
1097
+ <span class="cline-any cline-yes">4x</span>
1836
1098
  <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-yes">68x</span>
1837
1100
  <span class="cline-any cline-neutral">&nbsp;</span>
1838
1101
  <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-yes">4x</span>
1839
1103
  <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-yes">14x</span>
1841
- <span class="cline-any cline-yes">13x</span>
1842
1104
  <span class="cline-any cline-neutral">&nbsp;</span>
1843
1105
  <span class="cline-any cline-neutral">&nbsp;</span>
1844
1106
  <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-yes">27x</span>
1846
1107
  <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-yes">27x</span>
1848
1108
  <span class="cline-any cline-neutral">&nbsp;</span>
1849
1109
  <span class="cline-any cline-neutral">&nbsp;</span>
1110
+ <span class="cline-any cline-yes">4x</span>
1111
+ <span class="cline-any cline-yes">4x</span>
1112
+ <span class="cline-any cline-yes">4x</span>
1850
1113
  <span class="cline-any cline-neutral">&nbsp;</span>
1851
1114
  <span class="cline-any cline-neutral">&nbsp;</span>
1852
1115
  <span class="cline-any cline-neutral">&nbsp;</span>
1853
1116
  <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-yes">4x</span>
1854
1118
  <span class="cline-any cline-neutral">&nbsp;</span>
1855
1119
  <span class="cline-any cline-neutral">&nbsp;</span>
1856
1120
  <span class="cline-any cline-neutral">&nbsp;</span>
1857
1121
  <span class="cline-any cline-neutral">&nbsp;</span>
1122
+ <span class="cline-any cline-yes">4x</span>
1858
1123
  <span class="cline-any cline-neutral">&nbsp;</span>
1124
+ <span class="cline-any cline-yes">4x</span>
1125
+ <span class="cline-any cline-yes">128x</span>
1859
1126
  <span class="cline-any cline-neutral">&nbsp;</span>
1127
+ <span class="cline-any cline-yes">128x</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1860
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
1861
1130
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-yes">128x</span>
1132
+ <span class="cline-any cline-yes">128x</span>
1133
+ <span class="cline-any cline-yes">128x</span>
1134
+ <span class="cline-any cline-yes">93x</span>
1862
1135
  <span class="cline-any cline-neutral">&nbsp;</span>
1863
- <span class="cline-any cline-yes">27x</span>
1864
- <span class="cline-any cline-yes">27x</span>
1865
- <span class="cline-any cline-yes">27x</span>
1136
+ <span class="cline-any cline-yes">128x</span>
1866
1137
  <span class="cline-any cline-neutral">&nbsp;</span>
1867
1138
  <span class="cline-any cline-neutral">&nbsp;</span>
1868
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1869
1140
  <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-yes">84x</span>
1870
1142
  <span class="cline-any cline-neutral">&nbsp;</span>
1871
1143
  <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-yes">44x</span>
1872
1145
  <span class="cline-any cline-neutral">&nbsp;</span>
1873
1146
  <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-yes">1x</span>
1875
- <span class="cline-any cline-yes">1x</span>
1147
+ <span class="cline-any cline-yes">4x</span>
1148
+ <span class="cline-any cline-yes">4x</span>
1876
1149
  <span class="cline-any cline-neutral">&nbsp;</span>
1877
- <span class="cline-any cline-yes">27x</span>
1878
- <span class="cline-any cline-yes">27x</span>
1150
+ <span class="cline-any cline-yes">44x</span>
1151
+ <span class="cline-any cline-yes">44x</span>
1879
1152
  <span class="cline-any cline-neutral">&nbsp;</span>
1880
- <span class="cline-any cline-yes">27x</span>
1881
- <span class="cline-any cline-yes">12x</span>
1153
+ <span class="cline-any cline-yes">44x</span>
1154
+ <span class="cline-any cline-yes">18x</span>
1882
1155
  <span class="cline-any cline-neutral">&nbsp;</span>
1883
1156
  <span class="cline-any cline-neutral">&nbsp;</span>
1884
- <span class="cline-any cline-yes">27x</span>
1885
- <span class="cline-any cline-yes">14x</span>
1886
- <span class="cline-any cline-yes">109x</span>
1157
+ <span class="cline-any cline-yes">44x</span>
1158
+ <span class="cline-any cline-yes">17x</span>
1159
+ <span class="cline-any cline-yes">138x</span>
1887
1160
  <span class="cline-any cline-neutral">&nbsp;</span>
1888
1161
  <span class="cline-any cline-neutral">&nbsp;</span>
1889
1162
  <span class="cline-any cline-neutral">&nbsp;</span>
1890
1163
  <span class="cline-any cline-neutral">&nbsp;</span>
1891
- <span class="cline-any cline-yes">109x</span>
1892
- <span class="cline-any cline-yes">109x</span>
1164
+ <span class="cline-any cline-yes">138x</span>
1165
+ <span class="cline-any cline-yes">138x</span>
1893
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1894
1167
  <span class="cline-any cline-neutral">&nbsp;</span>
1895
1168
  <span class="cline-any cline-neutral">&nbsp;</span>
1896
- <span class="cline-any cline-yes">27x</span>
1897
- <span class="cline-any cline-yes">12x</span>
1169
+ <span class="cline-any cline-yes">44x</span>
1170
+ <span class="cline-any cline-yes">23x</span>
1898
1171
  <span class="cline-any cline-neutral">&nbsp;</span>
1899
1172
  <span class="cline-any cline-neutral">&nbsp;</span>
1900
- <span class="cline-any cline-yes">15x</span>
1173
+ <span class="cline-any cline-yes">21x</span>
1901
1174
  <span class="cline-any cline-neutral">&nbsp;</span>
1902
1175
  <span class="cline-any cline-neutral">&nbsp;</span>
1903
1176
  <span class="cline-any cline-neutral">&nbsp;</span>
1904
- <span class="cline-any cline-yes">1x</span>
1177
+ <span class="cline-any cline-yes">4x</span>
1905
1178
  <span class="cline-any cline-neutral">&nbsp;</span>
1906
1179
  <span class="cline-any cline-neutral">&nbsp;</span>
1907
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1908
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
1909
- <span class="cline-any cline-yes">1x</span>
1182
+ <span class="cline-any cline-yes">4x</span>
1910
1183
  <span class="cline-any cline-neutral">&nbsp;</span>
1911
1184
  <span class="cline-any cline-neutral">&nbsp;</span>
1912
1185
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1922,11 +1195,11 @@
1922
1195
  <span class="cline-any cline-neutral">&nbsp;</span>
1923
1196
  <span class="cline-any cline-neutral">&nbsp;</span>
1924
1197
  <span class="cline-any cline-neutral">&nbsp;</span>
1925
- <span class="cline-any cline-yes">1x</span>
1926
- <span class="cline-any cline-yes">1x</span>
1927
- <span class="cline-any cline-yes">1x</span>
1198
+ <span class="cline-any cline-yes">4x</span>
1199
+ <span class="cline-any cline-yes">4x</span>
1200
+ <span class="cline-any cline-yes">4x</span>
1928
1201
  <span class="cline-any cline-neutral">&nbsp;</span>
1929
- <span class="cline-any cline-yes">1x</span>
1202
+ <span class="cline-any cline-yes">4x</span>
1930
1203
  <span class="cline-any cline-neutral">&nbsp;</span>
1931
1204
  <span class="cline-any cline-neutral">&nbsp;</span>
1932
1205
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1950,15 +1223,14 @@
1950
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1951
1224
  <span class="cline-any cline-neutral">&nbsp;</span>
1952
1225
  <span class="cline-any cline-neutral">&nbsp;</span>
1953
- <span class="cline-any cline-yes">1x</span>
1954
- <span class="cline-any cline-yes">1x</span>
1955
- <span class="cline-any cline-yes">1x</span>
1226
+ <span class="cline-any cline-yes">4x</span>
1227
+ <span class="cline-any cline-yes">4x</span>
1228
+ <span class="cline-any cline-yes">4x</span>
1956
1229
  <span class="cline-any cline-neutral">&nbsp;</span>
1957
1230
  <span class="cline-any cline-neutral">&nbsp;</span>
1958
1231
  <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-yes">4x</span>
1959
1233
  <span class="cline-any cline-yes">1x</span>
1960
- <span class="cline-any cline-no">&nbsp;</span>
1961
- <span class="cline-any cline-neutral">&nbsp;</span>
1962
1234
  <span class="cline-any cline-neutral">&nbsp;</span>
1963
1235
  <span class="cline-any cline-neutral">&nbsp;</span>
1964
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1986,28 +1258,26 @@
1986
1258
  <span class="cline-any cline-neutral">&nbsp;</span>
1987
1259
  <span class="cline-any cline-neutral">&nbsp;</span>
1988
1260
  <span class="cline-any cline-neutral">&nbsp;</span>
1989
- <span class="cline-any cline-no">&nbsp;</span>
1990
- <span class="cline-any cline-no">&nbsp;</span>
1991
- <span class="cline-any cline-no">&nbsp;</span>
1992
- <span class="cline-any cline-neutral">&nbsp;</span>
1993
1261
  <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-yes">1x</span>
1263
+ <span class="cline-any cline-yes">1x</span>
1264
+ <span class="cline-any cline-yes">1x</span>
1994
1265
  <span class="cline-any cline-neutral">&nbsp;</span>
1995
1266
  <span class="cline-any cline-neutral">&nbsp;</span>
1996
- <span class="cline-any cline-yes">1x</span>
1997
1267
  <span class="cline-any cline-neutral">&nbsp;</span>
1998
1268
  <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-yes">4x</span>
1999
1270
  <span class="cline-any cline-neutral">&nbsp;</span>
2000
1271
  <span class="cline-any cline-neutral">&nbsp;</span>
2001
1272
  <span class="cline-any cline-neutral">&nbsp;</span>
2002
1273
  <span class="cline-any cline-neutral">&nbsp;</span>
2003
1274
  <span class="cline-any cline-neutral">&nbsp;</span>
2004
1275
  <span class="cline-any cline-neutral">&nbsp;</span>
2005
- <span class="cline-any cline-yes">27x</span>
2006
1276
  <span class="cline-any cline-neutral">&nbsp;</span>
2007
1277
  <span class="cline-any cline-neutral">&nbsp;</span>
2008
- <span class="cline-any cline-yes">1x</span>
2009
- <span class="cline-any cline-yes">1x</span>
2010
- <span class="cline-any cline-yes">1x</span>
1278
+ <span class="cline-any cline-yes">4x</span>
1279
+ <span class="cline-any cline-yes">4x</span>
1280
+ <span class="cline-any cline-yes">4x</span>
2011
1281
  <span class="cline-any cline-neutral">&nbsp;</span>
2012
1282
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as fs from "fs";
2013
1283
  import * as path from "path";
@@ -2020,36 +1290,12 @@ import type {
2020
1290
  VariableSchemaWithInline,
2021
1291
  } from "@featurevisor/types";
2022
1292
  import { Dependencies } from "../dependencies";
1293
+ import { normalizeOptionValues, resolveTargets, targetIncludesFeature } from "../targeting";
2023
1294
  &nbsp;
2024
1295
  export interface TypeScriptGenerationOptions {
2025
1296
  tag?: string | string[];
1297
+ target?: string | string[];
2026
1298
  react?: boolean;
2027
- individualFeatures?: boolean;
2028
- }
2029
- &nbsp;
2030
- function convertFeaturevisorTypeToTypeScriptType(featurevisorType: string): string {
2031
- switch (featurevisorType) {
2032
- case "boolean":
2033
- return "boolean";
2034
- case "string":
2035
- return "string";
2036
- case "integer":
2037
- return "number";
2038
- case "double":
2039
- return "number";
2040
- <span class="branch-4 cbranch-no" title="branch not covered" > case "date":</span>
2041
- <span class="cstat-no" title="statement not covered" > return "Date | string";</span>
2042
- <span class="branch-5 cbranch-no" title="branch not covered" > case "semver":</span>
2043
- <span class="cstat-no" title="statement not covered" > return "string";</span>
2044
- <span class="branch-6 cbranch-no" title="branch not covered" > case "array":</span>
2045
- <span class="cstat-no" title="statement not covered" > return "string[]";</span>
2046
- <span class="branch-7 cbranch-no" title="branch not covered" > case "object":</span>
2047
- <span class="cstat-no" title="statement not covered" > return "Record&lt;string, unknown&gt;";</span>
2048
- <span class="branch-8 cbranch-no" title="branch not covered" > case "json":</span>
2049
- <span class="cstat-no" title="statement not covered" > return "unknown";</span>
2050
- <span class="branch-9 cbranch-no" title="branch not covered" > default:</span>
2051
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unknown type: ${featurevisorType}`);</span>
2052
- }
2053
1299
  }
2054
1300
  &nbsp;
2055
1301
  function shouldWrapArrayItemType(typeName: string): boolean {
@@ -2140,8 +1386,8 @@ function resolveSchema(schema: Schema, schemasByKey: Record&lt;string, Schema&gt
2140
1386
  function constToLiteralType(constVal: unknown): string | null {
2141
1387
  <span class="missing-if-branch" title="if path not taken" >I</span>if (constVal === null || constVal === undefined) <span class="cstat-no" title="statement not covered" >return null;</span>
2142
1388
  if (typeof constVal === "string") return JSON.stringify(constVal);
2143
- if (typeof constVal === "number") return String(constVal);
2144
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof constVal === "boolean") <span class="cstat-no" title="statement not covered" >return constVal ? "true" : "false";</span></span>
1389
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof constVal === "number") return String(constVal);
1390
+ <span class="cstat-no" title="statement not covered" > if (typeof constVal === "boolean") <span class="cstat-no" title="statement not covered" >return constVal ? "true" : "false";</span></span>
2145
1391
  <span class="cstat-no" title="statement not covered" > return null;</span>
2146
1392
  }
2147
1393
  &nbsp;
@@ -2219,258 +1465,12 @@ function getEffectiveVariableSchema(
2219
1465
  variableSchema: VariableSchema,
2220
1466
  schemasByKey: Record&lt;string, Schema&gt;,
2221
1467
  ): VariableSchemaWithInline | Schema | undefined {
2222
- if ("schema" in variableSchema &amp;&amp; variableSchema.schema) {
2223
- return schemasByKey[variableSchema.schema];
1468
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ("schema" in variableSchema &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >variableSchema.schema)</span> {
1469
+ <span class="cstat-no" title="statement not covered" > return schemasByKey[variableSchema.schema];</span>
2224
1470
  }
2225
1471
  return variableSchema as VariableSchemaWithInline;
2226
1472
  }
2227
1473
  &nbsp;
2228
- /**
2229
- * Generates TypeScript type/interface declarations and metadata for a variable.
2230
- * Returns declarations to emit (interface or type alias) plus the type name and generic to use in the getter.
2231
- * When isLiteralType is true, the getter return must be asserted so the SDK's primitive return type matches the literal.
2232
- * When schemaTypeNames is provided, direct schema refs and schema refs in array items use those type names and schemaTypesUsed is populated.
2233
- */
2234
- function generateVariableTypeDeclarations(
2235
- variableKey: string,
2236
- variableSchema: VariableSchema,
2237
- schemasByKey: Record&lt;string, Schema&gt;,
2238
- schemaTypeNames?: Record&lt;string, string&gt;,
2239
- ): {
2240
- declarations: string[];
2241
- returnTypeName: string;
2242
- genericArg: string;
2243
- isLiteralType?: boolean;
2244
- useGetVariable?: boolean;
2245
- schemaTypesUsed: string[];
2246
- } {
2247
- const typeName = getPascalCase(variableKey) + "Variable";
2248
- const itemTypeName = getPascalCase(variableKey) + "VariableItem";
2249
- const schemaTypesUsed: string[] = [];
2250
- &nbsp;
2251
- const addSchemaUsed = (name: string) =&gt; {
2252
- if (name &amp;&amp; !schemaTypesUsed.includes(name)) schemaTypesUsed.push(name);
2253
- };
2254
- &nbsp;
2255
- // Direct schema reference: emit type alias to schema type and reuse it
2256
- if (
2257
- schemaTypeNames &amp;&amp;
2258
- "schema" in variableSchema &amp;&amp;
2259
- variableSchema.schema &amp;&amp;
2260
- schemasByKey[variableSchema.schema]
2261
- ) {
2262
- const schemaKey = variableSchema.schema;
2263
- const schemaTypeName = schemaTypeNames[schemaKey];
2264
- const resolvedSchema = resolveSchema(schemasByKey[schemaKey], schemasByKey);
2265
- const isOneOf =
2266
- resolvedSchema.oneOf &amp;&amp;
2267
- Array.isArray(resolvedSchema.oneOf) &amp;&amp;
2268
- resolvedSchema.oneOf.length &gt; 0 &amp;&amp;
2269
- !resolvedSchema.type;
2270
- const isLiteralSchema =
2271
- resolvedSchema.const !== undefined ||
2272
- (resolvedSchema.enum &amp;&amp; Array.isArray(resolvedSchema.enum) &amp;&amp; resolvedSchema.enum.length &gt; 0);
2273
- addSchemaUsed(schemaTypeName);
2274
- // getVariableArray&lt;T&gt; expects T to be the element type, not the full array type
2275
- let genericArg = schemaTypeName;
2276
- if (resolvedSchema.type === "array" &amp;&amp; resolvedSchema.items) {
2277
- const itemsSchema = resolvedSchema.items as Schema;
2278
- if ("schema" in itemsSchema &amp;&amp; itemsSchema.schema &amp;&amp; schemaTypeNames[itemsSchema.schema]) {
2279
- genericArg = schemaTypeNames[itemsSchema.schema];
2280
- addSchemaUsed(genericArg);
2281
- } else {
2282
- genericArg = schemaToTypeScriptType(itemsSchema, schemasByKey, schemaTypeNames);
2283
- }
2284
- }
2285
- return {
2286
- declarations: [`${INDENT_NS}export type ${typeName} = ${schemaTypeName};`],
2287
- returnTypeName: schemaTypeName,
2288
- genericArg,
2289
- useGetVariable: isOneOf,
2290
- isLiteralType: isOneOf || isLiteralSchema,
2291
- schemaTypesUsed,
2292
- };
2293
- }
2294
- &nbsp;
2295
- const effective = getEffectiveVariableSchema(variableSchema, schemasByKey);
2296
- const type = effective?.type;
2297
- const declarations: string[] = [];
2298
- &nbsp;
2299
- if (type === "json") {
2300
- return { declarations: [], returnTypeName: "T", genericArg: "T", schemaTypesUsed };
2301
- }
2302
- &nbsp;
2303
- const effectiveOneOf =
2304
- effective &amp;&amp; "oneOf" in effective &amp;&amp; Array.isArray((effective as Schema).oneOf)
2305
- ? (effective as Schema).oneOf
2306
- : undefined;
2307
- if (effectiveOneOf &amp;&amp; effectiveOneOf.length &gt; 0 &amp;&amp; !type) {
2308
- const unionType = effectiveOneOf
2309
- .map((branch) =&gt; schemaToTypeScriptType(branch as Schema, schemasByKey, schemaTypeNames))
2310
- .join(" | ");
2311
- if (schemaTypeNames) {
2312
- Object.values(schemaTypeNames).forEach((n) =&gt; {
2313
- <span class="missing-if-branch" title="if path not taken" >I</span>if (unionType.includes(n)) <span class="cstat-no" title="statement not covered" >addSchemaUsed(n);</span>
2314
- });
2315
- }
2316
- declarations.push(`${INDENT_NS}export type ${typeName} = ${unionType};`);
2317
- return {
2318
- declarations,
2319
- returnTypeName: typeName,
2320
- genericArg: typeName,
2321
- isLiteralType: true,
2322
- useGetVariable: true,
2323
- schemaTypesUsed,
2324
- };
2325
- }
2326
- &nbsp;
2327
- if (type === "object") {
2328
- const resolvedEffective =
2329
- effective &amp;&amp; ("properties" in effective || "additionalProperties" in effective)
2330
- ? (resolveSchema(effective as Schema, schemasByKey) as Schema)
2331
- : undefined;
2332
- const props = resolvedEffective?.properties;
2333
- const additional = resolvedEffective?.additionalProperties;
2334
- if (
2335
- (props &amp;&amp; typeof props === "object" &amp;&amp; Object.keys(props).length &gt; 0) ||
2336
- (additional &amp;&amp; typeof additional === "object")
2337
- ) {
2338
- const requiredSet = new Set(resolvedEffective?.required || []);
2339
- const entries = Object.entries(props ?? {})
2340
- .map(([k, v]) =&gt; {
2341
- const propType = schemaToTypeScriptType(v as Schema, schemasByKey, schemaTypeNames);
2342
- if (schemaTypeNames)
2343
- Object.values(schemaTypeNames).forEach((n) =&gt; {
2344
- if (propType.includes(n)) addSchemaUsed(n);
2345
- });
2346
- const optional = !requiredSet.has(k);
2347
- return optional
2348
- ? `${INDENT_NS_BODY}${formatObjectKey(k)}?: ${propType};`
2349
- : `${INDENT_NS_BODY}${formatObjectKey(k)}: ${propType};`;
2350
- })
2351
- .filter(Boolean);
2352
- if (additional &amp;&amp; typeof additional === "object") {
2353
- const additionalType = schemaToTypeScriptType(
2354
- additional as Schema,
2355
- schemasByKey,
2356
- schemaTypeNames,
2357
- );
2358
- if (schemaTypeNames)
2359
- Object.values(schemaTypeNames).forEach((n) =&gt; {
2360
- if (additionalType.includes(n)) addSchemaUsed(n);
2361
- });
2362
- const propUnion = Object.entries(props ?? {})
2363
- .map(<span class="fstat-no" title="function not covered" >([</span>, v]) =&gt; <span class="cstat-no" title="statement not covered" >schemaToTypeScriptType(v as Schema, schemasByKey, schemaTypeNames))</span>
2364
- .join(" | ");
2365
- const indexType = [additionalType, propUnion].filter(Boolean).join(" | ");
2366
- entries.push(`${INDENT_NS_BODY}[key: string]: ${indexType};`);
2367
- }
2368
- declarations.push(
2369
- `${INDENT_NS}export interface ${typeName} {\n${entries.join("\n")}\n${INDENT_NS}}`,
2370
- );
2371
- return { declarations, returnTypeName: typeName, genericArg: typeName, schemaTypesUsed };
2372
- }
2373
- declarations.push(`${INDENT_NS}export type ${typeName} = Record&lt;string, unknown&gt;;`);
2374
- return { declarations, returnTypeName: typeName, genericArg: typeName, schemaTypesUsed };
2375
- }
2376
- &nbsp;
2377
- if (type === "array") {
2378
- const itemsSchema = effective &amp;&amp; "items" in effective ? (effective.items as Schema) : undefined;
2379
- if (itemsSchema) {
2380
- const itemsRef =
2381
- schemaTypeNames &amp;&amp;
2382
- "schema" in itemsSchema &amp;&amp;
2383
- itemsSchema.schema &amp;&amp;
2384
- schemasByKey[itemsSchema.schema]
2385
- ? schemaTypeNames[itemsSchema.schema]
2386
- : null;
2387
- if (itemsRef) {
2388
- addSchemaUsed(itemsRef);
2389
- declarations.push(`${INDENT_NS}export type ${itemTypeName} = ${itemsRef};`);
2390
- return {
2391
- declarations,
2392
- returnTypeName: `${itemTypeName}[]`,
2393
- genericArg: itemTypeName,
2394
- schemaTypesUsed,
2395
- };
2396
- }
2397
- const resolvedItems = resolveSchema(itemsSchema, schemasByKey);
2398
- if (
2399
- resolvedItems.type === "object" &amp;&amp;
2400
- resolvedItems.properties &amp;&amp;
2401
- Object.keys(resolvedItems.properties).length &gt; 0
2402
- ) {
2403
- const requiredSet = new Set(resolvedItems.required || []);
2404
- const entries = Object.entries(resolvedItems.properties)
2405
- .map(([k, v]) =&gt; {
2406
- const propType = schemaToTypeScriptType(v as Schema, schemasByKey, schemaTypeNames);
2407
- if (schemaTypeNames)
2408
- Object.values(schemaTypeNames).forEach((n) =&gt; {
2409
- <span class="missing-if-branch" title="if path not taken" >I</span>if (propType.includes(n)) <span class="cstat-no" title="statement not covered" >addSchemaUsed(n);</span>
2410
- });
2411
- const optional = !requiredSet.has(k);
2412
- return optional
2413
- ? `${INDENT_NS_BODY}${k}?: ${propType};`
2414
- : <span class="branch-1 cbranch-no" title="branch not covered" >`${INDENT_NS_BODY}${k}: ${propType};`;</span>
2415
- })
2416
- .join("\n");
2417
- declarations.push(
2418
- `${INDENT_NS}export interface ${itemTypeName} {\n${entries}\n${INDENT_NS}}`,
2419
- );
2420
- return {
2421
- declarations,
2422
- returnTypeName: `${itemTypeName}[]`,
2423
- genericArg: itemTypeName,
2424
- schemaTypesUsed,
2425
- };
2426
- }
2427
- const itemType = schemaToTypeScriptType(resolvedItems, schemasByKey, schemaTypeNames);
2428
- if (schemaTypeNames)
2429
- Object.values(schemaTypeNames).forEach((n) =&gt; {
2430
- <span class="missing-if-branch" title="if path not taken" >I</span>if (itemType.includes(n)) <span class="cstat-no" title="statement not covered" >addSchemaUsed(n);</span>
2431
- });
2432
- declarations.push(`${INDENT_NS}export type ${itemTypeName} = ${itemType};`);
2433
- return {
2434
- declarations,
2435
- returnTypeName: `${itemTypeName}[]`,
2436
- genericArg: itemTypeName,
2437
- schemaTypesUsed,
2438
- };
2439
- }
2440
- declarations.push(`${INDENT_NS}export type ${itemTypeName} = string;`);
2441
- return {
2442
- declarations,
2443
- returnTypeName: `${itemTypeName}[]`,
2444
- genericArg: itemTypeName,
2445
- schemaTypesUsed,
2446
- };
2447
- }
2448
- &nbsp;
2449
- // primitive: boolean, string, integer, double (or unknown when schema ref unresolved)
2450
- // When schema has primitive const or enum, emit literal or union type
2451
- const effectiveConst =
2452
- effective &amp;&amp; "const" in effective &amp;&amp; (effective as Schema).const !== undefined
2453
- ? (effective as Schema).const
2454
- : undefined;
2455
- const effectiveEnum =
2456
- effective &amp;&amp; "enum" in effective &amp;&amp; Array.isArray((effective as Schema).enum)
2457
- ? (effective as Schema).enum
2458
- : undefined;
2459
- const literalType = effectiveConst !== undefined ? constToLiteralType(effectiveConst) : null;
2460
- const enumUnion =
2461
- effectiveEnum &amp;&amp; effectiveEnum.length &gt; 0 ? enumToUnionType(effectiveEnum) : null;
2462
- const primitiveType =
2463
- literalType ?? enumUnion ?? (type ? convertFeaturevisorTypeToTypeScriptType(type) : <span class="branch-1 cbranch-no" title="branch not covered" >"unknown")</span>;
2464
- declarations.push(`${INDENT_NS}export type ${typeName} = ${primitiveType};`);
2465
- return {
2466
- declarations,
2467
- returnTypeName: typeName,
2468
- genericArg: typeName,
2469
- isLiteralType: literalType !== null || enumUnion !== null,
2470
- schemaTypesUsed,
2471
- };
2472
- }
2473
- &nbsp;
2474
1474
  function getPascalCase(str) {
2475
1475
  // Remove special characters and split the string into an array of words
2476
1476
  const words = str.replace(/[^a-zA-Z0-9]/g, " ").split(" ");
@@ -2510,7 +1510,7 @@ function getVariableTypeForFeaturesMap(
2510
1510
  ): { typeName: string; schemaTypesUsed: string[] } {
2511
1511
  const schemaTypesUsed: string[] = [];
2512
1512
  const addSchemaUsed = (name: string) =&gt; {
2513
- if (name &amp;&amp; !schemaTypesUsed.includes(name)) {
1513
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (name &amp;&amp; !schemaTypesUsed.includes(name)) {
2514
1514
  schemaTypesUsed.push(name);
2515
1515
  }
2516
1516
  };
@@ -2537,7 +1537,7 @@ function getVariableTypeForFeaturesMap(
2537
1537
  &nbsp;
2538
1538
  const typeName = schemaToTypeScriptType(effective as Schema, schemasByKey, schemaTypeNames);
2539
1539
  &nbsp;
2540
- if (schemaTypeNames) {
1540
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (schemaTypeNames) {
2541
1541
  Object.values(schemaTypeNames).forEach((name) =&gt; {
2542
1542
  if (typeName.includes(name)) {
2543
1543
  addSchemaUsed(name);
@@ -2593,21 +1593,20 @@ function generateAttributesFileContent(
2593
1593
  return `${importLine}${lines.join("\n")}\n`;
2594
1594
  }
2595
1595
  &nbsp;
2596
- // Indentation for generated namespace content (2 spaces per level)
2597
1596
  const INDENT_NS = " ";
2598
1597
  const INDENT_NS_BODY = " ";
2599
1598
  &nbsp;
2600
1599
  const instanceSnippet = `
2601
- import { FeaturevisorInstance } from "@featurevisor/sdk";
1600
+ import type { Featurevisor } from "@featurevisor/sdk";
2602
1601
  &nbsp;
2603
- let _instance: FeaturevisorInstance;
1602
+ let _instance: Featurevisor;
2604
1603
  &nbsp;
2605
- export function setInstance(instance: FeaturevisorInstance) {
1604
+ export function setInstance(instance: Featurevisor) {
2606
1605
  _instance = instance;
2607
1606
  }
2608
1607
  &nbsp;
2609
- export function getInstance(): FeaturevisorInstance {
2610
- return _instance as FeaturevisorInstance;
1608
+ export function getInstance(): Featurevisor {
1609
+ return _instance as Featurevisor;
2611
1610
  }
2612
1611
  `.trimStart();
2613
1612
  &nbsp;
@@ -2616,14 +1615,21 @@ export async function generateTypeScriptCodeForProject(
2616
1615
  outputPath: string,
2617
1616
  options: TypeScriptGenerationOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
2618
1617
  ) {
2619
- const { rootDirectoryPath, datasource } = deps;
2620
- const selectedTags = options.tag
2621
- ? <span class="branch-0 cbranch-no" title="branch not covered" >Array.isArray(options.tag)</span>
2622
- ? options.tag
2623
- : [options.tag]
2624
- : [];
1618
+ const { rootDirectoryPath, projectConfig, datasource } = deps;
1619
+ const selectedTags = normalizeOptionValues(options.tag);
2625
1620
  const shouldGenerateReact = Boolean(options.react);
2626
- const shouldGenerateIndividualFeatures = options.individualFeatures !== false;
1621
+ &nbsp;
1622
+ const unknownTag = selectedTags.find((tag) =&gt; !projectConfig.tags.includes(tag));
1623
+ if (unknownTag) {
1624
+ throw new Error(
1625
+ `Unknown tag "${unknownTag}". Available tags: ${projectConfig.tags.join(", ") || <span class="branch-1 cbranch-no" title="branch not covered" >"none"}.</span>`,
1626
+ );
1627
+ }
1628
+ &nbsp;
1629
+ const selectedTargets = await resolveTargets(datasource, options.target, {
1630
+ defaultToAll: false,
1631
+ requireTargets: false,
1632
+ });
2627
1633
  &nbsp;
2628
1634
  console.log("\nGenerating TypeScript code...\n");
2629
1635
  &nbsp;
@@ -2639,7 +1645,7 @@ export async function generateTypeScriptCodeForProject(
2639
1645
  }
2640
1646
  const schemaKeys = Object.keys(schemasByKey);
2641
1647
  const hasSchemasFile = schemaKeys.length &gt; 0;
2642
- if (hasSchemasFile) {
1648
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (hasSchemasFile) {
2643
1649
  const schemasContent = generateSchemasFileContent(schemaKeys, schemasByKey);
2644
1650
  const schemasFilePath = path.join(outputPath, "schemas.ts");
2645
1651
  fs.writeFileSync(schemasFilePath, schemasContent);
@@ -2721,7 +1727,6 @@ ${attributeProperties}
2721
1727
  const parsedFeatures: {
2722
1728
  featureKey: string;
2723
1729
  parsedFeature: ParsedFeature;
2724
- namespaceValue: string;
2725
1730
  }[] = [];
2726
1731
  &nbsp;
2727
1732
  for (const featureKey of featureFiles) {
@@ -2731,117 +1736,20 @@ ${attributeProperties}
2731
1736
  <span class="cstat-no" title="statement not covered" > continue;</span>
2732
1737
  }
2733
1738
  &nbsp;
2734
- <span class="missing-if-branch" title="if path not taken" >I</span>if (selectedTags.length &gt; 0) {
2735
- const featureTags = <span class="cstat-no" title="statement not covered" >Array.isArray(parsedFeature.tags) ? parsedFeature.tags : [];</span>
2736
- const hasTags = <span class="cstat-no" title="statement not covered" >selectedTags.every(<span class="fstat-no" title="function not covered" >(t</span>ag) =&gt; <span class="cstat-no" title="statement not covered" >featureTags.includes(tag))</span>;</span>
2737
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!hasTags) {</span>
2738
- <span class="cstat-no" title="statement not covered" > continue;</span>
2739
- }
1739
+ const featureTags = Array.isArray(parsedFeature.tags) ? parsedFeature.tags : <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
1740
+ const matchesSelectedTag = selectedTags.some((tag) =&gt; featureTags.includes(tag));
1741
+ const matchesSelectedTarget = selectedTargets.some((target) =&gt;
1742
+ targetIncludesFeature(target, featureKey, parsedFeature),
1743
+ );
1744
+ if (
1745
+ (selectedTags.length &gt; 0 || selectedTargets.length &gt; 0) &amp;&amp;
1746
+ !matchesSelectedTag &amp;&amp;
1747
+ !matchesSelectedTarget
1748
+ ) {
1749
+ continue;
2740
1750
  }
2741
1751
  &nbsp;
2742
- const namespaceValue = getPascalCase(featureKey) + "Feature";
2743
- parsedFeatures.push({ featureKey, parsedFeature, namespaceValue });
2744
- }
2745
- &nbsp;
2746
- const featureNamespaces: string[] = [];
2747
- if (shouldGenerateIndividualFeatures) {
2748
- for (const { featureKey, parsedFeature, namespaceValue } of parsedFeatures) {
2749
- featureNamespaces.push(namespaceValue);
2750
- &nbsp;
2751
- let variableTypeDeclarations = "";
2752
- let variableMethods = "";
2753
- const featureSchemaTypesUsed = new Set&lt;string&gt;();
2754
- &nbsp;
2755
- if (parsedFeature.variablesSchema) {
2756
- const variableKeys = Object.keys(parsedFeature.variablesSchema);
2757
- const allDeclarations: string[] = [];
2758
- &nbsp;
2759
- for (const variableKey of variableKeys) {
2760
- const variableSchema = parsedFeature.variablesSchema[variableKey];
2761
- const effective = getEffectiveVariableSchema(variableSchema, schemasByKey);
2762
- const variableType = effective?.type;
2763
- const {
2764
- declarations,
2765
- returnTypeName,
2766
- genericArg,
2767
- isLiteralType,
2768
- useGetVariable,
2769
- schemaTypesUsed,
2770
- } = generateVariableTypeDeclarations(
2771
- variableKey,
2772
- variableSchema,
2773
- schemasByKey,
2774
- hasSchemasFile ? schemaTypeNames : <span class="branch-1 cbranch-no" title="branch not covered" >undefined,</span>
2775
- );
2776
- schemaTypesUsed.forEach((t) =&gt; featureSchemaTypesUsed.add(t));
2777
- allDeclarations.push(...declarations);
2778
- &nbsp;
2779
- const internalMethodName = `getVariable${
2780
- variableType === "json" ? "JSON" : getPascalCase(variableType ?? "string")
2781
- }`;
2782
- &nbsp;
2783
- const hasGeneric =
2784
- variableType === "json" || variableType === "array" || variableType === "object";
2785
- const literalAssertion = isLiteralType ? ` as ${returnTypeName} | null` : "";
2786
- if (useGetVariable) {
2787
- variableMethods += `
2788
- &nbsp;
2789
- ${INDENT_NS}export function get${getPascalCase(variableKey)}(context: Context = {}): ${returnTypeName} | null {
2790
- ${INDENT_NS_BODY}return getInstance().getVariable(key, "${variableKey}", context)${literalAssertion};
2791
- ${INDENT_NS}}`;
2792
- } else if (variableType === "json") {
2793
- variableMethods += `
2794
- &nbsp;
2795
- ${INDENT_NS}export function get${getPascalCase(variableKey)}&lt;T = unknown&gt;(context: Context = {}): T | null {
2796
- ${INDENT_NS_BODY}return getInstance().${internalMethodName}&lt;T&gt;(key, "${variableKey}", context);
2797
- ${INDENT_NS}}`;
2798
- } else if (hasGeneric) {
2799
- variableMethods += `
2800
- &nbsp;
2801
- ${INDENT_NS}export function get${getPascalCase(variableKey)}(context: Context = {}): ${returnTypeName} | null {
2802
- ${INDENT_NS_BODY}return getInstance().${internalMethodName}&lt;${genericArg}&gt;(key, "${variableKey}", context);
2803
- ${INDENT_NS}}`;
2804
- } else {
2805
- variableMethods += `
2806
- &nbsp;
2807
- ${INDENT_NS}export function get${getPascalCase(variableKey)}(context: Context = {}): ${returnTypeName} | null {
2808
- ${INDENT_NS_BODY}return getInstance().${internalMethodName}(key, "${variableKey}", context)${literalAssertion};
2809
- ${INDENT_NS}}`;
2810
- }
2811
- }
2812
- &nbsp;
2813
- if (allDeclarations.length &gt; 0) {
2814
- variableTypeDeclarations = "\n\n" + allDeclarations.join("\n\n");
2815
- }
2816
- }
2817
- &nbsp;
2818
- const schemasImportLine = formatTypeImport([...featureSchemaTypesUsed].sort(), "./schemas");
2819
- &nbsp;
2820
- const featureContent = `
2821
- import { Context } from "./context";
2822
- import { getInstance } from "./instance";
2823
- ${schemasImportLine}export namespace ${namespaceValue} {
2824
- ${INDENT_NS}export const key = "${featureKey}";${variableTypeDeclarations}
2825
- &nbsp;
2826
- ${INDENT_NS}export function isEnabled(context: Context = {}) {
2827
- ${INDENT_NS_BODY}return getInstance().isEnabled(key, context);
2828
- ${INDENT_NS}}
2829
- &nbsp;
2830
- ${INDENT_NS}export function getVariation(context: Context = {}) {
2831
- ${INDENT_NS_BODY}return getInstance().getVariation(key, context);
2832
- ${INDENT_NS}}${variableMethods}
2833
- }
2834
- `.trimStart();
2835
- &nbsp;
2836
- const featureNamespaceFilePath = path.join(outputPath, `${namespaceValue}.ts`);
2837
- fs.writeFileSync(featureNamespaceFilePath, featureContent);
2838
- console.log(
2839
- `Feature ${featureKey} file written at: ${getRelativePath(
2840
- rootDirectoryPath,
2841
- featureNamespaceFilePath,
2842
- )}`,
2843
- );
2844
- }
1752
+ parsedFeatures.push({ featureKey, parsedFeature });
2845
1753
  }
2846
1754
  &nbsp;
2847
1755
  const featuresTypeSchemasUsed = new Set&lt;string&gt;();
@@ -2929,8 +1837,8 @@ export function getVariable&lt;F extends FeatureKey, V extends VariableKey&lt;F&
2929
1837
  `Functions file written at: ${getRelativePath(rootDirectoryPath, functionsFilePath)}`,
2930
1838
  );
2931
1839
  &nbsp;
2932
- <span class="missing-if-branch" title="if path not taken" >I</span>if (shouldGenerateReact) {
2933
- const reactFileContent = <span class="cstat-no" title="statement not covered" >`</span>
1840
+ if (shouldGenerateReact) {
1841
+ const reactFileContent = `
2934
1842
  import {
2935
1843
  useFlag as useFlagOriginal,
2936
1844
  useVariation as useVariationOriginal,
@@ -2959,9 +1867,9 @@ export function useVariable&lt;F extends FeatureKey, V extends VariableKey&lt;F&
2959
1867
  return useVariableOriginal(featureKey, variableKey, context) as VariableType&lt;F, V&gt; | null;
2960
1868
  }
2961
1869
  `.trimStart();
2962
- const reactFilePath = <span class="cstat-no" title="statement not covered" >path.join(outputPath, "react.ts");</span>
2963
- <span class="cstat-no" title="statement not covered" > fs.writeFileSync(reactFilePath, reactFileContent);</span>
2964
- <span class="cstat-no" title="statement not covered" > console.log(`React file written at: ${getRelativePath(rootDirectoryPath, reactFilePath)}`);</span>
1870
+ const reactFilePath = path.join(outputPath, "react.ts");
1871
+ fs.writeFileSync(reactFilePath, reactFileContent);
1872
+ console.log(`React file written at: ${getRelativePath(rootDirectoryPath, reactFilePath)}`);
2965
1873
  }
2966
1874
  &nbsp;
2967
1875
  // index
@@ -2973,10 +1881,7 @@ export function useVariable&lt;F extends FeatureKey, V extends VariableKey&lt;F&
2973
1881
  ...(hasSchemasFile ? [`export * from "./schemas";`] : <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>,
2974
1882
  `export * from "./features";`,
2975
1883
  `export * from "./functions";`,
2976
- ...(shouldGenerateReact ? <span class="branch-0 cbranch-no" title="branch not covered" >[`export * from "./react";`] </span>: []),
2977
- ...featureNamespaces.map((featureNamespace) =&gt; {
2978
- return `export * from "./${featureNamespace}";`;
2979
- }),
1884
+ ...(shouldGenerateReact ? [`export * from "./react";`] : []),
2980
1885
  ].join("\n") + "\n";
2981
1886
  const indexFilePath = path.join(outputPath, "index.ts");
2982
1887
  fs.writeFileSync(indexFilePath, indexContent);
@@ -2989,16 +1894,16 @@ export function useVariable&lt;F extends FeatureKey, V extends VariableKey&lt;F&
2989
1894
  <div class='footer quiet pad2 space-top1 center small'>
2990
1895
  Code coverage generated by
2991
1896
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2992
- at 2026-04-26T16:47:51.164Z
1897
+ at 2026-07-12T20:35:50.655Z
2993
1898
  </div>
2994
- <script src="../prettify.js"></script>
1899
+ <script src="../../prettify.js"></script>
2995
1900
  <script>
2996
1901
  window.onload = function () {
2997
1902
  prettyPrint();
2998
1903
  };
2999
1904
  </script>
3000
- <script src="../sorter.js"></script>
3001
- <script src="../block-navigation.js"></script>
1905
+ <script src="../../sorter.js"></script>
1906
+ <script src="../../block-navigation.js"></script>
3002
1907
  </body>
3003
1908
  </html>
3004
1909