o ]LbM @s ddlmZddlZddlmZddZddZd d ZgZe d d e d De dd e d dDe dded<ded<ded<ded<ded<ded<ded<eddZ de d <d!e d"<e d#d e d$d%Dd&d'Z ejr}d(Znd)Zd*d+ZdS),)absolute_importN)pycompatcCs&z|dWdStyYdSw)NasciiTF)decodeUnicodeDecodeErrorsr ;/usr/lib/python3/dist-packages/mercurial/pure/charencode.py isasciistrs   r cC|d|S)zhconvert a string to lowercase if ASCII Raises UnicodeDecodeError if non-ASCII characters are found.r)rlowerrr r r asciilower rcCr )zhconvert a string to uppercase if ASCII Raises UnicodeDecodeError if non-ASCII characters are found.r)rupperrr r r asciiupperrrccs|]}d|VqdS)\u%04xNr .0xr r r (r cc|]}t|VqdSNrbytechrrr r r r)s\u007fs\t s\n s\""s\\\s\bs\f s\r s\u003c<s\u003e>ccrrrrr r r r5rcs@|rtntzdfddt|DWStytw)zConvert a UTF-8 byte string to JSON-escaped form (fast path) Raises ValueError if non-ASCII characters have to be escaped. c3s|]}|VqdSrr rjmr r rBrz#jsonescapeu8fast..)_paranoidjsonmap_jsonmapjoin bytearray IndexError ValueError)u8charsparanoidr r,r jsonescapeu8fast8s r6 surrogatepassstrictcsP|rtnt|dtdt}td|}|ddfdd|DS)zConvert a UTF-8 byte string to JSON-escaped form (slow path) Escapes all non-ASCII characters no matter if paranoid is False. zutf-8zutf-16Hrr+c3s(|]}|dkr |nd|VqdS)r)rNr rr,r r rZs&z'jsonescapeu8fallback..)r.r/r _utf8strictencodearraypopr0)r4r5u16bu16codesr r,r jsonescapeu8fallbackMs  r@) __future__rr<rr rrr/extendrangeappendr.r6ispy3r:r@r r r r s4