@fgv/ts-bcp47 0.9.6 → 2.0.1-alpha.0

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 (555) hide show
  1. package/.cache/build.lint/_eslint-R7SFxnrl.json +481 -0
  2. package/dist/ts-bcp47.d.ts +2554 -0
  3. package/dist/tsdoc-metadata.json +11 -0
  4. package/lib/data/bcp/overrides.json +20 -0
  5. package/lib/data/iana/language-subtags.json +57439 -0
  6. package/{data → lib/data}/iana/language-tag-extensions.json +2 -6
  7. package/lib/data/unsd/m49.json +3723 -0
  8. package/lib/index.d.ts +6 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +57 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  13. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.js +2 -1
  14. package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +1 -0
  15. package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  16. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.js +1 -1
  17. package/lib/packlets/bcp47/bcp47Subtags/index.js.map +1 -0
  18. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/model.d.ts +3 -1
  19. package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  20. package/lib/packlets/bcp47/bcp47Subtags/model.js +24 -0
  21. package/lib/packlets/bcp47/bcp47Subtags/model.js.map +1 -0
  22. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/validate.d.ts +2 -2
  23. package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  24. package/lib/packlets/bcp47/bcp47Subtags/validate.js +74 -0
  25. package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +1 -0
  26. package/{bcp47 → lib/packlets/bcp47}/common.d.ts +4 -4
  27. package/lib/packlets/bcp47/common.d.ts.map +1 -0
  28. package/lib/packlets/bcp47/common.js +59 -0
  29. package/lib/packlets/bcp47/common.js.map +1 -0
  30. package/{bcp47 → lib/packlets/bcp47}/helpers.d.ts +8 -8
  31. package/lib/packlets/bcp47/helpers.d.ts.map +1 -0
  32. package/lib/packlets/bcp47/helpers.js +103 -0
  33. package/lib/packlets/bcp47/helpers.js.map +1 -0
  34. package/lib/packlets/bcp47/index.d.ts +10 -0
  35. package/lib/packlets/bcp47/index.d.ts.map +1 -0
  36. package/lib/packlets/bcp47/index.js +68 -0
  37. package/lib/packlets/bcp47/index.js.map +1 -0
  38. package/{bcp47 → lib/packlets/bcp47}/languageRegistryData.d.ts +26 -27
  39. package/lib/packlets/bcp47/languageRegistryData.d.ts.map +1 -0
  40. package/lib/packlets/bcp47/languageRegistryData.js +206 -0
  41. package/lib/packlets/bcp47/languageRegistryData.js.map +1 -0
  42. package/{bcp47 → lib/packlets/bcp47}/languageTag.d.ts +12 -13
  43. package/lib/packlets/bcp47/languageTag.d.ts.map +1 -0
  44. package/lib/packlets/bcp47/languageTag.js +390 -0
  45. package/lib/packlets/bcp47/languageTag.js.map +1 -0
  46. package/{bcp47 → lib/packlets/bcp47}/languageTagParser.d.ts +13 -14
  47. package/lib/packlets/bcp47/languageTagParser.d.ts.map +1 -0
  48. package/lib/packlets/bcp47/languageTagParser.js +303 -0
  49. package/lib/packlets/bcp47/languageTagParser.js.map +1 -0
  50. package/{bcp47 → lib/packlets/bcp47}/match/chooser.d.ts +8 -8
  51. package/lib/packlets/bcp47/match/chooser.d.ts.map +1 -0
  52. package/lib/packlets/bcp47/match/chooser.js +92 -0
  53. package/lib/packlets/bcp47/match/chooser.js.map +1 -0
  54. package/lib/packlets/bcp47/match/common.d.ts.map +1 -0
  55. package/lib/packlets/bcp47/match/common.js +52 -0
  56. package/lib/packlets/bcp47/match/common.js.map +1 -0
  57. package/lib/packlets/bcp47/match/index.d.ts +4 -0
  58. package/lib/packlets/bcp47/match/index.d.ts.map +1 -0
  59. package/lib/packlets/bcp47/match/index.js +45 -0
  60. package/lib/packlets/bcp47/match/index.js.map +1 -0
  61. package/lib/packlets/bcp47/match/similarity.d.ts.map +1 -0
  62. package/lib/packlets/bcp47/match/similarity.js +230 -0
  63. package/lib/packlets/bcp47/match/similarity.js.map +1 -0
  64. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts +35 -0
  65. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  66. package/lib/packlets/bcp47/normalization/baseNormalizer.js +116 -0
  67. package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +1 -0
  68. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
  69. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  70. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js +113 -0
  71. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +1 -0
  72. package/{bcp47 → lib/packlets/bcp47}/normalization/common.d.ts +1 -1
  73. package/lib/packlets/bcp47/normalization/common.d.ts.map +1 -0
  74. package/lib/packlets/bcp47/normalization/common.js +82 -0
  75. package/lib/packlets/bcp47/normalization/common.js.map +1 -0
  76. package/lib/packlets/bcp47/normalization/index.d.ts.map +1 -0
  77. package/{bcp47 → lib/packlets/bcp47}/normalization/index.js +1 -1
  78. package/lib/packlets/bcp47/normalization/index.js.map +1 -0
  79. package/{bcp47 → lib/packlets/bcp47}/normalization/normalizeTag.d.ts +6 -6
  80. package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  81. package/lib/packlets/bcp47/normalization/normalizeTag.js +105 -0
  82. package/lib/packlets/bcp47/normalization/normalizeTag.js.map +1 -0
  83. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts +27 -0
  84. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  85. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js +204 -0
  86. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +1 -0
  87. package/lib/packlets/bcp47/overrides/converters.d.ts +19 -0
  88. package/lib/packlets/bcp47/overrides/converters.d.ts.map +1 -0
  89. package/lib/packlets/bcp47/overrides/converters.js +76 -0
  90. package/lib/packlets/bcp47/overrides/converters.js.map +1 -0
  91. package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  92. package/lib/packlets/bcp47/overrides/defaultRegistries.js +42 -0
  93. package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +1 -0
  94. package/lib/packlets/bcp47/overrides/index.d.ts.map +1 -0
  95. package/lib/packlets/bcp47/overrides/index.js +30 -0
  96. package/lib/packlets/bcp47/overrides/index.js.map +1 -0
  97. package/lib/packlets/bcp47/overrides/model.d.ts +11 -0
  98. package/lib/packlets/bcp47/overrides/model.d.ts.map +1 -0
  99. package/lib/packlets/bcp47/overrides/model.js +24 -0
  100. package/lib/packlets/bcp47/overrides/model.js.map +1 -0
  101. package/{bcp47 → lib/packlets/bcp47}/overrides/overridesRegistry.d.ts +8 -8
  102. package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  103. package/lib/packlets/bcp47/overrides/overridesRegistry.js +113 -0
  104. package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +1 -0
  105. package/lib/packlets/bcp47/validation/baseValidator.d.ts +35 -0
  106. package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +1 -0
  107. package/lib/packlets/bcp47/validation/baseValidator.js +113 -0
  108. package/lib/packlets/bcp47/validation/baseValidator.js.map +1 -0
  109. package/{bcp47 → lib/packlets/bcp47}/validation/common.d.ts +1 -1
  110. package/lib/packlets/bcp47/validation/common.d.ts.map +1 -0
  111. package/lib/packlets/bcp47/validation/common.js +84 -0
  112. package/lib/packlets/bcp47/validation/common.js.map +1 -0
  113. package/lib/packlets/bcp47/validation/index.d.ts.map +1 -0
  114. package/{bcp47 → lib/packlets/bcp47}/validation/index.js +1 -1
  115. package/lib/packlets/bcp47/validation/index.js.map +1 -0
  116. package/lib/packlets/bcp47/validation/isCanonical.d.ts +22 -0
  117. package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +1 -0
  118. package/lib/packlets/bcp47/validation/isCanonical.js +106 -0
  119. package/lib/packlets/bcp47/validation/isCanonical.js.map +1 -0
  120. package/{bcp47 → lib/packlets/bcp47}/validation/isInPreferredForm.d.ts +4 -4
  121. package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  122. package/lib/packlets/bcp47/validation/isInPreferredForm.js +73 -0
  123. package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +1 -0
  124. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts +18 -0
  125. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  126. package/lib/packlets/bcp47/validation/isStrictlyValid.js +98 -0
  127. package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +1 -0
  128. package/lib/packlets/bcp47/validation/isValid.d.ts +24 -0
  129. package/lib/packlets/bcp47/validation/isValid.d.ts.map +1 -0
  130. package/lib/packlets/bcp47/validation/isValid.js +119 -0
  131. package/lib/packlets/bcp47/validation/isValid.js.map +1 -0
  132. package/lib/packlets/bcp47/validation/isWellFormed.d.ts +22 -0
  133. package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +1 -0
  134. package/lib/packlets/bcp47/validation/isWellFormed.js +102 -0
  135. package/lib/packlets/bcp47/validation/isWellFormed.js.map +1 -0
  136. package/{bcp47 → lib/packlets/bcp47}/validation/validateTag.d.ts +9 -9
  137. package/lib/packlets/bcp47/validation/validateTag.d.ts.map +1 -0
  138. package/lib/packlets/bcp47/validation/validateTag.js +159 -0
  139. package/lib/packlets/bcp47/validation/validateTag.js.map +1 -0
  140. package/{iana → lib/packlets/iana}/common/converters.d.ts +2 -2
  141. package/lib/packlets/iana/common/converters.d.ts.map +1 -0
  142. package/lib/packlets/iana/common/converters.js +85 -0
  143. package/lib/packlets/iana/common/converters.js.map +1 -0
  144. package/{iana → lib/packlets/iana}/common/model.d.ts +1 -1
  145. package/lib/packlets/iana/common/model.d.ts.map +1 -0
  146. package/lib/packlets/iana/common/model.js +24 -0
  147. package/lib/packlets/iana/common/model.js.map +1 -0
  148. package/lib/packlets/iana/common/registeredItems.d.ts.map +1 -0
  149. package/lib/packlets/iana/common/registeredItems.js +124 -0
  150. package/lib/packlets/iana/common/registeredItems.js.map +1 -0
  151. package/lib/packlets/iana/common/utils.d.ts.map +1 -0
  152. package/lib/packlets/iana/common/utils.js +34 -0
  153. package/lib/packlets/iana/common/utils.js.map +1 -0
  154. package/{iana → lib/packlets/iana}/common/validate.d.ts +1 -1
  155. package/lib/packlets/iana/common/validate.d.ts.map +1 -0
  156. package/lib/packlets/iana/common/validate.js +62 -0
  157. package/lib/packlets/iana/common/validate.js.map +1 -0
  158. package/lib/packlets/iana/converters.d.ts.map +1 -0
  159. package/{iana → lib/packlets/iana}/converters.js +1 -1
  160. package/lib/packlets/iana/converters.js.map +1 -0
  161. package/lib/packlets/iana/defaultRegistries.d.ts.map +1 -0
  162. package/lib/packlets/iana/defaultRegistries.js +42 -0
  163. package/lib/packlets/iana/defaultRegistries.js.map +1 -0
  164. package/{iana → lib/packlets/iana}/index.d.ts +4 -2
  165. package/lib/packlets/iana/index.d.ts.map +1 -0
  166. package/{iana/jar/language-subtags/tags → lib/packlets/iana}/index.js +18 -6
  167. package/lib/packlets/iana/index.js.map +1 -0
  168. package/lib/packlets/iana/jar/converters.d.ts.map +1 -0
  169. package/{iana → lib/packlets/iana}/jar/converters.js +1 -1
  170. package/lib/packlets/iana/jar/converters.js.map +1 -0
  171. package/lib/packlets/iana/jar/index.d.ts +5 -0
  172. package/lib/packlets/iana/jar/index.d.ts.map +1 -0
  173. package/{unsd/csv → lib/packlets/iana/jar}/index.js +4 -2
  174. package/lib/packlets/iana/jar/index.js.map +1 -0
  175. package/{iana → lib/packlets/iana}/jar/jarConverters.d.ts +5 -5
  176. package/lib/packlets/iana/jar/jarConverters.d.ts.map +1 -0
  177. package/lib/packlets/iana/jar/jarConverters.js +86 -0
  178. package/lib/packlets/iana/jar/jarConverters.js.map +1 -0
  179. package/{iana → lib/packlets/iana}/jar/jarModel.d.ts +1 -1
  180. package/lib/packlets/iana/jar/jarModel.d.ts.map +1 -0
  181. package/lib/packlets/iana/jar/jarModel.js +24 -0
  182. package/lib/packlets/iana/jar/jarModel.js.map +1 -0
  183. package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +1 -0
  184. package/{iana → lib/packlets/iana}/jar/language-subtags/converters.js +1 -1
  185. package/lib/packlets/iana/jar/language-subtags/converters.js.map +1 -0
  186. package/lib/packlets/iana/jar/language-subtags/index.d.ts +5 -0
  187. package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +1 -0
  188. package/{iana/jar/language-subtags/registry → lib/packlets/iana/jar/language-subtags}/index.js +29 -28
  189. package/lib/packlets/iana/jar/language-subtags/index.js.map +1 -0
  190. package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +1 -0
  191. package/{iana → lib/packlets/iana}/jar/language-subtags/model.js +1 -1
  192. package/lib/packlets/iana/jar/language-subtags/model.js.map +1 -0
  193. package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  194. package/lib/packlets/iana/jar/language-subtags/registry/converters.js +59 -0
  195. package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +1 -0
  196. package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  197. package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.js +23 -22
  198. package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +1 -0
  199. package/{iana → lib/packlets/iana}/jar/language-subtags/registry/model.d.ts +12 -12
  200. package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  201. package/lib/packlets/iana/jar/language-subtags/registry/model.js +46 -0
  202. package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +1 -0
  203. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts +55 -0
  204. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  205. package/lib/packlets/iana/jar/language-subtags/tags/converters.js +129 -0
  206. package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +1 -0
  207. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts +6 -0
  208. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  209. package/lib/packlets/iana/jar/language-subtags/tags/index.js +58 -0
  210. package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +1 -0
  211. package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  212. package/lib/packlets/iana/jar/language-subtags/tags/model.js +24 -0
  213. package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +1 -0
  214. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  215. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  216. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +1 -0
  217. package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  218. package/lib/packlets/iana/jar/language-subtags/tags/validate.js +88 -0
  219. package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +1 -0
  220. package/lib/packlets/iana/jar/model.d.ts.map +1 -0
  221. package/{iana → lib/packlets/iana}/jar/model.js +1 -1
  222. package/lib/packlets/iana/jar/model.js.map +1 -0
  223. package/lib/packlets/iana/language-subtags/common.d.ts.map +1 -0
  224. package/lib/packlets/iana/language-subtags/common.js +24 -0
  225. package/lib/packlets/iana/language-subtags/common.js.map +1 -0
  226. package/lib/packlets/iana/language-subtags/converters.d.ts +52 -0
  227. package/lib/packlets/iana/language-subtags/converters.d.ts.map +1 -0
  228. package/lib/packlets/iana/language-subtags/converters.js +209 -0
  229. package/lib/packlets/iana/language-subtags/converters.js.map +1 -0
  230. package/{iana → lib/packlets/iana}/language-subtags/index.d.ts +4 -3
  231. package/lib/packlets/iana/language-subtags/index.d.ts.map +1 -0
  232. package/{iana → lib/packlets/iana}/language-subtags/index.js +10 -8
  233. package/lib/packlets/iana/language-subtags/index.js.map +1 -0
  234. package/{iana → lib/packlets/iana}/language-subtags/jarConverters.d.ts +8 -8
  235. package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +1 -0
  236. package/lib/packlets/iana/language-subtags/jarConverters.js +237 -0
  237. package/lib/packlets/iana/language-subtags/jarConverters.js.map +1 -0
  238. package/{iana → lib/packlets/iana}/language-subtags/model.d.ts +15 -15
  239. package/lib/packlets/iana/language-subtags/model.d.ts.map +1 -0
  240. package/lib/packlets/iana/language-subtags/model.js +24 -0
  241. package/lib/packlets/iana/language-subtags/model.js.map +1 -0
  242. package/{iana → lib/packlets/iana}/language-subtags/scope.d.ts +12 -12
  243. package/lib/packlets/iana/language-subtags/scope.d.ts.map +1 -0
  244. package/lib/packlets/iana/language-subtags/scope.js +179 -0
  245. package/lib/packlets/iana/language-subtags/scope.js.map +1 -0
  246. package/{iana → lib/packlets/iana}/language-subtags/subtagRegistry.d.ts +1 -1
  247. package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  248. package/lib/packlets/iana/language-subtags/subtagRegistry.js +150 -0
  249. package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +1 -0
  250. package/lib/packlets/iana/language-subtags/validate.d.ts.map +1 -0
  251. package/{iana → lib/packlets/iana}/language-subtags/validate.js +1 -1
  252. package/lib/packlets/iana/language-subtags/validate.js.map +1 -0
  253. package/lib/packlets/iana/language-tag-extensions/converters.d.ts +22 -0
  254. package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +1 -0
  255. package/lib/packlets/iana/language-tag-extensions/converters.js +86 -0
  256. package/lib/packlets/iana/language-tag-extensions/converters.js.map +1 -0
  257. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -2
  258. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  259. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js +105 -0
  260. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +1 -0
  261. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsScope.d.ts +3 -3
  262. package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  263. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js +77 -0
  264. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +1 -0
  265. package/{iana → lib/packlets/iana}/language-tag-extensions/index.d.ts +3 -2
  266. package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +1 -0
  267. package/{iana → lib/packlets/iana}/language-tag-extensions/index.js +6 -4
  268. package/lib/packlets/iana/language-tag-extensions/index.js.map +1 -0
  269. package/{iana → lib/packlets/iana}/language-tag-extensions/jarConverters.d.ts +2 -3
  270. package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  271. package/lib/packlets/iana/language-tag-extensions/jarConverters.js +79 -0
  272. package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +1 -0
  273. package/{iana → lib/packlets/iana}/language-tag-extensions/model.d.ts +5 -6
  274. package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +1 -0
  275. package/lib/packlets/iana/language-tag-extensions/model.js +25 -0
  276. package/lib/packlets/iana/language-tag-extensions/model.js.map +1 -0
  277. package/{iana → lib/packlets/iana}/language-tag-extensions/validate.d.ts +2 -2
  278. package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +1 -0
  279. package/lib/packlets/iana/language-tag-extensions/validate.js +36 -0
  280. package/lib/packlets/iana/language-tag-extensions/validate.js.map +1 -0
  281. package/lib/packlets/iana/languageRegistries.d.ts.map +1 -0
  282. package/lib/packlets/iana/languageRegistries.js +56 -0
  283. package/lib/packlets/iana/languageRegistries.js.map +1 -0
  284. package/lib/packlets/iana/model.d.ts.map +1 -0
  285. package/{iana → lib/packlets/iana}/model.js +1 -1
  286. package/lib/packlets/iana/model.js.map +1 -0
  287. package/lib/packlets/iana/validate.d.ts.map +1 -0
  288. package/{iana → lib/packlets/iana}/validate.js +1 -1
  289. package/lib/packlets/iana/validate.js.map +1 -0
  290. package/lib/packlets/unsd/areas.d.ts +29 -0
  291. package/lib/packlets/unsd/areas.d.ts.map +1 -0
  292. package/lib/packlets/unsd/areas.js +96 -0
  293. package/lib/packlets/unsd/areas.js.map +1 -0
  294. package/lib/packlets/unsd/common.d.ts +49 -0
  295. package/lib/packlets/unsd/common.d.ts.map +1 -0
  296. package/lib/packlets/unsd/common.js +24 -0
  297. package/lib/packlets/unsd/common.js.map +1 -0
  298. package/{unsd → lib/packlets/unsd}/csv/converters.d.ts +7 -4
  299. package/lib/packlets/unsd/csv/converters.d.ts.map +1 -0
  300. package/lib/packlets/unsd/csv/converters.js +78 -0
  301. package/lib/packlets/unsd/csv/converters.js.map +1 -0
  302. package/lib/packlets/unsd/csv/index.d.ts.map +1 -0
  303. package/{iana/jar → lib/packlets/unsd/csv}/index.js +1 -1
  304. package/lib/packlets/unsd/csv/index.js.map +1 -0
  305. package/lib/packlets/unsd/csv/model.d.ts +22 -0
  306. package/lib/packlets/unsd/csv/model.d.ts.map +1 -0
  307. package/lib/packlets/unsd/csv/model.js +24 -0
  308. package/lib/packlets/unsd/csv/model.js.map +1 -0
  309. package/lib/packlets/unsd/defaultRegistries.d.ts.map +1 -0
  310. package/lib/packlets/unsd/defaultRegistries.js +42 -0
  311. package/lib/packlets/unsd/defaultRegistries.js.map +1 -0
  312. package/{unsd → lib/packlets/unsd}/index.d.ts +2 -0
  313. package/lib/packlets/unsd/index.d.ts.map +1 -0
  314. package/lib/packlets/unsd/index.js +58 -0
  315. package/lib/packlets/unsd/index.js.map +1 -0
  316. package/{unsd → lib/packlets/unsd}/regionCodes.d.ts +7 -7
  317. package/lib/packlets/unsd/regionCodes.d.ts.map +1 -0
  318. package/lib/packlets/unsd/regionCodes.js +122 -0
  319. package/lib/packlets/unsd/regionCodes.js.map +1 -0
  320. package/lib/packlets/unsd/regions.d.ts +21 -0
  321. package/lib/packlets/unsd/regions.d.ts.map +1 -0
  322. package/lib/packlets/unsd/regions.js +77 -0
  323. package/lib/packlets/unsd/regions.js.map +1 -0
  324. package/lib/packlets/utils/index.d.ts.map +1 -0
  325. package/{utils → lib/packlets/utils}/index.js +1 -1
  326. package/lib/packlets/utils/index.js.map +1 -0
  327. package/lib/packlets/utils/jsonHelpers.d.ts.map +1 -0
  328. package/lib/packlets/utils/jsonHelpers.js +29 -0
  329. package/lib/packlets/utils/jsonHelpers.js.map +1 -0
  330. package/lib/packlets/utils/public.d.ts +2 -0
  331. package/lib/packlets/utils/public.d.ts.map +1 -0
  332. package/lib/packlets/utils/public.js +28 -0
  333. package/lib/packlets/utils/public.js.map +1 -0
  334. package/{utils → lib/packlets/utils}/validationHelpers.d.ts +9 -10
  335. package/lib/packlets/utils/validationHelpers.d.ts.map +1 -0
  336. package/lib/packlets/utils/validationHelpers.js +120 -0
  337. package/lib/packlets/utils/validationHelpers.js.map +1 -0
  338. package/package.json +73 -67
  339. package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  340. package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  341. package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  342. package/bcp47/bcp47Subtags/model.js +0 -24
  343. package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  344. package/bcp47/bcp47Subtags/validate.js +0 -74
  345. package/bcp47/common.d.ts.map +0 -1
  346. package/bcp47/common.js +0 -59
  347. package/bcp47/helpers.d.ts.map +0 -1
  348. package/bcp47/helpers.js +0 -103
  349. package/bcp47/index.d.ts +0 -7
  350. package/bcp47/index.d.ts.map +0 -1
  351. package/bcp47/index.js +0 -27
  352. package/bcp47/languageRegistryData.d.ts.map +0 -1
  353. package/bcp47/languageRegistryData.js +0 -209
  354. package/bcp47/languageTag.d.ts.map +0 -1
  355. package/bcp47/languageTag.js +0 -390
  356. package/bcp47/languageTagParser.d.ts.map +0 -1
  357. package/bcp47/languageTagParser.js +0 -302
  358. package/bcp47/match/chooser.d.ts.map +0 -1
  359. package/bcp47/match/chooser.js +0 -92
  360. package/bcp47/match/common.d.ts.map +0 -1
  361. package/bcp47/match/common.js +0 -51
  362. package/bcp47/match/index.d.ts +0 -4
  363. package/bcp47/match/index.d.ts.map +0 -1
  364. package/bcp47/match/index.js +0 -45
  365. package/bcp47/match/similarity.d.ts.map +0 -1
  366. package/bcp47/match/similarity.js +0 -230
  367. package/bcp47/normalization/baseNormalizer.d.ts +0 -36
  368. package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  369. package/bcp47/normalization/baseNormalizer.js +0 -114
  370. package/bcp47/normalization/canonicalNormalizer.d.ts +0 -22
  371. package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  372. package/bcp47/normalization/canonicalNormalizer.js +0 -113
  373. package/bcp47/normalization/common.d.ts.map +0 -1
  374. package/bcp47/normalization/common.js +0 -82
  375. package/bcp47/normalization/index.d.ts.map +0 -1
  376. package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  377. package/bcp47/normalization/normalizeTag.js +0 -105
  378. package/bcp47/normalization/preferredTagNormalizer.d.ts +0 -27
  379. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  380. package/bcp47/normalization/preferredTagNormalizer.js +0 -209
  381. package/bcp47/overrides/converters.d.ts +0 -19
  382. package/bcp47/overrides/converters.d.ts.map +0 -1
  383. package/bcp47/overrides/converters.js +0 -75
  384. package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  385. package/bcp47/overrides/defaultRegistries.js +0 -42
  386. package/bcp47/overrides/index.d.ts.map +0 -1
  387. package/bcp47/overrides/index.js +0 -30
  388. package/bcp47/overrides/model.d.ts +0 -11
  389. package/bcp47/overrides/model.d.ts.map +0 -1
  390. package/bcp47/overrides/model.js +0 -24
  391. package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  392. package/bcp47/overrides/overridesRegistry.js +0 -112
  393. package/bcp47/validation/baseValidator.d.ts +0 -35
  394. package/bcp47/validation/baseValidator.d.ts.map +0 -1
  395. package/bcp47/validation/baseValidator.js +0 -111
  396. package/bcp47/validation/common.d.ts.map +0 -1
  397. package/bcp47/validation/common.js +0 -84
  398. package/bcp47/validation/index.d.ts.map +0 -1
  399. package/bcp47/validation/isCanonical.d.ts +0 -22
  400. package/bcp47/validation/isCanonical.d.ts.map +0 -1
  401. package/bcp47/validation/isCanonical.js +0 -104
  402. package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  403. package/bcp47/validation/isInPreferredForm.js +0 -73
  404. package/bcp47/validation/isStrictlyValid.d.ts +0 -18
  405. package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  406. package/bcp47/validation/isStrictlyValid.js +0 -98
  407. package/bcp47/validation/isValid.d.ts +0 -24
  408. package/bcp47/validation/isValid.d.ts.map +0 -1
  409. package/bcp47/validation/isValid.js +0 -115
  410. package/bcp47/validation/isWellFormed.d.ts +0 -22
  411. package/bcp47/validation/isWellFormed.d.ts.map +0 -1
  412. package/bcp47/validation/isWellFormed.js +0 -98
  413. package/bcp47/validation/validateTag.d.ts.map +0 -1
  414. package/bcp47/validation/validateTag.js +0 -159
  415. package/data/bcp/overrides.json +0 -21
  416. package/data/iana/language-subtags.json +0 -77295
  417. package/data/unsd/m49.json +0 -251
  418. package/iana/common/converters.d.ts.map +0 -1
  419. package/iana/common/converters.js +0 -84
  420. package/iana/common/model.d.ts.map +0 -1
  421. package/iana/common/model.js +0 -24
  422. package/iana/common/registeredItems.d.ts.map +0 -1
  423. package/iana/common/registeredItems.js +0 -124
  424. package/iana/common/utils.d.ts.map +0 -1
  425. package/iana/common/utils.js +0 -34
  426. package/iana/common/validate.d.ts.map +0 -1
  427. package/iana/common/validate.js +0 -61
  428. package/iana/converters.d.ts.map +0 -1
  429. package/iana/defaultRegistries.d.ts.map +0 -1
  430. package/iana/defaultRegistries.js +0 -42
  431. package/iana/index.d.ts.map +0 -1
  432. package/iana/index.js +0 -64
  433. package/iana/jar/converters.d.ts.map +0 -1
  434. package/iana/jar/index.d.ts.map +0 -1
  435. package/iana/jar/jarConverters.d.ts.map +0 -1
  436. package/iana/jar/jarConverters.js +0 -85
  437. package/iana/jar/jarModel.d.ts.map +0 -1
  438. package/iana/jar/jarModel.js +0 -24
  439. package/iana/jar/language-subtags/converters.d.ts.map +0 -1
  440. package/iana/jar/language-subtags/index.d.ts.map +0 -1
  441. package/iana/jar/language-subtags/model.d.ts.map +0 -1
  442. package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  443. package/iana/jar/language-subtags/registry/converters.js +0 -58
  444. package/iana/jar/language-subtags/registry/index.d.ts +0 -4
  445. package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  446. package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  447. package/iana/jar/language-subtags/registry/model.js +0 -41
  448. package/iana/jar/language-subtags/tags/converters.d.ts +0 -55
  449. package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  450. package/iana/jar/language-subtags/tags/converters.js +0 -128
  451. package/iana/jar/language-subtags/tags/index.d.ts +0 -5
  452. package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  453. package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  454. package/iana/jar/language-subtags/tags/model.js +0 -24
  455. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  456. package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  457. package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  458. package/iana/jar/language-subtags/tags/validate.js +0 -87
  459. package/iana/jar/model.d.ts.map +0 -1
  460. package/iana/language-subtags/common.d.ts.map +0 -1
  461. package/iana/language-subtags/common.js +0 -24
  462. package/iana/language-subtags/converters.d.ts +0 -52
  463. package/iana/language-subtags/converters.d.ts.map +0 -1
  464. package/iana/language-subtags/converters.js +0 -200
  465. package/iana/language-subtags/index.d.ts.map +0 -1
  466. package/iana/language-subtags/jarConverters.d.ts.map +0 -1
  467. package/iana/language-subtags/jarConverters.js +0 -213
  468. package/iana/language-subtags/model.d.ts.map +0 -1
  469. package/iana/language-subtags/model.js +0 -24
  470. package/iana/language-subtags/scope.d.ts.map +0 -1
  471. package/iana/language-subtags/scope.js +0 -179
  472. package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  473. package/iana/language-subtags/subtagRegistry.js +0 -149
  474. package/iana/language-subtags/validate.d.ts.map +0 -1
  475. package/iana/language-tag-extensions/converters.d.ts +0 -23
  476. package/iana/language-tag-extensions/converters.d.ts.map +0 -1
  477. package/iana/language-tag-extensions/converters.js +0 -87
  478. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  479. package/iana/language-tag-extensions/extensionsRegistry.js +0 -104
  480. package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  481. package/iana/language-tag-extensions/extensionsScope.js +0 -77
  482. package/iana/language-tag-extensions/index.d.ts.map +0 -1
  483. package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  484. package/iana/language-tag-extensions/jarConverters.js +0 -102
  485. package/iana/language-tag-extensions/model.d.ts.map +0 -1
  486. package/iana/language-tag-extensions/model.js +0 -24
  487. package/iana/language-tag-extensions/validate.d.ts.map +0 -1
  488. package/iana/language-tag-extensions/validate.js +0 -36
  489. package/iana/languageRegistries.d.ts.map +0 -1
  490. package/iana/languageRegistries.js +0 -56
  491. package/iana/model.d.ts.map +0 -1
  492. package/iana/validate.d.ts.map +0 -1
  493. package/index.d.ts +0 -6
  494. package/index.d.ts.map +0 -1
  495. package/index.js +0 -56
  496. package/unsd/areas.d.ts +0 -29
  497. package/unsd/areas.d.ts.map +0 -1
  498. package/unsd/areas.js +0 -96
  499. package/unsd/common.d.ts +0 -49
  500. package/unsd/common.d.ts.map +0 -1
  501. package/unsd/common.js +0 -24
  502. package/unsd/csv/converters.d.ts.map +0 -1
  503. package/unsd/csv/converters.js +0 -70
  504. package/unsd/csv/index.d.ts +0 -4
  505. package/unsd/csv/index.d.ts.map +0 -1
  506. package/unsd/csv/model.d.ts +0 -22
  507. package/unsd/csv/model.d.ts.map +0 -1
  508. package/unsd/csv/model.js +0 -24
  509. package/unsd/defaultRegistries.d.ts.map +0 -1
  510. package/unsd/defaultRegistries.js +0 -42
  511. package/unsd/index.d.ts.map +0 -1
  512. package/unsd/index.js +0 -44
  513. package/unsd/regionCodes.d.ts.map +0 -1
  514. package/unsd/regionCodes.js +0 -121
  515. package/unsd/regions.d.ts +0 -21
  516. package/unsd/regions.d.ts.map +0 -1
  517. package/unsd/regions.js +0 -77
  518. package/utils/index.d.ts.map +0 -1
  519. package/utils/jsonHelpers.d.ts.map +0 -1
  520. package/utils/jsonHelpers.js +0 -29
  521. package/utils/public.d.ts +0 -2
  522. package/utils/public.d.ts.map +0 -1
  523. package/utils/public.js +0 -28
  524. package/utils/validationHelpers.d.ts.map +0 -1
  525. package/utils/validationHelpers.js +0 -120
  526. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.d.ts +0 -0
  527. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.d.ts +0 -0
  528. /package/{bcp47 → lib/packlets/bcp47}/match/common.d.ts +0 -0
  529. /package/{bcp47 → lib/packlets/bcp47}/match/similarity.d.ts +0 -0
  530. /package/{bcp47 → lib/packlets/bcp47}/normalization/index.d.ts +0 -0
  531. /package/{bcp47 → lib/packlets/bcp47}/overrides/defaultRegistries.d.ts +0 -0
  532. /package/{bcp47 → lib/packlets/bcp47}/overrides/index.d.ts +0 -0
  533. /package/{bcp47 → lib/packlets/bcp47}/validation/index.d.ts +0 -0
  534. /package/{iana → lib/packlets/iana}/common/registeredItems.d.ts +0 -0
  535. /package/{iana → lib/packlets/iana}/common/utils.d.ts +0 -0
  536. /package/{iana → lib/packlets/iana}/converters.d.ts +0 -0
  537. /package/{iana → lib/packlets/iana}/defaultRegistries.d.ts +0 -0
  538. /package/{iana → lib/packlets/iana}/jar/converters.d.ts +0 -0
  539. /package/{iana → lib/packlets/iana}/jar/language-subtags/converters.d.ts +0 -0
  540. /package/{iana → lib/packlets/iana}/jar/language-subtags/model.d.ts +0 -0
  541. /package/{iana → lib/packlets/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  542. /package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.d.ts +0 -0
  543. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/model.d.ts +0 -0
  544. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  545. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  546. /package/{iana → lib/packlets/iana}/jar/model.d.ts +0 -0
  547. /package/{iana → lib/packlets/iana}/language-subtags/common.d.ts +0 -0
  548. /package/{iana → lib/packlets/iana}/language-subtags/validate.d.ts +0 -0
  549. /package/{iana → lib/packlets/iana}/languageRegistries.d.ts +0 -0
  550. /package/{iana → lib/packlets/iana}/model.d.ts +0 -0
  551. /package/{iana → lib/packlets/iana}/validate.d.ts +0 -0
  552. /package/{iana/jar → lib/packlets/unsd/csv}/index.d.ts +0 -0
  553. /package/{unsd → lib/packlets/unsd}/defaultRegistries.d.ts +0 -0
  554. /package/{utils → lib/packlets/utils}/index.d.ts +0 -0
  555. /package/{utils → lib/packlets/utils}/jsonHelpers.d.ts +0 -0
@@ -1,390 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2022 Erik Fortune
4
- *
5
- * Permission is hereby granted, free of charge, to any person obtaining a copy
6
- * of this software and associated documentation files (the "Software"), to deal
7
- * in the Software without restriction, including without limitation the rights
8
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- * copies of the Software, and to permit persons to whom the Software is
10
- * furnished to do so, subject to the following conditions:
11
- *
12
- * The above copyright notice and this permission notice shall be included in all
13
- * copies or substantial portions of the Software.
14
- *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
22
- */
23
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
- if (k2 === undefined) k2 = k;
25
- var desc = Object.getOwnPropertyDescriptor(m, k);
26
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
- desc = { enumerable: true, get: function() { return m[k]; } };
28
- }
29
- Object.defineProperty(o, k2, desc);
30
- }) : (function(o, m, k, k2) {
31
- if (k2 === undefined) k2 = k;
32
- o[k2] = m[k];
33
- }));
34
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
- Object.defineProperty(o, "default", { enumerable: true, value: v });
36
- }) : function(o, v) {
37
- o["default"] = v;
38
- });
39
- var __importStar = (this && this.__importStar) || function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.LanguageTag = void 0;
48
- const Iana = __importStar(require("../iana"));
49
- const ts_utils_1 = require("@fgv/ts-utils");
50
- const common_1 = require("./common");
51
- const common_2 = require("./normalization/common");
52
- const common_3 = require("./validation/common");
53
- const languageRegistryData_1 = require("./languageRegistryData");
54
- const languageTagParser_1 = require("./languageTagParser");
55
- const normalization_1 = require("./normalization");
56
- const validation_1 = require("./validation");
57
- /**
58
- * Represents a single BCP-47 language tag.
59
- * @public
60
- */
61
- class LanguageTag {
62
- /**
63
- * Constructs a {@link Bcp47.LanguageTag | LanguageTag }.
64
- * @param subtags - The {@link Bcp47.Subtags | subtags } from
65
- * which the tag is constructed.
66
- * @param validity - Known {@link Bcp47.TagValidity | validation level} of the
67
- * supplied subtags.
68
- * @param normalization - Known {@link Bcp47.TagNormalization | normalization level}
69
- * of the supplied subtags.
70
- * @param iana - The {@link Iana.LanguageRegistries} used to validate and normalize
71
- * this tag.
72
- * @internal
73
- */
74
- constructor(subtags, validity, normalization, iana) {
75
- this.subtags = Object.freeze({ ...subtags });
76
- this._normalization = normalization;
77
- this._validity = validity;
78
- this.tag = (0, common_1.subtagsToString)(subtags);
79
- this._iana = iana;
80
- this.registry = new languageRegistryData_1.LanguageRegistryData(this.subtags, iana);
81
- if (validity === 'strictly-valid') {
82
- this._isStrictlyValid = true;
83
- this._isValid = true;
84
- }
85
- else if (validity === 'valid') {
86
- this._isValid = true;
87
- }
88
- if (normalization === 'preferred') {
89
- this._isPreferred = true;
90
- this._isCanonical = true;
91
- }
92
- else if (normalization === 'canonical') {
93
- this._isCanonical = true;
94
- }
95
- }
96
- /**
97
- * The effective script of this language tag, if known.
98
- * The effective script is the script subtag in the tag itself,
99
- * if present, or the `Suppress-Script` defined in the
100
- * {@link https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry | IANA subtag registry}
101
- * for the primary language of this tag. Can be `undefined`
102
- * if neither the tag nor the IANA registry define a script.
103
- */
104
- get effectiveScript() {
105
- var _a;
106
- return (_a = this.subtags.script) !== null && _a !== void 0 ? _a : this.getSuppressedScript();
107
- }
108
- /**
109
- * Determines if this tag represents the special `undetermined` language.
110
- */
111
- get isUndetermined() {
112
- var _a;
113
- // istanbul ignore next
114
- return ((_a = this.subtags.primaryLanguage) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === common_1.UndeterminedLanguage;
115
- }
116
- /**
117
- * Whether this language tag is valid.
118
- */
119
- get isValid() {
120
- if (this._isValid === undefined) {
121
- this._isValid = validation_1.ValidateTag.isValid(this.subtags);
122
- if (this._isValid) {
123
- this._validity = 'valid';
124
- }
125
- }
126
- return this._isValid === true;
127
- }
128
- /**
129
- * Whether if this language tag is strictly valid.
130
- */
131
- get isStrictlyValid() {
132
- if (this._isStrictlyValid === undefined) {
133
- this._isStrictlyValid = validation_1.ValidateTag.isStrictlyValid(this.subtags);
134
- if (this._isStrictlyValid) {
135
- this._validity = 'strictly-valid';
136
- }
137
- }
138
- return this._isStrictlyValid === true;
139
- }
140
- /**
141
- * Whether this language tag is in canonical form.
142
- */
143
- get isCanonical() {
144
- if (this._isCanonical === undefined) {
145
- this._isCanonical = validation_1.ValidateTag.isCanonical(this.subtags);
146
- if (this._isCanonical) {
147
- this._normalization = 'canonical';
148
- }
149
- }
150
- return this._isCanonical === true;
151
- }
152
- /**
153
- * Whether this language tag is in preferred form.
154
- */
155
- get isPreferred() {
156
- if (this._isPreferred === undefined) {
157
- this._isPreferred = validation_1.ValidateTag.isInPreferredForm(this.subtags);
158
- if (this._isPreferred) {
159
- this._normalization = 'preferred';
160
- }
161
- }
162
- return this._isPreferred === true;
163
- }
164
- /**
165
- * Whether this language tag is a grandfathered tag.
166
- */
167
- get isGrandfathered() {
168
- return this.subtags.grandfathered !== undefined;
169
- }
170
- /**
171
- * Gets a text description of this tag.
172
- */
173
- get description() {
174
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
175
- const parts = [];
176
- if (!this.subtags.grandfathered) {
177
- if (this.registry.primaryLanguage || this.subtags.primaryLanguage) {
178
- parts.push(((_b = (_a = this.registry.primaryLanguage) === null || _a === void 0 ? void 0 : _a.description[0]) !== null && _b !== void 0 ? _b : this.subtags.primaryLanguage));
179
- }
180
- if (this.registry.extlangs) {
181
- for (const e of this.registry.extlangs) {
182
- parts.push(`/ ${(_d = (_c = e.registry) === null || _c === void 0 ? void 0 : _c.description[0]) !== null && _d !== void 0 ? _d : e.subtag}`);
183
- }
184
- }
185
- if (this.subtags.script) {
186
- parts.push(`in ${(_f = (_e = this.registry.script) === null || _e === void 0 ? void 0 : _e.description[0]) !== null && _f !== void 0 ? _f : this.subtags.script} script`);
187
- }
188
- if (this.subtags.region) {
189
- parts.push(`as spoken in ${(_h = (_g = this.registry.region) === null || _g === void 0 ? void 0 : _g.description[0]) !== null && _h !== void 0 ? _h : this.subtags.region}`);
190
- }
191
- if (this.registry.variants && this.registry.variants.length > 0) {
192
- for (const e of this.registry.variants) {
193
- parts.push(`(${(_k = (_j = e.registry) === null || _j === void 0 ? void 0 : _j.description[0]) !== null && _k !== void 0 ? _k : e.subtag})`);
194
- }
195
- }
196
- if (this.registry.extensions && this.registry.extensions.length > 0) {
197
- for (const e of this.registry.extensions) {
198
- parts.push(`(${(_m = (_l = e.registry) === null || _l === void 0 ? void 0 : _l.description[0]) !== null && _m !== void 0 ? _m : `-${e.singleton}`} "${e.value}")`);
199
- }
200
- }
201
- if (this.subtags.privateUse && this.subtags.privateUse.length > 0) {
202
- parts.push(`(-x "${this.subtags.privateUse.join('-')}")`);
203
- }
204
- }
205
- else {
206
- parts.push(`${this.tag} (grandfathered)`);
207
- }
208
- return parts.join(' ');
209
- }
210
- /**
211
- * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag
212
- * using optional configuration, if supplied.
213
- * @param tag - The `string` tag from which the {@link Bcp47.LanguageTag | language tag}
214
- * is te be constructed.
215
- * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
216
- * to guide the validation and normalization of this tag.
217
- * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
218
- * with details if an error occurs.
219
- */
220
- static createFromTag(tag, options) {
221
- options = this._getOptions(options);
222
- return languageTagParser_1.LanguageTagParser.parse(tag, options.iana).onSuccess((subtags) => {
223
- return this._createTransformed(subtags, 'unknown', 'unknown', options);
224
- });
225
- }
226
- /**
227
- * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied
228
- * {@link Bcp47.Subtags | subtags} using optional configuration,
229
- * if supplied.
230
- * @param tag - The {@link Bcp47.Subtags | subtags} from which the
231
- * {@link Bcp47.LanguageTag | language tag} is te be constructed.
232
- * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
233
- * to guide the validation and normalization of this tag.
234
- * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
235
- * with details if an error occurs.
236
- */
237
- static createFromSubtags(subtags, options) {
238
- return this._createTransformed(subtags, 'unknown', 'unknown', options);
239
- }
240
- /**
241
- * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string`
242
- * tag or {@link Bcp47.Subtags | subtags} using optional configuration,
243
- * if supplied.
244
- * @param from - The `string` tag or {@link Bcp47.Subtags | subtags} from
245
- * which the {@link Bcp47.LanguageTag | language tag} is te be constructed.
246
- * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
247
- * to guide the validation and normalization of this tag.
248
- * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
249
- * with details if an error occurs.
250
- */
251
- static create(from, options) {
252
- if (typeof from === 'string') {
253
- return this.createFromTag(from, options);
254
- }
255
- else {
256
- return this.createFromSubtags(from, options);
257
- }
258
- }
259
- /**
260
- * Constructs a new {@link Bcp47.LanguageTag | language tag} by applying appropriate transformations
261
- * to as supplied {@link Bcp47.Subtags | Bcp47.Subtags}.
262
- * @param subtags - The {@link Bcp47.Subtags | subtags} which represent the tag.
263
- * @param fromValidity - The {@link Bcp47.TagValidity | validation level} of the supplied subtags.
264
- * @param fromNormalization - The {@link Bcp47.TagNormalization | normalization level} fo the
265
- * supplied subtags.
266
- * @param partialOptions - Any {@link Bcp47.LanguageTagInitOptions | initialization options}.
267
- * @returns `Success` with the corresponding {@link Bcp47.LanguageTag | language tag} or `Failure`
268
- * with details if an error occurs.
269
- * @internal
270
- */
271
- static _createTransformed(subtags, fromValidity, fromNormalization, partialOptions) {
272
- const options = this._getOptions(partialOptions);
273
- return validation_1.ValidateTag.validateSubtags(subtags, options.validity, fromValidity)
274
- .onSuccess(() => {
275
- return normalization_1.NormalizeTag.normalizeSubtags(subtags, options.normalization, fromNormalization);
276
- })
277
- .onSuccess((normalized) => {
278
- const validity = (0, common_3.mostValid)(fromValidity, options.validity);
279
- const normalization = (0, common_2.mostNormalized)(fromNormalization, options.normalization);
280
- return (0, ts_utils_1.captureResult)(() => new LanguageTag(normalized, validity, normalization, options.iana));
281
- });
282
- }
283
- /**
284
- * Gets a fully-specified {@link Bcp47.LanguageTagInitOptions} from partial or undefined
285
- * options, substituting defaults as appropriate.
286
- * @param options - The {@link Bcp47.LanguageTagInitOptions} to be expanded, or `undefined`
287
- * for default options.
288
- * @returns Fully-specified {@link Bcp47.LanguageTagInitOptions | init options}.
289
- * @internal
290
- */
291
- static _getOptions(options) {
292
- var _a, _b, _c;
293
- return {
294
- iana: (_a = options === null || options === void 0 ? void 0 : options.iana) !== null && _a !== void 0 ? _a : Iana.DefaultRegistries.languageRegistries,
295
- validity: (_b = options === null || options === void 0 ? void 0 : options.validity) !== null && _b !== void 0 ? _b : 'well-formed',
296
- normalization: (_c = options === null || options === void 0 ? void 0 : options.normalization) !== null && _c !== void 0 ? _c : 'none',
297
- };
298
- }
299
- /**
300
- * Returns the `Suppress-Script` value defined for the primary language of this tag,
301
- * regardless of whether a different script is defined in this subtag.
302
- * @returns The suppress-script defined for the primary language, or undefined if
303
- * the primary language is invalid or has no defined suppressed script.
304
- */
305
- getSuppressedScript() {
306
- if (this._suppressedScript === undefined) {
307
- this._suppressedScript = false;
308
- if (this.subtags.primaryLanguage) {
309
- const language = this._iana.subtags.languages.tryGet(this.subtags.primaryLanguage);
310
- if ((language === null || language === void 0 ? void 0 : language.suppressScript) !== undefined) {
311
- this._suppressedScript = language.suppressScript;
312
- }
313
- }
314
- }
315
- return this._suppressedScript ? this._suppressedScript : undefined;
316
- }
317
- /**
318
- * Gets a confirmed valid representation of this language tag.
319
- * @returns `Success` with a valid representation of this {@link Bcp47.LanguageTag | language tag},
320
- * or `Failure` with details if the tag cannot be validated.
321
- */
322
- toValid() {
323
- if (this.isValid) {
324
- return (0, ts_utils_1.succeed)(this);
325
- }
326
- const options = {
327
- iana: this._iana,
328
- validity: 'valid',
329
- normalization: this._normalization,
330
- };
331
- return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
332
- }
333
- /**
334
- * Gets a confirmed strictly valid representation of this language tag.
335
- * @returns `Success` with a strictly valid representation of this {@link Bcp47.LanguageTag | language tag},
336
- * or `Failure` with details if the tag cannot be strictly validated.
337
- */
338
- toStrictlyValid() {
339
- if (this.isStrictlyValid) {
340
- return (0, ts_utils_1.succeed)(this);
341
- }
342
- const options = {
343
- iana: this._iana,
344
- validity: 'strictly-valid',
345
- normalization: this._normalization,
346
- };
347
- return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
348
- }
349
- /**
350
- * Gets a confirmed canonical representation of this language tag.
351
- * @returns `Success` with a canonical representation of this {@link Bcp47.LanguageTag | language tag},
352
- * or `Failure` with details if the tag cannot be normalized to canonical form.
353
- */
354
- toCanonical() {
355
- if (this.isCanonical) {
356
- return (0, ts_utils_1.succeed)(this);
357
- }
358
- const options = {
359
- iana: this._iana,
360
- validity: this._validity,
361
- normalization: 'canonical',
362
- };
363
- return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
364
- }
365
- /**
366
- * Gets a confirmed preferred representation of this language tag.
367
- * @returns `Success` with a preferred representation of this {@link Bcp47.LanguageTag | language tag},
368
- * or `Failure` with details if the tag cannot be normalized to preferred form.
369
- */
370
- toPreferred() {
371
- if (this.isPreferred) {
372
- return (0, ts_utils_1.succeed)(this);
373
- }
374
- const options = {
375
- iana: this._iana,
376
- validity: 'valid',
377
- normalization: 'preferred',
378
- };
379
- return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
380
- }
381
- /**
382
- * Gets a string representation of this language tag.
383
- * @returns A string representation of this language tag.
384
- */
385
- toString() {
386
- return this.tag;
387
- }
388
- }
389
- exports.LanguageTag = LanguageTag;
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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VztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFBLGtCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFDRCxNQUFNLE9BQU8sR0FBMkI7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFuWkQsa0NBbVpDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vaWFuYSc7XG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncywgVW5kZXRlcm1pbmVkTGFuZ3VhZ2UsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6YXRpb24sIG1vc3ROb3JtYWxpemVkIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdWYWxpZGl0eSwgbW9zdFZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uL2NvbW1vbic7XG5cbmltcG9ydCB7IExhbmd1YWdlUmVnaXN0cnlEYXRhIH0gZnJvbSAnLi9sYW5ndWFnZVJlZ2lzdHJ5RGF0YSc7XG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4vbGFuZ3VhZ2VUYWdQYXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplVGFnIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IFNjcmlwdFN1YnRhZyB9IGZyb20gJy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBWYWxpZGF0ZVRhZyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgcGFyc2luZyBvciBjcmVhdGlvbiBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9iamVjdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGl0eSBsZXZlbH0gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICB2YWxpZGl0eT86IFRhZ1ZhbGlkaXR5O1xuICAgIC8qKlxuICAgICAqIERlc2lyZWQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIG5vcm1hbGl6YXRpb24/OiBUYWdOb3JtYWxpemF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHN1YnRhZyBhbmQgZXh0ZW5zaW9uIHJlZ2lzdHJpZXN9IHRvXG4gICAgICogYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBpYW5hPzogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZm9yXG4gICAgICogdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRhZ3M6IFJlYWRvbmx5PFN1YnRhZ3M+O1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGV0YWlscyBhYm91dCB0aGlzIGxhbmd1YWdlIHRhZyBmcm9tIHRoZSBJQU5BIGxhbmd1YWdlXG4gICAgICogcmVnaXN0cmllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVnaXN0cnk6IExhbmd1YWdlUmVnaXN0cnlEYXRhO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1N0cmljdGx5VmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzQ2Fub25pY2FsOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ByZWZlcnJlZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VwcHJlc3NlZFNjcmlwdDogdW5kZWZpbmVkIHwgU2NyaXB0U3VidGFnIHwgZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgTGFuZ3VhZ2VUYWcgfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3MgfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHRhZyBpcyBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gdmFsaWRpdHkgLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGF0aW9uIGxldmVsfSBvZiB0aGVcbiAgICAgKiBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBub3JtYWxpemF0aW9uIC0gS25vd24ge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfVxuICAgICAqIG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBpYW5hIC0gVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllc30gdXNlZCB0byB2YWxpZGF0ZSBhbmQgbm9ybWFsaXplXG4gICAgICogdGhpcyB0YWcuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHN1YnRhZ3M6IFN1YnRhZ3MsIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSwgbm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbiwgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5zdWJ0YWdzID0gT2JqZWN0LmZyZWV6ZSh7IC4uLnN1YnRhZ3MgfSk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSBub3JtYWxpemF0aW9uO1xuICAgICAgICB0aGlzLl92YWxpZGl0eSA9IHZhbGlkaXR5O1xuICAgICAgICB0aGlzLnRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgTGFuZ3VhZ2VSZWdpc3RyeURhdGEodGhpcy5zdWJ0YWdzLCBpYW5hKTtcblxuICAgICAgICBpZiAodmFsaWRpdHkgPT09ICdzdHJpY3RseS12YWxpZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxpZGl0eSA9PT0gJ3ZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9ybWFsaXphdGlvbiA9PT0gJ3ByZWZlcnJlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgb2YgdGhpcyBsYW5ndWFnZSB0YWcsIGlmIGtub3duLlxuICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyaXB0IGlzIHRoZSBzY3JpcHQgc3VidGFnIGluIHRoZSB0YWcgaXRzZWxmLFxuICAgICAqIGlmIHByZXNlbnQsIG9yIHRoZSBgU3VwcHJlc3MtU2NyaXB0YCBkZWZpbmVkIGluIHRoZVxuICAgICAqIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5IHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnl9XG4gICAgICogZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLiAgQ2FuIGJlIGB1bmRlZmluZWRgXG4gICAgICogaWYgbmVpdGhlciB0aGUgdGFnIG5vciB0aGUgSUFOQSByZWdpc3RyeSBkZWZpbmUgYSBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlZmZlY3RpdmVTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5zY3JpcHQgPz8gdGhpcy5nZXRTdXBwcmVzc2VkU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHRhZyByZXByZXNlbnRzIHRoZSBzcGVjaWFsIGB1bmRldGVybWluZWRgIGxhbmd1YWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNVbmRldGVybWluZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpID09PSBVbmRldGVybWluZWRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IFZhbGlkYXRlVGFnLmlzVmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAndmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaWYgdGhpcyBsYW5ndWFnZSB0YWcgaXMgc3RyaWN0bHkgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1N0cmljdGx5VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gVmFsaWRhdGVUYWcuaXNTdHJpY3RseVZhbGlkKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNTdHJpY3RseVZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAnc3RyaWN0bHktdmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyBpbiBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzQ2Fub25pY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSBWYWxpZGF0ZVRhZy5pc0Nhbm9uaWNhbCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9ICdjYW5vbmljYWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNQcmVmZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ByZWZlcnJlZCA9IFZhbGlkYXRlVGFnLmlzSW5QcmVmZXJyZWRGb3JtKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJlZmVycmVkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgYSBncmFuZGZhdGhlcmVkIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzR3JhbmRmYXRoZXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5ncmFuZGZhdGhlcmVkICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhpcyB0YWcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkucHJpbWFyeUxhbmd1YWdlIHx8IHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKCh0aGlzLnJlZ2lzdHJ5LnByaW1hcnlMYW5ndWFnZT8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGxhbmdzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgLyAke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGUuc3VidGFnfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChgaW4gJHt0aGlzLnJlZ2lzdHJ5LnNjcmlwdD8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnNjcmlwdH0gc2NyaXB0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYGFzIHNwb2tlbiBpbiAke3RoaXMucmVnaXN0cnkucmVnaW9uPy5kZXNjcmlwdGlvblswXSA/PyB0aGlzLnN1YnRhZ3MucmVnaW9ufWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkudmFyaWFudHMgJiYgdGhpcy5yZWdpc3RyeS52YXJpYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkudmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgKCR7ZS5yZWdpc3RyeT8uZGVzY3JpcHRpb25bMF0gPz8gZS5zdWJ0YWd9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGVuc2lvbnMgJiYgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGAtJHtlLnNpbmdsZXRvbn1gfSBcIiR7ZS52YWx1ZX1cIilgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UgJiYgdGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgteCBcIiR7dGhpcy5zdWJ0YWdzLnByaXZhdGVVc2Uuam9pbignLScpfVwiKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChgJHt0aGlzLnRhZ30gKGdyYW5kZmF0aGVyZWQpYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgIHRhZ1xuICAgICAqIHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUgYHN0cmluZ2AgdGFnIGZyb20gd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ31cbiAgICAgKiBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVRhZyh0YWc6IHN0cmluZywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKHRhZywgb3B0aW9ucy5pYW5hKS5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBmcm9tIGEgc3VwcGxpZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIHRhZyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IGZyb20gd2hpY2ggdGhlXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN1YnRhZ3Moc3VidGFnczogU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRyYW5zZm9ybWVkKHN1YnRhZ3MsICd1bmtub3duJywgJ3Vua25vd24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgXG4gICAgICogdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdXNpbmcgb3B0aW9uYWwgY29uZmlndXJhdGlvbixcbiAgICAgKiBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgc3RyaW5nYCB0YWcgb3Ige0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShmcm9tOiBzdHJpbmcgfCBTdWJ0YWdzLCBvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGFnKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVN1YnRhZ3MoZnJvbSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gYnkgYXBwbHlpbmcgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb25zXG4gICAgICogdG8gYXMgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBCY3A0Ny5TdWJ0YWdzfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHdoaWNoIHJlcHJlc2VudCB0aGUgdGFnLlxuICAgICAqIEBwYXJhbSBmcm9tVmFsaWRpdHkgLSBUaGUge0BsaW5rIEJjcDQ3LlRhZ1ZhbGlkaXR5IHwgdmFsaWRhdGlvbiBsZXZlbH0gb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGZyb21Ob3JtYWxpemF0aW9uIC0gVGhlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0gZm8gdGhlXG4gICAgICogc3VwcGxpZWQgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gcGFydGlhbE9wdGlvbnMgLSBBbnkge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0aWFsaXphdGlvbiBvcHRpb25zfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfY3JlYXRlVHJhbnNmb3JtZWQoXG4gICAgICAgIHN1YnRhZ3M6IFN1YnRhZ3MsXG4gICAgICAgIGZyb21WYWxpZGl0eTogVGFnVmFsaWRpdHksXG4gICAgICAgIGZyb21Ob3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLFxuICAgICAgICBwYXJ0aWFsT3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnNcbiAgICApOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMocGFydGlhbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVUYWcudmFsaWRhdGVTdWJ0YWdzKHN1YnRhZ3MsIG9wdGlvbnMudmFsaWRpdHksIGZyb21WYWxpZGl0eSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVUYWcubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLm5vcm1hbGl6YXRpb24sIGZyb21Ob3JtYWxpemF0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChub3JtYWxpemVkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRpdHkgPSBtb3N0VmFsaWQoZnJvbVZhbGlkaXR5LCBvcHRpb25zLnZhbGlkaXR5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uID0gbW9zdE5vcm1hbGl6ZWQoZnJvbU5vcm1hbGl6YXRpb24sIG9wdGlvbnMubm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IExhbmd1YWdlVGFnKG5vcm1hbGl6ZWQsIHZhbGlkaXR5LCBub3JtYWxpemF0aW9uLCBvcHRpb25zLmlhbmEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmdWxseS1zcGVjaWZpZWQge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IGZyb20gcGFydGlhbCBvciB1bmRlZmluZWRcbiAgICAgKiBvcHRpb25zLCBzdWJzdGl0dXRpbmcgZGVmYXVsdHMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IHRvIGJlIGV4cGFuZGVkLCBvciBgdW5kZWZpbmVkYFxuICAgICAqIGZvciBkZWZhdWx0IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgRnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRPcHRpb25zKG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVxdWlyZWQ8TGFuZ3VhZ2VUYWdJbml0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWFuYTogb3B0aW9ucz8uaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcyxcbiAgICAgICAgICAgIHZhbGlkaXR5OiBvcHRpb25zPy52YWxpZGl0eSA/PyAnd2VsbC1mb3JtZWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogb3B0aW9ucz8ubm9ybWFsaXphdGlvbiA/PyAnbm9uZScsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYFN1cHByZXNzLVNjcmlwdGAgdmFsdWUgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcsXG4gICAgICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZGlmZmVyZW50IHNjcmlwdCBpcyBkZWZpbmVkIGluIHRoaXMgc3VidGFnLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwcmVzcy1zY3JpcHQgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2UsIG9yIHVuZGVmaW5lZCBpZlxuICAgICAqIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIGludmFsaWQgb3IgaGFzIG5vIGRlZmluZWQgc3VwcHJlc3NlZCBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldFN1cHByZXNzZWRTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID0gbGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID8gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiAndmFsaWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogdGhpcy5fbm9ybWFsaXphdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgc3RyaWN0bHkgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgc3RyaWN0bHkgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmljdGx5VmFsaWQoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3N0cmljdGx5LXZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DYW5vbmljYWwoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiB0aGlzLl92YWxpZGl0eSxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246ICdjYW5vbmljYWwnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvUHJlZmVycmVkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJywgLy8gcHJlZmVycmVkIHJlcXVpcmVzIHZhbGlkaXR5XG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAncHJlZmVycmVkJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YWc7XG4gICAgfVxufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"languageTagParser.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTagParser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;GAEG;AACH,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAG1B,OAAO;IAEP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;IA6BjF;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAiB3E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAenE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAapE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+BtE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAsB1E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CAMrE"}