@swisspost/internet-header 1.5.2 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/cjs/{index-5751975e.js → index-aff25ac1.js} +8 -1
  2. package/dist/cjs/index-aff25ac1.js.map +1 -0
  3. package/dist/cjs/{language.service-41b458b1.js → language.service-167d5a9c.js} +2 -2
  4. package/dist/cjs/{language.service-41b458b1.js.map → language.service-167d5a9c.js.map} +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/loader.cjs.js.map +1 -1
  7. package/dist/cjs/post-klp-login-widget.cjs.entry.js +3 -3
  8. package/dist/cjs/post-language-switch.cjs.entry.js +5 -5
  9. package/dist/cjs/post-logo.cjs.entry.js +2 -2
  10. package/dist/cjs/post-main-navigation.cjs.entry.js +5 -5
  11. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-meta-navigation.cjs.entry.js +2 -2
  13. package/dist/cjs/post-search.cjs.entry.js +19 -2218
  14. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  15. package/dist/cjs/post-skiplinks.cjs.entry.js +4 -4
  16. package/dist/cjs/{store-d0d514fc.js → store-b0284e36.js} +2 -2
  17. package/dist/cjs/{store-d0d514fc.js.map → store-b0284e36.js.map} +1 -1
  18. package/dist/cjs/{svg-icon.component-be93f876.js → svg-icon.component-715db679.js} +2 -2
  19. package/dist/cjs/{svg-icon.component-be93f876.js.map → svg-icon.component-715db679.js.map} +1 -1
  20. package/dist/cjs/{svg-sprite.component-1bd7a058.js → svg-sprite.component-22680222.js} +2 -2
  21. package/dist/cjs/{svg-sprite.component-1bd7a058.js.map → svg-sprite.component-22680222.js.map} +1 -1
  22. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +5 -5
  23. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +3 -3
  24. package/dist/cjs/swisspost-internet-header.cjs.entry.js +15 -16
  25. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  26. package/dist/cjs/swisspost-internet-header.cjs.js +2 -2
  27. package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -1
  28. package/dist/collection/collection-manifest.json +2 -2
  29. package/dist/collection/components/post-internet-header/post-internet-header.js +1 -1
  30. package/dist/collection/components/post-main-navigation/post-main-navigation.js +1 -1
  31. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
  32. package/dist/collection/models/general.model.js.map +1 -1
  33. package/dist/collection/services/config.service.js +3 -3
  34. package/dist/collection/services/config.service.js.map +1 -1
  35. package/dist/collection/services/search/coveo.settings.js +12 -0
  36. package/dist/collection/services/search/coveo.settings.js.map +1 -1
  37. package/dist/collection/services/search/places.service.js +4 -4
  38. package/dist/collection/services/search/places.service.js.map +1 -1
  39. package/dist/collection/services/search/search-utilities.js +0 -13
  40. package/dist/collection/services/search/search-utilities.js.map +1 -1
  41. package/dist/components/post-main-navigation2.js +1 -1
  42. package/dist/components/post-main-navigation2.js.map +1 -1
  43. package/dist/components/post-search2.js +15 -2214
  44. package/dist/components/post-search2.js.map +1 -1
  45. package/dist/components/store.js.map +1 -1
  46. package/dist/components/swisspost-internet-header.js +10 -11
  47. package/dist/components/swisspost-internet-header.js.map +1 -1
  48. package/dist/esm/{index-066666f4.js → index-9351b1b6.js} +8 -1
  49. package/dist/esm/index-9351b1b6.js.map +1 -0
  50. package/dist/esm/{language.service-85d8689e.js → language.service-7aefe1c5.js} +2 -2
  51. package/dist/esm/{language.service-85d8689e.js.map → language.service-7aefe1c5.js.map} +1 -1
  52. package/dist/esm/loader.js +3 -3
  53. package/dist/esm/loader.js.map +1 -1
  54. package/dist/esm/post-klp-login-widget.entry.js +3 -3
  55. package/dist/esm/post-language-switch.entry.js +5 -5
  56. package/dist/esm/post-logo.entry.js +2 -2
  57. package/dist/esm/post-main-navigation.entry.js +5 -5
  58. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  59. package/dist/esm/post-meta-navigation.entry.js +2 -2
  60. package/dist/esm/post-search.entry.js +19 -2218
  61. package/dist/esm/post-search.entry.js.map +1 -1
  62. package/dist/esm/post-skiplinks.entry.js +4 -4
  63. package/dist/esm/{store-837c3490.js → store-f9ce3c4f.js} +2 -2
  64. package/dist/esm/{store-837c3490.js.map → store-f9ce3c4f.js.map} +1 -1
  65. package/dist/esm/{svg-icon.component-e09b4bf9.js → svg-icon.component-cd0942cc.js} +2 -2
  66. package/dist/esm/{svg-icon.component-e09b4bf9.js.map → svg-icon.component-cd0942cc.js.map} +1 -1
  67. package/dist/esm/{svg-sprite.component-cf60303f.js → svg-sprite.component-5ed9c3b8.js} +2 -2
  68. package/dist/esm/{svg-sprite.component-cf60303f.js.map → svg-sprite.component-5ed9c3b8.js.map} +1 -1
  69. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +5 -5
  70. package/dist/esm/swisspost-internet-footer.entry.js +3 -3
  71. package/dist/esm/swisspost-internet-header.entry.js +15 -16
  72. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  73. package/dist/esm/swisspost-internet-header.js +3 -3
  74. package/dist/esm/swisspost-internet-header.js.map +1 -1
  75. package/dist/esm-es5/{index-066666f4.js → index-9351b1b6.js} +1 -1
  76. package/dist/esm-es5/index-9351b1b6.js.map +1 -0
  77. package/dist/esm-es5/{language.service-85d8689e.js → language.service-7aefe1c5.js} +2 -2
  78. package/dist/esm-es5/{language.service-85d8689e.js.map → language.service-7aefe1c5.js.map} +0 -0
  79. package/dist/esm-es5/loader.js +1 -1
  80. package/dist/esm-es5/loader.js.map +1 -1
  81. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  82. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  83. package/dist/esm-es5/post-logo.entry.js +1 -1
  84. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  85. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  86. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  87. package/dist/esm-es5/post-search.entry.js +1 -1
  88. package/dist/esm-es5/post-search.entry.js.map +1 -1
  89. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  90. package/dist/esm-es5/{store-837c3490.js → store-f9ce3c4f.js} +2 -2
  91. package/dist/esm-es5/{store-837c3490.js.map → store-f9ce3c4f.js.map} +1 -1
  92. package/dist/esm-es5/{svg-icon.component-e09b4bf9.js → svg-icon.component-cd0942cc.js} +2 -2
  93. package/dist/esm-es5/{svg-icon.component-e09b4bf9.js.map → svg-icon.component-cd0942cc.js.map} +0 -0
  94. package/dist/esm-es5/{svg-sprite.component-cf60303f.js → svg-sprite.component-5ed9c3b8.js} +2 -2
  95. package/dist/esm-es5/{svg-sprite.component-cf60303f.js.map → svg-sprite.component-5ed9c3b8.js.map} +0 -0
  96. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +1 -1
  97. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  98. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  99. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  100. package/dist/esm-es5/swisspost-internet-header.js +1 -1
  101. package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
  102. package/dist/swisspost-internet-header/{p-1f13dad6.system.entry.js → p-01b80755.system.entry.js} +2 -2
  103. package/dist/swisspost-internet-header/{p-1f13dad6.system.entry.js.map → p-01b80755.system.entry.js.map} +0 -0
  104. package/dist/swisspost-internet-header/{p-7fcba2e7.system.js → p-0342245a.system.js} +2 -2
  105. package/dist/swisspost-internet-header/{p-7fcba2e7.system.js.map → p-0342245a.system.js.map} +1 -1
  106. package/dist/swisspost-internet-header/{p-324563ab.system.js → p-0739e499.system.js} +2 -2
  107. package/dist/swisspost-internet-header/{p-324563ab.system.js.map → p-0739e499.system.js.map} +0 -0
  108. package/dist/swisspost-internet-header/p-3563d113.js +2 -0
  109. package/dist/swisspost-internet-header/{p-ab1dd269.js.map → p-3563d113.js.map} +0 -0
  110. package/dist/swisspost-internet-header/{p-5adcac2a.entry.js → p-3a94f838.entry.js} +2 -2
  111. package/dist/swisspost-internet-header/{p-5adcac2a.entry.js.map → p-3a94f838.entry.js.map} +0 -0
  112. package/dist/swisspost-internet-header/{p-28e6362f.system.entry.js → p-3b6966e6.system.entry.js} +2 -2
  113. package/dist/swisspost-internet-header/{p-28e6362f.system.entry.js.map → p-3b6966e6.system.entry.js.map} +0 -0
  114. package/dist/swisspost-internet-header/{p-66144e99.system.entry.js → p-4fe4ae48.system.entry.js} +2 -2
  115. package/dist/swisspost-internet-header/{p-66144e99.system.entry.js.map → p-4fe4ae48.system.entry.js.map} +0 -0
  116. package/dist/swisspost-internet-header/p-58008c81.system.entry.js +2 -0
  117. package/dist/swisspost-internet-header/p-58008c81.system.entry.js.map +1 -0
  118. package/dist/swisspost-internet-header/{p-84d73529.system.entry.js → p-5c0b352c.system.entry.js} +2 -2
  119. package/dist/swisspost-internet-header/{p-84d73529.system.entry.js.map → p-5c0b352c.system.entry.js.map} +0 -0
  120. package/dist/swisspost-internet-header/{p-5032057e.js → p-61b09b9b.js} +1 -1
  121. package/dist/swisspost-internet-header/p-61b09b9b.js.map +1 -0
  122. package/dist/swisspost-internet-header/{p-812b69b4.entry.js → p-633cde46.entry.js} +2 -2
  123. package/dist/swisspost-internet-header/{p-812b69b4.entry.js.map → p-633cde46.entry.js.map} +0 -0
  124. package/dist/swisspost-internet-header/{p-06649b46.js → p-698793da.js} +2 -2
  125. package/dist/swisspost-internet-header/{p-06649b46.js.map → p-698793da.js.map} +1 -1
  126. package/dist/swisspost-internet-header/{p-2df9df9c.system.entry.js → p-8927c282.system.entry.js} +2 -2
  127. package/dist/swisspost-internet-header/{p-2df9df9c.system.entry.js.map → p-8927c282.system.entry.js.map} +0 -0
  128. package/dist/swisspost-internet-header/{p-ffc59851.system.js → p-89618eab.system.js} +2 -2
  129. package/dist/swisspost-internet-header/{p-ffc59851.system.js.map → p-89618eab.system.js.map} +0 -0
  130. package/dist/swisspost-internet-header/{p-5b22e42c.entry.js → p-91195287.entry.js} +2 -2
  131. package/dist/swisspost-internet-header/{p-5b22e42c.entry.js.map → p-91195287.entry.js.map} +0 -0
  132. package/dist/swisspost-internet-header/{p-26879023.entry.js → p-99f181e3.entry.js} +2 -2
  133. package/dist/swisspost-internet-header/{p-26879023.entry.js.map → p-99f181e3.entry.js.map} +0 -0
  134. package/dist/swisspost-internet-header/{p-77d5e07f.entry.js → p-9c1c05bb.entry.js} +2 -2
  135. package/dist/swisspost-internet-header/{p-77d5e07f.entry.js.map → p-9c1c05bb.entry.js.map} +0 -0
  136. package/dist/swisspost-internet-header/{p-f7c0cf7b.js → p-9cf200bd.js} +2 -2
  137. package/dist/swisspost-internet-header/{p-f7c0cf7b.js.map → p-9cf200bd.js.map} +0 -0
  138. package/dist/swisspost-internet-header/{p-c565414e.entry.js → p-ab97ab9d.entry.js} +2 -2
  139. package/dist/swisspost-internet-header/{p-c565414e.entry.js.map → p-ab97ab9d.entry.js.map} +0 -0
  140. package/dist/swisspost-internet-header/{p-ee119d2e.system.js → p-af58c52f.system.js} +2 -2
  141. package/dist/swisspost-internet-header/{p-ee119d2e.system.js.map → p-af58c52f.system.js.map} +0 -0
  142. package/dist/swisspost-internet-header/{p-2fd9a085.entry.js → p-b52015b1.entry.js} +2 -2
  143. package/dist/swisspost-internet-header/{p-2fd9a085.entry.js.map → p-b52015b1.entry.js.map} +1 -1
  144. package/dist/swisspost-internet-header/{p-17a47667.system.js → p-b9569693.system.js} +2 -2
  145. package/dist/swisspost-internet-header/{p-17a47667.system.js.map → p-b9569693.system.js.map} +1 -1
  146. package/dist/swisspost-internet-header/{p-1b8f9bc8.system.js → p-bd9d660b.system.js} +1 -1
  147. package/dist/swisspost-internet-header/p-bd9d660b.system.js.map +1 -0
  148. package/dist/swisspost-internet-header/p-be9c6d49.entry.js +2 -0
  149. package/dist/swisspost-internet-header/p-be9c6d49.entry.js.map +1 -0
  150. package/dist/swisspost-internet-header/{p-c5f85f6e.system.entry.js → p-c08318d1.system.entry.js} +2 -2
  151. package/dist/swisspost-internet-header/{p-c5f85f6e.system.entry.js.map → p-c08318d1.system.entry.js.map} +1 -1
  152. package/dist/swisspost-internet-header/{p-733756a9.system.entry.js → p-c3c4638a.system.entry.js} +2 -2
  153. package/dist/swisspost-internet-header/{p-733756a9.system.entry.js.map → p-c3c4638a.system.entry.js.map} +0 -0
  154. package/dist/swisspost-internet-header/{p-a6001d1e.js → p-c90a1412.js} +2 -2
  155. package/dist/swisspost-internet-header/{p-a6001d1e.js.map → p-c90a1412.js.map} +0 -0
  156. package/dist/swisspost-internet-header/{p-e2990968.system.entry.js → p-de22cbfa.system.entry.js} +2 -2
  157. package/dist/swisspost-internet-header/{p-e2990968.system.entry.js.map → p-de22cbfa.system.entry.js.map} +0 -0
  158. package/dist/swisspost-internet-header/{p-64cb215a.entry.js → p-e10dce9d.entry.js} +2 -2
  159. package/dist/swisspost-internet-header/{p-64cb215a.entry.js.map → p-e10dce9d.entry.js.map} +0 -0
  160. package/dist/swisspost-internet-header/p-e37f959e.system.entry.js +2 -0
  161. package/dist/swisspost-internet-header/p-e37f959e.system.entry.js.map +1 -0
  162. package/dist/swisspost-internet-header/p-ebf02fa7.entry.js +2 -0
  163. package/dist/swisspost-internet-header/p-ebf02fa7.entry.js.map +1 -0
  164. package/dist/swisspost-internet-header/swisspost-internet-header.css +1 -1
  165. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  166. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
  167. package/dist/swisspost-internet-header/swisspost-internet-header.js +1 -1
  168. package/dist/types/models/general.model.d.ts +1 -1
  169. package/dist/types/services/search/search-utilities.d.ts +0 -6
  170. package/package.json +7 -8
  171. package/dist/cjs/index-5751975e.js.map +0 -1
  172. package/dist/esm/index-066666f4.js.map +0 -1
  173. package/dist/esm-es5/index-066666f4.js.map +0 -1
  174. package/dist/swisspost-internet-header/p-1b8f9bc8.system.js.map +0 -1
  175. package/dist/swisspost-internet-header/p-33ff32c6.entry.js +0 -2
  176. package/dist/swisspost-internet-header/p-33ff32c6.entry.js.map +0 -1
  177. package/dist/swisspost-internet-header/p-38f55161.system.entry.js +0 -2
  178. package/dist/swisspost-internet-header/p-38f55161.system.entry.js.map +0 -1
  179. package/dist/swisspost-internet-header/p-4f39b3a4.system.entry.js +0 -2
  180. package/dist/swisspost-internet-header/p-4f39b3a4.system.entry.js.map +0 -1
  181. package/dist/swisspost-internet-header/p-5032057e.js.map +0 -1
  182. package/dist/swisspost-internet-header/p-908c0350.entry.js +0 -2
  183. package/dist/swisspost-internet-header/p-908c0350.entry.js.map +0 -1
  184. package/dist/swisspost-internet-header/p-ab1dd269.js +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"names":["getTrackAndTraceApiUrl","id","lang","state","currentLanguage","concat","encodeURIComponent","getTrackAndTraceRedirectUrl","query","_q","packageTrackingRedirectUrl","replace","isParcel","searchConfig","__awaiter","_this","getParcelInfo","parcelInfo","sent","ok","redirectPattern","trackingNrPattern","RegExp","test","fetch","trackAndTraceReqest","_r","json","trackAndTraceResult","Object","assign","console","warn","error_1","message","timestamp","Date","toDateString","getParcelSuggestion","url","getSearchRedirectUrl","isTrackTraceId","getSearchPageUrl","_a","localizedConfig","header","search","undefined","searchPageUrl","searchParam","equalizeArrays","arrayA","arrayB","maxLength","coveoSliced","slice","Math","max","length","coveo","environment","prod","organisation","token","int01","int02","getCoveoSuggestions","_b","config","searchHubName","searchPipelineName","method","headers","Authorization","coveoResponse","coveoJSON","coveoCompletions","completions","map","completion","redirectUrl","expression","error","gisAPIUrl","placesUrl","pois","escapeStringRegexp","string","TypeError","replacements","doCustomReplacements","_i","replacements_1","key","value","transliterate","options","__assign","customReplacements","Map","__spreadArray","builtinReplacements","normalize","overridableReplacements","decamelize","removeMootSeparators","separator","escapedSeparator","buildPatternSlug","negationSetPattern","lowercase","preserveCharacters","character","Error","slugify","preserveLeadingUnderscore","preserveTrailingDash","shouldPrependUnderscore","startsWith","shouldAppendDash","endsWith","builtinOverridableReplacements","patternSlug","toLowerCase","hardNormalize","str","createSlug","fragment","typesCache","convertTypes","typesResponse","typesJSON_1","poi","foundType","types","find","type","tag","filter","join","error_3","queryPlaces","limit","excludeTypes","geocoderUrl","geocodeResponse","geocodeJSON","info","locations","location","includes","error_4","highlightPlacesString","place","reference","q","indexOfQuery","indexOf","substring","getPlacesUrl","name","HighlightedText","props","highlightClass","highlightedString","text","h","innerHTML","postSearchCss","PostSearch","exports","class_1","prototype","connectedCallback","this","throttledResize","throttle","handleResize","window","addEventListener","passive","disconnectedCallback","removeEventListener","clearAllBodyScrollLocks","componentWillUpdate","searchFlyout","searchDropdownOpen","classList","remove","elementHasTransition","userPrefersReducedMotion","Promise","resolve","event","propertyName","componentDidUpdate","getBoundingClientRect","add","searchBox","focus","preventScroll","toggleDropdown","force","dropdownToggled","emit","open","element","host","coveoSuggestions","placeSuggestions","setFocus","setBodyScroll","shadowRoot","toggleButton","querySelector","innerWidth","disableBodyScroll","enableBodyScroll","handleSearchInput","trim","all","_s","trackAndTraceInfo","parcelSuggestion","deselectSuggestion","handleKeyDown","selectedSuggestion","selectedHref","getAttribute","href","startSearch","suggestions","querySelectorAll","parentElement","nextElementSibling","firstElementChild","_d","_c","previousElementSibling","suggestedText","dataset","suggestionText","handleMouseEnterSuggestion","target","handleMouseLeaveSuggestions","render","translations","showPortalRecommendations","searchRecommendations","links","Host","SvgSprite","class","onClick","e","searchToggleExpanded","searchToggle","SvgIcon","If","condition","ref","placeholder","flyoutSearchBoxFloatingLabel","autocomplete","el","onInput","onKeyDown","htmlFor","searchSubmit","title","onMouseLeave","recommendation","URL","label","onMouseEnter","inlineSvg","_f","_e","sending","_h","_g","product","_k","_j","recipient","zipcode","_m","_l","city","_p","_o","suggestion","objectId","highlighted"],"sources":["src/services/search/parcel.service.ts","src/services/search/search.service.ts","src/services/search/coveo.settings.ts","src/services/search/coveo.service.ts","src/services/search/places.settings.ts","../../node_modules/.pnpm/escape-string-regexp@5.0.0/node_modules/escape-string-regexp/index.js","../../node_modules/.pnpm/@sindresorhus+transliterate@1.6.0/node_modules/@sindresorhus/transliterate/replacements.js","../../node_modules/.pnpm/@sindresorhus+transliterate@1.6.0/node_modules/@sindresorhus/transliterate/index.js","../../node_modules/.pnpm/@sindresorhus+slugify@2.2.0/node_modules/@sindresorhus/slugify/overridable-replacements.js","../../node_modules/.pnpm/@sindresorhus+slugify@2.2.0/node_modules/@sindresorhus/slugify/index.js","src/services/search/search-utilities.ts","src/services/search/places.service.ts","src/utils/highlighted.component.tsx","src/components/post-search/post-search.scss?tag=post-search&encapsulation=shadow","src/components/post-search/post-search.tsx"],"sourcesContent":["import { state } from '../../data/store';\nimport { ISearchConfig } from '../../models/header.model';\nimport { TrackAndTraceInfo } from '../../models/track-and-trace.model';\n\n// https://www.post.ch/api/trackandtrace?id=99.00.306600.01004883\n\n// Track and trace URL\nexport const getTrackAndTraceApiUrl = (id: string) => {\n const lang = state.currentLanguage;\n return `https://www.post.ch/${lang}/api/trackandtrace?id=${encodeURIComponent(id)}`;\n};\n\n// Get the redire\nexport const getTrackAndTraceRedirectUrl = (\n query: string,\n { packageTrackingRedirectUrl }: ISearchConfig,\n) => {\n return packageTrackingRedirectUrl.replace('{trackingNumber}', encodeURIComponent(query));\n};\n\n/**\n * Check whether a query is a tracking id\n *\n * @param query User query\n * @returns Boolean\n */\nexport const isParcel = async (query: string, searchConfig: ISearchConfig): Promise<boolean> => {\n const parcelInfo = await getParcelInfo(query, searchConfig);\n return parcelInfo.ok;\n};\n\n/**\n * Try to get parcel info from a query that is possibly a tracking id.\n * This is mainly used to check if a search should redirect to track&trace instead of the regular search.\n *\n * @param query User query that is possibly a tracking number\n * @returns Track and trace info\n */\nexport const getParcelInfo = async (\n query: string,\n { redirectPattern }: ISearchConfig,\n): Promise<TrackAndTraceInfo> => {\n const trackingNrPattern = new RegExp(redirectPattern);\n\n if (trackingNrPattern.test(query)) {\n try {\n const trackAndTraceReqest = await fetch(getTrackAndTraceApiUrl(query));\n const trackAndTraceResult = await trackAndTraceReqest.json();\n return { ...trackAndTraceResult, ok: trackAndTraceResult.ok === 'true' };\n } catch (error) {\n console.warn(`Could not check track and trace API due to error: ${error.message}`);\n }\n }\n\n return { ok: false, timestamp: new Date().toDateString() };\n};\n\n/**\n * Get parcel info if query is a parcel or null\n *\n * @param query Parcel id\n * @returns Parcel info and a redirect url or null if not a parcel\n */\nexport const getParcelSuggestion = async (\n query: string,\n searchConfig: ISearchConfig,\n): Promise<(TrackAndTraceInfo & { url: string }) | null> => {\n const parcelInfo = await getParcelInfo(query, searchConfig);\n return parcelInfo.ok\n ? { ...parcelInfo, url: getTrackAndTraceRedirectUrl(query, searchConfig) }\n : null;\n};\n","import { state } from '../../data/store';\nimport { ISearchConfig } from '../../models/header.model';\nimport { getTrackAndTraceRedirectUrl, isParcel } from './parcel.service';\n\n/**\n * Construct a search page url from a query\n *\n * @param query Search term\n * @returns\n */\nexport const getSearchRedirectUrl = async (\n query: string,\n searchConfig: ISearchConfig,\n): Promise<string | undefined> => {\n const isTrackTraceId = await isParcel(query, searchConfig);\n return isTrackTraceId\n ? getTrackAndTraceRedirectUrl(query, searchConfig)\n : getSearchPageUrl(query);\n};\n\n/**\n * Stitch toghether the search page URL\n *\n * @param query Search term\n * @returns Search page URL\n */\nexport const getSearchPageUrl = (query: string): string | undefined => {\n if (state.localizedConfig?.header.search === undefined) {\n return;\n }\n const { searchPageUrl } = state.localizedConfig.header.search;\n const searchParam = `#q=${encodeURIComponent(query)}`;\n return `${searchPageUrl}${searchParam}&t=AllTab`;\n};\n\n/**\n * Equalize the length of two arrays while filling up empty slots up to max. length\n *\n * @param arrayA First array\n * @param arrayB Second array\n * @param maxLength Max. length of result array\n * @returns Array with two resulting arrays\n */\nexport const equalizeArrays = <A, B>(arrayA: A[], arrayB: B[], maxLength = 8): [A[], B[]] => {\n const coveoSliced = arrayA.slice(0, Math.max(maxLength / 2, maxLength - arrayB.length));\n return [coveoSliced, arrayB.slice(0, maxLength - coveoSliced.length)];\n};\n","import { CoveoOptions } from '../../models/coveo.model';\n\n// Coveo constants\nexport const coveo: CoveoOptions = {\n url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',\n environment: {\n prod: {\n organisation: 'postchagprod6ef4sbet',\n token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',\n },\n int01: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n int02: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n },\n};\n","import { state } from '../../data/store';\nimport { CoveoCompletion, CoveoResponse } from '../../models/coveo.model';\nimport { coveo } from './coveo.settings';\nimport { getSearchPageUrl } from './search.service';\n\n/**\n * Get suggestions from coveo\n * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object\n *\n * @param query Search term\n * @returns\n */\nexport const getCoveoSuggestions = async (query: string): Promise<CoveoCompletion[]> => {\n if (state.localizedConfig?.header?.search === undefined) return [];\n const config = state.localizedConfig.header.search;\n const { token, organisation } = coveo.environment[state.environment];\n const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;\n let coveoCompletions: CoveoCompletion[] | undefined;\n\n try {\n const coveoResponse = await fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n const coveoJSON = (await coveoResponse.json()) as CoveoResponse;\n coveoCompletions = coveoJSON.completions.map(completion => ({\n ...completion,\n redirectUrl: getSearchPageUrl(completion.expression),\n }));\n } catch (error) {\n console.error(\n 'Connection to coveo failed. Did you add \"*.coveo.com\" to your connect-src content security policy and tried turning off your adblocker?',\n );\n }\n\n return coveoCompletions === undefined ? [] : coveoCompletions;\n};\n","// Implement some TOPOS logic into the header search\nexport const gisAPIUrl = 'https://places.post.ch/StandortSuche/StaoCacheService';\nexport const placesUrl = 'https://places.post.ch';\nexport const pois = [\n '001PST',\n '001MP24',\n '001AG-PICK',\n '001PFFIL',\n '001PFST',\n '001BZ',\n '001LZB',\n '001PZ',\n '001LZP',\n '001AL',\n];\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","const replacements = [\n\t// German umlauts\n\t['ß', 'ss'],\n\t['ẞ', 'Ss'],\n\t['ä', 'ae'],\n\t['Ä', 'Ae'],\n\t['ö', 'oe'],\n\t['Ö', 'Oe'],\n\t['ü', 'ue'],\n\t['Ü', 'Ue'],\n\n\t// Latin\n\t['À', 'A'],\n\t['Á', 'A'],\n\t['Â', 'A'],\n\t['Ã', 'A'],\n\t['Ä', 'Ae'],\n\t['Å', 'A'],\n\t['Æ', 'AE'],\n\t['Ç', 'C'],\n\t['È', 'E'],\n\t['É', 'E'],\n\t['Ê', 'E'],\n\t['Ë', 'E'],\n\t['Ì', 'I'],\n\t['Í', 'I'],\n\t['Î', 'I'],\n\t['Ï', 'I'],\n\t['Ð', 'D'],\n\t['Ñ', 'N'],\n\t['Ò', 'O'],\n\t['Ó', 'O'],\n\t['Ô', 'O'],\n\t['Õ', 'O'],\n\t['Ö', 'Oe'],\n\t['Ő', 'O'],\n\t['Ø', 'O'],\n\t['Ù', 'U'],\n\t['Ú', 'U'],\n\t['Û', 'U'],\n\t['Ü', 'Ue'],\n\t['Ű', 'U'],\n\t['Ý', 'Y'],\n\t['Þ', 'TH'],\n\t['ß', 'ss'],\n\t['à', 'a'],\n\t['á', 'a'],\n\t['â', 'a'],\n\t['ã', 'a'],\n\t['ä', 'ae'],\n\t['å', 'a'],\n\t['æ', 'ae'],\n\t['ç', 'c'],\n\t['è', 'e'],\n\t['é', 'e'],\n\t['ê', 'e'],\n\t['ë', 'e'],\n\t['ì', 'i'],\n\t['í', 'i'],\n\t['î', 'i'],\n\t['ï', 'i'],\n\t['ð', 'd'],\n\t['ñ', 'n'],\n\t['ò', 'o'],\n\t['ó', 'o'],\n\t['ô', 'o'],\n\t['õ', 'o'],\n\t['ö', 'oe'],\n\t['ő', 'o'],\n\t['ø', 'o'],\n\t['ù', 'u'],\n\t['ú', 'u'],\n\t['û', 'u'],\n\t['ü', 'ue'],\n\t['ű', 'u'],\n\t['ý', 'y'],\n\t['þ', 'th'],\n\t['ÿ', 'y'],\n\t['ẞ', 'SS'],\n\n\t// Vietnamese\n\t['à', 'a'],\n\t['À', 'A'],\n\t['á', 'a'],\n\t['Á', 'A'],\n\t['â', 'a'],\n\t['Â', 'A'],\n\t['ã', 'a'],\n\t['Ã', 'A'],\n\t['è', 'e'],\n\t['È', 'E'],\n\t['é', 'e'],\n\t['É', 'E'],\n\t['ê', 'e'],\n\t['Ê', 'E'],\n\t['ì', 'i'],\n\t['Ì', 'I'],\n\t['í', 'i'],\n\t['Í', 'I'],\n\t['ò', 'o'],\n\t['Ò', 'O'],\n\t['ó', 'o'],\n\t['Ó', 'O'],\n\t['ô', 'o'],\n\t['Ô', 'O'],\n\t['õ', 'o'],\n\t['Õ', 'O'],\n\t['ù', 'u'],\n\t['Ù', 'U'],\n\t['ú', 'u'],\n\t['Ú', 'U'],\n\t['ý', 'y'],\n\t['Ý', 'Y'],\n\t['ă', 'a'],\n\t['Ă', 'A'],\n\t['Đ', 'D'],\n\t['đ', 'd'],\n\t['ĩ', 'i'],\n\t['Ĩ', 'I'],\n\t['ũ', 'u'],\n\t['Ũ', 'U'],\n\t['ơ', 'o'],\n\t['Ơ', 'O'],\n\t['ư', 'u'],\n\t['Ư', 'U'],\n\t['ạ', 'a'],\n\t['Ạ', 'A'],\n\t['ả', 'a'],\n\t['Ả', 'A'],\n\t['ấ', 'a'],\n\t['Ấ', 'A'],\n\t['ầ', 'a'],\n\t['Ầ', 'A'],\n\t['ẩ', 'a'],\n\t['Ẩ', 'A'],\n\t['ẫ', 'a'],\n\t['Ẫ', 'A'],\n\t['ậ', 'a'],\n\t['Ậ', 'A'],\n\t['ắ', 'a'],\n\t['Ắ', 'A'],\n\t['ằ', 'a'],\n\t['Ằ', 'A'],\n\t['ẳ', 'a'],\n\t['Ẳ', 'A'],\n\t['ẵ', 'a'],\n\t['Ẵ', 'A'],\n\t['ặ', 'a'],\n\t['Ặ', 'A'],\n\t['ẹ', 'e'],\n\t['Ẹ', 'E'],\n\t['ẻ', 'e'],\n\t['Ẻ', 'E'],\n\t['ẽ', 'e'],\n\t['Ẽ', 'E'],\n\t['ế', 'e'],\n\t['Ế', 'E'],\n\t['ề', 'e'],\n\t['Ề', 'E'],\n\t['ể', 'e'],\n\t['Ể', 'E'],\n\t['ễ', 'e'],\n\t['Ễ', 'E'],\n\t['ệ', 'e'],\n\t['Ệ', 'E'],\n\t['ỉ', 'i'],\n\t['Ỉ', 'I'],\n\t['ị', 'i'],\n\t['Ị', 'I'],\n\t['ọ', 'o'],\n\t['Ọ', 'O'],\n\t['ỏ', 'o'],\n\t['Ỏ', 'O'],\n\t['ố', 'o'],\n\t['Ố', 'O'],\n\t['ồ', 'o'],\n\t['Ồ', 'O'],\n\t['ổ', 'o'],\n\t['Ổ', 'O'],\n\t['ỗ', 'o'],\n\t['Ỗ', 'O'],\n\t['ộ', 'o'],\n\t['Ộ', 'O'],\n\t['ớ', 'o'],\n\t['Ớ', 'O'],\n\t['ờ', 'o'],\n\t['Ờ', 'O'],\n\t['ở', 'o'],\n\t['Ở', 'O'],\n\t['ỡ', 'o'],\n\t['Ỡ', 'O'],\n\t['ợ', 'o'],\n\t['Ợ', 'O'],\n\t['ụ', 'u'],\n\t['Ụ', 'U'],\n\t['ủ', 'u'],\n\t['Ủ', 'U'],\n\t['ứ', 'u'],\n\t['Ứ', 'U'],\n\t['ừ', 'u'],\n\t['Ừ', 'U'],\n\t['ử', 'u'],\n\t['Ử', 'U'],\n\t['ữ', 'u'],\n\t['Ữ', 'U'],\n\t['ự', 'u'],\n\t['Ự', 'U'],\n\t['ỳ', 'y'],\n\t['Ỳ', 'Y'],\n\t['ỵ', 'y'],\n\t['Ỵ', 'Y'],\n\t['ỷ', 'y'],\n\t['Ỷ', 'Y'],\n\t['ỹ', 'y'],\n\t['Ỹ', 'Y'],\n\n\t// Arabic\n\t['ء', 'e'],\n\t['آ', 'a'],\n\t['أ', 'a'],\n\t['ؤ', 'w'],\n\t['إ', 'i'],\n\t['ئ', 'y'],\n\t['ا', 'a'],\n\t['ب', 'b'],\n\t['ة', 't'],\n\t['ت', 't'],\n\t['ث', 'th'],\n\t['ج', 'j'],\n\t['ح', 'h'],\n\t['خ', 'kh'],\n\t['د', 'd'],\n\t['ذ', 'dh'],\n\t['ر', 'r'],\n\t['ز', 'z'],\n\t['س', 's'],\n\t['ش', 'sh'],\n\t['ص', 's'],\n\t['ض', 'd'],\n\t['ط', 't'],\n\t['ظ', 'z'],\n\t['ع', 'e'],\n\t['غ', 'gh'],\n\t['ـ', '_'],\n\t['ف', 'f'],\n\t['ق', 'q'],\n\t['ك', 'k'],\n\t['ل', 'l'],\n\t['م', 'm'],\n\t['ن', 'n'],\n\t['ه', 'h'],\n\t['و', 'w'],\n\t['ى', 'a'],\n\t['ي', 'y'],\n\t['َ‎', 'a'],\n\t['ُ', 'u'],\n\t['ِ‎', 'i'],\n\t['٠', '0'],\n\t['١', '1'],\n\t['٢', '2'],\n\t['٣', '3'],\n\t['٤', '4'],\n\t['٥', '5'],\n\t['٦', '6'],\n\t['٧', '7'],\n\t['٨', '8'],\n\t['٩', '9'],\n\n\t// Persian / Farsi\n\t['چ', 'ch'],\n\t['ک', 'k'],\n\t['گ', 'g'],\n\t['پ', 'p'],\n\t['ژ', 'zh'],\n\t['ی', 'y'],\n\t['۰', '0'],\n\t['۱', '1'],\n\t['۲', '2'],\n\t['۳', '3'],\n\t['۴', '4'],\n\t['۵', '5'],\n\t['۶', '6'],\n\t['۷', '7'],\n\t['۸', '8'],\n\t['۹', '9'],\n\n\t// Pashto\n\t['ټ', 'p'],\n\t['ځ', 'z'],\n\t['څ', 'c'],\n\t['ډ', 'd'],\n\t['ﺫ', 'd'],\n\t['ﺭ', 'r'],\n\t['ړ', 'r'],\n\t['ﺯ', 'z'],\n\t['ږ', 'g'],\n\t['ښ', 'x'],\n\t['ګ', 'g'],\n\t['ڼ', 'n'],\n\t['ۀ', 'e'],\n\t['ې', 'e'],\n\t['ۍ', 'ai'],\n\n\t// Urdu\n\t['ٹ', 't'],\n\t['ڈ', 'd'],\n\t['ڑ', 'r'],\n\t['ں', 'n'],\n\t['ہ', 'h'],\n\t['ھ', 'h'],\n\t['ے', 'e'],\n\n\t// Russian\n\t['А', 'A'],\n\t['а', 'a'],\n\t['Б', 'B'],\n\t['б', 'b'],\n\t['В', 'V'],\n\t['в', 'v'],\n\t['Г', 'G'],\n\t['г', 'g'],\n\t['Д', 'D'],\n\t['д', 'd'],\n\t['ъе', 'ye'],\n\t['Ъе', 'Ye'],\n\t['ъЕ', 'yE'],\n\t['ЪЕ', 'YE'],\n\t['Е', 'E'],\n\t['е', 'e'],\n\t['Ё', 'Yo'],\n\t['ё', 'yo'],\n\t['Ж', 'Zh'],\n\t['ж', 'zh'],\n\t['З', 'Z'],\n\t['з', 'z'],\n\t['И', 'I'],\n\t['и', 'i'],\n\t['ый', 'iy'],\n\t['Ый', 'Iy'],\n\t['ЫЙ', 'IY'],\n\t['ыЙ', 'iY'],\n\t['Й', 'Y'],\n\t['й', 'y'],\n\t['К', 'K'],\n\t['к', 'k'],\n\t['Л', 'L'],\n\t['л', 'l'],\n\t['М', 'M'],\n\t['м', 'm'],\n\t['Н', 'N'],\n\t['н', 'n'],\n\t['О', 'O'],\n\t['о', 'o'],\n\t['П', 'P'],\n\t['п', 'p'],\n\t['Р', 'R'],\n\t['р', 'r'],\n\t['С', 'S'],\n\t['с', 's'],\n\t['Т', 'T'],\n\t['т', 't'],\n\t['У', 'U'],\n\t['у', 'u'],\n\t['Ф', 'F'],\n\t['ф', 'f'],\n\t['Х', 'Kh'],\n\t['х', 'kh'],\n\t['Ц', 'Ts'],\n\t['ц', 'ts'],\n\t['Ч', 'Ch'],\n\t['ч', 'ch'],\n\t['Ш', 'Sh'],\n\t['ш', 'sh'],\n\t['Щ', 'Sch'],\n\t['щ', 'sch'],\n\t['Ъ', ''],\n\t['ъ', ''],\n\t['Ы', 'Y'],\n\t['ы', 'y'],\n\t['Ь', ''],\n\t['ь', ''],\n\t['Э', 'E'],\n\t['э', 'e'],\n\t['Ю', 'Yu'],\n\t['ю', 'yu'],\n\t['Я', 'Ya'],\n\t['я', 'ya'],\n\n\t// Romanian\n\t['ă', 'a'],\n\t['Ă', 'A'],\n\t['ș', 's'],\n\t['Ș', 'S'],\n\t['ț', 't'],\n\t['Ț', 'T'],\n\t['ţ', 't'],\n\t['Ţ', 'T'],\n\n\t// Turkish\n\t['ş', 's'],\n\t['Ş', 'S'],\n\t['ç', 'c'],\n\t['Ç', 'C'],\n\t['ğ', 'g'],\n\t['Ğ', 'G'],\n\t['ı', 'i'],\n\t['İ', 'I'],\n\n\t// Armenian\n\t['ա', 'a'],\n\t['Ա', 'A'],\n\t['բ', 'b'],\n\t['Բ', 'B'],\n\t['գ', 'g'],\n\t['Գ', 'G'],\n\t['դ', 'd'],\n\t['Դ', 'D'],\n\t['ե', 'ye'],\n\t['Ե', 'Ye'],\n\t['զ', 'z'],\n\t['Զ', 'Z'],\n\t['է', 'e'],\n\t['Է', 'E'],\n\t['ը', 'y'],\n\t['Ը', 'Y'],\n\t['թ', 't'],\n\t['Թ', 'T'],\n\t['ժ', 'zh'],\n\t['Ժ', 'Zh'],\n\t['ի', 'i'],\n\t['Ի', 'I'],\n\t['լ', 'l'],\n\t['Լ', 'L'],\n\t['խ', 'kh'],\n\t['Խ', 'Kh'],\n\t['ծ', 'ts'],\n\t['Ծ', 'Ts'],\n\t['կ', 'k'],\n\t['Կ', 'K'],\n\t['հ', 'h'],\n\t['Հ', 'H'],\n\t['ձ', 'dz'],\n\t['Ձ', 'Dz'],\n\t['ղ', 'gh'],\n\t['Ղ', 'Gh'],\n\t['ճ', 'tch'],\n\t['Ճ', 'Tch'],\n\t['մ', 'm'],\n\t['Մ', 'M'],\n\t['յ', 'y'],\n\t['Յ', 'Y'],\n\t['ն', 'n'],\n\t['Ն', 'N'],\n\t['շ', 'sh'],\n\t['Շ', 'Sh'],\n\t['ո', 'vo'],\n\t['Ո', 'Vo'],\n\t['չ', 'ch'],\n\t['Չ', 'Ch'],\n\t['պ', 'p'],\n\t['Պ', 'P'],\n\t['ջ', 'j'],\n\t['Ջ', 'J'],\n\t['ռ', 'r'],\n\t['Ռ', 'R'],\n\t['ս', 's'],\n\t['Ս', 'S'],\n\t['վ', 'v'],\n\t['Վ', 'V'],\n\t['տ', 't'],\n\t['Տ', 'T'],\n\t['ր', 'r'],\n\t['Ր', 'R'],\n\t['ց', 'c'],\n\t['Ց', 'C'],\n\t['ու', 'u'],\n\t['ՈՒ', 'U'],\n\t['Ու', 'U'],\n\t['փ', 'p'],\n\t['Փ', 'P'],\n\t['ք', 'q'],\n\t['Ք', 'Q'],\n\t['օ', 'o'],\n\t['Օ', 'O'],\n\t['ֆ', 'f'],\n\t['Ֆ', 'F'],\n\t['և', 'yev'],\n\n\t// Georgian\n\t['ა', 'a'],\n\t['ბ', 'b'],\n\t['გ', 'g'],\n\t['დ', 'd'],\n\t['ე', 'e'],\n\t['ვ', 'v'],\n\t['ზ', 'z'],\n\t['თ', 't'],\n\t['ი', 'i'],\n\t['კ', 'k'],\n\t['ლ', 'l'],\n\t['მ', 'm'],\n\t['ნ', 'n'],\n\t['ო', 'o'],\n\t['პ', 'p'],\n\t['ჟ', 'zh'],\n\t['რ', 'r'],\n\t['ს', 's'],\n\t['ტ', 't'],\n\t['უ', 'u'],\n\t['ფ', 'ph'],\n\t['ქ', 'q'],\n\t['ღ', 'gh'],\n\t['ყ', 'k'],\n\t['შ', 'sh'],\n\t['ჩ', 'ch'],\n\t['ც', 'ts'],\n\t['ძ', 'dz'],\n\t['წ', 'ts'],\n\t['ჭ', 'tch'],\n\t['ხ', 'kh'],\n\t['ჯ', 'j'],\n\t['ჰ', 'h'],\n\n\t// Czech\n\t['č', 'c'],\n\t['ď', 'd'],\n\t['ě', 'e'],\n\t['ň', 'n'],\n\t['ř', 'r'],\n\t['š', 's'],\n\t['ť', 't'],\n\t['ů', 'u'],\n\t['ž', 'z'],\n\t['Č', 'C'],\n\t['Ď', 'D'],\n\t['Ě', 'E'],\n\t['Ň', 'N'],\n\t['Ř', 'R'],\n\t['Š', 'S'],\n\t['Ť', 'T'],\n\t['Ů', 'U'],\n\t['Ž', 'Z'],\n\n\t// Dhivehi\n\t['ހ', 'h'],\n\t['ށ', 'sh'],\n\t['ނ', 'n'],\n\t['ރ', 'r'],\n\t['ބ', 'b'],\n\t['ޅ', 'lh'],\n\t['ކ', 'k'],\n\t['އ', 'a'],\n\t['ވ', 'v'],\n\t['މ', 'm'],\n\t['ފ', 'f'],\n\t['ދ', 'dh'],\n\t['ތ', 'th'],\n\t['ލ', 'l'],\n\t['ގ', 'g'],\n\t['ޏ', 'gn'],\n\t['ސ', 's'],\n\t['ޑ', 'd'],\n\t['ޒ', 'z'],\n\t['ޓ', 't'],\n\t['ޔ', 'y'],\n\t['ޕ', 'p'],\n\t['ޖ', 'j'],\n\t['ޗ', 'ch'],\n\t['ޘ', 'tt'],\n\t['ޙ', 'hh'],\n\t['ޚ', 'kh'],\n\t['ޛ', 'th'],\n\t['ޜ', 'z'],\n\t['ޝ', 'sh'],\n\t['ޞ', 's'],\n\t['ޟ', 'd'],\n\t['ޠ', 't'],\n\t['ޡ', 'z'],\n\t['ޢ', 'a'],\n\t['ޣ', 'gh'],\n\t['ޤ', 'q'],\n\t['ޥ', 'w'],\n\t['ަ', 'a'],\n\t['ާ', 'aa'],\n\t['ި', 'i'],\n\t['ީ', 'ee'],\n\t['ު', 'u'],\n\t['ޫ', 'oo'],\n\t['ެ', 'e'],\n\t['ޭ', 'ey'],\n\t['ޮ', 'o'],\n\t['ޯ', 'oa'],\n\t['ް', ''],\n\n\t// Greek\n\t['α', 'a'],\n\t['β', 'v'],\n\t['γ', 'g'],\n\t['δ', 'd'],\n\t['ε', 'e'],\n\t['ζ', 'z'],\n\t['η', 'i'],\n\t['θ', 'th'],\n\t['ι', 'i'],\n\t['κ', 'k'],\n\t['λ', 'l'],\n\t['μ', 'm'],\n\t['ν', 'n'],\n\t['ξ', 'ks'],\n\t['ο', 'o'],\n\t['π', 'p'],\n\t['ρ', 'r'],\n\t['σ', 's'],\n\t['τ', 't'],\n\t['υ', 'y'],\n\t['φ', 'f'],\n\t['χ', 'x'],\n\t['ψ', 'ps'],\n\t['ω', 'o'],\n\t['ά', 'a'],\n\t['έ', 'e'],\n\t['ί', 'i'],\n\t['ό', 'o'],\n\t['ύ', 'y'],\n\t['ή', 'i'],\n\t['ώ', 'o'],\n\t['ς', 's'],\n\t['ϊ', 'i'],\n\t['ΰ', 'y'],\n\t['ϋ', 'y'],\n\t['ΐ', 'i'],\n\t['Α', 'A'],\n\t['Β', 'B'],\n\t['Γ', 'G'],\n\t['Δ', 'D'],\n\t['Ε', 'E'],\n\t['Ζ', 'Z'],\n\t['Η', 'I'],\n\t['Θ', 'TH'],\n\t['Ι', 'I'],\n\t['Κ', 'K'],\n\t['Λ', 'L'],\n\t['Μ', 'M'],\n\t['Ν', 'N'],\n\t['Ξ', 'KS'],\n\t['Ο', 'O'],\n\t['Π', 'P'],\n\t['Ρ', 'R'],\n\t['Σ', 'S'],\n\t['Τ', 'T'],\n\t['Υ', 'Y'],\n\t['Φ', 'F'],\n\t['Χ', 'X'],\n\t['Ψ', 'PS'],\n\t['Ω', 'O'],\n\t['Ά', 'A'],\n\t['Έ', 'E'],\n\t['Ί', 'I'],\n\t['Ό', 'O'],\n\t['Ύ', 'Y'],\n\t['Ή', 'I'],\n\t['Ώ', 'O'],\n\t['Ϊ', 'I'],\n\t['Ϋ', 'Y'],\n\n\t// Disabled as it conflicts with German and Latin.\n\t// Hungarian\n\t// ['ä', 'a'],\n\t// ['Ä', 'A'],\n\t// ['ö', 'o'],\n\t// ['Ö', 'O'],\n\t// ['ü', 'u'],\n\t// ['Ü', 'U'],\n\t// ['ű', 'u'],\n\t// ['Ű', 'U'],\n\n\t// Latvian\n\t['ā', 'a'],\n\t['ē', 'e'],\n\t['ģ', 'g'],\n\t['ī', 'i'],\n\t['ķ', 'k'],\n\t['ļ', 'l'],\n\t['ņ', 'n'],\n\t['ū', 'u'],\n\t['Ā', 'A'],\n\t['Ē', 'E'],\n\t['Ģ', 'G'],\n\t['Ī', 'I'],\n\t['Ķ', 'K'],\n\t['Ļ', 'L'],\n\t['Ņ', 'N'],\n\t['Ū', 'U'],\n\t['č', 'c'],\n\t['š', 's'],\n\t['ž', 'z'],\n\t['Č', 'C'],\n\t['Š', 'S'],\n\t['Ž', 'Z'],\n\n\t// Lithuanian\n\t['ą', 'a'],\n\t['č', 'c'],\n\t['ę', 'e'],\n\t['ė', 'e'],\n\t['į', 'i'],\n\t['š', 's'],\n\t['ų', 'u'],\n\t['ū', 'u'],\n\t['ž', 'z'],\n\t['Ą', 'A'],\n\t['Č', 'C'],\n\t['Ę', 'E'],\n\t['Ė', 'E'],\n\t['Į', 'I'],\n\t['Š', 'S'],\n\t['Ų', 'U'],\n\t['Ū', 'U'],\n\n\t// Macedonian\n\t['Ќ', 'Kj'],\n\t['ќ', 'kj'],\n\t['Љ', 'Lj'],\n\t['љ', 'lj'],\n\t['Њ', 'Nj'],\n\t['њ', 'nj'],\n\t['Тс', 'Ts'],\n\t['тс', 'ts'],\n\n\t// Polish\n\t['ą', 'a'],\n\t['ć', 'c'],\n\t['ę', 'e'],\n\t['ł', 'l'],\n\t['ń', 'n'],\n\t['ś', 's'],\n\t['ź', 'z'],\n\t['ż', 'z'],\n\t['Ą', 'A'],\n\t['Ć', 'C'],\n\t['Ę', 'E'],\n\t['Ł', 'L'],\n\t['Ń', 'N'],\n\t['Ś', 'S'],\n\t['Ź', 'Z'],\n\t['Ż', 'Z'],\n\n\t// Disabled as it conflicts with Vietnamese.\n\t// Serbian\n\t// ['љ', 'lj'],\n\t// ['њ', 'nj'],\n\t// ['Љ', 'Lj'],\n\t// ['Њ', 'Nj'],\n\t// ['đ', 'dj'],\n\t// ['Đ', 'Dj'],\n\t// ['ђ', 'dj'],\n\t// ['ј', 'j'],\n\t// ['ћ', 'c'],\n\t// ['џ', 'dz'],\n\t// ['Ђ', 'Dj'],\n\t// ['Ј', 'j'],\n\t// ['Ћ', 'C'],\n\t// ['Џ', 'Dz'],\n\n\t// Disabled as it conflicts with German and Latin.\n\t// Slovak\n\t// ['ä', 'a'],\n\t// ['Ä', 'A'],\n\t// ['ľ', 'l'],\n\t// ['ĺ', 'l'],\n\t// ['ŕ', 'r'],\n\t// ['Ľ', 'L'],\n\t// ['Ĺ', 'L'],\n\t// ['Ŕ', 'R'],\n\n\t// Disabled as it conflicts with German and Latin.\n\t// Swedish\n\t// ['å', 'o'],\n\t// ['Å', 'o'],\n\t// ['ä', 'a'],\n\t// ['Ä', 'A'],\n\t// ['ë', 'e'],\n\t// ['Ë', 'E'],\n\t// ['ö', 'o'],\n\t// ['Ö', 'O'],\n\n\t// Ukrainian\n\t['Є', 'Ye'],\n\t['І', 'I'],\n\t['Ї', 'Yi'],\n\t['Ґ', 'G'],\n\t['є', 'ye'],\n\t['і', 'i'],\n\t['ї', 'yi'],\n\t['ґ', 'g'],\n\n\t// Dutch\n\t['IJ', 'IJ'],\n\t['ij', 'ij'],\n\n\t// Danish\n\t// ['Æ', 'Ae'],\n\t// ['Ø', 'Oe'],\n\t// ['Å', 'Aa'],\n\t// ['æ', 'ae'],\n\t// ['ø', 'oe'],\n\t// ['å', 'aa']\n\n\t// Currencies\n\t['¢', 'c'],\n\t['¥', 'Y'],\n\t['߿', 'b'],\n\t['৳', 't'],\n\t['૱', 'Bo'],\n\t['฿', 'B'],\n\t['₠', 'CE'],\n\t['₡', 'C'],\n\t['₢', 'Cr'],\n\t['₣', 'F'],\n\t['₥', 'm'],\n\t['₦', 'N'],\n\t['₧', 'Pt'],\n\t['₨', 'Rs'],\n\t['₩', 'W'],\n\t['₫', 's'],\n\t['€', 'E'],\n\t['₭', 'K'],\n\t['₮', 'T'],\n\t['₯', 'Dp'],\n\t['₰', 'S'],\n\t['₱', 'P'],\n\t['₲', 'G'],\n\t['₳', 'A'],\n\t['₴', 'S'],\n\t['₵', 'C'],\n\t['₶', 'tt'],\n\t['₷', 'S'],\n\t['₸', 'T'],\n\t['₹', 'R'],\n\t['₺', 'L'],\n\t['₽', 'P'],\n\t['₿', 'B'],\n\t['﹩', '$'],\n\t['¢', 'c'],\n\t['¥', 'Y'],\n\t['₩', 'W'],\n\n\t// Latin\n\t['𝐀', 'A'],\n\t['𝐁', 'B'],\n\t['𝐂', 'C'],\n\t['𝐃', 'D'],\n\t['𝐄', 'E'],\n\t['𝐅', 'F'],\n\t['𝐆', 'G'],\n\t['𝐇', 'H'],\n\t['𝐈', 'I'],\n\t['𝐉', 'J'],\n\t['𝐊', 'K'],\n\t['𝐋', 'L'],\n\t['𝐌', 'M'],\n\t['𝐍', 'N'],\n\t['𝐎', 'O'],\n\t['𝐏', 'P'],\n\t['𝐐', 'Q'],\n\t['𝐑', 'R'],\n\t['𝐒', 'S'],\n\t['𝐓', 'T'],\n\t['𝐔', 'U'],\n\t['𝐕', 'V'],\n\t['𝐖', 'W'],\n\t['𝐗', 'X'],\n\t['𝐘', 'Y'],\n\t['𝐙', 'Z'],\n\t['𝐚', 'a'],\n\t['𝐛', 'b'],\n\t['𝐜', 'c'],\n\t['𝐝', 'd'],\n\t['𝐞', 'e'],\n\t['𝐟', 'f'],\n\t['𝐠', 'g'],\n\t['𝐡', 'h'],\n\t['𝐢', 'i'],\n\t['𝐣', 'j'],\n\t['𝐤', 'k'],\n\t['𝐥', 'l'],\n\t['𝐦', 'm'],\n\t['𝐧', 'n'],\n\t['𝐨', 'o'],\n\t['𝐩', 'p'],\n\t['𝐪', 'q'],\n\t['𝐫', 'r'],\n\t['𝐬', 's'],\n\t['𝐭', 't'],\n\t['𝐮', 'u'],\n\t['𝐯', 'v'],\n\t['𝐰', 'w'],\n\t['𝐱', 'x'],\n\t['𝐲', 'y'],\n\t['𝐳', 'z'],\n\t['𝐴', 'A'],\n\t['𝐵', 'B'],\n\t['𝐶', 'C'],\n\t['𝐷', 'D'],\n\t['𝐸', 'E'],\n\t['𝐹', 'F'],\n\t['𝐺', 'G'],\n\t['𝐻', 'H'],\n\t['𝐼', 'I'],\n\t['𝐽', 'J'],\n\t['𝐾', 'K'],\n\t['𝐿', 'L'],\n\t['𝑀', 'M'],\n\t['𝑁', 'N'],\n\t['𝑂', 'O'],\n\t['𝑃', 'P'],\n\t['𝑄', 'Q'],\n\t['𝑅', 'R'],\n\t['𝑆', 'S'],\n\t['𝑇', 'T'],\n\t['𝑈', 'U'],\n\t['𝑉', 'V'],\n\t['𝑊', 'W'],\n\t['𝑋', 'X'],\n\t['𝑌', 'Y'],\n\t['𝑍', 'Z'],\n\t['𝑎', 'a'],\n\t['𝑏', 'b'],\n\t['𝑐', 'c'],\n\t['𝑑', 'd'],\n\t['𝑒', 'e'],\n\t['𝑓', 'f'],\n\t['𝑔', 'g'],\n\t['𝑖', 'i'],\n\t['𝑗', 'j'],\n\t['𝑘', 'k'],\n\t['𝑙', 'l'],\n\t['𝑚', 'm'],\n\t['𝑛', 'n'],\n\t['𝑜', 'o'],\n\t['𝑝', 'p'],\n\t['𝑞', 'q'],\n\t['𝑟', 'r'],\n\t['𝑠', 's'],\n\t['𝑡', 't'],\n\t['𝑢', 'u'],\n\t['𝑣', 'v'],\n\t['𝑤', 'w'],\n\t['𝑥', 'x'],\n\t['𝑦', 'y'],\n\t['𝑧', 'z'],\n\t['𝑨', 'A'],\n\t['𝑩', 'B'],\n\t['𝑪', 'C'],\n\t['𝑫', 'D'],\n\t['𝑬', 'E'],\n\t['𝑭', 'F'],\n\t['𝑮', 'G'],\n\t['𝑯', 'H'],\n\t['𝑰', 'I'],\n\t['𝑱', 'J'],\n\t['𝑲', 'K'],\n\t['𝑳', 'L'],\n\t['𝑴', 'M'],\n\t['𝑵', 'N'],\n\t['𝑶', 'O'],\n\t['𝑷', 'P'],\n\t['𝑸', 'Q'],\n\t['𝑹', 'R'],\n\t['𝑺', 'S'],\n\t['𝑻', 'T'],\n\t['𝑼', 'U'],\n\t['𝑽', 'V'],\n\t['𝑾', 'W'],\n\t['𝑿', 'X'],\n\t['𝒀', 'Y'],\n\t['𝒁', 'Z'],\n\t['𝒂', 'a'],\n\t['𝒃', 'b'],\n\t['𝒄', 'c'],\n\t['𝒅', 'd'],\n\t['𝒆', 'e'],\n\t['𝒇', 'f'],\n\t['𝒈', 'g'],\n\t['𝒉', 'h'],\n\t['𝒊', 'i'],\n\t['𝒋', 'j'],\n\t['𝒌', 'k'],\n\t['𝒍', 'l'],\n\t['𝒎', 'm'],\n\t['𝒏', 'n'],\n\t['𝒐', 'o'],\n\t['𝒑', 'p'],\n\t['𝒒', 'q'],\n\t['𝒓', 'r'],\n\t['𝒔', 's'],\n\t['𝒕', 't'],\n\t['𝒖', 'u'],\n\t['𝒗', 'v'],\n\t['𝒘', 'w'],\n\t['𝒙', 'x'],\n\t['𝒚', 'y'],\n\t['𝒛', 'z'],\n\t['𝒜', 'A'],\n\t['𝒞', 'C'],\n\t['𝒟', 'D'],\n\t['𝒢', 'g'],\n\t['𝒥', 'J'],\n\t['𝒦', 'K'],\n\t['𝒩', 'N'],\n\t['𝒪', 'O'],\n\t['𝒫', 'P'],\n\t['𝒬', 'Q'],\n\t['𝒮', 'S'],\n\t['𝒯', 'T'],\n\t['𝒰', 'U'],\n\t['𝒱', 'V'],\n\t['𝒲', 'W'],\n\t['𝒳', 'X'],\n\t['𝒴', 'Y'],\n\t['𝒵', 'Z'],\n\t['𝒶', 'a'],\n\t['𝒷', 'b'],\n\t['𝒸', 'c'],\n\t['𝒹', 'd'],\n\t['𝒻', 'f'],\n\t['𝒽', 'h'],\n\t['𝒾', 'i'],\n\t['𝒿', 'j'],\n\t['𝓀', 'h'],\n\t['𝓁', 'l'],\n\t['𝓂', 'm'],\n\t['𝓃', 'n'],\n\t['𝓅', 'p'],\n\t['𝓆', 'q'],\n\t['𝓇', 'r'],\n\t['𝓈', 's'],\n\t['𝓉', 't'],\n\t['𝓊', 'u'],\n\t['𝓋', 'v'],\n\t['𝓌', 'w'],\n\t['𝓍', 'x'],\n\t['𝓎', 'y'],\n\t['𝓏', 'z'],\n\t['𝓐', 'A'],\n\t['𝓑', 'B'],\n\t['𝓒', 'C'],\n\t['𝓓', 'D'],\n\t['𝓔', 'E'],\n\t['𝓕', 'F'],\n\t['𝓖', 'G'],\n\t['𝓗', 'H'],\n\t['𝓘', 'I'],\n\t['𝓙', 'J'],\n\t['𝓚', 'K'],\n\t['𝓛', 'L'],\n\t['𝓜', 'M'],\n\t['𝓝', 'N'],\n\t['𝓞', 'O'],\n\t['𝓟', 'P'],\n\t['𝓠', 'Q'],\n\t['𝓡', 'R'],\n\t['𝓢', 'S'],\n\t['𝓣', 'T'],\n\t['𝓤', 'U'],\n\t['𝓥', 'V'],\n\t['𝓦', 'W'],\n\t['𝓧', 'X'],\n\t['𝓨', 'Y'],\n\t['𝓩', 'Z'],\n\t['𝓪', 'a'],\n\t['𝓫', 'b'],\n\t['𝓬', 'c'],\n\t['𝓭', 'd'],\n\t['𝓮', 'e'],\n\t['𝓯', 'f'],\n\t['𝓰', 'g'],\n\t['𝓱', 'h'],\n\t['𝓲', 'i'],\n\t['𝓳', 'j'],\n\t['𝓴', 'k'],\n\t['𝓵', 'l'],\n\t['𝓶', 'm'],\n\t['𝓷', 'n'],\n\t['𝓸', 'o'],\n\t['𝓹', 'p'],\n\t['𝓺', 'q'],\n\t['𝓻', 'r'],\n\t['𝓼', 's'],\n\t['𝓽', 't'],\n\t['𝓾', 'u'],\n\t['𝓿', 'v'],\n\t['𝔀', 'w'],\n\t['𝔁', 'x'],\n\t['𝔂', 'y'],\n\t['𝔃', 'z'],\n\t['𝔄', 'A'],\n\t['𝔅', 'B'],\n\t['𝔇', 'D'],\n\t['𝔈', 'E'],\n\t['𝔉', 'F'],\n\t['𝔊', 'G'],\n\t['𝔍', 'J'],\n\t['𝔎', 'K'],\n\t['𝔏', 'L'],\n\t['𝔐', 'M'],\n\t['𝔑', 'N'],\n\t['𝔒', 'O'],\n\t['𝔓', 'P'],\n\t['𝔔', 'Q'],\n\t['𝔖', 'S'],\n\t['𝔗', 'T'],\n\t['𝔘', 'U'],\n\t['𝔙', 'V'],\n\t['𝔚', 'W'],\n\t['𝔛', 'X'],\n\t['𝔜', 'Y'],\n\t['𝔞', 'a'],\n\t['𝔟', 'b'],\n\t['𝔠', 'c'],\n\t['𝔡', 'd'],\n\t['𝔢', 'e'],\n\t['𝔣', 'f'],\n\t['𝔤', 'g'],\n\t['𝔥', 'h'],\n\t['𝔦', 'i'],\n\t['𝔧', 'j'],\n\t['𝔨', 'k'],\n\t['𝔩', 'l'],\n\t['𝔪', 'm'],\n\t['𝔫', 'n'],\n\t['𝔬', 'o'],\n\t['𝔭', 'p'],\n\t['𝔮', 'q'],\n\t['𝔯', 'r'],\n\t['𝔰', 's'],\n\t['𝔱', 't'],\n\t['𝔲', 'u'],\n\t['𝔳', 'v'],\n\t['𝔴', 'w'],\n\t['𝔵', 'x'],\n\t['𝔶', 'y'],\n\t['𝔷', 'z'],\n\t['𝔸', 'A'],\n\t['𝔹', 'B'],\n\t['𝔻', 'D'],\n\t['𝔼', 'E'],\n\t['𝔽', 'F'],\n\t['𝔾', 'G'],\n\t['𝕀', 'I'],\n\t['𝕁', 'J'],\n\t['𝕂', 'K'],\n\t['𝕃', 'L'],\n\t['𝕄', 'M'],\n\t['𝕆', 'N'],\n\t['𝕊', 'S'],\n\t['𝕋', 'T'],\n\t['𝕌', 'U'],\n\t['𝕍', 'V'],\n\t['𝕎', 'W'],\n\t['𝕏', 'X'],\n\t['𝕐', 'Y'],\n\t['𝕒', 'a'],\n\t['𝕓', 'b'],\n\t['𝕔', 'c'],\n\t['𝕕', 'd'],\n\t['𝕖', 'e'],\n\t['𝕗', 'f'],\n\t['𝕘', 'g'],\n\t['𝕙', 'h'],\n\t['𝕚', 'i'],\n\t['𝕛', 'j'],\n\t['𝕜', 'k'],\n\t['𝕝', 'l'],\n\t['𝕞', 'm'],\n\t['𝕟', 'n'],\n\t['𝕠', 'o'],\n\t['𝕡', 'p'],\n\t['𝕢', 'q'],\n\t['𝕣', 'r'],\n\t['𝕤', 's'],\n\t['𝕥', 't'],\n\t['𝕦', 'u'],\n\t['𝕧', 'v'],\n\t['𝕨', 'w'],\n\t['𝕩', 'x'],\n\t['𝕪', 'y'],\n\t['𝕫', 'z'],\n\t['𝕬', 'A'],\n\t['𝕭', 'B'],\n\t['𝕮', 'C'],\n\t['𝕯', 'D'],\n\t['𝕰', 'E'],\n\t['𝕱', 'F'],\n\t['𝕲', 'G'],\n\t['𝕳', 'H'],\n\t['𝕴', 'I'],\n\t['𝕵', 'J'],\n\t['𝕶', 'K'],\n\t['𝕷', 'L'],\n\t['𝕸', 'M'],\n\t['𝕹', 'N'],\n\t['𝕺', 'O'],\n\t['𝕻', 'P'],\n\t['𝕼', 'Q'],\n\t['𝕽', 'R'],\n\t['𝕾', 'S'],\n\t['𝕿', 'T'],\n\t['𝖀', 'U'],\n\t['𝖁', 'V'],\n\t['𝖂', 'W'],\n\t['𝖃', 'X'],\n\t['𝖄', 'Y'],\n\t['𝖅', 'Z'],\n\t['𝖆', 'a'],\n\t['𝖇', 'b'],\n\t['𝖈', 'c'],\n\t['𝖉', 'd'],\n\t['𝖊', 'e'],\n\t['𝖋', 'f'],\n\t['𝖌', 'g'],\n\t['𝖍', 'h'],\n\t['𝖎', 'i'],\n\t['𝖏', 'j'],\n\t['𝖐', 'k'],\n\t['𝖑', 'l'],\n\t['𝖒', 'm'],\n\t['𝖓', 'n'],\n\t['𝖔', 'o'],\n\t['𝖕', 'p'],\n\t['𝖖', 'q'],\n\t['𝖗', 'r'],\n\t['𝖘', 's'],\n\t['𝖙', 't'],\n\t['𝖚', 'u'],\n\t['𝖛', 'v'],\n\t['𝖜', 'w'],\n\t['𝖝', 'x'],\n\t['𝖞', 'y'],\n\t['𝖟', 'z'],\n\t['𝖠', 'A'],\n\t['𝖡', 'B'],\n\t['𝖢', 'C'],\n\t['𝖣', 'D'],\n\t['𝖤', 'E'],\n\t['𝖥', 'F'],\n\t['𝖦', 'G'],\n\t['𝖧', 'H'],\n\t['𝖨', 'I'],\n\t['𝖩', 'J'],\n\t['𝖪', 'K'],\n\t['𝖫', 'L'],\n\t['𝖬', 'M'],\n\t['𝖭', 'N'],\n\t['𝖮', 'O'],\n\t['𝖯', 'P'],\n\t['𝖰', 'Q'],\n\t['𝖱', 'R'],\n\t['𝖲', 'S'],\n\t['𝖳', 'T'],\n\t['𝖴', 'U'],\n\t['𝖵', 'V'],\n\t['𝖶', 'W'],\n\t['𝖷', 'X'],\n\t['𝖸', 'Y'],\n\t['𝖹', 'Z'],\n\t['𝖺', 'a'],\n\t['𝖻', 'b'],\n\t['𝖼', 'c'],\n\t['𝖽', 'd'],\n\t['𝖾', 'e'],\n\t['𝖿', 'f'],\n\t['𝗀', 'g'],\n\t['𝗁', 'h'],\n\t['𝗂', 'i'],\n\t['𝗃', 'j'],\n\t['𝗄', 'k'],\n\t['𝗅', 'l'],\n\t['𝗆', 'm'],\n\t['𝗇', 'n'],\n\t['𝗈', 'o'],\n\t['𝗉', 'p'],\n\t['𝗊', 'q'],\n\t['𝗋', 'r'],\n\t['𝗌', 's'],\n\t['𝗍', 't'],\n\t['𝗎', 'u'],\n\t['𝗏', 'v'],\n\t['𝗐', 'w'],\n\t['𝗑', 'x'],\n\t['𝗒', 'y'],\n\t['𝗓', 'z'],\n\t['𝗔', 'A'],\n\t['𝗕', 'B'],\n\t['𝗖', 'C'],\n\t['𝗗', 'D'],\n\t['𝗘', 'E'],\n\t['𝗙', 'F'],\n\t['𝗚', 'G'],\n\t['𝗛', 'H'],\n\t['𝗜', 'I'],\n\t['𝗝', 'J'],\n\t['𝗞', 'K'],\n\t['𝗟', 'L'],\n\t['𝗠', 'M'],\n\t['𝗡', 'N'],\n\t['𝗢', 'O'],\n\t['𝗣', 'P'],\n\t['𝗤', 'Q'],\n\t['𝗥', 'R'],\n\t['𝗦', 'S'],\n\t['𝗧', 'T'],\n\t['𝗨', 'U'],\n\t['𝗩', 'V'],\n\t['𝗪', 'W'],\n\t['𝗫', 'X'],\n\t['𝗬', 'Y'],\n\t['𝗭', 'Z'],\n\t['𝗮', 'a'],\n\t['𝗯', 'b'],\n\t['𝗰', 'c'],\n\t['𝗱', 'd'],\n\t['𝗲', 'e'],\n\t['𝗳', 'f'],\n\t['𝗴', 'g'],\n\t['𝗵', 'h'],\n\t['𝗶', 'i'],\n\t['𝗷', 'j'],\n\t['𝗸', 'k'],\n\t['𝗹', 'l'],\n\t['𝗺', 'm'],\n\t['𝗻', 'n'],\n\t['𝗼', 'o'],\n\t['𝗽', 'p'],\n\t['𝗾', 'q'],\n\t['𝗿', 'r'],\n\t['𝘀', 's'],\n\t['𝘁', 't'],\n\t['𝘂', 'u'],\n\t['𝘃', 'v'],\n\t['𝘄', 'w'],\n\t['𝘅', 'x'],\n\t['𝘆', 'y'],\n\t['𝘇', 'z'],\n\t['𝘈', 'A'],\n\t['𝘉', 'B'],\n\t['𝘊', 'C'],\n\t['𝘋', 'D'],\n\t['𝘌', 'E'],\n\t['𝘍', 'F'],\n\t['𝘎', 'G'],\n\t['𝘏', 'H'],\n\t['𝘐', 'I'],\n\t['𝘑', 'J'],\n\t['𝘒', 'K'],\n\t['𝘓', 'L'],\n\t['𝘔', 'M'],\n\t['𝘕', 'N'],\n\t['𝘖', 'O'],\n\t['𝘗', 'P'],\n\t['𝘘', 'Q'],\n\t['𝘙', 'R'],\n\t['𝘚', 'S'],\n\t['𝘛', 'T'],\n\t['𝘜', 'U'],\n\t['𝘝', 'V'],\n\t['𝘞', 'W'],\n\t['𝘟', 'X'],\n\t['𝘠', 'Y'],\n\t['𝘡', 'Z'],\n\t['𝘢', 'a'],\n\t['𝘣', 'b'],\n\t['𝘤', 'c'],\n\t['𝘥', 'd'],\n\t['𝘦', 'e'],\n\t['𝘧', 'f'],\n\t['𝘨', 'g'],\n\t['𝘩', 'h'],\n\t['𝘪', 'i'],\n\t['𝘫', 'j'],\n\t['𝘬', 'k'],\n\t['𝘭', 'l'],\n\t['𝘮', 'm'],\n\t['𝘯', 'n'],\n\t['𝘰', 'o'],\n\t['𝘱', 'p'],\n\t['𝘲', 'q'],\n\t['𝘳', 'r'],\n\t['𝘴', 's'],\n\t['𝘵', 't'],\n\t['𝘶', 'u'],\n\t['𝘷', 'v'],\n\t['𝘸', 'w'],\n\t['𝘹', 'x'],\n\t['𝘺', 'y'],\n\t['𝘻', 'z'],\n\t['𝘼', 'A'],\n\t['𝘽', 'B'],\n\t['𝘾', 'C'],\n\t['𝘿', 'D'],\n\t['𝙀', 'E'],\n\t['𝙁', 'F'],\n\t['𝙂', 'G'],\n\t['𝙃', 'H'],\n\t['𝙄', 'I'],\n\t['𝙅', 'J'],\n\t['𝙆', 'K'],\n\t['𝙇', 'L'],\n\t['𝙈', 'M'],\n\t['𝙉', 'N'],\n\t['𝙊', 'O'],\n\t['𝙋', 'P'],\n\t['𝙌', 'Q'],\n\t['𝙍', 'R'],\n\t['𝙎', 'S'],\n\t['𝙏', 'T'],\n\t['𝙐', 'U'],\n\t['𝙑', 'V'],\n\t['𝙒', 'W'],\n\t['𝙓', 'X'],\n\t['𝙔', 'Y'],\n\t['𝙕', 'Z'],\n\t['𝙖', 'a'],\n\t['𝙗', 'b'],\n\t['𝙘', 'c'],\n\t['𝙙', 'd'],\n\t['𝙚', 'e'],\n\t['𝙛', 'f'],\n\t['𝙜', 'g'],\n\t['𝙝', 'h'],\n\t['𝙞', 'i'],\n\t['𝙟', 'j'],\n\t['𝙠', 'k'],\n\t['𝙡', 'l'],\n\t['𝙢', 'm'],\n\t['𝙣', 'n'],\n\t['𝙤', 'o'],\n\t['𝙥', 'p'],\n\t['𝙦', 'q'],\n\t['𝙧', 'r'],\n\t['𝙨', 's'],\n\t['𝙩', 't'],\n\t['𝙪', 'u'],\n\t['𝙫', 'v'],\n\t['𝙬', 'w'],\n\t['𝙭', 'x'],\n\t['𝙮', 'y'],\n\t['𝙯', 'z'],\n\t['𝙰', 'A'],\n\t['𝙱', 'B'],\n\t['𝙲', 'C'],\n\t['𝙳', 'D'],\n\t['𝙴', 'E'],\n\t['𝙵', 'F'],\n\t['𝙶', 'G'],\n\t['𝙷', 'H'],\n\t['𝙸', 'I'],\n\t['𝙹', 'J'],\n\t['𝙺', 'K'],\n\t['𝙻', 'L'],\n\t['𝙼', 'M'],\n\t['𝙽', 'N'],\n\t['𝙾', 'O'],\n\t['𝙿', 'P'],\n\t['𝚀', 'Q'],\n\t['𝚁', 'R'],\n\t['𝚂', 'S'],\n\t['𝚃', 'T'],\n\t['𝚄', 'U'],\n\t['𝚅', 'V'],\n\t['𝚆', 'W'],\n\t['𝚇', 'X'],\n\t['𝚈', 'Y'],\n\t['𝚉', 'Z'],\n\t['𝚊', 'a'],\n\t['𝚋', 'b'],\n\t['𝚌', 'c'],\n\t['𝚍', 'd'],\n\t['𝚎', 'e'],\n\t['𝚏', 'f'],\n\t['𝚐', 'g'],\n\t['𝚑', 'h'],\n\t['𝚒', 'i'],\n\t['𝚓', 'j'],\n\t['𝚔', 'k'],\n\t['𝚕', 'l'],\n\t['𝚖', 'm'],\n\t['𝚗', 'n'],\n\t['𝚘', 'o'],\n\t['𝚙', 'p'],\n\t['𝚚', 'q'],\n\t['𝚛', 'r'],\n\t['𝚜', 's'],\n\t['𝚝', 't'],\n\t['𝚞', 'u'],\n\t['𝚟', 'v'],\n\t['𝚠', 'w'],\n\t['𝚡', 'x'],\n\t['𝚢', 'y'],\n\t['𝚣', 'z'],\n\n\t// Dotless letters\n\t['𝚤', 'l'],\n\t['𝚥', 'j'],\n\n\t// Greek\n\t['𝛢', 'A'],\n\t['𝛣', 'B'],\n\t['𝛤', 'G'],\n\t['𝛥', 'D'],\n\t['𝛦', 'E'],\n\t['𝛧', 'Z'],\n\t['𝛨', 'I'],\n\t['𝛩', 'TH'],\n\t['𝛪', 'I'],\n\t['𝛫', 'K'],\n\t['𝛬', 'L'],\n\t['𝛭', 'M'],\n\t['𝛮', 'N'],\n\t['𝛯', 'KS'],\n\t['𝛰', 'O'],\n\t['𝛱', 'P'],\n\t['𝛲', 'R'],\n\t['𝛳', 'TH'],\n\t['𝛴', 'S'],\n\t['𝛵', 'T'],\n\t['𝛶', 'Y'],\n\t['𝛷', 'F'],\n\t['𝛸', 'x'],\n\t['𝛹', 'PS'],\n\t['𝛺', 'O'],\n\t['𝛻', 'D'],\n\t['𝛼', 'a'],\n\t['𝛽', 'b'],\n\t['𝛾', 'g'],\n\t['𝛿', 'd'],\n\t['𝜀', 'e'],\n\t['𝜁', 'z'],\n\t['𝜂', 'i'],\n\t['𝜃', 'th'],\n\t['𝜄', 'i'],\n\t['𝜅', 'k'],\n\t['𝜆', 'l'],\n\t['𝜇', 'm'],\n\t['𝜈', 'n'],\n\t['𝜉', 'ks'],\n\t['𝜊', 'o'],\n\t['𝜋', 'p'],\n\t['𝜌', 'r'],\n\t['𝜍', 's'],\n\t['𝜎', 's'],\n\t['𝜏', 't'],\n\t['𝜐', 'y'],\n\t['𝜑', 'f'],\n\t['𝜒', 'x'],\n\t['𝜓', 'ps'],\n\t['𝜔', 'o'],\n\t['𝜕', 'd'],\n\t['𝜖', 'E'],\n\t['𝜗', 'TH'],\n\t['𝜘', 'K'],\n\t['𝜙', 'f'],\n\t['𝜚', 'r'],\n\t['𝜛', 'p'],\n\t['𝜜', 'A'],\n\t['𝜝', 'V'],\n\t['𝜞', 'G'],\n\t['𝜟', 'D'],\n\t['𝜠', 'E'],\n\t['𝜡', 'Z'],\n\t['𝜢', 'I'],\n\t['𝜣', 'TH'],\n\t['𝜤', 'I'],\n\t['𝜥', 'K'],\n\t['𝜦', 'L'],\n\t['𝜧', 'M'],\n\t['𝜨', 'N'],\n\t['𝜩', 'KS'],\n\t['𝜪', 'O'],\n\t['𝜫', 'P'],\n\t['𝜬', 'S'],\n\t['𝜭', 'TH'],\n\t['𝜮', 'S'],\n\t['𝜯', 'T'],\n\t['𝜰', 'Y'],\n\t['𝜱', 'F'],\n\t['𝜲', 'X'],\n\t['𝜳', 'PS'],\n\t['𝜴', 'O'],\n\t['𝜵', 'D'],\n\t['𝜶', 'a'],\n\t['𝜷', 'v'],\n\t['𝜸', 'g'],\n\t['𝜹', 'd'],\n\t['𝜺', 'e'],\n\t['𝜻', 'z'],\n\t['𝜼', 'i'],\n\t['𝜽', 'th'],\n\t['𝜾', 'i'],\n\t['𝜿', 'k'],\n\t['𝝀', 'l'],\n\t['𝝁', 'm'],\n\t['𝝂', 'n'],\n\t['𝝃', 'ks'],\n\t['𝝄', 'o'],\n\t['𝝅', 'p'],\n\t['𝝆', 'r'],\n\t['𝝇', 's'],\n\t['𝝈', 's'],\n\t['𝝉', 't'],\n\t['𝝊', 'y'],\n\t['𝝋', 'f'],\n\t['𝝌', 'x'],\n\t['𝝍', 'ps'],\n\t['𝝎', 'o'],\n\t['𝝏', 'a'],\n\t['𝝐', 'e'],\n\t['𝝑', 'i'],\n\t['𝝒', 'k'],\n\t['𝝓', 'f'],\n\t['𝝔', 'r'],\n\t['𝝕', 'p'],\n\t['𝝖', 'A'],\n\t['𝝗', 'B'],\n\t['𝝘', 'G'],\n\t['𝝙', 'D'],\n\t['𝝚', 'E'],\n\t['𝝛', 'Z'],\n\t['𝝜', 'I'],\n\t['𝝝', 'TH'],\n\t['𝝞', 'I'],\n\t['𝝟', 'K'],\n\t['𝝠', 'L'],\n\t['𝝡', 'M'],\n\t['𝝢', 'N'],\n\t['𝝣', 'KS'],\n\t['𝝤', 'O'],\n\t['𝝥', 'P'],\n\t['𝝦', 'R'],\n\t['𝝧', 'TH'],\n\t['𝝨', 'S'],\n\t['𝝩', 'T'],\n\t['𝝪', 'Y'],\n\t['𝝫', 'F'],\n\t['𝝬', 'X'],\n\t['𝝭', 'PS'],\n\t['𝝮', 'O'],\n\t['𝝯', 'D'],\n\t['𝝰', 'a'],\n\t['𝝱', 'v'],\n\t['𝝲', 'g'],\n\t['𝝳', 'd'],\n\t['𝝴', 'e'],\n\t['𝝵', 'z'],\n\t['𝝶', 'i'],\n\t['𝝷', 'th'],\n\t['𝝸', 'i'],\n\t['𝝹', 'k'],\n\t['𝝺', 'l'],\n\t['𝝻', 'm'],\n\t['𝝼', 'n'],\n\t['𝝽', 'ks'],\n\t['𝝾', 'o'],\n\t['𝝿', 'p'],\n\t['𝞀', 'r'],\n\t['𝞁', 's'],\n\t['𝞂', 's'],\n\t['𝞃', 't'],\n\t['𝞄', 'y'],\n\t['𝞅', 'f'],\n\t['𝞆', 'x'],\n\t['𝞇', 'ps'],\n\t['𝞈', 'o'],\n\t['𝞉', 'a'],\n\t['𝞊', 'e'],\n\t['𝞋', 'i'],\n\t['𝞌', 'k'],\n\t['𝞍', 'f'],\n\t['𝞎', 'r'],\n\t['𝞏', 'p'],\n\t['𝞐', 'A'],\n\t['𝞑', 'V'],\n\t['𝞒', 'G'],\n\t['𝞓', 'D'],\n\t['𝞔', 'E'],\n\t['𝞕', 'Z'],\n\t['𝞖', 'I'],\n\t['𝞗', 'TH'],\n\t['𝞘', 'I'],\n\t['𝞙', 'K'],\n\t['𝞚', 'L'],\n\t['𝞛', 'M'],\n\t['𝞜', 'N'],\n\t['𝞝', 'KS'],\n\t['𝞞', 'O'],\n\t['𝞟', 'P'],\n\t['𝞠', 'S'],\n\t['𝞡', 'TH'],\n\t['𝞢', 'S'],\n\t['𝞣', 'T'],\n\t['𝞤', 'Y'],\n\t['𝞥', 'F'],\n\t['𝞦', 'X'],\n\t['𝞧', 'PS'],\n\t['𝞨', 'O'],\n\t['𝞩', 'D'],\n\t['𝞪', 'av'],\n\t['𝞫', 'g'],\n\t['𝞬', 'd'],\n\t['𝞭', 'e'],\n\t['𝞮', 'z'],\n\t['𝞯', 'i'],\n\t['𝞰', 'i'],\n\t['𝞱', 'th'],\n\t['𝞲', 'i'],\n\t['𝞳', 'k'],\n\t['𝞴', 'l'],\n\t['𝞵', 'm'],\n\t['𝞶', 'n'],\n\t['𝞷', 'ks'],\n\t['𝞸', 'o'],\n\t['𝞹', 'p'],\n\t['𝞺', 'r'],\n\t['𝞻', 's'],\n\t['𝞼', 's'],\n\t['𝞽', 't'],\n\t['𝞾', 'y'],\n\t['𝞿', 'f'],\n\t['𝟀', 'x'],\n\t['𝟁', 'ps'],\n\t['𝟂', 'o'],\n\t['𝟃', 'a'],\n\t['𝟄', 'e'],\n\t['𝟅', 'i'],\n\t['𝟆', 'k'],\n\t['𝟇', 'f'],\n\t['𝟈', 'r'],\n\t['𝟉', 'p'],\n\t['𝟊', 'F'],\n\t['𝟋', 'f'],\n\t['⒜', '(a)'],\n\t['⒝', '(b)'],\n\t['⒞', '(c)'],\n\t['⒟', '(d)'],\n\t['⒠', '(e)'],\n\t['⒡', '(f)'],\n\t['⒢', '(g)'],\n\t['⒣', '(h)'],\n\t['⒤', '(i)'],\n\t['⒥', '(j)'],\n\t['⒦', '(k)'],\n\t['⒧', '(l)'],\n\t['⒨', '(m)'],\n\t['⒩', '(n)'],\n\t['⒪', '(o)'],\n\t['⒫', '(p)'],\n\t['⒬', '(q)'],\n\t['⒭', '(r)'],\n\t['⒮', '(s)'],\n\t['⒯', '(t)'],\n\t['⒰', '(u)'],\n\t['⒱', '(v)'],\n\t['⒲', '(w)'],\n\t['⒳', '(x)'],\n\t['⒴', '(y)'],\n\t['⒵', '(z)'],\n\t['Ⓐ', '(A)'],\n\t['Ⓑ', '(B)'],\n\t['Ⓒ', '(C)'],\n\t['Ⓓ', '(D)'],\n\t['Ⓔ', '(E)'],\n\t['Ⓕ', '(F)'],\n\t['Ⓖ', '(G)'],\n\t['Ⓗ', '(H)'],\n\t['Ⓘ', '(I)'],\n\t['Ⓙ', '(J)'],\n\t['Ⓚ', '(K)'],\n\t['Ⓛ', '(L)'],\n\t['Ⓝ', '(N)'],\n\t['Ⓞ', '(O)'],\n\t['Ⓟ', '(P)'],\n\t['Ⓠ', '(Q)'],\n\t['Ⓡ', '(R)'],\n\t['Ⓢ', '(S)'],\n\t['Ⓣ', '(T)'],\n\t['Ⓤ', '(U)'],\n\t['Ⓥ', '(V)'],\n\t['Ⓦ', '(W)'],\n\t['Ⓧ', '(X)'],\n\t['Ⓨ', '(Y)'],\n\t['Ⓩ', '(Z)'],\n\t['ⓐ', '(a)'],\n\t['ⓑ', '(b)'],\n\t['ⓒ', '(b)'],\n\t['ⓓ', '(c)'],\n\t['ⓔ', '(e)'],\n\t['ⓕ', '(f)'],\n\t['ⓖ', '(g)'],\n\t['ⓗ', '(h)'],\n\t['ⓘ', '(i)'],\n\t['ⓙ', '(j)'],\n\t['ⓚ', '(k)'],\n\t['ⓛ', '(l)'],\n\t['ⓜ', '(m)'],\n\t['ⓝ', '(n)'],\n\t['ⓞ', '(o)'],\n\t['ⓟ', '(p)'],\n\t['ⓠ', '(q)'],\n\t['ⓡ', '(r)'],\n\t['ⓢ', '(s)'],\n\t['ⓣ', '(t)'],\n\t['ⓤ', '(u)'],\n\t['ⓥ', '(v)'],\n\t['ⓦ', '(w)'],\n\t['ⓧ', '(x)'],\n\t['ⓨ', '(y)'],\n\t['ⓩ', '(z)'],\n\n\t// Maltese\n\t['Ċ', 'C'],\n\t['ċ', 'c'],\n\t['Ġ', 'G'],\n\t['ġ', 'g'],\n\t['Ħ', 'H'],\n\t['ħ', 'h'],\n\t['Ż', 'Z'],\n\t['ż', 'z'],\n\n\t// Numbers\n\t['𝟎', '0'],\n\t['𝟏', '1'],\n\t['𝟐', '2'],\n\t['𝟑', '3'],\n\t['𝟒', '4'],\n\t['𝟓', '5'],\n\t['𝟔', '6'],\n\t['𝟕', '7'],\n\t['𝟖', '8'],\n\t['𝟗', '9'],\n\t['𝟘', '0'],\n\t['𝟙', '1'],\n\t['𝟚', '2'],\n\t['𝟛', '3'],\n\t['𝟜', '4'],\n\t['𝟝', '5'],\n\t['𝟞', '6'],\n\t['𝟟', '7'],\n\t['𝟠', '8'],\n\t['𝟡', '9'],\n\t['𝟢', '0'],\n\t['𝟣', '1'],\n\t['𝟤', '2'],\n\t['𝟥', '3'],\n\t['𝟦', '4'],\n\t['𝟧', '5'],\n\t['𝟨', '6'],\n\t['𝟩', '7'],\n\t['𝟪', '8'],\n\t['𝟫', '9'],\n\t['𝟬', '0'],\n\t['𝟭', '1'],\n\t['𝟮', '2'],\n\t['𝟯', '3'],\n\t['𝟰', '4'],\n\t['𝟱', '5'],\n\t['𝟲', '6'],\n\t['𝟳', '7'],\n\t['𝟴', '8'],\n\t['𝟵', '9'],\n\t['𝟶', '0'],\n\t['𝟷', '1'],\n\t['𝟸', '2'],\n\t['𝟹', '3'],\n\t['𝟺', '4'],\n\t['𝟻', '5'],\n\t['𝟼', '6'],\n\t['𝟽', '7'],\n\t['𝟾', '8'],\n\t['𝟿', '9'],\n\t['①', '1'],\n\t['②', '2'],\n\t['③', '3'],\n\t['④', '4'],\n\t['⑤', '5'],\n\t['⑥', '6'],\n\t['⑦', '7'],\n\t['⑧', '8'],\n\t['⑨', '9'],\n\t['⑩', '10'],\n\t['⑪', '11'],\n\t['⑫', '12'],\n\t['⑬', '13'],\n\t['⑭', '14'],\n\t['⑮', '15'],\n\t['⑯', '16'],\n\t['⑰', '17'],\n\t['⑱', '18'],\n\t['⑲', '19'],\n\t['⑳', '20'],\n\t['⑴', '1'],\n\t['⑵', '2'],\n\t['⑶', '3'],\n\t['⑷', '4'],\n\t['⑸', '5'],\n\t['⑹', '6'],\n\t['⑺', '7'],\n\t['⑻', '8'],\n\t['⑼', '9'],\n\t['⑽', '10'],\n\t['⑾', '11'],\n\t['⑿', '12'],\n\t['⒀', '13'],\n\t['⒁', '14'],\n\t['⒂', '15'],\n\t['⒃', '16'],\n\t['⒄', '17'],\n\t['⒅', '18'],\n\t['⒆', '19'],\n\t['⒇', '20'],\n\t['⒈', '1.'],\n\t['⒉', '2.'],\n\t['⒊', '3.'],\n\t['⒋', '4.'],\n\t['⒌', '5.'],\n\t['⒍', '6.'],\n\t['⒎', '7.'],\n\t['⒏', '8.'],\n\t['⒐', '9.'],\n\t['⒑', '10.'],\n\t['⒒', '11.'],\n\t['⒓', '12.'],\n\t['⒔', '13.'],\n\t['⒕', '14.'],\n\t['⒖', '15.'],\n\t['⒗', '16.'],\n\t['⒘', '17.'],\n\t['⒙', '18.'],\n\t['⒚', '19.'],\n\t['⒛', '20.'],\n\t['⓪', '0'],\n\t['⓫', '11'],\n\t['⓬', '12'],\n\t['⓭', '13'],\n\t['⓮', '14'],\n\t['⓯', '15'],\n\t['⓰', '16'],\n\t['⓱', '17'],\n\t['⓲', '18'],\n\t['⓳', '19'],\n\t['⓴', '20'],\n\t['⓵', '1'],\n\t['⓶', '2'],\n\t['⓷', '3'],\n\t['⓸', '4'],\n\t['⓹', '5'],\n\t['⓺', '6'],\n\t['⓻', '7'],\n\t['⓼', '8'],\n\t['⓽', '9'],\n\t['⓾', '10'],\n\t['⓿', '0'],\n\n\t// Punctuation\n\t['🙰', '&'],\n\t['🙱', '&'],\n\t['🙲', '&'],\n\t['🙳', '&'],\n\t['🙴', '&'],\n\t['🙵', '&'],\n\t['🙶', '\"'],\n\t['🙷', '\"'],\n\t['🙸', '\"'],\n\t['‽', '?!'],\n\t['🙹', '?!'],\n\t['🙺', '?!'],\n\t['🙻', '?!'],\n\t['🙼', '/'],\n\t['🙽', '\\\\'],\n\n\t// Alchemy\n\t['🜇', 'AR'],\n\t['🜈', 'V'],\n\t['🜉', 'V'],\n\t['🜆', 'VR'],\n\t['🜅', 'VF'],\n\t['🜩', '2'],\n\t['🜪', '5'],\n\t['🝡', 'f'],\n\t['🝢', 'W'],\n\t['🝣', 'U'],\n\t['🝧', 'V'],\n\t['🝨', 'T'],\n\t['🝪', 'V'],\n\t['🝫', 'MB'],\n\t['🝬', 'VB'],\n\t['🝲', '3B'],\n\t['🝳', '3B'],\n\n\t// Emojis\n\t['💯', '100'],\n\t['🔙', 'BACK'],\n\t['🔚', 'END'],\n\t['🔛', 'ON!'],\n\t['🔜', 'SOON'],\n\t['🔝', 'TOP'],\n\t['🔞', '18'],\n\t['🔤', 'abc'],\n\t['🔠', 'ABCD'],\n\t['🔡', 'abcd'],\n\t['🔢', '1234'],\n\t['🔣', 'T&@%'],\n\t['#️⃣', '#'],\n\t['*️⃣', '*'],\n\t['0️⃣', '0'],\n\t['1️⃣', '1'],\n\t['2️⃣', '2'],\n\t['3️⃣', '3'],\n\t['4️⃣', '4'],\n\t['5️⃣', '5'],\n\t['6️⃣', '6'],\n\t['7️⃣', '7'],\n\t['8️⃣', '8'],\n\t['9️⃣', '9'],\n\t['🔟', '10'],\n\t['🅰️', 'A'],\n\t['🅱️', 'B'],\n\t['🆎', 'AB'],\n\t['🆑', 'CL'],\n\t['🅾️', 'O'],\n\t['🅿', 'P'],\n\t['🆘', 'SOS'],\n\t['🅲', 'C'],\n\t['🅳', 'D'],\n\t['🅴', 'E'],\n\t['🅵', 'F'],\n\t['🅶', 'G'],\n\t['🅷', 'H'],\n\t['🅸', 'I'],\n\t['🅹', 'J'],\n\t['🅺', 'K'],\n\t['🅻', 'L'],\n\t['🅼', 'M'],\n\t['🅽', 'N'],\n\t['🆀', 'Q'],\n\t['🆁', 'R'],\n\t['🆂', 'S'],\n\t['🆃', 'T'],\n\t['🆄', 'U'],\n\t['🆅', 'V'],\n\t['🆆', 'W'],\n\t['🆇', 'X'],\n\t['🆈', 'Y'],\n\t['🆉', 'Z']\n];\n\nexport default replacements;\n","import escapeStringRegexp from 'escape-string-regexp';\nimport builtinReplacements from './replacements.js';\n\nconst doCustomReplacements = (string, replacements) => {\n\tfor (const [key, value] of replacements) {\n\t\t// TODO: Use `String#replaceAll()` when targeting Node.js 16.\n\t\tstring = string.replace(new RegExp(escapeStringRegexp(key), 'g'), value);\n\t}\n\n\treturn string;\n};\n\nexport default function transliterate(string, options) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got \\`${typeof string}\\``);\n\t}\n\n\toptions = {\n\t\tcustomReplacements: [],\n\t\t...options\n\t};\n\n\tconst customReplacements = new Map([\n\t\t...builtinReplacements,\n\t\t...options.customReplacements\n\t]);\n\n\tstring = string.normalize();\n\tstring = doCustomReplacements(string, customReplacements);\n\tstring = string.normalize('NFD').replace(/\\p{Diacritic}/gu, '').normalize();\n\n\treturn string;\n}\n","const overridableReplacements = [\n\t['&', ' and '],\n\t['🦄', ' unicorn '],\n\t['♥', ' love ']\n];\n\nexport default overridableReplacements;\n","import escapeStringRegexp from 'escape-string-regexp';\nimport transliterate from '@sindresorhus/transliterate';\nimport builtinOverridableReplacements from './overridable-replacements.js';\n\nconst decamelize = string => {\n\treturn string\n\t\t// Separate capitalized words.\n\t\t.replace(/([A-Z]{2,})(\\d+)/g, '$1 $2')\n\t\t.replace(/([a-z\\d]+)([A-Z]{2,})/g, '$1 $2')\n\n\t\t.replace(/([a-z\\d])([A-Z])/g, '$1 $2')\n\t\t// `[a-rt-z]` matches all lowercase characters except `s`.\n\t\t// This avoids matching plural acronyms like `APIs`.\n\t\t.replace(/([A-Z]+)([A-Z][a-rt-z\\d]+)/g, '$1 $2');\n};\n\nconst removeMootSeparators = (string, separator) => {\n\tconst escapedSeparator = escapeStringRegexp(separator);\n\n\treturn string\n\t\t.replace(new RegExp(`${escapedSeparator}{2,}`, 'g'), separator)\n\t\t.replace(new RegExp(`^${escapedSeparator}|${escapedSeparator}$`, 'g'), '');\n};\n\nconst buildPatternSlug = options => {\n\tlet negationSetPattern = 'a-z\\\\d';\n\tnegationSetPattern += options.lowercase ? '' : 'A-Z';\n\n\tif (options.preserveCharacters.length > 0) {\n\t\tfor (const character of options.preserveCharacters) {\n\t\t\tif (character === options.separator) {\n\t\t\t\tthrow new Error(`The separator character \\`${options.separator}\\` cannot be included in preserved characters: ${options.preserveCharacters}`);\n\t\t\t}\n\n\t\t\tnegationSetPattern += escapeStringRegexp(character);\n\t\t}\n\t}\n\n\treturn new RegExp(`[^${negationSetPattern}]+`, 'g');\n};\n\nexport default function slugify(string, options) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got \\`${typeof string}\\``);\n\t}\n\n\toptions = {\n\t\tseparator: '-',\n\t\tlowercase: true,\n\t\tdecamelize: true,\n\t\tcustomReplacements: [],\n\t\tpreserveLeadingUnderscore: false,\n\t\tpreserveTrailingDash: false,\n\t\tpreserveCharacters: [],\n\t\t...options\n\t};\n\n\tconst shouldPrependUnderscore = options.preserveLeadingUnderscore && string.startsWith('_');\n\tconst shouldAppendDash = options.preserveTrailingDash && string.endsWith('-');\n\n\tconst customReplacements = new Map([\n\t\t...builtinOverridableReplacements,\n\t\t...options.customReplacements\n\t]);\n\n\tstring = transliterate(string, {customReplacements});\n\n\tif (options.decamelize) {\n\t\tstring = decamelize(string);\n\t}\n\n\tconst patternSlug = buildPatternSlug(options);\n\n\tif (options.lowercase) {\n\t\tstring = string.toLowerCase();\n\t}\n\n\tstring = string.replace(patternSlug, options.separator);\n\tstring = string.replace(/\\\\/g, '');\n\n\t// Detect contractions/possessives by looking for any word followed by a `-t`\n\t// or `-s` in isolation and then remove it.\n\tstring = string.replace(/([a-zA-Z\\d]+)-([ts])(-|$)/g, '$1$2$3');\n\n\tif (options.separator) {\n\t\tstring = removeMootSeparators(string, options.separator);\n\t}\n\n\tif (shouldPrependUnderscore) {\n\t\tstring = `_${string}`;\n\t}\n\n\tif (shouldAppendDash) {\n\t\tstring = `${string}-`;\n\t}\n\n\treturn string;\n}\n\nexport function slugifyWithCounter() {\n\tconst occurrences = new Map();\n\n\tconst countable = (string, options) => {\n\t\tstring = slugify(string, options);\n\n\t\tif (!string) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst stringLower = string.toLowerCase();\n\t\tconst numberless = occurrences.get(stringLower.replace(/(?:-\\d+?)+?$/, '')) || 0;\n\t\tconst counter = occurrences.get(stringLower);\n\t\toccurrences.set(stringLower, typeof counter === 'number' ? counter + 1 : 1);\n\t\tconst newCounter = occurrences.get(stringLower) || 2;\n\t\tif (newCounter >= 2 || numberless > 2) {\n\t\t\tstring = `${string}-${newCounter}`;\n\t\t}\n\n\t\treturn string;\n\t};\n\n\tcountable.reset = () => {\n\t\toccurrences.clear();\n\t};\n\n\treturn countable;\n}\n","import slugify from '@sindresorhus/slugify';\n\n/**\n * Transform to lowercase, extract accents to separate unicode chars,\n * replace all accent unicode chars so only standard latin chars remain\n * https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript/37511463#37511463\n *\n * @param str Input string\n * @returns\n */\nexport const hardNormalize = (str: string): string =>\n str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n\n/**\n * Convert a poi name to a URL compatible slug, logic copied from TOPOS\n * @param fragment A poi name\n * @returns\n */\nexport const createSlug = (fragment: string): string =>\n slugify(\n fragment\n .replace(/ \\/ /g, '-')\n .replace(/ /g, '-')\n .replace(/\\//g, '')\n .replace(/\\./g, '')\n .replace(/\\,/g, '')\n .replace(/\\'/g, ''),\n );\n","import { state } from '../../data/store';\nimport { GeocodeLocation, GeocodeResponse, ServiceTypesResponse } from '../../models/geocode.model';\nimport { gisAPIUrl, pois, placesUrl } from './places.settings';\nimport { hardNormalize, createSlug } from './search-utilities';\n\n// Never load types twice\nlet typesCache: string | null = null;\n\n/**\n * Convert Post POI ids to stao cache ids\n * @returns\n */\nconst convertTypes = async () => {\n if (typesCache === null) {\n try {\n const typesResponse = await fetch(`${gisAPIUrl}/Types?lang=${state.currentLanguage}`);\n const typesJSON = (await typesResponse.json()) as ServiceTypesResponse;\n typesCache = encodeURIComponent(\n pois\n .map(poi => {\n const foundType = typesJSON.types.find(type => type.id === poi);\n return foundType?.tag;\n })\n .filter(poi => poi !== undefined)\n .join(','),\n );\n } catch (error) {\n console.error(\n 'Fetching places failed. Did you add \"places.post.ch\" to your connect-src content security policy?',\n );\n throw error;\n }\n }\n\n return typesCache;\n};\n\n/**\n * Query the Gis API for locations and localities (pois)\n *\n * @param query User input string\n * @returns\n */\nexport const queryPlaces = async (query: string): Promise<GeocodeLocation[]> => {\n if (query.length === 0) {\n return [];\n }\n\n const limit = 8;\n const excludeTypes = ['address', 'locality', 'region'];\n const types = await convertTypes();\n const geocoderUrl = `${gisAPIUrl}/Geocode?query=${encodeURIComponent(query)}&lang=${\n state.currentLanguage\n }&pois=${types}&limit=100`;\n\n try {\n const geocodeResponse = await fetch(geocoderUrl);\n const geocodeJSON = (await geocodeResponse.json()) as GeocodeResponse;\n if (!geocodeJSON.ok) {\n throw new Error(geocodeJSON.info);\n }\n return geocodeJSON.locations\n .filter(location => !excludeTypes.includes(location.type))\n .slice(0, limit);\n } catch (error) {\n console.error(\n 'Fetching places failed. Did you add \"places.post.ch\" to your connect-src content security policy?',\n );\n throw error;\n }\n};\n\n/**\n * Try to highlight place suggestions\n * Limitation: accented chars are not handled by this basic function\n *\n * @param query Search term\n * @param place Name of the suggested place\n * @returns\n */\nexport const highlightPlacesString = (query: string | undefined, place: string) => {\n if (query === undefined) return place;\n\n // Strip accents from the string\n const reference = hardNormalize(place);\n const q = hardNormalize(query);\n const indexOfQuery = reference.indexOf(q);\n\n if (indexOfQuery < 0) {\n return place;\n }\n\n return `${place.substring(0, indexOfQuery)}{${place.substring(\n indexOfQuery,\n indexOfQuery + query.length,\n )}}${place.substring(indexOfQuery + query.length, place.length)}`;\n};\n\n/**\n * Get the deeplink to any location found via geocoder\n *\n * @param location A location from the Gis API Geocode endpoint\n * @returns\n */\nexport const getPlacesUrl = (location: GeocodeLocation): string => {\n let url: string;\n\n if (location.id !== '') {\n url = `${placesUrl}/${state.currentLanguage}/${location.id}/${createSlug(location.name)}`;\n } else {\n url = `${placesUrl}?preselecttext=${encodeURIComponent(location.name)}`;\n }\n\n return url;\n};\n","import { h } from '@stencil/core';\n\nexport const HighlightedText = (props: { text: string; highlightClass?: string }) => {\n const highlightClass = props.highlightClass ?? 'bold';\n const highlightedString = props.text\n .replace(/{/g, `<span class=${highlightClass}>`)\n .replace(/}/g, '</span>')\n .replace(/[\\[\\]]/g, '');\n return <span innerHTML={highlightedString}></span>;\n};\n","@use \"@swisspost/design-system-styles/variables/color\";\n@use \"@swisspost/design-system-styles/components/forms\";\n@use \"@swisspost/design-system-styles/components/floating-label\";\n@use \"@swisspost/design-system-styles/components/grid\";\n@use \"../../utils/utils.scss\";\n@use \"../../utils/mixins.scss\";\n\n:host {\n display: block;\n}\n\n.search,\n:host {\n height: 100%;\n}\n\n.search-button {\n @extend %nav-link;\n\n height: 100%;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding-right: calc(1rem - 1px);\n padding-left: calc(1rem - 1px);\n\n @include mixins.min(lg) {\n padding: 0 calc(1.125rem - 1px);\n }\n\n @include mixins.min(xl) {\n padding: 0 calc(1.5rem - 1px);\n }\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n .visually-hidden {\n @include mixins.between(rg, lg) {\n @include mixins.reset-visually-hidden();\n\n font-weight: 300;\n margin-right: 0.5rem;\n cursor: pointer;\n }\n }\n}\n\n.flyout {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n background: white;\n overflow: auto;\n overscroll-behavior: contain;\n padding-top: 3.25rem;\n padding-bottom: 3.25rem;\n z-index: -1;\n transform: translateY(-100%);\n transition: transform 0.35s, box-shadow 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n @include mixins.min(lg) {\n max-height: calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);\n box-shadow: 0 0 1px 0 rgb(0 0 0 / 40%);\n\n &.open {\n box-shadow: 0 0 8px 0 rgb(0 0 0 / 40%);\n }\n }\n\n @include mixins.max(lg) {\n height: calc(100vh - var(--header-height) - 1px);\n }\n\n &.open {\n transform: translateY(0);\n }\n}\n\n.start-search-button {\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n padding-right: 1rem;\n padding-left: 1rem;\n display: flex;\n align-items: center;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n}\n\n.suggestions {\n margin: 1.5rem 0;\n\n a {\n padding: 0.75rem 1rem;\n\n &:hover,\n &:focus,\n &.selected {\n background: color.$gray-background;\n }\n\n &.parcel-suggestion {\n flex-wrap: wrap;\n }\n }\n}\n\n.search-recommendation__icon {\n height: 1.5em;\n width: 1.5em;\n}\n","import { Component, Host, h, State, Event, EventEmitter, Method, Element } from '@stencil/core';\nimport { throttle } from 'throttle-debounce';\nimport { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport { state } from '../../data/store';\nimport { CoveoCompletion } from '../../models/coveo.model';\nimport { GeocodeLocation } from '../../models/geocode.model';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n IsFocusable,\n} from '../../models/header.model';\nimport { getSearchRedirectUrl, equalizeArrays } from '../../services/search/search.service';\nimport { getCoveoSuggestions } from '../../services/search/coveo.service';\nimport {\n getPlacesUrl,\n highlightPlacesString,\n queryPlaces,\n} from '../../services/search/places.service';\nimport { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';\nimport { HighlightedText } from '../../utils/highlighted.component';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { TrackAndTraceInfo } from '../../models/track-and-trace.model';\nimport { getParcelSuggestion } from '../../services/search/parcel.service';\nimport { If } from '../../utils/if.component';\n\n@Component({\n tag: 'post-search',\n styleUrl: 'post-search.scss',\n shadow: true,\n})\nexport class PostSearch implements HasDropdown, IsFocusable {\n @State() searchDropdownOpen = false;\n @State() coveoSuggestions: CoveoCompletion[] = [];\n @State() placeSuggestions: GeocodeLocation[] = [];\n @State() parcelSuggestion: (TrackAndTraceInfo & { url: string }) | null = null;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Element() host: DropdownElement;\n private searchBox?: HTMLInputElement;\n private searchFlyout: HTMLElement | undefined;\n private throttledResize: throttle<() => void>;\n\n connectedCallback() {\n this.throttledResize = throttle(300, () => this.handleResize());\n window.addEventListener('resize', this.throttledResize, { passive: true });\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.throttledResize);\n clearAllBodyScrollLocks();\n }\n\n componentWillUpdate() {\n // Check if search flyout got set to close\n if (this.searchFlyout && !this.searchDropdownOpen) {\n this.searchFlyout.classList.remove('open');\n\n // Check if element has transition applied and whether user prefers to see animations or not\n if (elementHasTransition(this.searchFlyout, 'transform') && !userPrefersReducedMotion()) {\n // Wait for CSS transition 'transform' to end before continuing\n return new Promise<boolean>(resolve => {\n if (this.searchFlyout === undefined) {\n return resolve(true);\n }\n\n this.searchFlyout.addEventListener('transitionend', event => {\n if (event.propertyName === 'transform') {\n resolve(true);\n }\n });\n });\n }\n }\n }\n\n componentDidUpdate() {\n // Search flyout got set to open\n if (this.searchFlyout && this.searchDropdownOpen) {\n // Force browser to redraw/refresh DOM before adding 'open' class\n this.searchFlyout.getBoundingClientRect();\n this.searchFlyout.classList.add('open');\n }\n\n // Focus on the searchBox whenever the dropdown is opened\n if (this.searchDropdownOpen && this.searchBox) {\n this.searchBox.focus({ preventScroll: true });\n }\n }\n\n public async toggleDropdown(event?: Event): Promise<boolean>;\n public async toggleDropdown(force?: boolean): Promise<boolean>;\n\n /**\n * Toggle the dropdown and optionally force an open/closed state\n * @param force Boolean to force open/closed state\n * @returns Boolean indicating open state of the component\n */\n @Method()\n async toggleDropdown(force?: unknown) {\n this.searchDropdownOpen =\n force === undefined || typeof force !== 'boolean' ? !this.searchDropdownOpen : force;\n this.dropdownToggled.emit({ open: this.searchDropdownOpen, element: this.host });\n\n if (!this.searchDropdownOpen) {\n // Reset suggestions when dropdown closes\n this.coveoSuggestions = [];\n this.placeSuggestions = [];\n if (this.searchBox) this.searchBox.value = '';\n this.setFocus();\n } else {\n // Get basic suggestions when dropdown opens\n try {\n this.coveoSuggestions = await getCoveoSuggestions('');\n } catch {}\n }\n\n this.setBodyScroll();\n\n return this.searchDropdownOpen;\n }\n\n /**\n * Sets the focus on the search button\n */\n @Method()\n public async setFocus() {\n const shadowRoot = this.host.shadowRoot;\n if (shadowRoot === null) {\n return;\n }\n const toggleButton = shadowRoot.querySelector<HTMLElement>('.search-button');\n if (toggleButton) {\n toggleButton.focus();\n }\n }\n\n private handleResize() {\n // Only enable/disable body scroll on resize if the search dropdown is open, otherwise this could lead to side effects in other controls\n if (this.searchDropdownOpen) {\n this.setBodyScroll();\n }\n }\n\n /**\n * Disable or re-enable body scrolling, depending on whether search dropdown is open or closed in mobile view (width < 1024px)\n */\n private setBodyScroll() {\n if (this.searchDropdownOpen && window.innerWidth < 1024) {\n disableBodyScroll(this.searchFlyout);\n } else {\n enableBodyScroll(this.searchFlyout);\n }\n }\n\n /**\n * Fetch suggestions from all available sources\n */\n private async handleSearchInput() {\n if (this.searchBox === undefined || state.localizedConfig?.header.search === undefined) {\n return;\n }\n const query = this.searchBox.value.trim();\n\n const [placeSuggestions, coveoSuggestions, trackAndTraceInfo] = await Promise.all([\n queryPlaces(query),\n getCoveoSuggestions(query),\n getParcelSuggestion(query, state.localizedConfig.header.search),\n ]);\n\n // Parcel suggestion is more important than any other\n if (trackAndTraceInfo) {\n this.parcelSuggestion = trackAndTraceInfo;\n this.placeSuggestions = [];\n this.coveoSuggestions = [];\n } else {\n [this.coveoSuggestions, this.placeSuggestions] = equalizeArrays(\n coveoSuggestions,\n placeSuggestions,\n 8,\n );\n }\n\n this.deselectSuggestion();\n }\n\n /**\n * Start search on enter\n * @param event\n */\n private handleKeyDown(event: KeyboardEvent) {\n if (this.searchFlyout === undefined) {\n return;\n }\n\n let selectedSuggestion = this.searchFlyout.querySelector<HTMLElement>(\n '.suggestions > li > a.selected',\n );\n\n switch (event.key.toLowerCase()) {\n case 'enter':\n if (selectedSuggestion) {\n const selectedHref = selectedSuggestion.getAttribute('href');\n if (selectedHref !== null) {\n window.location.href = selectedHref;\n }\n } else {\n this.startSearch();\n }\n\n break;\n case 'arrowdown':\n case 'arrowup':\n const suggestions = this.searchFlyout.querySelectorAll('.suggestions > li > a');\n\n this.deselectSuggestion();\n\n if (event.key.toLowerCase() === 'arrowdown') {\n if (selectedSuggestion?.parentElement?.nextElementSibling?.firstElementChild) {\n // Select next suggestion if there's any, otherwise none will be selected\n selectedSuggestion.parentElement.nextElementSibling.firstElementChild.classList.add(\n 'selected',\n );\n } else {\n // If there are any suggestions, select first suggestion in list\n if (suggestions.length > 0) {\n suggestions[0].classList.add('selected');\n }\n }\n } else if (event.key.toLowerCase() === 'arrowup') {\n if (selectedSuggestion?.parentElement?.previousElementSibling?.firstElementChild) {\n // Select previous suggestion if there's any, otherwise none will be selected\n\n selectedSuggestion.parentElement.previousElementSibling.firstElementChild.classList.add(\n 'selected',\n );\n } else {\n // If there are any suggestions, select last suggestion in list\n if (suggestions.length > 0) {\n suggestions[suggestions.length - 1].classList.add('selected');\n }\n }\n }\n\n // Get the newly selected suggestion\n selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');\n const suggestedText = selectedSuggestion?.dataset.suggestionText;\n\n // Update search box value with selected suggestion text\n if (suggestedText !== undefined && this.searchBox) {\n this.searchBox.value = suggestedText;\n }\n\n break;\n }\n }\n\n /**\n * Set selected suggestion on mouse enter\n * @param event\n */\n private handleMouseEnterSuggestion(event: MouseEvent) {\n this.deselectSuggestion();\n\n // Set hovered suggestion element as selected\n (event.target as HTMLElement).classList.add('selected');\n }\n\n /**\n * Set selected suggestion on mouse enter\n * @param event\n */\n private handleMouseLeaveSuggestions() {\n this.deselectSuggestion();\n }\n\n /**\n * Deselect any previously selected suggestion\n */\n private deselectSuggestion() {\n if (this.searchFlyout === undefined) return;\n\n const selectedSuggestion = this.searchFlyout.querySelector('.suggestions .selected');\n\n if (selectedSuggestion) {\n selectedSuggestion.classList.remove('selected');\n }\n }\n\n /**\n * Redirect to the post search page\n */\n private async startSearch() {\n if (this.searchBox && state.localizedConfig?.header.search) {\n const redirectUrl = await getSearchRedirectUrl(\n this.searchBox.value.trim(),\n state.localizedConfig.header.search,\n );\n if (!redirectUrl) return;\n window.location.href = redirectUrl;\n }\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) {\n return;\n }\n const { translations, search } = state.localizedConfig.header;\n const showPortalRecommendations =\n this.searchBox?.value === '' && search.searchRecommendations?.links.length > 0;\n\n return (\n <Host>\n <SvgSprite />\n <div class=\"search\">\n <button\n id=\"post-internet-header-search-button\"\n class=\"search-button\"\n type=\"button\"\n aria-expanded={`${this.searchDropdownOpen}`}\n onClick={e => this.toggleDropdown(e)}\n >\n <span class=\"visually-hidden\">\n {this.searchDropdownOpen\n ? translations.searchToggleExpanded\n : translations.searchToggle}\n </span>\n <SvgIcon name={this.searchDropdownOpen ? 'pi-close' : 'pi-search'} />\n </button>\n <If condition={this.searchDropdownOpen}>\n <div class=\"flyout\" ref={e => (this.searchFlyout = e)}>\n <div class=\"container box\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-md-10 col-lg-8\">\n <div class=\"form-group form-floating\">\n <input\n type=\"text\"\n id=\"searchBox\"\n class=\"form-control form-control-lg\"\n placeholder={translations.flyoutSearchBoxFloatingLabel}\n autocomplete=\"off\"\n ref={el => (this.searchBox = el)}\n onInput={() => this.handleSearchInput()}\n onKeyDown={e => this.handleKeyDown(e)}\n />\n <label htmlFor=\"searchBox\">{translations.flyoutSearchBoxFloatingLabel}</label>\n <button\n onClick={() => this.startSearch()}\n class=\"nav-link start-search-button\"\n >\n <span class=\"visually-hidden\">{translations.searchSubmit}</span>\n <SvgIcon name=\"pi-search\" />\n </button>\n </div>\n {showPortalRecommendations && (\n <h2 class=\"bold\">{search.searchRecommendations.title}</h2>\n )}\n <ul\n class=\"suggestions no-list\"\n onMouseLeave={() => this.handleMouseLeaveSuggestions()}\n >\n {showPortalRecommendations &&\n search.searchRecommendations.links.map(recommendation => (\n <li key={recommendation.href}>\n <a\n class=\"nav-link search-recommendation\"\n href={new URL(recommendation.href, 'https://post.ch').href}\n data-suggestion-text={recommendation.label}\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\n >\n <span\n class=\"search-recommendation__icon\"\n innerHTML={recommendation.inlineSvg}\n ></span>\n <span>{recommendation.label}</span>\n </a>\n </li>\n ))}\n {this.parcelSuggestion && this.parcelSuggestion.ok && (\n <li>\n <a\n class=\"nav-link parcel-suggestion\"\n href={this.parcelSuggestion.url}\n data-suggestion-text={this.searchBox?.value}\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\n >\n <SvgIcon name=\"pi-letter-parcel\" />\n <span class=\"bold\">{this.parcelSuggestion?.sending?.id}:&nbsp;</span>\n <span>\n {this.parcelSuggestion?.sending?.product},{' '}\n {this.parcelSuggestion?.sending?.recipient.zipcode}{' '}\n {this.parcelSuggestion?.sending?.recipient.city},{' '}\n {this.parcelSuggestion?.sending?.state}\n </span>\n </a>\n </li>\n )}\n {!showPortalRecommendations &&\n this.coveoSuggestions &&\n this.coveoSuggestions.map(suggestion => (\n <li key={suggestion.objectId}>\n <a\n class=\"nav-link\"\n href={suggestion.redirectUrl}\n data-suggestion-text={suggestion.expression}\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\n >\n <SvgIcon name=\"pi-search\" />\n <HighlightedText text={suggestion.highlighted} />\n </a>\n </li>\n ))}\n {!showPortalRecommendations &&\n this.placeSuggestions &&\n this.placeSuggestions.map(suggestion => (\n <li key={suggestion.id}>\n <a\n class=\"nav-link\"\n href={getPlacesUrl(suggestion)}\n data-suggestion-text={suggestion.name}\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\n >\n <SvgIcon name=\"pi-place\" />\n <HighlightedText\n text={highlightPlacesString(\n this.searchBox?.value?.trim(),\n suggestion.name,\n )}\n />\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </If>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"w8EAOO,IAAMA,EAAyB,SAACC,GACrC,IAAMC,EAAOC,EAAMC,gBACnB,MAAO,uBAAAC,OAAuBH,EAAI,0BAAAG,OAAyBC,mBAAmBL,GAChF,EAGO,IAAMM,EAA8B,SACzCC,EACAC,G,IAAEC,EAA0BD,EAAAC,2BAE5B,OAAOA,EAA2BC,QAAQ,mBAAoBL,mBAAmBE,GACnF,EAQO,IAAMI,EAAW,SAAOJ,EAAeK,GAA2B,OAAAC,UAAAC,OAAA,qB,kEACpD,SAAMC,EAAcR,EAAOK,I,OAAxCI,EAAaR,EAAAS,OACnB,SAAOD,EAAWE,I,QAUb,IAAMH,EAAgB,SAC3BR,EACAC,G,IAAEW,EAAeX,EAAAW,gB,qHAEXC,EAAoB,IAAIC,OAAOF,G,IAEjCC,EAAkBE,KAAKf,GAAvB,Y,uCAE4B,SAAMgB,MAAMxB,EAAuBQ,K,OAAzDiB,EAAsBC,EAAAR,OACA,SAAMO,EAAoBE,Q,OAAhDC,EAAsBF,EAAAR,OAC5B,SAAAW,OAAAC,OAAAD,OAAAC,OAAA,GAAYF,GAAmB,CAAET,GAAIS,EAAoBT,KAAO,U,kBAEhEY,QAAQC,KAAK,qDAAA3B,OAAqD4B,EAAMC,U,mBAI5E,SAAO,CAAEf,GAAI,MAAOgB,WAAW,IAAIC,MAAOC,iB,QASrC,IAAMC,EAAsB,SACjC9B,EACAK,GAA2B,OAAAC,UAAAC,OAAA,qB,kEAER,SAAMC,EAAcR,EAAOK,I,OAAxCI,EAAaR,EAAAS,OACnB,SAAOD,EAAWE,G,+BACTF,GAAU,CAAEsB,IAAKhC,EAA4BC,EAAOK,KACzD,M,QC5DC,IAAM2B,EAAuB,SAClChC,EACAK,GAA2B,OAAAC,UAAAC,OAAA,qB,kEAEJ,SAAMH,EAASJ,EAAOK,I,OAAvC4B,EAAiBhC,EAAAS,OACvB,SAAOuB,EACHlC,EAA4BC,EAAOK,GACnC6B,EAAiBlC,I,QAShB,IAAMkC,EAAmB,SAAClC,G,MAC/B,KAAImC,EAAAxC,EAAMyC,mBAAe,MAAAD,SAAA,SAAAA,EAAEE,OAAOC,UAAWC,UAAW,CACtD,M,CAEM,IAAAC,EAAkB7C,EAAMyC,gBAAgBC,OAAOC,OAAME,cAC7D,IAAMC,EAAc,MAAA5C,OAAMC,mBAAmBE,IAC7C,MAAO,GAAAH,OAAG2C,GAAa3C,OAAG4C,EAAW,YACvC,EAUO,IAAMC,EAAiB,SAAOC,EAAaC,EAAaC,GAAA,GAAAA,SAAA,GAAAA,EAAA,CAAa,CAC1E,IAAMC,EAAcH,EAAOI,MAAM,EAAGC,KAAKC,IAAIJ,EAAY,EAAGA,EAAYD,EAAOM,SAC/E,MAAO,CAACJ,EAAaF,EAAOG,MAAM,EAAGF,EAAYC,EAAYI,QAC/D,EC3CO,IAAMC,EAAsB,CACjCpB,IAAK,kEACLqB,YAAa,CACXC,KAAM,CACJC,aAAc,uBACdC,MAAO,0CAETC,MAAO,CACLF,aAAc,0BACdC,MAAO,0CAETE,MAAO,CACLH,aAAc,0BACdC,MAAO,4CCJN,IAAMG,EAAsB,SAAO1D,GAAa,OAAAM,UAAAC,OAAA,qB,sFACrD,KAAIoD,GAAAxB,EAAAxC,EAAMyC,mBAAe,MAAAD,SAAA,SAAAA,EAAEE,UAAM,MAAAsB,SAAA,SAAAA,EAAErB,UAAWC,UAAW,SAAO,IAC1DqB,EAASjE,EAAMyC,gBAAgBC,OAAOC,OACtCrC,EAA0BkD,EAAMC,YAAYzD,EAAMyD,aAAhDG,EAAKtD,EAAAsD,MAAED,EAAYrD,EAAAqD,aACrBvB,EAAM,GAAAlC,OAAGsD,EAAMpB,IAAG,OAAAlC,OAAMG,EAAK,YAAAH,OAAWF,EAAMC,gBAAe,eAAAC,OAAc+D,EAAOC,cAAa,cAAAhE,OAAa+D,EAAOE,mBAAkB,oBAAAjE,OAAmByD,G,uCAItI,SAAMtC,MAAMe,EAAK,CACrCgC,OAAQ,MACRC,QAAS,CACPC,cAAe,UAAApE,OAAU0D,O,OAHvBW,EAAgBhD,EAAAR,OAMH,SAAMwD,EAAc/C,Q,OAAjCgD,EAAajD,EAAAR,OACnB0D,EAAmBD,EAAUE,YAAYC,KAAI,SAAAC,GAAU,OAAAlD,OAAAC,OAAAD,OAAAC,OAAA,GAClDiD,GAAU,CACbC,YAAatC,EAAiBqC,EAAWE,aAFY,I,8BAKvDlD,QAAQmD,MACN,2I,mBAIJ,SAAON,IAAqB7B,UAAY,GAAK6B,G,QCpCxC,IAAMO,EAAY,wDAClB,IAAMC,EAAY,yBAClB,IAAMC,EAAO,CAClB,SACA,UACA,aACA,WACA,UACA,QACA,SACA,QACA,SACA,SCba,SAASC,EAAmBC,GAC1C,UAAWA,IAAW,SAAU,CAC/B,MAAM,IAAIC,UAAU,oB,CAKrB,OAAOD,EACL5E,QAAQ,sBAAuB,QAC/BA,QAAQ,KAAM,QACjB,CCVA,IAAM8E,EAAe,CAEpB,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,KAAM,KACP,CAAC,IAAK,KACN,CAAC,KAAM,KACP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,OAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,OACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,IAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAcN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,KAAM,MACP,CAAC,KAAM,MAGP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KA0CN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KAGN,CAAC,IAAK,MACN,CAAC,IAAK,MAWN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KAGP,CAAC,KAAM,KACP,CAAC,KAAM,KAGP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OAGN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KAGN,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAA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"}
@@ -1,2 +0,0 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,n,i){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i["throw"](e))}catch(e){r(e)}}function l(e){e.done?n(e.value):o(e.value).then(a,s)}l((i=i.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var n={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},i,o,r,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(e){return function(t){return l([e,t])}}function l(s){if(i)throw new TypeError("Generator is already executing.");while(a&&(a=0,s[0]&&(n=0)),n)try{if(i=1,o&&(r=s[0]&2?o["return"]:s[0]?o["throw"]||((r=o["return"])&&r.call(o),0):o.next)&&!(r=r.call(o,s[1])).done)return r;if(o=0,r)s=[s[0]&2,r.value];switch(s[0]){case 0:case 1:r=s;break;case 4:n.label++;return{value:s[1],done:false};case 5:n.label++;o=s[1];s=[0];continue;case 7:s=n.ops.pop();n.trys.pop();continue;default:if(!(r=n.trys,r=r.length>0&&r[r.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!r||s[1]>r[0]&&s[1]<r[3])){n.label=s[1];break}if(s[0]===6&&n.label<r[1]){n.label=r[1];r=s;break}if(r&&n.label<r[2]){n.label=r[2];n.ops.push(s);break}if(r[2])n.ops.pop();n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e];o=0}finally{i=r=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++){if(r||!(i in t)){if(!r)r=Array.prototype.slice.call(t,0,i);r[i]=t[i]}}return e.concat(r||Array.prototype.slice.call(t))};System.register(["./p-1b8f9bc8.system.js","./p-9b4d5e90.system.js","./p-324563ab.system.js","./p-0c5624c0.system.js","./p-7fcba2e7.system.js","./p-ffc59851.system.js","./p-ee119d2e.system.js","./p-edb2802d.system.js"],(function(e){"use strict";var t,n,i,o,r,a,s,l,d,u,c,h,f,g,p;return{setters:[function(e){t=e.r;n=e.c;i=e.h;o=e.H;r=e.g},function(e){a=e.t;s=e.d},function(e){l=e.g;d=e.p},function(e){u=e.u},function(e){c=e.s;h=e.d},function(e){f=e.S},function(e){g=e.S},function(e){p=e.I}],execute:function(){var v=this;var m=function(e,t){if(t===false){return e}var n;e=b(e);if(t==="auto"||t==="exact"){if(y(e)){return w(e)}n=new URL(window.location.href)}else{try{n=new URL(t,document.location.origin)}catch(n){console.warn("Active Route: ".concat(t," is not a valid URL. Navigation highlighting has been disabled."));return e}}var i=x(e,n,t);if(i.length===0){return e}var o=i[0];o.main.isActiveOverride=true;if(o.sub)o.sub.isActiveOverride=true;return e};var y=function(e){return e.filter((function(e){return e.isActive})).length>0};var w=function(e){return e.map((function(e){return Object.assign(Object.assign({},e),{isActiveOverride:e.isActive,flyout:e.flyout.map((function(e){return Object.assign(Object.assign({},e),{linkList:e.linkList.map((function(e){return Object.assign(Object.assign({},e),{isActiveOverride:e.isActive})}))})}))})}))};var b=function(e){return e.map((function(e){return Object.assign(Object.assign({},e),{isActiveOverride:false,flyout:e.flyout.map((function(e){return Object.assign(Object.assign({},e),{linkList:e.linkList.map((function(e){return Object.assign(Object.assign({},e),{isActiveOverride:false})}))})}))})}))};var x=function(e,t,n){var i=false;var o=[];e.forEach((function(e){if(i||!e){return}try{var r=k(t,new URL(e.url),n);if(r>0){if(r===Infinity)i=true;o.push({main:e,score:r})}}catch(e){}if(e.flyout.length){e.flyout.forEach((function(r){if(r.linkList){r.linkList.forEach((function(r){if(r.isActive&&(n==="auto"||n==="exact")){i=true;return}try{var a=new URL(r.url);var s=k(t,a,n);if(s>0){if(s===Infinity)i=true;o.push({main:e,sub:r,score:s})}}catch(e){}}))}}))}}));return o.sort((function(e,t){return t.score-e.score}))};var k=function(e,t,n){if(!e||!t||e.origin!==t.origin){return 0}if(e.pathname===t.pathname){return Infinity}if(e.pathname.length<t.pathname.length){return 0}if(n==="auto"){var i=__spreadArray([e.origin],e.pathname.split("/").filter((function(e){return!!e})),true);var o=__spreadArray([t.origin],t.pathname.split("/").filter((function(e){return!!e})),true);var r=C(i,o);return Math.min(i.length,o.length)===r?r:0}return 0};var C=function(e,t){if(!(e===null||e===void 0?void 0:e.length)||!(t===null||t===void 0?void 0:t.length)){return 0}var n=0;for(;n<Math.min(e.length,t.length);n++){if(e[n]!==t[n]){return 0}}return n};var O=null;var j=null;var _=function(e){var t=e.projectId,n=e.environment,i=e.language,o=e.cookieKey,r=e.localStorageKey,a=e.activeRouteProp,s=e.localizedCustomConfig,u=e.osFlyoutOverrides;return __awaiter(v,void 0,void 0,(function(){var e,c,h,f,g,p;return __generator(this,(function(v){switch(v.label){case 0:if(!O){O=S(t,n)}return[4,O];case 1:h=v.sent();f=l(Object.keys(h),i,r,o);if(f===undefined){throw new Error("Internet Header: unable to determine current language")}g=Object.assign({},h[f]);if(s){p=((e=s===null||s===void 0?void 0:s.header)===null||e===void 0?void 0:e.navMain)?Object.assign(Object.assign({},g.header),{navMain:__spreadArray(__spreadArray([],g.header.navMain,true),s.header.navMain,true)}):g.header;g=Object.assign(Object.assign({},g),{header:p})}if(u)g.header.navMain=L(g,u);if(a)g.header.navMain=m(g.header.navMain,a);D((c=g===null||g===void 0?void 0:g.header)===null||c===void 0?void 0:c.navMain);d(f,o,r);return[2,g]}}))}))};var L=function(e,t){if(!t)return e.header.navMain;return e.header.navMain.map((function(e){var n,i;if(e.id!=="flyout_os")return e;if(j===null){j=JSON.parse(JSON.stringify(e))}var o=(n=t.text)!==null&&n!==void 0?n:j.text;var r=(i=t.title)!==null&&i!==void 0?i:j.title;if(!j.flyout||j.flyout.length===0||!t.flyout||t.flyout.length===0)return Object.assign(Object.assign({},e),{title:r,text:o});var a=__spreadArray(__spreadArray([],j.flyout.map((function(e,n){var i;var o=t.flyout[n];var r=(i=o.title)!==null&&i!==void 0?i:e.title;var a=o.linkList?t.flyout[n].linkList:[];return{title:r,linkList:__spreadArray(__spreadArray([],e.linkList,true),a,true)}})),true),t.flyout.slice(j.flyout.length),true);return Object.assign(Object.assign({},e),{text:o,title:r,flyout:a})}))};var S=function(e,t){return __awaiter(v,void 0,void 0,(function(){var n,i,o;return __generator(this,(function(r){switch(r.label){case 0:if(!E(e)){throw new Error('Internet Header: invalid project id "'.concat(e,'"'))}if(e==="test"){t="int01"}n=F(e,t);r.label=1;case 1:r.trys.push([1,4,,5]);return[4,fetch(n)];case 2:i=r.sent();return[4,i.json()];case 3:return[2,r.sent()];case 4:o=r.sent();throw new Error("Internet Header: fetching config failed. ".concat(o.message));case 5:return[2]}}))}))};var F=function(e,t){if(e==="test")return"assets/config/test-configuration.json";var n=t.toLowerCase();var i=n.startsWith("int");var o="https://".concat(i?"int":"www",".post.ch");try{return new URL("".concat(o,"/api/headerjs/Json?serviceid=").concat(encodeURIComponent(e)).concat(i?"&environment="+n:"")).toString()}catch(e){throw new Error("Internet Header: Config URL is invalid.")}};var E=function(e){return e!==""&&e.length>0&&/^[a-zA-Z][\w-]*[a-zA-Z0-9]$/.test(e)};var z=function(e,t){var n;var i;try{i=typeof e==="string"?JSON.parse(e):e}catch(e){throw new Error("Internet Header: Custom config is invalid. Make sure your custom config contains valid JSON syntax and matches the definition. ")}var o=i[t];if((n=o===null||o===void 0?void 0:o.header)===null||n===void 0?void 0:n.navMain)D(o.header.navMain);return o};var D=function(e){e.forEach((function(e){e.id=e.id==="flyout_os"?e.id:u("main-nav-")}))};var A="@swisspost/internet-header";var N="1.5.2";var R="Swiss Post Internet Header";var K="Apache-2.0";var M="loader/index.cjs.js";var P="loader/index.js";var I="loader/index.es2017.js";var W="loader/index.es2017.js";var T="loader/index.d.ts";var H="dist/collection/collection-manifest.json";var U="loader/cdn.js";var J={access:"public"};var B=["dist/","loader/"];var q={build:"npm run stencil:build",clean:"rimraf www dist loader storybook-static",start:"npm run stencil:serve",test:"jest",lint:"eslint src/**/*{.ts,.tsx}","lint:fix":"eslint src/**/*{.ts,.tsx} --fix","stencil:start":"stencil build --docs --watch","stencil:build":"stencil build --docs","stencil:serve":"stencil build --watch --serve --docs",generate:"stencil generate",jest:"jest","jest:watch":"jest --watch"};var G={"@sindresorhus/slugify":"2.2.0","@stencil/core":"3.0.0","@stencil/store":"2.0.3","body-scroll-lock":"4.0.0-beta.0","iframe-resizer":"4.3.3",jquery:"3.6.3",tabbable:"6.0.1","throttle-debounce":"5.0.0","url-polyfill":"1.1.12"};var X={"@babel/core":"7.20.12","@stencil/eslint-plugin":"0.4.0","@stencil/sass":"2.0.3","@swisspost/design-system-styles":"5.3.1","@types/iframe-resizer":"3.5.9","@types/jest":"27.5.2","@types/jquery":"3.5.16","@types/node":"18.11.19","@types/throttle-debounce":"5.0.0","babel-loader":"9.1.2",bootstrap:"5.1","eslint-plugin-react":"^7.32.0",globby:"13.1.3",jest:"27.5.1",rimraf:"4.1.2","rollup-plugin-node-polyfills":"0.2.1","rollup-plugin-scss":"4.0.0","rollup-plugin-visualizer":"5.9.0",sass:"1.58.0","start-server-and-test":"1.15.3","ts-jest":"27.1.5",typescript:"4.8.4"};var Y={name:A,version:N,description:R,license:K,main:M,module:P,es2015:I,es2017:W,"jsnext:main":"loader/index.es2017.js",types:T,collection:H,"collection:main":"dist/collection/index.js",unpkg:U,publishConfig:J,files:B,scripts:q,dependencies:G,devDependencies:X};var Z='@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post", system-ui, sans-serif}button{font:inherit;padding:0}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:white}}.no-list{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}.btn-blank{background-color:transparent;border:none;border-radius:0;padding:0}.nav-link{text-decoration:none;color:rgba(0, 0, 0, 0.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.5rem}.nav-link:hover,.nav-link:focus{color:black}.nav-link>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span{-ms-flex-negative:1;flex-shrink:1}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px) and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{display:block;position:relative;font-size:1rem;font-weight:300;z-index:var(--header-z-index, 10);--header-height:3.5rem;--meta-header-height:0px;--language-dropdown-margin-top:0px}@media (min-width: 1024px){:host{--meta-header-height:3rem;--header-height:4rem}}@media (min-width: 1280px){:host{--header-height:4.5rem}}:host([meta=false]){--meta-header-height:0px;--language-dropdown-margin-top:1px}@supports ((position: -webkit-sticky) or (position: sticky)){:host(:not(.stickyness-none)){position:-webkit-sticky;position:sticky}:host(.stickyness-full){top:0}:host(.stickyness-main){top:calc(var(--meta-header-height, 0px) * -1)}:host(.stickyness-minimal){top:calc((var(--header-height, 0px) + var(--meta-header-height, 0px)) * -1);-webkit-transition:top 200ms ease-in;transition:top 200ms ease-in}:host(.stickyness-minimal.scrolling-up),:host(.stickyness-minimal.dropdown-open){top:calc(var(--meta-header-height, 0px) * -1);-webkit-transition:top 200ms ease-out;transition:top 200ms ease-out}}.post-internet-header{border-bottom:1px solid #e6e6e6;background-color:white}.main-navigation-container{display:-ms-flexbox;display:flex}.main-navigation-container>.main-navigation-controls{-ms-flex:0 0 auto;flex:0 0 auto}.main-navigation{display:-ms-flexbox;display:flex}.sub-navigation-container{position:absolute;top:100%;left:0;width:100%;display:-ms-flexbox;display:flex;background:white;visibility:hidden}.main-navigation-item:hover .sub-navigation-container{visibility:visible}.main-navigation-controls{display:-ms-flexbox;display:flex;margin-left:auto}@media (max-width: 1023.98px){.main-navigation-controls{font-weight:400}}@media (min-width: 1024px){.main-navigation-controls{font-size:1.0625rem}}.main-navigation-controls>*{border-left:1px solid #e6e6e6}.menu-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0 calc(1rem - 1px);font-weight:300;cursor:pointer;border-left:1px solid #e6e6e6;-ms-flex-order:1;order:1;}@media (min-width: 1024px){.menu-button{display:none}}@media (min-width: 600px) and (max-width: 1023.98px){.menu-button .visually-hidden{position:static;width:auto;height:auto;margin:auto;overflow:visible;clip:auto;visibility:visible;margin-right:0.5rem}}.menu-button svg{width:1.5rem;height:1.5rem}.full-width .wide-container{max-width:none}';var V=e("swisspost_internet_header",function(){function e(e){t(this,e);this.headerLoaded=n(this,"headerLoaded",7);this.lastScrollTop=window.scrollY||document.documentElement.scrollTop;this.lastWindowWidth=window.innerWidth;this.handleClickOutsideBound=this.handleClickOutside.bind(this);this.project=undefined;this.stickyness="minimal";this.language=undefined;this.meta=true;this.login=true;this.search=true;this.skiplinks=true;this.configProxy=undefined;this.environment="prod";this.languageSwitchOverrides=undefined;this.customConfig=undefined;this.languageCookieKey=undefined;this.languageLocalStorageKey="swisspost-internet-header-language";this.activeRoute="auto";this.osFlyoutOverrides=undefined;this.fullWidth=false;this.activeFlyout=null;this.activeDropdownElement=null;if(this.project===undefined||this.project===""||!E(this.project)){throw new Error('Internet Header project key is "'.concat(this.project,'". Please provide a valid project key.'))}}e.prototype.getCurrentLanguage=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){return[2,(e=c.currentLanguage)!==null&&e!==void 0?e:"de"]}))}))};e.prototype.connectedCallback=function(){var e=this;this.throttledScroll=a(300,(function(){return e.handleScrollEvent()}));this.debouncedResize=s(200,(function(){return e.handleResize()}));window.addEventListener("scroll",this.throttledScroll,{passive:true});window.addEventListener("resize",this.debouncedResize,{passive:true})};e.prototype.disconnectedCallback=function(){window.removeEventListener("scroll",this.throttledScroll);window.removeEventListener("resize",this.debouncedResize);h()};e.prototype.componentWillLoad=function(){return __awaiter(this,void 0,void 0,(function(){var e,t;return __generator(this,(function(n){switch(n.label){case 0:n.trys.push([0,2,,3]);c.projectId=this.project;c.environment=this.environment;if(this.language!==undefined)c.currentLanguage=this.language;c.languageSwitchOverrides=typeof this.languageSwitchOverrides==="string"?JSON.parse(this.languageSwitchOverrides):this.languageSwitchOverrides;c.osFlyoutOverrides=typeof this.osFlyoutOverrides==="string"?JSON.parse(this.osFlyoutOverrides):this.osFlyoutOverrides;if(this.customConfig!==undefined&&c.currentLanguage!==null){c.localizedCustomConfig=z(this.customConfig,c.currentLanguage)}e=c;return[4,_({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:c.localizedCustomConfig,osFlyoutOverrides:c.osFlyoutOverrides})];case 1:e.localizedConfig=n.sent();return[3,3];case 2:t=n.sent();console.error(t);return[3,3];case 3:return[2]}}))}))};e.prototype.componentDidLoad=function(){var e=this;window.requestAnimationFrame((function(){e.handleResize();e.headerLoaded.emit();e.host.classList.add("header-loaded")}))};e.prototype.handleLanguageChange=function(e){return __awaiter(this,void 0,void 0,(function(){var t;return __generator(this,(function(n){switch(n.label){case 0:c.currentLanguage=e;t=c;return[4,_({projectId:this.project,environment:this.environment,language:e,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:c.localizedCustomConfig,osFlyoutOverrides:c.osFlyoutOverrides})];case 1:t.localizedConfig=n.sent();if(this.customConfig)c.localizedCustomConfig=z(this.customConfig,e);return[2]}}))}))};e.prototype.handleAvailableLanguagesChage=function(e){c.languageSwitchOverrides=typeof e==="string"?JSON.parse(e):e};e.prototype.handleOsFlyoutOverrides=function(e){return __awaiter(this,void 0,void 0,(function(){var t;return __generator(this,(function(n){switch(n.label){case 0:c.osFlyoutOverrides=typeof e==="string"?JSON.parse(e):e;t=c;return[4,_({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:c.localizedCustomConfig,osFlyoutOverrides:c.osFlyoutOverrides})];case 1:t.localizedConfig=n.sent();return[2]}}))}))};e.prototype.handleActiveRouteChange=function(e){return __awaiter(this,void 0,void 0,(function(){var t;return __generator(this,(function(n){switch(n.label){case 0:t=c;return[4,_({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:e,localizedCustomConfig:c.localizedCustomConfig,osFlyoutOverrides:c.osFlyoutOverrides})];case 1:t.localizedConfig=n.sent();return[2]}}))}))};e.prototype.handleCustomConfigChange=function(e){return __awaiter(this,void 0,void 0,(function(){var t,n;return __generator(this,(function(i){switch(i.label){case 0:if(this.language===undefined)return[2];t=z(e,this.language);c.localizedCustomConfig=t;n=c;return[4,_({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:t,osFlyoutOverrides:c.osFlyoutOverrides})];case 1:n.localizedConfig=i.sent();return[2]}}))}))};e.prototype.handleSearchChange=function(e){c.search=e};e.prototype.handleLoginChange=function(e){c.login=e};e.prototype.handleMetaChange=function(e){c.meta=e};e.prototype.handleLanguageChangeEvent=function(e){this.handleLanguageChange(e.detail)};e.prototype.handleClickOutside=function(e){if(this.activeDropdownElement&&!e.composedPath().includes(this.activeDropdownElement)){this.activeDropdownElement.toggleDropdown(false)}};e.prototype.handleKeyUp=function(e){if(e.key==="Escape"){if(this.activeDropdownElement){this.activeDropdownElement.toggleDropdown(false)}if(this.activeFlyout!==null&&this.mainNav){this.mainNav.toggleDropdown(false)}}};e.prototype.handleScrollEvent=function(){var e=window.scrollY||document.documentElement.scrollTop;if(this.stickyness==="minimal"){this.host.classList.toggle("scrolling-up",e<=this.lastScrollTop)}this.lastScrollTop=e<=0?0:e};e.prototype.handleResize=function(){var e;if(this.isMainNavOpen()&&this.lastWindowWidth<1024&&window.innerWidth>=1024){(e=this.activeDropdownElement)===null||e===void 0?void 0:e.toggleDropdown(false)}this.lastWindowWidth=window.innerWidth};e.prototype.handleDropdownToggled=function(e){var t=this;if(!e.detail.open&&this.activeDropdownElement!==e.detail.element){return}if(e.detail.open===true){if(this.activeDropdownElement){this.activeDropdownElement.toggleDropdown(false)}this.activeDropdownElement=e.detail.element;if(window.innerWidth>=1024){window.setTimeout((function(){window.addEventListener("click",t.handleClickOutsideBound)}),10)}if(this.activeFlyout!==null&&this.mainNav){this.mainNav.setActiveFlyout(null)}}else{this.activeDropdownElement=null;window.removeEventListener("click",this.handleClickOutsideBound)}};e.prototype.handleFlyoutToggled=function(e){this.activeFlyout=e.detail;if(this.activeDropdownElement&&e.detail&&!this.isMainNavOpen()){this.activeDropdownElement.toggleDropdown(false)}};e.prototype.toggleMobileDropdown=function(){var e;(e=this.mainNav)===null||e===void 0?void 0:e.toggleDropdown()};e.prototype.isMainNavOpen=function(){return this.activeDropdownElement&&this.activeDropdownElement.tagName==="POST-MAIN-NAVIGATION"};e.prototype.render=function(){var e=this;var t,n,r;if(!((t=c.localizedConfig)===null||t===void 0?void 0:t.header)){console.error(new Error("Internet Header: Config cannot be loaded"));return}var a=c.localizedConfig;var s=this.meta&&a.header.navMeta!==undefined&&((n=a.header.navMeta)===null||n===void 0?void 0:n.filter((function(e){return!e.isHomeLink})).length)>0;var l=((r=this.login)!==null&&r!==void 0?r:!a.header.isLoginWidgetHidden)&&a.header.loginWidgetOptions;var d=a.header.navLang.length>1;return i(o,{class:"stickyness-".concat(this.stickyness," ").concat(this.activeDropdownElement||this.activeFlyout?"dropdown-open":""),"data-version":Y.version,onKeyup:function(t){return e.handleKeyUp(t)}},i("header",{class:"post-internet-header".concat(this.fullWidth?" full-width":"")},i(f,null),i(p,{condition:this.skiplinks===true},i("post-skiplinks",null)),i(p,{condition:s===true},i("post-meta-navigation",{orientation:"horizontal",class:"hidden-lg","full-width":this.fullWidth},i(p,{condition:d===true},i("post-language-switch",{id:"post-language-switch-desktop",mode:"dropdown",onDropdownToggled:function(t){return e.handleDropdownToggled(t)}})))),i("div",{class:"main-navigation-container wide-container"},i("post-logo",null),i("button",{class:"menu-button nav-link",onClick:function(){return e.toggleMobileDropdown()}},i("span",{class:"menu-button-text visually-hidden"},a.header.mobileMenu.text),i(g,{name:this.isMainNavOpen()?"pi-close":"pi-menu"})),i("post-main-navigation",{onDropdownToggled:function(t){return e.handleDropdownToggled(t)},onFlyoutToggled:function(t){return e.handleFlyoutToggled(t)},ref:function(t){return e.mainNav=t}},i(p,{condition:s===true},i("post-meta-navigation",{orientation:"vertical"},i(p,{condition:d===true},i("post-language-switch",{id:"post-language-switch-mobile",mode:"list"}))))),i("div",{class:"main-navigation-controls"},i(p,{condition:this.search!==false},i("post-search",{onDropdownToggled:function(t){return e.handleDropdownToggled(t)}})),i(p,{condition:!!l},i("post-klp-login-widget",null,i("slot",{name:"login-widget"}))),i(p,{condition:s===false&&d===true},i("post-language-switch",{id:"post-language-switch-no-meta",onDropdownToggled:function(t){return e.handleDropdownToggled(t)},mode:"dropdown"})),i("slot",{name:"main"})))))};Object.defineProperty(e.prototype,"host",{get:function(){return r(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{language:["handleLanguageChange"],languageSwitchOverrides:["handleAvailableLanguagesChage"],osFlyoutOverrides:["handleOsFlyoutOverrides"],activeRoute:["handleActiveRouteChange"],customConfig:["handleCustomConfigChange"],search:["handleSearchChange"],login:["handleLoginChange"],meta:["handleMetaChange"]}},enumerable:false,configurable:true});return e}());V.style=Z}}}));
2
- //# sourceMappingURL=p-4f39b3a4.system.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["markActiveRoute","config","activeRouteProp","compareUrl","resetOverrideConfig","hasActivePortalRoute","resetActiveStateToPortalConfig","URL","window","location","href","document","origin","error","console","warn","concat","scoreList","compileScoreList","length","winnerPair","main","isActiveOverride","sub","filter","nav","isActive","map","Object","assign","flyout","linkList","link","hadAnyActiveLink","forEach","mainNav","score","compareRoutes","url","Infinity","push","_a","linklist","sort","a","b","baseUrl","matchMode","pathname","baseSegments","__spreadArray","split","x","compareSegments","getSimilarityScore","Math","min","i","request","osFlyoutCache","getLocalizedConfig","_d","projectId","environment","language","cookieKey","localStorageKey","localizedCustomConfig","osFlyoutOverrides","fetchConfig","_e","sent","lang","getUserLang","keys","undefined","Error","localizedConfig","header","navMain","mergeOsFlyoutOverrides","setMainNavigationIds","_b","persistLanguageChoice","id","JSON","parse","stringify","mainNavText","text","mainNavTitle","title","mainNavFlyout","col","index","overrides","slice","__awaiter","_this","isValidProjectId","generateConfigUrl","fetch","res","json","error_1","message","parsedEnvironment","toLowerCase","isInt","startsWith","host","encodeURIComponent","toString","test","getLocalizedCustomConfig","customConfig","navMainEntities","navMainEntity","uniqueId","postInternetHeaderCss","PostInternetHeader","exports","class_1","hostRef","this","lastScrollTop","scrollY","documentElement","scrollTop","lastWindowWidth","innerWidth","handleClickOutsideBound","handleClickOutside","bind","project","prototype","getCurrentLanguage","state","currentLanguage","connectedCallback","throttledScroll","throttle","handleScrollEvent","debouncedResize","debounce","handleResize","addEventListener","passive","disconnectedCallback","removeEventListener","dispose","componentWillLoad","languageSwitchOverrides","languageCookieKey","languageLocalStorageKey","activeRoute","error_2","componentDidLoad","requestAnimationFrame","headerLoaded","emit","classList","add","handleLanguageChange","newValue","handleAvailableLanguagesChage","handleOsFlyoutOverrides","handleActiveRouteChange","handleCustomConfigChange","handleSearchChange","search","handleLoginChange","login","handleMetaChange","meta","handleLanguageChangeEvent","event","detail","activeDropdownElement","composedPath","includes","toggleDropdown","handleKeyUp","key","activeFlyout","st","stickyness","toggle","isMainNavOpen","handleDropdownToggled","open","element","setTimeout","setActiveFlyout","handleFlyoutToggled","toggleMobileDropdown","tagName","render","renderMetaNavigation","navMeta","isHomeLink","renderLogin","_c","isLoginWidgetHidden","loginWidgetOptions","renderLanguageSwitch","navLang","h","Host","class","packageJson","version","onKeyup","e","fullWidth","SvgSprite","If","condition","skiplinks","orientation","mode","onDropdownToggled","onClick","mobileMenu","SvgIcon","name","onFlyoutToggled","ref","el"],"sources":["src/services/route.service.ts","src/services/config.service.ts","src/components/post-internet-header/post-internet-header.scss?tag=swisspost-internet-header&encapsulation=shadow","src/components/post-internet-header/post-internet-header.tsx"],"sourcesContent":["import { ActiveRouteProp } from '../models/general.model';\nimport { NavMainEntity, MainNavScoreList } from '../models/header.model';\n\n/**\n * Activate the current route based on the config and the match mode\n * @param config Main Navigation Config\n * @param activeRouteProp Match mode\n * @returns Modified Main Navigation Config\n */\nexport const markActiveRoute = (\n config: NavMainEntity[],\n activeRouteProp: ActiveRouteProp,\n): NavMainEntity[] => {\n // Don't highlight any route\n if (activeRouteProp === false) {\n return config;\n }\n\n // Set compare URL and check if activeRouteProp is valid\n let compareUrl: URL;\n config = resetOverrideConfig(config);\n\n if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {\n // Check if an active route is already configured, set override to that and return\n if (hasActivePortalRoute(config)) {\n return resetActiveStateToPortalConfig(config);\n }\n\n compareUrl = new URL(window.location.href);\n } else {\n try {\n compareUrl = new URL(activeRouteProp, document.location.origin);\n } catch (error) {\n console.warn(\n `Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`,\n );\n return config;\n }\n }\n\n const scoreList = compileScoreList(config, compareUrl, activeRouteProp);\n\n if (scoreList.length === 0) {\n // No match found or already active links defined\n return config;\n }\n\n const winnerPair = scoreList[0];\n winnerPair.main.isActiveOverride = true;\n if (winnerPair.sub) winnerPair.sub.isActiveOverride = true;\n\n return config;\n};\n\n/**\n * Check if the portal config set any active route\n * @param config Main navigation config\n * @returns True if portal set any route as active\n */\nexport const hasActivePortalRoute = (config: NavMainEntity[]): boolean => {\n return config.filter(nav => nav.isActive).length > 0;\n};\n\nexport const resetActiveStateToPortalConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: nav.isActive,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: link.isActive })),\n })),\n }));\n};\n\nconst resetOverrideConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: false,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: false })),\n })),\n }));\n};\n\n/**\n * Compile a list of scores based on the map mode, sorted in descending order\n * @param config Main Nav Config\n * @param compareUrl Current Browser URL or a custom URL\n * @param activeRouteProp Match mode\n * @returns A list of scored URLs if any matched\n */\nexport const compileScoreList = (\n config: NavMainEntity[],\n compareUrl: URL,\n activeRouteProp: ActiveRouteProp,\n): MainNavScoreList => {\n // Flag to check if the Portal set any active links or if there are any exact matches\n let hadAnyActiveLink = false;\n const scoreList: MainNavScoreList = [];\n\n config.forEach(mainNav => {\n if (hadAnyActiveLink || !mainNav) {\n return;\n }\n\n try {\n const score = compareRoutes(\n compareUrl,\n new URL(mainNav.url),\n activeRouteProp as 'auto' | 'exact',\n );\n if (score > 0) {\n if (score === Infinity) hadAnyActiveLink = true;\n scoreList.push({ main: mainNav, score });\n }\n } catch {\n // Not a valid url, continue\n }\n\n // Loop through flyout links 2nd level\n if (mainNav.flyout.length) {\n mainNav.flyout.forEach(flyout => {\n if (flyout.linkList) {\n flyout.linkList.forEach(linklist => {\n // Don't override if any link is already active\n if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {\n hadAnyActiveLink = true;\n return;\n }\n\n try {\n const url = new URL(linklist.url);\n const score = compareRoutes(compareUrl, url, activeRouteProp as 'auto' | 'exact');\n if (score > 0) {\n if (score === Infinity) hadAnyActiveLink = true;\n\n // Push score\n scoreList.push({\n main: mainNav,\n sub: linklist,\n score,\n });\n }\n } catch {\n // Not a valid URL, continue\n }\n });\n }\n });\n }\n });\n\n return scoreList.sort((a, b) => b.score - a.score);\n};\n\n/**\n * Compare two URLs for similarity based on a match mode\n * @param baseUrl Browser URL\n * @param compareUrl Navigatgion URL\n * @param matchMode exact or auto matching\n * @returns Score\n */\nexport const compareRoutes = (\n baseUrl: URL,\n compareUrl: URL,\n matchMode?: 'auto' | 'exact',\n): number => {\n // One url is not defined or they don't share the same orign\n if (!baseUrl || !compareUrl || baseUrl.origin !== compareUrl.origin) {\n return 0;\n }\n\n // Exact match, origin and pathname are the same\n if (baseUrl.pathname === compareUrl.pathname) {\n return Infinity;\n }\n\n // The basepath is longer than the comparison, a match is impossible\n if (baseUrl.pathname.length < compareUrl.pathname.length) {\n return 0;\n }\n\n if (matchMode === 'auto') {\n const baseSegments = [baseUrl.origin, ...baseUrl.pathname.split('/').filter(x => !!x)];\n const compareSegments = [compareUrl.origin, ...compareUrl.pathname.split('/').filter(x => !!x)];\n\n const score = getSimilarityScore(baseSegments, compareSegments);\n\n // If only some segments match, but not the whole smaller array, it's not a match\n return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;\n }\n\n return 0;\n};\n\n/**\n * Check how many items in an array match\n * @param a Base array\n * @param b Compare array\n * @returns Score\n */\nexport const getSimilarityScore = (a: string[], b: string[]): number => {\n if (!a?.length || !b?.length) {\n return 0;\n }\n\n let i = 0;\n for (; i < Math.min(a.length, b.length); i++) {\n if (a[i] !== b[i]) {\n return 0;\n }\n }\n\n return i;\n};\n","import {\n Environment,\n IPortalConfig,\n ILocalizedConfig,\n ICustomConfig,\n ILocalizedCustomConfig,\n LocalizedConfigParameters,\n} from '../models/general.model';\nimport { NavMainEntity } from '../models/header.model';\nimport { getUserLang, persistLanguageChoice } from './language.service';\nimport { uniqueId } from '../utils/utils';\nimport { markActiveRoute } from './route.service';\n\n// Prevent double requests\nlet request: Promise<IPortalConfig> | null = null;\n\n// Cache the original os flyout to use it for updates\nlet osFlyoutCache: NavMainEntity | null = null;\n\n/**\n * Get a localized config object\n *\n * @param projectId String identifying the project\n * @param language [optional] Preferred language\n * @returns Localized config object\n */\nexport const getLocalizedConfig = async ({\n projectId,\n environment,\n language,\n cookieKey,\n localStorageKey,\n activeRouteProp,\n localizedCustomConfig,\n osFlyoutOverrides,\n}: LocalizedConfigParameters): Promise<ILocalizedConfig> => {\n if (!request) {\n request = fetchConfig(projectId, environment);\n }\n\n const config = await request;\n const lang = getUserLang(Object.keys(config), language, localStorageKey, cookieKey);\n\n if (lang === undefined) {\n throw new Error('Internet Header: unable to determine current language');\n }\n\n // Clone config for more predictable state updates\n let localizedConfig: ILocalizedConfig = { ...config[lang] };\n\n // Merge custom config with portal config\n if (localizedCustomConfig) {\n const header = localizedCustomConfig?.header?.navMain\n ? {\n ...localizedConfig.header,\n navMain: [...localizedConfig.header.navMain, ...localizedCustomConfig.header.navMain],\n }\n : localizedConfig.header;\n localizedConfig = {\n ...localizedConfig,\n header,\n };\n }\n\n // Add entries to flyout_os\n if (osFlyoutOverrides)\n localizedConfig.header.navMain = mergeOsFlyoutOverrides(localizedConfig, osFlyoutOverrides);\n\n // Mark active route\n if (activeRouteProp)\n localizedConfig.header.navMain = markActiveRoute(\n localizedConfig.header.navMain,\n activeRouteProp,\n );\n\n setMainNavigationIds(localizedConfig?.header?.navMain);\n\n // Set the new language choice\n persistLanguageChoice(lang, cookieKey, localStorageKey);\n\n return localizedConfig;\n};\n\n/**\n * Merge portal config with custom os flyout overrides\n * @param config Localized config\n * @param osFlyoutOverrides Overrides for the flyout\n * @returns Merged localized config\n */\nexport const mergeOsFlyoutOverrides = (\n config: ILocalizedConfig,\n osFlyoutOverrides: NavMainEntity,\n): NavMainEntity[] => {\n if (!osFlyoutOverrides) return config.header.navMain;\n\n return config.header.navMain.map(mainNav => {\n if (mainNav.id !== 'flyout_os') return mainNav;\n\n if (osFlyoutCache === null) {\n osFlyoutCache = JSON.parse(JSON.stringify(mainNav)) as NavMainEntity;\n }\n\n const mainNavText = osFlyoutOverrides.text ?? osFlyoutCache.text;\n const mainNavTitle = osFlyoutOverrides.title ?? osFlyoutCache.title;\n\n if (\n !osFlyoutCache.flyout ||\n osFlyoutCache.flyout.length === 0 ||\n !osFlyoutOverrides.flyout ||\n osFlyoutOverrides.flyout.length === 0\n )\n return {\n ...mainNav,\n title: mainNavTitle,\n text: mainNavText,\n };\n\n // Add entries for os flyout columns without overriding existing config\n const mainNavFlyout = [\n ...osFlyoutCache.flyout.map((col, index) => {\n const overrides = osFlyoutOverrides.flyout[index];\n const title = overrides.title ?? col.title;\n\n const linkList = overrides.linkList ? osFlyoutOverrides.flyout[index].linkList : [];\n\n return {\n title,\n linkList: [...col.linkList, ...linkList],\n };\n }),\n ...osFlyoutOverrides.flyout.slice(osFlyoutCache.flyout.length),\n ];\n\n return {\n ...mainNav,\n text: mainNavText,\n title: mainNavTitle,\n flyout: mainNavFlyout,\n } as NavMainEntity;\n });\n};\n\n/**\n * Fetch the general config based on project id\n *\n * @returns Promise for Post Portal general config\n */\nexport const fetchConfig = async (\n projectId: string,\n environment: Environment,\n): Promise<IPortalConfig> => {\n // Check if project id is sanitized\n if (!isValidProjectId(projectId)) {\n throw new Error(`Internet Header: invalid project id \"${projectId}\"`);\n }\n\n if (projectId === 'test') {\n environment = 'int01';\n }\n\n let url = generateConfigUrl(projectId, environment);\n\n // Get the config if cache is invalid\n try {\n const res = await fetch(url);\n return (await res.json()) as IPortalConfig;\n } catch (error) {\n throw new Error(`Internet Header: fetching config failed. ${error.message}`);\n }\n};\n\n/**\n * Generate an URL with all necessary query params to get the configuration.\n * Project id \"test\" will return a test configuration\n * @param projectId string\n * @param environment int01, int02 or prod\n * @returns URL pointing to the project config\n */\nexport const generateConfigUrl = (projectId: string, environment: Environment): string => {\n if (projectId === 'test') return 'assets/config/test-configuration.json';\n\n const parsedEnvironment = environment.toLowerCase();\n const isInt = parsedEnvironment.startsWith('int');\n const host = `https://${isInt ? 'int' : 'www'}.post.ch`;\n try {\n // Use URL to validate the generated URL\n return new URL(\n `${host}/api/headerjs/Json?serviceid=${encodeURIComponent(projectId)}${\n isInt ? '&environment=' + parsedEnvironment : ''\n }`,\n ).toString();\n } catch (error) {\n throw new Error(`Internet Header: Config URL is invalid.`);\n }\n};\n\n/**\n * Check if project id contains only URL safe characters\n *\n * @param projectId Project Id string\n * @returns The valid project id\n */\nexport const isValidProjectId = (projectId: string): boolean => {\n return projectId !== '' && projectId.length > 0 && /^[a-zA-Z][\\w-]*[a-zA-Z0-9]$/.test(projectId);\n};\n\n/**\n * Get the localized config object from a custom config\n *\n * @param config String or json object of the custom config\n * @param language Specific language\n * @returns Localized custom config object\n */\nexport const getLocalizedCustomConfig = (\n config: string | ICustomConfig,\n language: string,\n): ILocalizedCustomConfig | undefined => {\n let customConfig: ICustomConfig;\n try {\n customConfig = typeof config === 'string' ? JSON.parse(config) : config;\n } catch (error) {\n throw new Error(\n `Internet Header: Custom config is invalid. Make sure your custom config contains valid JSON syntax and matches the definition. `,\n );\n }\n let localizedCustomConfig: ILocalizedCustomConfig | undefined = customConfig[language];\n if (localizedCustomConfig?.header?.navMain)\n setMainNavigationIds(localizedCustomConfig.header.navMain);\n return localizedCustomConfig;\n};\n\n/**\n * Check if mobile header styles are applied or not\n * @returns True if browser is smaller than 1024px\n */\nexport const isMobile = () => window.innerWidth < 1024;\n\n/**\n * Set unique ID's on main navigation entities but conserve flyout_os to be able to\n * identify the online-service flyout, which can be configured by osFlyoutOverrides\n */\nexport const setMainNavigationIds = (navMainEntities: NavMainEntity[]): void => {\n navMainEntities.forEach(navMainEntity => {\n navMainEntity.id = navMainEntity.id === 'flyout_os' ? navMainEntity.id : uniqueId('main-nav-');\n });\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n\n:host {\n display: block;\n position: relative;\n font-size: 1rem;\n font-weight: 300;\n z-index: var(--header-z-index, 10);\n\n --header-height: 3.5rem; // 56px\n --meta-header-height: 0px; // Not visible on mobile\n --language-dropdown-margin-top: 0px;\n\n @include mixins.min(lg) {\n --meta-header-height: 3rem; // 48px\n --header-height: 4rem; // 64px\n }\n\n @include mixins.min(xl) {\n --header-height: 4.5rem; // 72px\n }\n}\n\n// Set height to 0 if meta is never visible\n:host([meta='false']) {\n --meta-header-height: 0px;\n // Compensation for header border-bottom, when language dropdown is displayed within main navigation controls\n --language-dropdown-margin-top: 1px;\n}\n\n// Support different kinds of stickyness modes\n// Works only in combination with setting header heights dynamically\n@supports (position: sticky) {\n // If stickyness is none, simply apply no styles, all others are sticky\n :host(:not(.stickyness-none)) {\n position: sticky;\n }\n\n // Everything is always sticky\n :host(.stickyness-full) {\n top: 0;\n }\n\n // Only main nav is sticky\n :host(.stickyness-main) {\n top: calc(var(--meta-header-height, 0px) * -1);\n }\n\n // Hide everything\n :host(.stickyness-minimal) {\n top: calc((var(--header-height, 0px) + var(--meta-header-height, 0px)) * -1);\n transition: top 200ms ease-in;\n }\n\n // Show main when scrolling up or any of the menus are open\n :host(.stickyness-minimal.scrolling-up),\n :host(.stickyness-minimal.dropdown-open) {\n top: calc(var(--meta-header-height, 0px) * -1);\n transition: top 200ms ease-out;\n }\n}\n\n.post-internet-header {\n border-bottom: 1px solid color.$gray-10;\n background-color: white;\n}\n\n.main-navigation-container {\n display: flex;\n\n & > .main-navigation-controls {\n flex: 0 0 auto;\n }\n}\n\n.main-navigation {\n display: flex;\n}\n\n.sub-navigation-container {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n display: flex;\n background: white;\n visibility: hidden;\n}\n\n.main-navigation-item:hover .sub-navigation-container {\n visibility: visible;\n}\n\n.main-navigation-controls {\n display: flex;\n margin-left: auto;\n\n @include mixins.max(lg) {\n font-weight: 400;\n }\n\n @include mixins.min(lg) {\n font-size: 1.0625rem;\n }\n\n & > * {\n border-left: 1px solid color.$gray-10;\n }\n}\n\n.menu-button {\n display: flex;\n align-items: center;\n padding: 0 calc(1rem - 1px);\n font-weight: 300;\n cursor: pointer;\n border-left: 1px solid color.$gray-10;\n order: 1; /* Display on the far right because of tab order */\n\n @include mixins.min(lg) {\n display: none;\n }\n\n .visually-hidden {\n @include mixins.between(rg, lg) {\n @include mixins.reset-visually-hidden();\n\n margin-right: 0.5rem;\n }\n }\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n}\n\n.full-width {\n .wide-container {\n max-width: none;\n }\n}\n","import {\n Component,\n Host,\n Element,\n h,\n State,\n Prop,\n Watch,\n Listen,\n EventEmitter,\n Event,\n Method,\n} from '@stencil/core';\nimport { debounce, throttle } from 'throttle-debounce';\nimport {\n getLocalizedConfig,\n getLocalizedCustomConfig,\n isValidProjectId,\n} from '../../services/config.service';\nimport { state, dispose } from '../../data/store';\nimport { DropdownElement, DropdownEvent, NavMainEntity } from '../../models/header.model';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { StickynessOptions } from '../../models/implementor.model';\nimport { ActiveRouteProp, Environment, ICustomConfig } from '../../models/general.model';\nimport { IAvailableLanguage } from '../../models/language.model';\nimport { If } from '../../utils/if.component';\nimport packageJson from '../../../package.json';\n\n@Component({\n tag: 'swisspost-internet-header',\n styleUrl: 'post-internet-header.scss',\n shadow: true,\n})\nexport class PostInternetHeader {\n /**\n * Your project id, previously passed as query string parameter serviceId.\n */\n @Prop() project: string;\n\n /**\n * Sticky behaviour of the header.\n */\n @Prop() stickyness: StickynessOptions = 'minimal';\n\n /**\n * Initial language to be used. Overrides automatic language detection.\n */\n @Prop() language?: string;\n\n /**\n * Toggle the meta navigation.\n */\n @Prop() meta: boolean = true;\n\n /**\n * Toggle the login link (when logged out) or the user widget (when logged in).\n */\n @Prop() login: boolean = true;\n\n /**\n * Toggle the search button.\n */\n @Prop() search: boolean = true;\n\n /**\n * Toggle skiplinks. They help keyboard users to quickly jump to important sections of the page.\n */\n @Prop() skiplinks: boolean = true;\n\n /**\n * DEPRECATED!: Define a proxy URL for the config fetch request. Will be removed in the next major version\n */\n @Prop() configProxy?: string;\n\n /**\n * Target environment. Choose 'int01' for local testing.\n */\n @Prop() environment: Environment = 'prod';\n\n /**\n * Override the language switch links with custom URLs. Helpful when your application contains sub-pages and you\n * would like to stay on subpages when the user changes language.\n */\n @Prop() languageSwitchOverrides?: string | IAvailableLanguage[];\n\n /**\n * Customize the header config loaded from the post portal.\n */\n @Prop() customConfig?: string | ICustomConfig;\n\n /**\n * The header uses this cookie to set the language. Disables automatic language detection.\n */\n @Prop() languageCookieKey?: string;\n\n /**\n * The header uses this local storage key to set the language. Disables automatic language selection.\n */\n @Prop() languageLocalStorageKey?: string = 'swisspost-internet-header-language';\n\n /**\n * Set the currently activated route. If there is a link matching this URL in the header, it will be highlighted.\n * Will also highlight partly matching URLs. When set to auto, will use current location.href for comparison.\n */\n @Prop() activeRoute?: 'auto' | false | string = 'auto';\n\n /**\n * Online Services only: Add custom links to the special online service navigation entry\n */\n @Prop() osFlyoutOverrides?: string | NavMainEntity;\n\n /**\n * Displays the header at full width for full-screen applications\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * Fires when the header has been rendered to the page.\n */\n @Event() headerLoaded: EventEmitter<void>;\n\n @State() activeFlyout: string | null = null;\n @State() activeDropdownElement: DropdownElement | null = null;\n @Element() host: HTMLElement;\n\n /**\n * Get the currently set language as a two letter string (\"de\", \"fr\" \"it\" or \"en\")\n * @returns string\n */\n @Method()\n async getCurrentLanguage(): Promise<'de' | 'fr' | 'it' | 'en' | string> {\n return state.currentLanguage ?? 'de';\n }\n\n private mainNav?: HTMLPostMainNavigationElement;\n private lastScrollTop = window.scrollY || document.documentElement.scrollTop;\n private throttledScroll: throttle<() => void>;\n private debouncedResize: debounce<() => void>;\n private lastWindowWidth: number = window.innerWidth;\n\n constructor() {\n if (this.project === undefined || this.project === '' || !isValidProjectId(this.project)) {\n throw new Error(\n `Internet Header project key is \"${this.project}\". Please provide a valid project key.`,\n );\n }\n }\n\n connectedCallback() {\n this.throttledScroll = throttle(300, () => this.handleScrollEvent());\n this.debouncedResize = debounce(200, () => this.handleResize());\n window.addEventListener('scroll', this.throttledScroll, { passive: true });\n window.addEventListener('resize', this.debouncedResize, { passive: true });\n }\n\n disconnectedCallback() {\n window.removeEventListener('scroll', this.throttledScroll);\n window.removeEventListener('resize', this.debouncedResize);\n\n // Reset the store to its original state\n dispose();\n }\n\n async componentWillLoad() {\n // Wait for the config to arrive, then render the header\n try {\n state.projectId = this.project;\n state.environment = this.environment;\n if (this.language !== undefined) state.currentLanguage = this.language;\n state.languageSwitchOverrides =\n typeof this.languageSwitchOverrides === 'string'\n ? JSON.parse(this.languageSwitchOverrides)\n : this.languageSwitchOverrides;\n state.osFlyoutOverrides =\n typeof this.osFlyoutOverrides === 'string'\n ? JSON.parse(this.osFlyoutOverrides)\n : this.osFlyoutOverrides;\n\n if (this.customConfig !== undefined && state.currentLanguage !== null) {\n state.localizedCustomConfig = getLocalizedCustomConfig(\n this.customConfig,\n state.currentLanguage,\n );\n }\n\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n componentDidLoad() {\n window.requestAnimationFrame(() => {\n this.handleResize();\n this.headerLoaded.emit();\n this.host.classList.add('header-loaded');\n });\n }\n\n @Watch('language')\n async handleLanguageChange(newValue: string) {\n state.currentLanguage = newValue;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: newValue,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n if (this.customConfig)\n state.localizedCustomConfig = getLocalizedCustomConfig(this.customConfig, newValue);\n }\n\n @Watch('languageSwitchOverrides')\n handleAvailableLanguagesChage(newValue: string | IAvailableLanguage[]) {\n state.languageSwitchOverrides = typeof newValue === 'string' ? JSON.parse(newValue) : newValue;\n }\n\n @Watch('osFlyoutOverrides')\n async handleOsFlyoutOverrides(newValue: string | NavMainEntity) {\n state.osFlyoutOverrides = typeof newValue === 'string' ? JSON.parse(newValue) : newValue;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('activeRoute')\n async handleActiveRouteChange(newValue: string | ActiveRouteProp) {\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: newValue,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('customConfig')\n async handleCustomConfigChange(newValue: string | ICustomConfig) {\n if (this.language === undefined) return;\n const localizedCustomConfig = getLocalizedCustomConfig(newValue, this.language);\n state.localizedCustomConfig = localizedCustomConfig;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('search')\n handleSearchChange(newValue: boolean) {\n state.search = newValue;\n }\n\n @Watch('login')\n handleLoginChange(newValue: boolean) {\n state.login = newValue;\n }\n\n @Watch('meta')\n handleMetaChange(newValue: boolean) {\n state.meta = newValue;\n }\n\n @Listen('languageChanged')\n handleLanguageChangeEvent(event: CustomEvent<string>) {\n this.handleLanguageChange(event.detail);\n }\n\n private handleClickOutsideBound = this.handleClickOutside.bind(this);\n\n private handleClickOutside(event: Event) {\n // Close active dropdown element on click outside of it\n if (this.activeDropdownElement && !event.composedPath().includes(this.activeDropdownElement)) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n }\n\n private handleKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n if (this.activeDropdownElement) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n if (this.activeFlyout !== null && this.mainNav) {\n this.mainNav.toggleDropdown(false);\n }\n }\n }\n\n private handleScrollEvent() {\n // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n const st = window.scrollY || document.documentElement.scrollTop;\n\n // Toggle class without re-rendering the component if stickyness is minimal\n // the other stickyness modes do not need the class\n if (this.stickyness === 'minimal') {\n this.host.classList.toggle('scrolling-up', st <= this.lastScrollTop);\n }\n\n // For Mobile or negative scrolling\n this.lastScrollTop = st <= 0 ? 0 : st;\n }\n\n private handleResize() {\n // Close main navigation dropdown if size changed to bigger than 1024px (search dropdown will be kept open)\n if (this.isMainNavOpen() && this.lastWindowWidth < 1024 && window.innerWidth >= 1024) {\n this.activeDropdownElement?.toggleDropdown(false);\n }\n\n this.lastWindowWidth = window.innerWidth;\n }\n\n /**\n * Close open dropdown menus if another is being opened\n *\n * @param event Dropdown toggled event\n * @returns void\n */\n private handleDropdownToggled(event: CustomEvent<DropdownEvent>) {\n if (!event.detail.open && this.activeDropdownElement !== event.detail.element) {\n // Some dropdown got closed programmatically (possibly by this function). To prevent\n // a circle or an outdated state, we'll not handle this event\n return;\n }\n\n if (event.detail.open === true) {\n if (this.activeDropdownElement) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n\n this.activeDropdownElement = event.detail.element;\n\n if (window.innerWidth >= 1024) {\n // Add event listener to close active dropdown element on click outsite of it\n // Also adds 10ms delay in case of an external interaction:\n // Some button on the page calls toggleDropdown() -> dropdown opens\n // Click event bubbles to the window, this.handleClickOutsideBound closes dropdown again\n window.setTimeout(() => {\n window.addEventListener('click', this.handleClickOutsideBound);\n }, 10);\n }\n\n if (this.activeFlyout !== null && this.mainNav) {\n this.mainNav.setActiveFlyout(null);\n }\n } else {\n this.activeDropdownElement = null;\n\n // Remove event listener as it is not needed if no dropdown element is active\n window.removeEventListener('click', this.handleClickOutsideBound);\n }\n }\n\n /**\n * Close open dropdowns if the flyout is being opened\n * @param event Flyout toggle event\n */\n private handleFlyoutToggled(event: CustomEvent<string | null>) {\n this.activeFlyout = event.detail;\n\n if (this.activeDropdownElement && event.detail && !this.isMainNavOpen()) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n }\n\n private toggleMobileDropdown() {\n this.mainNav?.toggleDropdown();\n }\n\n private isMainNavOpen() {\n return (\n this.activeDropdownElement && this.activeDropdownElement.tagName === 'POST-MAIN-NAVIGATION'\n );\n }\n\n render() {\n if (!state.localizedConfig?.header) {\n console.error(new Error('Internet Header: Config cannot be loaded'));\n return;\n }\n\n const config = state.localizedConfig;\n const renderMetaNavigation =\n this.meta &&\n config.header.navMeta !== undefined &&\n config.header.navMeta?.filter(meta => !meta.isHomeLink).length > 0;\n const renderLogin =\n (this.login ?? !config.header.isLoginWidgetHidden) && config.header.loginWidgetOptions;\n const renderLanguageSwitch = config.header.navLang.length > 1;\n\n return (\n <Host\n class={`stickyness-${this.stickyness} ${\n this.activeDropdownElement || this.activeFlyout ? 'dropdown-open' : ''\n }`}\n data-version={packageJson.version}\n onKeyup={(e: KeyboardEvent) => this.handleKeyUp(e)}\n >\n <header class={`post-internet-header${this.fullWidth ? ' full-width' : ''}`}>\n <SvgSprite />\n <If condition={this.skiplinks === true}>\n <post-skiplinks></post-skiplinks>\n </If>\n <If condition={renderMetaNavigation === true}>\n <post-meta-navigation\n orientation=\"horizontal\"\n class=\"hidden-lg\"\n full-width={this.fullWidth}\n >\n <If condition={renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-desktop\"\n mode=\"dropdown\"\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n ></post-language-switch>\n </If>\n </post-meta-navigation>\n </If>\n <div class=\"main-navigation-container wide-container\">\n <post-logo></post-logo>\n <button class=\"menu-button nav-link\" onClick={() => this.toggleMobileDropdown()}>\n <span class=\"menu-button-text visually-hidden\">{config.header.mobileMenu.text}</span>\n <SvgIcon name={this.isMainNavOpen() ? 'pi-close' : 'pi-menu'}></SvgIcon>\n </button>\n <post-main-navigation\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n onFlyoutToggled={e => this.handleFlyoutToggled(e)}\n ref={el => (this.mainNav = el)}\n >\n <If condition={renderMetaNavigation === true}>\n <post-meta-navigation orientation=\"vertical\">\n <If condition={renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-mobile\"\n mode=\"list\"\n ></post-language-switch>\n </If>\n </post-meta-navigation>\n </If>\n </post-main-navigation>\n <div class=\"main-navigation-controls\">\n <If condition={this.search !== false}>\n <post-search onDropdownToggled={e => this.handleDropdownToggled(e)}></post-search>\n </If>\n <If condition={!!renderLogin}>\n <post-klp-login-widget>\n <slot name=\"login-widget\"></slot>\n </post-klp-login-widget>\n </If>\n <If condition={renderMetaNavigation === false && renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-no-meta\"\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n mode=\"dropdown\"\n ></post-language-switch>\n </If>\n <slot name=\"main\"></slot>\n </div>\n </div>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"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"}