@ukic/canary-web-components 2.0.0-canary.25 → 2.0.0-canary.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  3. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-data-table.cjs.entry.js +5 -3
  7. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-empty-state_2.cjs.entry.js +15 -9
  9. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-pagination_4.cjs.entry.js +6 -6
  11. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-popover-menu.cjs.entry.js +18 -12
  13. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-search-bar.cjs.entry.js +14 -27
  15. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-tab-context.cjs.entry.js +68 -145
  17. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-tab-panel.cjs.entry.js +5 -13
  19. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-tab.cjs.entry.js +9 -10
  21. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-toast-region.cjs.entry.js +6 -0
  23. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-typography.cjs.entry.js +3 -1
  25. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  26. package/dist/cjs/loader.cjs.js +1 -1
  27. package/dist/collection/components/ic-data-table/ic-data-table.css +5 -1
  28. package/dist/collection/components/ic-data-table/ic-data-table.js +4 -2
  29. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  30. package/dist/collection/components/ic-data-table/story-data.js +46 -5
  31. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  32. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +46 -14
  33. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  34. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.types.js +2 -0
  35. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.types.js.map +1 -0
  36. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js +20 -2
  37. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js.map +1 -1
  38. package/dist/components/ic-accordion.js +1 -1
  39. package/dist/components/ic-accordion.js.map +1 -1
  40. package/dist/components/ic-alert2.js +1 -1
  41. package/dist/components/ic-alert2.js.map +1 -1
  42. package/dist/components/ic-data-table.js +5 -3
  43. package/dist/components/ic-data-table.js.map +1 -1
  44. package/dist/components/ic-pagination-bar2.js +18 -10
  45. package/dist/components/ic-pagination-bar2.js.map +1 -1
  46. package/dist/components/ic-popover-menu.js +20 -13
  47. package/dist/components/ic-popover-menu.js.map +1 -1
  48. package/dist/components/ic-search-bar.js +14 -27
  49. package/dist/components/ic-search-bar.js.map +1 -1
  50. package/dist/components/ic-select2.js +5 -5
  51. package/dist/components/ic-select2.js.map +1 -1
  52. package/dist/components/ic-tab-context.js +68 -145
  53. package/dist/components/ic-tab-context.js.map +1 -1
  54. package/dist/components/ic-tab-panel.js +6 -17
  55. package/dist/components/ic-tab-panel.js.map +1 -1
  56. package/dist/components/ic-tab.js +9 -10
  57. package/dist/components/ic-tab.js.map +1 -1
  58. package/dist/components/ic-text-field2.js +1 -1
  59. package/dist/components/ic-text-field2.js.map +1 -1
  60. package/dist/components/ic-toast-region.js +6 -0
  61. package/dist/components/ic-toast-region.js.map +1 -1
  62. package/dist/components/ic-typography2.js +3 -1
  63. package/dist/components/ic-typography2.js.map +1 -1
  64. package/dist/core/core.esm.js +1 -1
  65. package/dist/core/core.esm.js.map +1 -1
  66. package/dist/core/{p-13993bf3.entry.js → p-01bc462e.entry.js} +2 -2
  67. package/dist/core/p-01bc462e.entry.js.map +1 -0
  68. package/dist/core/p-05ae9a59.entry.js +2 -0
  69. package/dist/core/p-05ae9a59.entry.js.map +1 -0
  70. package/dist/core/{p-989310a8.entry.js → p-0cf856e4.entry.js} +2 -2
  71. package/dist/core/p-0cf856e4.entry.js.map +1 -0
  72. package/dist/core/{p-2ee5d3fb.entry.js → p-34b333de.entry.js} +2 -2
  73. package/dist/core/p-34b333de.entry.js.map +1 -0
  74. package/dist/core/{p-6b1fcf87.entry.js → p-383ba7e8.entry.js} +2 -2
  75. package/dist/core/p-383ba7e8.entry.js.map +1 -0
  76. package/dist/core/p-6ca98c5d.entry.js +2 -0
  77. package/dist/core/p-6ca98c5d.entry.js.map +1 -0
  78. package/dist/core/{p-0ec04c16.entry.js → p-a7331e7c.entry.js} +2 -2
  79. package/dist/core/p-a7331e7c.entry.js.map +1 -0
  80. package/dist/core/p-b535c802.entry.js +2 -0
  81. package/dist/core/p-b535c802.entry.js.map +1 -0
  82. package/dist/core/{p-fa77211d.entry.js → p-cb156309.entry.js} +2 -2
  83. package/dist/core/p-cb156309.entry.js.map +1 -0
  84. package/dist/core/p-e50af3df.entry.js +2 -0
  85. package/dist/core/p-e50af3df.entry.js.map +1 -0
  86. package/dist/core/p-f5fbfbc9.entry.js +2 -0
  87. package/dist/core/p-f5fbfbc9.entry.js.map +1 -0
  88. package/dist/core/p-fc007ce4.entry.js +2 -0
  89. package/dist/core/p-fc007ce4.entry.js.map +1 -0
  90. package/dist/esm/core.js +1 -1
  91. package/dist/esm/ic-accordion.entry.js +1 -1
  92. package/dist/esm/ic-accordion.entry.js.map +1 -1
  93. package/dist/esm/ic-alert.entry.js +1 -1
  94. package/dist/esm/ic-alert.entry.js.map +1 -1
  95. package/dist/esm/ic-data-table.entry.js +5 -3
  96. package/dist/esm/ic-data-table.entry.js.map +1 -1
  97. package/dist/esm/ic-empty-state_2.entry.js +15 -9
  98. package/dist/esm/ic-empty-state_2.entry.js.map +1 -1
  99. package/dist/esm/ic-pagination_4.entry.js +6 -6
  100. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  101. package/dist/esm/ic-popover-menu.entry.js +18 -12
  102. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  103. package/dist/esm/ic-search-bar.entry.js +14 -27
  104. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  105. package/dist/esm/ic-tab-context.entry.js +68 -145
  106. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  107. package/dist/esm/ic-tab-panel.entry.js +5 -13
  108. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  109. package/dist/esm/ic-tab.entry.js +9 -10
  110. package/dist/esm/ic-tab.entry.js.map +1 -1
  111. package/dist/esm/ic-toast-region.entry.js +6 -0
  112. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  113. package/dist/esm/ic-typography.entry.js +3 -1
  114. package/dist/esm/ic-typography.entry.js.map +1 -1
  115. package/dist/esm/loader.js +1 -1
  116. package/dist/types/components/ic-data-table/story-data.d.ts +15 -0
  117. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +9 -4
  118. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.types.d.ts +4 -0
  119. package/dist/types/components.d.ts +13 -3
  120. package/hydrate/index.js +157 -234
  121. package/package.json +6 -6
  122. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js +0 -146
  123. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js.map +0 -1
  124. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js +0 -2040
  125. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js.map +0 -1
  126. package/dist/core/p-0ec04c16.entry.js.map +0 -1
  127. package/dist/core/p-13993bf3.entry.js.map +0 -1
  128. package/dist/core/p-216fbd5e.entry.js +0 -2
  129. package/dist/core/p-216fbd5e.entry.js.map +0 -1
  130. package/dist/core/p-2ee5d3fb.entry.js.map +0 -1
  131. package/dist/core/p-3ba4335c.entry.js +0 -2
  132. package/dist/core/p-3ba4335c.entry.js.map +0 -1
  133. package/dist/core/p-40e5fa80.entry.js +0 -2
  134. package/dist/core/p-40e5fa80.entry.js.map +0 -1
  135. package/dist/core/p-6af080d3.entry.js +0 -2
  136. package/dist/core/p-6af080d3.entry.js.map +0 -1
  137. package/dist/core/p-6b1fcf87.entry.js.map +0 -1
  138. package/dist/core/p-9777ebb1.entry.js +0 -2
  139. package/dist/core/p-9777ebb1.entry.js.map +0 -1
  140. package/dist/core/p-989310a8.entry.js.map +0 -1
  141. package/dist/core/p-c98ce508.entry.js +0 -2
  142. package/dist/core/p-c98ce508.entry.js.map +0 -1
  143. package/dist/core/p-fa77211d.entry.js.map +0 -1
  144. package/dist/types/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.d.ts +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-select.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-select-with-multi/test/basic/ic-select.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAG5D,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG;;;;EAId,CAAC;AAEH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;EAa3B,CAAC;AAEH,MAAM,YAAY,GAAG;;;;;;;;;;;EAWnB,CAAC;AAEH,MAAM,iBAAiB,GAAG;;;;;;;;EAQxB,CAAC;AAEH,MAAM,mBAAmB,GAAG;;;;;;EAM1B,CAAC;AAEH,MAAM,iBAAiB,GAAG;;;;;;EAMxB,CAAC;AAEH,MAAM,aAAa,GAAG,CACpB,OAAe,EACf,EAAE,CAAC;;;uBAGkB,OAAO;;;;;YAKlB,CAAC;AAEb,MAAM,sBAAsB,GAAG,CAC7B,OAAe,EACf,EAAE,CAAC;;;yBAGoB,OAAO;;;;;cAKlB,CAAC;AAEf,MAAM,gCAAgC,GAAG,CACvC,OAAe,EACf,EAAE,CAAC;;;yBAGoB,OAAO;;;;;;cAMlB,CAAC;AAEf,MAAM,uBAAuB,GAAG,CAC9B,OAAe,EACf,EAAE,CAAC;;;yBAGoB,OAAO;cAClB,CAAC;AAEf,MAAM,4BAA4B,GAAG,GAAG,EAAE,CACxC;;;;;;;cAOY,CAAC;AAEf,MAAM,kBAAkB,GAAG,CAAC,YAAoB,EAAE,aAAqB,EAAE,EAAE,CACzE;;;2BAGyB,YAAY;;6BAEV,aAAa;;gBAE1B,CAAC;AAEjB,MAAM,kBAAkB,GAAG,CACzB,OAAe,EACf,EAAE,CAAC;;;uBAGkB,OAAO;;;;;YAKlB,CAAC;AAEb,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;IAChD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,QAAQ;aAClB,aAAa,CAAC,sBAAsB,CAAC;aACrC,UAAU,CAAC,aAAa,CAAC,4CAA4C,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAa,EAAE,IAAa,EAAE,EAAE;IACnE,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;QACvE,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAc,EAAE,EAAE;QAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CACnB,sEAAsE,CACvE,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAE1D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,kHAAkH;QACpH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;gBAC/G,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;gBAC5G,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErD,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErD,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;gBAC5F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;gBACzH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC9F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yGAAyG,EAAE,KAAK,IAAI,EAAE;gBACvH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;gBACrF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;gBAChE,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9D,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/D,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;gBACxH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBACxD,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;gBACjH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,wCAAwC,CACzC,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzD,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACxE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACxE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzD,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,wCAAwC,CACzC,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;gBAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;oBACzC,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACxE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;YACvG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAE3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CACnB,GAAG,aAAa,CAAC,OAAO,CAAC,8BAA8B,CACxD,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CACnB,GAAG,aAAa,CAAC,OAAO,CAAC,8BAA8B,CACxD,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;YAC7G,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;QAI7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzE,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAE3C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,wBAAwB,GAAG;;;;QAI/B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CACJ,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvD,CAAC,UAAU,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC1C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAC/C,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CACrC,CACF,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG;;;;;;;;;QASrB,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CACtC,qEAAqE,CACtE,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAExC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC3C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,EAClE,CAAC,UAAU,EAAE,EAAE,CAAE,UAA0B,CAAC,SAAS,CACtD,CACF,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG;;;;;;;;;QASrB,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;QAI7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;QAI7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACpD,kCAAkC,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;;;;;;QAS7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACpD,gCAAgC,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;YACxG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;;;;;;QAS7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACpD,oDAAoD,CACrD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CACnB,+BAA+B,aAAa,CAAC,OAAO,CAAC,EAAE,CACxD,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;gBACtG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;kBAeZ,CAAC,CAAC;gBACZ,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAE9C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAChC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAEhD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;gBAC5H,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CACnB,4IAA4I,CAC7I,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE/B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,mEAAmE,CACpE,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAEjC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAChC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,mEAAmE,CACpE,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;gBACrG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CACnB,4IAA4I,CAC7I,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;gBACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAExC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;;;;;kBAWZ,CAAC,CAAC;gBACZ,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEzD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,mEAAmE,CACpE,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC;gBACxC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;gBACnG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CACnB,gHAAgH,CACjH,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEzD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,mEAAmE,CACpE,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC;gBACxC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,sBAAsB,GAAG;;;;;;;;QAQ7B,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;QAerB,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;QAerB,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEnD,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,wCAAwC,CACzC,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACxE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAEnC,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;YACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;YACnG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;aAC7B;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CACnB,gGAAgG,CACjG,CAAC;YAEF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEnD,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE1D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,uDAAuD,CACxD,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEvD,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEtD,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,uDAAuD,CACxD,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEvD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,uDAAuD,CACxD,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEvD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAEpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,iDAAiD,CAClD,CAAC;YAEF,MAAM,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YAEH,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,MAAM,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAE3C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;YACzG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBACjE,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;YACjH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBACjE,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAErB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5D,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,oDAAoD,CACrD,CAAC;YAEF,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;YACzH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,oDAAoD,CACrD,CAAC;YAEF,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE/D,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,EAAkC,CAAC;gBACjD,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAClE,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE9B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBACjE,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAExC,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAExC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACtE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAExC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;gBACvE,OAAO,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;gBACtG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CACnB,kIAAkI,CACnI,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEzD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,mEAAmE,CACpE,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC;gBACxC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;kBAOZ,CAAC,CAAC;gBACZ,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,wCAAwC,CACzC,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,qDAAqD,CACtD,CAAC;gBACF,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YAC1D,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;QAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,EAAkC,CAAC;YACjD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YAC1D,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;QAEF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,EAAkC,CAAC;YACjD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,EAAoC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,IAAa,CAAC;IAElB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,YAAY,CACrB,yIAAyI,CAC1I,CAAC;YACF,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAI,CAAC,UAAU,CACnB,sEAAsE,CACvE,CAAC;YACF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC/C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EACxC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAC5B,CACF,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,cAAc,GAAG;;;;;;;;;QASrB,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CACxC,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CACxC,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAEzE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAElE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;YACvG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC1C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAC/C,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CACrC,CACF,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC5C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EACxC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAC7B,CACF,CAAC;YAEF,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC/C,KAAK,CAAC,IAAI,CACR,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EACxC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAC5B,CACF,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE9D,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAEjD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CACzC,GAAG,EAAE,CACH,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CAClD,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CACzC,GAAG,EAAE,CACH,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CAClD,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;YACnG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CACzC,GAAG,EAAE,CACH,QAAQ;iBACL,aAAa,CAAC,sBAAsB,CAAC;iBACrC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CAClD,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,8CAA8C,CAC/C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC3C,MAAM,IAAI,GAAG,QAAQ;qBAClB,aAAa,CAAC,sBAAsB,CAAC;qBACrC,UAAU,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kHAAkH,EAAE,KAAK,IAAI,EAAE;YAChI,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,8CAA8C,CAC/C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzC,MAAM,IAAI,GAAG,QAAQ;qBAClB,aAAa,CAAC,sBAAsB,CAAC;qBACrC,UAAU,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAEvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACrC,MAAM,IAAI,GAAG,QAAQ;qBAClB,aAAa,CAAC,sBAAsB,CAAC;qBACrC,UAAU,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,CAAC;aACxB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,yBAAyB,CAAC;gBAC/C,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mHAAmH,EAAE,KAAK,IAAI,EAAE;YACjI,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9D,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YAE5D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,yBAAyB,CAAC;gBACjD,KAAK,EAAE,cAAc;aACtB,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAElD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CACpC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAC9C,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAC3B,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;YACtG,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CACjC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CACvC,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAE/D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CACpC,sBAAsB,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAC9C,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mHAAmH,EAAE,KAAK,IAAI,EAAE;YACjI,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,CAAC;aACxB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAE/D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;aACxD,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;YACtH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;aACxD,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;gBACzC,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;aACxD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sGAAsG,EAAE,KAAK,IAAI,EAAE;YACpH,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,6CAA6C,CAC9C,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC1B,kDAAkD,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { KeyInput } from \"puppeteer\";\n\nbeforeAll(() => {\n jest.spyOn(console, \"warn\").mockImplementation(jest.fn());\n});\n\nconst options = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n]`;\n\nconst optionsWithDuplicate = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Parent',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 4', value: 'Test value 4' },\n ]\n },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 3 diff label', value: 'Test value 3' },\n]`;\n\nconst largeOptions = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 4', value: 'Test value 4' },\n { label: 'Test label 5', value: 'Test value 5' },\n { label: 'Test label 6', value: 'Test value 6' },\n { label: 'Test label 7', value: 'Test value 7' },\n { label: 'Test label 8', value: 'Test value 8' },\n { label: 'Test label 9', value: 'Test value 9' },\n { label: 'Test label 10', value: 'Test value 10' },\n]`;\n\nconst searchableOptions = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n]`;\n\nconst optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3', disabled: true },\n { label: 'Test label 4', value: 'Test value 4', disabled: true },\n { label: 'Test label 5', value: 'Test value 5' },\n]`;\n\nconst optionsWithGroups = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Group', children: [\n { label: 'Test label 3', value: 'Test value 3' },\n ] },\n]`;\n\nconst getTestSelect = (\n options: string\n) => `<ic-select-with-multi label=\"IC Select Test\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectFormReset = (\n options: string\n) => `<form><ic-select-with-multi label=\"IC Select Test\"></ic-select-with-multi><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectSearchableFormReset = (\n options: string\n) => `<form><ic-select-with-multi label=\"IC Select Test\" searchable></ic-select-with-multi><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${options};\n select.value = 'Test value 1';\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSearchableSelect = (\n options: string\n) => `<ic-select-with-multi label=\"IC Select Test\" searchable></ic-select-with-multi><button>Button</button>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${options};\n </script>`;\n\nconst getTestSearchableSelectAsync = () =>\n `<ic-select-with-multi label=\"IC Select Test\" searchable disable-filter=\"true\" value=\"Test value\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = [];\n window.setTimeout(() => {\n select.options = []\n }, 800)\n </script>`;\n\nconst getTestSelectAsync = (firstDataset: string, secondDataset: string) =>\n `<ic-select-with-multi label=\"IC Select Test\" value=\"Test value\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${firstDataset};\n window.setTimeout(() => {\n select.options = ${secondDataset}\n }, 1500)\n </script>`;\n\nconst getTestMultiSelect = (\n options: string\n) => `<ic-select-with-multi label=\"IC Select Test\" multiple=\"true\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getMenuVisibility = async (page: E2EPage) => {\n return await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"ic-menu-with-multi #ic-select-input-0-menu\");\n return window.getComputedStyle(menu).visibility;\n });\n};\n\nconst focusAndTypeIntoInput = async (value: string, page: E2EPage) => {\n await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n value.split(\"\").forEach(async (char: KeyInput) => {\n await page.keyboard.press(char);\n });\n};\n\ndescribe(\"ic-select-with-multi\", () => {\n describe(\"custom\", () => {\n it(\"should render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should open, set focus on menu and set aria-expanded to 'true' when input clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n expect(select.getAttribute(\"aria-expanded\")).toBeTruthy();\n\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu\");\n });\n\n it(\"should render options correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(3);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n });\n\n it(\"should deduplicate options and warn about duplicate\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(optionsWithDuplicate));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n expect(menuOptions[3]).toEqualText(\"Test label 4\");\n // We can't test for ic-warn being called because it's already called seven times over 'hiddeninputvalue' changing\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n describe(\"when no option is selected\", () => {\n it(\"should open menu, apply focus style on first option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should open menu when Space is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\" \");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu when Enter is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu, apply focus style on last option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should keep menu closed when Backspace, Home, End and Escape are pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"Backspace\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Home\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"End\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Escape\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n });\n\n describe(\"when an option is selected\", () => {\n it(\"should move focus to next option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to first option and set as value when focus is on last option and Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to previous option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to last option and set as value when focus is on first option and Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should move focus to first option and set as value when Home is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowUp\");\n await page.keyboard.press(\"Home\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to last option and set as value when End is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"End\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should display a check next to the selected option and set aria-selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-selected\")).toBeTruthy;\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n expect(firstOption[1].getAttribute(\"aria-selected\")).toBeFalsy;\n expect(await firstOption[1].find(\".check-icon\")).toBeNull;\n });\n\n it(\"should display a check next to the selected option and set aria-selected when a default value is applied\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveAttribute(\"aria-selected\");\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n });\n\n it(\"should display clear button if the 'show-clear-button' prop is supplied and an option is selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n let clearButton = await page.find(\n \"ic-select-with-multi >>> .clear-button\"\n );\n expect(clearButton).toBeNull();\n\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select-with-multi >>> .clear-button\");\n expect(clearButton).toBeNull();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select-with-multi >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n });\n\n it(\"should clear the input if the clear button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let clearButton = await page.find(\n \"ic-select-with-multi >>> .clear-button\"\n );\n await clearButton.click();\n await page.waitForChanges();\n\n expect(select).toEqualText(\"Select an option\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n clearButton = await page.find(\"ic-select-with-multi >>> .clear-button\");\n expect(clearButton).toBe(null);\n });\n });\n\n it(\"should close menu when input is clicked while open and set focus on it\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n await select.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when an option is clicked, set as value and move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n await menu.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 2\",\n });\n expect(select).toEqualText(\"Test label 2\");\n\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Space is pressed and move focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\" \");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Enter is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Escape is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Escape\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when another element on the page is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Tab is pressed to move focus onto the next element on the page\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Shift + Tab is pressed to move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(`${getTestSelect(options)}`);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await page.waitForTimeout(1000);\n\n await page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Shift\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should display the label of the value passed in using the 'value' prop as the selected option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 2\");\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should render options with descriptions\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOptionDescription = await menu.find(\"li .option-description\");\n expect(firstOptionDescription).toEqualText(\"Test description 1\");\n });\n\n it(\"should render the placeholder\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n expect(select).toEqualText(\"Test placeholder\");\n });\n\n it(\"should render as disabled correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n expect(select).toHaveAttribute(\"disabled\");\n\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should prevent click on disabled options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n await menu.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should set aria-disabled and skip focus when option disabled\", async () => {\n const page = await newE2EPage();\n const optionsWithFirstDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithFirstDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions[0]).toHaveAttribute(\"aria-disabled\");\n expect(menuOptions[1]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render as required correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select-with-multi >>> ic-input-label\");\n expect(label).toEqualText(\"IC Select Test *\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n expect(\n select.getAttribute(\"aria-label\").includes(\"required\")\n ).toBeTruthy();\n });\n\n it(\"should render selected value as text when read-only\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render options as groups if they have children\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const optionGroupTitle = await page.find(\n \"ic-select-with-multi >>> ic-menu-with-multi >>> .option-group-title\"\n );\n expect(optionGroupTitle).not.toBeNull();\n\n const optionsText = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"ic-menu-with-multi ic-typography\"),\n (typography) => (typography as HTMLElement).innerText\n )\n );\n expect(optionsText[0]).toBe(\"Test group\");\n });\n\n it(\"should render and focus child options correctly\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const childOptions = await menu.findAll(\"li\");\n expect(childOptions).toHaveLength(3);\n expect(childOptions[0]).toEqualText(\"Test label 1\");\n expect(childOptions[1]).toEqualText(\"Test label 2\");\n expect(childOptions[2]).toEqualText(\"Test label 3\");\n expect(childOptions[0]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render options at the top of the menu if they are recommended\", async () => {\n const page = await newE2EPage();\n const optionsWithRecommended = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2', recommended: true },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithRecommended));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toEqualText(\"Test label 2\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should set the aria-label correctly if an option has a description\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1\"\n );\n });\n\n it(\"should set the aria-label correctly if an option is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test group group\"\n );\n });\n\n it(\"should set the aria-label correctly if an option has a description and is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1, Test group group\"\n );\n });\n\n it(\"should call icFocus when focused\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<button>Test button</button>${getTestSelect(options)}`\n );\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.focus();\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n describe(\"loading\", () => {\n it(\"should display a loading message and then the options when fetching options externally\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select-with-multi label=\"IC Select Test\" loading=\"true\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n setTimeout(() => {\n select.options = [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ];\n }, 1000);\n </script>`);\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Test label 1\");\n\n const icSelect = await page.find(\"ic-select-with-multi\");\n expect(icSelect.getAttribute(\"loading\")).toBeFalsy;\n });\n\n it(\"should display a retry button and a custom loading error when it times out and should not update the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n await page.waitForTimeout(560);\n\n firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n const retryButton = await page.find(\n \"ic-select-with-multi >>> #retry-button\"\n );\n expect(retryButton).not.toBeNull;\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n });\n\n it(\"should focus the retry button on tab and emit icBlur and close the menu when blurring\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n await page.waitForTimeout(560);\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n const icBlur = await page.spyOnEvent(\"icBlur\");\n expect(icBlur).not.toHaveReceivedEvent();\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"retry-button\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should retry loading and keep the menu open when retry button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select-with-multi label=\"IC Select Test\" loading=\"true\" timeout=\"500\"></ic-select-with-multi>\n <script>\n var select = document.querySelector('ic-select-with-multi');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n select.addEventListener('icRetryLoad', function () {\n select.loading = true;\n });\n </script>`);\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n let firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\n \"ic-select-with-multi >>> #retry-button\"\n );\n await retryButton.click();\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should retry loading and keep the menu open when retry button is pressed with Enter\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\" loading=\"true\" options=\"[]\" timeout=\"500\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\n \"ic-select-with-multi >>> #retry-button\"\n );\n await retryButton.press(\"Enter\");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n describe(\"searchable\", () => {\n it(\"should open menu when character is entered in input field and filter options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"c\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n expect(menuOptions[2]).toEqualText(\"Mocha\");\n expect(menuOptions[3]).toEqualText(\"Macchiato\");\n });\n\n it(\"should keep the same options when characters are entered and the menu is reopened\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"foo\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display no results state when search term matches none of the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"z\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should filter options accordingly when Backspace is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"f\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Flat white\");\n });\n\n it(\"should filter options when search match position is set to start\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"search-match-position\", \"start\");\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"c\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n });\n\n it(\"should include option descriptions in search\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\", description: \"A milkier coffee than a cappuccino\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n ]`;\n await page.setContent(getTestSearchableSelect(optionsWithDescription));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"include-descriptions-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"m\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0].textContent.substring(0, 5)).toEqualText(\"Latte\");\n });\n\n it(\"should not include group titles in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display whole group when group titles included in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"include-group-titles-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Latte\");\n });\n\n it(\"should display a clear button which clears the input when clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n let clearButton = await page.find(\n \"ic-select-with-multi >>> .clear-button\"\n );\n expect(clearButton).toBeNull();\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"a\");\n await page.waitForChanges();\n\n clearButton = await page.find(\"ic-select-with-multi >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n\n await clearButton.click();\n expect(select.textContent).toBe(\"\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should emit the value as null when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n const clearButton = await page.find(\n \"ic-select-with-multi >>> .clear-button\"\n );\n await clearButton.click();\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should still filter the options when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n for (let i = 0; i <= 7; i++) {\n select.press(\"Backspace\");\n await page.waitForChanges();\n }\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n });\n\n it(\"should close menu on blur\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await select.press(\"Tab\");\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should emit icChange on delay\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\" debounce=\"500\" searchable></ic-select-with-multi>`\n );\n\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"foo\", page);\n\n await page.waitForTimeout(600);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n\n await focusAndTypeIntoInput(\"bar\", page);\n await page.waitForChanges();\n await page.waitForTimeout(100);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n await page.waitForTimeout(500);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foobar\",\n });\n });\n\n it(\"should update hidden input to value typed in select searchable input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"bar\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"bar\");\n });\n\n it(\"should keep typed in hidden input value when highlighting menu options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"cap\", page);\n\n await page.waitForChanges();\n\n let hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select-with-multi >>> ic-menu-with-multi > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n });\n\n it(\"should update hidden value from typed to selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select-with-multi >>> ic-menu-with-multi > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n });\n\n it(\"should update hidden value from typed to selected to typed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select-with-multi >>> ic-menu-with-multi > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n\n await page.keyboard.press(\"1\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cappuccino1\");\n });\n\n it(\"should update the value of the input and options when passing the value directly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi\");\n select.setAttribute(\"value\", \"foo\");\n\n await page.waitForChanges();\n\n const selectInput = await page.find(\n 'ic-select-with-multi >>> input[role=\"combobox\"]'\n );\n\n expect(await selectInput.getProperty(\"value\")).toBe(\"foo\");\n });\n\n it(\"should trigger icChange on input for each typed value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"f\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"f\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"fo\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n });\n\n it(\"should not trigger icChange on highlighting menu items\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n });\n\n it(\"should not select a menu option when typing into the searchable input field\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Cap\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).not.toHaveClass(\"aria-selected\");\n });\n\n it(\"should not select a menu option when one has previously been set and backspace is pressed\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n\n const options = await menu.findAll(\"li\");\n\n options.forEach((option) => {\n expect(option).not.toHaveClass(\"aria-selected\");\n });\n });\n\n it(\"should display selected option when selecting a menu option and then opening and closing the menu\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.evaluate(() => {\n const button = document.querySelector(\"button\");\n button.focus();\n });\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\"ic-select-with-multi\");\n await select.click();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const latteOption = await menu.find(\"li[data-value='Lat']\");\n\n expect(latteOption).toHaveAttribute(\"aria-selected\");\n });\n\n it(\"hidden input value when on initial load with default value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select-with-multi > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should submit hidden input value when updating value, pressing reset to initial value and then submitting\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select-with-multi > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should scroll menu\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(largeOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n let menuScrollTop = await page.$eval(\"ic-select-with-multi\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu-with-multi ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).toBe(0);\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 1\");\n\n await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n menuScrollTop = await page.$eval(\"ic-select-with-multi\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu-with-multi ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).not.toBe(0);\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowDown\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[0]).not.toHaveClass(\"focused-option\");\n expect(menuItems[1]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowUp\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[menuItems.length - 1]).toHaveClass(\"focused-option\");\n expect(menuItems[menuItems.length - 2]).not.toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select-with-multi\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n });\n\n describe(\"loading\", () => {\n it(\"should retry loading and keep the menu open when retry button is pressed with Spacebar\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\" searchable=\"true\" options=\"[]\" loading=\"true\" timeout=\"500\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\n \"ic-select-with-multi >>> #retry-button\"\n );\n await retryButton.press(\" \");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should cancel loading if the clear button is pressed mid-load\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select-with-multi label=\"IC Select Test\" searchable=\"true\" timeout=\"500\"></ic-select-with-multi>\n <script>\n var select = document.querySelector(\"ic-select-with-multi\");\n select.options = [];\n select.addEventListener(\"icChange\", function() {\n select.loading = \"true\";\n });\n </script>`);\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"c\");\n await page.waitForChanges();\n let firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n const clearButton = await page.find(\n \"ic-select-with-multi >>> .clear-button\"\n );\n await clearButton.click();\n await page.waitForChanges();\n await page.waitForTimeout(560);\n firstOption = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toBeNull;\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n it(\"should reset to initial value on form reset\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n });\n\n it(\"menu should not be visible on initial load if setting default value and disable filter is set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelectAsync());\n await page.waitForChanges();\n await page.waitForTimeout(900);\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should reset to initial value on form reset with searchable\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select-with-multi\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n });\n\n let page: E2EPage;\n\n describe(\"native\", () => {\n beforeEach(async () => {\n page = await newE2EPage();\n await page.setUserAgent(\n \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1\"\n );\n await page.setViewport({\n width: 375,\n height: 667,\n isMobile: true,\n hasTouch: true,\n });\n });\n\n it(\"should render\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render a native select when searchable is applied on mobile\", async () => {\n await page.setContent(getTestSearchableSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n await page.setContent(\n `<ic-select-with-multi label=\"IC Select Test\"></ic-select-with-multi>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should disable options correctly\", async () => {\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const optionsDisabled = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.disabled\n )\n );\n\n expect(optionsDisabled[1]).toBe(true);\n });\n\n it(\"should render options as <optgroup>s if they have children\", async () => {\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const optGroup = await page.evaluate(() =>\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"optgroup\")\n );\n\n expect(optGroup).toBeTruthy();\n });\n\n it(\"should render a required <select> when required\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n\n expect(select).toHaveAttribute(\"required\");\n });\n\n it(\"should not render a label when the 'hide-label' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"hide-label\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select-with-multi >>> ic-input-label\");\n\n expect(label).toBeNull();\n });\n\n it(\"should render a disabled <select> when the 'disabled' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n\n expect(select).toHaveAttribute(\"disabled\");\n });\n\n it(\"should render the selected value as text instead of rendering a <select> when read-only\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render the correct placeholder\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const optionLabels = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.innerText\n )\n );\n\n expect(optionLabels[0]).toEqual(\"Test placeholder\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should display the value passed in using the 'value' prop as the selected option\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const optionsSelected = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.selected\n )\n );\n\n expect(optionsSelected[1]).toBe(true);\n });\n\n it(\"should set the correct name on the hidden input\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"name\", \"Test name\");\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input\");\n const hiddenInputName = await hiddenInput.getProperty(\"name\");\n\n expect(hiddenInputName).toEqual(\"Test name\");\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n it(\"should call icFocus when focused\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should set the 'placeholder' class name if no option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"select\").className\n );\n\n expect(selectClassName).toBe(\"placeholder\");\n });\n\n it(\"should set the text colour to the primary text colour if an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select-with-multi\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"select\").className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should change the text colour to the primary text colour when an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select-with-multi >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"select\").className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should add .menu-scroll to menu components when options height is over 320\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> button.select-input\"\n );\n await select.click();\n await page.waitForChanges();\n\n const menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"ic-menu-with-multi .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n\n it(\"should add .menu-scroll to menu components when options are initially set and then populated with large data set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectAsync(options, largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> button.select-input\"\n );\n await select.click();\n await page.waitForChanges();\n\n let menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"ic-menu-with-multi .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeFalsy();\n\n await page.waitForTimeout(1200);\n\n menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select-with-multi\")\n .shadowRoot.querySelector(\"ic-menu-with-multi .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n });\n\n describe(\"multi\", () => {\n it(\"should emit icChange and icOptionSelect when an option is selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const icOptionSelect = await page.spyOnEvent(\"icOptionSelect\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 1\"],\n });\n expect(icOptionSelect).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n it(\"should deselect an option correctly - emit icChange and icOptionDeselect, and remove check icon and aria-selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const icOptionDeselect = await page.spyOnEvent(\"icOptionDeselect\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n const optionEls = await menu.findAll(\"li\");\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(optionEls[0].getAttribute(\"aria-selected\")).toBeTruthy;\n expect(await optionEls[0].find(\".check-icon\")).not.toBeNull;\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n expect(icOptionDeselect).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n expect(optionEls[0].getAttribute(\"aria-selected\")).toBeFalsy;\n expect(await optionEls[0].find(\".check-icon\")).toBeNull;\n });\n\n it(\"should move focus from menu to 'Select all' button and back again\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n let activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n const activeElClass = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.className\n );\n\n expect(activeElClass).toContain(\"select-all-button\");\n\n await page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Shift\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu\");\n });\n\n it(\"should move focus from option (i.e. when option is highlighted) to 'Select all' button\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const activeElId = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu-Test value 1\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n const activeElClass = await page.$eval(\n \"ic-select-with-multi\",\n (el) => el.shadowRoot.activeElement.className\n );\n\n expect(activeElClass).toContain(\"select-all-button\");\n });\n\n it(\"should emit icChange when the 'Select all' button is pressed, and emit icOptionSelect only for unselected options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 1\"],\n });\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n const icOptionSelect = await page.spyOnEvent(\"icOptionSelect\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 1\", \"Test value 2\", \"Test value 3\"],\n });\n expect(icOptionSelect).toHaveReceivedEventTimes(2);\n });\n\n it(\"should emit icChange when the 'Clear all' button is pressed, and emit icOptionDeselect for all options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const icOptionDeselect = await page.spyOnEvent(\"icOptionDeselect\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.keyboard.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.keyboard.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n expect(icOptionDeselect).toHaveReceivedEventTimes(3);\n });\n\n it(\"should close menu when user tabs off 'Select all' button\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should select and clear all options on Ctrl+A\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.keyboard.down(\"Control\");\n await page.keyboard.press(\"KeyA\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Control\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 1\", \"Test value 2\", \"Test value 3\"],\n });\n\n await page.keyboard.down(\"Control\");\n await page.keyboard.press(\"KeyA\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Control\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should not select disabled options when the 'Select all' button is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 2\", \"Test value 5\"],\n });\n });\n\n it(\"should select all grouped options correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(optionsWithGroups));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: [\"Test value 1\", \"Test value 2\", \"Test value 3\"],\n });\n });\n\n it(\"should not reset focus back to the top of the menu when changing from clicking to using the keyboard\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestMultiSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0\"\n );\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\n \"ic-select-with-multi >>> #ic-select-input-0-menu\"\n );\n await menu.click();\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const optionEls = await menu.findAll(\"li\");\n expect(optionEls[0]).not.toHaveClass(\"focused-option\");\n expect(optionEls[1]).toHaveClass(\"focused-option\");\n });\n });\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icTypographyCss","Typography","constructor","hostRef","this","focusBtnFromKeyboard","inAGGrid","lastMarkerTop","lastWidth","resizeObserver","truncatedHeight","toggleExpanded","ev","stopPropagation","expanded","typographyTruncationExpandToggle","emit","typographyEl","el","checkMarkerPosition","elTop","markerTop","truncated","getElementTop","getClientRects","top","runResizeObserver","ResizeObserver","clearTimeout","resizeInterval","window","setTimeout","resizeObserverCallback","observe","truncWrapperEl","clientWidth","checkMaxLines","clientHeight","marker","truncButtonFocus","truncButtonFocussed","truncButtonBlur","truncButtonFocusFromMouse","applyVerticalMargins","bold","italic","maxLines","undefined","strikethrough","underline","variant","watchExpandedHandler","setAttribute","disconnectedCallback","disconnect","resetTruncation","removeAttribute","componentDidLoad","_a","_b","getRootNode","host","tagName","document","createElement","style","visibility","appendChild","checkResizeObserver","componentWillRender","isElInAGGrid","height","numLines","Math","floor","setShowHideExpanded","render","h","Host","class","ref","focus","onFocus","onBlur","onMouseDown","onClick"],"sources":["../web-components/dist/collection/components/ic-typography/ic-typography.css?tag=ic-typography&encapsulation=shadow","../web-components/dist/collection/components/ic-typography/ic-typography.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n:host {\n display: block;\n position: relative;\n}\n\n:host(.ic-typography-vertical-margins-h1) {\n margin: 0 0 var(--ic-space-xl);\n}\n\n:host(.ic-typography-vertical-margins-h2) {\n margin: var(--ic-space-xxl) 0 var(--ic-space-lg);\n}\n\n:host(.ic-typography-vertical-margins-h3) {\n margin: var(--ic-space-xl) 0 var(--ic-space-md);\n}\n\n:host(.ic-typography-vertical-margins-h4) {\n margin: var(--ic-space-lg) 0 var(--ic-space-md);\n}\n\n:host(.ic-typography-vertical-margins-subtitle-large),\n:host(.ic-typography-vertical-margins-subtitle-small),\n:host(.ic-typography-vertical-margins-body),\n:host(.ic-typography-vertical-margins-code-large),\n:host(.ic-typography-vertical-margins-code-small),\n:host(.ic-typography-vertical-margins-code-extra-small) {\n margin: 0 0 var(--ic-space-md);\n}\n\n:host(.ic-typography-vertical-margins-caption),\n:host(.ic-typography-vertical-margins-caption-uppercase) {\n margin: 0 0 var(--ic-space-xs);\n}\n\n:host(.ic-typography-vertical-margins-h2:first-child),\n:host(.ic-typography-vertical-margins-h3:first-child),\n:host(.ic-typography-vertical-margins-h4:first-child) {\n margin-top: 0;\n}\n\n:host(.ic-typography-h1) {\n font: var(--ic-font-h1) !important;\n}\n\n:host(.ic-typography-h2) {\n font: var(--ic-font-h2);\n letter-spacing: var(--ic-font-letter-spacing-0pt0025);\n}\n\n:host(.ic-typography-h3) {\n font: var(--ic-font-h3);\n}\n\n:host(.ic-typography-h4) {\n font: var(--ic-font-h4);\n letter-spacing: var(--ic-font-letter-spacing-0pt0015);\n}\n\n:host(.ic-typography-subtitle-large) {\n font: var(--ic-font-subtitle-large);\n letter-spacing: var(--ic-font-letter-spacing-0pt0015);\n}\n\n:host(.ic-typography-subtitle-small) {\n font: var(--ic-font-subtitle-small);\n letter-spacing: var(--ic-font-letter-spacing-0pt0015);\n}\n\n:host(.ic-typography-body) {\n font: var(--ic-font-body);\n letter-spacing: var(--ic-font-letter-spacing-0pt005);\n}\n\n:host(.ic-typography-caption) {\n font: var(--ic-font-caption);\n letter-spacing: var(--ic-font-letter-spacing-0pt0025);\n}\n\n:host(.ic-typography-caption-uppercase) {\n font: var(--ic-font-caption);\n letter-spacing: var(--ic-font-letter-spacing-0pt0025);\n text-transform: uppercase;\n}\n\n:host(.ic-typography-label) {\n font: var(--ic-font-label);\n letter-spacing: var(--ic-font-letter-spacing-0pt025);\n}\n\n:host(.ic-typography-label-uppercase) {\n font: var(--ic-font-label);\n letter-spacing: var(--ic-font-letter-spacing-0pt025);\n text-transform: uppercase;\n}\n\n:host(.ic-typography-code-large) {\n font: var(--ic-font-code-large);\n letter-spacing: var(--ic-font-letter-spacing-0pt025);\n}\n\n:host(.ic-typography-code-small) {\n font: var(--ic-font-code-small);\n letter-spacing: var(--ic-font-letter-spacing-0pt005);\n}\n\n:host(.ic-typography-code-extra-small) {\n font: var(--ic-font-code-extra-small);\n letter-spacing: var(--ic-font-letter-spacing-0pt025);\n}\n\n:host(.ic-typography-badge) {\n font: var(--ic-font-badge);\n letter-spacing: var(--ic-font-letter-spacing-0pt0025);\n}\n\n:host(.ic-typography-badge-small) {\n font: var(--ic-font-badge-small);\n letter-spacing: var(--ic-font-letter-spacing-0pt0025);\n}\n\n:host(.ic-typography-no-wrap) {\n white-space: nowrap;\n}\n\n:host ::slotted(h1),\n:host ::slotted(h2),\n:host ::slotted(h3),\n:host ::slotted(h4),\n:host ::slotted(h5),\n:host ::slotted(h6),\n:host ::slotted(p),\n:host ::slotted(label) {\n font: inherit;\n letter-spacing: inherit;\n}\n\n.trunc-wrapper {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n line-clamp: var(--truncation-max-lines, initial);\n -webkit-line-clamp: var(--truncation-max-lines, initial);\n overflow: hidden;\n padding-right: var(--ellipsis-padding-right, 0);\n}\n\n.trunc-btn {\n border: none;\n background: none;\n padding: 0;\n color: var(--ic-color-primary-text);\n text-decoration: underline;\n font-weight: var(--ic-font-weight-bold);\n transition: var(--ic-easing-transition-fast);\n}\n\n.trunc-btn:hover,\n.trunc-btn.focus {\n outline: none;\n border-bottom: 0.25rem solid !important;\n margin-bottom: -0.25rem !important;\n text-decoration: none;\n cursor: pointer;\n}\n\n:host(.strikethrough) {\n text-decoration: line-through;\n}\n\n:host(.underline) {\n text-decoration: underline;\n}\n\n:host(.underline.strikethrough) {\n text-decoration: line-through underline;\n}\n\n:host(.italic) {\n font-style: italic !important;\n}\n\n:host(.bold) {\n font-weight: var(--ic-font-weight-bold);\n}\n\n:host(.in-ag-grid),\n:host(.in-ag-grid) ::slotted(*) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@supports (text-underline-offset: 25%) {\n .trunc-btn:hover,\n .trunc-btn.focus {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n border-bottom: 0 !important;\n margin-bottom: 0 !important;\n }\n}\n\n/* Add back in after storybook has the `color-scheme: light dark` code */\n\n/* @media (prefers-color-scheme: dark) and (not (forced-colors: active)) {\n :host,\n .trunc-btn {\n color: var(--ic-architectural-white);\n }\n} */\n","import { h, Host, } from \"@stencil/core\";\nimport { checkResizeObserver, isElInAGGrid } from \"../../utils/helpers\";\nexport class Typography {\n constructor() {\n this.focusBtnFromKeyboard = true;\n this.inAGGrid = false;\n this.lastMarkerTop = 0;\n this.lastWidth = 0;\n this.resizeObserver = null;\n this.truncatedHeight = 0;\n this.toggleExpanded = (ev) => {\n ev.stopPropagation();\n this.expanded = !this.expanded;\n this.typographyTruncationExpandToggle.emit({\n expanded: this.expanded,\n typographyEl: this.el,\n });\n };\n this.checkMarkerPosition = (elTop, markerTop) => {\n if (markerTop - elTop < this.truncatedHeight) {\n this.truncated = false;\n this.expanded = false;\n }\n else {\n this.truncated = true;\n }\n };\n this.getElementTop = (el) => {\n return el.getClientRects ? el.getClientRects()[0].top : 0;\n };\n this.runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeInterval);\n this.resizeInterval = window.setTimeout(this.resizeObserverCallback, 50);\n });\n this.resizeObserver.observe(this.truncWrapperEl);\n };\n this.resizeObserverCallback = () => {\n if (this.lastWidth === this.el.clientWidth) {\n return;\n }\n if (this.truncatedHeight === 0) {\n this.checkMaxLines(this.el.clientHeight);\n return;\n }\n const markerTop = this.getElementTop(this.marker);\n if (markerTop === this.lastMarkerTop) {\n return;\n }\n this.checkMarkerPosition(this.getElementTop(this.el), markerTop);\n this.lastMarkerTop = markerTop;\n this.lastWidth = this.el.clientWidth;\n };\n this.truncButtonFocus = () => {\n if (this.focusBtnFromKeyboard) {\n this.truncButtonFocussed = true;\n }\n };\n this.truncButtonBlur = () => {\n this.focusBtnFromKeyboard = true;\n this.truncButtonFocussed = false;\n };\n this.truncButtonFocusFromMouse = () => {\n this.focusBtnFromKeyboard = false;\n };\n this.truncated = false;\n this.truncButtonFocussed = false;\n this.applyVerticalMargins = false;\n this.bold = false;\n this.italic = false;\n this.maxLines = undefined;\n this.strikethrough = false;\n this.underline = false;\n this.variant = \"body\";\n this.expanded = false;\n }\n watchExpandedHandler() {\n this.el.setAttribute(\"style\", `--truncation-max-lines: ${this.expanded ? \"initial\" : this.maxLines}`);\n }\n disconnectedCallback() {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n /**\n * @internal This is used by data table to remove all truncation in certain events\n */\n async resetTruncation() {\n if (this.truncated) {\n this.truncated = false;\n this.maxLines = 0;\n this.el.removeAttribute(\"max-lines\");\n this.expanded = false;\n this.el.removeAttribute(\"style\");\n }\n }\n componentDidLoad() {\n var _a, _b;\n if ((this.variant === \"body\" ||\n ((_b = (_a = this.el.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) === null || _b === void 0 ? void 0 : _b.tagName) ===\n \"IC-TOOLTIP\") &&\n this.maxLines > 0) {\n const marker = document.createElement(\"span\");\n marker.style.visibility = \"hidden\";\n this.el.appendChild(marker);\n this.marker = marker;\n this.lastWidth = this.el.clientWidth;\n this.checkMaxLines(this.el.clientHeight);\n checkResizeObserver(this.runResizeObserver);\n }\n }\n componentWillRender() {\n if (isElInAGGrid(this.el)) {\n this.inAGGrid = true;\n }\n }\n /**\n * @internal This checks if the number of lines of text exceeds the maxLines prop. If so, set the line clamp CSS to the max lines\n * @param height - text container height\n */\n async checkMaxLines(height) {\n //24 is the height of a single line\n const numLines = Math.floor(height / 24);\n if (numLines > this.maxLines) {\n this.el.setAttribute(\"style\", `--truncation-max-lines: ${this.maxLines}`);\n this.truncatedHeight = this.el.clientHeight;\n this.truncated = true;\n }\n }\n /**\n * @internal This method makes it possible to set the expanded status of truncated text outside of ic-typography component\n */\n async setShowHideExpanded(expanded) {\n this.expanded = expanded;\n }\n render() {\n var _a, _b;\n const { variant, applyVerticalMargins, maxLines, truncated, expanded, strikethrough, underline, italic, bold, } = this;\n return (h(Host, { class: {\n [`ic-typography-${variant}`]: true,\n [`ic-typography-vertical-margins-${variant}`]: applyVerticalMargins,\n [\"bold\"]: bold,\n [\"italic\"]: italic,\n [\"strikethrough\"]: strikethrough,\n [\"underline\"]: underline,\n [\"in-ag-grid\"]: this.inAGGrid,\n } }, (variant === \"body\" ||\n ((_b = (_a = this.el.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) === null || _b === void 0 ? void 0 : _b.tagName) ===\n \"IC-TOOLTIP\") &&\n maxLines > 0 ? (h(\"div\", { class: \"trunc-wrapper\", ref: (el) => (this.truncWrapperEl = el) }, h(\"slot\", null))) : (h(\"slot\", null)), variant === \"body\" && maxLines > 0 && truncated && (h(\"button\", { class: { \"trunc-btn\": true, focus: this.truncButtonFocussed }, onFocus: this.truncButtonFocus, onBlur: this.truncButtonBlur, onMouseDown: this.truncButtonFocusFromMouse, onClick: this.toggleExpanded }, expanded ? \"See less\" : \"See more\"))));\n }\n static get is() { return \"ic-typography\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"ic-typography.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-typography.css\"]\n };\n }\n static get properties() {\n return {\n \"applyVerticalMargins\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, appropriate top and bottom margins will be applied to the typography.\"\n },\n \"attribute\": \"apply-vertical-margins\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"bold\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the typography will have a bold font weight.\\nNote: This will have no impact on variants that already use an equivalent or higher font weight (h1, h2, and subtitle-large).\"\n },\n \"attribute\": \"bold\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"italic\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the typography will have an italic font style.\"\n },\n \"attribute\": \"italic\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"maxLines\": {\n \"type\": \"number\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The number of lines to display before truncating the text, only used for the 'body' variant.\"\n },\n \"attribute\": \"max-lines\",\n \"reflect\": false\n },\n \"strikethrough\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the typography will have a line through it.\"\n },\n \"attribute\": \"strikethrough\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"underline\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the typography will have a line under it.\"\n },\n \"attribute\": \"underline\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"variant\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcTypographyVariants\",\n \"resolved\": \"\\\"badge\\\" | \\\"badge-small\\\" | \\\"body\\\" | \\\"caption\\\" | \\\"caption-uppercase\\\" | \\\"code-extra-small\\\" | \\\"code-large\\\" | \\\"code-small\\\" | \\\"h1\\\" | \\\"h2\\\" | \\\"h3\\\" | \\\"h4\\\" | \\\"label\\\" | \\\"label-uppercase\\\" | \\\"subtitle-large\\\" | \\\"subtitle-small\\\"\",\n \"references\": {\n \"IcTypographyVariants\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcTypographyVariants\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The ICDS typography style to use.\"\n },\n \"attribute\": \"variant\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"body\\\"\"\n }\n };\n }\n static get states() {\n return {\n \"truncated\": {},\n \"truncButtonFocussed\": {},\n \"expanded\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"typographyTruncationExpandToggle\",\n \"name\": \"typographyTruncationExpandToggle\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emits and event when the typography truncation button has been clicked.\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"{\\n expanded: boolean;\\n typographyEl: HTMLIcTypographyElement;\\n }\",\n \"resolved\": \"{ expanded: boolean; typographyEl: HTMLIcTypographyElement; }\",\n \"references\": {\n \"HTMLIcTypographyElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLIcTypographyElement\"\n }\n }\n }\n }];\n }\n static get methods() {\n return {\n \"resetTruncation\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"This is used by data table to remove all truncation in certain events\"\n }]\n }\n },\n \"checkMaxLines\": {\n \"complexType\": {\n \"signature\": \"(height: number) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"height\",\n \"type\": \"number\",\n \"docs\": \"- text container height\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"This checks if the number of lines of text exceeds the maxLines prop. If so, set the line clamp CSS to the max lines\"\n }, {\n \"name\": \"param\",\n \"text\": \"height - text container height\"\n }]\n }\n },\n \"setShowHideExpanded\": {\n \"complexType\": {\n \"signature\": \"(expanded: boolean) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"expanded\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"This method makes it possible to set the expanded status of truncated text outside of ic-typography component\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"expanded\",\n \"methodName\": \"watchExpandedHandler\"\n }];\n }\n}\n//# sourceMappingURL=ic-typography.js.map\n"],"mappings":"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"}