{"version":3,"file":"static/js/main.f5d48f44.js","mappings":"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IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,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AoB,CAC7B,GAAIud,EAAK06B,QAAUj4C,IAAU4R,OAAOs+B,MAAMt+B,OAAO5R,IAC/C,OAAO4R,OAAO5R,GAGhB,IACGud,EAAK+zB,SAAW/zB,EAAK0xE,qBACX,KAAVjvF,IAAgB6M,EAAAA,EAAAA,GAAU7M,MAAW6M,EAAAA,EAAAA,GAAU/I,IAEhD,OAAO,CAEV,CAED,OAAO9D,CACR,mFC9OY+zB,GAAI4a,UAAAA,GAAKviB,EAAAA,GAAM,0ECRrB,IAAM8iE,EAA0B,CACrC,QACA,MACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,QC1GWC,EAA4B,CACvC,EAAG,SACH,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UC1BA,SAASC,EAAUhqD,GACxB,IAAM14B,EACiB,kBAAd04B,EAAyBA,EAAUn5B,WAAW,GAAKm5B,EAE5D,OAAO14B,GAAQ,IAAMA,GAAQ,EAC9B,CCLM,SAAS2iF,EAAcjqD,GAC5B,IAAM14B,EACiB,kBAAd04B,EAAyBA,EAAUn5B,WAAW,GAAKm5B,EAE5D,OACG14B,GAAQ,IAAcA,GAAQ,KAC9BA,GAAQ,IAAcA,GAAQ,IAC9BA,GAAQ,IAAcA,GAAQ,EAElC,CCNM,SAAS4iF,EAAiBlqD,GAC/B,OCJK,SAAwBA,GAC7B,IAAM14B,EACiB,kBAAd04B,EAAyBA,EAAUn5B,WAAW,GAAKm5B,EAE5D,OACG14B,GAAQ,IAAMA,GAAQ,KACtBA,GAAQ,IAAMA,GAAQ,EAE1B,CDJQ6iF,CAAenqD,IAAcgqD,EAAUhqD,EAC/C,eEAKpvB,EAAenD,OAAOmD,aAGtBpH,EAAW,CACf,GAEA,+DAEA,iEAEA,6CAEA,+CAEA,2CAEA,oDAEA,gFASK,SAAS4gF,EAAcxvF,GAAqB,IAW7CuK,EAEAk3B,EAb+BhzB,EAAc,uDAAJ,CAAC,EACxCghF,EAC0B,kBAAvBhhF,EAAQghF,WACXhhF,EAAQghF,WAAWxjF,WAAW,GAC9BwC,EAAQghF,WAERviF,EAAS,GACX1C,EAAQ,EACRktB,GAAS,EACTg4D,EAAQ,GAMRjhF,EAAQjJ,WACN,UAAWiJ,EAAQjJ,UAAY,WAAYiJ,EAAQjJ,UACrDi8B,EAAShzB,EAAQjJ,SAASi8B,OAC1Bl3B,EAAQkE,EAAQjJ,SAASoF,OAEzBL,EAAQkE,EAAQjJ,UAIpB,IAMI4/B,EANA36B,GAAQF,EAAQA,EAAME,KAAO,IAAM,EACnCC,GAAUH,EAAQA,EAAMG,OAAS,IAAM,EAGvCiM,EAAWmC,IAOf,IAFAtO,MAESA,GAASxK,EAAMC,QAQtB,GANkB,KAAdmlC,IACF16B,GAAU+2B,EAASA,EAAO/J,GAAS,IAAM,GAKzB,MAFlB0N,EAAYplC,EAAMiM,WAAWzB,IAEG,CAC9B,IAAMmlF,EAAY3vF,EAAMiM,WAAWzB,EAAQ,GAG3C,GACgB,IAAdmlF,GACc,KAAdA,GACc,KAAdA,GACc,KAAdA,GACc,KAAdA,GACc,KAAdA,GACA/9E,OAAOs+B,MAAMy/C,IACZF,GAAcE,IAAcF,EAC7B,CAIAC,GAAS15E,EAAaovB,GACtB16B,IACA,QACD,CAED,IAAME,EAAQJ,EAAQ,EAClBolF,EAAQhlF,EACRC,EAAMD,EAENtD,OAAI,EAER,GAAkB,KAAdqoF,EAA4B,CAE9B9kF,IAAQ+kF,EAGR,IAAMD,EAAY3vF,EAAMiM,WAAWpB,GAEjB,KAAd8kF,GAA4C,MAAdA,GAEhCroF,EAAO,cACPuD,IAAQ+kF,GAGRtoF,EAAO,SAEV,MAECA,EAAO,QAGT,IAAIuoF,EAA+B,GAC/BhqE,EAAqB,GACrBiqE,EAAa,GAIX7rF,EACK,UAATqD,EACIgoF,EACS,YAAThoF,EACA8nF,EACAC,EAIN,IAFAxkF,MAESA,GAAO7K,EAAMC,QAAQ,CAC5B,IAAM0vF,EAAY3vF,EAAMiM,WAAWpB,GAEnC,IAAK5G,EAAK0rF,GACR,MAGFG,GAAc95E,EAAa25E,GAKd,UAATroF,GAAoB4nF,EAAwBlgF,SAAS8gF,KACvDD,EAA+BC,EAE/BjqE,GAAqBE,EAAAA,EAAAA,GAA8B+pE,GAEtD,CAED,IAAIC,EAAuC,KAA1B/vF,EAAMiM,WAAWpB,GAElC,GAAIklF,EAAY,CACdllF,IAEA,IAAMmlF,EACK,UAAT1oF,IAAmBye,EAAAA,EAAAA,GAA8B+pE,GAE/CE,IACFH,EAA+BC,EAC/BjqE,EAAqBmqE,EAExB,CAED,IAAIC,EAAO,EAAIplF,EAAMD,EACjBkiB,EAAY,GAEhB,GAAKijE,IAAwC,IAA1BthF,EAAQyhF,cAEpB,GAAKJ,EAML,GAAa,UAATxoF,EAAkB,CAG3B,GAAIyoF,IAAelqE,EACjBsqE,EAAQ,EAAyB,QAWjC,GAPIN,IAAiCC,IAEnCG,EAAO,GADPplF,EAAM+kF,EAAQC,EAA6B5vF,QAC1B2vF,EACjBG,GAAa,IAIVA,EAAY,CACf,IAAMhlF,EAAS8kF,EACX,EACA,EAEJ,GAAIphF,EAAQkvB,UAAW,CACrB,IAAMgyD,EAAY3vF,EAAMiM,WAAWpB,GAEjB,KAAd8kF,GACFQ,EAAQplF,EAAQklF,GAChBpqE,EAAqB,IACZypE,EAAiBK,GAC1B9pE,EAAqB,GAErBsqE,EAAQplF,EAAQklF,EAEnB,MACCE,EAAQplF,EAAQklF,EAEnB,CAGHnjE,EAAYjH,CACb,KAAM,CACAkqE,GAGHI,EAAQ,EAAkCF,GAK5C,IAAIG,EAAgBx+E,OAAOyY,SACzBylE,EACS,gBAATxoF,EAAyB,GAAK,IAKhC,GAAI+oF,EAAWD,GACbD,EAAQ,EAA8BF,GACtCnjE,EAAY9W,EAAa,YACpB,GAAIo6E,KAAiBjB,EAG1BgB,EAAQ,EAA8BF,GACtCnjE,EAAYqiE,EAA0BiB,OACjC,CAEL,IAAIhgF,EAAS,GAGTkgF,EAAWF,IACbD,EAAQ,EAA8BF,GAIpCG,EAAgB,QAElBhgF,GAAU4F,GADVo6E,GAAiB,SACyB,GAAgB,OAC1DA,EAAgB,MAA0B,KAAhBA,GAG5BtjE,EAAY1c,EAAS4F,EAAao6E,EACnC,CACF,KAnFc,UAAT9oF,GACF6oF,EAAQ,EAAyBF,QAsFrC,GAAInjE,EAAW,CACbyjE,IAEA55E,EAAWmC,IACXtO,EAAQK,EAAM,EACdH,GAAUG,EAAMD,EAAQ,EACxBsC,EAAOnN,KAAK+sB,GACZ,IAAMjtB,EAAOiZ,IACbjZ,EAAKkZ,SAEDtK,EAAQqe,WACVre,EAAQqe,UAAUltB,KAChB6O,EAAQ+hF,iBACR1jE,EACA,CAACliB,MAAO+L,EAAU9L,IAAKhL,GACvBG,EAAMmL,MAAMP,EAAQ,EAAGC,IAI3B8L,EAAW9W,CACZ,MAKCiwF,EAAa9vF,EAAMmL,MAAMP,EAAQ,EAAGC,GACpC6kF,GAASI,EACTplF,GAAUolF,EAAW7vF,OACrBuK,EAAQK,EAAM,CAEjB,MAEmB,KAAdu6B,IACF36B,IACAitB,IACAhtB,EAAS,GAGPkH,OAAOs+B,MAAM9K,GACfmrD,KAEAb,GAAS15E,EAAaovB,GACtB16B,KAMN,OAAOwC,EAAOvF,KAAK,IAGnB,SAASmR,IACP,MAAO,CACLrO,KAAAA,EACAC,OAAAA,EACAqO,OAAQvO,IAAUD,EAAQA,EAAMwO,OAAS,IAAM,GAElD,CAQD,SAASo3E,EAAQzjF,EAAMqM,GAErB,IAAIvT,EAEAiJ,EAAQ0hF,WACV3qF,EAAWsT,KACFpO,QAAUqO,EACnBvT,EAASuT,QAAUA,EAEnBtK,EAAQ0hF,QAAQvwF,KACd6O,EAAQgiF,eACR7hF,EAASlC,GACTlH,EACAkH,GAGL,CAOD,SAAS6jF,IACHb,IACFxiF,EAAOnN,KAAK2vF,GAERjhF,EAAQ2N,MACV3N,EAAQ2N,KAAKxc,KAAK6O,EAAQiiF,YAAahB,EAAO,CAC5C9kF,MAAO+L,EACP9L,IAAKiO,MAIT42E,EAAQ,GAEX,CACF,CAQD,SAASW,EAAW3jF,GAClB,OAAQA,GAAQ,OAAUA,GAAQ,OAAWA,EAAO,OACrD,CAQD,SAAS4jF,EAAW5jF,GAClB,OACGA,GAAQ,GAAUA,GAAQ,GAClB,KAATA,GACCA,GAAQ,IAAUA,GAAQ,IAC1BA,GAAQ,KAAUA,GAAQ,KAC1BA,GAAQ,OAAUA,GAAQ,OACP,SAAZ,MAAPA,IACmB,SAAZ,MAAPA,EAEJ,sHC7YYikF,GAAb,QAOE,WAAYppF,EAAUqpF,EAAQj1D,IAAO,eACnC56B,KAAKwG,SAAWA,EAChBxG,KAAK6vF,OAASA,EACVj1D,IACF56B,KAAK46B,MAAQA,EAEhB,ICPI,SAASk1D,EAAMv4D,EAAaqD,GAOjC,IALA,IAAMp0B,EAAW,CAAC,EAEZqpF,EAAS,CAAC,EACZpmF,GAAS,IAEJA,EAAQ8tB,EAAYr4B,QAC3BI,OAAOC,OAAOiH,EAAU+wB,EAAY9tB,GAAOjD,UAC3ClH,OAAOC,OAAOswF,EAAQt4D,EAAY9tB,GAAOomF,QAG3C,OAAO,IAAID,EAAOppF,EAAUqpF,EAAQj1D,EACrC,CDFDg1D,EAAO/vF,UAAU2G,SAAW,CAAC,EAE7BopF,EAAO/vF,UAAUgwF,OAAS,CAAC,EAE3BD,EAAO/vF,UAAU+6B,MAAQ,6BETnBrqB,EAAM,CAAC,EAAEzQ,eAMR,SAAS+B,EAAOuf,GAErB,IAIIpT,EAJExH,EAAW,CAAC,EAEZqpF,EAAS,CAAC,EAIhB,IAAK7hF,KAAQoT,EAAW6U,WACtB,GAAI1lB,EAAI1R,KAAKuiB,EAAW6U,WAAYjoB,GAAO,CACzC,IAAM/O,EAAQmiB,EAAW6U,WAAWjoB,GAC9BwO,EAAO,IAAIuzE,EAAAA,EACf/hF,EACAoT,EAAWvc,UAAUuc,EAAWgvB,YAAc,CAAC,EAAGpiC,GAClD/O,EACAmiB,EAAWwZ,OAIXxZ,EAAWovB,iBACXpvB,EAAWovB,gBAAgBviC,SAASD,KAEpCwO,EAAKg0B,iBAAkB,GAGzBhqC,EAASwH,GAAQwO,EAEjBqzE,GAAO/jF,EAAAA,EAAAA,GAAUkC,IAASA,EAC1B6hF,GAAO/jF,EAAAA,EAAAA,GAAU0Q,EAAKogB,YAAc5uB,CACrC,CAGH,OAAO,IAAI4hF,EAAOppF,EAAUqpF,EAAQzuE,EAAWwZ,MAChD,CCvDM,IAAMmT,EAAQlsC,EAAO,CAC1B+4B,MAAO,QACP/1B,UAF0B,SAEhB0Y,EAAGvP,GACX,MAAO,SAAWA,EAAK5D,MAAM,GAAG8W,aACjC,EACD+U,WAAY,CACV2D,aAAc,KACdC,aAAc,KACdC,UAAW,KACXC,UAAW,KACXC,UAAW,KACXC,WAAY,KACZC,UAAW,QCZF8T,EAAMnsC,EAAO,CACxB+4B,MAAO,MACP/1B,UAFwB,SAEd0Y,EAAGvP,GACX,MAAO,OAASA,EAAK5D,MAAM,GAAG8W,aAC/B,EACD+U,WAAY,CAACyiB,QAAS,KAAMs3C,QAAS,KAAMC,SAAU,QCFhD,SAASC,EAAuB9/C,EAAYxT,GACjD,OAAOA,KAAawT,EAAaA,EAAWxT,GAAaA,CAC1D,CCAM,SAASuzD,EAAyB//C,EAAY5pC,GACnD,OAAO0pF,EAAuB9/C,EAAY5pC,EAAS0a,cACpD,CCNM,IAAM+sB,EAAQpsC,EAAO,CAC1B+4B,MAAO,QACPwV,WAAY,CAACggD,WAAY,eACzBvrF,UAAWsrF,EACXl6D,WAAY,CAACgY,MAAO,KAAM9T,WAAY,kBCJ3Bk2D,EAAOxuF,EAAO,CACzBgD,UADyB,SACf0Y,EAAGvP,GACX,MAAgB,SAATA,EAAkBA,EAAO,QAAUA,EAAK5D,MAAM,GAAG8W,aACzD,EACD+U,WAAY,CACVq6D,qBAAsB,KACtBC,WAAYC,EAAAA,WACZC,iBAAkB,KAClBC,SAAUF,EAAAA,WACVG,YAAaH,EAAAA,WACbI,aAAc15C,EAAAA,OACd25C,aAAc35C,EAAAA,OACd45C,YAAa55C,EAAAA,OACb65C,aAAcjD,EAAAA,eACdkD,YAAa,KACbr8D,gBAAiBm5D,EAAAA,eACjBmD,YAAa,KACbC,aAAcV,EAAAA,WACdW,eAAgBrD,EAAAA,eAChBsD,iBAAkB,KAClBC,aAAcb,EAAAA,WACdc,WAAYxD,EAAAA,eACZyD,YAAaf,EAAAA,WACbgB,aAAc,KACdlkD,WAAYkjD,EAAAA,WACZiB,YAAa,KACbC,iBAAkB,KAClBv5D,UAAW,KACXw5D,eAAgB7D,EAAAA,eAChB8D,UAAW16C,EAAAA,OACX26C,SAAU,KACVC,UAAWtB,EAAAA,WACXuB,cAAevB,EAAAA,WACfwB,oBAAqBxB,EAAAA,WACrByB,gBAAiB,KACjBC,SAAUpE,EAAAA,eACVqE,gBAAiB,KACjBC,aAAcl7C,EAAAA,OACdm7C,YAAa7B,EAAAA,WACb8B,aAAc9B,EAAAA,WACd+B,aAAc,KACdC,aAAchC,EAAAA,WACdiC,oBAAqB3E,EAAAA,eACrB4E,aAAcx7C,EAAAA,OACdy7C,aAAcz7C,EAAAA,OACd07C,YAAa17C,EAAAA,OACb27C,aAAcrC,EAAAA,WACdsC,YAAa57C,EAAAA,OACb67C,SAAU,KACVC,aAAc97C,EAAAA,OACd+7C,aAAc/7C,EAAAA,OACdg8C,aAAch8C,EAAAA,OACdi8C,cAAe,KACfC,KAAM,QC7CG/nE,EAAOxpB,EAAO,CACzB+4B,MAAO,OACPwV,WAAY,CACVijD,cAAe,iBACfC,UAAW,QACXC,QAAS,MACTC,UAAW,cAEb3uF,UAAWsrF,EACX3/C,gBAAiB,CAAC,UAAW,WAAY,QAAS,YAClDva,WAAY,CAEVw9D,KAAM,KACNC,OAAQr3D,EAAAA,eACRs3D,cAAe7F,EAAAA,eACf8F,UAAW9F,EAAAA,eACX+F,OAAQ,KACRC,MAAO,KACPC,gBAAiBxjD,EAAAA,QACjByjD,oBAAqBzjD,EAAAA,QACrB0jD,eAAgB1jD,EAAAA,QAChBtqC,IAAK,KACLiuF,GAAI,KACJC,MAAO5jD,EAAAA,QACP6jD,eAAgB,KAChBC,aAAcvG,EAAAA,eACdwG,UAAW/jD,EAAAA,QACXgkD,SAAUhkD,EAAAA,QACVikD,QAASjkD,EAAAA,QACTkkD,QAAS,KACT/jE,QAAS6f,EAAAA,QACTmkD,KAAM,KACNr/D,UAAWy4D,EAAAA,eACX6G,KAAMz9C,EAAAA,OACN09C,QAAS,KACT/xF,QAAS,KACTg2C,gBAAiB23C,EAAAA,WACjBqE,SAAUtkD,EAAAA,QACVukD,aAAchH,EAAAA,eACdiH,OAAQ79C,EAAAA,OAAS7a,EAAAA,eACjB24D,YAAa,KACbpnF,KAAM,KACNqnF,SAAU,KACVC,SAAU,KACVC,QAAS5kD,EAAAA,QACT6kD,MAAO7kD,EAAAA,QACPoI,IAAK,KACL08C,QAAS,KACTr/D,SAAUua,EAAAA,QACV+kD,SAAUpH,EAAAA,kBACVqH,UAAW/E,EAAAA,WACXgF,QAAS,KACTC,aAAc,KACdC,KAAM,KACNC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,eAAgBvlD,EAAAA,QAChBwlD,WAAY,KACZC,QAASlI,EAAAA,eACT7oF,OAAQiyC,EAAAA,OACR++C,OAAQ1lD,EAAAA,QACR2lD,KAAMh/C,EAAAA,OACNhyC,KAAM,KACNixF,SAAU,KACVC,QAAStI,EAAAA,eACTuI,UAAWvI,EAAAA,eACX15D,GAAI,KACJkiE,WAAY,KACZC,YAAa,KACbC,UAAW,KACXC,UAAW,KACXrkE,GAAI,KACJskE,MAAOnmD,EAAAA,QACPlX,OAAQ,KACRs9D,SAAU7I,EAAAA,eACV8I,QAAS9I,EAAAA,eACT+I,UAAWtmD,EAAAA,QACXumD,SAAUhJ,EAAAA,eACVjvE,KAAM,KACNlY,MAAO,KACPupB,KAAM,KACNooB,SAAU,KACVjlC,KAAM,KACN0jF,QAAS,KACTC,KAAMzmD,EAAAA,QACN0mD,IAAK//C,EAAAA,OACLggD,SAAU,KACV7hF,IAAK,KACL8hF,UAAWjgD,EAAAA,OACXrxB,MAAO,KACPsnB,OAAQ,KACRiqD,IAAK,KACLC,UAAWngD,EAAAA,OACXogD,SAAU/mD,EAAAA,QACVgnD,MAAOhnD,EAAAA,QACPxtC,KAAM,KACNy0F,MAAO,KACPC,SAAUlnD,EAAAA,QACVmnD,WAAYnnD,EAAAA,QACZonD,QAAS,KACTC,aAAc,KACdC,WAAY,KACZC,cAAe,KACfC,eAAgB,KAChBC,OAAQ,KACRC,SAAU,KACVC,UAAW,KACXC,iBAAkB,KAClBj4C,SAAU,KACVlB,QAAS,KACTo5C,QAAS,KACTC,cAAe,KACfC,cAAe,KACfC,kBAAmB,KACnBC,OAAQ,KACRC,YAAa,KACbC,MAAO,KACPC,WAAY,KACZC,OAAQ,KACRC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,YAAa,KACbC,OAAQ,KACRC,iBAAkB,KAClBC,UAAW,KACXC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,WAAY,KACZC,aAAc,KACdC,QAAS,KACTC,UAAW,KACXC,UAAW,KACXC,WAAY,KACZC,QAAS,KACTC,iBAAkB,KAClBC,OAAQ,KACRC,aAAc,KACdC,iBAAkB,KAClBC,UAAW,KACXC,YAAa,KACbC,UAAW,KACXC,eAAgB,KAChBC,YAAa,KACbC,aAAc,KACdC,aAAc,KACdC,YAAa,KACbC,WAAY,KACZx8C,YAAa,KACby8C,UAAW,KACXC,UAAW,KACXC,SAAU,KACVC,WAAY,KACZC,WAAY,KACZC,QAAS,KACTC,QAAS,KACTC,OAAQ,KACRC,UAAW,KACXC,WAAY,KACZC,WAAY,KACZC,aAAc,KACdC,mBAAoB,KACpBC,QAAS,KACTC,SAAU,KACVx9C,SAAU,KACVy9C,0BAA2B,KAC3BC,SAAU,KACVC,UAAW,KACXC,SAAU,KACVC,aAAc,KACdC,UAAW,KACXC,UAAW,KACXC,SAAU,KACVC,UAAW,KACXC,aAAc,KACdC,SAAU,KACVC,qBAAsB,KACtBC,SAAU,KACVC,eAAgB,KAChBC,UAAW,KACXC,QAAS,KACTj9E,KAAM6wB,EAAAA,QACNqsD,QAAS1lD,EAAAA,OACTzP,QAAS,KACTo1D,KAAM/O,EAAAA,eACN9tC,YAAa,KACb88C,YAAavsD,EAAAA,QACbwsD,OAAQ,KACRC,QAAS,KACTC,SAAU1sD,EAAAA,QACV2sD,eAAgB,KAChBn9C,IAAK+tC,EAAAA,eACLvyC,SAAUhL,EAAAA,QACV4sD,SAAU5sD,EAAAA,QACVna,KAAM8gB,EAAAA,OACNkmD,QAASlmD,EAAAA,OACTmmD,QAASvP,EAAAA,eACT9lF,MAAO,KACPs1F,OAAQ/sD,EAAAA,QACRgtD,SAAUhtD,EAAAA,QACVoN,SAAUpN,EAAAA,QACVk0C,MAAO,KACPtgF,KAAM+yC,EAAAA,OACNxM,MAAO,KACP8yD,KAAM,KACNC,KAAMvmD,EAAAA,OACN+I,WAAYuwC,EAAAA,WACZtqF,IAAK,KACLw3F,OAAQ,KACRC,QAAS,KACTC,OAAQ,KACR/zF,MAAOqtC,EAAAA,OACP7kB,KAAM,KACN9uB,MAAO,KACPgqC,SAAU2J,EAAAA,OACVz3C,OAAQ,KACRohB,MAAO,KACPg9E,UAAW,KACXt3F,KAAM,KACNu3F,cAAevtD,EAAAA,QACfwtD,OAAQ,KACR9+F,MAAOuxF,EAAAA,WACPxrF,MAAOkyC,EAAAA,OACPtoC,KAAM,KAINynB,MAAO,KACP2nE,MAAO,KACPC,QAASnQ,EAAAA,eACToQ,KAAM,KACNC,WAAY,KACZ55F,QAAS,KACT65F,OAAQlnD,EAAAA,OACRmnD,YAAa,KACbC,aAAcpnD,EAAAA,OACdqnD,YAAa,KACbC,YAAa,KACbjR,KAAM,KACNkR,QAAS,KACTtlE,QAAS,KACTulE,MAAO,KACP/yF,KAAM,KACNgzF,SAAU,KACVC,SAAU,KACVp6F,MAAO,KACPq6F,QAAStuD,EAAAA,QACTuuD,QAASvuD,EAAAA,QACTr3B,MAAO,KACP6lF,KAAM,KACNC,MAAO,KACPC,YAAa,KACbC,OAAQhoD,EAAAA,OACRioD,WAAYjoD,EAAAA,OACZ7sB,KAAM,KACN+0E,SAAU,KACVC,OAAQ,KACRC,aAAcpoD,EAAAA,OACdqoD,YAAaroD,EAAAA,OACbsoD,SAAUjvD,EAAAA,QACVkvD,OAAQlvD,EAAAA,QACRmvD,QAASnvD,EAAAA,QACTovD,OAAQpvD,EAAAA,QACR1nC,OAAQ,KACR+2F,QAAS,KACTC,OAAQ,KACRC,IAAK,KACLC,YAAa7oD,EAAAA,OACb8R,MAAO,KACPg3C,OAAQ,KACRC,UAAWzP,EAAAA,WACX0P,QAAS,KACTC,QAAS,KACT9kF,KAAM,KACN+kF,UAAWlpD,EAAAA,OACXkG,UAAW,KACX/1C,QAAS,KACTg5F,OAAQ,KACRC,MAAO,KACPC,OAAQrpD,EAAAA,OAGRspD,kBAAmB,KACnBC,YAAa,KACbC,SAAU,KACVC,wBAAyBpwD,EAAAA,QACzBqwD,sBAAuBrwD,EAAAA,QACvB/6B,OAAQ,KACRhP,SAAU,KACV0gC,QAASgQ,EAAAA,OACT2pD,SAAU,KACVC,aAAc,QCxSL99F,EAAMnB,EAAO,CACxB+4B,MAAO,MACPwV,WAAY,CACV2wD,aAAc,gBACdC,kBAAmB,qBACnBC,WAAY,cACZC,cAAe,iBACfC,UAAW,aACX9rE,UAAW,QACX+rE,SAAU,YACVC,SAAU,YACVC,mBAAoB,sBACpBC,0BAA2B,8BAC3BC,aAAc,gBACdC,eAAgB,kBAChBzM,YAAa,cACb57D,SAAU,WACVsoE,iBAAkB,oBAClBC,iBAAkB,oBAClBC,YAAa,eACb9jD,SAAU,YACV+jD,WAAY,cACZC,aAAc,gBACdC,WAAY,cACZC,SAAU,YACVC,eAAgB,mBAChBC,YAAa,eACbC,UAAW,aACXC,YAAa,eACbC,WAAY,cACZC,UAAW,aACXC,2BAA4B,+BAC5BC,yBAA0B,6BAC1BrM,SAAU,WACVsM,UAAW,cACXC,aAAc,iBACdC,aAAc,iBACdC,eAAgB,kBAChBC,cAAe,iBACfC,cAAe,iBACfC,UAAW,aACXC,UAAW,aACXC,YAAa,eACbC,QAAS,WACTC,YAAa,gBACbC,aAAc,iBACdC,QAAS,WACTC,QAAS,WACTC,QAAS,WACTC,SAAU,YACVC,MAAO,SACPC,UAAW,cACXC,WAAY,eACZhM,QAAS,UACTiM,WAAY,aACZhM,aAAc,eACdE,cAAe,gBACf+L,QAAS,UACT5L,SAAU,WACVC,UAAW,YACXC,iBAAkB,mBAClBj4C,SAAU,WACVlB,QAAS,UACTo5C,QAAS,UACTI,OAAQ,SACRC,YAAa,cACbC,MAAO,QACPC,WAAY,aACZC,OAAQ,SACRC,UAAW,YACXC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,OAAQ,SACRC,iBAAkB,mBAClBC,UAAW,YACXyK,MAAO,QACPxK,QAAS,UACTC,QAAS,UACTC,QAAS,UACTuK,UAAW,YACXC,WAAY,aACZtK,aAAc,eACdC,QAAS,UACTC,UAAW,YACXC,UAAW,YACXC,WAAY,aACZC,QAAS,UACTE,OAAQ,SACRC,aAAc,eACdC,iBAAkB,mBAClBE,YAAa,cACbC,UAAW,YACXE,YAAa,cACbC,aAAc,eACdC,aAAc,eACdC,YAAa,cACbC,WAAY,aACZx8C,YAAa,cACby8C,UAAW,YACXoJ,aAAc,eACdnJ,UAAW,YACXC,SAAU,WACVC,WAAY,aACZC,WAAY,aACZC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,UAAW,YACXC,WAAY,aACZC,WAAY,aACZC,aAAc,eACd0I,SAAU,WACVxI,QAAS,UACTC,SAAU,WACVx9C,SAAU,WACV09C,SAAU,WACVC,UAAW,YACXC,SAAU,WACVoI,OAAQ,SACRlI,UAAW,YACXC,UAAW,YACXC,SAAU,WACVC,UAAW,YACXC,aAAc,eACdC,SAAU,WACVE,SAAU,WACVC,eAAgB,iBAChBC,UAAW,YACX0H,OAAQ,SACRC,iBAAkB,oBAClBC,kBAAmB,qBACnBC,WAAY,cACZC,QAAS,WACTC,cAAe,iBACfvH,eAAgB,iBAChBwH,gBAAiB,mBACjBC,eAAgB,kBAChBC,UAAW,aACXC,YAAa,eACbC,sBAAuB,yBACvBC,uBAAwB,0BACxBzrE,gBAAiB,mBACjBC,iBAAkB,oBAClBC,cAAe,iBACfC,eAAgB,kBAChBC,iBAAkB,oBAClBsrE,cAAe,iBACfC,YAAa,eACb13D,SAAU,WACV23D,WAAY,cACZC,eAAgB,kBAChBC,cAAe,iBACfzrE,OAAQ,SACR0rE,kBAAmB,qBACnBC,mBAAoB,sBACpBC,YAAa,eACbC,aAAc,gBACdC,WAAY,eACZC,YAAa,eACbC,SAAU,YACVC,aAAc,gBACdC,cAAe,iBACfC,aAAc,gBACdC,SAAU,aACVC,YAAa,gBACbC,YAAa,gBACbC,YAAa,eACbC,YAAa,eACbC,QAAS,WAETC,cAAe,gBACfC,cAAe,iBAEjBzhG,UAAWqrF,EACXj6D,WAAY,CACVswE,MAAOxY,EAAAA,sBACPgT,aAAc7pD,EAAAA,OACdsvD,WAAY,KACZC,SAAU,KACVzF,kBAAmB,KACnB0F,WAAYxvD,EAAAA,OACZyvD,UAAWzvD,EAAAA,OACX+pD,WAAY,KACZ2F,OAAQ1vD,EAAAA,OACR2vD,cAAe,KACfC,cAAe,KACfC,QAAS7vD,EAAAA,OACT8vD,UAAW,KACX9F,cAAe,KACf+F,cAAe,KACfC,YAAa,KACbC,KAAM,KACNtY,MAAO,KACPuY,KAAMlwD,EAAAA,OACNmwD,GAAI,KACJC,SAAU,KACVnG,UAAWjqD,EAAAA,OACX7hB,UAAWy4D,EAAAA,eACXyZ,KAAM,KACNnG,SAAU,KACVoG,cAAe,KACfnG,SAAU,KACV78F,MAAO,KACP88F,mBAAoB,KACpBC,0BAA2B,KAC3BC,aAAc,KACdC,eAAgB,KAChB5+F,QAAS,KACT4kG,kBAAmB,KACnBC,iBAAkB,KAClB1S,YAAa,KACb2S,OAAQ,KACRC,GAAI,KACJC,GAAI,KACJ/3E,EAAG,KACHsJ,SAAU,KACV0uE,cAAe,KACfC,QAAS7wD,EAAAA,OACT8wD,gBAAiB9wD,EAAAA,OACjBsB,UAAW,KACXyvD,QAAS,KACTC,IAAK,KACLC,QAASjxD,EAAAA,OACTwqD,iBAAkB,KAClBpM,SAAU/kD,EAAAA,QACV63D,GAAI,KACJC,GAAI,KACJC,SAAU,KACVC,SAAU,KACVC,UAAWtxD,EAAAA,OACXyqD,iBAAkB,KAClB73F,IAAK,KACLoP,MAAO,KACPuvF,SAAUvxD,EAAAA,OACVwxD,0BAA2B,KAC3BvjG,KAAM,KACNy8F,YAAa1qD,EAAAA,OACb4G,SAAU,KACV70C,OAAQ,KACR0/F,UAAW,KACXC,YAAa,KACb/G,WAAY,KACZC,aAAc,KACd+G,UAAW,KACXC,eAAgB,KAChB/G,WAAY,KACZC,SAAU,KACVC,eAAgB,KAChBC,YAAa,KACbC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZ95F,OAAQ,KACRwgG,GAAI,KACJt1F,KAAM,KACNu1F,GAAI,KACJC,GAAI,KACJC,GAAI7sE,EAAAA,eACJ8sE,GAAI9sE,EAAAA,eACJimE,UAAWjmE,EAAAA,eACXkmE,2BAA4B,KAC5BC,yBAA0B,KAC1B4G,SAAU,KACVC,kBAAmB,KACnBC,cAAe,KACfh6E,QAAS,KACTi6E,QAASryD,EAAAA,OACTsyD,kBAAmB,KACnBC,WAAY,KACZxkG,OAAQ,KACRC,KAAM,KACNixF,SAAU,KACVsM,UAAWvrD,EAAAA,OACXwrD,aAAcxrD,EAAAA,OACdyrD,aAAczrD,EAAAA,OACd9iB,GAAI,KACJs1E,YAAaxyD,EAAAA,OACb0rD,eAAgB,KAChB+G,kBAAmB,KACnBC,GAAI,KACJC,IAAK,KACLC,UAAW5yD,EAAAA,OACXza,EAAGya,EAAAA,OACH6yD,GAAI7yD,EAAAA,OACJ8yD,GAAI9yD,EAAAA,OACJ+yD,GAAI/yD,EAAAA,OACJgzD,GAAIhzD,EAAAA,OACJizD,aAAcpc,EAAAA,sBACdqc,iBAAkB,KAClBC,UAAW,KACXC,WAAY,KACZC,SAAU,KACVC,QAAS,KACTt6E,KAAM,KACNu6E,aAAc,KACd5H,cAAe,KACfC,cAAe,KACf4H,kBAAmBxzD,EAAAA,OACnByzD,MAAO,KACP5H,UAAW,KACXC,UAAW,KACXC,YAAa,KACb2H,aAAc,KACdC,YAAa,KACbC,YAAa,KACbC,KAAM,KACNC,iBAAkB,KAClBC,UAAW,KACXC,aAAc,KACd71F,IAAK,KACLwQ,MAAO,KACPslF,uBAAwB,KACxBC,sBAAuB,KACvBC,UAAWn0D,EAAAA,OACXo0D,UAAW,KACXn+D,OAAQ,KACRiqD,IAAK,KACL30F,KAAM,KACNM,KAAM,KACNmgG,QAAS,KACTC,YAAa,KACbC,aAAc,KACdC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,MAAO,KACPC,UAAW,KACXC,WAAY,KACZ4H,WAAY,KACZC,SAAU,KACVxzF,OAAQ,KACR2/E,QAAS,KACTiM,WAAY,KACZhM,aAAc,KACdE,cAAe,KACf+L,QAAS,KACT5L,SAAU,KACVC,UAAW,KACXC,iBAAkB,KAClBj4C,SAAU,KACVlB,QAAS,KACTo5C,QAAS,KACTI,OAAQ,KACRC,YAAa,KACbC,MAAO,KACPC,WAAY,KACZC,OAAQ,KACRC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,YAAa,KACbC,OAAQ,KACRC,iBAAkB,KAClBC,UAAW,KACXyK,MAAO,KACPxK,QAAS,KACTC,QAAS,KACTC,QAAS,KACTuK,UAAW,KACXC,WAAY,KACZtK,aAAc,KACdC,QAAS,KACTC,UAAW,KACXC,UAAW,KACXC,WAAY,KACZC,QAAS,KACTE,OAAQ,KACRC,aAAc,KACdC,iBAAkB,KAClBE,YAAa,KACbC,UAAW,KACXE,YAAa,KACbC,aAAc,KACdC,aAAc,KACdC,YAAa,KACbC,WAAY,KACZx8C,YAAa,KACby8C,UAAW,KACXoJ,aAAc,KACdnJ,UAAW,KACXC,SAAU,KACVC,WAAY,KACZC,WAAY,KACZC,QAAS,KACTC,QAAS,KACTC,OAAQ,KACRC,UAAW,KACXC,WAAY,KACZC,WAAY,KACZC,aAAc,KACd0I,SAAU,KACVxI,QAAS,KACTC,SAAU,KACVx9C,SAAU,KACV09C,SAAU,KACVC,UAAW,KACXC,SAAU,KACVoI,OAAQ,KACRlI,UAAW,KACXC,UAAW,KACXC,SAAU,KACVC,UAAW,KACXC,aAAc,KACdC,SAAU,KACVE,SAAU,KACVC,eAAgB,KAChBC,UAAW,KACX0H,OAAQ,KACRqH,QAAS,KACT9vD,SAAU,KACVnuC,MAAO,KACPk+F,OAAQ,KACRC,YAAa,KACbzhG,OAAQ,KACR0hG,SAAU,KACVC,QAAS,KACTxH,iBAAkBntD,EAAAA,OAClBotD,kBAAmBptD,EAAAA,OACnBqtD,WAAY,KACZC,QAAS,KACT19F,KAAM,KACNglG,WAAY50D,EAAAA,OACZ60D,oBAAqB,KACrBC,iBAAkB,KAClBC,aAAc,KACdC,MAAO,KACPrP,KAAM/O,EAAAA,eACNqe,MAAO,KACP9F,cAAe,KACf5B,cAAe,KACf2H,OAAQ,KACRC,UAAWn1D,EAAAA,OACXo1D,UAAWp1D,EAAAA,OACXq1D,UAAWr1D,EAAAA,OACXs1D,cAAe,KACfC,oBAAqB,KACrBC,eAAgB,KAChBC,UAAW,KACXnmG,SAAUunF,EAAAA,sBACVl+C,EAAG,KACH+8D,OAAQ,KACR1P,eAAgB,KAChB2P,KAAM,KACNC,KAAM,KACN/sD,IAAKguC,EAAAA,sBACL+R,IAAK/R,EAAAA,sBACL2W,gBAAiB,KACjBqI,YAAa,KACbC,UAAW,KACXC,mBAAoBlf,EAAAA,sBACpBmf,iBAAkBnf,EAAAA,sBAClBof,cAAepf,EAAAA,sBACfqf,gBAAiBrf,EAAAA,sBACjBv/D,SAAU,KACV6+E,QAAS,KACTlhG,OAAQ,KACRmhG,OAAQ,KACRC,GAAI,KACJC,GAAI,KACJC,MAAO,KACPC,KAAM,KACN/I,eAAgB,KAChBgJ,KAAM,KACNC,MAAO,KACPC,aAAc,KACdC,iBAAkB52D,EAAAA,OAClB62D,iBAAkB72D,EAAAA,OAClB82D,aAAc,KACdC,QAAS,KACT3+D,YAAa,KACb4+D,aAAc,KACdC,MAAO,KACPC,MAAO,KACPC,YAAa,KACbzJ,UAAW,KACXC,YAAa,KACbC,sBAAuB5tD,EAAAA,OACvB6tD,uBAAwB7tD,EAAAA,OACxB/7B,OAAQ,KACRmzF,OAAQ,KACRh1E,gBAAiBy0D,EAAAA,sBACjBx0D,iBAAkB,KAClBC,cAAe,KACfC,eAAgB,KAChBC,iBAAkBwd,EAAAA,OAClB8tD,cAAe9tD,EAAAA,OACf+tD,YAAa,KACb1hG,MAAO,KACPgrG,aAAcr3D,EAAAA,OACds3D,aAAc,KACdC,oBAAqB,KACrBC,WAAY,KACZC,cAAe,KACfC,qBAAsB,KACtBC,eAAgB9gB,EAAAA,sBAChBxgD,SAAU2J,EAAAA,OACV43D,YAAa,KACbrvG,OAAQ,KACRsvG,QAAS73D,EAAAA,OACT83D,QAAS93D,EAAAA,OACTguD,WAAY,KACZC,eAAgB,KAChBC,cAAe,KACf6J,WAAY,KACZ3I,cAAe,KACfzlF,MAAO,KACPquF,kBAAmB,KACnB3oG,KAAM,KACNozB,OAAQo0D,EAAAA,sBACRjxD,GAAI,KACJj4B,UAAW,KACXsqG,GAAI,KACJC,GAAI,KACJ/J,kBAAmBnuD,EAAAA,OACnBouD,mBAAoBpuD,EAAAA,OACpB6xB,QAAS,KACTw8B,YAAa,KACbC,aAAc,KACdC,WAAYvuD,EAAAA,OACZtnC,OAAQ,KACR81F,YAAaxuD,EAAAA,OACb2uD,cAAe3uD,EAAAA,OACf4uD,aAAc,KACdH,SAAUzuD,EAAAA,OACV0uD,aAAc1uD,EAAAA,OACd7vC,QAAS,KACT0+F,SAAU7uD,EAAAA,OACV8uD,YAAa9uD,EAAAA,OACb+uD,YAAa/uD,EAAAA,OACb2G,QAAS,KACTwxD,WAAY,KACZC,WAAY,KACZtqG,MAAO,KACPuqG,OAAQ,KACRrJ,YAAa,KACbC,YAAa,KACbvf,EAAG,KACH4oB,GAAI,KACJC,GAAI,KACJC,iBAAkB,KAClBtJ,QAASlvD,EAAAA,OACT+vC,EAAG,KACH0oB,GAAI,KACJC,GAAI,KACJC,iBAAkB,KAClB3oB,EAAG,KACH4oB,WAAY,QCliBHzkF,EAAOykE,EAAM,CAAC9hD,EAAKD,EAAOE,EAAOoiD,EAAM0f,GAAW,QAClD/sG,EAAM8sF,EAAM,CAAC9hD,EAAKD,EAAOE,EAAOoiD,EAAM2f,GAAU,2GCTvDC,EAAQ,kBACRC,EAAO,UACPC,EAAM,SAOL,SAAS/zE,EAAKzB,EAAQ17B,GAC3B,IAAM4wF,GAAS/jF,EAAAA,EAAAA,GAAU7M,GACrB+O,EAAO/O,EACPmxG,EAAOC,EAAAA,EAEX,GAAIxgB,KAAUl1D,EAAOk1D,OACnB,OAAOl1D,EAAOn0B,SAASm0B,EAAOk1D,OAAOA,IAGvC,GAAIA,EAAO3wF,OAAS,GAA4B,SAAvB2wF,EAAOzlF,MAAM,EAAG,IAAiB6lG,EAAM/sG,KAAKjE,GAAQ,CAE3E,GAAwB,MAApBA,EAAMs8B,OAAO,GAAY,CAE3B,IAAM+0E,EAAOrxG,EAAMmL,MAAM,GAAG6W,QAAQivF,EAAMK,GAC1CviG,EAAO,OAASsiG,EAAK/0E,OAAO,GAAGpa,cAAgBmvF,EAAKlmG,MAAM,EAC3D,KAAM,CAEL,IAAMkmG,EAAOrxG,EAAMmL,MAAM,GAEzB,IAAK8lG,EAAKhtG,KAAKotG,GAAO,CACpB,IAAIE,EAASF,EAAKrvF,QAAQkvF,EAAKM,GAEN,MAArBD,EAAOj1E,OAAO,KAChBi1E,EAAS,IAAMA,GAGjBvxG,EAAQ,OAASuxG,CAClB,CACF,CAEDJ,EAAOrgB,EAAAA,CACR,CAED,OAAO,IAAIqgB,EAAKpiG,EAAM/O,EACvB,CAMD,SAASwxG,EAAM/mF,GACb,MAAO,IAAMA,EAAGxI,aACjB,CAMD,SAASqvF,EAAU7mF,GACjB,OAAOA,EAAG6R,OAAO,GAAGpa,aACrB,qCC/DM,SAASrV,EAAU7M,GACxB,OAAOA,EAAMiiB,aACd,6KCDK4Q,EAASxyB,OAAOc,KAAKu5C,GAEdo2C,EAAb,0CAQE,WAAYvpF,EAAUo2B,EAAWmuE,EAAMnwE,GAAO,sBAC5C,IAAInxB,GAAS,EAMb,GAJA,cAAMjD,EAAUo2B,GAEhB8zE,GAAK,UAAM,QAAS91E,GAEA,kBAATmwE,EACT,OAASthG,EAAQqoB,EAAO5yB,QAAQ,CAC9B,IAAMwY,EAAQoa,EAAOroB,GACrBinG,GAAK,UAAM5+E,EAAOroB,IAASshG,EAAOpxD,EAAMjiC,MAAYiiC,EAAMjiC,GAC3D,CAXyC,QAa7C,CArBH,kBAAiC24F,EAAAA,GA+BjC,SAASK,EAAK9gG,EAAQhQ,EAAKX,GACrBA,IAEF2Q,EAAOhQ,GAAOX,EAEjB,CAZD8wF,EAAYlwF,UAAU2hB,SAAU,6FC/BnB6uF,GAAb,QAME,WAAY7pG,EAAUo2B,IAAW,eAE/B58B,KAAKwG,SAAWA,EAEhBxG,KAAK48B,UAAYA,CAClB,IAIHyzE,EAAKxwG,UAAU+6B,MAAQ,KACvBy1E,EAAKxwG,UAAU0wC,SAAU,EACzB8/D,EAAKxwG,UAAU2wF,YAAa,EAC5B6f,EAAKxwG,UAAUquF,mBAAoB,EACnCmiB,EAAKxwG,UAAUq3C,QAAS,EACxBm5D,EAAKxwG,UAAUw8B,gBAAiB,EAChCg0E,EAAKxwG,UAAUiuF,gBAAiB,EAChCuiB,EAAKxwG,UAAUkuF,uBAAwB,EACvCsiB,EAAKxwG,UAAU2wC,iBAAkB,EACjC6/D,EAAKxwG,UAAU2hB,SAAU,wSCxBzB,IAAImvF,EAAS,EAEApgE,EAAUqgE,IACVpgB,EAAaogB,IACb1iB,EAAoB0iB,IACpB15D,EAAS05D,IACT9iB,EAAiB8iB,IACjBv0E,EAAiBu0E,IACjB7iB,EAAwB6iB,IAErC,SAASA,IACP,OAAO,KAAP,IAAO,IAAOD,EACf,qCCNM,SAASl/F,EAAMxS,GACpB,IAAMw8B,EAAQ3pB,OAAO7S,GAAS,IAAIg/B,OAClC,OAAOxC,EAAQA,EAAMsK,MAAM,iBAAmB,EAC/C,CAQM,SAASr5B,EAAUkD,GACxB,OAAOA,EAAOhJ,KAAK,KAAKq3B,MACzB,0DClBG4yE,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3vG,IAAjB4vG,EACH,OAAOA,EAAahuD,QAGrB,IAAID,EAAS8tD,EAAyBE,GAAY,CAGjD/tD,QAAS,CAAC,GAOX,OAHAiuD,EAAoBF,GAAUlyG,KAAKkkD,EAAOC,QAASD,EAAQA,EAAOC,QAAS8tD,GAGpE/tD,EAAOC,OACf,CAGA8tD,EAAoBhoD,EAAImoD,aCzBxB,IAAIC,EAAW,GACfJ,EAAoB1oB,EAAI,SAASj8E,EAAQglG,EAAU9vG,EAAI+vG,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASlzG,EAAI,EAAGA,EAAI8yG,EAAShyG,OAAQd,IAAK,CACrC+yG,EAAWD,EAAS9yG,GAAG,GACvBiD,EAAK6vG,EAAS9yG,GAAG,GACjBgzG,EAAWF,EAAS9yG,GAAG,GAE3B,IAJA,IAGImzG,GAAY,EACPnpC,EAAI,EAAGA,EAAI+oC,EAASjyG,OAAQkpE,MACpB,EAAXgpC,GAAsBC,GAAgBD,IAAa9xG,OAAOc,KAAK0wG,EAAoB1oB,GAAGopB,OAAM,SAAS5xG,GAAO,OAAOkxG,EAAoB1oB,EAAExoF,GAAKuxG,EAAS/oC,GAAK,IAChK+oC,EAAS/9F,OAAOg1D,IAAK,IAErBmpC,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbL,EAAS99F,OAAOhV,IAAK,GACrB,IAAIyxC,EAAIxuC,SACED,IAANyuC,IAAiB1jC,EAAS0jC,EAC/B,CACD,CACA,OAAO1jC,CArBP,CAJCilG,EAAWA,GAAY,EACvB,IAAI,IAAIhzG,EAAI8yG,EAAShyG,OAAQd,EAAI,GAAK8yG,EAAS9yG,EAAI,GAAG,GAAKgzG,EAAUhzG,IAAK8yG,EAAS9yG,GAAK8yG,EAAS9yG,EAAI,GACrG8yG,EAAS9yG,GAAK,CAAC+yG,EAAU9vG,EAAI+vG,EAwB/B,KC5BAN,EAAoBxvD,EAAI,SAASyB,GAChC,IAAI0uD,EAAS1uD,GAAUA,EAAOonC,WAC7B,WAAa,OAAOpnC,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA+tD,EAAoBhhF,EAAE2hF,EAAQ,CAAE5wG,EAAG4wG,IAC5BA,CACR,ECNAX,EAAoBhhF,EAAI,SAASkzB,EAAS5hC,GACzC,IAAI,IAAIxhB,KAAOwhB,EACX0vF,EAAoBzvD,EAAEjgC,EAAYxhB,KAASkxG,EAAoBzvD,EAAE2B,EAASpjD,IAC5EN,OAAOqJ,eAAeq6C,EAASpjD,EAAK,CAAEkC,YAAY,EAAMN,IAAK4f,EAAWxhB,IAG3E,ECPAkxG,EAAoBzvD,EAAI,SAAS34C,EAAKsF,GAAQ,OAAO1O,OAAOO,UAAUC,eAAejB,KAAK6J,EAAKsF,EAAO,ECCtG8iG,EAAoBjhE,EAAI,SAASmT,GACX,qBAAX1kD,QAA0BA,OAAOqQ,aAC1CrP,OAAOqJ,eAAeq6C,EAAS1kD,OAAOqQ,YAAa,CAAE1P,MAAO,WAE7DK,OAAOqJ,eAAeq6C,EAAS,aAAc,CAAE/jD,OAAO,GACvD,ECNA6xG,EAAoBnxE,EAAI,gBCKxB,IAAI+xE,EAAkB,CACrB,IAAK,GAaNZ,EAAoB1oB,EAAEhgB,EAAI,SAASupC,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4BjkG,GAC/D,IAKImjG,EAAUY,EALVR,EAAWvjG,EAAK,GAChBkkG,EAAclkG,EAAK,GACnBmkG,EAAUnkG,EAAK,GAGIxP,EAAI,EAC3B,GAAG+yG,EAASz5D,MAAK,SAAStjB,GAAM,OAA+B,IAAxBs9E,EAAgBt9E,EAAW,IAAI,CACrE,IAAI28E,KAAYe,EACZhB,EAAoBzvD,EAAEywD,EAAaf,KACrCD,EAAoBhoD,EAAEioD,GAAYe,EAAYf,IAGhD,GAAGgB,EAAS,IAAI5lG,EAAS4lG,EAAQjB,EAClC,CAEA,IADGe,GAA4BA,EAA2BjkG,GACrDxP,EAAI+yG,EAASjyG,OAAQd,IACzBuzG,EAAUR,EAAS/yG,GAChB0yG,EAAoBzvD,EAAEqwD,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOb,EAAoB1oB,EAAEj8E,EAC9B,EAEI6lG,EAAqBz7F,KAA8C,wCAAIA,KAA8C,yCAAK,GAC9Hy7F,EAAmBvuG,QAAQmuG,EAAqBpyG,KAAK,KAAM,IAC3DwyG,EAAmBhzG,KAAO4yG,EAAqBpyG,KAAK,KAAMwyG,EAAmBhzG,KAAKQ,KAAKwyG,OC/CvF,IAAIC,EAAsBnB,EAAoB1oB,OAAEhnF,EAAW,CAAC,IAAI,MAAM,WAAa,OAAO0vG,EAAoB,KAAO,IACrHmB,EAAsBnB,EAAoB1oB,EAAE6pB","sources":["../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@uiw/github-corners/src/index.ts","../node_modules/@uiw/react-github-corners/src/index.tsx","../node_modules/@uiw/react-shields/src/common/Container.tsx","../node_modules/@uiw/react-shields/src/common/Base.tsx","../node_modules/@uiw/react-shields/src/github/Issues.tsx","../node_modules/@uiw/react-shields/src/github/Size.tsx","../node_modules/@uiw/react-shields/src/github/Downloads.tsx","../node_modules/@uiw/react-shields/src/github/Activity.tsx","../node_modules/@uiw/react-shields/src/github/Version.tsx","../node_modules/@uiw/react-shields/src/github/License.tsx","../node_modules/@uiw/react-shields/src/github/Analysis.tsx","../node_modules/@uiw/react-shields/src/github/Social.tsx","../node_modules/@uiw/react-shields/src/github/Github.tsx","../node_modules/@uiw/react-shields/src/github/index.tsx","../node_modules/@uiw/react-shields/src/npm/Version.tsx","../node_modules/@uiw/react-shields/src/npm/Size.tsx","../node_modules/@uiw/react-shields/src/npm/Npm.tsx","../node_modules/@uiw/react-shields/src/npm/index.tsx","logo.svg","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/bail/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/unist-builder/index.js","../node_modules/unist-util-is/index.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/unist-util-position/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-to-hast/lib/traverse.js","../node_modules/micromark-util-encode/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/unist-util-generated/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/hast-util-whitespace/index.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/index.js","../node_modules/mdast-util-to-markdown/lib/util/association.js","../node_modules/mdast-util-to-markdown/lib/util/track.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/util/safe.js","../node_modules/mdast-util-gfm-footnote/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-gfm-strikethrough/index.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-gfm-task-list-item/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/hast-util-has-property/index.js","../node_modules/hast-util-heading-rank/index.js","../node_modules/hast-util-to-string/index.js","../node_modules/rehype-slug/index.js","../node_modules/hast-util-is-element/index.js","../node_modules/rehype-autolink-headings/lib/index.js","../node_modules/hastscript/lib/svg.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/vfile-location/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/zwitch/index.js","../node_modules/hast-util-to-parse5/lib/index.js","../node_modules/html-void-elements/index.js","../node_modules/hast-util-raw/lib/index.js","../node_modules/rehype-raw/index.js","../node_modules/rehype-attr/src/utils.ts","../node_modules/rehype-attr/src/index.ts","../node_modules/rehype-ignore/src/index.ts","../node_modules/unist-util-filter/index.js","../../src/generator.js","../../src/all.js","../../src/common.js","../node_modules/direction/index.js","../node_modules/hast-util-select/lib/util.js","../node_modules/hast-util-select/lib/enter-state.js","../node_modules/hast-util-select/lib/nest.js","../node_modules/bcp-47-match/index.js","../node_modules/hast-util-select/lib/pseudo.js","../node_modules/hast-util-select/lib/attribute.js","../node_modules/hast-util-select/lib/test.js","../node_modules/hast-util-select/lib/name.js","../node_modules/hast-util-select/lib/class-name.js","../node_modules/hast-util-select/lib/id.js","../node_modules/hast-util-select/lib/any.js","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts","../node_modules/hast-util-select/lib/parse.js","../node_modules/hast-util-select/index.js","../node_modules/rehype-rewrite/src/index.ts","../src/nodes/octiconLink.ts","../src/plugins/reservedMeta.ts","../src/index.tsx","../src/nodes/copy.ts","App.tsx","../README.md","index.tsx","../../src/main.js","../node_modules/@wcj/dark-mode/dist/dark-mode.min.js","../node_modules/boolbase/index.js","../node_modules/css-selector-parser/lib/index.js","../node_modules/css-selector-parser/lib/parser-context.js","../node_modules/css-selector-parser/lib/render.js","../node_modules/css-selector-parser/lib/utils.js","../node_modules/extend/index.js","../node_modules/github-slugger/index.js","../node_modules/github-slugger/regex.js","../node_modules/inline-style-parser/index.js","../node_modules/is-buffer/index.js","../node_modules/mdurl/encode.js","../node_modules/parse-numeric-range/index.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/common/html.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/comma-separated-tokens/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hastscript/lib/core.js","../node_modules/hastscript/lib/html.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-reference-invalid/index.js","../node_modules/is-decimal/index.js","../node_modules/is-hexadecimal/index.js","../node_modules/is-alphanumerical/index.js","../node_modules/is-alphabetical/index.js","../node_modules/parse-entities/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/space-separated-tokens/index.js","../webpack/bootstrap","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","declare global {\n interface HTMLElementTagNameMap {\n 'github-corners': GithubCorners;\n }\n namespace JSX {\n interface IntrinsicElements {\n 'github-corners': Partial | {\n style?: Partial | React.CSSProperties;\n };\n }\n }\n}\n\nconst GITHUB_CORNERS_TEMPLATE = document.createElement(\"template\");\nGITHUB_CORNERS_TEMPLATE.innerHTML = `\n\n\n \n \n \n \n \n \n \n\n`;\n\nexport class GithubCorners extends HTMLElement {\n /** Sets the z-order of a positioned element and its descendants or flex items. */\n 'z-index'?: string;\n height?: string | number;\n width?: string | number;\n href?: string;\n color?: string;\n fill?: string;\n position?: string;\n target?: string;\n top?: string;\n left?: string;\n right?: string = '0';\n bottom?: string;\n transform?: string;\n private shadow: ShadowRoot\n static get observedAttributes(): string[] {\n return ['style', 'z-index', 'target', 'height', 'width', 'href', 'color', 'fill', 'position', 'top', 'left', 'right', 'bottom', 'transform'];\n }\n constructor() {\n super();\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.appendChild(this.ownerDocument.importNode(GITHUB_CORNERS_TEMPLATE.content, true));\n this.update()\n }\n private setAttr(name: string, value: string) {\n const svg = this.shadow.querySelector('svg');\n if (/(href)/.test(name.toLocaleLowerCase())) {\n svg.lastElementChild.setAttribute('xlink:href', value);\n } else if (/(color|fill)/.test(name.toLocaleLowerCase())) {\n (svg.firstElementChild as HTMLAnchorElement).style[name as any] = value;\n } else if (/(z-index|position|top|left|right|bottom|transform)/.test(name.toLocaleLowerCase())) {\n svg.style[name as any] = value;\n } else {\n svg.setAttribute(name, value);\n }\n }\n private update() {\n ;[...this.getAttributeNames(), 'right'].forEach((name) => {\n const value = this.getAttribute(name) || this[name as keyof GithubCorners] as any || '';\n this.setAttr(name, value);\n });\n }\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue !== newValue) {\n this.setAttr(name, newValue);\n }\n }\n}\n\ncustomElements.define('github-corners', GithubCorners);","import React from 'react';\nimport '@uiw/github-corners';\n\nexport interface GitHubCornersProps extends React.AnchorHTMLAttributes {\n /**\n * The link to your project page.\n */\n href?: string;\n /**\n * The width and height of the corner. \n * Default: `80`\n */\n size?: number;\n /**\n * The background color of the corner.\n * Default: `#151513`\n */\n bgColor?: string;\n /**\n * The Github logo color of the corner.\n * Default: `#fff`\n */\n color?: string;\n /**\n * The position of corner. \n * Default: `right`\n */\n position?: 'left' | 'right';\n /** Is it displayed at the bottom? */\n bottom?: boolean,\n /** \n * It is positioned relative to the initial containing block established.\n * Default: `false`\n */\n fixed?: boolean;\n /**\n * Sets the z-order of a positioned element and its descendants or flex items.\n */\n zIndex?: number;\n}\n\nexport default function githubCorners(props: GitHubCornersProps) {\n const { size = 80, fixed = false, bottom, zIndex, className, style, bgColor = '#151513', color = '#fff', position = 'right', ...otherProps } = props;\n const styl: React.CSSProperties = position === 'left' ? { left: 0, right: 'initial', transform: 'scale(-1, 1)' } : { right: 0, left: 'initial', transform: 'scale(1, 1)' };\n if (bottom) {\n styl.bottom = 0;\n styl.top = 'initial';\n styl.transform = position === 'left' ? 'scale(-1, -1)' : 'scale(1, -1)';\n } else {\n styl.bottom = 'initial';\n styl.top = 0;\n }\n return (\n \n );\n}","import React, { Component, ReactElement } from 'react';\nimport { BaseProps } from '../common/Base';\n\nexport interface ContainerProps extends BaseProps {}\n\nexport default class Container extends Component {\n render() {\n return (\n <>\n {React.Children.toArray(this.props.children).map((child: React.ReactNode) => {\n if (!React.isValidElement(child)) return null;\n return React.cloneElement(child as ReactElement, { ...this.props, ...(child as React.ReactElement).props });\n })}\n \n );\n }\n}","import React, { Component } from 'react';\n\nexport interface BaseProps {\n platform?: 'github' | 'coveralls' | 'npm';\n type?: string;\n user?: string;\n repo?: string;\n base?: string;\n href?: HTMLAnchorElement['href'];\n children?: React.ReactNode;\n}\n\nexport interface BaseState extends BaseProps {}\n\nexport default class Base extends Component {\n static defaultProps: BaseProps = {\n platform: 'github',\n base: 'https://img.shields.io',\n }\n constructor(props: BaseProps & T, defaultState: BaseProps & T, forceState?: BaseProps & T) {\n super(props);\n this.state = Object.assign({}, { ...defaultState, ...props }, forceState);\n }\n getUrl = () => '';\n render() {\n const { href } = this.state;\n if (href) {\n return \"\" ;\n }\n return \"\";\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface IssueProps extends BaseProps {\n /**\n * Github Issue\n * \n * `/github/:issueKind/detail/:property/:user/:repo/:number` \n * GitHub issue/pull request detail: GitHub issue/pull request detail badge \n * \n * `/github/issues/:user/:repo` \n * GitHub issues: GitHub issues badge \n * \n * `/github/issues-raw/:user/:repo` \n * GitHub issues: GitHub issues badge \n * \n * `/github/issues/:user/:repo/:label` \n * GitHub issues by-label: GitHub issues by-label badge \n * \n * `/github/issues-raw/:user/:repo/:label` \n * GitHub issues by-label: GitHub issues by-label badge \n * \n * `/github/issues-closed/:user/:repo` \n * GitHub closed issues: GitHub closed issues badge \n * \n * `/github/issues-closed-raw/:user/:repo` \n * GitHub closed issues: GitHub closed issues badge \n * \n * `/github/issues-pr/:user/:repo` \n * GitHub pull requests: GitHub pull requests badge \n * \n * `/github/issues-pr-raw/:user/:repo` \n * GitHub pull requests: GitHub pull requests badge \n * \n * `/github/issues-pr-closed/:user/:repo` \n * GitHub closed pull requests: GitHub closed pull requests badge \n * \n * `/github/issues-pr-closed-raw/:user/:repo` \n * GitHub closed pull requests: GitHub closed pull requests badge \n * \n * `/github/issues-pr/:user/:repo/:label` \n * GitHub pull requests by-label: GitHub pull requests by-label badge \n * \n * `/github/issues-pr-raw/:user/:repo/:label` \n * GitHub pull requests by-label: GitHub pull requests by-label badge \n * \n * `/github/labels/:user/:repo/:name` \n * GitHub labels: GitHub labels badge \n */\n type?: 'issueKind' | 'issues' | 'issues-raw' | 'issues-closed'\n | 'issues-closed-raw' | 'issues-pr' | 'issues-pr-raw' \n | 'issues-pr-closed' | 'issues-pr-closed-raw'\n | 'languages';\n /**\n * /github/:issueKind/detail/:property/:user/:repo/:number\n */\n property?: string;\n /**\n * /github/:issueKind/detail/:property/:user/:repo/:number\n */\n number?: string;\n label?: string;\n}\n\nexport default class Issue extends Base {\n constructor(props: IssueProps) {\n super(props, { platform: 'github', type: 'issues' });\n };\n getUrl = () => {\n const { type, platform, property, user, repo, label, base } = this.state;\n if (platform !== 'github') return '';\n if (type === 'issues' || /^issues-(raw|closed|closed-raw|pr|pr-raw|pr-closed|pr-closed-raw)/.test(type!)) {\n if(label && (type === 'issues' || /^issues-(raw|pr|pr-raw)/.test(type || ''))) {\n return [base, platform, type, user, repo, label].join('/');\n }\n return [base, platform, type, user, repo].join('/');\n }\n if(type === 'issueKind') {\n return [base, platform, type, 'detail', property, user, repo].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps } from '../common/Base';\n\nexport interface SizeProps extends BaseProps {\n /**\n * Github Size\n * \n * /github/languages/code-size/:user/:repo \n * /github/repo-size/:user/:repo \n * /github/size/:user/:repo/:path* \n */\n type?: 'languages' | 'repo-size' | 'size';\n /**\n * GitHub file size in bytes\n * build/phaser-craft.min.js\n */\n path?: string;\n}\n\nexport default class Size extends Base {\n constructor(props: SizeProps) {\n super(props, { platform: 'github', type: 'languages' });\n };\n\n getUrl = () => {\n const { type, platform, user, repo, base, path } = this.state;\n if (platform !== 'github') return '';\n /**\n * /github/languages/code-size/:user/:repo\n */\n if (type === 'languages') {\n return [base, platform, type, 'code-size', user, repo].join('/');\n }\n /**\n * /github/repo-size/:user/:repo\n */\n if (type === 'repo-size') {\n return [base, platform, type, user, repo].join('/');\n }\n /**\n * /github/size/:user/:repo/:path*\n */\n if (type === 'size' && path) {\n return [base, platform, type, user, repo, path].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface ActivityProps extends BaseProps {\n /**\n * Github Downloads\n * \n * `/github/downloads/:user/:repo/total`\n * GitHub All Releases: GitHub All Releases badge \n * \n * `/github/downloads/:user/:repo/:tag/total`\n * GitHub Releases: GitHub Releases badge \n * \n * `/github/downloads-pre/:user/:repo/:tag/total`\n * GitHub Pre-Releases: GitHub Pre-Releases badge \n * \n * `/github/downloads/:user/:repo/:tag/total`\n * GitHub Releases (by Release): GitHub Releases (by Release) badge \n * \n * `/github/downloads/:user/:repo/:tag/:path`\n * GitHub Releases (by Asset): GitHub Releases (by Asset) badge \n * \n * `/github/downloads-pre/:user/:repo/:tag/:path`\n * GitHub Pre-Releases (by Asset): GitHub Pre-Releases (by Asset) badge \n */\n type?: 'downloads' | 'downloads-pre';\n tag?: string;\n path?: string;\n total?: boolean;\n}\n\nexport default class Activity extends Base {\n constructor(props: ActivityProps) {\n super(props, { platform: 'github', type: 'downloads', total: true });\n };\n getUrl = () => {\n const { type, platform, user, repo, base, tag, path, total } = this.state;\n if (platform !== 'github' || !/^(downloads|downloads-pre)/.test(type || '')) return '';\n\n const baseData = [base, platform, type, user, repo];\n\n if (path && tag) {\n return [...baseData, tag, path].join('/');\n }\n if ((total && tag) || (type === 'downloads-pre' && tag && total)) {\n return [...baseData, tag, 'total'].join('/');\n }\n if (total) {\n return [...baseData, 'total'].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface ActivityProps extends BaseProps {\n /**\n * `/github/commit-activity/:interval/:user/:repo`\n * GitHub commit activity: GitHub commit activity badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since tagged version: GitHub commits since tagged version badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since tagged version (branch): GitHub commits since tagged version (branch) badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since latest release: GitHub commits since latest release badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since latest release (branch): GitHub commits since latest release (branch) badge \n * \n * `/github/:variant/:user/:repo`\n * GitHub contributors: GitHub contributors badge \n * \n * `/github/last-commit/:user/:repo`\n * GitHub last commit: GitHub last commit badge \n * \n * `/github/last-commit/:user/:repo/:branch`\n * GitHub last commit (branch): GitHub last commit (branch) badge \n * \n * `/github/release-date/:user/:repo`\n * GitHub Release Date: GitHub Release Date badge \n * \n * `/github/release-date-pre/:user/:repo`\n * GitHub (Pre-)Release Date: GitHub (Pre-)Release Date badge \n */\n type?: 'commit-activity' | 'commits-since' | 'variant' | 'last-commit' | 'release-date' | 'release-date-pre';\n variant?: string;\n interval?: 'y' | 'm' | 'w';\n version?: 'contributors' | 'contributors-anon';\n branch?: string;\n}\n\nexport default class Activity extends Base {\n constructor(props: ActivityProps) {\n super(props, { platform: 'github', type: 'commits-since' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base, interval, variant, version, branch } = this.state;\n if (platform !== 'github') return '';\n if (type === 'commits-since' && version && branch) {\n return [base, platform, type, user, repo, version, branch].join('/');\n }\n if (type === 'commit-activity' && interval) {\n return [base, platform, type, interval, user, repo].join('/');\n }\n if (type === 'variant' && variant) {\n return [base, platform, type, variant, user, repo].join('/');\n }\n if (type === 'last-commit') {\n return branch ? [base, platform, type, user, repo, branch].join('/') : [base, platform, type, user, repo].join('/');\n }\n if (type && /^release-(date|date-pre)/.test(type)) {\n return [base, platform, type, user, repo].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps } from '../common/Base';\n\nexport interface VersionProps extends BaseProps {\n /**\n * Github Version\n * \n * `/github/go-mod/go-version/:user/:repo`\n * GitHub go.mod Go version: GitHub go.mod Go version badge \n * \n * `/github/go-mod/go-version/:user/:repo/:branch`\n * GitHub go.mod Go version (branch): GitHub go.mod Go version (branch) badge \n * \n * `/github/go-mod/go-version/:user/:repo?filename=src%2Fgo.mod`\n * GitHub go.mod Go version (subfolder of monorepo): GitHub go.mod Go version (subfolder of monorepo) badge \n * \n * `/github/go-mod/go-version/:user/:repo/:branch?filename=src%2Fgo.mod`\n * GitHub go.mod Go version (branch & subfolder of monorepo): GitHub go.mod Go version (branch & subfolder of monorepo) badge \n * \n * `/github/manifest-json/v/:user/:repo`\n * GitHub manifest version: GitHub manifest version badge \n * \n * `/github/manifest-json/v/:user/:repo/:branch`\n * GitHub manifest version: GitHub manifest version badge \n * \n * `/github/package-json/v/:user/:repo`\n * GitHub package.json version: GitHub package.json version badge \n * \n * `/github/package-json/v/:user/:repo/:branch`\n * GitHub package.json version (branch): GitHub package.json version (branch) badge \n * \n * `/github/v/release/:user/:repo`\n * GitHub release (latest by date): GitHub release (latest by date) badge \n * \n * `/github/v/release/:user/:repo?include_prereleases`\n * GitHub release (latest by date including pre-releases): GitHub release (latest by date including pre-releases) badge \n * \n * `/github/v/release/:user/:repo?sort=semver`\n * GitHub release (latest SemVer): GitHub release (latest SemVer) badge \n * \n * `/github/v/release/:user/:repo?include_prereleases&sort=semver`\n * GitHub release (latest SemVer including pre-releases): GitHub release (latest SemVer including pre-releases) badge \n * \n * `/github/v/tag/:user/:repo`\n * GitHub tag (latest by date): GitHub tag (latest by date) badge \n * \n * `/github/v/tag/:user/:repo?sort=semver`\n * GitHub tag (latest SemVer): GitHub tag (latest SemVer) badge \n * \n * `/github/v/tag/:user/:repo?include_prereleases&sort=semver`\n * GitHub tag (latest SemVer pre-release): GitHub tag (latest SemVer pre-release) badge \n */\n type?: 'version-release' | 'version-tag' | 'package-json' | 'manifest-json' | 'go-mod';\n branch?: string;\n}\n\nexport default class Version extends Base {\n constructor(props: VersionProps) {\n super(props, { platform: 'github', type: 'version-release' });\n };\n\n getUrl = () => {\n const { type, platform, user, repo, base, branch } = this.state;\n let typePath = '';\n switch (type) {\n case 'version-release': typePath = 'v/release';break;\n case 'version-tag': typePath = 'v/tag';break;\n case 'package-json': typePath = 'package-json/v';break;\n case 'manifest-json': typePath = 'manifest-json/v';break;\n case 'go-mod': typePath = 'go-mod/go-version';break;\n default:break;\n }\n if (platform !== 'github' || !typePath) return '';\n const baseData = [base, platform, typePath, user, repo];\n if (/(go-mod|manifest-json|package-json)/.test(type || '') && branch) {\n return [...baseData, branch].join('/');\n }\n return baseData.join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface LicenseProps extends BaseProps {\n /**\n * Github License\n * \n * `/github/license/:user/:repo` \n * GitHub: GitHub badge \n */\n type?: 'license';\n}\n\nexport default class License extends Base {\n constructor(props: LicenseProps) {\n super(props, { platform: 'github', type: 'license' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base } = this.state;\n if (platform !== 'github') return '';\n return [base, platform, type, user, repo].join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface AnalysisProps extends BaseProps {\n /**\n * Github Analysis\n * \n * `/github/languages/count/:user/:repo` \n * GitHub language count: GitHub language count badge \n * \n * `/github/search/:user/:repo/:query` \n * GitHub search hit counter: GitHub search hit counter badge \n * \n * `/github/languages/top/:user/:repo` \n * GitHub top language: GitHub top language badge \n */\n type?: 'languages-count' | 'languages-top' | 'search';\n query?: string;\n}\n\nexport default class Analysis extends Base {\n constructor(props: AnalysisProps) {\n super(props, { platform: 'github', type: 'languages-count' });\n };\n getUrl = () => {\n const { base, platform, type, user, repo, query } = this.state;\n let typePath = '';\n switch (type) {\n case 'languages-count': typePath = 'languages/count';break;\n case 'languages-top': typePath = 'languages/top';break;\n case 'search': typePath = 'search';break;\n default:break;\n }\n if (platform !== 'github' || !typePath) return '';\n const baseData = [base, platform, typePath, user, repo];\n if (query) {\n return [...baseData, query].join('/');\n }\n return baseData.join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface SocialProps extends BaseProps {\n /**\n * Github License\n * \n * `/github/followers/:user?label=Follow`\n * GitHub followers: GitHub followers badge \n * \n * `/github/forks/:user/:repo?label=Fork`\n * GitHub forks: GitHub forks badge \n * \n * `/github/stars/:user/:repo?style=social`\n * GitHub stars: GitHub stars badge \n * \n * `/github/watchers/:user/:repo?label=Watch`\n * GitHub watchers: GitHub watchers badge \n */\n type?: 'followers' | 'forks' | 'stars' | 'watchers';\n}\n\nexport default class Social extends Base {\n constructor(props: SocialProps) {\n super(props, { platform: 'github', type: 'followers' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base } = this.state;\n if (platform !== 'github') return '';\n if(type === 'followers') return [base, platform, type, user].join('/');\n return [base, platform, type, user, repo].join('/');\n }\n}","import Container from '../common/Container';\nimport Issues from './Issues';\nimport Size from './Size';\nimport Downloads from './Downloads';\nimport Activity from './Activity';\nimport Version from './Version';\nimport License from './License';\nimport Analysis from './Analysis';\nimport Social from './Social';\n\nexport default class Github extends Container {\n static Issues = Issues;\n static Size = Size;\n static Activity = Activity;\n static Downloads = Downloads;\n static Version = Version;\n static License = License;\n static Analysis = Analysis;\n static Social = Social;\n}","import Github from './Github';\n\nexport default Github;","import Base, { BaseProps} from '../common/Base';\n\n/**\n * NPM Version\n * \n * `/npm/v/:packageName` \n * npm: npm badge \n * \n * `/npm/v/:scope/:packageName` \n * npm (scoped): npm (scoped) badge \n * \n * `/npm/v/:packageName/:tag` \n * npm (tag): npm (tag) badge \n * \n * `/npm/v/:packageName/:tag?registry_uri=https%3A%2F%2Fregistry.npmjs.com` \n * npm (custom registry): npm (custom registry) badge \n * \n * `/npm/v/:scope/:packageName/:tag` \n * npm (scoped with tag): npm (scoped with tag) badge \n * \n * `/npm/dependency-version/:packageName/peer/:dependency`\n * npm peer dependency version: npm peer dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/dev/:dependencyScope?/:dependency`\n * npm peer dependency version (scoped): npm peer dependency version (scoped) badge \n * \n * `/npm/dependency-version/:packageName/dev/:dependency`\n * npm dev dependency version: npm dev dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/dev/:dependencyScope?/:dependency`\n * npm dev dependency version (scoped): npm dev dependency version (scoped) badge \n * \n * `/npm/dependency-version/:packageName/:dependency`\n * npm (prod) dependency version: npm (prod) dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/:dependencyScope?/:dependency`\n * npm (prod) dependency version (scoped): npm (prod) dependency version (scoped) badge \n * \n * `/npm/types/:packageName`\n * npm type definitions: npm type definitions badge \n */\nexport interface VersionProps extends BaseProps {\n type?: 'version' | 'peer-dependency' | 'dev-dependency';\n registryUri?: string;\n packageName?: string;\n dependency?: string;\n scope?: string;\n dependencyScope?: string;\n version?: string;\n}\n\nexport default class Version extends Base {\n constructor(props: VersionProps) {\n super(props, { type: 'version' }, { platform: 'npm' });\n };\n getUrl = () => {\n const { base, platform, type, scope, packageName, dependency, dependencyScope, version, registryUri } = this.state;\n if (platform !== 'npm' || !packageName) return '';\n\n let url = '';\n const baseData = [base, platform];\n\n if (type === 'version' && packageName) {\n baseData.push('v');\n if (scope) {\n baseData.push(scope);\n }\n baseData.push(packageName);\n if (version) {\n baseData.push(version);\n }\n url = baseData.join('/');\n if (registryUri) {\n url = `${url}?registry_uri=${registryUri}`;\n }\n } else if (type === 'peer-dependency' && packageName && dependency) {\n baseData.push('dependency-version');\n if (scope) {\n baseData.push(scope);\n }\n url = [...baseData, packageName, 'peer', dependency].join('/');\n } else if (type === 'dev-dependency' && packageName && dependency) {\n baseData.push('dependency-version');\n if (scope) {\n baseData.push(scope);\n }\n baseData.concat([packageName, 'dev']);\n if (dependencyScope) {\n baseData.push(dependencyScope);\n }\n baseData.push(dependency);\n url = baseData.join('/');\n } else if (packageName && dependency) {\n baseData.concat([packageName, dependency]);\n url = baseData.join('/');\n }\n\n return url;\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface SizeProps extends BaseProps {\n format?: 'min' | 'minzip';\n packageName?: string;\n scope?: string;\n version?: string;\n}\n\n/**\n * Npm Size\n * \n * `/bundlephobia/:format/:packageName`\n * npm bundle size: npm bundle size badge \n * \n * `/bundlephobia/:format/:scope/:packageName`\n * npm bundle size (scoped): npm bundle size (scoped) badge \n * \n * `/bundlephobia/:format/:packageName/:version`\n * npm bundle size (version): npm bundle size (version) badge \n * \n * `/bundlephobia/:format/:scope/:packageName/:version`\n * npm bundle size (scoped version): npm bundle size (scoped version) badge \n * \n */\nexport default class Size extends Base {\n constructor(props: SizeProps) {\n super(props, { format: 'min' }, { platform: 'npm' });\n };\n getUrl = () => {\n const { base, platform, format, packageName, scope, version } = this.state;\n if (platform !== 'npm') return '';\n\n const baseData = [base, 'bundlephobia'];\n let url = '';\n\n if (packageName && format) {\n url = [...baseData, format, packageName].join('/');\n }\n if (packageName && format && scope) {\n url = [...baseData, format, scope, packageName].join('/');\n }\n if (packageName && format && scope && version) {\n url = [...baseData, format, scope, packageName, version].join('/');\n }\n if (packageName && format && version) {\n url = [...baseData, format, packageName, version].join('/');\n }\n\n return url;\n }\n}","import Container from '../common/Container';\nimport Version from './Version';\nimport Size from './Size';\n\nexport default class Npm extends Container {\n static Version = Version;\n static Size = Size;\n}","import Npm from './Npm';\n\nexport default Npm;","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 841.9 595.3\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#61DAFB\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 420.9,\n cy: 296.5,\n r: 45.7\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M520.5 78.1z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.3931a054f5ef8356122965d973d55570.svg\";\nexport { ForwardRef as ReactComponent };","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n /**\n * Constructor of a message for `reason` at `place` from `origin`.\n * When an error is passed in as `reason`, copies the `stack`.\n *\n * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n * @param {string} [origin] Place in code the message originates from (`string`, optional).\n */\n constructor(reason, place, origin) {\n /** @type {[string|null, string|null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n position.start = place\n }\n }\n\n // Fields from `Error`\n this.name = stringifyPosition(place) || '1:1'\n this.message = typeof reason === 'object' ? reason.message : reason\n this.stack = typeof reason === 'object' ? reason.stack : ''\n\n /**\n * Reason for message.\n * @type {string}\n */\n this.reason = this.message\n /**\n * If true, marks associated file as no longer processable.\n * @type {boolean?}\n */\n // eslint-disable-next-line no-unused-expressions\n this.fatal\n /**\n * Starting line of error.\n * @type {number?}\n */\n this.line = position.start.line\n /**\n * Starting column of error.\n * @type {number?}\n */\n this.column = position.start.column\n /**\n * Namespace of warning.\n * @type {string?}\n */\n this.source = parts[0]\n /**\n * Category of message.\n * @type {string?}\n */\n this.ruleId = parts[1]\n /**\n * Full range information, when available.\n * Has start and end properties, both set to an object with line and column, set to number?.\n * @type {Position?}\n */\n this.position = position\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /* eslint-disable no-unused-expressions */\n /**\n * You can use this to specify the source value that’s being reported, which\n * is deemed incorrect.\n * @type {string?}\n */\n this.actual\n /**\n * You can use this to suggest values that should be used instead of\n * `actual`, one or more values that are deemed as acceptable.\n * @type {Array?}\n */\n this.expected\n /**\n * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n * @type {string?}\n */\n this.file\n /**\n * You may add a url property with a link to documentation for the message.\n * @type {string?}\n */\n this.url\n /**\n * You may add a note property with a long form description of the message (supported by vfile-reporter).\n * @type {string?}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * @param {Array} segments\n * @returns {string}\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string|undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * @param {boolean} allowAboveRoot\n * @returns {string}\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number|undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * @param {string} path\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: \nexport function isUrl(fileURLOrPath) {\n return (\n fileURLOrPath !== null &&\n typeof fileURLOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileURLOrPath.href &&\n // @ts-expect-error: indexable.\n fileURLOrPath.origin\n )\n}\n","/// \n\nimport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {string|URL} path\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n * This is a copy of the typing from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Value|Options|VFile|URL} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n * Raw source map, see:\n * .\n * @property {number} version\n * @property {Array} sources\n * @property {Array} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration: a bunch of keys that will be shallow copied over to the new\n * file.\n *\n * @typedef {Record} ReporterSettings\n * @typedef {(files: Array, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n * If `options` is a `URL`, it’s treated as `{path: options}`.\n * If `options` is a `VFile`, shallow copies its data over to the new file.\n * All fields in `options` are set on the newly created `VFile`.\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * It’s not possible to set either `dirname` or `extname` without setting\n * either `history`, `path`, `basename`, or `stem` as well.\n *\n * @param {Compatible} [value]\n */\n constructor(value) {\n /** @type {Options} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n // @ts-expect-error Looks like a buffer.\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n // @ts-expect-error Looks like file or options.\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n * @type {Array}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n * The first is the original path and the last is the current path.\n * @type {Array}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n * This is used by vfile reporters.\n * @type {boolean}\n */\n this.stored\n\n /**\n * Sometimes files have a non-string, compiled, representation.\n * This can be stored in the `result` field.\n * One example is when turning markdown into React nodes.\n * This is used by unified to store non-string results.\n * @type {unknown}\n */\n this.result\n\n /**\n * Sometimes files have a source map associated with them.\n * This can be stored in the `map` field.\n * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n * type from the `source-map` module.\n * @type {Map|undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined) {\n // @ts-expect-error: TS is confused by the different types for `history`.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) this[prop] = options[prop]\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n * @param {string|URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding} [encoding='utf8']\n * When `value` is a `Buffer`, `encoding` is a character encoding to\n * understand it as (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding)\n }\n\n /**\n * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n * associates it with the file by adding it to `vfile.messages` and setting\n * `message.file` to the current filepath.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates an informational message where\n * `fatal` is set to `null`.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates a fatal message where `fatal` is\n * set to `true`, and then immediately throws it.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {never}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n var {includeImageAlt = true} = options || {}\n return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n return (\n (node &&\n typeof node === 'object' &&\n // @ts-ignore looks like a literal.\n (node.value ||\n // @ts-ignore looks like an image.\n (includeImageAlt ? node.alt : '') ||\n // @ts-ignore looks like a parent.\n ('children' in node && all(node.children, includeImageAlt)) ||\n (Array.isArray(node) && all(node, includeImageAlt)))) ||\n ''\n )\n}\n\n/**\n * @param {Array.} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n /** @type {Array.} */\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt)\n }\n\n return result.join('')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let code\n\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {unknown[]} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {StackItem[]} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n (!childFlow.events[index][1].end || // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Resolver[]} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Construct[]} */\n\n const resolveAllConstructs = []\n /** @type {Chunk[]} */\n\n let chunks = []\n /** @type {Token[]} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Construct[]|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Construct[]} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Construct[]} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Chunk[]} chunks\n * @param {Pick} token\n * @returns {Chunk[]}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Chunk[]} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Chunk[]} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {string[]} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * .\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Chunk[]}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Chunk[]} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record} Handles\n * Token types mapping to handles\n * @typedef {Record|Array> & {canContainEols: Array, transforms: Array, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial} Extension\n * An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n * mdast compiler context\n * @property {Array} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n * Set data into the key-value store.\n * @property {(key: K) => CompileData[K]} getData\n * Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {NormalizedExtension} config\n * Configuration.\n *\n * @typedef {{mdastExtensions?: Array>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n/**\n * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options) => Root) &\n * ((value: Value, options?: Options) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {Options} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n /** @type {NormalizedExtension} */\n // @ts-expect-error: our base has all required fields, so the result will too.\n const config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n },\n options.mdastExtensions || []\n )\n /** @type {CompileData} */\n\n const data = {}\n return compile\n /**\n * @param {Array} events\n * @returns {Root}\n */\n\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {CompileContext['stack']} */\n\n const stack = [tree]\n /** @type {CompileContext['tokenStack']} */\n\n const tokenStack = []\n /** @type {Array} */\n\n const listStack = []\n /** @type {Omit} */\n\n const context = {\n stack,\n tokenStack,\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n let index = -1\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length > 0) {\n const tail = tokenStack[tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n } // Figure out `root` position.\n\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n index = -1\n\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token|undefined} */\n\n let listItem\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number|undefined} */\n\n let firstBlankLineIndex\n /** @type {boolean|undefined} */\n\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n } // Fix position.\n\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n } // Create a new list item.\n\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n } // @ts-expect-error Patched.\n\n events[start][1]._spread = listSpread\n return length\n }\n /**\n * @type {CompileContext['setData']}\n * @param [value]\n */\n\n function setData(key, value) {\n data[key] = value\n }\n /**\n * @type {CompileContext['getData']}\n * @template {string} K\n * @param {K} key\n * @returns {CompileData[K]}\n */\n\n function getData(key) {\n return data[key]\n }\n /**\n * @param {Point} d\n * @returns {Point}\n */\n\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n }\n /**\n * @param {(token: Token) => Node} create\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function opener(create, and) {\n return open\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n /** @type {CompileContext['buffer']} */\n\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n /**\n * @type {CompileContext['enter']}\n * @template {Node} N\n * @this {CompileContext}\n * @param {N} node\n * @param {Token} token\n * @param {OnEnterError} [errorHandler]\n * @returns {N}\n */\n\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n node.position = {\n start: point(token.start)\n }\n return node\n }\n /**\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function closer(and) {\n return close\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n /**\n * @type {CompileContext['exit']}\n * @this {CompileContext}\n * @param {Token} token\n * @param {OnExitError} [onExitError]\n * @returns {Node}\n */\n\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n\n node.position.end = point(token.end)\n return node\n }\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n\n function resume() {\n return toString(this.stack.pop())\n } //\n // Handlers.\n //\n\n /** @type {Handle} */\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n /** @type {Handle} */\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor =\n /** @type {List} */\n this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n /** @type {Handle} */\n\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.lang = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.meta = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n /** @type {Handle} */\n\n function onexitcodefenced() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n /** @type {Handle} */\n\n function onexitcodeindented() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n /** @type {Handle} */\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n const label = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitatxheadingsequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n /** @type {Handle} */\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n /** @type {Handle} */\n\n function onexitsetextheadinglinesequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n /** @type {Handle} */\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n /** @type {Handle} */\n\n function onenterdata(token) {\n const parent =\n /** @type {Parent} */\n this.stack[this.stack.length - 1]\n /** @type {Node} */\n\n let tail = parent.children[parent.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text() // @ts-expect-error: we’ll add `end` later.\n\n tail.position = {\n start: point(token.start)\n } // @ts-expect-error: Assume `parent` accepts `text`.\n\n parent.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n /** @type {Handle} */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n /** @type {Handle} */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n /** @type {Handle} */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexithtmltext() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitcodetext() {\n const data = this.resume()\n const node =\n /** @type {InlineCode} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitlink() {\n const context =\n /** @type {Link & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitimage() {\n const context =\n /** @type {Image & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitlabeltext(token) {\n const ancestor =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 2]\n const string = this.sliceSerialize(token)\n ancestor.label = decodeString(string)\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitlabel() {\n const fragment =\n /** @type {Fragment} */\n this.stack[this.stack.length - 1]\n const value = this.resume()\n const node =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // Assume a reference.\n\n setData('inReference', true)\n\n if (node.type === 'link') {\n // @ts-expect-error: Assume static phrasing content.\n node.children = fragment.children\n } else {\n node.alt = value\n }\n }\n /** @type {Handle} */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitresource() {\n setData('inReference')\n }\n /** @type {Handle} */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n /** @type {Handle} */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node =\n /** @type {LinkReference|ImageReference} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n\n let value\n\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n // @ts-expect-error `decodeNamedCharacterReference` can return false for\n // invalid named character references, but everything we’ve tokenized is\n // valid.\n value = decodeNamedCharacterReference(data)\n }\n\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n /** @type {Handle} */\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n } //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n /** @returns {Code} */\n\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n /** @returns {InlineCode} */\n\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n /** @returns {Definition} */\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n /** @returns {Emphasis} */\n\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n /** @returns {Heading} */\n\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n /** @returns {Break} */\n\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n /** @returns {HTML} */\n\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n /** @returns {Image} */\n\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n /** @returns {Link} */\n\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {List}\n */\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n /** @returns {Paragraph} */\n\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n /** @returns {Strong} */\n\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n /** @returns {Text} */\n\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n /** @returns {ThematicBreak} */\n\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n/**\n * @param {Extension} combined\n * @param {Array>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n\n return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n /** @type {string} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n const list = key === 'canContainEols' || key === 'transforms'\n const maybe = own.call(combined, key) ? combined[key] : undefined\n /* c8 ignore next */\n\n const left = maybe || (combined[key] = list ? [] : {})\n const right = extension[key]\n\n if (right) {\n if (list) {\n // @ts-expect-error: `left` is an array.\n combined[key] = [...left, ...right]\n } else {\n Object.assign(left, right)\n }\n }\n }\n }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Event[]} events\n * @returns {Event[]}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist').Literal} Literal\n * @typedef {Object.} Props\n * @typedef {Array.|string} ChildrenOrValue\n *\n * @typedef {(, C extends Node[]>(type: T, props: P, children: C) => {type: T, children: C} & P)} BuildParentWithProps\n * @typedef {(>(type: T, props: P, value: string) => {type: T, value: string} & P)} BuildLiteralWithProps\n * @typedef {(>(type: T, props: P) => {type: T} & P)} BuildVoidWithProps\n * @typedef {((type: T, children: C) => {type: T, children: C})} BuildParent\n * @typedef {((type: T, value: string) => {type: T, value: string})} BuildLiteral\n * @typedef {((type: T) => {type: T})} BuildVoid\n */\n\nexport var u = /**\n * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}\n */ (\n /**\n * @param {string} type Type of node\n * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)\n * @param {ChildrenOrValue} [value] `children` or `value` of node\n * @returns {Node}\n */\n function (type, props, value) {\n /** @type {Node} */\n var node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== undefined && value !== null) {\n node.value = String(value)\n }\n\n return node\n }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * ((node: unknown, test: T['type']|Partial|TestFunctionPredicate|Array.|TestFunctionPredicate>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n * ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @param {number|null|undefined} [index] Position of `node` in `parent`\n * @param {Parent|null|undefined} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\nexport const convert =\n /**\n * @type {(\n * ((test: T['type']|Partial|TestFunctionPredicate) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n/**\n * @param {Array.} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {Array.} parameters\n * @returns {boolean}\n */\n function assertion(...parameters) {\n // @ts-expect-error: spreading is fine.\n return Boolean(check.call(this, ...parameters))\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types.js').Action} Action\n * @typedef {import('./complex-types.js').Index} Index\n * @typedef {import('./complex-types.js').ActionTuple} ActionTuple\n * @typedef {import('./complex-types.js').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param [reverse=false]\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void) &\n * ((tree: Tree, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor} visitor\n * @param {boolean} [reverse=false]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n /**\n * @param {Node} node\n * @param {number?} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = typeof node === 'object' && node !== null ? node : {}\n /** @type {string|undefined} */\n let name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' +\n color(value.type + (name ? '<' + name + '>' : '')) +\n ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void) &\n * ((tree: Tree, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {Record & {type: string, position?: PositionLike|undefined}} NodeLike\n * @typedef {import('unist').Point} Point\n *\n * @typedef {Partial} PointLike\n *\n * @typedef PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n */\n\nexport const pointStart = point('start')\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Position}\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start'|'end'} type\n */\nfunction point(type) {\n return point\n\n /**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n * @typedef {import('mdast').Definition} Definition\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `node`.\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} node\n */\nexport function definitions(node) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /**\n * Get a node from the bound definition cache.\n *\n * @param {string} identifier\n * @returns {Definition|null}\n */\n function definition(identifier) {\n const id = clean(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('./index.js').H} H\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Transform an unknown node.\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction unknown(h, node) {\n const data = node.data || {}\n\n if (\n 'value' in node &&\n !(\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n )\n ) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nexport function one(h, node, parent) {\n const type = node && node.type\n /** @type {Handler} */\n let fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.includes(type)) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction returnNode(h, node) {\n // @ts-expect-error: Pass through custom node.\n return 'children' in node ? {...node, children: all(h, node)} : node\n}\n\n/**\n * @param {H} h\n * @param {MdastNode} parent\n */\nexport function all(h, parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n\n while (++index < nodes.length) {\n const result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n","const characterReferences = {'\"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}\n\n/**\n * Encode only the dangerous HTML characters.\n *\n * This ensures that certain characters which have special meaning in HTML are\n * dealt with.\n * Technically, we can skip `>` and `\"` in many cases, but CM includes them.\n *\n * @param {string} value\n * @returns {string}\n */\nexport function encode(value) {\n return value.replace(/[\"&<>]/g, replace)\n\n /**\n * @param {string} value\n * @returns {string}\n */\n function replace(value) {\n // @ts-expect-error Hush, it’s fine.\n return '&' + characterReferences[value] + ';'\n }\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n\n if (!protocol) {\n return value\n }\n\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nfunction normalizeUri(value) {\n /** @type {string[]} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n\n let replace = '' // A correct percent encoded value.\n\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n } // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n } // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n } // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n } // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n\n if (skip) {\n index += skip\n skip = 0\n }\n }\n\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Wrap `nodes` with line feeds between each entry.\n * Optionally adds line feeds at the start and end.\n *\n * @param {Array} nodes\n * @param {boolean} [loose=false]\n * @returns {Array}\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < nodes.length) {\n if (index) result.push(u('text', '\\n'))\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {FootnoteReference} node\n */\nexport function footnoteReference(h, node) {\n const id = String(node.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n const index = h.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n h.footnoteOrder.push(id)\n h.footnoteCounts[id] = 1\n counter = h.footnoteOrder.length\n } else {\n h.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = h.footnoteCounts[id]\n\n return h(node, 'sup', [\n h(\n node.position,\n 'a',\n {\n href: '#' + h.clobberPrefix + 'fn-' + safeId,\n id:\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: 'footnote-label'\n },\n [u('text', String(counter))]\n )\n ])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @type {Handler}\n * @param {ImageReference|LinkReference} node\n * @returns {Content|Array}\n */\nexport function revert(h, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n const contents = all(h, node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {ListItem} node\n * @param {List} parent\n */\nexport function listItem(h, node, parent) {\n const result = all(h, node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const props = {}\n /** @type {Array} */\n const wrapped = []\n\n if (typeof node.checked === 'boolean') {\n /** @type {Element} */\n let paragraph\n\n if (\n result[0] &&\n result[0].type === 'element' &&\n result[0].tagName === 'p'\n ) {\n paragraph = result[0]\n } else {\n paragraph = h(null, 'p', [])\n result.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift(u('text', ' '))\n }\n\n paragraph.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n props.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < result.length) {\n const child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n wrapped.push(...child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n const tail = result[result.length - 1]\n\n // Add a final eol.\n if (tail && (loose || !('tagName' in tail) || tail.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\n/**\n * @param {List} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = node.spread\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n\n return Boolean(loose)\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Blockquote} node\n */\nexport function blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Break} node\n * @returns {Array}\n */\nexport function hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Code} node\n */\nexport function code(h, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n /** @type {Properties} */\n const props = {}\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n const code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Delete} node\n */\nexport function strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Emphasis} node\n */\nexport function emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../index.js').Handler} Handler\n *\n * @todo\n * `footnote` (or “inline note”) are a pandoc footnotes feature (`^[a note]`)\n * that does not exist in GFM.\n * We still have support for it, so that things remain working with\n * `micromark-extension-footnote` and `mdast-util-footnote`, but in the future\n * we might be able to remove it?\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n/**\n * @type {Handler}\n * @param {Footnote} node\n */\nexport function footnote(h, node) {\n const footnoteById = h.footnoteById\n let no = 1\n\n while (no in footnoteById) no++\n\n const identifier = String(no)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier,\n position: node.position\n })\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Heading} node\n */\nexport function heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","/**\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Return either a `raw` node in dangerous mode, otherwise nothing.\n *\n * @type {Handler}\n * @param {HTML} node\n */\nexport function html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\n\n/**\n * @type {Handler}\n * @param {ImageReference} node\n */\nexport function imageReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\n\n/**\n * @type {Handler}\n * @param {Image} node\n */\nexport function image(h, node) {\n /** @type {Properties} */\n const props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {InlineCode} node\n */\nexport function inlineCode(h, node) {\n return h(node, 'code', [u('text', node.value.replace(/\\r?\\n|\\r/g, ' '))])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {LinkReference} node\n */\nexport function linkReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Link} node\n */\nexport function link(h, node) {\n /** @type {Properties} */\n const props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {List} node\n * @returns {Element}\n */\nexport function list(h, node) {\n /** @type {Properties} */\n const props = {}\n const name = node.ordered ? 'ol' : 'ul'\n const items = all(h, node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < items.length) {\n const item = items[index]\n\n if (\n item.type === 'element' &&\n item.tagName === 'li' &&\n item.properties &&\n Array.isArray(item.properties.className) &&\n item.properties.className.includes('task-list-item')\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Paragraph} node\n */\nexport function paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\nimport {wrap} from '../wrap.js'\n\n/**\n * @type {Handler}\n * @param {Root} node\n */\nexport function root(h, node) {\n // @ts-expect-error `root`s are also fine.\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","/**\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Strong} node\n */\nexport function strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Table} node\n */\nexport function table(h, node) {\n const rows = node.children\n let index = -1\n const align = node.align || []\n /** @type {Array} */\n const result = []\n\n while (++index < rows.length) {\n const row = rows[index].children\n const name = index === 0 ? 'th' : 'td'\n /** @type {Array} */\n const out = []\n let cellIndex = -1\n const length = node.align ? align.length : row.length\n\n while (++cellIndex < length) {\n const cell = row[cellIndex]\n out.push(\n h(cell, name, {align: align[cellIndex]}, cell ? all(h, cell) : [])\n )\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: pointStart(result[1]),\n end: pointEnd(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","/**\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {trimLines} from 'trim-lines'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Text} node\n */\nexport function text(h, node) {\n return h.augment(node, u('text', trimLines(String(node.value))))\n}\n","/**\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n */\n\n/**\n * @type {Handler}\n * @param {ThematicBreak} [node]\n * @returns {Element}\n */\nexport function thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('hast').Root|import('hast').Parent['children'][number]} HastNode\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').ElementContent} Content\n * @typedef {import('unist-util-position').PositionLike} PositionLike\n *\n * @typedef EmbeddedHastFields\n * @property {string} [hName] Defines the tag name of an element\n * @property {Properties} [hProperties] Defines the properties of an element\n * @property {Array} [hChildren] Defines the (hast) children of an element\n *\n * @typedef {Record & EmbeddedHastFields} Data unist data with embedded hast fields\n *\n * @typedef {MdastNode & {data?: Data}} NodeWithData unist node with embedded hast data\n *\n * @callback Handler\n * @param {H} h Handle context\n * @param {any} node mdast node to handle\n * @param {Parent|null} parent Parent of `node`\n * @returns {Content|Array|null|undefined} hast node\n *\n * @callback HFunctionProps\n * @param {MdastNode|PositionLike|null|undefined} node mdast node or unist position\n * @param {string} tagName HTML tag name\n * @param {Properties} props Properties\n * @param {Array?} [children] hast content\n * @returns {Element}\n *\n * @callback HFunctionNoProps\n * @param {MdastNode|PositionLike|null|undefined} node mdast node or unist position\n * @param {string} tagName HTML tag name\n * @param {Array?} [children] hast content\n * @returns {Element}\n *\n * @typedef HFields\n * @property {boolean} dangerous Whether HTML is allowed\n * @property {string} clobberPrefix Prefix to use to prevent DOM clobbering\n * @property {string} footnoteLabel Label to use to introduce the footnote section\n * @property {string} footnoteLabelTagName HTML used for the footnote label\n * @property {Properties} footnoteLabelProperties properties on the HTML tag used for the footnote label\n * @property {string} footnoteBackLabel Label to use to go back to a footnote call from the footnote section\n * @property {(identifier: string) => Definition|null} definition Definition cache\n * @property {Record} footnoteById Footnote cache\n * @property {Array} footnoteOrder Order in which footnotes occur\n * @property {Record} footnoteCounts Counts the same footnote was used\n * @property {Handlers} handlers Applied handlers\n * @property {Handler} unknownHandler Handler for any none not in `passThrough` or otherwise handled\n * @property {(left: NodeWithData|PositionLike|null|undefined, right: Content) => Content} augment Like `h` but lower-level and usable on non-elements.\n * @property {Array} passThrough List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * @property {boolean} [allowDangerousHtml=false]\n * Whether to allow `html` nodes and inject them as `raw` HTML\n * @property {string} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute to prevent it from *clobbering*.\n * attributes.\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available in browsers on the `window` object.\n * Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n * HTML tag to use for the footnote label.\n * Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={id: 'footnote-label', className: ['sr-only']}]\n * Properties to use on the footnote label.\n * A 'sr-only' class is added by default to hide this from sighted users.\n * Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n * Object mapping mdast nodes to functions handling them\n * @property {Array} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n * Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to transform.\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {H} `h` function\n */\nfunction factory(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n h.dangerous = dangerous\n h.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n id: 'footnote-label',\n className: ['sr-only']\n }\n h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n /** @type {Array} */\n h.footnoteOrder = []\n /** @type {Record} */\n h.footnoteCounts = {}\n h.augment = augment\n h.handlers = {...handlers, ...settings.handlers}\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return h\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n * @param {(NodeWithData|PositionLike)?} left\n * @param {Content} right\n * @returns {Content}\n */\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {Data} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n function h(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n const h = factory(tree, options)\n const node = one(h, tree, null)\n const foot = footer(h)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push(u('text', '\\n'), foot)\n }\n\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n let index = -1\n /** @type {Array} */\n const listItems = []\n\n while (++index < h.footnoteOrder.length) {\n const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n const content = all(h, def)\n const id = String(def.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= h.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: h.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: h.clobberPrefix + 'fn-' + safeId},\n children: wrap(content, true)\n }\n\n if (def.position) {\n listItem.position = def.position\n }\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: h.footnoteLabelTagName,\n properties: JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n children: [u('text', h.footnoteLabel)]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array} [allowedElements]\n * @property {Array} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n visit(tree, 'element', (node, index, parent_) => {\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n })\n }\n }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","/**\n * @param {unknown} thing\n * @returns {boolean}\n */\nexport function whitespace(thing) {\n /** @type {string} */\n var value =\n // @ts-ignore looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-ignore looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See .\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","export const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType} ComponentType\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef} ComponentPropsWithoutRef\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'table'> & ReactMarkdownProps & {style?: Record, isHeader: boolean}} TableCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType} CodeComponent\n * @typedef {ComponentType} HeadingComponent\n * @typedef {ComponentType} LiComponent\n * @typedef {ComponentType} OrderedListComponent\n * @typedef {ComponentType} TableCellComponent\n * @typedef {ComponentType} TableRowComponent\n * @typedef {ComponentType} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n /** @type {Array} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: .\n // See: .\n // See: .\n // See: .\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n !whitespace(child)\n ) {\n children.push(child.value)\n }\n } else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Record} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n if (node.properties) {\n for (property in node.properties) {\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? options.linkTarget(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = Number.parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n String(properties.src || ''),\n String(properties.alt || ''),\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Record} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? commas(result) : spaces(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Record}\n */\nfunction parseStyle(value) {\n /** @type {Record} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {uriTransformer} from './uri-transformer.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record} */\nconst deprecated = {\n plugins: {to: 'plugins', id: 'change-plugins-to-remarkplugins'},\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(remarkParse)\n .use(options.remarkPlugins || [])\n .use(remarkRehype, {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n })\n .use(options.rehypePlugins || [])\n .use(rehypeFilter, options)\n\n const file = new VFile()\n\n if (typeof options.children === 'string') {\n file.value = options.children\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n asciiDigit,\n markdownLineEndingOrSpace,\n markdownLineEnding,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst www = {\n tokenize: tokenizeWww,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst punctuation = {\n tokenize: tokenizePunctuation,\n partial: true\n}\nconst namedCharacterReference = {\n tokenize: tokenizeNamedCharacterReference,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst httpAutolink = {\n tokenize: tokenizeHttpAutolink,\n previous: previousHttp\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n/** @type {ConstructRecord} */\n\nconst text = {}\n/** @type {Extension} */\n\nexport const gfmAutolinkLiteral = {\n text\n}\nlet code = 48 // Add alphanumerics.\n\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\n\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n/** @type {Tokenizer} */\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean} */\n\n let hasDot\n /** @type {boolean|undefined} */\n\n let hasDigitInLastSegment\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n /** @type {State} */\n\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n\n if (code === 64) {\n effects.consume(code)\n return label\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (code === 46) {\n return effects.check(punctuation, done, dotContinuation)(code)\n }\n\n if (code === 45 || code === 95) {\n return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n }\n\n if (asciiAlphanumeric(code)) {\n if (!hasDigitInLastSegment && asciiDigit(code)) {\n hasDigitInLastSegment = true\n }\n\n effects.consume(code)\n return label\n }\n\n return done(code)\n }\n /** @type {State} */\n\n function dotContinuation(code) {\n effects.consume(code)\n hasDot = true\n hasDigitInLastSegment = undefined\n return label\n }\n /** @type {State} */\n\n function dashOrUnderscoreContinuation(code) {\n effects.consume(code)\n return afterDashOrUnderscore\n }\n /** @type {State} */\n\n function afterDashOrUnderscore(code) {\n if (code === 46) {\n return effects.check(punctuation, nok, dotContinuation)(code)\n }\n\n return label(code)\n }\n /** @type {State} */\n\n function done(code) {\n if (hasDot && !hasDigitInLastSegment) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww') // For `www.` we check instead of attempt, because when it matches, GH\n // treats it as part of a domain (yes, it says a valid domain must come\n // after `www.`, but that’s not how it’s implemented by them).\n\n return effects.check(\n www,\n effects.attempt(domain, effects.attempt(path, done), nok),\n nok\n )(code)\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n (code !== 72 && code !== 104) ||\n !previousHttp(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n effects.consume(code)\n return t1\n }\n /** @type {State} */\n\n function t1(code) {\n if (code === 84 || code === 116) {\n effects.consume(code)\n return t2\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function t2(code) {\n if (code === 84 || code === 116) {\n effects.consume(code)\n return p\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function p(code) {\n if (code === 80 || code === 112) {\n effects.consume(code)\n return s\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function s(code) {\n if (code === 83 || code === 115) {\n effects.consume(code)\n return colon\n }\n\n return colon(code)\n }\n /** @type {State} */\n\n function colon(code) {\n if (code === 58) {\n effects.consume(code)\n return slash1\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function slash1(code) {\n if (code === 47) {\n effects.consume(code)\n return slash2\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function slash2(code) {\n if (code === 47) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null ||\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWww(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return w2\n }\n /** @type {State} */\n\n function w2(code) {\n if (code === 87 || code === 119) {\n effects.consume(code)\n return w3\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function w3(code) {\n if (code === 87 || code === 119) {\n effects.consume(code)\n return dot\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function dot(code) {\n if (code === 46) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean|undefined} */\n let hasUnderscoreInLastSegment\n /** @type {boolean|undefined} */\n\n let hasUnderscoreInLastLastSegment\n return domain\n /** @type {State} */\n\n function domain(code) {\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n done,\n punctuationContinuation\n )(code)\n }\n\n if (code === 46 || code === 95) {\n return effects.check(punctuation, done, punctuationContinuation)(code)\n } // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n\n if (\n code === null ||\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return done(code)\n }\n\n effects.consume(code)\n return domain\n }\n /** @type {State} */\n\n function punctuationContinuation(code) {\n if (code === 46) {\n hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n hasUnderscoreInLastSegment = undefined\n effects.consume(code)\n return domain\n }\n\n if (code === 95) hasUnderscoreInLastSegment = true\n effects.consume(code)\n return domain\n }\n /** @type {State} */\n\n function done(code) {\n if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePath(effects, ok) {\n let balance = 0\n return inPath\n /** @type {State} */\n\n function inPath(code) {\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n ok,\n continuedPunctuation\n )(code)\n }\n\n if (code === 40) {\n balance++\n }\n\n if (code === 41) {\n return effects.check(\n punctuation,\n parenAtPathEnd,\n continuedPunctuation\n )(code)\n }\n\n if (pathEnd(code)) {\n return ok(code)\n }\n\n if (trailingPunctuation(code)) {\n return effects.check(punctuation, ok, continuedPunctuation)(code)\n }\n\n effects.consume(code)\n return inPath\n }\n /** @type {State} */\n\n function continuedPunctuation(code) {\n effects.consume(code)\n return inPath\n }\n /** @type {State} */\n\n function parenAtPathEnd(code) {\n balance--\n return balance < 0 ? ok(code) : continuedPunctuation(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return inside\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return inside\n }\n\n if (code === 59) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n // If the named character reference is followed by the end of the path, it’s\n // not continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePunctuation(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return after\n }\n /** @type {State} */\n\n function after(code) {\n // Check the next.\n if (trailingPunctuation(code)) {\n effects.consume(code)\n return after\n } // If the punctuation marker is followed by the end of the path, it’s not\n // continued punctuation.\n\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction trailingPunctuation(code) {\n return (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 95 ||\n code === 126\n )\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction pathEnd(code) {\n return code === null || code === 60 || markdownLineEndingOrSpace(code)\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n/** @type {Previous} */\n\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n/** @type {Previous} */\n\nfunction previousHttp(code) {\n return code === null || !asciiAlpha(code)\n}\n/** @type {Previous} */\n\nfunction previousEmail(code) {\n return code !== 47 && previousHttp(code)\n}\n/**\n * @param {Array} events\n * @returns {boolean}\n */\n\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n\n while (index--) {\n const token = events[index][1]\n\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n } // @ts-expect-error If we’ve seen this token, and it was marked as not\n // having any unbalanced bracket before it, we can exit.\n\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n\n if (events.length > 0 && !result) {\n // @ts-expect-error Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @returns {Extension}\n */\n\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n\n let labelStart // Find an opening.\n\n while (index--) {\n const token = self.events[index][1]\n\n if (token.type === 'labelImage') {\n labelStart = token\n break\n } // Exit if we’ve walked far enough.\n\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n\n if (id.charCodeAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n/** @type {Resolver} */\n\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token|undefined} */\n\n let labelStart // Find an opening.\n\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker' // The whole (without `!`):\n\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // The `^` marker\n\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n } // Increment the end 1 character.\n\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n /** @type {Array} */\n\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context], // The `[`\n events[index + 3],\n events[index + 4], // The `^`.\n ['enter', marker, context],\n ['exit', marker, context], // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context], // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n /** @type {State} */\n\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n /** @type {State} */\n\n function callData(code) {\n /** @type {Token} */\n let token\n\n if (code === null || code === 91 || size++ > 999) {\n return nok(code)\n }\n\n if (code === 93) {\n if (!data) {\n return nok(code)\n }\n\n effects.exit('chunkString')\n token = effects.exit('gfmFootnoteCallString')\n return defined.includes(normalizeIdentifier(self.sliceSerialize(token)))\n ? end(code)\n : nok(code)\n }\n\n effects.consume(code)\n\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n\n return code === 92 ? callEscape : callData\n }\n /** @type {State} */\n\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n\n return callData(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n\n let identifier\n let size = 0\n /** @type {boolean|undefined} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelStart\n }\n /** @type {State} */\n\n function labelStart(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n return atBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n /** @type {Token} */\n let token\n\n if (code === null || code === 91 || size > 999) {\n return nok(code)\n }\n\n if (code === 93) {\n if (!data) {\n return nok(code)\n }\n\n token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n size++\n return atBreak\n }\n\n effects.enter('chunkString').contentType = 'string'\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n markdownLineEnding(code) ||\n code === 91 ||\n code === 93 ||\n size > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n\n return factorySpace(effects, done, 'gfmFootnoteDefinitionWhitespace')\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function done(code) {\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n/** @type {Exiter} */\n\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [singleTilde=true]\n * Whether to support strikethrough with a single tilde (`boolean`, default:\n * `true`).\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfmStrikethrough(options = {}) {\n let single = options.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n\n if (single === null || single === undefined) {\n single = true\n }\n\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n\n function resolveAllStrikethrough(events, context) {\n let index = -1 // Walk through all events.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n } // Opening.\n\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ] // Between.\n\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n splice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n }\n /** @type {Tokenizer} */\n\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n /** @type {State} */\n\n function more(code) {\n const before = classifyCharacter(previous)\n\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n/**\n * @typedef {'left'|'center'|'right'|'none'} Align\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Extension} */\nexport const gfmTable = {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolve: resolveTable\n }\n }\n}\nconst nextPrefixedOrBlank = {\n tokenize: tokenizeNextPrefixedOrBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1\n /** @type {boolean|undefined} */\n\n let inHead\n /** @type {boolean|undefined} */\n\n let inDelimiterRow\n /** @type {boolean|undefined} */\n\n let inRow\n /** @type {number|undefined} */\n\n let contentStart\n /** @type {number|undefined} */\n\n let contentEnd\n /** @type {number|undefined} */\n\n let cellStart\n /** @type {boolean|undefined} */\n\n let seenCellInRow\n\n while (++index < events.length) {\n const token = events[index][1]\n\n if (inRow) {\n if (token.type === 'temporaryTableCellContent') {\n contentStart = contentStart || index\n contentEnd = index\n }\n\n if (\n // Combine separate content parts into one.\n (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n contentEnd\n ) {\n const content = {\n type: 'tableContent',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n /** @type {Token} */\n\n const text = {\n type: 'chunkText',\n start: content.start,\n end: content.end,\n // @ts-expect-error It’s fine.\n contentType: 'text'\n }\n events.splice(\n contentStart,\n contentEnd - contentStart + 1,\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n )\n index -= contentEnd - contentStart - 3\n contentStart = undefined\n contentEnd = undefined\n }\n }\n\n if (\n events[index][0] === 'exit' &&\n cellStart !== undefined &&\n cellStart + (seenCellInRow ? 0 : 1) < index &&\n (token.type === 'tableCellDivider' ||\n (token.type === 'tableRow' &&\n (cellStart + 3 < index ||\n events[cellStart][1].type !== 'whitespace')))\n ) {\n const cell = {\n type: inDelimiterRow\n ? 'tableDelimiter'\n : inHead\n ? 'tableHeader'\n : 'tableData',\n start: events[cellStart][1].start,\n end: events[index][1].end\n }\n events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n 'exit',\n cell,\n context\n ])\n events.splice(cellStart, 0, ['enter', cell, context])\n index += 2\n cellStart = index + 1\n seenCellInRow = true\n }\n\n if (token.type === 'tableRow') {\n inRow = events[index][0] === 'enter'\n\n if (inRow) {\n cellStart = index + 1\n seenCellInRow = false\n }\n }\n\n if (token.type === 'tableDelimiterRow') {\n inDelimiterRow = events[index][0] === 'enter'\n\n if (inDelimiterRow) {\n cellStart = index + 1\n seenCellInRow = false\n }\n }\n\n if (token.type === 'tableHead') {\n inHead = events[index][0] === 'enter'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n\n const align = []\n let tableHeaderCount = 0\n /** @type {boolean|undefined} */\n\n let seenDelimiter\n /** @type {boolean|undefined} */\n\n let hasDash\n return start\n /** @type {State} */\n\n function start(code) {\n // @ts-expect-error Custom.\n effects.enter('table')._align = align\n effects.enter('tableHead')\n effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n tableHeaderCount++\n effects.enter('temporaryTableCellContent') // Can’t be space or eols at the start of a construct, so we’re in a cell.\n\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function cellDividerHead(code) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n seenDelimiter = true\n return cellBreakHead\n }\n /** @type {State} */\n\n function cellBreakHead(code) {\n if (code === null || markdownLineEnding(code)) {\n return atRowEndHead(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceHead\n }\n\n if (seenDelimiter) {\n seenDelimiter = undefined\n tableHeaderCount++\n }\n\n if (code === 124) {\n return cellDividerHead(code)\n } // Anything else is cell content.\n\n effects.enter('temporaryTableCellContent')\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function inWhitespaceHead(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceHead\n }\n\n effects.exit('whitespace')\n return cellBreakHead(code)\n }\n /** @type {State} */\n\n function inCellContentHead(code) {\n // EOF, whitespace, pipe\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('temporaryTableCellContent')\n return cellBreakHead(code)\n }\n\n effects.consume(code)\n return code === 92 ? inCellContentEscapeHead : inCellContentHead\n }\n /** @type {State} */\n\n function inCellContentEscapeHead(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentHead\n } // Anything else.\n\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function atRowEndHead(code) {\n if (code === null) {\n return nok(code)\n }\n\n effects.exit('tableRow')\n effects.exit('tableHead')\n const originalInterrupt = self.interrupt\n self.interrupt = true\n return effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n function (code) {\n self.interrupt = originalInterrupt\n effects.enter('tableDelimiterRow')\n return atDelimiterRowBreak(code)\n },\n function (code) {\n self.interrupt = originalInterrupt\n return nok(code)\n }\n )(code)\n }\n /** @type {State} */\n\n function atDelimiterRowBreak(code) {\n if (code === null || markdownLineEnding(code)) {\n return rowEndDelimiter(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n align.push('none')\n return inFillerDelimiter\n }\n\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align.push('left')\n return afterLeftAlignment\n } // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inWhitespaceDelimiter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n effects.exit('whitespace')\n return atDelimiterRowBreak(code)\n }\n /** @type {State} */\n\n function inFillerDelimiter(code) {\n if (code === 45) {\n effects.consume(code)\n return inFillerDelimiter\n }\n\n effects.exit('tableDelimiterFiller')\n\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align[align.length - 1] =\n align[align.length - 1] === 'left' ? 'center' : 'right'\n return afterRightAlignment\n }\n\n return atDelimiterRowBreak(code)\n }\n /** @type {State} */\n\n function afterLeftAlignment(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n return inFillerDelimiter\n } // Anything else is not ok.\n\n return nok(code)\n }\n /** @type {State} */\n\n function afterRightAlignment(code) {\n if (code === null || markdownLineEnding(code)) {\n return rowEndDelimiter(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n } // `|`\n\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function rowEndDelimiter(code) {\n effects.exit('tableDelimiterRow') // Exit if there was no dash at all, or if the header cell count is not the\n // delimiter cell count.\n\n if (!hasDash || tableHeaderCount !== align.length) {\n return nok(code)\n }\n\n if (code === null) {\n return tableClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableClose,\n effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n factorySpace(effects, bodyStart, 'linePrefix', 4),\n tableClose\n )\n )(code)\n }\n /** @type {State} */\n\n function tableClose(code) {\n effects.exit('table')\n return ok(code)\n }\n /** @type {State} */\n\n function bodyStart(code) {\n effects.enter('tableBody')\n return rowStartBody(code)\n }\n /** @type {State} */\n\n function rowStartBody(code) {\n effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n effects.enter('temporaryTableCellContent') // Can’t be space or eols at the start of a construct, so we’re in a cell.\n\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function cellDividerBody(code) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return cellBreakBody\n }\n /** @type {State} */\n\n function cellBreakBody(code) {\n if (code === null || markdownLineEnding(code)) {\n return atRowEndBody(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceBody\n } // `|`\n\n if (code === 124) {\n return cellDividerBody(code)\n } // Anything else is cell content.\n\n effects.enter('temporaryTableCellContent')\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function inWhitespaceBody(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceBody\n }\n\n effects.exit('whitespace')\n return cellBreakBody(code)\n }\n /** @type {State} */\n\n function inCellContentBody(code) {\n // EOF, whitespace, pipe\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('temporaryTableCellContent')\n return cellBreakBody(code)\n }\n\n effects.consume(code)\n return code === 92 ? inCellContentEscapeBody : inCellContentBody\n }\n /** @type {State} */\n\n function inCellContentEscapeBody(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentBody\n } // Anything else.\n\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function atRowEndBody(code) {\n effects.exit('tableRow')\n\n if (code === null) {\n return tableBodyClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableBodyClose,\n effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n factorySpace(effects, rowStartBody, 'linePrefix', 4),\n tableBodyClose\n )\n )(code)\n }\n /** @type {State} */\n\n function tableBodyClose(code) {\n effects.exit('tableBody')\n return tableClose(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeRowEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n // Blank or interrupting line.\n if (\n self.parser.lazy[self.now().line] ||\n code === null ||\n markdownLineEnding(code)\n ) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1] // Indented code can interrupt delimiter and body rows.\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return nok(code)\n }\n\n self._gfmTableDynamicInterruptHack = true\n return effects.check(\n self.parser.constructs.flow,\n function (code) {\n self._gfmTableDynamicInterruptHack = false\n return nok(code)\n },\n function (code) {\n self._gfmTableDynamicInterruptHack = false\n return ok(code)\n }\n )(code)\n }\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n // This is a check, so we don’t care about tokens, but we open a bogus one\n // so we’re valid.\n effects.enter('check') // EOL.\n\n effects.consume(code)\n return whitespace\n }\n /** @type {State} */\n\n function whitespace(code) {\n if (code === -1 || code === 32) {\n effects.consume(code)\n size++\n return size === 4 ? ok : whitespace\n } // EOF or whitespace\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n return ok(code)\n } // Anything else.\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\nexport const gfmTaskListItem = {\n text: {\n [91]: tasklistCheck\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n /** @type {State} */\n\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n /** @type {State} */\n\n function inside(code) {\n // To match how GH works in comments, use `markdownSpace` (`[ \\t]`) instead\n // of `markdownLineEndingOrSpace` (`[ \\t\\r\\n]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n const self = this\n return factorySpace(effects, after, 'whitespace')\n /** @type {State} */\n\n function after(code) {\n const tail = self.events[self.events.length - 1]\n return (\n // We either found spaces…\n ((tail && tail[1].type === 'whitespace') || // …or it was followed by a line ending, in which case, there has to be\n // non-whitespace after that line ending, because otherwise we’d get an\n // EOF as the content is closed with blank lines.\n markdownLineEnding(code)) &&\n code !== null\n ? ok(code)\n : nok(code)\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Support GFM or markdown on github.com.\n *\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral,\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable,\n gfmTaskListItem\n ])\n}\n\n/**\n * Support to compile GFM to HTML.\n *\n * @param {HtmlOptions} [options]\n * @returns {HtmlExtension}\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml,\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml,\n gfmTableHtml,\n gfmTagfilterHtml,\n gfmTaskListItemHtml\n ])\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {Test} [ignore]\n * `unist-util-is` test used to assert parents\n *\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {Content|Root} Node\n * @typedef {Exclude, Root>} Parent\n *\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n *\n * @typedef RegExpMatchObject\n * @property {number} index\n * @property {string} input\n * @property {[Root, ...Array, Text]} stack\n *\n * @typedef {string|RegExp} Find\n * @typedef {string|ReplaceFunction} Replace\n *\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * @typedef {Record} FindAndReplaceSchema\n * @typedef {Array} FindAndReplaceList\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * @typedef {Array} Pairs\n */\n\n/**\n * @callback ReplaceFunction\n * @param {...any} parameters\n * @returns {Array|PhrasingContent|string|false|undefined|null}\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param tree mdast tree\n * @param find Value to find and remove. When `string`, escaped and made into a global `RegExp`\n * @param [replace] Value to insert.\n * * When `string`, turned into a Text node.\n * * When `Function`, called with the results of calling `RegExp.exec` as\n * arguments, in which case it can return a single or a list of `Node`,\n * a `string` (which is wrapped in a `Text` node), or `false` to not replace\n * @param [options] Configuration.\n */\nexport const findAndReplace =\n /**\n * @type {(\n * ((tree: Node, find: Find, replace?: Replace, options?: Options) => Node) &\n * ((tree: Node, schema: FindAndReplaceSchema|FindAndReplaceList, options?: Options) => Node)\n * )}\n **/\n (\n /**\n * @param {Node} tree\n * @param {Find|FindAndReplaceSchema|FindAndReplaceList} find\n * @param {Replace|Options} [replace]\n * @param {Options} [options]\n */\n function (tree, find, replace, options) {\n /** @type {Options|undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don’t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don’t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent|undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = /** @type {Parent} */ (parents[index])\n\n if (\n ignored(\n parent,\n // @ts-expect-error mdast vs. unist parent.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n // @ts-expect-error: stack is fine.\n return handler(node, parents)\n }\n }\n\n /**\n * @param {Text} node\n * @param {[Root, ...Array]} parents\n * @returns {VisitorResult}\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n /** @type {number|undefined} */\n let position\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n if (value !== false) {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n }\n )\n\n/**\n * @param {FindAndReplaceSchema|FindAndReplaceList} schema\n * @returns {Pairs}\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {Find} find\n * @returns {RegExp}\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * @param {Replace} replace\n * @returns {ReplaceFunction}\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\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","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown/lib/types.js').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').PhrasingContent} PhrasingContent\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\nconst inConstruct = 'phrasing'\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/** @type {FromMarkdownExtension} */\nexport const gfmAutolinkLiteralFromMarkdown = {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmAutolinkLiteralToMarkdown = {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n ]\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {PhrasingContent} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[_-\\d]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string|undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n /** @type {number} */\n let closingParenIndex\n /** @type {number} */\n let openingParens\n /** @type {number} */\n let closingParens\n /** @type {string|undefined} */\n let trail\n\n if (trailExec) {\n url = url.slice(0, trailExec.index)\n trail = trailExec[0]\n closingParenIndex = trail.indexOf(')')\n openingParens = ccount(url, '(')\n closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').Association} Association\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another: controversially,\n * character escapes and references don’t work in this matching: `©` does\n * not match `©`, and `\\+` does not match `+`.\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character escapes\n * and all character references.\n *\n * @param {Association} node\n * @returns {string}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * Functions to track output positions.\n * This info isn’t used yet but suchs functionality allows line wrapping,\n * and theoretically source maps (though, is there practical use in that?).\n *\n * @param {TrackFields} options_\n */\nexport function track(options_) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = options_ || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @returns {{now: Point, lineShift: number}}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @param {number} value\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past a string.\n *\n * @param {string} value\n * @returns {string}\n */\n function move(value = '') {\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Join} Join\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {TrackFields} safeOptions\n * @returns {string}\n */\nexport function containerFlow(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n const tracker = track(safeOptions)\n /** @type {Array} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n context.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(tracker.move(between(child, children[index + 1])))\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n\n /**\n * @param {Node} left\n * @param {Node} right\n * @returns {string}\n */\n function between(left, right) {\n let index = context.join.length\n\n while (index--) {\n const result = context.join[index](left, right, parent, context)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n","/**\n * @callback Map\n * @param {string} value\n * @param {number} line\n * @param {boolean} blank\n * @returns {string}\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @param {string} value\n * @param {Map} map\n * @returns {string}\n */\nexport function indentLines(value, map) {\n /** @type {Array} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (!list) {\n return none\n }\n\n if (typeof list === 'string') {\n list = [list]\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * @param {Context} context\n * @param {string|null|undefined} input\n * @param {SafeOptions & {encode?: Array}} config\n * @returns {string}\n */\nexport function safe(context, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const result = []\n /** @type {Record} */\n const infos = {}\n let index = -1\n\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n\n if (!patternInScope(context.stack, pattern)) {\n continue\n }\n\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(\n '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n )\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/**\n * @returns {FromMarkdownExtension}\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinitionLabelString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinition(token) {\n this.exit(token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCallString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCallString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCall(token) {\n this.exit(token)\n }\n}\n\n/**\n * @returns {ToMarkdownExtension}\n */\nexport function gfmFootnoteToMarkdown() {\n footnoteReference.peek = footnoteReferencePeek\n\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\n function footnoteReference(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteReference')\n const subexit = context.enter('reference')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n }\n\n /** @type {ToMarkdownHandle} */\n function footnoteReferencePeek() {\n return '['\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\n function footnoteDefinition(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteDefinition')\n const subexit = context.enter('label')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n indentLines(containerFlow(node, context, tracker.current()), map)\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' ') + line\n }\n\n return line\n }\n }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n * @typedef {import('../types.js').Context} Context\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {SafeOptions} safeOptions\n * @returns {string}\n */\nexport function containerPhrasing(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n /** @type {Array} */\n const results = []\n let index = -1\n let before = safeOptions.before\n\n indexStack.push(-1)\n let tracker = track(safeOptions)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n let handle = context.handle.handlers[children[index + 1].type]\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, context, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = safeOptions.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: \n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = track(safeOptions)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n ...tracker.current(),\n before,\n after\n })\n )\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [{character: '~', inConstruct: 'phrasing'}],\n handlers: {delete: handleDelete}\n}\n\nhandleDelete.peek = peekDelete\n\n/** @type {FromMarkdownHandle} */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n const exit = context.enter('emphasis')\n let value = tracker.move('~~')\n value += containerPhrasing(node, context, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @type {Handle}\n * @param {InlineCode} node\n */\nexport function inlineCode(node, _, context) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray|null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @type {Handle}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|Array} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {Array>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').AlignType} AlignType\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n *\n * @typedef Options\n * @property {boolean} [tableCellPadding=true]\n * @property {boolean} [tablePipeAlign=true]\n * @property {MarkdownTableOptions['stringLength']} [stringLength]\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTableFromMarkdown = {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterTable(token) {\n /** @type {Array<'left'|'right'|'center'|'none'>} */\n // @ts-expect-error: `align` is custom.\n const align = token._align\n this.enter(\n {\n type: 'table',\n align: align.map((d) => (d === 'none' ? null : d)),\n children: []\n },\n token\n )\n this.setData('inTable', true)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exit(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/** @type {FromMarkdownHandle} */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, context, safeOptions) {\n return serializeData(\n handleTableAsData(node, context, safeOptions),\n // @ts-expect-error: fixed in `markdown-table@3.0.1`.\n node.align\n )\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, context, safeOptions) {\n const row = handleTableRowAsData(node, context, safeOptions)\n // `markdown-table` will always add an align row\n const value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, context, safeOptions) {\n const exit = context.enter('tableCell')\n const subexit = context.enter('phrasing')\n const value = containerPhrasing(node, context, {\n ...safeOptions,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n alignDelimiters,\n padding,\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = context.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(\n children[index],\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableRowAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = context.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(\n children[index],\n node,\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, context) {\n let value = inlineCode(node, parent, context)\n\n if (context.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('../util/indent-lines.js').Map} Map\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\nimport {containerFlow} from '../util/container-flow.js'\nimport {indentLines} from '../util/indent-lines.js'\nimport {track} from '../util/track.js'\n\n/**\n * @type {Handle}\n * @param {ListItem} node\n */\nexport function listItem(node, parent, context, safeOptions) {\n const listItemIndent = checkListItemIndent(context)\n let bullet = context.bulletCurrent || checkBullet(context)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (context.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = track(safeOptions)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = context.enter('listItem')\n const value = indentLines(\n containerFlow(node, context, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude}\n */\nexport function checkListItemIndent(context) {\n const style = context.options.listItemIndent || 'tab'\n\n // To do: remove in a major.\n // @ts-expect-error: deprecated.\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude}\n */\nexport function checkBullet(context) {\n const marker = context.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {Extract} Parent\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitCheck(token) {\n const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n // We’re always in a paragraph, in a list item.\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parent} */ (this.stack[this.stack.length - 2])\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const siblings = parent.children\n const head = node.children[0]\n let index = -1\n /** @type {Paragraph|undefined} */\n let firstParaghraph\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean' &&\n head &&\n head.type === 'text'\n ) {\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = track(safeOptions)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = listItem(node, parent, context, {\n ...safeOptions,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-gfm-table').Options} Options\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * @returns {Array}\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown,\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown,\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown\n ]\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', gfm(options))\n add('fromMarkdownExtensions', gfmFromMarkdown())\n add('toMarkdownExtensions', gfmToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","var own = {}.hasOwnProperty\n\n/**\n * Check if `node` has a set `name` property.\n *\n * @param {unknown} node\n * @param {string} name\n * @returns {boolean}\n */\nexport function hasProperty(node, name) {\n /** @type {unknown} */\n var value =\n name &&\n node &&\n typeof node === 'object' &&\n // @ts-ignore Looks like a node.\n node.type === 'element' &&\n // @ts-ignore Looks like an element.\n node.properties &&\n // @ts-ignore Looks like an element.\n own.call(node.properties, name) &&\n // @ts-ignore Looks like an element.\n node.properties[name]\n\n return value !== null && value !== undefined && value !== false\n}\n","/**\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {Root|Parent['children'][number]} Node\n */\n\n/**\n * Rank of a heading: H1 -> 1, H2 -> 2, etc.\n *\n * @param {Node} node\n * @returns {number|null}\n */\nexport function headingRank(node) {\n var name =\n (node && node.type === 'element' && node.tagName.toLowerCase()) || ''\n var code =\n name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n ? name.charCodeAt(1)\n : 0\n return code > 48 /* `0` */ && code < 55 /* `7` */ ? code - 48 /* `0` */ : null\n}\n","/**\n * @fileoverview\n * Get the plain-text value of a hast node.\n * @longdescription\n * ## Use\n *\n * ```js\n * import {h} from 'hastscript'\n * import {toString} from 'hast-util-to-string'\n *\n * toString(h('p', 'Alpha'))\n * //=> 'Alpha'\n * toString(h('div', [h('b', 'Bold'), ' and ', h('i', 'italic'), '.']))\n * //=> 'Bold and italic.'\n * ```\n *\n * ## API\n *\n * ### `toString(node)`\n *\n * Transform a node to a string.\n */\n\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {Root|Root['children'][number]} Node\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Node} node\n * @returns {string}\n */\nexport function toString(node) {\n // “The concatenation of data of all the Text node descendants of the context\n // object, in tree order.”\n if ('children' in node) {\n return all(node)\n }\n\n // “Context object’s data.”\n return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Node} node\n * @returns {string}\n */\nfunction one(node) {\n if (node.type === 'text') {\n return node.value\n }\n\n return 'children' in node ? all(node) : ''\n}\n\n/**\n * @param {Root|Element} node\n * @returns {string}\n */\nfunction all(node) {\n let index = -1\n /** @type {string[]} */\n const result = []\n\n while (++index < node.children.length) {\n result[index] = one(node.children[index])\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('hast').Root} Root\n */\n\nimport Slugger from 'github-slugger'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {toString} from 'hast-util-to-string'\nimport {visit} from 'unist-util-visit'\n\nconst slugs = new Slugger()\n\n/**\n * Plugin to add `id`s to headings.\n *\n * @type {import('unified').Plugin, Root>}\n */\nexport default function rehypeSlug() {\n return (tree) => {\n slugs.reset()\n\n visit(tree, 'element', (node) => {\n if (headingRank(node) && node.properties && !hasProperty(node, 'id')) {\n node.properties.id = slugs.slug(toString(node))\n }\n })\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('hast').Element} Element\n *\n * @typedef {string} TagName\n * @typedef {null|undefined|TagName|TestFunctionAnything|Array.} Test\n */\n\n/**\n * @template {Element} T\n * @typedef {null|undefined|T['tagName']|TestFunctionPredicate|Array.>} PredicateTest\n */\n\n/**\n * Check if an element passes a test\n *\n * @callback TestFunctionAnything\n * @param {Element} element\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if an element passes a certain node test\n *\n * @template {Element} X\n * @callback TestFunctionPredicate\n * @param {Element} element\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {element is X}\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @template {Element} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\n// Check if `node` is an `element` and whether it passes the given test.\nexport const isElement =\n /**\n * Check if a node is an element and passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * (() => false) &\n * ((node: unknown, test?: PredicateTest, index?: number, parent?: Parent, context?: unknown) => node is T) &\n * ((node: unknown, test: Test, index?: number, parent?: Parent, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test] When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `array`, checks any one of the subtests pass.\n * @param {number} [index] Position of `node` in `parent`\n * @param {Parent} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is an `Element` (object with `type` set to `element` and `tagName` set to a non-empty string).\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convertElement(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index for child node')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n // @ts-expect-error Looks like a node.\n if (!node || !node.type || typeof node.type !== 'string') {\n return false\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return check.call(context, node, index, parent)\n }\n )\n\nexport const convertElement =\n /**\n * @type {(\n * ((test: T['tagName']|TestFunctionPredicate) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as test')\n }\n )\n\n/**\n * @param {Array.} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s tag\n * name for said string.\n *\n * @param {TagName} check\n * @returns {AssertAnything}\n */\nfunction tagNameFactory(check) {\n return tagName\n\n /**\n * @param {unknown} node\n * @returns {boolean}\n */\n function tagName(node) {\n return element(node) && node.tagName === check\n }\n}\n\n/**\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array.} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n // @ts-expect-error: fine.\n return element(node) && Boolean(check.call(this, node, ...parameters))\n }\n}\n\n/**\n * Utility to return true if this is an element.\n * @param {unknown} node\n * @returns {node is Element}\n */\nfunction element(node) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n // @ts-expect-error Looks like a node.\n node.type === 'element' &&\n // @ts-expect-error Looks like an element.\n typeof node.tagName === 'string'\n )\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast-util-is-element').Test} Test\n *\n * @typedef {'prepend'|'append'|'wrap'|'before'|'after'} Behavior\n *\n * @callback Build\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n *\n * @typedef Options\n * Configuration.\n * @property {Behavior} [behavior='prepend']\n * How to create links.\n * @property {Behavior} [behaviour]\n * Please use `behavior` instead\n * @property {Properties} [properties]\n * Extra properties to set on the link when injecting.\n * Defaults to `{ariaHidden: true, tabIndex: -1}` when `'prepend'` or\n * `'append'`.\n * @property {ElementChild|ElementChild[]|Build} [content={type: 'element', tagName: 'span', properties: {className: ['icon', 'icon-link']}, children: []}]\n * hast nodes to insert in the link.\n * @property {ElementChild|ElementChild[]|Build} [group]\n * hast node to wrap the heading and link with, if `behavior` is `'before'` or\n * `'after'`.\n * There is no default.\n * @property {Test} [test]\n * Test to define which heading elements are linked.\n * Any test that can be given to `hast-util-is-element` is supported.\n * The default (no test) is to link all headings.\n * Can be used to link only h1-h3, or for example all except h1.\n */\n\nimport extend from 'extend'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {convertElement} from 'hast-util-is-element'\nimport {visit, SKIP} from 'unist-util-visit'\n\n/** @type {Element} */\nconst contentDefaults = {\n type: 'element',\n tagName: 'span',\n properties: {className: ['icon', 'icon-link']},\n children: []\n}\n\n/**\n * Plugin to automatically add links to headings (h1-h6).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function rehypeAutolinkHeadings(options = {}) {\n let props = options.properties\n const behavior = options.behaviour || options.behavior || 'prepend'\n const content = options.content || contentDefaults\n const group = options.group\n const is = convertElement(options.test)\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n let method\n\n if (behavior === 'wrap') {\n method = wrap\n } else if (behavior === 'before' || behavior === 'after') {\n method = around\n } else {\n if (!props) {\n props = {ariaHidden: 'true', tabIndex: -1}\n }\n\n method = inject\n }\n\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (\n headingRank(node) &&\n hasProperty(node, 'id') &&\n is(node, index, parent)\n ) {\n return method(node, index, parent)\n }\n })\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function inject(node) {\n node.children[behavior === 'prepend' ? 'unshift' : 'push'](\n create(node, extend(true, {}, props), toChildren(content, node))\n )\n\n return [SKIP]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function around(node, index, parent) {\n // Uncommon.\n /* c8 ignore next */\n if (typeof index !== 'number' || !parent) return\n\n const link = create(\n node,\n extend(true, {}, props),\n toChildren(content, node)\n )\n let nodes = behavior === 'before' ? [link, node] : [node, link]\n\n if (group) {\n const grouping = toNode(group, node)\n\n if (grouping && !Array.isArray(grouping) && grouping.type === 'element') {\n grouping.children = nodes\n nodes = [grouping]\n }\n }\n\n parent.children.splice(index, 1, ...nodes)\n\n return [SKIP, index + nodes.length]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function wrap(node) {\n node.children = [create(node, extend(true, {}, props), node.children)]\n return [SKIP]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild[]}\n */\n function toChildren(value, node) {\n const result = toNode(value, node)\n return Array.isArray(result) ? result : [result]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n */\n function toNode(value, node) {\n if (typeof value === 'function') return value(node)\n return extend(true, Array.isArray(value) ? [] : {}, value)\n }\n\n /**\n * @param {Element} node\n * @param {Properties} props\n * @param {ElementChild[]} children\n * @returns {Element}\n */\n function create(node, props, children) {\n return {\n type: 'element',\n tagName: 'a',\n properties: Object.assign({}, props, {\n // Fix hast types and make them required.\n /* c8 ignore next */\n href: '#' + (node.properties || {}).id\n }),\n children\n }\n }\n}\n","/**\n * @typedef {import('./core.js').HChild} Child Acceptable child value\n * @typedef {import('./core.js').HProperties} Properties Acceptable properties value.\n *\n * @typedef {import('./jsx-classic').Element} s.JSX.Element\n * @typedef {import('./jsx-classic').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic').IntrinsicElements} s.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n */\n\nimport {svg} from 'property-information'\nimport {core} from './core.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\nexport const s = core(svg, 'g', svgCaseSensitiveTagNames)\n","export const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n","/**\n * Map of web namespaces.\n *\n * @type {Record}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {Parent['children'][number]} Child\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {Child|Root} Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Location} P5Location\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').Node} P5Node\n *\n * @typedef {'html'|'svg'} Space\n *\n * @callback Handler\n * @param {Context} ctx\n * @param {P5Node} node\n * @param {Array.} [children]\n * @returns {Node}\n *\n * @typedef Options\n * @property {Space} [space='html'] Whether the root of the tree is in the `'html'` or `'svg'` space. If an element in with the SVG namespace is found in `ast`, `fromParse5` automatically switches to the SVG space when entering the element, and switches back when leaving\n * @property {VFile} [file] `VFile`, used to add positional information to nodes. If given, the file should have the original HTML source as its contents\n * @property {boolean} [verbose=false] Whether to add extra positional information about starting tags, closing tags, and attributes to elements. Note: not used without `file`\n *\n * @typedef Context\n * @property {Schema} schema\n * @property {VFile|undefined} file\n * @property {boolean|undefined} verbose\n * @property {boolean} location\n */\n\nimport {h, s} from 'hastscript'\nimport {html, svg, find} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n// Handlers.\nconst map = {\n '#document': root,\n '#document-fragment': root,\n '#text': text,\n '#comment': comment,\n '#documentType': doctype\n}\n\n/**\n * Transform Parse5’s AST to a hast tree.\n *\n * @param {P5Node} ast\n * @param {Options|VFile} [options]\n */\nexport function fromParse5(ast, options = {}) {\n /** @type {Options} */\n let settings\n /** @type {VFile|undefined} */\n let file\n\n if (isFile(options)) {\n file = options\n settings = {}\n } else {\n file = options.file\n settings = options\n }\n\n return transform(\n {\n schema: settings.space === 'svg' ? svg : html,\n file,\n verbose: settings.verbose,\n location: false\n },\n ast\n )\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {P5Node} ast\n * @returns {Node}\n */\nfunction transform(ctx, ast) {\n const schema = ctx.schema\n /** @type {Handler} */\n // @ts-expect-error: index is fine.\n const fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n /** @type {Array.|undefined} */\n let children\n\n // Element.\n if ('tagName' in ast) {\n ctx.schema = ast.namespaceURI === webNamespaces.svg ? svg : html\n }\n\n if ('childNodes' in ast) {\n children = nodes(ctx, ast.childNodes)\n }\n\n const result = fn(ctx, ast, children)\n\n if ('sourceCodeLocation' in ast && ast.sourceCodeLocation && ctx.file) {\n // @ts-expect-error It’s fine.\n const position = createLocation(ctx, result, ast.sourceCodeLocation)\n\n if (position) {\n ctx.location = true\n result.position = position\n }\n }\n\n ctx.schema = schema\n\n return result\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {Array.} children\n * @returns {Array.}\n */\nfunction nodes(ctx, children) {\n let index = -1\n /** @type {Array.} */\n const result = []\n\n while (++index < children.length) {\n // @ts-expect-error Assume no roots in children.\n result[index] = transform(ctx, children[index])\n }\n\n return result\n}\n\n/**\n * Transform a document.\n * Stores `ast.quirksMode` in `node.data.quirksMode`.\n *\n * @type {Handler}\n * @param {P5Document} ast\n * @param {Array.} children\n * @returns {Root}\n */\nfunction root(ctx, ast, children) {\n /** @type {Root} */\n const result = {\n type: 'root',\n children,\n data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n }\n\n if (ctx.file && ctx.location) {\n const doc = String(ctx.file)\n const loc = location(doc)\n result.position = {\n start: loc.toPoint(0),\n end: loc.toPoint(doc.length)\n }\n }\n\n return result\n}\n\n/**\n * Transform a doctype.\n *\n * @type {Handler}\n * @returns {Doctype}\n */\nfunction doctype() {\n // @ts-expect-error Types are out of date.\n return {type: 'doctype'}\n}\n\n/**\n * Transform a text.\n *\n * @type {Handler}\n * @param {P5Text} ast\n * @returns {Text}\n */\nfunction text(_, ast) {\n return {type: 'text', value: ast.value}\n}\n\n/**\n * Transform a comment.\n *\n * @type {Handler}\n * @param {P5Comment} ast\n * @returns {Comment}\n */\nfunction comment(_, ast) {\n return {type: 'comment', value: ast.data}\n}\n\n/**\n * Transform an element.\n *\n * @type {Handler}\n * @param {P5Element} ast\n * @param {Array.} children\n * @returns {Element}\n */\nfunction element(ctx, ast, children) {\n const fn = ctx.schema.space === 'svg' ? s : h\n let index = -1\n /** @type {Object.} */\n const props = {}\n\n while (++index < ast.attrs.length) {\n const attribute = ast.attrs[index]\n props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n attribute.value\n }\n\n const result = fn(ast.tagName, props, children)\n\n if (result.tagName === 'template' && 'content' in ast) {\n const pos = ast.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n /** @type {Root} */\n // @ts-expect-error Types are wrong.\n const content = transform(ctx, ast.content)\n\n if (startTag && endTag && ctx.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n return result\n}\n\n/**\n * Create clean positional information.\n *\n * @param {Context} ctx\n * @param {Node} node\n * @param {P5ElementLocation} location\n * @returns {Position|null}\n */\nfunction createLocation(ctx, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: .\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (ctx.verbose) {\n /** @type {Object.} */\n const props = {}\n /** @type {string} */\n let key\n\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n props[find(ctx.schema, key).property] = position(location.attrs[key])\n }\n }\n\n node.data = {\n position: {\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {P5Location} loc\n * @returns {Position|null}\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n // @ts-expect-error `null` is fine.\n return start || end ? {start, end} : null\n}\n\n/**\n * @param {Point} point\n * @returns {Point|null}\n */\nfunction point(point) {\n return point.line && point.column ? point : null\n}\n\n/**\n * @param {VFile|Options} value\n * @returns {value is VFile}\n */\nfunction isFile(value) {\n return 'messages' in value\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {Pick} PositionalPoint\n * @typedef {Required} FullPoint\n * @typedef {NonNullable} Offset\n */\n\n/**\n * Get transform functions for the given `document`.\n *\n * @param {string|Uint8Array|VFile} file\n */\nexport function location(file) {\n var value = String(file)\n /** @type {Array.} */\n var indices = []\n var search = /\\r?\\n|\\r/g\n\n while (search.test(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {toPoint, toOffset}\n\n /**\n * Get the line and column-based `point` for `offset` in the bound indices.\n * Returns a point with `undefined` values when given invalid or out of bounds\n * input.\n *\n * @param {Offset} offset\n * @returns {FullPoint}\n */\n function toPoint(offset) {\n var index = -1\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset\n }\n }\n }\n }\n\n return {line: undefined, column: undefined, offset: undefined}\n }\n\n /**\n * Get the `offset` for a line and column-based `point` in the bound indices.\n * Returns `-1` when given invalid or out of bounds input.\n *\n * @param {PositionalPoint} point\n * @returns {Offset}\n */\n function toOffset(point) {\n var line = point && point.line\n var column = point && point.column\n /** @type {number} */\n var offset\n\n if (\n typeof line === 'number' &&\n typeof column === 'number' &&\n !Number.isNaN(line) &&\n !Number.isNaN(column) &&\n line - 1 in indices\n ) {\n offset = (indices[line - 2] || 0) + column - 1 || 0\n }\n\n return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('unist-util-is').AssertPredicate} AssertElement\n * @typedef {import('unist-util-is').AssertPredicate} AssertText\n * @typedef {import('unist-util-is').AssertPredicate} AssertRoot\n *\n * @callback CreateElementLike\n * @param {string} name\n * @param {any} attributes\n * @param {Array.} [children]\n * @returns {any}\n *\n * @typedef Context\n * @property {html|svg} schema\n * @property {string|null} prefix\n * @property {number} key\n * @property {boolean} react\n * @property {boolean} vue\n * @property {boolean} vdom\n * @property {boolean} hyperscript\n *\n * @typedef Options\n * @property {string|null} [prefix]\n * @property {'html'|'svg'} [space]\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\nimport {convert} from 'unist-util-is'\n\nconst ns = /** @type {Record} */ (webNamespaces)\nconst toReact = /** @type {Record} */ (hastToReact)\n\nconst own = {}.hasOwnProperty\n\n/** @type {AssertRoot} */\n// @ts-expect-error it’s correct.\nconst root = convert('root')\n/** @type {AssertElement} */\n// @ts-expect-error it’s correct.\nconst element = convert('element')\n/** @type {AssertText} */\n// @ts-expect-error it’s correct.\nconst text = convert('text')\n\n/**\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element|Root} tree\n * @param {string|boolean|Options} [options]\n * @returns {ReturnType}\n */\nexport function toH(h, tree, options) {\n if (typeof h !== 'function') {\n throw new TypeError('h is not a function')\n }\n\n const r = react(h)\n const v = vue(h)\n const vd = vdom(h)\n /** @type {string|boolean|null|undefined} */\n let prefix\n /** @type {Element} */\n let node\n\n if (typeof options === 'string' || typeof options === 'boolean') {\n prefix = options\n options = {}\n } else {\n if (!options) options = {}\n prefix = options.prefix\n }\n\n if (root(tree)) {\n // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n node =\n tree.children.length === 1 && element(tree.children[0])\n ? tree.children[0]\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: tree.children\n }\n } else if (element(tree)) {\n node = tree\n } else {\n throw new Error(\n // @ts-expect-error runtime.\n 'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n )\n }\n\n return transform(h, node, {\n schema: options.space === 'svg' ? svg : html,\n prefix:\n prefix === undefined || prefix === null\n ? r || v || vd\n ? 'h-'\n : null\n : typeof prefix === 'string'\n ? prefix\n : prefix\n ? 'h-'\n : null,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element} node\n * @param {Context} ctx\n */\nfunction transform(h, node, ctx) {\n const parentSchema = ctx.schema\n let schema = parentSchema\n let name = node.tagName\n /** @type {Record} */\n const attributes = {}\n /** @type {Array.|string>} */\n const nodes = []\n let index = -1\n /** @type {string} */\n let key\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n ctx.schema = schema\n }\n\n for (key in node.properties) {\n if (node.properties && own.call(node.properties, key)) {\n addAttribute(attributes, key, node.properties[key], ctx, name)\n }\n }\n\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else if (schema.space) {\n attributes.namespace = ns[schema.space]\n }\n }\n\n if (ctx.prefix) {\n ctx.key++\n attributes.key = ctx.prefix + ctx.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n const value = node.children[index]\n\n if (element(value)) {\n nodes.push(transform(h, value, ctx))\n } else if (text(value)) {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length > 0\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\n/**\n * @param {Record} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n * @param {string} name\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, ctx, name) {\n const info = find(ctx.schema, prop)\n /** @type {string|undefined} */\n let subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value === undefined ||\n value === null ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (ctx.react || ctx.vue || ctx.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (ctx.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n props[subprop] = Object.assign(props[subprop] || {}, {\n [info.attribute]: value\n })\n } else if (info.space && ctx.react) {\n props[toReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction react(h) {\n /** @type {unknown} */\n const node = h('div', {})\n return Boolean(\n node &&\n // @ts-expect-error Looks like a React node.\n ('_owner' in node || '_store' in node) &&\n // @ts-expect-error Looks like a React node.\n (node.key === undefined || node.key === null)\n )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction hyperscript(h) {\n return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vdom(h) {\n /** @type {unknown} */\n const node = h('div', {})\n // @ts-expect-error Looks like a vnode.\n return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vue(h) {\n /** @type {unknown} */\n const node = h('div', {})\n // @ts-expect-error Looks like a Vue node.\n return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * @param {string} value\n * @param {string} tagName\n * @returns {Record}\n */\nfunction parseStyle(value, tagName) {\n /** @type {Record} */\n const result = {}\n\n try {\n style(value, (name, value) => {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n result[\n name.replace(\n /-([a-z])/g,\n /**\n * @param {string} _\n * @param {string} $1\n * @returns {string}\n */ (_, $1) => $1.toUpperCase()\n )\n ] = value\n })\n } catch (error) {\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n}\n","var own = {}.hasOwnProperty\n\n/**\n * @callback Handler\n * @param {...unknown} value\n * @return {unknown}\n *\n * @typedef {Record} Handlers\n *\n * @typedef {Object} Options\n * @property {Handler} [unknown]\n * @property {Handler} [invalid]\n * @property {Handlers} [handlers]\n */\n\n/**\n * Handle values based on a property.\n *\n * @param {string} key\n * @param {Options} [options]\n */\nexport function zwitch(key, options) {\n var settings = options || {}\n\n /**\n * Handle one value.\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @param {...unknown} [value]\n * @this {unknown}\n * @returns {unknown}\n * @property {Handler} invalid\n * @property {Handler} unknown\n * @property {Handlers} handlers\n */\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n if (fn) {\n return fn.apply(this, arguments)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","/**\n * @typedef {import('parse5').Node} P5Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').ParentNode} P5Parent\n * @typedef {Exclude} P5Child\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('property-information').Info} Info\n * @typedef {'html'|'svg'} Space\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {Parent['children'][number]} Child\n * @typedef {Child|Root} Node\n *\n * @callback Handle\n * @param {Node} node\n * @param {Schema} schema\n * @returns {P5Node}\n */\n\nimport {html, svg, find} from 'property-information'\nimport {toH} from 'hast-to-hyperscript'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nvar own = {}.hasOwnProperty\n\nvar one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a tree from hast to Parse5’s AST.\n *\n * @param {Node} tree\n * @param {Space} [space='html']\n * @returns {P5Node}\n */\nexport function toParse5(tree, space) {\n // @ts-ignore Types are wrong.\n return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Document}\n */\nfunction root(node, schema) {\n /** @type {P5Document} */\n var p5 = {\n nodeName: '#document',\n mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n childNodes: []\n }\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Fragment}\n */\nfunction fragment(node, schema) {\n /** @type {P5Fragment} */\n var p5 = {nodeName: '#document-fragment', childNodes: []}\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Doctype} node\n * @returns {P5Doctype}\n */\nfunction doctype(node) {\n return patch(node, {\n nodeName: '#documentType',\n name: 'html',\n publicId: '',\n systemId: '',\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Text} node\n * @returns {P5Text}\n */\nfunction text(node) {\n return patch(node, {\n nodeName: '#text',\n value: node.value,\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Comment} node\n * @returns {P5Comment}\n */\nfunction comment(node) {\n return patch(node, {\n nodeName: '#comment',\n data: node.value,\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Element} node\n * @returns {P5Element}\n */\nfunction element(node, schema) {\n /** @type {Space} */\n // @ts-ignore Assume space.\n var space = schema.space\n return toH(h, Object.assign({}, node, {children: []}), {space})\n\n /**\n * @param {string} name\n * @param {Object.} attrs\n */\n function h(name, attrs) {\n /** @type {Array.} */\n var values = []\n /** @type {Info} */\n var info\n /** @type {P5Attribute} */\n var value\n /** @type {string} */\n var key\n /** @type {number} */\n var index\n /** @type {P5Element} */\n var p5\n\n for (key in attrs) {\n if (!own.call(attrs, key) || attrs[key] === false) {\n continue\n }\n\n info = find(schema, key)\n\n if (info.boolean && !attrs[key]) {\n continue\n }\n\n value = {name: key, value: attrs[key] === true ? '' : String(attrs[key])}\n\n if (info.space && info.space !== 'html' && info.space !== 'svg') {\n index = key.indexOf(':')\n\n if (index < 0) {\n value.prefix = ''\n } else {\n value.name = key.slice(index + 1)\n value.prefix = key.slice(0, index)\n }\n\n value.namespace = webNamespaces[info.space]\n }\n\n values.push(value)\n }\n\n if (schema.space === 'html' && node.tagName === 'svg') schema = svg\n\n p5 = patch(node, {\n nodeName: name,\n tagName: name,\n attrs: values,\n namespaceURI: webNamespaces[schema.space],\n childNodes: [],\n parentNode: undefined\n })\n\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n\n // @ts-ignore Types are wrong.\n if (name === 'template') p5.content = fragment(node.content, schema)\n\n return p5\n }\n}\n\n/**\n * @param {Array.} children\n * @param {P5Parent} p5\n * @param {Schema} schema\n * @returns {Array.}\n */\nfunction all(children, p5, schema) {\n var index = -1\n /** @type {Array.} */\n var result = []\n /** @type {P5Child} */\n var child\n\n if (children) {\n while (++index < children.length) {\n // @ts-ignore Assume child.\n child = one(children[index], schema)\n\n // @ts-ignore types are wrong.\n child.parentNode = p5\n\n result.push(child)\n }\n }\n\n return result\n}\n\n/**\n * Patch specific properties.\n *\n * @template {P5Node} T\n * @param {Node} node\n * @param {T} p5\n * @returns {T}\n */\nfunction patch(node, p5) {\n var position = node.position\n\n if (position && position.start && position.end) {\n // @ts-ignore Types are wrong.\n p5.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n endOffset: position.end.offset\n }\n }\n\n return p5\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'isindex',\n 'keygen',\n 'link',\n 'menuitem',\n 'meta',\n 'nextid',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {Omit} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit & {startOffset: number|undefined, endOffset: number|undefined}} P5Location\n * @typedef {import('parse5').ParserOptions} P5ParserOptions\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {import('../complex-types').Raw} Raw\n *\n * @typedef {Omit & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array} [passThrough]\n * List of custom hast node types to pass through (keep) in hast.\n * If the passed through nodes have children, those children are expected to\n * be hast and will be handled.\n *\n * @typedef HiddenTokenizer\n * @property {Array} __mixins\n * Way too simple, but works for us.\n * @property {HiddenPreprocessor} preprocessor\n * @property {(value: string) => void} write\n * @property {() => number} _consume\n * @property {Array} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array} tempBuff\n * @property {Function} _flushCodePointsConsumedAsCharacterReference\n * @property {string} lastStartTagName\n * @property {number} consumedAfterSnapshot\n * @property {boolean} active\n * @property {HiddenToken|undefined} currentCharacterToken\n * @property {HiddenToken|undefined} currentToken\n * @property {unknown} currentAttr\n * @property {Function} NAMED_CHARACTER_REFERENCE_STATE\n * @property {Function} NUMERIC_CHARACTER_REFERENCE_END_STATE\n *\n * @typedef {Record & {location: P5Location}} HiddenToken\n *\n * @typedef HiddenPreprocessor\n * @property {string|undefined} html\n * @property {number} pos\n * @property {number} lastGapPos\n * @property {number} lastCharPos\n * @property {Array} gapStack\n * @property {boolean} skipNextNewLine\n * @property {boolean} lastChunkWritten\n * @property {boolean} endOfChunkHit\n *\n * @typedef HiddenLocationTracker\n * @property {P5Location|undefined} currentAttrLocation\n * @property {P5Location} ctLoc\n * @property {HiddenPosTracker} posTracker\n *\n * @typedef HiddenPosTracker\n * @property {boolean} isEol\n * @property {number} lineStartPos\n * @property {number} droppedBufferSize\n * @property {number} offset\n * @property {number} col\n * @property {number} line\n */\n\n// @ts-expect-error: untyped.\nimport Parser from 'parse5/lib/parser/index.js'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst inTemplateMode = 'IN_TEMPLATE_MODE'\nconst dataState = 'DATA_STATE'\nconst characterToken = 'CHARACTER_TOKEN'\nconst startTagToken = 'START_TAG_TOKEN'\nconst endTagToken = 'END_TAG_TOKEN'\nconst commentToken = 'COMMENT_TOKEN'\nconst doctypeToken = 'DOCTYPE_TOKEN'\n\n/** @type {P5ParserOptions} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Given a hast tree and an optional vfile (for positional info), return a new\n * parsed-again hast tree.\n *\n * @param tree\n * Original hast tree.\n * @param file\n * Virtual file for positional info, optional.\n * @param options\n * Configuration.\n */\nexport const raw =\n /**\n * @type {(\n * ((tree: Node, file: VFile|undefined, options?: Options) => Node) &\n * ((tree: Node, options?: Options) => Node)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {VFile} [file]\n * @param {Options} [options]\n */\n function (tree, file, options) {\n let index = -1\n const parser = new Parser(parseOptions)\n const one = zwitch('type', {\n // @ts-expect-error: hush.\n handlers: {root, element, text, comment, doctype, raw: handleRaw},\n // @ts-expect-error: hush.\n unknown\n })\n /** @type {boolean|undefined} */\n let stitches\n /** @type {HiddenTokenizer|undefined} */\n let tokenizer\n /** @type {HiddenPreprocessor|undefined} */\n let preprocessor\n /** @type {HiddenPosTracker|undefined} */\n let posTracker\n /** @type {HiddenLocationTracker|undefined} */\n let locationTracker\n\n if (isOptions(file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n while (++index < options.passThrough.length) {\n // @ts-expect-error: hush.\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n const result = fromParse5(\n documentMode(tree) ? document() : fragment(),\n file\n )\n\n if (stitches) {\n visit(result, 'comment', (node, index, parent) => {\n const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n if (stitch.value.stitch && parent !== null && index !== null) {\n // @ts-expect-error: assume the stitch is allowed.\n parent.children[index] = stitch.value.stitch\n return index\n }\n })\n }\n\n // Unpack if possible and when not given a `root`.\n if (\n tree.type !== 'root' &&\n result.type === 'root' &&\n result.children.length === 1\n ) {\n return result.children[0]\n }\n\n return result\n\n /**\n * @returns {P5Fragment}\n */\n function fragment() {\n /** @type {P5Element} */\n const context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Element} */\n const mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Fragment} */\n const doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n /**\n * @returns {P5Document}\n */\n function document() {\n /** @type {P5Document} */\n const doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, undefined)\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n return doc\n }\n\n /**\n * @param {Array} nodes\n * @returns {void}\n */\n function all(nodes) {\n let index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n /**\n * @param {Root} node\n * @returns {void}\n */\n function root(node) {\n all(node.children)\n }\n\n /**\n * @param {Element} node\n * @returns {void}\n */\n function element(node) {\n resetTokenizer()\n parser._processToken(startTag(node), webNamespaces.html)\n\n all(node.children)\n\n if (!htmlVoidElements.includes(node.tagName)) {\n resetTokenizer()\n parser._processToken(endTag(node))\n }\n }\n\n /**\n * @param {Text} node\n * @returns {void}\n */\n function text(node) {\n resetTokenizer()\n parser._processToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Doctype} node\n * @returns {void}\n */\n function doctype(node) {\n resetTokenizer()\n parser._processToken({\n type: doctypeToken,\n name: 'html',\n forceQuirks: false,\n publicId: '',\n systemId: '',\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Comment|Stitch} node\n * @returns {void}\n */\n function comment(node) {\n resetTokenizer()\n parser._processToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Raw} node\n * @returns {void}\n */\n function handleRaw(node) {\n const start = pointStart(node)\n const line = start.line || 1\n const column = start.column || 1\n const offset = start.offset || 0\n\n /* c8 ignore next 4 */\n if (!preprocessor) throw new Error('Expected `preprocessor`')\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n if (!locationTracker) throw new Error('Expected `locationTracker`')\n\n // Reset preprocessor:\n // See: .\n preprocessor.html = undefined\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: .\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: .\n locationTracker.currentAttrLocation = undefined\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: .\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Character references hang, so if we ended there, we need to flush\n // those too.\n // We reset the preprocessor as if the document ends here.\n // Then one single call to the relevant state does the trick, parse5\n // consumes the whole token.\n if (\n tokenizer.state === 'NAMED_CHARACTER_REFERENCE_STATE' ||\n tokenizer.state === 'NUMERIC_CHARACTER_REFERENCE_END_STATE'\n ) {\n preprocessor.lastChunkWritten = true\n tokenizer[tokenizer.state](tokenizer._consume())\n }\n }\n\n /**\n * @param {Node} node\n */\n function stitch(node) {\n stitches = true\n\n /** @type {Node} */\n let clone\n\n // Recurse, because to somewhat handle `[]` (where `[]` denotes the\n // passed through node).\n if ('children' in node) {\n clone = {\n ...node,\n children: raw(\n {type: 'root', children: node.children},\n file,\n options\n // @ts-expect-error Assume a given parent yields a parent.\n ).children\n }\n } else {\n clone = {...node}\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({type: 'comment', value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n /* c8 ignore next 2 */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: .\n const token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processToken(token)\n }\n\n // Reset tokenizer:\n // See: .\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = undefined\n tokenizer.currentToken = undefined\n tokenizer.currentAttr = undefined\n }\n }\n )\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction startTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location\n }\n}\n\n/**\n * @param {Element} node\n * @returns {Array}\n */\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties,\n children: []\n // @ts-expect-error Assume element.\n }).attrs\n}\n\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction endTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location\n }\n}\n\n/**\n * @param {Node} node\n */\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\n/**\n * @param {Node} node\n * @returns {boolean}\n */\nfunction documentMode(node) {\n const head = node.type === 'root' ? node.children[0] : node\n return Boolean(\n head &&\n (head.type === 'doctype' ||\n (head.type === 'element' && head.tagName === 'html'))\n )\n}\n\n/**\n * @param {Node|Stitch} node\n * @returns {P5Location}\n */\nfunction createParse5Location(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n\n/**\n * @param {VFile|Options|undefined} value\n * @return {value is Options}\n */\nfunction isOptions(value) {\n return Boolean(value && !('message' in value && 'messages' in value))\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} Options\n * @typedef {import('hast-util-raw')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Plugin to parse the tree again (and raw nodes).\n * Keeping positional info OK. 🙌\n *\n * @type {import('unified').Plugin<[Options?] | Array, Root>}\n */\nexport default function rehypeRaw(options = {}) {\n return (tree, file) => {\n // Assume that when a root was given, it’s also returned.\n const result = /** @type {Root} */ (raw(tree, file, options))\n return result\n }\n}\n","import { Element, Comment, Literal, ElementContent, RootContent, Properties } from 'hast';\nimport { RehypeAttrsOptions } from './';\n\nexport const getURLParameters = (url: string): Record =>\n(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(\n (a: Record, v: string) => (\n (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a\n ),\n {},\n);\n\nexport const prevChild = (data: Literal[] = [], index: number): Comment | undefined => {\n let i = index;\n while (i > -1) {\n i--;\n if (!data[i]) return\n if ((data[i] && data[i].value && (data[i].value as string).replace(/(\\n|\\s)/g, '') !== '') || data[i].type !== 'text') {\n if (!/^rehype:/.test(data[i].value as string) || (data[i].type as string) !== 'comment') return;\n return data[i] as unknown as Comment;\n }\n }\n return;\n}\n\nexport const nextChild = (data: RootContent[] | ElementContent[] = [], index: number, tagName?: string): ElementContent | undefined => {\n let i = index;\n while (i < data.length) {\n i++;\n if (tagName) {\n const element = data[i] as Literal & Element;\n if (element && element.value && (element.value as string).replace(/(\\n|\\s)/g, '') !== '' || data[i] && (data[i].type as string) === 'element') {\n return element.tagName === tagName ? element : undefined\n }\n } else {\n const element = data[i] as ElementContent & Literal;\n if (!element || (element.type !== 'text' && (element.type as string) !== 'comment') || (element.type === 'text' && (element.value as string).replace(/(\\n|\\s)/g, '') !== '')) return;\n if ((element.type as string) === 'comment') {\n if (!/^rehype:/.test(element.value as string)) return;\n const nextNode = nextChild(data, i, 'pre')\n if (nextNode) return;\n return element;\n }\n }\n }\n return\n}\n\n/**\n * 获取代码注视的位置\n * @param data 数据\n * @param index 当前数据所在的位置\n * @returns 返回 当前参数数据 Object,`{}`\n */\nexport const getCommentObject = ({ value = '' }: Comment): Properties => {\n const param = getURLParameters(value.replace(/^rehype:/, ''));\n Object.keys(param).forEach((keyName: string) => {\n if (param[keyName] === 'true') {\n param[keyName] = true;\n }\n if (param[keyName] === 'false') {\n param[keyName] = false;\n }\n if (typeof param[keyName] === 'string' && !/^0/.test(param[keyName] as string) && !isNaN(+param[keyName])) {\n param[keyName] = +param[keyName];\n }\n })\n return param;\n}\n\nexport type DataConfig = {\n 'data-config': Properties\n}\n\nexport const propertiesHandle = (defaultAttrs?: Properties | null, attrs?: Properties, type?: RehypeAttrsOptions['properties']): Properties | DataConfig => {\n if (type === 'string') {\n return { ...defaultAttrs, 'data-config': JSON.stringify({ ...attrs, rehyp: true })}\n } else if (type === 'attr') {\n return { ...defaultAttrs, ...attrs}\n }\n return { ...defaultAttrs, 'data-config': { ...attrs, rehyp: true }}\n}","import { Plugin } from 'unified';\nimport { Root, Element, Comment, Properties, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { propertiesHandle, nextChild, prevChild, getCommentObject } from './utils';\n\nexport type RehypeAttrsOptions = {\n /**\n * ## `data`\n * \n * ```markdown\n * text\n * \n * ```\n * \n * ⇣⇣⇣⇣⇣⇣\n * \n * ```html\n *

text

\n * ```\n * \n * ## `string`\n * \n * ```markdown\n * text\n * \n * ```\n * \n * ⇣⇣⇣⇣⇣⇣\n * \n * ```html\n *

text

\n * ```\n * \n * ## attr\n * \n * ```markdown\n * text\n * \n * ```\n * ⇣⇣⇣⇣⇣⇣\n * ```html\n *

text

\n * ```\n */\n properties: 'data' | 'string' | 'attr';\n}\n\nconst defaultOptions: RehypeAttrsOptions = {\n properties: 'data',\n}\n\nconst rehypeAttrs: Plugin<[RehypeAttrsOptions?], Root> = (options) => {\n const opts = { ...defaultOptions, ...options }\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'pre' && node && Array.isArray(node.children) && parent && Array.isArray(parent.children) && parent.children.length > 1) {\n const firstChild = node.children[0] as Element;\n if (firstChild && firstChild.tagName === 'code' && typeof index === 'number') {\n const child = prevChild(parent.children as Literal[], index);\n if (child) {\n const attr = getCommentObject(child);\n if (Object.keys(attr).length > 0) {\n node.properties = { ...node.properties, ...{ 'data-type': 'rehyp' } }\n firstChild.properties = propertiesHandle(firstChild.properties, attr, opts.properties) as Properties\n }\n }\n }\n }\n\n if (/^(em|strong|b|a|i|p|pre|kbd|blockquote|h(1|2|3|4|5|6)|code|table|img|del|ul|ol)$/.test(node.tagName) && parent && Array.isArray(parent.children) && typeof index === 'number') {\n const child = nextChild(parent.children, index)\n if (child) {\n const attr = getCommentObject(child as Comment)\n if (Object.keys(attr).length > 0) {\n node.properties = propertiesHandle(node.properties, attr, opts.properties) as Properties\n }\n }\n }\n });\n }\n}\n\n\nexport default rehypeAttrs\n","import { Plugin } from 'unified';\nimport { Root, RootContent } from 'hast';\nimport { visit } from 'unist-util-visit';\n\nexport type RehypeIgnoreOptions = {\n /**\n * Character to use for opening delimiter, by default `rehype:ignore:start`\n */\n openDelimiter?: string;\n /**\n * Character to use for closing delimiter, by default `rehype:ignore:end`\n */\n closeDelimiter?: string;\n}\n\nconst rehypeIgnore: Plugin<[RehypeIgnoreOptions?], Root> = (options = {}) => {\n const { openDelimiter = 'rehype:ignore:start', closeDelimiter = 'rehype:ignore:end' } = options;\n return (tree) => {\n visit(tree, (node: Root | RootContent, index, parent) => {\n if (node.type === 'element' || node.type === 'root') {\n // const start = node.children.findIndex((item) => item.type === 'comment' && item.value === openDelimiter);\n // const end = node.children.findIndex((item) => item.type === 'comment' && item.value === closeDelimiter);\n // if (start > -1 && end > -1) {\n // node.children = node.children.filter((_, idx) => idx < start || idx > end);\n // }\n let start = false;\n node.children = node.children.filter((item) => {\n if (item.type === 'comment' && item.value.trim() === openDelimiter) {\n start = true;\n return false\n }\n if (item.type === 'comment' && item.value.trim() === closeDelimiter) {\n start = false;\n return false\n }\n \n return !start;\n })\n }\n });\n }\n}\n\nexport default rehypeIgnore;\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * Options for unist util filter\n *\n * @typedef {Object} FilterOptions\n * @property {boolean} [cascade=true] Whether to drop parent nodes if they had children, but all their children were filtered out.\n */\n\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create a new tree consisting of copies of all nodes that pass test.\n * The tree is walked in preorder (NLR), visiting the node itself, then its head, etc.\n *\n * @param tree Tree to filter.\n * @param options Configuration (optional).\n * @param test is-compatible test (such as a type).\n * @returns Given `tree` or `null` if it didn’t pass `test`.\n */\nexport const filter =\n /**\n * @type {(\n * ((node: Tree, options: FilterOptions, test: Check) => import('./complex-types').Matches) &\n * ((node: Tree, test: Check) => import('./complex-types').Matches) &\n * ((node: Tree, options?: FilterOptions) => Tree)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {FilterOptions} options\n * @param {Test} test\n * @returns {Node|null}\n */\n function (tree, options, test) {\n const is = convert(test || options)\n const cascade =\n options.cascade === undefined || options.cascade === null\n ? true\n : options.cascade\n\n return preorder(tree)\n\n /**\n * @param {Node} node\n * @param {number|undefined} [index]\n * @param {Parent|undefined} [parent]\n * @returns {Node|null}\n */\n function preorder(node, index, parent) {\n /** @type {Array.} */\n const children = []\n /** @type {number} */\n let childIndex\n /** @type {Node} */\n let result\n /** @type {string} */\n let key\n\n if (!is(node, index, parent)) return null\n\n // @ts-expect-error: Looks like a parent.\n if (node.children) {\n childIndex = -1\n\n // @ts-expect-error Looks like a parent.\n while (++childIndex < node.children.length) {\n // @ts-expect-error Looks like a parent.\n result = preorder(node.children[childIndex], childIndex, node)\n\n if (result) {\n children.push(result)\n }\n }\n\n // @ts-expect-error Looks like a parent.\n if (cascade && node.children.length > 0 && children.length === 0)\n return null\n }\n\n // Create a shallow clone, using the new children.\n /** @type {typeof node} */\n // @ts-expect-error all the fields will be copied over.\n const next = {}\n\n for (key in node) {\n if (own.call(node, key)) {\n // @ts-expect-error: Looks like a record.\n next[key] = key === 'children' ? children : node[key]\n }\n }\n\n return next\n }\n }\n )\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef Options options\n * Configuration.\n * @property {boolean} [showLineNumbers]\n * Set `showLineNumbers` to `true` to always display line number\n * @property {boolean} [ignoreMissing]\n * Set `ignoreMissing` to `true` to ignore unsupported languages and line highlighting when no language is specified\n */\n\nimport { visit } from 'unist-util-visit'\nimport { toString } from 'hast-util-to-string'\nimport { filter } from 'unist-util-filter'\nimport rangeParser from 'parse-numeric-range'\n\n/**\n * @param {Element} node\n * @return {string|null}\n */\nconst getLanguage = (node) => {\n const className = node.properties.className\n //@ts-ignore\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase()\n }\n }\n return null\n}\n\n/**\n * Create a closure that determines if we have to highlight the given index\n *\n * @param {string} meta\n * @return { (index:number) => boolean }\n */\nconst calculateLinesToHighlight = (meta) => {\n const RE = /{([\\d,-]+)}/\n // Remove space between {} e.g. {1, 3}\n const parsedMeta = meta\n .split(',')\n .map((str) => str.trim())\n .join()\n if (RE.test(parsedMeta)) {\n const strlineNumbers = RE.exec(parsedMeta)[1]\n const lineNumbers = rangeParser(strlineNumbers)\n return (index) => lineNumbers.includes(index + 1)\n } else {\n return () => false\n }\n}\n\n/**\n * Check if we want to start the line numbering from a given number or 1\n * showLineNumbers=5, will start the numbering from 5\n * @param {string} meta\n * @returns {number}\n */\nconst calculateStartingLine = (meta) => {\n const RE = /showLineNumbers=(?\\d+)/i\n // pick the line number after = using a named capturing group\n if (RE.test(meta)) {\n const {\n groups: { lines },\n } = RE.exec(meta)\n return Number(lines)\n }\n return 1\n}\n\n/**\n * Create container AST for node lines\n *\n * @param {number} number\n * @return {Element[]}\n */\nconst createLineNodes = (number) => {\n const a = new Array(number)\n for (let i = 0; i < number; i++) {\n a[i] = {\n type: 'element',\n tagName: 'span',\n properties: { className: [] },\n children: [],\n }\n }\n return a\n}\n\n/**\n * Split multiline text nodes into individual nodes with positioning\n * Add a node start and end line position information for each text node\n *\n * @return { (ast:Element['children']) => Element['children'] }\n *\n */\nconst addNodePositionClosure = () => {\n let startLineNum = 1\n /**\n * @param {Element['children']} ast\n * @return {Element['children']}\n */\n const addNodePosition = (ast) => {\n return ast.reduce((result, node) => {\n if (node.type === 'text') {\n const value = /** @type {string} */ (node.value)\n const numLines = (value.match(/\\n/g) || '').length\n if (numLines === 0) {\n node.position = {\n // column: 1 is needed to avoid error with @next/mdx\n // https://github.com/timlrx/rehype-prism-plus/issues/44\n start: { line: startLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n result.push(node)\n } else {\n const lines = value.split('\\n')\n for (const [i, line] of lines.entries()) {\n result.push({\n type: 'text',\n value: i === lines.length - 1 ? line : line + '\\n',\n position: {\n start: { line: startLineNum + i, column: 1 },\n end: { line: startLineNum + i, column: 1 },\n },\n })\n }\n }\n startLineNum = startLineNum + numLines\n\n return result\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'children')) {\n const initialLineNum = startLineNum\n // @ts-ignore\n node.children = addNodePosition(node.children, startLineNum)\n result.push(node)\n node.position = {\n start: { line: initialLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n return result\n }\n\n result.push(node)\n return result\n }, [])\n }\n return addNodePosition\n}\n\n/**\n * Rehype prism plugin generator that highlights code blocks with refractor (prismjs)\n *\n * Pass in your own refractor object with the required languages registered:\n * https://github.com/wooorm/refractor#refractorregistersyntax\n *\n * @param {import('refractor/lib/core').Refractor} refractor\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypePrismGenerator = (refractor) => {\n return (options = {}) => {\n return (tree) => {\n visit(tree, 'element', visitor)\n }\n\n /**\n * @param {Element} node\n * @param {number} index\n * @param {Element} parent\n */\n function visitor(node, index, parent) {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return\n }\n\n let meta = node.data && node.data.meta ? /** @type {string} */ (node.data.meta) : ''\n // Coerce className to array\n if (node.properties.className) {\n if (typeof node.properties.className === 'boolean') {\n node.properties.className = []\n } else if (!Array.isArray(node.properties.className)) {\n node.properties.className = [node.properties.className]\n }\n } else {\n node.properties.className = []\n }\n node.properties.className.push('code-highlight')\n const lang = getLanguage(node)\n\n /** @type {Element} */\n let refractorRoot\n\n // Syntax highlight\n if (lang) {\n try {\n let rootLang\n if (lang?.includes('diff-')){\n rootLang=lang.split('-')[1]\n } else{\n rootLang=lang\n }\n // @ts-ignore\n refractorRoot = refractor.highlight(toString(node), rootLang)\n // @ts-ignore className is already an array\n parent.properties.className = (parent.properties.className || []).concat(\n 'language-' + rootLang\n )\n } catch (err) {\n if (options.ignoreMissing && /Unknown language/.test(err.message)) {\n refractorRoot = node\n } else {\n throw err\n }\n }\n } else {\n refractorRoot = node\n }\n\n refractorRoot.children = addNodePositionClosure()(refractorRoot.children)\n\n // Add position info to root\n if (refractorRoot.children.length > 0) {\n refractorRoot.position = {\n start: { line: refractorRoot.children[0].position.start.line, column: 0 },\n end: {\n line: refractorRoot.children[refractorRoot.children.length - 1].position.end.line,\n column: 0,\n },\n }\n } else {\n refractorRoot.position = {\n start: { line: 0, column: 0 },\n end: { line: 0, column: 0 },\n }\n }\n\n const shouldHighlightLine = calculateLinesToHighlight(meta)\n const startingLineNumber = calculateStartingLine(meta)\n const codeLineArray = createLineNodes(refractorRoot.position.end.line)\n\n const falseShowLineNumbersStr = [\n 'showlinenumbers=false',\n 'showlinenumbers=\"false\"',\n 'showlinenumbers={false}',\n ]\n for (const [i, line] of codeLineArray.entries()) {\n // Default class name for each line\n line.properties.className = ['code-line']\n\n // Syntax highlight\n const treeExtract = filter(\n refractorRoot,\n (node) => node.position.start.line <= i + 1 && node.position.end.line >= i + 1\n )\n line.children = treeExtract.children\n\n // Line number\n if (\n (meta.toLowerCase().includes('showLineNumbers'.toLowerCase()) ||\n options.showLineNumbers) &&\n !falseShowLineNumbersStr.some((str) => meta.toLowerCase().includes(str))\n ) {\n line.properties.line = [(i + startingLineNumber).toString()]\n line.properties.className.push('line-number')\n }\n\n // Line highlight\n if (shouldHighlightLine(i)) {\n line.properties.className.push('highlight-line')\n }\n\n // Diff classes\n if ((lang === 'diff' || lang?.includes('diff-')) && toString(line).substring(0, 1) === '-') {\n line.properties.className.push('deleted')\n } else if ((lang === 'diff' || lang?.includes('diff-')) && toString(line).substring(0, 1) === '+') {\n line.properties.className.push('inserted')\n }\n }\n\n // Remove possible trailing line when splitting by \\n which results in empty array\n if (\n codeLineArray.length > 0 &&\n toString(codeLineArray[codeLineArray.length - 1]).trim() === ''\n ) {\n codeLineArray.pop()\n }\n\n node.children = codeLineArray\n }\n }\n}\n\nexport default rehypePrismGenerator\n","import { refractor as refractorAll } from 'refractor/lib/all.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * This supports all the languages and should be used on the server side.\n *\n * Consider using rehypePrismCommon or rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismAll = rehypePrismGenerator(refractorAll)\n\nexport default rehypePrismAll\n","import { refractor as refractorCommon } from 'refractor/lib/common.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * Supported languages: https://github.com/wooorm/refractor#data\n *\n * Consider using rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismCommon = rehypePrismGenerator(refractorCommon)\n\nexport default rehypePrismCommon\n","const rtlRange = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst ltrRange =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n/* eslint-disable no-misleading-character-class */\nconst rtl = new RegExp('^[^' + ltrRange + ']*[' + rtlRange + ']')\nconst ltr = new RegExp('^[^' + rtlRange + ']*[' + ltrRange + ']')\n/* eslint-enable no-misleading-character-class */\n\n/**\n * Detect the direction of text: left-to-right, right-to-left, or neutral\n *\n * @param {string} value\n * @returns {'rtl'|'ltr'|'neutral'}\n */\nexport function direction(value) {\n const source = String(value || '')\n return rtl.test(source) ? 'rtl' : ltr.test(source) ? 'ltr' : 'neutral'\n}\n","/**\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('hast-util-is-element').AssertPredicate} IsElement\n */\n\nimport {convertElement} from 'hast-util-is-element'\n\n/**\n * @param {Node} node\n * @returns {node is Parent}\n */\nexport function parent(node) {\n // @ts-expect-error: hush.\n return Array.isArray(node.children)\n}\n\n/** @type {IsElement} */\n// @ts-expect-error it works.\nexport const element = convertElement()\n","/**\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').HastNode} HastNode\n * @typedef {import('./types.js').ElementChild} ElementChild\n * @typedef {import('./types.js').Direction} Direction\n * @typedef {import('unist-util-visit/complex-types').Visitor} Visitor\n */\n\nimport {direction} from 'direction'\nimport {isElement} from 'hast-util-is-element'\nimport {toString} from 'hast-util-to-string'\nimport {svg} from 'property-information'\nimport {visit, EXIT, SKIP} from 'unist-util-visit'\nimport {element} from './util.js'\n\n/**\n * @param {SelectState} state\n * @param {HastNode} node\n * @returns {() => void}\n */\n// eslint-disable-next-line complexity\nexport function enterState(state, node) {\n const schema = state.schema\n const language = state.language\n const currentDirection = state.direction\n const editableOrEditingHost = state.editableOrEditingHost\n /** @type {Direction|undefined} */\n let dirInferred\n /** @type {boolean|undefined} */\n let found\n\n if (element(node) && node.properties) {\n const lang = node.properties.xmlLang || node.properties.lang\n const type = node.properties.type || 'text'\n const dir = dirProperty(node)\n\n if (lang !== undefined && lang !== null) {\n state.language = String(lang)\n found = true\n }\n\n if (schema && schema.space === 'html') {\n if (node.properties.contentEditable === 'true') {\n state.editableOrEditingHost = true\n found = true\n }\n\n if (isElement(node, 'svg')) {\n state.schema = svg\n found = true\n }\n\n // See: .\n // Explicit `[dir=rtl]`.\n if (dir === 'rtl') {\n dirInferred = dir\n } else if (\n // Explicit `[dir=ltr]`.\n dir === 'ltr' ||\n // HTML with an invalid or no `[dir]`.\n (dir !== 'auto' && isElement(node, 'html')) ||\n // `input[type=tel]` with an invalid or no `[dir]`.\n (dir !== 'auto' && isElement(node, 'input') && type === 'tel')\n ) {\n dirInferred = 'ltr'\n // `[dir=auto]` or `bdi` with an invalid or no `[dir]`.\n } else if (dir === 'auto' || isElement(node, 'bdi')) {\n if (isElement(node, 'textarea')) {\n // Check contents of `