q2-tecton-elements 1.53.1 → 1.53.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +59 -60
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
  4. package/dist/cjs/index-76f63767.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-badge_7.cjs.entry.js +4 -4
  10. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  13. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
  29. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
  33. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-option.cjs.entry.js +2 -2
  36. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  37. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  38. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  41. package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  43. package/dist/cjs/q2-select.cjs.entry.js +89 -13
  44. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  45. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  48. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  50. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  52. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  53. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  54. package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
  55. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  56. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  57. package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
  58. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  59. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  60. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  61. package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
  62. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  63. package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
  64. package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
  65. package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
  66. package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
  67. package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
  68. package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
  69. package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
  70. package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
  71. package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
  72. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  73. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  74. package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
  75. package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
  76. package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
  77. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
  78. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  79. package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
  80. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  81. package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
  82. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  83. package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
  84. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  85. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
  86. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
  87. package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
  88. package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
  89. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  90. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  91. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  92. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
  93. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
  94. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
  95. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  96. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  97. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  98. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
  99. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  100. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
  101. package/dist/collection/components/q2-currency/q2-currency.js +1 -1
  102. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  103. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  104. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  105. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  106. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  107. package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
  108. package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
  109. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  110. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
  111. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  112. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  113. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  114. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  115. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
  116. package/dist/collection/components/q2-example/q2-example.js +1 -1
  117. package/dist/collection/components/q2-example/q2-example.js.map +1 -1
  118. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
  119. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
  120. package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
  121. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
  122. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
  123. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  124. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
  125. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
  127. package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
  128. package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
  129. package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
  130. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
  131. package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
  132. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
  133. package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
  134. package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
  135. package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
  136. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
  137. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  138. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
  139. package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
  140. package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
  141. package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
  142. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
  144. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
  145. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  146. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
  147. package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
  148. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
  149. package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
  150. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
  151. package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
  152. package/dist/collection/components/q2-input/q2-input.js +1 -1
  153. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  154. package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
  155. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  156. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
  157. package/dist/collection/components/q2-item/q2-item.js +1 -1
  158. package/dist/collection/components/q2-item/q2-item.js.map +1 -1
  159. package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
  160. package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
  161. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  162. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  163. package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
  164. package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
  165. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  166. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  167. package/dist/collection/components/q2-list/q2-list.js +1 -1
  168. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  169. package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
  171. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
  172. package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
  173. package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
  174. package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
  175. package/dist/collection/components/q2-loc/q2-loc.js +1 -1
  176. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  177. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  178. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
  179. package/dist/collection/components/q2-message/q2-message.js +1 -1
  180. package/dist/collection/components/q2-message/q2-message.js.map +1 -1
  181. package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
  182. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  183. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  184. package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
  185. package/dist/collection/components/q2-option/q2-option.js +1 -1
  186. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  187. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  188. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
  189. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  190. package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
  191. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  192. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  193. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
  194. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  195. package/dist/collection/components/q2-pill/q2-pill.js +1 -1
  196. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  197. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +1 -1
  198. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  199. package/dist/collection/components/q2-popover/q2-popover.css +18 -10
  200. package/dist/collection/components/q2-popover/q2-popover.js +59 -59
  201. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  202. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
  203. package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
  204. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +743 -435
  205. package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
  206. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  207. package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
  208. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  209. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
  210. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  211. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  212. package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
  213. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  214. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
  215. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
  216. package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
  217. package/dist/collection/components/q2-section/q2-section.js +2 -2
  218. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  219. package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
  220. package/dist/collection/components/q2-select/q2-select.js +110 -15
  221. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  222. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -1
  223. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  224. package/dist/collection/components/q2-select/test/q2-select-test.spec.js +412 -0
  225. package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
  226. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  227. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  228. package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
  229. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  230. package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
  231. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  232. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  233. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  234. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  235. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  236. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
  237. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
  238. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  239. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
  240. package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
  241. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  242. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  243. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
  244. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  245. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  246. package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
  247. package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
  248. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  249. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
  250. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
  251. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  252. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
  253. package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
  254. package/dist/collection/index.js.map +1 -1
  255. package/dist/collection/utils/action-sheet.js.map +1 -1
  256. package/dist/collection/utils/charting.js.map +1 -1
  257. package/dist/collection/utils/helpers.js.map +1 -1
  258. package/dist/collection/utils/index.js.map +1 -1
  259. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  260. package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
  261. package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
  262. package/dist/collection/utils/test/index.spec.js.map +1 -1
  263. package/dist/components/index2.js +1 -20
  264. package/dist/components/index2.js.map +1 -1
  265. package/dist/components/q2-action-group.js +1 -1
  266. package/dist/components/q2-action-sheet.js +1 -1
  267. package/dist/components/q2-avatar2.js +1 -1
  268. package/dist/components/q2-carousel-pane.js +2 -2
  269. package/dist/components/q2-chart-area.js +1 -1
  270. package/dist/components/q2-chart-bar.js +1 -1
  271. package/dist/components/q2-chart-donut.js +1 -1
  272. package/dist/components/q2-currency.js +1 -1
  273. package/dist/components/q2-detail.js +1 -1
  274. package/dist/components/q2-example.js +1 -1
  275. package/dist/components/q2-formatted-text.js +1 -1
  276. package/dist/components/q2-input2.js +1 -1
  277. package/dist/components/q2-item2.js +1 -1
  278. package/dist/components/q2-legend2.js +1 -1
  279. package/dist/components/q2-list2.js +1 -1
  280. package/dist/components/q2-loc.js +1 -1
  281. package/dist/components/q2-message2.js +1 -1
  282. package/dist/components/q2-month-picker.js +2 -2
  283. package/dist/components/q2-optgroup2.js +1 -1
  284. package/dist/components/q2-option2.js +1 -1
  285. package/dist/components/q2-pagination.js +3 -3
  286. package/dist/components/q2-pill.js +1 -1
  287. package/dist/components/q2-popover2.js +58 -59
  288. package/dist/components/q2-popover2.js.map +1 -1
  289. package/dist/components/q2-relative-time.js +1 -1
  290. package/dist/components/q2-resize-observer2.js +1 -1
  291. package/dist/components/q2-section.js +2 -2
  292. package/dist/components/q2-select2.js +92 -16
  293. package/dist/components/q2-select2.js.map +1 -1
  294. package/dist/components/q2-stepper-vertical.js +1 -1
  295. package/dist/components/q2-stepper.js +1 -1
  296. package/dist/components/q2-tab-container.js +1 -1
  297. package/dist/components/q2-tab-pane.js +1 -1
  298. package/dist/components/q2-tag.js +1 -1
  299. package/dist/components/q2-textarea.js +1 -1
  300. package/dist/components/tecton-tab-pane.js +2 -2
  301. package/dist/esm/click-elsewhere_2.entry.js +59 -60
  302. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  303. package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
  304. package/dist/esm/index-504f1a9e.js.map +1 -0
  305. package/dist/esm/loader.js +1 -1
  306. package/dist/esm/q2-action-group.entry.js +2 -2
  307. package/dist/esm/q2-action-sheet.entry.js +2 -2
  308. package/dist/esm/q2-avatar.entry.js +1 -1
  309. package/dist/esm/q2-badge_7.entry.js +4 -4
  310. package/dist/esm/q2-calendar.entry.js +1 -1
  311. package/dist/esm/q2-card.entry.js +1 -1
  312. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  313. package/dist/esm/q2-carousel.entry.js +1 -1
  314. package/dist/esm/q2-chart-area.entry.js +2 -2
  315. package/dist/esm/q2-chart-bar.entry.js +2 -2
  316. package/dist/esm/q2-chart-donut.entry.js +2 -2
  317. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  318. package/dist/esm/q2-checkbox.entry.js +1 -1
  319. package/dist/esm/q2-currency.entry.js +1 -1
  320. package/dist/esm/q2-data-table.entry.js +1 -1
  321. package/dist/esm/q2-detail.entry.js +2 -2
  322. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  323. package/dist/esm/q2-dropdown.entry.js +1 -1
  324. package/dist/esm/q2-editable-field.entry.js +1 -1
  325. package/dist/esm/q2-example.entry.js +1 -1
  326. package/dist/esm/q2-file-picker.entry.js +1 -1
  327. package/dist/esm/q2-formatted-text.entry.js +1 -1
  328. package/dist/esm/q2-item_3.entry.js +3 -3
  329. package/dist/esm/q2-legend.entry.js +1 -1
  330. package/dist/esm/q2-loc.entry.js +2 -2
  331. package/dist/esm/q2-message.entry.js +2 -2
  332. package/dist/esm/q2-month-picker.entry.js +3 -3
  333. package/dist/esm/q2-optgroup.entry.js +2 -2
  334. package/dist/esm/q2-option-list.entry.js +1 -1
  335. package/dist/esm/q2-option.entry.js +2 -2
  336. package/dist/esm/q2-pagination.entry.js +4 -4
  337. package/dist/esm/q2-pill.entry.js +2 -2
  338. package/dist/esm/q2-radio-group.entry.js +1 -1
  339. package/dist/esm/q2-radio.entry.js +1 -1
  340. package/dist/esm/q2-relative-time.entry.js +2 -2
  341. package/dist/esm/q2-resize-observer.entry.js +1 -1
  342. package/dist/esm/q2-section.entry.js +3 -3
  343. package/dist/esm/q2-select.entry.js +90 -14
  344. package/dist/esm/q2-select.entry.js.map +1 -1
  345. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  346. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  347. package/dist/esm/q2-stepper.entry.js +2 -2
  348. package/dist/esm/q2-tag.entry.js +2 -2
  349. package/dist/esm/q2-tecton-elements.js +1 -1
  350. package/dist/esm/q2-textarea.entry.js +2 -2
  351. package/dist/esm/q2-tooltip.entry.js +1 -1
  352. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  353. package/dist/jest.setup.js +22 -0
  354. package/dist/jest.setup.js.map +1 -0
  355. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +170 -164
  356. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
  357. package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
  358. package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
  359. package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
  360. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +34 -34
  361. package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
  362. package/dist/q2-tecton-elements/q2-badge_7.entry.js +17 -17
  363. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  364. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  365. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +21 -21
  366. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  367. package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
  368. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
  369. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +101 -101
  370. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  371. package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
  372. package/dist/q2-tecton-elements/q2-currency.entry.js +6 -6
  373. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  374. package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
  375. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  376. package/dist/q2-tecton-elements/q2-dropdown.entry.js +1 -1
  377. package/dist/q2-tecton-elements/q2-editable-field.entry.js +8 -8
  378. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  379. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  380. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  381. package/dist/q2-tecton-elements/q2-item_3.entry.js +19 -19
  382. package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
  383. package/dist/q2-tecton-elements/q2-loc.entry.js +5 -5
  384. package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
  385. package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
  386. package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
  387. package/dist/q2-tecton-elements/q2-option-list.entry.js +1 -1
  388. package/dist/q2-tecton-elements/q2-option.entry.js +14 -14
  389. package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
  390. package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
  391. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  392. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  393. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  394. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
  395. package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
  396. package/dist/q2-tecton-elements/q2-select.entry.js +156 -92
  397. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  398. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  399. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
  400. package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
  401. package/dist/q2-tecton-elements/q2-tag.entry.js +25 -25
  402. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  403. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  404. package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
  405. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  406. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  407. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +1 -0
  408. package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
  409. package/dist/types/components/q2-select/q2-select.d.ts +19 -0
  410. package/package.json +3 -3
  411. package/dist/cjs/index-07285783.js.map +0 -1
  412. package/dist/esm/index-d18e2a20.js.map +0 -1
  413. package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"q2-textarea-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-textarea/test/q2-textarea-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport {\n setup,\n setTestStrings,\n dispatchEvent,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-textarea', () => {\n let page: E2EPage;\n let normalStyle;\n let hoverStyle;\n const setupPage = async (props: string = '') => {\n props = props ? ` ${props}` : '';\n page = await setup({\n html: `\n <q2-textarea ${props}></q2-textarea>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-textarea></q2-textarea>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-textarea')).toHaveLength(0);\n });\n\n it('registers in the dom and accepts values', async function (): Promise<void> {\n page = await setupPage('label=\"name\"');\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n describe('focus transferring', () => {\n const html = '<q2-textarea value=\"Ir\" />';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n\n expect(contained).toBe('inputField');\n });\n });\n describe('Events', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n await page.waitForChanges();\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n it('emits input event that proxies inner input event', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits change event that proxies change(blur) input event', async function () {\n const page = await setup({ html: '<q2-textarea value=\"Ir\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n describe('Errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n await page.waitForChanges();\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n await page.waitForChanges();\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } = await page.$eval(\n 'q2-textarea',\n element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n }\n );\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n describe('Hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n await page.waitForChanges();\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n describe('Props', () => {\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea disabled />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n describe('cols', () => {\n it('does not render by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"horizontal\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n describe('label', () => {\n it('displays the label by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" hide-label />' });\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n it('updates max length when value changes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n it('limits length of values provided', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n it('screen reader character total is updated after pause in typing', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await setTestStrings(page, {\n 'tecton.element.textarea.characterCount.screenReader': '{0}',\n });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('maxlength', '5');\n await page.waitForChanges();\n await q2Textarea.callMethod('setValue', 'test');\n await page.waitForChanges();\n const maxLengthSRContainerOld = await page.find('q2-textarea >>> [test-id=\"max-length-sr\"]');\n\n expect(maxLengthSRContainerOld).toEqualText('0');\n\n await page.waitForTimeout(2000);\n const maxLengthSRContainerNew = await page.find('q2-textarea >>> [test-id=\"max-length-sr\"]');\n\n expect(maxLengthSRContainerNew).toEqualText('4');\n });\n });\n });\n describe('optional', () => {\n it('marks field as required by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n it('marks field as optional when property is provided', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" optional />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea placeholder=\"Name\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea readonly />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n describe('resize', () => {\n const overflowingText =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n await page.waitForChanges();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n const getOnLoadHeightDeltaForOverflow = async (resizeType: string, oldWidth: number) => {\n let page = await setup({ html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" />` });\n let contentContainer = await page.find('q2-textarea >>> .content-container');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n page = await setup({\n html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" value=\"${overflowingText}\" />`,\n });\n await page.waitForChanges();\n contentContainer = await page.find('q2-textarea >>> .content-container');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n const newWidth = await contentContainer.getProperty('offsetWidth');\n\n return { oldHeight, newHeight, newWidth };\n };\n const getAfterLoadHeightDeltaForOverflow = async (resizeType: string, oldWidth: number) => {\n const page = await setup({\n html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" />`,\n });\n const q2Textarea = await page.find('q2-textarea');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n q2Textarea.setProperty('value', overflowingText);\n await page.waitForChanges();\n const newHeight = await contentContainer.getProperty('offsetHeight');\n const newWidth = await contentContainer.getProperty('offsetWidth');\n\n return { oldHeight, newHeight, newWidth };\n };\n\n describe('for default', () => {\n it('allows for vertical resizing', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"horizontal\"', () => {\n it('allows for horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"horizontal\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('horizontal', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow(\n 'horizontal',\n 200\n );\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"both\"', () => {\n it('allows for horizontal and vertical resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"both\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('both', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('both', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"none\"', () => {\n it('disables resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('none', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('none', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"vertical-auto\"', () => {\n it('on load allows for manual vertical resizing but not manual horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"vertical-auto\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('after load allows for manual vertical resizing but not manual horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('resize', 'vertical-auto');\n await page.waitForChanges();\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow(\n 'vertical-auto',\n 200\n );\n\n expect(newHeight).toBeGreaterThan(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow(\n 'vertical-auto',\n 200\n );\n\n expect(newHeight).toBeGreaterThan(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('on load the scrollbar will not appear when textarea shrunk to overflow point', async () => {\n const page = await setup({\n html: `<q2-textarea resize=\"vertical-auto\" />`,\n });\n const textarea = await page.find('q2-textarea >>> textarea');\n\n expect(textarea).toHaveClass('resize-vertical-auto');\n });\n it('after load the scrollbar will not appear when textarea shrunk to overflow point', async () => {\n const page = await setup({\n html: `<q2-textarea />`,\n });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('resize', 'vertical-auto');\n await page.waitForChanges();\n const textarea = await page.find('q2-textarea >>> textarea');\n\n expect(textarea).toHaveClass('resize-vertical-auto');\n });\n it('the textarea can not be shrunk vertically to the point where text overflows', async () => {\n const page = await setup({\n html: `<q2-textarea resize=\"vertical-auto\" style=\"width: 200px\" value=\"${overflowingText}\" />`,\n });\n const { oldHeight, newHeight } = await resizeTextarea(page, [0, -20]);\n\n expect(newHeight).toEqual(oldHeight);\n });\n });\n });\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"vertical\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea spellcheck />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n });\n\n describe('Methods', () => {\n describe('setValue', () => {\n it('sets the value of the textarea', async () => {\n page = await setupPage('label=\"My textarea\"');\n const textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const textareaChangeSpy = await textarea.spyOnEvent('change');\n const textareaInputSpy = await textarea.spyOnEvent('input');\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n const newValue = 'The truth is, I am Iron Man.';\n\n await textarea.callMethod('setValue', newValue);\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(1);\n expect(textareaInputSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await textarea.getProperty('value')).toEqual(newValue);\n expect(await innerTextarea.getProperty('value')).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('inputField');\n\n await innerTextarea.press('Tab');\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(1);\n expect(textareaChangeSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n describe('Events', () => {\n describe('Focus', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n\n await page.waitForChanges();\n\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n describe('focus transferring', () => {\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n page = await setupPage('value=\"Ir\"');\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n page = await setupPage('value=\"Ir\"');\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(contained).toBe('inputField');\n });\n });\n });\n\n describe('Input', () => {\n it('emits input event that proxies inner input event', async function () {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n\n describe('Change', () => {\n it('emits change event that proxies change(blur) input event', async function () {\n page = await setupPage('value=\"Ir\"');\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n });\n });\n\n describe('Props', () => {\n describe('label', () => {\n it('displays the label by default', async () => {\n page = await setupPage('label=\"name\"');\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n page = await setupPage('label=\"name\" hide-label');\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n\n describe('errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n page = await setupPage('hide-messages');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n\n await page.waitForChanges();\n\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n page = await setupPage();\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n\n describe('hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n page = await setupPage('hide-messages');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n page = await setupPage();\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n\n describe('optional', () => {\n it('marks field as required by default', async () => {\n page = await setupPage('label=\"Name\"');\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n\n it('marks field as optional when property is provided', async () => {\n page = await setupPage('label=\"Name\" optional');\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('placeholder=\"Name\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('disabled');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('readonly');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('spellcheck');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n page = await setupPage('maxlength=\"5\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n\n it('updates max length when value changes', async () => {\n page = await setupPage('maxlength=\"5\"');\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n\n it('limits length of values provided', async () => {\n page = await setupPage('maxlength=\"5\"');\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n });\n });\n\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n\n it('sets attribute to specified value', async () => {\n page = await setupPage('rows=\"5\" resize=\"none\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n page = await setupPage('rows=\"5\" resize=\"vertical\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n\n describe('cols', () => {\n it('does not render by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n\n it('sets attribute to specified value', async () => {\n page = await setupPage('cols=\"50\" resize=\"none\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n page = await setupPage('cols=\"50\" resize=\"horizontal\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n\n describe('resize', () => {\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n\n it('allows for vertical resizing by default', async () => {\n page = await setupPage();\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('allows for horizontal resizing when specified', async () => {\n page = await setupPage('resize=\"horizontal\"');\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n\n it('allows for horizontal and vertical resizing when specified', async () => {\n page = await setupPage('resize=\"both\"');\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('disables resizing when specified', async () => {\n page = await setupPage('resize=\"none\"');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n });\n });\n\n describe('Hover behavior', () => {\n describe('when not provided custom variables', () => {\n it('does not alter border color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n normalStyle = await textarea.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(normalStyle.borderColor).toBe(hoverStyle.borderColor);\n });\n it('does not alter background color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n normalStyle = await textarea.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(normalStyle.background).toBe(hoverStyle.background);\n });\n it('does not alter label styling', async () => {\n page = await setupPage('label=\"My Textarea\"');\n const label = await page.find('q2-textarea >>> label');\n normalStyle = await label.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await label.getComputedStyle();\n\n expect(normalStyle.color).toBe(hoverStyle.color);\n expect(normalStyle.fontSize).toBe(hoverStyle.fontSize);\n expect(normalStyle.fontWeight).toBe(hoverStyle.fontWeight);\n expect(normalStyle.textTransform).toBe(hoverStyle.textTransform);\n expect(normalStyle.letterSpacing).toBe(hoverStyle.letterSpacing);\n });\n });\n describe('when provided custom variables', () => {\n it('alters the border color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-border-color', 'rgb(0, 0, 255)');\n });\n // remove transition property from textarea so border-width value can be evaluated accurately\n await page.$eval('q2-textarea >>> textarea', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(hoverStyle.borderColor).toBe('rgb(0, 0, 255)');\n });\n it('alters the background color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-background', 'rgb(0, 0, 255)');\n });\n // remove transition property from textarea so border-width value can be evaluated accurately\n await page.$eval('q2-textarea >>> textarea', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(hoverStyle.background).toContain('rgb(0, 0, 255)');\n });\n it('alters the label styling', async () => {\n page = await setupPage('label=\"My Textarea\"');\n const label = await page.find('q2-textarea >>> label');\n normalStyle = await label.getComputedStyle();\n\n expect(normalStyle.color).toBe('rgb(0, 0, 0)');\n expect(normalStyle.fontSize).toBe('16px');\n expect(normalStyle.fontWeight).toBe('600');\n expect(normalStyle.textTransform).toBe('none');\n expect(normalStyle.letterSpacing).toBe('normal');\n\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-label-font-color', 'rgb(94, 94, 94)');\n });\n // remove transition property from label so label color value can be evaluated accurately\n await page.$eval('q2-textarea >>> label', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await label.getComputedStyle();\n\n expect(hoverStyle.color).toBe('rgb(94, 94, 94)');\n expect(hoverStyle.fontSize).toBe('16px');\n expect(hoverStyle.fontWeight).toBe('600');\n expect(hoverStyle.textTransform).toBe('none');\n expect(hoverStyle.letterSpacing).toBe('normal');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-textarea value=\"Ir\" />`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
1
+ {"version":3,"file":"q2-textarea-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-textarea/test/q2-textarea-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,EACL,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,+BAA+B,EAC/B,YAAY,GACf,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAI,IAAa,CAAC;IAClB,IAAI,WAAW,CAAC;IAChB,IAAI,UAAU,CAAC;IACf,MAAM,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE,EAAE;QAC3C,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG,MAAM,KAAK,CAAC;YACf,IAAI,EAAE;uCACqB,KAAK;qBACvB;SACZ,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;QAC/C,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEvD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,4BAA4B,CAAC;QAE1C,EAAE,CAAC,sCAAsC,EAAE,KAAK;YAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;gBAClD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,yCAAyC,EAAE,KAAK;YAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;gBACnD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,KAAK,CACtC,aAAa,EACb,CAAC,OAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACrE,CAAC;YAEF,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK;YACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACvC,KAAK,EAAE,GAAG;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK;YAChE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;YAE/D,MAAM,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;gBACxC,KAAK,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEjE,MAAM,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;gBACxC,KAAK,EAAE,MAAM;aAChB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK;YAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE;gBAC5D,WAAW,EAAE,UAAU;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAErE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACvC,KAAK,EAAE,UAAU;aACpB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACtC,IAAI,MAAM,CAAC;YACX,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;oBACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,cAAc,EAAE,gBAAgB,CAAC,YAAY;wBAC7C,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;wBAC/C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;wBAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;wBACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;qBACpF,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEP,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAElC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC3E,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,YAAY;iBAC/F,CAAC,CAAC,CAAC;gBAEJ,MAAM,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;oBACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;wBAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;wBAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;wBAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;wBACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;qBACpF,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEP,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBACrC,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;oBAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACzC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBAC/D,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBAC9F,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;yBAClD,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAClG,aAAa,EACb,OAAO,CAAC,EAAE;oBACN,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,cAAc,EAAE,gBAAgB,CAAC,YAAY;wBAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;wBAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;wBACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;qBACpF,CAAC;gBACN,CAAC,CACJ,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACrC,IAAI,KAAK,CAAC;YACV,UAAU,CAAC,GAAG,EAAE;gBACZ,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;oBAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;wBAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;qBAChD,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC3E,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,YAAY;iBAC/F,CAAC,CAAC,CAAC;gBAEJ,MAAM,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;oBAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;wBAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;qBAChD,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;oBAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;oBAC9F,OAAO;wBACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;wBAC5D,cAAc,EAAE,gBAAgB,CAAC,YAAY;qBAChD,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,CAAC;gBAC9E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;gBAC3F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAAC,CAAC;gBACpF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAEvD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;gBAC1F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,CAAC;gBAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAE7D,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAClE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAE1E,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBACvD,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;oBACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAClE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAE1E,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;oBACnD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAE1E,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE9C,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;oBAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAC1E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAElE,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE9C,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClE,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;oBAC5E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBACtD,MAAM,cAAc,CAAC,IAAI,EAAE;wBACvB,qDAAqD,EAAE,KAAK;qBAC/D,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAChD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAE7F,MAAM,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAEjD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAE7F,MAAM,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC,CAAC;gBAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAC9E,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC,CAAC;gBACzE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,MAAM,eAAe,GACjB,+bAA+b,CAAC;YACpc,MAAM,cAAc,GAAG,KAAK,EAAE,IAAa,EAAE,CAAC,KAAK,EAAE,KAAK,IAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1F,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACjE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAE/E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,MAAM,CAAC,GACH,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC5C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC3C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrD,MAAM,CAAC,GACH,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC3C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC1C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;gBAEtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YACxD,CAAC,CAAC;YACF,MAAM,+BAA+B,GAAG,KAAK,EAAE,UAAkB,EAAE,QAAgB,EAAE,EAAE;gBACnF,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,wBAAwB,UAAU,mBAAmB,QAAQ,QAAQ,EAAE,CAAC,CAAC;gBACxG,IAAI,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,wBAAwB,UAAU,mBAAmB,QAAQ,cAAc,eAAe,MAAM;iBACzG,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBACzE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACrE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAEnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC,CAAC;YACF,MAAM,kCAAkC,GAAG,KAAK,EAAE,UAAkB,EAAE,QAAgB,EAAE,EAAE;gBACtF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,wBAAwB,UAAU,mBAAmB,QAAQ,QAAQ;iBAC9E,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC/E,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACrE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAEnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC,CAAC;YAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;gBACzB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;oBAC1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBACtD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACnC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;oBACpH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,+BAA+B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAE1F,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;oBACvH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAE7F,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBACjC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC,CAAC;oBAC1E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;oBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;oBACpH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,+BAA+B,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;oBAEpG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;oBACvH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAC/E,YAAY,EACZ,GAAG,CACN,CAAC;oBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;oBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;oBACpH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAE9F,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;oBACvH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAEjG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;oBAC/B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAEjE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;oBACpH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAE9F,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;oBACvH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAEjG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;oBAC5F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC,CAAC;oBAC7E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACnC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;oBAC/F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACpE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;oBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACnC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,oGAAoG,EAAE,KAAK,IAAI,EAAE;oBAChH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,+BAA+B,CAC5E,eAAe,EACf,GAAG,CACN,CAAC;oBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uGAAuG,EAAE,KAAK,IAAI,EAAE;oBACnH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,kCAAkC,CAC/E,eAAe,EACf,GAAG,CACN,CAAC;oBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;oBAC1F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAE7D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;oBAC7F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,iBAAiB;qBAC1B,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;oBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAE7D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;oBACzF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,mEAAmE,eAAe,MAAM;qBACjG,CAAC,CAAC;oBACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEtE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC,CAAC;gBAC7E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;gBACzF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,4CAA4C,EAAE,CAAC,CAAC;gBACjF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBACjE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,IAAI,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAClE,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC9D,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAE5D,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,CAAC,gBAAgB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,8BAA8B,CAAC;gBAEhD,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAChD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,CAAC,gBAAgB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,gBAAgB,CAAC,CAAC,yBAAyB,CAAC;oBAC/C,KAAK,EAAE,QAAQ;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnE,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAEjE,MAAM,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,CAAC,iBAAiB,CAAC,CAAC,yBAAyB,CAAC;oBAChD,KAAK,EAAE,QAAQ;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACtE,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,KAAK,CACtC,aAAa,EACb,CAAC,OAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACrE,CAAC;gBAEF,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAChC,EAAE,CAAC,sCAAsC,EAAE,KAAK;oBAC5C,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;oBACrC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;wBAClD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yCAAyC,EAAE,KAAK;oBAC/C,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;oBACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC/C,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;wBACnD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,kDAAkD,EAAE,KAAK;gBACxD,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;oBACvC,KAAK,EAAE,GAAG;iBACb,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK;gBAC5D,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE;oBAC5D,WAAW,EAAE,UAAU;iBAC1B,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;oBACvC,KAAK,EAAE,UAAU;iBACpB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,0DAA0D,EAAE,KAAK;gBAChE,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;gBAE/D,MAAM,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,KAAK,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEjE,MAAM,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,KAAK,EAAE,MAAM;iBAChB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAEvD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;gBAC1F,IAAI,GAAG,MAAM,SAAS,CAAC,yBAAyB,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAE7D,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBACtC,IAAI,MAAM,CAAC;gBACX,UAAU,CAAC,GAAG,EAAE;oBACZ,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBACvC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAEzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBACtC,MAAM,gBAAgB,GAClB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBACzE,OAAO;4BACH,cAAc,EAAE,gBAAgB,CAAC,YAAY;4BAC7C,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;4BAC/C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;4BAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;4BACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;yBACpF,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEP,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAElC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC3E,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,YAAY;qBAC/F,CAAC,CAAC,CAAC;oBAEJ,MAAM,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAEzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBACtC,MAAM,gBAAgB,GAClB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBACzE,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;4BAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;4BAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;4BAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;4BACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;yBACpF,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEP,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACrC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;wBAC5B,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;wBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAClD,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBACzC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;wBAEpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;4BAC/D,MAAM,gBAAgB,GAClB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;4BACzE,OAAO;gCACH,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;6BAClD,CAAC;wBACN,CAAC,CAAC,CAAC;wBAEH,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;gBAC1C,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;oBACrD,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAC/E,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBACtC,MAAM,gBAAgB,GAClB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBACzE,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,cAAc,EAAE,gBAAgB,CAAC,YAAY;4BAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;4BAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC;4BACtE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC;yBACpF,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEP,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACjC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBACrC,IAAI,KAAK,CAAC;gBACV,UAAU,CAAC,GAAG,EAAE;oBACZ,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBACtC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAEvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBAC9F,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;4BAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;yBAChD,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC3E,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,YAAY;qBAC/F,CAAC,CAAC,CAAC;oBAEJ,MAAM,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAEvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBAC9F,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;4BAC/C,cAAc,EAAE,gBAAgB,CAAC,YAAY;yBAChD,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBACzC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;oBACrD,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEhE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;wBAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAc,qBAAqB,CAAC,CAAC;wBAC9F,OAAO;4BACH,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM;4BAC5D,cAAc,EAAE,gBAAgB,CAAC,YAAY;yBAChD,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;gBACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBAC/D,IAAI,GAAG,MAAM,SAAS,CAAC,uBAAuB,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAC9E,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,IAAI,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;gBACnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;gBACnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;gBACrC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAEzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAClE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAE1E,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBACvD,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;oBACxD,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;oBACxC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAClE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAE1E,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;oBACnD,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAE1E,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE9C,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;oBAC9C,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAC1E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAElE,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE9C,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClE,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,IAAI,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAC;gBACjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;gBACzF,IAAI,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,IAAI,GAAG,MAAM,SAAS,CAAC,yBAAyB,CAAC,CAAC;gBAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;gBAC3F,IAAI,GAAG,MAAM,SAAS,CAAC,+BAA+B,CAAC,CAAC;gBACxD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAElE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,MAAM,cAAc,GAAG,KAAK,EAAE,IAAa,EAAE,CAAC,KAAK,EAAE,KAAK,IAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1F,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACjE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAE/E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,MAAM,CAAC,GACH,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC5C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC3C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrD,MAAM,CAAC,GACH,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC3C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC1C,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;gBAEtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAEtB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAErE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YACxD,CAAC,CAAC;YAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;gBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,IAAI,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;gBAC9C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;gBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;gBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBACxE,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;gBACxC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;gBAEhF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;gBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;gBAC9C,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;gBACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAEjE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAChD,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBACzC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC7D,WAAW,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAE/C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC7C,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC7D,WAAW,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAE/C,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC1C,IAAI,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACvD,WAAW,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAE5C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACjE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC5C,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAe,EAAE,EAAE;oBAChD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,EAAE,gBAAgB,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,6FAA6F;gBAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,EAAe,EAAE,EAAE;oBAC7D,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAE/C,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBACzC,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAe,EAAE,EAAE;oBAChD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,iCAAiC,EAAE,gBAAgB,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBACH,6FAA6F;gBAC7F,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,EAAe,EAAE,EAAE;oBAC7D,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAE/C,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBACtC,IAAI,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACvD,WAAW,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAE7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEjD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAe,EAAE,EAAE;oBAChD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,EAAE,iBAAiB,CAAC,CAAC;gBACrF,CAAC,CAAC,CAAC;gBACH,yFAAyF;gBACzF,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,EAAe,EAAE,EAAE;oBAC1D,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAE5C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACjD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,4BAA4B;iBACrC,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport {\n setup,\n setTestStrings,\n dispatchEvent,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n evaluateA11y,\n} from '@/utils/helpers';\n\ndescribe('q2-textarea', () => {\n let page: E2EPage;\n let normalStyle;\n let hoverStyle;\n const setupPage = async (props: string = '') => {\n props = props ? ` ${props}` : '';\n page = await setup({\n html: `\n <q2-textarea ${props}></q2-textarea>\n `,\n });\n await page.waitForChanges();\n\n return page;\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-textarea></q2-textarea>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-textarea')).toHaveLength(0);\n });\n\n it('registers in the dom and accepts values', async function (): Promise<void> {\n page = await setupPage('label=\"name\"');\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n describe('focus transferring', () => {\n const html = '<q2-textarea value=\"Ir\" />';\n\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n\n expect(contained).toBe('inputField');\n });\n });\n describe('Events', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n await page.waitForChanges();\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n it('emits input event that proxies inner input event', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits change event that proxies change(blur) input event', async function () {\n const page = await setup({ html: '<q2-textarea value=\"Ir\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n describe('Errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n await page.waitForChanges();\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n await page.waitForChanges();\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } = await page.$eval(\n 'q2-textarea',\n element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n }\n );\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n describe('Hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n await page.waitForChanges();\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n const page = await setup({ html: '<q2-textarea hide-messages />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n describe('Props', () => {\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea disabled />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n describe('cols', () => {\n it('does not render by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea cols=\"50\" resize=\"horizontal\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n describe('label', () => {\n it('displays the label by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" />' });\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n const page = await setup({ html: '<q2-textarea label=\"name\" hide-label />' });\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n it('updates max length when value changes', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n it('limits length of values provided', async () => {\n const page = await setup({ html: '<q2-textarea maxlength=\"5\" />' });\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n it('screen reader character total is updated after pause in typing', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n await setTestStrings(page, {\n 'tecton.element.textarea.characterCount.screenReader': '{0}',\n });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('maxlength', '5');\n await page.waitForChanges();\n await q2Textarea.callMethod('setValue', 'test');\n await page.waitForChanges();\n const maxLengthSRContainerOld = await page.find('q2-textarea >>> [test-id=\"max-length-sr\"]');\n\n expect(maxLengthSRContainerOld).toEqualText('0');\n\n await page.waitForTimeout(2000);\n const maxLengthSRContainerNew = await page.find('q2-textarea >>> [test-id=\"max-length-sr\"]');\n\n expect(maxLengthSRContainerNew).toEqualText('4');\n });\n });\n });\n describe('optional', () => {\n it('marks field as required by default', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n it('marks field as optional when property is provided', async () => {\n const page = await setup({ html: '<q2-textarea label=\"Name\" optional />' });\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea placeholder=\"Name\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea readonly />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n describe('resize', () => {\n const overflowingText =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n await page.waitForChanges();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n const getOnLoadHeightDeltaForOverflow = async (resizeType: string, oldWidth: number) => {\n let page = await setup({ html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" />` });\n let contentContainer = await page.find('q2-textarea >>> .content-container');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n page = await setup({\n html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" value=\"${overflowingText}\" />`,\n });\n await page.waitForChanges();\n contentContainer = await page.find('q2-textarea >>> .content-container');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n const newWidth = await contentContainer.getProperty('offsetWidth');\n\n return { oldHeight, newHeight, newWidth };\n };\n const getAfterLoadHeightDeltaForOverflow = async (resizeType: string, oldWidth: number) => {\n const page = await setup({\n html: `<q2-textarea resize=\"${resizeType}\" style=\"width: ${oldWidth}px\" />`,\n });\n const q2Textarea = await page.find('q2-textarea');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n q2Textarea.setProperty('value', overflowingText);\n await page.waitForChanges();\n const newHeight = await contentContainer.getProperty('offsetHeight');\n const newWidth = await contentContainer.getProperty('offsetWidth');\n\n return { oldHeight, newHeight, newWidth };\n };\n\n describe('for default', () => {\n it('allows for vertical resizing', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"horizontal\"', () => {\n it('allows for horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"horizontal\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('horizontal', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow(\n 'horizontal',\n 200\n );\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"both\"', () => {\n it('allows for horizontal and vertical resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"both\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('both', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('both', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"none\"', () => {\n it('disables resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n it('on load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow('none', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will NOT automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow('none', 200);\n\n expect(newHeight).toEqual(oldHeight);\n expect(newWidth).toEqual(200);\n });\n });\n describe('set to \"vertical-auto\"', () => {\n it('on load allows for manual vertical resizing but not manual horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"vertical-auto\" />' });\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('after load allows for manual vertical resizing but not manual horizontal resizing', async () => {\n const page = await setup({ html: '<q2-textarea resize=\"none\" />' });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('resize', 'vertical-auto');\n await page.waitForChanges();\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n it('on load when text overflows, the textarea will automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getOnLoadHeightDeltaForOverflow(\n 'vertical-auto',\n 200\n );\n\n expect(newHeight).toBeGreaterThan(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('after load when text overflows, the textarea will automatically increase in height to fit the content', async () => {\n const { oldHeight, newHeight, newWidth } = await getAfterLoadHeightDeltaForOverflow(\n 'vertical-auto',\n 200\n );\n\n expect(newHeight).toBeGreaterThan(oldHeight);\n expect(newWidth).toEqual(200);\n });\n it('on load the scrollbar will not appear when textarea shrunk to overflow point', async () => {\n const page = await setup({\n html: `<q2-textarea resize=\"vertical-auto\" />`,\n });\n const textarea = await page.find('q2-textarea >>> textarea');\n\n expect(textarea).toHaveClass('resize-vertical-auto');\n });\n it('after load the scrollbar will not appear when textarea shrunk to overflow point', async () => {\n const page = await setup({\n html: `<q2-textarea />`,\n });\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('resize', 'vertical-auto');\n await page.waitForChanges();\n const textarea = await page.find('q2-textarea >>> textarea');\n\n expect(textarea).toHaveClass('resize-vertical-auto');\n });\n it('the textarea can not be shrunk vertically to the point where text overflows', async () => {\n const page = await setup({\n html: `<q2-textarea resize=\"vertical-auto\" style=\"width: 200px\" value=\"${overflowingText}\" />`,\n });\n const { oldHeight, newHeight } = await resizeTextarea(page, [0, -20]);\n\n expect(newHeight).toEqual(oldHeight);\n });\n });\n });\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n it('sets attribute to specified value', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"none\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n const page = await setup({ html: '<q2-textarea rows=\"5\" resize=\"vertical\" />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n const page = await setup({ html: '<q2-textarea />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n it('is rendered when provided', async () => {\n const page = await setup({ html: '<q2-textarea spellcheck />' });\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n });\n\n describe('Methods', () => {\n describe('setValue', () => {\n it('sets the value of the textarea', async () => {\n page = await setupPage('label=\"My textarea\"');\n const textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const textareaChangeSpy = await textarea.spyOnEvent('change');\n const textareaInputSpy = await textarea.spyOnEvent('input');\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(0);\n expect(await getActiveElementTestId(page)).toBeNull();\n const newValue = 'The truth is, I am Iron Man.';\n\n await textarea.callMethod('setValue', newValue);\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(0);\n expect(textareaInputSpy).toHaveReceivedEventTimes(1);\n expect(textareaInputSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await textarea.getProperty('value')).toEqual(newValue);\n expect(await innerTextarea.getProperty('value')).toEqual(newValue);\n expect(await getActiveElementTestId(page)).toEqual('inputField');\n\n await innerTextarea.press('Tab');\n await page.waitForChanges();\n\n expect(textareaChangeSpy).toHaveReceivedEventTimes(1);\n expect(textareaChangeSpy).toHaveReceivedEventDetail({\n value: newValue,\n });\n expect(await getActiveElementTestId(page)).toBeNull();\n });\n });\n });\n describe('Events', () => {\n describe('Focus', () => {\n it('focuses the inner textarea when focused programmatically', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.triggerEvent('focus');\n\n await page.waitForChanges();\n\n const activeElementName = await page.$eval(\n 'q2-textarea',\n (element: HTMLElement) => element.shadowRoot.activeElement.tagName\n );\n\n expect(activeElementName).toEqual(innerTextarea.tagName);\n });\n\n describe('focus transferring', () => {\n it('focuses when focus event dispatched ', async function (): Promise<void> {\n page = await setupPage('value=\"Ir\"');\n await dispatchEvent(page, ['q2-textarea'], 'focus');\n const selected = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(selected).toBe('inputField');\n });\n it('focuses when focus event method called ', async function (): Promise<void> {\n page = await setupPage('value=\"Ir\"');\n const section = await page.find('q2-textarea');\n await section.triggerEvent('focus');\n await page.waitForChanges();\n const contained = await page.$eval('q2-textarea', el => {\n return el.shadowRoot.activeElement.getAttribute('test-id');\n });\n expect(contained).toBe('inputField');\n });\n });\n });\n\n describe('Input', () => {\n it('emits input event that proxies inner input event', async function () {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await innerTextarea.press('I');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'I',\n });\n });\n\n it('emits input event after content is pasted into field', async function () {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const inputSpy = await q2Textarea.spyOnEvent('input');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'paste', {\n pastedValue: 'Iron Man',\n });\n\n expect(await innerTextarea.getProperty('value')).toEqual('Iron Man');\n await page.waitForChanges();\n\n expect(inputSpy).toHaveReceivedEventTimes(1);\n expect(inputSpy).toHaveReceivedEventDetail({\n value: 'Iron Man',\n });\n });\n });\n\n describe('Change', () => {\n it('emits change event that proxies change(blur) input event', async function () {\n page = await setupPage('value=\"Ir\"');\n const q2Textarea = await page.find('q2-textarea');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n const changeSpy = await q2Textarea.spyOnEvent('change');\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n await innerTextarea.press('o');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'blur');\n\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iro',\n });\n\n await innerTextarea.press('n');\n await page.waitForChanges();\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'change');\n\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({\n value: 'Iron',\n });\n });\n });\n });\n\n describe('Props', () => {\n describe('label', () => {\n it('displays the label by default', async () => {\n page = await setupPage('label=\"name\"');\n const label = await page.find('q2-textarea >>> label');\n\n expect(label.innerText.trim()).toEqual('name');\n });\n\n it('hides the label and adds it as aria-label on textarea when hide-label is set', async () => {\n page = await setupPage('label=\"name\" hide-label');\n const textArea = await page.find('q2-textarea >>> textarea');\n\n expect(textArea.getAttribute('aria-label')).toEqual('name');\n });\n });\n\n describe('errors', () => {\n describe('when errors are provided', () => {\n let errors;\n beforeEach(() => {\n errors = ['Busted'];\n });\n\n it('shows errors when focused', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesHeight: messageContainer.clientHeight,\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(errors[0]);\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show error messages when hide-messages is true', async () => {\n page = await setupPage('hide-messages');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n expect(hasErrorClass).toBe(true);\n expect(hasErrorIcon).toBe(true);\n expect(hasAriaInvalid).toBe(true);\n });\n\n describe('when hints are provided', () => {\n it('renders errors', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('errors', errors);\n q2Textarea.setProperty('hints', ['Here is a hint']);\n\n await page.waitForChanges();\n\n const { messagesText } = await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messagesText: messageContainer.innerText.trim(),\n };\n });\n\n expect(messagesText).toEqual(errors[0]);\n });\n });\n });\n\n describe('when errors are not provided', () => {\n it('does not render any indicators of error', async () => {\n page = await setupPage();\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight, hasErrorClass, hasErrorIcon, hasAriaInvalid } =\n await page.$eval('q2-textarea', element => {\n const messageContainer =\n element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n hasErrorClass: !!element.shadowRoot.querySelector('.has-error'),\n hasErrorIcon: !!element.shadowRoot.querySelector('q2-icon.icon-error'),\n hasAriaInvalid: !!element.shadowRoot.querySelector('textarea[aria-invalid=true]'),\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n expect(hasErrorClass).toBe(false);\n expect(hasErrorIcon).toBe(false);\n expect(hasAriaInvalid).toBe(false);\n });\n });\n });\n\n describe('hints', () => {\n describe('when hints are provided', () => {\n let hints;\n beforeEach(() => {\n hints = ['Busted'];\n });\n\n it('shows hints when focused', async () => {\n page = await setupPage();\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqual(hints[0]);\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { expandedMessagesHeight } = await page.$eval('q2-textarea', element => ({\n expandedMessagesHeight: element.shadowRoot.querySelector('.messages-container').clientHeight,\n }));\n\n expect(expandedMessagesHeight).toBeGreaterThan(0);\n });\n\n it('does not show hints messages when hide-messages is true', async () => {\n page = await setupPage('hide-messages');\n const q2Textarea = await page.find('q2-textarea');\n q2Textarea.setProperty('hints', hints);\n\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesText, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesText: messageContainer.innerText.trim(),\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(1);\n expect(messagesText).toEqualHtml('');\n });\n });\n\n describe('when hints are not provided', () => {\n it('does not render any indicators of hints', async () => {\n page = await setupPage();\n await page.waitForChanges();\n\n await dispatchEvent(page, ['q2-textarea', 'textarea'], 'focus');\n\n const { messageCount, messagesHeight } = await page.$eval('q2-textarea', element => {\n const messageContainer = element.shadowRoot.querySelector<HTMLElement>('.messages-container');\n return {\n messageCount: messageContainer.querySelectorAll('li').length,\n messagesHeight: messageContainer.clientHeight,\n };\n });\n\n expect(messagesHeight).toEqual(0);\n expect(messageCount).toEqual(0);\n });\n });\n });\n\n describe('optional', () => {\n it('marks field as required by default', async () => {\n page = await setupPage('label=\"Name\"');\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeNull();\n expect(innerTextarea).toEqualAttribute('aria-required', 'true');\n });\n\n it('marks field as optional when property is provided', async () => {\n page = await setupPage('label=\"Name\" optional');\n const optionalTag = await page.find('q2-textarea >>> .optional-tag');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(optionalTag).toBeTruthy();\n expect(optionalTag.innerText.trim()).toEqual('tecton.element.input.optional');\n expect(innerTextarea).toEqualAttribute('aria-required', 'false');\n });\n });\n\n describe('placeholder', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('placeholder');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('placeholder=\"Name\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('placeholder', 'Name');\n });\n });\n\n describe('disabled', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('disabled');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('disabled');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('disabled');\n });\n });\n\n describe('readonly', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('readonly');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('readonly');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('readonly');\n });\n });\n\n describe('spellcheck', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('spellcheck');\n });\n\n it('is rendered when provided', async () => {\n page = await setupPage('spellcheck');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toHaveAttribute('spellcheck');\n });\n });\n\n describe('maxlength', () => {\n it('is not rendered by default', async () => {\n page = await setupPage();\n\n await page.waitForChanges();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).not.toHaveAttribute('maxlength');\n expect(maxLengthContainer).toBeNull();\n });\n\n describe('when provided', () => {\n it('renders max length elements and attributes', async () => {\n page = await setupPage('maxlength=\"5\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(innerTextarea).toEqualAttribute('maxlength', '5');\n expect(maxLengthContainer).toEqualText('0/5');\n });\n\n it('updates max length when value changes', async () => {\n page = await setupPage('maxlength=\"5\"');\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'A');\n await page.waitForChanges();\n\n expect(maxLengthContainer).toEqualText('1/5');\n });\n\n it('limits length of values provided', async () => {\n page = await setupPage('maxlength=\"5\"');\n const q2Textarea = await page.find('q2-textarea');\n const maxLengthContainer = await page.find('q2-textarea >>> .max-length');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(maxLengthContainer).toEqualText('0/5');\n\n q2Textarea.setProperty('value', 'ABCDEFG');\n await page.waitForChanges();\n\n expect(await innerTextarea.getProperty('value')).toEqual('ABCDE');\n expect(maxLengthContainer).toEqualText('5/5');\n });\n });\n });\n\n describe('rows', () => {\n it('sets attribute to 3 by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '3');\n });\n\n it('sets attribute to specified value', async () => {\n page = await setupPage('rows=\"5\" resize=\"none\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('rows', '5');\n });\n\n it('removes attribute from textarea after render when vertical resizing enabled', async () => {\n page = await setupPage('rows=\"5\" resize=\"vertical\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('rows');\n });\n });\n\n describe('cols', () => {\n it('does not render by default', async () => {\n page = await setupPage();\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n\n it('sets attribute to specified value', async () => {\n page = await setupPage('cols=\"50\" resize=\"none\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).toEqualAttribute('cols', '50');\n });\n\n it('removes attribute from textarea after render when horizontal resizing enabled', async () => {\n page = await setupPage('cols=\"50\" resize=\"horizontal\"');\n const innerTextarea = await page.find('q2-textarea >>> textarea');\n\n expect(innerTextarea).not.toHaveAttribute('cols');\n });\n });\n\n describe('resize', () => {\n const resizeTextarea = async (page: E2EPage, [moveX, moveY]: [number, number] = [-10, -10]) => {\n const q2Textarea = await page.find('q2-textarea');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n const contentContainer = await page.find('q2-textarea >>> .content-container');\n\n const oldWidth = await contentContainer.getProperty('offsetWidth');\n const oldHeight = await contentContainer.getProperty('offsetHeight');\n\n const x =\n (await q2Textarea.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetLeft')) +\n (await resizeBtn.getProperty('offsetWidth')) / 2;\n const y =\n (await q2Textarea.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetTop')) +\n (await resizeBtn.getProperty('offsetHeight')) / 2;\n\n await page.mouse.move(x, y);\n await page.mouse.down();\n await page.mouse.move(x + moveX, y + moveY);\n await page.mouse.up();\n\n const newWidth = await contentContainer.getProperty('offsetWidth');\n const newHeight = await contentContainer.getProperty('offsetHeight');\n\n return { oldWidth, oldHeight, newWidth, newHeight };\n };\n\n it('allows for vertical resizing by default', async () => {\n page = await setupPage();\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('allows for horizontal resizing when specified', async () => {\n page = await setupPage('resize=\"horizontal\"');\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight);\n });\n\n it('allows for horizontal and vertical resizing when specified', async () => {\n page = await setupPage('resize=\"both\"');\n const { oldWidth, oldHeight, newWidth, newHeight } = await resizeTextarea(page);\n\n expect(newWidth).toEqual(oldWidth - 10);\n expect(newHeight).toEqual(oldHeight - 10);\n });\n\n it('disables resizing when specified', async () => {\n page = await setupPage('resize=\"none\"');\n const resizeBtn = await page.find('q2-textarea >>> .btn-resize');\n\n expect(resizeBtn).toBeNull();\n });\n });\n });\n\n describe('Hover behavior', () => {\n describe('when not provided custom variables', () => {\n it('does not alter border color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n normalStyle = await textarea.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(normalStyle.borderColor).toBe(hoverStyle.borderColor);\n });\n it('does not alter background color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n normalStyle = await textarea.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(normalStyle.background).toBe(hoverStyle.background);\n });\n it('does not alter label styling', async () => {\n page = await setupPage('label=\"My Textarea\"');\n const label = await page.find('q2-textarea >>> label');\n normalStyle = await label.getComputedStyle();\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await label.getComputedStyle();\n\n expect(normalStyle.color).toBe(hoverStyle.color);\n expect(normalStyle.fontSize).toBe(hoverStyle.fontSize);\n expect(normalStyle.fontWeight).toBe(hoverStyle.fontWeight);\n expect(normalStyle.textTransform).toBe(hoverStyle.textTransform);\n expect(normalStyle.letterSpacing).toBe(hoverStyle.letterSpacing);\n });\n });\n describe('when provided custom variables', () => {\n it('alters the border color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-border-color', 'rgb(0, 0, 255)');\n });\n // remove transition property from textarea so border-width value can be evaluated accurately\n await page.$eval('q2-textarea >>> textarea', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(hoverStyle.borderColor).toBe('rgb(0, 0, 255)');\n });\n it('alters the background color', async () => {\n page = await setupPage();\n const textarea = await page.find('q2-textarea >>> textarea');\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-background', 'rgb(0, 0, 255)');\n });\n // remove transition property from textarea so border-width value can be evaluated accurately\n await page.$eval('q2-textarea >>> textarea', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await textarea.getComputedStyle();\n\n expect(hoverStyle.background).toContain('rgb(0, 0, 255)');\n });\n it('alters the label styling', async () => {\n page = await setupPage('label=\"My Textarea\"');\n const label = await page.find('q2-textarea >>> label');\n normalStyle = await label.getComputedStyle();\n\n expect(normalStyle.color).toBe('rgb(0, 0, 0)');\n expect(normalStyle.fontSize).toBe('16px');\n expect(normalStyle.fontWeight).toBe('600');\n expect(normalStyle.textTransform).toBe('none');\n expect(normalStyle.letterSpacing).toBe('normal');\n\n await page.$eval('q2-textarea', (el: HTMLElement) => {\n el.style.setProperty('--tct-textarea-hover-label-font-color', 'rgb(94, 94, 94)');\n });\n // remove transition property from label so label color value can be evaluated accurately\n await page.$eval('q2-textarea >>> label', (el: HTMLElement) => {\n el.style.setProperty('transition', 'none');\n });\n\n await page.hover('q2-textarea');\n await page.waitForChanges();\n hoverStyle = await label.getComputedStyle();\n\n expect(hoverStyle.color).toBe('rgb(94, 94, 94)');\n expect(hoverStyle.fontSize).toBe('16px');\n expect(hoverStyle.fontWeight).toBe('600');\n expect(hoverStyle.textTransform).toBe('none');\n expect(hoverStyle.letterSpacing).toBe('normal');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations', async () => {\n const page = await setup({\n html: `<q2-textarea value=\"Ir\" />`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}