ó
    Ñ]j=Q  ã                  óð  • S SK Jr  S SKJrJr  S SKrS SKJrJrJ	r	J
r
  S SKrS SKJr  S SKJr  S SKJr  S SKrS SKJrJr  \(       a  S S	KJr  S S
KJrJr  SS jr\
    S           SS jj5       r\
    S           SS jj5       r    S           SS jjr          SS jrSS jr S     SS jjr SS jr!\" S5             S                  S!S jj5       r"g)"é    )Úannotations)ÚabcÚdefaultdictN)ÚTYPE_CHECKINGÚAnyÚDefaultDictÚoverload©Úconvert_json_to_lines)Ú
set_module)Ú	is_scalar)Ú	DataFrameÚSeries)ÚIterable)ÚIgnoreRaiseÚScalarc                óJ   • U S   S:X  d  U S   S:X  a  U $ U SS n [        U 5      $ )zB
Helper function that converts JSON lists to line delimited JSON.
r   Ú[éÿÿÿÿÚ]é   r
   )Úss    ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/io/json/_normalize.pyÚconvert_to_line_delimitsr   '   s4   € ð ˆQ‰4�3‹;˜1˜R™5 C›<ØˆØ	ˆ!ˆBˆ€Aä  Ó#Ð#ó    c                ó   • g ©N© ©ÚdsÚprefixÚsepÚlevelÚ	max_levels        r   Únested_to_recordr%   4   s   € ð r   c                ó   • g r   r   r   s        r   r%   r%   >   s   € ð r   c                ó   • Sn[        U [        5      (       a  U /n Sn/ nU  HÝ  n[        R                  " U5      nUR	                  5        HŸ  u  pš[        U	[
        5      (       d  [        U	5      n	US:X  a  U	nOX-   U	-   n[        U
[        5      (       a  Ub"  X4:¼  a  US:w  a  UR                  U	5      n
X¨U'   Mo  UR                  U	5      n
UR                  [        X«X#S-   U5      5        M¡     UR                  U5        Mß     U(       a  US   $ U$ )a0  
A simplified json_normalize

Converts a nested dict into a flat dict ("record"), unlike json_normalize,
it does not attempt to extract a subset of the data.

Parameters
----------
ds : dict or list of dicts
prefix: the prefix, optional, default: ""
sep : str, default '.'
    Nested records will generate names separated by sep,
    e.g., for sep='.', { 'foo' : { 'bar' : 0 } } -> foo.bar
level: int, optional, default: 0
    The number of levels in the json string.

max_level: int, optional, default: None
    The max depth to normalize.

Returns
-------
d - dict or list of dicts, matching `ds`

Examples
--------
>>> nested_to_record(
...     dict(flat1=1, dict1=dict(c=1, d=2), nested=dict(e=dict(c=1, d=2), d=2))
... )
{'flat1': 1, 'dict1.c': 1, 'dict1.d': 2, 'nested.e.c': 1, 'nested.e.d': 2, 'nested.d': 2}
FTr   r   )
Ú
isinstanceÚdictÚcopyÚdeepcopyÚitemsÚstrÚpopÚupdater%   Úappend)r    r!   r"   r#   r$   Ú	singletonÚnew_dsÚdÚnew_dÚkÚvÚnewkeys               r   r%   r%   H   s  € ðX €IÜ�"”d×ÑØˆTˆØˆ	Ø€FÛˆÜ—’˜aÓ ˆØ—G‘G–I‰DˆAä˜a¤×%Ñ%Ü˜“F�Ø˜‹zØ‘à™¨Ñ)�ô ˜a¤×&Ñ&ØÑ%¨%Ó*<à˜A“:ØŸ	™	 !›�AØ$%˜&‘MÙà—	‘	˜!“ˆAØ�L‰LÔ)¨!°SÀ!¹)ÀYÓOÖPñ- ð. 	�‰�eÖñ3 ö6 Ø�a‰yÐØ€Mr   c                óÆ   • [        U [        5      (       aG  U R                  5        H1  u  pEU U U 3nU(       d  UR                  U5      n[	        UUUUS9  M3     U$ XU'   U$ )a÷  
Main recursive function
Designed for the most basic use case of pd.json_normalize(data)
intended as a performance improvement, see #15621

Parameters
----------
data : Any
    Type dependent on types contained within nested Json
key_string : str
    New key (with separator(s) in) for data
normalized_dict : dict
    The new normalized/flattened Json dict
separator : str, default '.'
    Nested records will generate names separated by sep,
    e.g., for sep='.', { 'foo' : { 'bar' : 0 } } -> foo.bar
©ÚdataÚ
key_stringÚnormalized_dictÚ	separator)r(   r)   r,   ÚremoveprefixÚ_normalize_json)r:   r;   r<   r=   ÚkeyÚvalueÚnew_keys          r   r?   r?   ™   st   € ô. �$œ×ÑØŸ*™*ž,‰JˆCØ#˜ Y K°¨uÐ5ˆGæØ!×.Ñ.¨yÓ9�äØØ"Ø /Ø#ô	ñ 'ð Ðð '+˜
Ñ#ØÐr   c           
     ó(  • U R                  5        VVs0 s H  u  p#[        U[        5      (       a  M  X#_M      nnn[        U R                  5        VVs0 s H  u  p#[        U[        5      (       d  M  X#_M      snnS0 US9n0 UEUE$ s  snnf s  snnf )aK  
Order the top level keys and then recursively go to depth

Parameters
----------
data : dict or list of dicts
separator : str, default '.'
    Nested records will generate names separated by sep,
    e.g., for sep='.', { 'foo' : { 'bar' : 0 } } -> foo.bar

Returns
-------
dict or list of dicts, matching `normalized_json_object`
Ú r9   )r,   r(   r)   r?   )r:   r=   r5   r6   Ú	top_dict_Únested_dict_s         r   Ú_normalize_json_orderedrG   Â   s‚   € ð #'§*¡*¤,ÔJ¢,™$˜!´jÀÄD×6I“�’¡,€IÑJÜ"Ø#Ÿz™zœ|ÔCš|‘t�q¬z¸!¼T×/B‹dˆaŠd™|ÒCØØØñ	€Lð )ˆiÐ(˜<Ð(Ð(ùó KùãCs   ”B³BÁB
Á3B
c                ó´   • 0 n[        U [        5      (       a  [        XS9nU$ [        U [        5      (       a  U  Vs/ s H  n[	        X1S9PM     nnU$ U$ s  snf )a1  
An optimized basic json_normalize

Converts a nested dict into a flat dict ("record"), unlike
json_normalize and nested_to_record it doesn't do anything clever.
But for the most basic use cases it enhances performance.
E.g. pd.json_normalize(data)

Parameters
----------
ds : dict or list of dicts
sep : str, default '.'
    Nested records will generate names separated by sep,
    e.g., for sep='.', { 'foo' : { 'bar' : 0 } } -> foo.bar

Returns
-------
frame : DataFrame
d - dict or list of dicts, matching `normalized_json_object`

Examples
--------
>>> _simple_json_normalize(
...     {
...         "flat1": 1,
...         "dict1": {"c": 1, "d": 2},
...         "nested": {"e": {"c": 1, "d": 2}, "d": 2},
...     }
... )
{'flat1': 1, 'dict1.c': 1, 'dict1.d': 2, 'nested.e.c': 1, 'nested.e.d': 2, 'nested.d': 2}

)r:   r=   ©r"   )r(   r)   rG   ÚlistÚ_simple_json_normalize)r    r"   Únormalized_json_objectÚrowÚnormalized_json_lists        r   rK   rK   Û   si   € ðV  Ðä�"”d×ÑÜ!8¸bÑ!PÐð "Ð!ô 
�Bœ×	Ñ	ÙPRÓSÒPRÈÔ 6°sÔ DÑPRÐÐSØ#Ð#Ø!Ð!ùò  Ts   ¼Ac                ór  • U c  g[        U [        5      (       a  gU  H—  n[        U[        5      (       aE  U H=  n[        U[        5      (       a  M  [        S[	        U5      R
                   SU< 35      e   M]  [        U[        5      (       a  Mt  [        S[	        U5      R
                   SU< 35      e   g)a  
Validate that meta parameter contains only strings or lists of strings.
Parameters
----------
meta : str or list of str or list of list of str or None
    The meta parameter to validate.
Raises
------
TypeError
    If meta contains elements that are not strings or lists of strings.
Nz9All elements in nested meta paths must be strings. Found z: zBAll elements in 'meta' must be strings or lists of strings. Found )r(   r-   rJ   Ú	TypeErrorÚtypeÚ__name__)ÚmetaÚitemÚsubitems      r   Ú_validate_metarV     s´   € ð �|ØÜ�$œ×ÑØÛˆÜ�dœD×!Ñ!Û�Ü! '¬3×/Ó/Ü#ð!Ü!% g£×!7Ñ!7Ð 8¸¸7¹+ðGóð ó  ô ˜D¤#×&Ó&ÜðÜ˜d›×,Ñ,Ð-¨R°©xð9óð ò r   Úpandasc                óÆ  ^^^^^^^^^^^^• [        U5         S       SU4S jjjmSU4S jjm[        U [        5      (       a  U R                  nOSn[        U [        5      (       a  U (       d
  [        5       $ [        U [        5      (       a  U /n OÃ[        U [        R                  5      (       až  [        U [        5      (       d‰  [	        U 5      n [        U 5       Hn  u  pš[        U
[        5      (       a  M  [        U
5      (       a!  [        R                  " U
5      (       a  0 X	'   MM  S[        U
5      R                   3n[!        U5      e   O["        eUc  Uc  Uc  Tc  Tc  [        [%        U TS9US9$ UcC  ['        S U  5       5      (       a  [)        U TTS9n [        XS9nTb  UR+                  U4S	 jS
9nU$ [        U[        5      (       d  U/nUc  / nO[        U[        5      (       d  U/nU Vs/ s H  n[        U[        5      (       a  UOU/PM     snm/ m/ m[-        [        5      mT Vs/ s H  nTR/                  U5      PM     snmSSUUUUUUUUUU4
S jjjmT" X0 SS9  [        T5      nTb  UR+                  U4S jS
9nTR1                  5        H™  u  nnUb  X?-   nXü;   a  [3        SU S35      e[4        R6                  " U[8        S9nUR:                  S:”  a<  [4        R<                  " [?        U5      4[8        S9n[        U5       H
  u  pžUUU	'   M     URA                  T5      XÏ'   M›     Ub  URA                  T5      Ul        U$ s  snf s  snf )aú  
Normalize semi-structured JSON data into a flat table.

This method is designed to transform semi-structured JSON data, such as nested
dictionaries or lists, into a flat table. This is particularly useful when
handling JSON-like data structures that contain deeply nested fields.

Parameters
----------
data : dict, list of dicts, or Series of dicts
    Unserialized JSON objects.
record_path : str or list of str, default None
    Path in each object to list of records. If not passed, data will be
    assumed to be an array of records.
meta : list of paths (str or list of str), default None
    Fields to use as metadata for each record in resulting table.
meta_prefix : str, default None
    String to prefix records with dotted path, e.g. foo.bar.field if
    meta is ['foo', 'bar'].
record_prefix : str, default None
    String to prefix records with dotted path, e.g. foo.bar.field if
    path to records is ['foo', 'bar'].
errors : {'raise', 'ignore'}, default 'raise'
    Configures error handling.

    * 'ignore' : will ignore KeyError if keys listed in meta are not
      always present.
    * 'raise' : will raise KeyError if keys listed in meta are not
      always present.
sep : str, default '.'
    Nested records will generate names separated by sep.
    e.g., for sep='.', {'foo': {'bar': 0}} -> foo.bar.
max_level : int, default None
    Max number of levels(depth of dict) to normalize.
    if None, normalizes all levels.

Returns
-------
DataFrame
    The normalized data, represented as a pandas DataFrame.

See Also
--------
DataFrame : Two-dimensional, size-mutable, potentially heterogeneous tabular data.
Series : One-dimensional ndarray with axis labels (including time series).

Examples
--------
>>> data = [
...     {"id": 1, "name": {"first": "Coleen", "last": "Volk"}},
...     {"name": {"given": "Mark", "family": "Regner"}},
...     {"id": 2, "name": "Faye Raker"},
... ]
>>> pd.json_normalize(data)
    id name.first name.last name.given name.family        name
0  1.0     Coleen      Volk        NaN         NaN         NaN
1  NaN        NaN       NaN       Mark      Regner         NaN
2  2.0        NaN       NaN        NaN         NaN  Faye Raker

>>> data = [
...     {
...         "id": 1,
...         "name": "Cole Volk",
...         "fitness": {"height": 130, "weight": 60},
...     },
...     {"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}},
...     {
...         "id": 2,
...         "name": "Faye Raker",
...         "fitness": {"height": 130, "weight": 60},
...     },
... ]
>>> pd.json_normalize(data, max_level=0)
    id        name                        fitness
0  1.0   Cole Volk  {'height': 130, 'weight': 60}
1  NaN    Mark Reg  {'height': 130, 'weight': 60}
2  2.0  Faye Raker  {'height': 130, 'weight': 60}

Normalizes nested data up to level 1.

>>> data = [
...     {
...         "id": 1,
...         "name": "Cole Volk",
...         "fitness": {"height": 130, "weight": 60},
...     },
...     {"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}},
...     {
...         "id": 2,
...         "name": "Faye Raker",
...         "fitness": {"height": 130, "weight": 60},
...     },
... ]
>>> pd.json_normalize(data, max_level=1)
    id        name  fitness.height  fitness.weight
0  1.0   Cole Volk             130              60
1  NaN    Mark Reg             130              60
2  2.0  Faye Raker             130              60

>>> data = [
...     {
...         "id": 1,
...         "name": "Cole Volk",
...         "fitness": {"height": 130, "weight": 60},
...     },
...     {"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}},
...     {
...         "id": 2,
...         "name": "Faye Raker",
...         "fitness": {"height": 130, "weight": 60},
...     },
... ]
>>> series = pd.Series(data, index=pd.Index(["a", "b", "c"]))
>>> pd.json_normalize(series)
    id        name  fitness.height  fitness.weight
a  1.0   Cole Volk             130              60
b  NaN    Mark Reg             130              60
c  2.0  Faye Raker             130              60

>>> data = [
...     {
...         "state": "Florida",
...         "shortname": "FL",
...         "info": {"governor": "Rick Scott"},
...         "counties": [
...             {"name": "Dade", "population": 12345},
...             {"name": "Broward", "population": 40000},
...             {"name": "Palm Beach", "population": 60000},
...         ],
...     },
...     {
...         "state": "Ohio",
...         "shortname": "OH",
...         "info": {"governor": "John Kasich"},
...         "counties": [
...             {"name": "Summit", "population": 1234},
...             {"name": "Cuyahoga", "population": 1337},
...         ],
...     },
... ]
>>> result = pd.json_normalize(
...     data, "counties", ["state", "shortname", ["info", "governor"]]
... )
>>> result
         name  population    state shortname info.governor
0        Dade       12345   Florida    FL    Rick Scott
1     Broward       40000   Florida    FL    Rick Scott
2  Palm Beach       60000   Florida    FL    Rick Scott
3      Summit        1234   Ohio       OH    John Kasich
4    Cuyahoga        1337   Ohio       OH    John Kasich

>>> data = {"A": [1, 2]}
>>> pd.json_normalize(data, "A", record_prefix="Prefix.")
    Prefix.0
0          1
1          2

Returns normalized data with columns prefixed with the given string.
c                ó*  >• U n [        U[        5      (       a  U H  nUc  [        U5      eX4   nM     U$ X1   n U$ ! [         aJ  nU(       a  [        SU S35      UeTS:X  a  [        R                  s SnA$ [        SU SU S35      UeSnAff = f)zInternal function to pull fieldNzKey zS not found. If specifying a record_path, all elements of data should have the path.Úignorez) not found. To replace missing values of z% with np.nan, pass in errors='ignore')r(   rJ   ÚKeyErrorÚnpÚnan)ÚjsÚspecÚextract_recordÚresultÚfieldÚeÚerrorss         €r   Ú_pull_fieldÚ#json_normalize.<locals>._pull_fieldÛ  sÉ   ø€ ð ˆð	Ü˜$¤×%Ñ%Û!�EØ‘~Ü& u›oÐ-Ø#™]’Fñ "ð( ˆð  ™‘ð ˆøô ó 	ÞÜØ˜1˜#ð 1ð 2óð ðð ˜Ó!Ü—v‘v•äØ˜1˜#ÐFÀqÀcð J6ð 7óð ðûð	ús%   …0> ·> ¾
BÁ,BÁ4BÁ:BÂBc                óÈ   >• T" XSS9n[        U[        5      (       dD  [        R                  " U5      (       a  / nU$ [	        S[        U5      R                   SU< 35      eU$ )z–
Internal function to pull field for records, and similar to
_pull_field, but require to return list. And will raise error
if has non iterable value.
T)r`   z(Path must contain list or null, but got z at )r(   rJ   ÚpdÚisnullrP   rQ   rR   )r^   r_   ra   re   s      €r   Ú_pull_recordsÚ%json_normalize.<locals>._pull_recordsø  sr   ø€ ñ ˜R°dÑ;ˆô ˜&¤$×'Ñ'Ü�yŠy˜× Ñ Ø�ð ˆô	  ðÜ# F›|×4Ñ4Ð5°T¸$¹ðCóð ð ˆr   Nz9All items in data must be of type dict or NA-like, found rI   )Úindexc              3  óˆ   #   • U  H3  oR                  5        Vs/ s H  n[        U[        5      PM     snv •  M5     g s  snf 7fr   )Úvaluesr(   r)   )Ú.0ÚyÚxs      r   Ú	<genexpr>Ú!json_normalize.<locals>.<genexpr>5  s-   é € ÐGÂ$¸Q¯X©X¬ZÓ8ªZ¨”
˜1œdÖ#©ZÖ8Â$ùÒ8ùs   ‚A™=³A©r"   r$   c                ó   >• T U  3$ r   r   ©rq   Úrecord_prefixs    €r   Ú<lambda>Ú json_normalize.<locals>.<lambda>@  s   ø€ ¸°ÀqÀcÑ5Jr   )Úcolumnsr   c           
     óx  >
• [        U [        5      (       a  U /n [        U5      S:”  aR  U  HK  n[        T
TSS9 H&  u  pVUS-   [        U5      :X  d  M  T" XES   5      X&'   M(     T" XAS      USS  X#S-   S9  MM     g U  Hµ  nT" XAS   5      nU Vs/ s H%  n[        U[        5      (       a  [	        UTTS9OUPM'     nnTR                  [        U5      5        [        T
TSS9 H;  u  pVUS-   [        U5      :”  a  X&   n	OT" XEUS  5      n	TU   R                  U	5        M=     TR                  U5        M·     g s  snf )Nr   T)Ústrictr   r   ©r#   rt   )r(   r)   ÚlenÚzipr%   r0   Úextend)r:   ÚpathÚ	seen_metar#   ÚobjÚvalr@   ÚrecsÚrÚmeta_valÚ_metare   rj   Ú_recursive_extractÚlengthsr$   Ú	meta_keysÚ	meta_valsÚrecordsr"   s             €€€€€€€€€€r   r‰   Ú*json_normalize.<locals>._recursive_extractS  sU  ø€ Ü�dœD×!Ñ!Ø�6ˆDÜˆt‹9�q‹=Û�Ü # E¨9¸TÔ B‘H�CØ˜q‘y¤C¨£HÕ,Ù)4°S¸b¹'Ó)B˜	›ñ !Cñ # 3¨A¡w¡<°°a°b°¸9ÐTUÉIÔVò ó �Ù$ S¨q©'Ó2�ñ
 "ó	ò "˜ô " !¤T×*Ñ*ô % Q¨C¸9ÒEàòñ "ð	 ð ð —‘œs 4›yÔ)Ü # E¨9¸TÔ B‘H�CØ˜q‘y¤3 s£8Ó+Ø#,¡>™á#.¨s¸¸°KÓ#@˜Ø˜c‘N×)Ñ)¨(Ö3ñ !Cð —‘˜tÖ$ò# ùòs   Â,D7r}   c                ó   >• T U  3$ r   r   rv   s    €r   rx   ry   v  s   ø€ °M°?À1À#Ñ1Fr   zConflicting metadata name z, need distinguishing prefix )Údtyper   )F)r^   údict[str, Any]r_   ú
list | strr`   ÚboolÚreturnzScalar | Iterable)r^   r‘   r_   r’   r”   rJ   )r   )r#   Úintr”   ÚNone)!rV   r(   r   rl   rJ   r   r)   r   r   r-   Ú	enumerater   rh   ÚisnarQ   rR   rP   ÚNotImplementedErrorrK   Úanyr%   Úrenamer   Újoinr,   Ú
ValueErrorr\   ÚarrayÚobjectÚndimÚemptyr~   Úrepeat)r:   Úrecord_pathrS   Úmeta_prefixrw   rd   r"   r$   rl   ÚirT   Úmsgra   Úmr„   r5   r6   rn   rˆ   re   rj   r‰   rŠ   r‹   rŒ   r�   s       ````          @@@@@@@@r   Újson_normalizer¨   /  s7  ÿû€ ôT �4Ôð FKðØðØ",ðØ>Bðà	÷ð ÷:ô( �$œ×ÑØ—
‘
‰àˆä�$œ×Ñ¦dÜ‹{ÐÜ	�Dœ$×	Ñ	àˆv‰Ü	�Dœ#Ÿ,™,×	'Ñ	'´
¸4Ä×0EÑ0Eô �D‹zˆÜ  –‰GˆAÜ˜$¤×%Ñ%ÙÜ˜�‰¤2§7¢7¨4§=¡=Ø�“ðÜ! $›Z×0Ñ0Ð1ð3ð ô   “nÐ$ò 'ô "Ð!ð 	ÑØ‰LØÑØÑ!ØÑäÔ/°¸#Ñ>ÀeÑLÐLàÑÜÑGÁ$ÓG×GÑGô $ D¨c¸YÑGˆDÜ˜4Ñ-ˆØÑ$Ø—]‘]Ô+J�]ÐKˆFØˆÜ˜¤T×*Ñ*Ø"�mˆà�|Ø‰Ü˜œd×#Ñ#Øˆvˆá8<Ó=º°1”*˜Q¤×%Ñ%‰Q¨A¨3Ò.¹Ñ=€Eð €GØ€Gä(¬Ó.€IÙ*/Ó0ª% 3�—‘˜#–©%Ñ0€I÷%÷ %ò %ñ< �t¨"°AÒ6ä�wÓ€FàÑ Ø—‘Ô'F�ÐGˆð —‘Ö!‰ˆˆ1ØÑ"Ø‘ˆAà‹;ÜØ,¨Q¨CÐ/LÐMóð ô
 —’˜!¤6Ñ*ˆà�;‰;˜‹?ä—X’Xœs 1›v˜i¬vÑ6ˆFÜ# Až,‘�Ø��q“	ñ 'ð —M‘M 'Ó*ˆ‹	ñ% "ð& ÑØ—|‘| GÓ,ˆŒØ€MùòI >ùò 1s   Ç9$MÈ7M)r   r-   r”   r-   )....)r    r)   r!   r-   r"   r-   r#   r•   r$   ú
int | Noner”   r‘   )r    z
list[dict]r!   r-   r"   r-   r#   r•   r$   r©   r”   zlist[dict[str, Any]])rD   Ú.r   N)r    údict | list[dict]r!   r-   r"   r-   r#   r•   r$   r©   r”   z%dict[str, Any] | list[dict[str, Any]])
r:   r   r;   r-   r<   r‘   r=   r-   r”   r‘   )r:   r‘   r=   r-   r”   r‘   )rª   )r    r«   r"   r-   r”   zdict | list[dict] | Any)rS   ú"str | list[str | list[str]] | Noner”   r–   )NNNNÚraiserª   N)r:   zdict | list[dict] | Seriesr£   zstr | list | NonerS   r¬   r¤   ú
str | Nonerw   r®   rd   r   r"   r-   r$   r©   r”   r   )#Ú
__future__r   Úcollectionsr   r   r*   Útypingr   r   r   r	   Únumpyr\   Úpandas._libs.writersr   Úpandas.util._decoratorsr   Úpandas.core.dtypes.commonr   rW   rh   r   r   Úcollections.abcr   Úpandas._typingr   r   r   r%   r?   rG   rK   rV   r¨   r   r   r   Ú<module>r¸      sA  ðõ #÷ó ÷ó ó å 6Ý .å /ã ÷ö
 Ý(÷ô
$ð 
ð ØØØðØðàðð 
ðð ð	ð
 ðð ôó 
ðð 
ð ØØØðØðàðð 
ðð ð	ð
 ðð ôó 
ðð ØØØ ðNØðNàðNð 
ðNð ð	Nð
 ðNð +õNðb&Ø
ð&àð&ð $ð&ð ð	&ð
 ô&ôR)ð6 ð2"Øð2"à	ð2"ð õ2"ôjñ> ˆHÓð &*Ø/3Ø"Ø $Ø!ØØ ð^Ø
$ð^à"ð^ð -ð^ð ð	^ð
 ð^ð ð^ð 
ð^ð ð^ð ô^ó ñ^r   