@sealcode/sealgen 0.8.44 → 0.8.47

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 (186) hide show
  1. package/lib/cli.js +0 -0
  2. package/lib/make-env.js +1 -1
  3. package/lib/mount.js +1 -1
  4. package/lib/mount.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/make-env.ts +1 -1
  7. package/src/mount.ts +1 -1
  8. package/tsconfig.json +0 -1
  9. package/.nyc_output/00b15432-2e8d-4b16-9dd6-7e23314363c9.json +0 -1
  10. package/.nyc_output/0190dc00-d309-48d0-a5db-e9484e3c7334.json +0 -1
  11. package/.nyc_output/04bfea78-9274-4d35-b7e4-d0bf42636911.json +0 -1
  12. package/.nyc_output/0d4efe84-14e0-4bf0-bf22-b95472fe2be4.json +0 -1
  13. package/.nyc_output/1faea508-9cb4-46f4-b7ad-94a816e1ee7d.json +0 -1
  14. package/.nyc_output/2b2df469-dc31-48c9-ab34-68a74266e2c2.json +0 -1
  15. package/.nyc_output/32b5e63b-c8f8-4d9d-a09b-d97656c0e3f6.json +0 -1
  16. package/.nyc_output/442ce939-4f43-496b-a8a9-2f1fb9cfa619.json +0 -1
  17. package/.nyc_output/4573bb03-90d4-4408-ba15-b6835c618b33.json +0 -1
  18. package/.nyc_output/468fbd9c-6a27-4e33-8423-dbaec01e62a9.json +0 -1
  19. package/.nyc_output/51894388-b88d-4f0b-8d5b-4a1dd71cf668.json +0 -1
  20. package/.nyc_output/56263b22-3ed5-4ce2-9bbb-f2c9575cdeee.json +0 -1
  21. package/.nyc_output/6934a9dd-6431-48aa-93f1-4eeef0095773.json +0 -1
  22. package/.nyc_output/70979008-f285-481b-bb09-ca48a1376f81.json +0 -1
  23. package/.nyc_output/817c9485-a0ef-486d-8dee-906456fe77fb.json +0 -1
  24. package/.nyc_output/9f725153-f783-4948-81d3-c4cc792738bf.json +0 -1
  25. package/.nyc_output/cd4d852c-f8fc-4cb1-807b-7d053a0ef8fc.json +0 -1
  26. package/.nyc_output/ec3011f0-8180-492e-8d85-4d92484ccb44.json +0 -1
  27. package/.nyc_output/f78b831a-65ca-497d-9f9e-001a3efa6f54.json +0 -1
  28. package/.nyc_output/processinfo/00b15432-2e8d-4b16-9dd6-7e23314363c9.json +0 -1
  29. package/.nyc_output/processinfo/0190dc00-d309-48d0-a5db-e9484e3c7334.json +0 -1
  30. package/.nyc_output/processinfo/04bfea78-9274-4d35-b7e4-d0bf42636911.json +0 -1
  31. package/.nyc_output/processinfo/0d4efe84-14e0-4bf0-bf22-b95472fe2be4.json +0 -1
  32. package/.nyc_output/processinfo/1faea508-9cb4-46f4-b7ad-94a816e1ee7d.json +0 -1
  33. package/.nyc_output/processinfo/2b2df469-dc31-48c9-ab34-68a74266e2c2.json +0 -1
  34. package/.nyc_output/processinfo/32b5e63b-c8f8-4d9d-a09b-d97656c0e3f6.json +0 -1
  35. package/.nyc_output/processinfo/442ce939-4f43-496b-a8a9-2f1fb9cfa619.json +0 -1
  36. package/.nyc_output/processinfo/4573bb03-90d4-4408-ba15-b6835c618b33.json +0 -1
  37. package/.nyc_output/processinfo/468fbd9c-6a27-4e33-8423-dbaec01e62a9.json +0 -1
  38. package/.nyc_output/processinfo/51894388-b88d-4f0b-8d5b-4a1dd71cf668.json +0 -1
  39. package/.nyc_output/processinfo/56263b22-3ed5-4ce2-9bbb-f2c9575cdeee.json +0 -1
  40. package/.nyc_output/processinfo/6934a9dd-6431-48aa-93f1-4eeef0095773.json +0 -1
  41. package/.nyc_output/processinfo/70979008-f285-481b-bb09-ca48a1376f81.json +0 -1
  42. package/.nyc_output/processinfo/817c9485-a0ef-486d-8dee-906456fe77fb.json +0 -1
  43. package/.nyc_output/processinfo/9f725153-f783-4948-81d3-c4cc792738bf.json +0 -1
  44. package/.nyc_output/processinfo/cd4d852c-f8fc-4cb1-807b-7d053a0ef8fc.json +0 -1
  45. package/.nyc_output/processinfo/ec3011f0-8180-492e-8d85-4d92484ccb44.json +0 -1
  46. package/.nyc_output/processinfo/f78b831a-65ca-497d-9f9e-001a3efa6f54.json +0 -1
  47. package/.nyc_output/processinfo/index.json +0 -1
  48. package/.xunit +0 -47
  49. package/@types/forms/fields/files-multiple.d.ts +0 -12
  50. package/@types/sealgen-url.d.ts +0 -0
  51. package/@types/tests/manual/multiform.d.ts +0 -1
  52. package/coverage/clover.xml +0 -2240
  53. package/coverage/lcov-report/base.css +0 -224
  54. package/coverage/lcov-report/block-navigation.js +0 -79
  55. package/coverage/lcov-report/favicon.png +0 -0
  56. package/coverage/lcov-report/index.html +0 -231
  57. package/coverage/lcov-report/prettify.css +0 -1
  58. package/coverage/lcov-report/prettify.js +0 -2
  59. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  60. package/coverage/lcov-report/sorter.js +0 -170
  61. package/coverage/lcov-report/src/add-collection.ts.html +0 -173
  62. package/coverage/lcov-report/src/add-route.test.ts.html +0 -254
  63. package/coverage/lcov-report/src/add-route.ts.html +0 -338
  64. package/coverage/lcov-report/src/build.ts.html +0 -359
  65. package/coverage/lcov-report/src/cli.ts.html +0 -188
  66. package/coverage/lcov-report/src/components/components.ts.html +0 -86
  67. package/coverage/lcov-report/src/components/index.html +0 -141
  68. package/coverage/lcov-report/src/components/tabs.ts.html +0 -365
  69. package/coverage/lcov-report/src/components/toggle-modal.ts.html +0 -236
  70. package/coverage/lcov-report/src/example.test.ts.html +0 -89
  71. package/coverage/lcov-report/src/find-scss-includes.ts.html +0 -176
  72. package/coverage/lcov-report/src/forms/controls/array.ts.html +0 -758
  73. package/coverage/lcov-report/src/forms/controls/autocomplete.ts.html +0 -179
  74. package/coverage/lcov-report/src/forms/controls/big-radio-group.ts.html +0 -224
  75. package/coverage/lcov-report/src/forms/controls/checkbox-group.ts.html +0 -293
  76. package/coverage/lcov-report/src/forms/controls/checkbox.ts.html +0 -182
  77. package/coverage/lcov-report/src/forms/controls/checkboxed-list-input.ts.html +0 -230
  78. package/coverage/lcov-report/src/forms/controls/collapsible-checkbox-group.ts.html +0 -164
  79. package/coverage/lcov-report/src/forms/controls/collapsible-field-group.ts.html +0 -362
  80. package/coverage/lcov-report/src/forms/controls/controls.ts.html +0 -170
  81. package/coverage/lcov-report/src/forms/controls/derived-frame.ts.html +0 -353
  82. package/coverage/lcov-report/src/forms/controls/derived.ts.html +0 -404
  83. package/coverage/lcov-report/src/forms/controls/dropdown.ts.html +0 -341
  84. package/coverage/lcov-report/src/forms/controls/editable-collection-subset.ts.html +0 -371
  85. package/coverage/lcov-report/src/forms/controls/field-group.ts.html +0 -287
  86. package/coverage/lcov-report/src/forms/controls/file.ts.html +0 -221
  87. package/coverage/lcov-report/src/forms/controls/form-control.ts.html +0 -152
  88. package/coverage/lcov-report/src/forms/controls/form-field-control.ts.html +0 -146
  89. package/coverage/lcov-report/src/forms/controls/form-header.ts.html +0 -137
  90. package/coverage/lcov-report/src/forms/controls/form-paragraph.ts.html +0 -113
  91. package/coverage/lcov-report/src/forms/controls/frame.ts.html +0 -158
  92. package/coverage/lcov-report/src/forms/controls/hidden-input.ts.html +0 -146
  93. package/coverage/lcov-report/src/forms/controls/html.ts.html +0 -194
  94. package/coverage/lcov-report/src/forms/controls/index.html +0 -561
  95. package/coverage/lcov-report/src/forms/controls/multiple-files.ts.html +0 -848
  96. package/coverage/lcov-report/src/forms/controls/multiple-photos.ts.html +0 -212
  97. package/coverage/lcov-report/src/forms/controls/number.ts.html +0 -194
  98. package/coverage/lcov-report/src/forms/controls/photo.ts.html +0 -302
  99. package/coverage/lcov-report/src/forms/controls/radio.ts.html +0 -209
  100. package/coverage/lcov-report/src/forms/controls/reverse-single-reference.ts.html +0 -230
  101. package/coverage/lcov-report/src/forms/controls/simple-input.ts.html +0 -524
  102. package/coverage/lcov-report/src/forms/controls/textarea.ts.html +0 -260
  103. package/coverage/lcov-report/src/forms/controls/tickable.ts.html +0 -461
  104. package/coverage/lcov-report/src/forms/fields/boolean.test.ts.html +0 -188
  105. package/coverage/lcov-report/src/forms/fields/boolean.ts.html +0 -269
  106. package/coverage/lcov-report/src/forms/fields/checkboxed-list.ts.html +0 -278
  107. package/coverage/lcov-report/src/forms/fields/collection-field.ts.html +0 -266
  108. package/coverage/lcov-report/src/forms/fields/email.test.ts.html +0 -152
  109. package/coverage/lcov-report/src/forms/fields/email.ts.html +0 -140
  110. package/coverage/lcov-report/src/forms/fields/enum-multiple.test.ts.html +0 -173
  111. package/coverage/lcov-report/src/forms/fields/enum-multiple.ts.html +0 -266
  112. package/coverage/lcov-report/src/forms/fields/enum.test.ts.html +0 -155
  113. package/coverage/lcov-report/src/forms/fields/enum.ts.html +0 -248
  114. package/coverage/lcov-report/src/forms/fields/existing-sealious-value.ts.html +0 -146
  115. package/coverage/lcov-report/src/forms/fields/field.ts.html +0 -596
  116. package/coverage/lcov-report/src/forms/fields/file.ts.html +0 -347
  117. package/coverage/lcov-report/src/forms/fields/index.html +0 -456
  118. package/coverage/lcov-report/src/forms/fields/multiple-files.ts.html +0 -140
  119. package/coverage/lcov-report/src/forms/fields/number.test.ts.html +0 -182
  120. package/coverage/lcov-report/src/forms/fields/number.ts.html +0 -290
  121. package/coverage/lcov-report/src/forms/fields/pick-from-list.test.ts.html +0 -137
  122. package/coverage/lcov-report/src/forms/fields/pick-from-list.ts.html +0 -236
  123. package/coverage/lcov-report/src/forms/fields/proxy-field.ts.html +0 -152
  124. package/coverage/lcov-report/src/forms/fields/regexp.test.ts.html +0 -155
  125. package/coverage/lcov-report/src/forms/fields/regexp.ts.html +0 -239
  126. package/coverage/lcov-report/src/forms/fields/reverse-single-reference.ts.html +0 -140
  127. package/coverage/lcov-report/src/forms/fields/simple-form-field.ts.html +0 -170
  128. package/coverage/lcov-report/src/forms/fields/structured-array.ts.html +0 -161
  129. package/coverage/lcov-report/src/forms/form.test.ts.html +0 -1133
  130. package/coverage/lcov-report/src/forms/form.ts.html +0 -962
  131. package/coverage/lcov-report/src/forms/index.html +0 -156
  132. package/coverage/lcov-report/src/forms/multiform.test.ts.html +0 -1700
  133. package/coverage/lcov-report/src/forms/multiform.ts.html +0 -788
  134. package/coverage/lcov-report/src/generate-collections.ts.html +0 -311
  135. package/coverage/lcov-report/src/generate-routes.ts.html +0 -440
  136. package/coverage/lcov-report/src/index.html +0 -321
  137. package/coverage/lcov-report/src/index.ts.html +0 -152
  138. package/coverage/lcov-report/src/make-env.ts.html +0 -125
  139. package/coverage/lcov-report/src/make-hidden-inputs.ts.html +0 -152
  140. package/coverage/lcov-report/src/mount.ts.html +0 -335
  141. package/coverage/lcov-report/src/page/access-control.ts.html +0 -134
  142. package/coverage/lcov-report/src/page/index.html +0 -186
  143. package/coverage/lcov-report/src/page/list.ts.html +0 -800
  144. package/coverage/lcov-report/src/page/mountable-with-fields.ts.html +0 -554
  145. package/coverage/lcov-report/src/page/mountable.ts.html +0 -119
  146. package/coverage/lcov-report/src/page/page.ts.html +0 -218
  147. package/coverage/lcov-report/src/page/props-parser.ts.html +0 -194
  148. package/coverage/lcov-report/src/run.ts.html +0 -80
  149. package/coverage/lcov-report/src/sanitize.ts.html +0 -107
  150. package/coverage/lcov-report/src/templates/collection.ts.html +0 -113
  151. package/coverage/lcov-report/src/templates/form.ts.html +0 -260
  152. package/coverage/lcov-report/src/templates/index.html +0 -216
  153. package/coverage/lcov-report/src/templates/list.ts.html +0 -305
  154. package/coverage/lcov-report/src/templates/multiform.ts.html +0 -254
  155. package/coverage/lcov-report/src/templates/page.ts.html +0 -155
  156. package/coverage/lcov-report/src/templates/post.ts.html +0 -143
  157. package/coverage/lcov-report/src/templates/redirect.ts.html +0 -146
  158. package/coverage/lcov-report/src/templates/route-test.ts.html +0 -161
  159. package/coverage/lcov-report/src/test_utils/index.html +0 -111
  160. package/coverage/lcov-report/src/test_utils/locator_is_visible.ts.html +0 -131
  161. package/coverage/lcov-report/src/utils/assert-throws.ts.html +0 -134
  162. package/coverage/lcov-report/src/utils/browser-creator.js.html +0 -110
  163. package/coverage/lcov-report/src/utils/escape-url-params.ts.html +0 -122
  164. package/coverage/lcov-report/src/utils/exec.ts.html +0 -170
  165. package/coverage/lcov-report/src/utils/format-external-url.ts.html +0 -119
  166. package/coverage/lcov-report/src/utils/import-path.ts.html +0 -155
  167. package/coverage/lcov-report/src/utils/index.html +0 -366
  168. package/coverage/lcov-report/src/utils/input-wrapper.ts.html +0 -143
  169. package/coverage/lcov-report/src/utils/list-collections.ts.html +0 -128
  170. package/coverage/lcov-report/src/utils/make-slug.ts.html +0 -95
  171. package/coverage/lcov-report/src/utils/natural-numbers.ts.html +0 -95
  172. package/coverage/lcov-report/src/utils/prettier.ts.html +0 -119
  173. package/coverage/lcov-report/src/utils/question.ts.html +0 -149
  174. package/coverage/lcov-report/src/utils/render-attributes.ts.html +0 -131
  175. package/coverage/lcov-report/src/utils/sleep.ts.html +0 -89
  176. package/coverage/lcov-report/src/utils/translate.ts.html +0 -119
  177. package/coverage/lcov-report/src/utils/url-with-new-params.ts.html +0 -107
  178. package/coverage/lcov-report/src/utils/utils.ts.html +0 -122
  179. package/coverage/lcov-report/src/utils/walk.ts.html +0 -140
  180. package/coverage/lcov.info +0 -4697
  181. package/lib/forms/fields/files-multiple.js +0 -18
  182. package/lib/forms/fields/files-multiple.js.map +0 -1
  183. package/lib/sealgen-url.js +0 -1
  184. package/lib/sealgen-url.js.map +0 -1
  185. package/lib/tests/manual/multiform.js +0 -95
  186. package/lib/tests/manual/multiform.js.map +0 -1
@@ -1,1700 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/forms/multiform.test.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/forms</a> multiform.test.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">95.28% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>202/212</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">38.46% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>5/13</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">96.1% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>74/77</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">95.05% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>192/202</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</a>
239
- <a name='L180'></a><a href='#L180'>180</a>
240
- <a name='L181'></a><a href='#L181'>181</a>
241
- <a name='L182'></a><a href='#L182'>182</a>
242
- <a name='L183'></a><a href='#L183'>183</a>
243
- <a name='L184'></a><a href='#L184'>184</a>
244
- <a name='L185'></a><a href='#L185'>185</a>
245
- <a name='L186'></a><a href='#L186'>186</a>
246
- <a name='L187'></a><a href='#L187'>187</a>
247
- <a name='L188'></a><a href='#L188'>188</a>
248
- <a name='L189'></a><a href='#L189'>189</a>
249
- <a name='L190'></a><a href='#L190'>190</a>
250
- <a name='L191'></a><a href='#L191'>191</a>
251
- <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a>
253
- <a name='L194'></a><a href='#L194'>194</a>
254
- <a name='L195'></a><a href='#L195'>195</a>
255
- <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a>
343
- <a name='L284'></a><a href='#L284'>284</a>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a>
349
- <a name='L290'></a><a href='#L290'>290</a>
350
- <a name='L291'></a><a href='#L291'>291</a>
351
- <a name='L292'></a><a href='#L292'>292</a>
352
- <a name='L293'></a><a href='#L293'>293</a>
353
- <a name='L294'></a><a href='#L294'>294</a>
354
- <a name='L295'></a><a href='#L295'>295</a>
355
- <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a>
357
- <a name='L298'></a><a href='#L298'>298</a>
358
- <a name='L299'></a><a href='#L299'>299</a>
359
- <a name='L300'></a><a href='#L300'>300</a>
360
- <a name='L301'></a><a href='#L301'>301</a>
361
- <a name='L302'></a><a href='#L302'>302</a>
362
- <a name='L303'></a><a href='#L303'>303</a>
363
- <a name='L304'></a><a href='#L304'>304</a>
364
- <a name='L305'></a><a href='#L305'>305</a>
365
- <a name='L306'></a><a href='#L306'>306</a>
366
- <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a>
368
- <a name='L309'></a><a href='#L309'>309</a>
369
- <a name='L310'></a><a href='#L310'>310</a>
370
- <a name='L311'></a><a href='#L311'>311</a>
371
- <a name='L312'></a><a href='#L312'>312</a>
372
- <a name='L313'></a><a href='#L313'>313</a>
373
- <a name='L314'></a><a href='#L314'>314</a>
374
- <a name='L315'></a><a href='#L315'>315</a>
375
- <a name='L316'></a><a href='#L316'>316</a>
376
- <a name='L317'></a><a href='#L317'>317</a>
377
- <a name='L318'></a><a href='#L318'>318</a>
378
- <a name='L319'></a><a href='#L319'>319</a>
379
- <a name='L320'></a><a href='#L320'>320</a>
380
- <a name='L321'></a><a href='#L321'>321</a>
381
- <a name='L322'></a><a href='#L322'>322</a>
382
- <a name='L323'></a><a href='#L323'>323</a>
383
- <a name='L324'></a><a href='#L324'>324</a>
384
- <a name='L325'></a><a href='#L325'>325</a>
385
- <a name='L326'></a><a href='#L326'>326</a>
386
- <a name='L327'></a><a href='#L327'>327</a>
387
- <a name='L328'></a><a href='#L328'>328</a>
388
- <a name='L329'></a><a href='#L329'>329</a>
389
- <a name='L330'></a><a href='#L330'>330</a>
390
- <a name='L331'></a><a href='#L331'>331</a>
391
- <a name='L332'></a><a href='#L332'>332</a>
392
- <a name='L333'></a><a href='#L333'>333</a>
393
- <a name='L334'></a><a href='#L334'>334</a>
394
- <a name='L335'></a><a href='#L335'>335</a>
395
- <a name='L336'></a><a href='#L336'>336</a>
396
- <a name='L337'></a><a href='#L337'>337</a>
397
- <a name='L338'></a><a href='#L338'>338</a>
398
- <a name='L339'></a><a href='#L339'>339</a>
399
- <a name='L340'></a><a href='#L340'>340</a>
400
- <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a>
402
- <a name='L343'></a><a href='#L343'>343</a>
403
- <a name='L344'></a><a href='#L344'>344</a>
404
- <a name='L345'></a><a href='#L345'>345</a>
405
- <a name='L346'></a><a href='#L346'>346</a>
406
- <a name='L347'></a><a href='#L347'>347</a>
407
- <a name='L348'></a><a href='#L348'>348</a>
408
- <a name='L349'></a><a href='#L349'>349</a>
409
- <a name='L350'></a><a href='#L350'>350</a>
410
- <a name='L351'></a><a href='#L351'>351</a>
411
- <a name='L352'></a><a href='#L352'>352</a>
412
- <a name='L353'></a><a href='#L353'>353</a>
413
- <a name='L354'></a><a href='#L354'>354</a>
414
- <a name='L355'></a><a href='#L355'>355</a>
415
- <a name='L356'></a><a href='#L356'>356</a>
416
- <a name='L357'></a><a href='#L357'>357</a>
417
- <a name='L358'></a><a href='#L358'>358</a>
418
- <a name='L359'></a><a href='#L359'>359</a>
419
- <a name='L360'></a><a href='#L360'>360</a>
420
- <a name='L361'></a><a href='#L361'>361</a>
421
- <a name='L362'></a><a href='#L362'>362</a>
422
- <a name='L363'></a><a href='#L363'>363</a>
423
- <a name='L364'></a><a href='#L364'>364</a>
424
- <a name='L365'></a><a href='#L365'>365</a>
425
- <a name='L366'></a><a href='#L366'>366</a>
426
- <a name='L367'></a><a href='#L367'>367</a>
427
- <a name='L368'></a><a href='#L368'>368</a>
428
- <a name='L369'></a><a href='#L369'>369</a>
429
- <a name='L370'></a><a href='#L370'>370</a>
430
- <a name='L371'></a><a href='#L371'>371</a>
431
- <a name='L372'></a><a href='#L372'>372</a>
432
- <a name='L373'></a><a href='#L373'>373</a>
433
- <a name='L374'></a><a href='#L374'>374</a>
434
- <a name='L375'></a><a href='#L375'>375</a>
435
- <a name='L376'></a><a href='#L376'>376</a>
436
- <a name='L377'></a><a href='#L377'>377</a>
437
- <a name='L378'></a><a href='#L378'>378</a>
438
- <a name='L379'></a><a href='#L379'>379</a>
439
- <a name='L380'></a><a href='#L380'>380</a>
440
- <a name='L381'></a><a href='#L381'>381</a>
441
- <a name='L382'></a><a href='#L382'>382</a>
442
- <a name='L383'></a><a href='#L383'>383</a>
443
- <a name='L384'></a><a href='#L384'>384</a>
444
- <a name='L385'></a><a href='#L385'>385</a>
445
- <a name='L386'></a><a href='#L386'>386</a>
446
- <a name='L387'></a><a href='#L387'>387</a>
447
- <a name='L388'></a><a href='#L388'>388</a>
448
- <a name='L389'></a><a href='#L389'>389</a>
449
- <a name='L390'></a><a href='#L390'>390</a>
450
- <a name='L391'></a><a href='#L391'>391</a>
451
- <a name='L392'></a><a href='#L392'>392</a>
452
- <a name='L393'></a><a href='#L393'>393</a>
453
- <a name='L394'></a><a href='#L394'>394</a>
454
- <a name='L395'></a><a href='#L395'>395</a>
455
- <a name='L396'></a><a href='#L396'>396</a>
456
- <a name='L397'></a><a href='#L397'>397</a>
457
- <a name='L398'></a><a href='#L398'>398</a>
458
- <a name='L399'></a><a href='#L399'>399</a>
459
- <a name='L400'></a><a href='#L400'>400</a>
460
- <a name='L401'></a><a href='#L401'>401</a>
461
- <a name='L402'></a><a href='#L402'>402</a>
462
- <a name='L403'></a><a href='#L403'>403</a>
463
- <a name='L404'></a><a href='#L404'>404</a>
464
- <a name='L405'></a><a href='#L405'>405</a>
465
- <a name='L406'></a><a href='#L406'>406</a>
466
- <a name='L407'></a><a href='#L407'>407</a>
467
- <a name='L408'></a><a href='#L408'>408</a>
468
- <a name='L409'></a><a href='#L409'>409</a>
469
- <a name='L410'></a><a href='#L410'>410</a>
470
- <a name='L411'></a><a href='#L411'>411</a>
471
- <a name='L412'></a><a href='#L412'>412</a>
472
- <a name='L413'></a><a href='#L413'>413</a>
473
- <a name='L414'></a><a href='#L414'>414</a>
474
- <a name='L415'></a><a href='#L415'>415</a>
475
- <a name='L416'></a><a href='#L416'>416</a>
476
- <a name='L417'></a><a href='#L417'>417</a>
477
- <a name='L418'></a><a href='#L418'>418</a>
478
- <a name='L419'></a><a href='#L419'>419</a>
479
- <a name='L420'></a><a href='#L420'>420</a>
480
- <a name='L421'></a><a href='#L421'>421</a>
481
- <a name='L422'></a><a href='#L422'>422</a>
482
- <a name='L423'></a><a href='#L423'>423</a>
483
- <a name='L424'></a><a href='#L424'>424</a>
484
- <a name='L425'></a><a href='#L425'>425</a>
485
- <a name='L426'></a><a href='#L426'>426</a>
486
- <a name='L427'></a><a href='#L427'>427</a>
487
- <a name='L428'></a><a href='#L428'>428</a>
488
- <a name='L429'></a><a href='#L429'>429</a>
489
- <a name='L430'></a><a href='#L430'>430</a>
490
- <a name='L431'></a><a href='#L431'>431</a>
491
- <a name='L432'></a><a href='#L432'>432</a>
492
- <a name='L433'></a><a href='#L433'>433</a>
493
- <a name='L434'></a><a href='#L434'>434</a>
494
- <a name='L435'></a><a href='#L435'>435</a>
495
- <a name='L436'></a><a href='#L436'>436</a>
496
- <a name='L437'></a><a href='#L437'>437</a>
497
- <a name='L438'></a><a href='#L438'>438</a>
498
- <a name='L439'></a><a href='#L439'>439</a>
499
- <a name='L440'></a><a href='#L440'>440</a>
500
- <a name='L441'></a><a href='#L441'>441</a>
501
- <a name='L442'></a><a href='#L442'>442</a>
502
- <a name='L443'></a><a href='#L443'>443</a>
503
- <a name='L444'></a><a href='#L444'>444</a>
504
- <a name='L445'></a><a href='#L445'>445</a>
505
- <a name='L446'></a><a href='#L446'>446</a>
506
- <a name='L447'></a><a href='#L447'>447</a>
507
- <a name='L448'></a><a href='#L448'>448</a>
508
- <a name='L449'></a><a href='#L449'>449</a>
509
- <a name='L450'></a><a href='#L450'>450</a>
510
- <a name='L451'></a><a href='#L451'>451</a>
511
- <a name='L452'></a><a href='#L452'>452</a>
512
- <a name='L453'></a><a href='#L453'>453</a>
513
- <a name='L454'></a><a href='#L454'>454</a>
514
- <a name='L455'></a><a href='#L455'>455</a>
515
- <a name='L456'></a><a href='#L456'>456</a>
516
- <a name='L457'></a><a href='#L457'>457</a>
517
- <a name='L458'></a><a href='#L458'>458</a>
518
- <a name='L459'></a><a href='#L459'>459</a>
519
- <a name='L460'></a><a href='#L460'>460</a>
520
- <a name='L461'></a><a href='#L461'>461</a>
521
- <a name='L462'></a><a href='#L462'>462</a>
522
- <a name='L463'></a><a href='#L463'>463</a>
523
- <a name='L464'></a><a href='#L464'>464</a>
524
- <a name='L465'></a><a href='#L465'>465</a>
525
- <a name='L466'></a><a href='#L466'>466</a>
526
- <a name='L467'></a><a href='#L467'>467</a>
527
- <a name='L468'></a><a href='#L468'>468</a>
528
- <a name='L469'></a><a href='#L469'>469</a>
529
- <a name='L470'></a><a href='#L470'>470</a>
530
- <a name='L471'></a><a href='#L471'>471</a>
531
- <a name='L472'></a><a href='#L472'>472</a>
532
- <a name='L473'></a><a href='#L473'>473</a>
533
- <a name='L474'></a><a href='#L474'>474</a>
534
- <a name='L475'></a><a href='#L475'>475</a>
535
- <a name='L476'></a><a href='#L476'>476</a>
536
- <a name='L477'></a><a href='#L477'>477</a>
537
- <a name='L478'></a><a href='#L478'>478</a>
538
- <a name='L479'></a><a href='#L479'>479</a>
539
- <a name='L480'></a><a href='#L480'>480</a>
540
- <a name='L481'></a><a href='#L481'>481</a>
541
- <a name='L482'></a><a href='#L482'>482</a>
542
- <a name='L483'></a><a href='#L483'>483</a>
543
- <a name='L484'></a><a href='#L484'>484</a>
544
- <a name='L485'></a><a href='#L485'>485</a>
545
- <a name='L486'></a><a href='#L486'>486</a>
546
- <a name='L487'></a><a href='#L487'>487</a>
547
- <a name='L488'></a><a href='#L488'>488</a>
548
- <a name='L489'></a><a href='#L489'>489</a>
549
- <a name='L490'></a><a href='#L490'>490</a>
550
- <a name='L491'></a><a href='#L491'>491</a>
551
- <a name='L492'></a><a href='#L492'>492</a>
552
- <a name='L493'></a><a href='#L493'>493</a>
553
- <a name='L494'></a><a href='#L494'>494</a>
554
- <a name='L495'></a><a href='#L495'>495</a>
555
- <a name='L496'></a><a href='#L496'>496</a>
556
- <a name='L497'></a><a href='#L497'>497</a>
557
- <a name='L498'></a><a href='#L498'>498</a>
558
- <a name='L499'></a><a href='#L499'>499</a>
559
- <a name='L500'></a><a href='#L500'>500</a>
560
- <a name='L501'></a><a href='#L501'>501</a>
561
- <a name='L502'></a><a href='#L502'>502</a>
562
- <a name='L503'></a><a href='#L503'>503</a>
563
- <a name='L504'></a><a href='#L504'>504</a>
564
- <a name='L505'></a><a href='#L505'>505</a>
565
- <a name='L506'></a><a href='#L506'>506</a>
566
- <a name='L507'></a><a href='#L507'>507</a>
567
- <a name='L508'></a><a href='#L508'>508</a>
568
- <a name='L509'></a><a href='#L509'>509</a>
569
- <a name='L510'></a><a href='#L510'>510</a>
570
- <a name='L511'></a><a href='#L511'>511</a>
571
- <a name='L512'></a><a href='#L512'>512</a>
572
- <a name='L513'></a><a href='#L513'>513</a>
573
- <a name='L514'></a><a href='#L514'>514</a>
574
- <a name='L515'></a><a href='#L515'>515</a>
575
- <a name='L516'></a><a href='#L516'>516</a>
576
- <a name='L517'></a><a href='#L517'>517</a>
577
- <a name='L518'></a><a href='#L518'>518</a>
578
- <a name='L519'></a><a href='#L519'>519</a>
579
- <a name='L520'></a><a href='#L520'>520</a>
580
- <a name='L521'></a><a href='#L521'>521</a>
581
- <a name='L522'></a><a href='#L522'>522</a>
582
- <a name='L523'></a><a href='#L523'>523</a>
583
- <a name='L524'></a><a href='#L524'>524</a>
584
- <a name='L525'></a><a href='#L525'>525</a>
585
- <a name='L526'></a><a href='#L526'>526</a>
586
- <a name='L527'></a><a href='#L527'>527</a>
587
- <a name='L528'></a><a href='#L528'>528</a>
588
- <a name='L529'></a><a href='#L529'>529</a>
589
- <a name='L530'></a><a href='#L530'>530</a>
590
- <a name='L531'></a><a href='#L531'>531</a>
591
- <a name='L532'></a><a href='#L532'>532</a>
592
- <a name='L533'></a><a href='#L533'>533</a>
593
- <a name='L534'></a><a href='#L534'>534</a>
594
- <a name='L535'></a><a href='#L535'>535</a>
595
- <a name='L536'></a><a href='#L536'>536</a>
596
- <a name='L537'></a><a href='#L537'>537</a>
597
- <a name='L538'></a><a href='#L538'>538</a>
598
- <a name='L539'></a><a href='#L539'>539</a>
599
- <a name='L540'></a><a href='#L540'>540</a>
600
- <a name='L541'></a><a href='#L541'>541</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
601
- <span class="cline-any cline-yes">1x</span>
602
- <span class="cline-any cline-yes">1x</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">1x</span>
605
- <span class="cline-any cline-yes">1x</span>
606
- <span class="cline-any cline-yes">1x</span>
607
- <span class="cline-any cline-yes">1x</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-yes">1x</span>
610
- <span class="cline-any cline-yes">1x</span>
611
- <span class="cline-any cline-yes">1x</span>
612
- <span class="cline-any cline-yes">1x</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-yes">1x</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">1x</span>
619
- <span class="cline-any cline-yes">1x</span>
620
- <span class="cline-any cline-yes">1x</span>
621
- <span class="cline-any cline-yes">1x</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-yes">2x</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-yes">1x</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">1x</span>
632
- <span class="cline-any cline-yes">1x</span>
633
- <span class="cline-any cline-yes">1x</span>
634
- <span class="cline-any cline-yes">1x</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-yes">3x</span>
645
- <span class="cline-any cline-yes">3x</span>
646
- <span class="cline-any cline-yes">3x</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-yes">6x</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-yes">2x</span>
671
- <span class="cline-any cline-yes">2x</span>
672
- <span class="cline-any cline-yes">2x</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-yes">2x</span>
676
- <span class="cline-any cline-yes">2x</span>
677
- <span class="cline-any cline-yes">2x</span>
678
- <span class="cline-any cline-yes">2x</span>
679
- <span class="cline-any cline-yes">2x</span>
680
- <span class="cline-any cline-yes">2x</span>
681
- <span class="cline-any cline-yes">2x</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-yes">2x</span>
685
- <span class="cline-any cline-yes">2x</span>
686
- <span class="cline-any cline-yes">2x</span>
687
- <span class="cline-any cline-yes">2x</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-yes">2x</span>
692
- <span class="cline-any cline-yes">2x</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-yes">2x</span>
701
- <span class="cline-any cline-yes">2x</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-yes">2x</span>
705
- <span class="cline-any cline-yes">2x</span>
706
- <span class="cline-any cline-yes">2x</span>
707
- <span class="cline-any cline-yes">2x</span>
708
- <span class="cline-any cline-yes">2x</span>
709
- <span class="cline-any cline-yes">2x</span>
710
- <span class="cline-any cline-yes">2x</span>
711
- <span class="cline-any cline-yes">2x</span>
712
- <span class="cline-any cline-yes">2x</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-yes">2x</span>
721
- <span class="cline-any cline-yes">2x</span>
722
- <span class="cline-any cline-yes">2x</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-yes">2x</span>
726
- <span class="cline-any cline-yes">2x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-yes">2x</span>
730
- <span class="cline-any cline-yes">2x</span>
731
- <span class="cline-any cline-yes">2x</span>
732
- <span class="cline-any cline-yes">2x</span>
733
- <span class="cline-any cline-yes">2x</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-yes">2x</span>
737
- <span class="cline-any cline-yes">2x</span>
738
- <span class="cline-any cline-yes">2x</span>
739
- <span class="cline-any cline-yes">2x</span>
740
- <span class="cline-any cline-yes">2x</span>
741
- <span class="cline-any cline-yes">2x</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-yes">1x</span>
747
- <span class="cline-any cline-yes">1x</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-yes">1x</span>
751
- <span class="cline-any cline-yes">1x</span>
752
- <span class="cline-any cline-yes">1x</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-yes">1x</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-yes">1x</span>
759
- <span class="cline-any cline-yes">1x</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">4x</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">1x</span>
788
- <span class="cline-any cline-yes">1x</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-yes">1x</span>
792
- <span class="cline-any cline-yes">1x</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-yes">1x</span>
796
- <span class="cline-any cline-yes">1x</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-yes">1x</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-yes">1x</span>
804
- <span class="cline-any cline-yes">1x</span>
805
- <span class="cline-any cline-yes">1x</span>
806
- <span class="cline-any cline-yes">1x</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-yes">1x</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">2x</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-yes">2x</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">1x</span>
826
- <span class="cline-any cline-yes">1x</span>
827
- <span class="cline-any cline-yes">1x</span>
828
- <span class="cline-any cline-yes">1x</span>
829
- <span class="cline-any cline-yes">1x</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-yes">1x</span>
833
- <span class="cline-any cline-yes">1x</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-yes">1x</span>
837
- <span class="cline-any cline-yes">1x</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-yes">1x</span>
840
- <span class="cline-any cline-no">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-yes">1x</span>
845
- <span class="cline-any cline-yes">1x</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-yes">1x</span>
849
- <span class="cline-any cline-yes">1x</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-yes">1x</span>
857
- <span class="cline-any cline-no">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-yes">1x</span>
865
- <span class="cline-any cline-yes">1x</span>
866
- <span class="cline-any cline-yes">1x</span>
867
- <span class="cline-any cline-yes">1x</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">1x</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-yes">1x</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-yes">2x</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-yes">1x</span>
887
- <span class="cline-any cline-yes">1x</span>
888
- <span class="cline-any cline-yes">1x</span>
889
- <span class="cline-any cline-yes">1x</span>
890
- <span class="cline-any cline-yes">1x</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-yes">1x</span>
894
- <span class="cline-any cline-yes">1x</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-yes">1x</span>
898
- <span class="cline-any cline-yes">1x</span>
899
- <span class="cline-any cline-yes">1x</span>
900
- <span class="cline-any cline-yes">1x</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-yes">1x</span>
908
- <span class="cline-any cline-yes">1x</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">1x</span>
916
- <span class="cline-any cline-no">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-yes">1x</span>
924
- <span class="cline-any cline-yes">1x</span>
925
- <span class="cline-any cline-yes">1x</span>
926
- <span class="cline-any cline-yes">1x</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-yes">1x</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-yes">3x</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-yes">4x</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-yes">1x</span>
946
- <span class="cline-any cline-yes">1x</span>
947
- <span class="cline-any cline-yes">1x</span>
948
- <span class="cline-any cline-yes">1x</span>
949
- <span class="cline-any cline-yes">1x</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">1x</span>
953
- <span class="cline-any cline-yes">1x</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-yes">1x</span>
957
- <span class="cline-any cline-yes">1x</span>
958
- <span class="cline-any cline-yes">1x</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-yes">1x</span>
962
- <span class="cline-any cline-yes">1x</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-yes">1x</span>
970
- <span class="cline-any cline-no">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-yes">1x</span>
977
- <span class="cline-any cline-yes">1x</span>
978
- <span class="cline-any cline-yes">1x</span>
979
- <span class="cline-any cline-yes">1x</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
986
- <span class="cline-any cline-yes">1x</span>
987
- <span class="cline-any cline-yes">1x</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-yes">1x</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-yes">1x</span>
1004
- <span class="cline-any cline-yes">1x</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-yes">1x</span>
1008
- <span class="cline-any cline-yes">1x</span>
1009
- <span class="cline-any cline-yes">1x</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-yes">1x</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-yes">1x</span>
1016
- <span class="cline-any cline-yes">1x</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-yes">1x</span>
1019
- <span class="cline-any cline-yes">1x</span>
1020
- <span class="cline-any cline-yes">1x</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-no">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-yes">4x</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">1x</span>
1065
- <span class="cline-any cline-yes">1x</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-yes">1x</span>
1069
- <span class="cline-any cline-yes">1x</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-yes">1x</span>
1073
- <span class="cline-any cline-yes">1x</span>
1074
- <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-yes">1x</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-yes">1x</span>
1080
- <span class="cline-any cline-yes">1x</span>
1081
- <span class="cline-any cline-yes">1x</span>
1082
- <span class="cline-any cline-yes">1x</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-yes">1x</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-yes">1x</span>
1091
- <span class="cline-any cline-yes">1x</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-yes">1x</span>
1094
- <span class="cline-any cline-yes">1x</span>
1095
- <span class="cline-any cline-yes">1x</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-yes">2x</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-yes">6x</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-yes">1x</span>
1128
- <span class="cline-any cline-yes">1x</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-yes">1x</span>
1132
- <span class="cline-any cline-yes">1x</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-yes">1x</span>
1136
- <span class="cline-any cline-yes">1x</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import Router from "@koa/router";
1141
- import Koa from "koa";
1142
- import axios from "axios";
1143
- import { Browser, firefox, Page } from "playwright";
1144
- import { expect } from "@playwright/test";
1145
- import { FlatTemplatable, tempstream } from "tempstream";
1146
- import { Controls, Fields, Form, Mountable } from "..";
1147
- import { mount } from "../mount";
1148
- import { FormDataValue, FormMessage } from "./form";
1149
- import { Multiform } from "./multiform";
1150
- import { assertThrowsAsync } from "../utils/utils";
1151
- import { form_factory } from "./form.test";
1152
- import { getBrowser } from "../utils/browser-creator";
1153
- &nbsp;
1154
- const fields1 = {
1155
- email: new Fields.SimpleFormField(true),
1156
- };
1157
- &nbsp;
1158
- const form1 = new (class extends Form&lt;typeof fields1, void&gt; {
1159
- defaultSuccessMessage = "Form1 done!";
1160
- controls = [new Controls.FormHeader("form1"), new Controls.SimpleInput(fields1.email)];
1161
- fields = fields1;
1162
- onSubmit() {
1163
- return;
1164
- }
1165
- })();
1166
- &nbsp;
1167
- const fields2 = {
1168
- name: new Fields.SimpleFormField(true),
1169
- };
1170
- &nbsp;
1171
- const form2 = new (class extends Form&lt;Record&lt;never, unknown&gt;, void&gt; {
1172
- defaultSuccessMessage = "Form2 done!";
1173
- controls = [new Controls.FormHeader("form2"), new Controls.SimpleInput(fields2.name)];
1174
- fields = fields2;
1175
- <span class="fstat-no" title="function not covered" > onSubmit(</span>) {
1176
- <span class="cstat-no" title="statement not covered" > return;</span>
1177
- }
1178
- })();
1179
- &nbsp;
1180
- function multiform_factory(
1181
- canAccessFun1?: Mountable["canAccess"],
1182
- canAccessFun2?: Mountable["canAccess"]
1183
- ): Multiform {
1184
- return new (class extends Multiform {
1185
- name = "multiform_test";
1186
- forms = {
1187
- form1: form_factory(canAccessFun1),
1188
- form2: form_factory(canAccessFun2),
1189
- };
1190
- async render(...args: Parameters&lt;Multiform["render"]&gt;): Promise&lt;FlatTemplatable&gt; {
1191
- return tempstream/* HTML */ `&lt;!DOCTYPE html&gt;
1192
- &lt;html&gt;
1193
- &lt;head&gt;
1194
- &lt;title&gt;Multiform Test - Sealgen&lt;/title&gt;
1195
- &lt;script type="module"&gt;
1196
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
1197
- &lt;/script&gt;
1198
- &lt;/head&gt;
1199
- &lt;body&gt;
1200
- ${super.render(...args)}
1201
- &lt;/body&gt;
1202
- &lt;/html&gt;`;
1203
- }
1204
- })();
1205
- }
1206
- &nbsp;
1207
- async function tests(js_enabled: boolean) {
1208
- let page: Page;
1209
- &nbsp;
1210
- before(async () =&gt; {
1211
- const browser = await getBrowser();
1212
- const context = await browser.newContext({
1213
- javaScriptEnabled: js_enabled,
1214
- });
1215
- page = await context.newPage();
1216
- await page.goto("http://localhost:8080");
1217
- await page.getByLabel("email").click();
1218
- await page.getByLabel("email").fill("sample1");
1219
- await page.getByLabel("name").click();
1220
- await page.getByLabel("name").fill("sample2");
1221
- await page.locator("#multiform_test_form1_submit").click();
1222
- });
1223
- &nbsp;
1224
- it("checking whether only one submit handler is run", async () =&gt; {
1225
- await page.getByText("Form1 done!").click();
1226
- await assertThrowsAsync(async () =&gt; {
1227
- return page.getByText("Form2 done!").click({ timeout: 500 });
1228
- });
1229
- });
1230
- &nbsp;
1231
- it("checking whether the input in the not submitted form prevails", async () =&gt; {
1232
- await expect(page.getByLabel("name")).toHaveValue("sample2");
1233
- });
1234
- }
1235
- &nbsp;
1236
- async function general_form_validation_e2e_tests(js_enabled: boolean) {
1237
- let browser: Browser;
1238
- let page: Page;
1239
- &nbsp;
1240
- browser = await getBrowser();
1241
- const context = await browser.newContext({
1242
- javaScriptEnabled: js_enabled,
1243
- });
1244
- page = await context.newPage();
1245
- await page.goto("http://localhost:8080");
1246
- await page.getByPlaceholder("text").click();
1247
- await page.getByPlaceholder("text").fill("incorrect");
1248
- await page.getByPlaceholder("password").click();
1249
- await page.getByPlaceholder("password").fill("test");
1250
- await page.locator("#multiform_test_form2_submit").click();
1251
- assertThrowsAsync(async () =&gt; {
1252
- page.getByText("Incorrect input").click({ timeout: 500 });
1253
- });
1254
- }
1255
- &nbsp;
1256
- async function individual_field_validation_e2e_tests(javaScriptEnabled: boolean) {
1257
- let browser: Browser;
1258
- let page: Page;
1259
- &nbsp;
1260
- before(async () =&gt; {
1261
- browser = await getBrowser();
1262
- const context = await browser.newContext({
1263
- javaScriptEnabled,
1264
- });
1265
- page = await context.newPage();
1266
- await page.goto("http://localhost:8080");
1267
- });
1268
- &nbsp;
1269
- it("validation message shows when incorrect input is given", async () =&gt; {
1270
- await page.getByPlaceholder("text").click();
1271
- await page.getByPlaceholder("text").fill("notanemail");
1272
- await page.locator("#multiform_test_form1_submit").click();
1273
- await page.getByText("Please enter a proper email address").click();
1274
- });
1275
- &nbsp;
1276
- it("validation message doesn't show when correct input is given", async () =&gt; {
1277
- await page.getByPlaceholder("text").click();
1278
- await page.getByPlaceholder("text").fill("yes@an.email");
1279
- await page.locator("#multiform_test_form1_submit").click();
1280
- assertThrowsAsync(async () =&gt; {
1281
- return page.getByText("Please enter a proper email address").click({ timeout: 500 });
1282
- });
1283
- });
1284
- }
1285
- &nbsp;
1286
- describe("multiform test", () =&gt; {
1287
- describe("basic tests", async () =&gt; {
1288
- let server: ReturnType&lt;Koa["listen"]&gt;;
1289
- &nbsp;
1290
- before(async () =&gt; {
1291
- const app = new Koa();
1292
- const router = new Router();
1293
- &nbsp;
1294
- mount(
1295
- router,
1296
- "/",
1297
- new (class extends Multiform {
1298
- name = "multiform_test";
1299
- forms = { form1, form2 };
1300
- async render(
1301
- ctx: Koa.Context,
1302
- messages: FormMessage[],
1303
- prerenderedForms?: Record&lt;string, FlatTemplatable | undefined&gt;,
1304
- show_field_errors = <span class="branch-0 cbranch-no" title="branch not covered" >true</span>
1305
- ): Promise&lt;FlatTemplatable&gt; {
1306
- return tempstream/* HTML */ `&lt;!DOCTYPE html&gt;
1307
- &lt;html&gt;
1308
- &lt;head&gt;
1309
- &lt;title&gt;Multiform Test - Sealgen&lt;/title&gt;
1310
- &lt;script type="module"&gt;
1311
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
1312
- &lt;/script&gt;
1313
- &lt;/head&gt;
1314
- &lt;body&gt;
1315
- ${super.render(
1316
- ctx,
1317
- messages,
1318
- prerenderedForms,
1319
- show_field_errors
1320
- )}
1321
- &lt;/body&gt;
1322
- &lt;/html&gt;`;
1323
- }
1324
- })(),
1325
- true
1326
- );
1327
- app.use(router.routes()).use(router.allowedMethods());
1328
- server = app.listen(8080);
1329
- });
1330
- &nbsp;
1331
- after(() =&gt; {
1332
- server.close();
1333
- });
1334
- &nbsp;
1335
- describe("turbolinks + js enabled", async () =&gt; tests(true));
1336
- describe("turbolinks + js disabled", async () =&gt; tests(false));
1337
- });
1338
- &nbsp;
1339
- describe("canAccess", async () =&gt; {
1340
- let page: Page;
1341
- let server: ReturnType&lt;Koa["listen"]&gt;;
1342
- &nbsp;
1343
- describe("allow access to both forms when both canAccess return true", async () =&gt; {
1344
- before(async () =&gt; {
1345
- const app = new Koa();
1346
- const router = new Router();
1347
- &nbsp;
1348
- mount(
1349
- router,
1350
- "/",
1351
- multiform_factory(
1352
- async (
1353
- ctx: Koa.Context
1354
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1355
- return { canAccess: true, message: "" };
1356
- },
1357
- async (
1358
- ctx: Koa.Context
1359
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1360
- return { canAccess: true, message: "" };
1361
- }
1362
- ),
1363
- true
1364
- );
1365
- app.use(router.routes()).use(router.allowedMethods());
1366
- server = app.listen(8080);
1367
- const browser = await getBrowser();
1368
- const context = await browser.newContext();
1369
- page = await context.newPage();
1370
- });
1371
- &nbsp;
1372
- after(async () =&gt; {
1373
- server.close();
1374
- });
1375
- &nbsp;
1376
- it("check wether it renders", async () =&gt; {
1377
- const response = await page.goto("http://localhost:8080");
1378
- &nbsp;
1379
- <span class="missing-if-branch" title="if path not taken" >I</span>if (response?.status() != 200) {
1380
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1381
- `Should return 200 status and it returns ${response?.status()}`
1382
- );
1383
- }
1384
- await page.locator("#form1").getByText("This is a test:").click();
1385
- await page.locator("#form2").getByText("This is a test:").click();
1386
- });
1387
- &nbsp;
1388
- it("check wether you can submit through http (axios)", async () =&gt; {
1389
- await axios.post(
1390
- "http://localhost:8080/form2",
1391
- {
1392
- form2__text: "pass",
1393
- },
1394
- {
1395
- validateStatus: (status: number) =&gt; {
1396
- <span class="missing-if-branch" title="else path not taken" >E</span>if (status == 422) return true;
1397
- <span class="cstat-no" title="statement not covered" > return false;</span>
1398
- },
1399
- }
1400
- );
1401
- });
1402
- });
1403
- &nbsp;
1404
- describe("deny access to both forms", async () =&gt; {
1405
- before(async () =&gt; {
1406
- const app = new Koa();
1407
- const router = new Router();
1408
- &nbsp;
1409
- mount(
1410
- router,
1411
- "/",
1412
- multiform_factory(
1413
- async (
1414
- ctx: Koa.Context
1415
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1416
- return { canAccess: false, message: "" };
1417
- },
1418
- async (
1419
- ctx: Koa.Context
1420
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1421
- return { canAccess: false, message: "" };
1422
- }
1423
- ),
1424
- true
1425
- );
1426
- app.use(router.routes()).use(router.allowedMethods());
1427
- server = app.listen(8080);
1428
- const browser = await getBrowser();
1429
- const context = await browser.newContext();
1430
- page = await context.newPage();
1431
- });
1432
- &nbsp;
1433
- after(async () =&gt; {
1434
- server.close();
1435
- });
1436
- &nbsp;
1437
- it("check wether forms didnt render", async () =&gt; {
1438
- await page.goto("http://localhost:8080");
1439
- await assertThrowsAsync(async () =&gt; {
1440
- return page
1441
- .locator("#form1")
1442
- .getByText("This is a test:")
1443
- .click({ timeout: 300 });
1444
- });
1445
- });
1446
- &nbsp;
1447
- it("check wether it's possible to submit through http", async () =&gt; {
1448
- await axios.post(
1449
- "http://localhost:8080/form2",
1450
- {
1451
- form2__text: "pass",
1452
- },
1453
- {
1454
- validateStatus: (status: number) =&gt; {
1455
- <span class="missing-if-branch" title="else path not taken" >E</span>if (status == 403) return true;
1456
- <span class="cstat-no" title="statement not covered" > return false;</span>
1457
- },
1458
- }
1459
- );
1460
- });
1461
- });
1462
- &nbsp;
1463
- describe("allow access to one form, deny to the other", async () =&gt; {
1464
- before(async () =&gt; {
1465
- const app = new Koa();
1466
- const router = new Router();
1467
- &nbsp;
1468
- mount(
1469
- router,
1470
- "/",
1471
- multiform_factory(
1472
- async (
1473
- ctx: Koa.Context
1474
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1475
- return { canAccess: true, message: "" };
1476
- },
1477
- async (
1478
- ctx: Koa.Context
1479
- ): Promise&lt;{ canAccess: boolean; message: string }&gt; =&gt; {
1480
- return { canAccess: false, message: "" };
1481
- }
1482
- ),
1483
- true
1484
- );
1485
- app.use(router.routes()).use(router.allowedMethods());
1486
- server = app.listen(8080);
1487
- const browser = await getBrowser();
1488
- const context = await browser.newContext({});
1489
- page = await context.newPage();
1490
- });
1491
- &nbsp;
1492
- after(async () =&gt; {
1493
- server.close();
1494
- });
1495
- &nbsp;
1496
- it("check wether form1 renders", async () =&gt; {
1497
- await page.goto("http://localhost:8080");
1498
- await page.locator("#form1").getByText("This is a test:").click({ timeout: 300 });
1499
- });
1500
- &nbsp;
1501
- it("check wether it's possible to submit to form1 through http", async () =&gt; {
1502
- await axios.post(
1503
- "http://localhost:8080/form1",
1504
- {
1505
- form1__text: "pass",
1506
- },
1507
- {
1508
- validateStatus: (status: number) =&gt; {
1509
- <span class="missing-if-branch" title="else path not taken" >E</span>if (status == 422) return true;
1510
- <span class="cstat-no" title="statement not covered" > return false;</span>
1511
- },
1512
- }
1513
- );
1514
- });
1515
- &nbsp;
1516
- it("check wether form2 does not render", async () =&gt; {
1517
- await page.goto("http://localhost:8080");
1518
- await assertThrowsAsync(async () =&gt; {
1519
- return page
1520
- .locator("#form2")
1521
- .getByText("This is a test:")
1522
- .click({ timeout: 300 });
1523
- });
1524
- });
1525
- &nbsp;
1526
- it("check wether it's possible to submit to form2 through http", async () =&gt; {
1527
- await axios.post(
1528
- "http://localhost:8080/form2",
1529
- {
1530
- form2__text: "pass",
1531
- },
1532
- {
1533
- validateStatus: (status: number) =&gt; {
1534
- <span class="missing-if-branch" title="else path not taken" >E</span>if (status == 403) return true;
1535
- <span class="cstat-no" title="statement not covered" > return false;</span>
1536
- },
1537
- }
1538
- );
1539
- });
1540
- });
1541
- });
1542
- &nbsp;
1543
- describe("validation e2e", async () =&gt; {
1544
- describe("basic tests", async () =&gt; {
1545
- let server: ReturnType&lt;Koa["listen"]&gt;;
1546
- &nbsp;
1547
- before(async () =&gt; {
1548
- const app = new Koa();
1549
- const router = new Router();
1550
- &nbsp;
1551
- mount(
1552
- router,
1553
- "/",
1554
- new (class extends Multiform {
1555
- name = "multiform_test";
1556
- forms = {
1557
- form1: new (class extends Form&lt;typeof fields1, void&gt; {
1558
- fields = fields1;
1559
- submitButtonText = "Submit";
1560
- controls = [
1561
- new Controls.SimpleInput(fields1.email, {
1562
- label: "This is a test:",
1563
- type: "text",
1564
- }),
1565
- ];
1566
- &nbsp;
1567
- <span class="fstat-no" title="function not covered" > async </span>onSubmit() {
1568
- <span class="cstat-no" title="statement not covered" > return;</span>
1569
- }
1570
- &nbsp;
1571
- <span class="fstat-no" title="function not covered" > async </span>validateValues(
1572
- ctx: Koa.Context,
1573
- data: Record&lt;string, FormDataValue&gt;
1574
- ): Promise&lt;{ valid: boolean; error: string }&gt; {
1575
- <span class="cstat-no" title="statement not covered" > if (data.email === "incorrect")</span>
1576
- <span class="cstat-no" title="statement not covered" > return {</span>
1577
- valid: false,
1578
- error: "Incorrect input",
1579
- };
1580
- <span class="cstat-no" title="statement not covered" > return { valid: true, error: "" };</span>
1581
- }
1582
- })(),
1583
- form2: form_factory(),
1584
- };
1585
- async render(
1586
- ...args: Parameters&lt;Multiform["render"]&gt;
1587
- ): Promise&lt;FlatTemplatable&gt; {
1588
- return tempstream/* HTML */ `&lt;!DOCTYPE html&gt;
1589
- &lt;html&gt;
1590
- &lt;head&gt;
1591
- &lt;title&gt;Multiform Test - Sealgen&lt;/title&gt;
1592
- &lt;script type="module"&gt;
1593
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
1594
- &lt;/script&gt;
1595
- &lt;/head&gt;
1596
- &lt;body&gt;
1597
- ${super.render(...args)}
1598
- &lt;/body&gt;
1599
- &lt;/html&gt;`;
1600
- }
1601
- })(),
1602
- true
1603
- );
1604
- app.use(router.routes()).use(router.allowedMethods());
1605
- server = app.listen(8080);
1606
- });
1607
- &nbsp;
1608
- after(async () =&gt; {
1609
- server.close();
1610
- });
1611
- &nbsp;
1612
- it("js enabled", async () =&gt; general_form_validation_e2e_tests(true));
1613
- it("js disabled", async () =&gt; general_form_validation_e2e_tests(false));
1614
- });
1615
- &nbsp;
1616
- describe("field specific validation", async () =&gt; {
1617
- let server: ReturnType&lt;Koa["listen"]&gt;;
1618
- &nbsp;
1619
- before(async () =&gt; {
1620
- const app = new Koa();
1621
- const router = new Router();
1622
- const fields = {
1623
- text: new Fields.EmailField(true),
1624
- };
1625
- &nbsp;
1626
- mount(
1627
- router,
1628
- "/",
1629
- new (class extends Multiform {
1630
- name = "multiform_test";
1631
- forms = {
1632
- form1: new (class extends Form&lt;typeof fields, void&gt; {
1633
- fields = fields;
1634
- submitButtonText = "Submit";
1635
- controls = [
1636
- new Controls.SimpleInput(fields.text, {
1637
- label: "This is a test:",
1638
- type: "text",
1639
- }),
1640
- ];
1641
- &nbsp;
1642
- async onSubmit() {
1643
- return;
1644
- }
1645
- })(),
1646
- form2: form_factory(),
1647
- };
1648
- async render(
1649
- ...args: Parameters&lt;Multiform["render"]&gt;
1650
- ): Promise&lt;FlatTemplatable&gt; {
1651
- return tempstream/* HTML */ `&lt;!DOCTYPE html&gt;
1652
- &lt;html&gt;
1653
- &lt;head&gt;
1654
- &lt;title&gt;Multiform Test - Sealgen&lt;/title&gt;
1655
- &lt;script type="module"&gt;
1656
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
1657
- &lt;/script&gt;
1658
- &lt;/head&gt;
1659
- &lt;body&gt;
1660
- ${super.render(...args)}
1661
- &lt;/body&gt;
1662
- &lt;/html&gt;`;
1663
- }
1664
- })(),
1665
- true
1666
- );
1667
- app.use(router.routes()).use(router.allowedMethods());
1668
- server = app.listen(8080);
1669
- });
1670
- &nbsp;
1671
- after(async () =&gt; {
1672
- server.close();
1673
- });
1674
- &nbsp;
1675
- describe("js enabled", async () =&gt; individual_field_validation_e2e_tests(true));
1676
- describe("js disabled", async () =&gt; individual_field_validation_e2e_tests(false));
1677
- });
1678
- });
1679
- });
1680
- &nbsp;</pre></td></tr></table></pre>
1681
-
1682
- <div class='push'></div><!-- for sticky footer -->
1683
- </div><!-- /wrapper -->
1684
- <div class='footer quiet pad2 space-top1 center small'>
1685
- Code coverage generated by
1686
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1687
- at Thu Apr 20 2023 20:03:31 GMT+0200 (Central European Summer Time)
1688
- </div>
1689
- </div>
1690
- <script src="../../prettify.js"></script>
1691
- <script>
1692
- window.onload = function () {
1693
- prettyPrint();
1694
- };
1695
- </script>
1696
- <script src="../../sorter.js"></script>
1697
- <script src="../../block-navigation.js"></script>
1698
- </body>
1699
- </html>
1700
-