Ë
    H«£j'.  ã                   óþ  — d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	Z
 ej                  d«       ej                  j                  ej                  j                  e«      «      Zej                  j#                  de«       ej                  j#                  dej                  j%                  edd«      «       dZdZd	Z ej,                  d
d«      ZdZ ej2                  «       Zej6                  j9                  ddddœ«       d„ Zd„ Zd„ Zdd„Z d„ Z!d„ Z"d„ Z#dd„Z$e%dk(  rOdZ&ejN                  dd Z( e)e(«      D ])  \  Z*Z+e+dk(  sŒe*dz    e,e(«      k  sŒ	  e-e(e*dz      «      Z&Œ+  e$e&¬«       yy#  Y Œ;xY w)un   
è–›åŸŽåŒºäººæ°‘æ”¿åºœ-å®¡æ‰¹ä¿¡æ�¯ (æž£åº„å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€è–›åŸŽåˆ†å±€) çˆ¬è™«
ç«™ç‚¹: www.xuecheng.gov.cn
é    N©ÚBeautifulSoupÚignorez..Úcrawleru   è–›åŸŽåŒº-å®¡æ‰¹ä¿¡æ�¯zwww.xuecheng.gov.cnzhttp://www.xuecheng.gov.cnÚ	SEARCH_DBz/root/search.dbé   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9)z
User-AgentÚAcceptzAccept-Languagec                 óÜ  — | sy t        j                  t        «      }|j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j	                  «        dx}}| D ]Ø  }	 |j                  d«      xs dd d	 }|j                  d
«      xs |d d	 }|j                  d«      xs d}|j                  d«      xs dd d }|j                  d«      xs d}	|j                  d«      xs |	}
|j                  d«      xs d}|j                  dt        |	|
||||d|f	«       |j                  dkD  r|dz  }n|dz  }ŒÚ |j	                  «        	 |j                  dt        f«       |j	                  «        |j                  «        t        d|› d|› �«       y #  |dz  }Y �Œ?xY w# t        $ r}t        d|› �«       Y d }~ŒKd }~ww xY w)NzPRAGMA journal_mode=WALzPRAGMA busy_timeout=8000zPRAGMA synchronous=NORMALa"  CREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        site_name TEXT, source_url TEXT UNIQUE, page_url TEXT,
        title TEXT, publish_date TEXT, summary TEXT,
        content TEXT, status TEXT, category TEXT, tags TEXT,
        attachments TEXT
    )zˆCREATE VIRTUAL TABLE IF NOT EXISTS gov_search USING fts5(
        title, site_name, summary, content='gov_raw', content_rowid='id'
    )r   ÚtitleÚ iô  ÚsummaryÚcontentÚpublish_dateé
   Ú
source_urlÚurlÚattachmentszÏINSERT OR IGNORE INTO gov_raw
                (site_name, source_url, page_url, title, publish_date,
                 summary, content, status, attachments)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)Úactiveé   zÛINSERT INTO gov_search(rowid, title, site_name, summary)
            SELECT r.id, r.title, r.site_name, r.summary
            FROM gov_raw r
            WHERE r.site_name=? AND r.id NOT IN (SELECT rowid FROM gov_search)z  [FTS ERROR] u     [DB] æ–°å¢ž: u
   , è·³è¿‡: )Úsqlite3Úconnectr   ÚexecuteÚcommitÚgetÚ	SITE_NAMEÚtotal_changesÚ	ExceptionÚprintÚclose)ÚitemsÚdbÚokÚskipÚitemr   r   r   Úpub_dater   Úpage_urlr   Úes                úcrawl_xuecheng.pyÚ	insert_dbr)      sø  € ÙØÜ	�‰œÓ	#€BØ‡J�JÐ(Ô)Ø‡J�JÐ)Ô*Ø‡J�JÐ*Ô+Ø‡J�Jð 	ô 
ð ‡J�Jð 	ô 
ð ‡I�I„KØ€M€BˆØò ˆð	Ø—X‘X˜gÓ&Ò,¨"¨d¨sÐ3ˆEØ—x‘x 	Ó*Ò3¨e°T°cÐ:ˆGØ—h‘h˜yÓ)Ò/¨RˆGØŸ™ Ó0Ò6°B¸¸Ð<ˆHØŸ™ ,Ó/Ò5°2ˆJØ—x‘x “Ò4¨*ˆHØŸ(™( =Ó1Ò7°RˆKØ�J‰Jð 6ô ˜J¨°%¸Ø˜' 8¨[ð:ô	;ð ×Ñ !Ò#Ø�a‘‘à˜‘	�øð%ð* ‡I�I„Kð$Ø
�
‰
ð Rô ˆLô		ð
 	�	‰	Œð ‡H�H„JÜ	ˆO˜B˜4˜z¨$¨Ð
0Õ1øð	Ø�A‰I‹Dûô ò $Ü�˜q˜cÐ"×#Ñ#ûð$ús%   ÂCF=Å4'G
 Æ=GÇ
	G+ÇG&Ç&G+c                 óP  — t        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  t         j                  z  ¬«      } t        j                  dd| t         j                  ¬«      } | j	                  «       S )Nz<style[^>]*>.*?</style>r   ©Úflagsz<script[^>]*>.*?</script>z
<!--.*?-->)ÚreÚsubÚDOTALLÚ
IGNORECASEÚstrip)Úhtmls    r(   Ú
clean_htmlr3   T   sj   € Ü�6‰6Ð,¨b°$¼b¿i¹iÌ"Ï-É-Ñ>WÔX€DÜ�6‰6Ð.°°DÄÇ	Á	ÌBÏMÉMÑ@YÔZ€DÜ�6‰6�-  T´·±Ô;€DØ�:‰:‹<Ðó    c                 ó¸  — | sy| }t        j                  d|t         j                  t         j                  z  «      }g }t	        |«      D ]1  \  }}d|› d�}|j                  ||f«       |j                  ||d«      }Œ3 t        j                  dd|t         j                  ¬«      }t        j                  d	d
|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd
|«      }t        j                  dd|«      }t        j                  dd|«      }|D ](  \  }}t        |«      }|j                  |d|z   dz   «      }Œ* |j                  «       S )Nr   z<table[^>]*>.*?</table>Ú__TABLE_Ú__r   z	<br\s*/?>ú
r+   z</p>ú

z</div>z</tr>z</th>z</td>z5<(?!/?(?:table|tr|td|th|thead|tbody|tfoot|img))[^>]*>z&nbsp;ú z&lt;ú<z&gt;ú>z&amp;ú&z\n{3,}z[ \t]+z-(?<=[\u4e00-\u9fff])[ \t]+(?=[\u4e00-\u9fff]))
r-   Úfindallr/   r0   Ú	enumerateÚappendÚreplacer.   Úhtml_table_to_htmlr1   )r2   ÚtextÚtablesÚplaceholdersÚiÚtblÚphÚmds           r(   Úextract_textrJ   [   så  € ÙØØ€Dä�Z‰ZÐ2°D¼"¿)¹)ÄbÇmÁmÑ:SÓT€FØ€LÜ˜FÓ#ò (‰ˆˆ3Ø˜�s˜"ÐˆØ×Ñ˜R ˜IÔ&Ø�|‰|˜C  QÓ'‰ð(ô �6‰6�,  d´"·-±-Ô@€DÜ�6‰6�'˜6 4¬r¯}©}Ô=€DÜ�6‰6�)˜T 4¬r¯}©}Ô=€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6�(˜D $¬b¯m©mÔ<€DÜ�6‰6ÐJÈBÐPTÓU€DÜ�6‰6�)˜S $Ó'€DÜ�6‰6�'˜3 Ó%€DÜ�6‰6�'˜3 Ó%€DÜ�6‰6�(˜C Ó&€DÜ�6‰6�)˜V TÓ*€DÜ�6‰6�)˜S $Ó'€DÜ�6‰6ÐBÀBÈÓM€Dàò 2‰ˆˆCÜ Ó$ˆØ�|‰|˜B  r¡	¨DÑ 0Ó1‰ð2ð �:‰:‹<Ðr4   c                 óØ  — ddl m}  |t        | «      d«      }|j                  d«      D ]P  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r t        j                  j                  ||«      n||d<   ŒR |j                  d«      D ]P  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r t        j                  j                  ||«      n||d	<   ŒR t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   r   zhtml.parserÚaÚhrefr   )ÚhttpÚ
javascriptú#ÚimgÚsrc)rN   z//zdata:)	Úbs4r   ÚstrÚfind_allr   Ú
startswithÚurllibÚparseÚurljoin)ÚtableÚbase_urlr   rG   rL   rM   rQ   rR   s           r(   rB   rB   {   sÐ   € å!Ù
œ˜E›
 MÓ
2€CØ�\‰\˜#Óò SˆØ�u‰u�V˜RÓ ˆÚ˜Ÿ™Ð(CÕDÙ@HœŸ™×,Ñ,¨X°tÔ<ÈdˆAˆfŠIðSð �|‰|˜EÓ"ò RˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~Ð&=Õ>Ù@HœŸ™×-Ñ-¨h¸Ô<ÈcˆC�ŠJðRô ˆs‹8€Or4   c                 óª  — t         › d�}dt        | «      i}	 t        j                  ||d¬«      }d|_        |j
                  }g }t        j                  d|t        j                  «      D �]?  }|j                  d	«      }t        j                  d
|«      }	|	sŒ.|	j                  d	«      }
|	j                  d«      j                  «       }t        j                  d|«      }|st        j                  d|«      }d}|r�|j                  d	«      }t        j                  d|«      }|rV|j                  d	«      › d|j                  d«      j                  d«      › d|j                  d«      j                  d«      › �}n|}|j!                  ||
j#                  d«      r|
nt         |
z   |dœ«       �ŒB |S # t        $ r}t        d|› �«       g cY d}~S d}~ww xY w)u$   èŽ·å�–åˆ—è¡¨é¡µï¼Œè¿”å›žæ–‡ç« åˆ—è¡¨z</govsearch/searPageNewXueCheng.jsp?siteid=44&classinfoid=974Úpager   )ÚdataÚtimeoutúutf-8u     [ERROR] è¯·æ±‚å¤±è´¥: Nz<li[^>]*>(.*?)</li>r   z/<a[^>]*href="([^"]*)"[^>]*title="([^"]*)"[^>]*>é   u*   <b[^>]*>(\d{4}å¹´\d{1,2}æœˆ\d{1,2}æ—¥)</b>z(\d{4}-\d{2}-\d{2})r   u"   (\d{4})å¹´(\d{1,2})æœˆ(\d{1,2})æ—¥ú-é   rN   )r   r   Údate)ÚBASE_URLrT   ÚsessionÚpostÚencodingrC   r   r   r-   Úfinditerr/   ÚgroupÚsearchr1   ÚmatchÚzfillr@   rV   )Úpage_numr   r^   Úrr2   r'   r    ÚmÚliÚlinkrM   r   Údate_mÚdate_strÚraw_dateÚm2s                   r(   Úfetch_list_pagerw   Š   s©  € äˆJÐRÐ
S€CØ”C˜“MÐ"€DðÜ�L‰L˜ 4°ˆLÓ4ˆØˆŒ
Ø�v‰vˆð
 €Eä�[‰[Ð/°´r·y±yÓAó ˆØ�W‰W�Q‹Zˆä�y‰yÐKÈRÓPˆÙØØ�z‰z˜!‹}ˆØ—
‘
˜1“×#Ñ#Ó%ˆä—‘ÐHÈ"ÓMˆÙÜ—Y‘YÐ5°rÓ:ˆFØˆÙØ—|‘| A“ˆHä—‘Ð?ÀÓJˆBÙØ Ÿh™h q›k˜]¨!¨B¯H©H°Q«K×,=Ñ,=¸aÓ,@Ð+AÀÀ2Ç8Á8ÈAÃ;×CTÑCTÐUVÓCWÐBXÐY‘à#�à�‰ØØŸ?™?¨6Ô2‘4¼À4¹Øñ
ö 	ð-ð6 €LøôC ò ÜÐ(¨¨Ð,Ô-Ø�	ûðús   ˜+F/ Æ/	GÆ8GÇGÇGc                 ó2  ‡— t        j                  d| t         j                  t         j                  z  «      }|s6t        j                  d| t         j                  t         j                  z  «      }|rC|j	                  d«      }t        t        |«      «      }t        |«      dkD  r|j                  «       S t        j                  d| t         j                  t         j                  z  «      }|rAt        t        |j	                  d«      «      «      }t        |«      dkD  r|j                  «       S t        j                  d| t         j                  «      }|r¹|j	                  d«      }t        |«      }t        |«      }|j                  d«      D �cg c]@  }|j                  «       sŒt        |j                  «       «      dkD  sŒ1|j                  «       ‘ŒB }}|D �‡cg c]  Št        ˆfd	„d
D «       «      rŒ‰‘Œ }}|rdj                  |«      S yc c}w c c}w )u   ä»Žè¯¦æƒ…é¡µæ��å�–æ­£æ–‡z_<div[^>]*class="[^"]*(?:TRS_UEDITOR|trs_paper|trs_web)[^"]*"[^>]*>(.*?)</div>\s*</div>\s*</div>zM<div[^>]*class="[^"]*(?:TRS_UEDITOR|trs_paper|trs_web)[^"]*"[^>]*>(.*?)</div>r   r   z�<div[^>]*class="[^"]*(?:zwnr|detail-page|article-content)[^"]*"[^>]*>(.*?)(?:</div>\s*){1,3}(?:<div[^>]*class="[^"]*(?:foot|footer|share|print)z<body[^>]*>(.*?)</body>r8   é   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©N© )Ú.0ÚxÚls     €r(   ú	<genexpr>z.extract_content_from_detail.<locals>.<genexpr>Ð   s   øè ø€ ò -¸¨Q°!¬Vñ -ùs   ƒ)	u   é¦–é¡µu   ä¿¡æ�¯å…¬å¼€u   æ”¿åŠ¡å…¬å¼€u   ç½‘ç«™åœ°å›¾u   è�”ç³»æˆ‘ä»¬u   ç‰ˆæ�ƒu	   æ— éšœç¢�u   ç™»å½•u   æ³¨å†Œr9   r   )r-   rk   r/   r0   rj   rJ   r3   Úlenr1   ÚsplitÚanyÚjoin)	r2   rp   Ú	body_htmlrC   ÚbmÚbodyÚcleanedr   Úliness	          ` r(   Úextract_content_from_detailrŠ   ¶   s   ø€ ô 	�	‰	ÐtÐvzÔ|~÷  }Fñ  }Fô  IK÷  IVñ  IVñ  }Vó  	W€AÙÜ�I‰IÐfÐhlÔnp×nwÑnwÔz|÷  {Hñ  {Hñ  oHó  IˆÙØ—G‘G˜A“Jˆ	ÜœJ yÓ1Ó2ˆÜˆt‹9�rŠ>Ø—:‘:“<Ðô 	�	‰	ð  eð  gkô  mo÷  mvñ  mvô  y{÷  yFñ  yFñ  mFó  	G€AÙÜœJ q§w¡w¨q£zÓ2Ó3ˆÜˆt‹9�rŠ>Ø—:‘:“<Ðô 
�‰Ð-¨t´R·Y±YÓ	?€BÙ	Ø�x‰x˜‹{ˆÜ˜TÓ"ˆÜ˜GÓ$ˆØ$(§J¡J¨tÓ$4ÖY˜q¸¿¹½	ÄcÈ!Ï'É'Ë)ÃnÐWXÓFX�—‘•ÐYˆÐYØ!÷ �q¬ó -ð >
ô -õ *’ð ˆð ñ Ø—;‘;˜uÓ%Ð%Øùò Zùòs   ÆHÆ%HÇHÇHÇ5Hc                 ó<  — 	 t         j                  | d¬«      }d|_        |j                  }d}t        j                  d|«      }|r|j                  d«      j                  «       }|sbt        j                  d|«      }|rJ|j                  d«      j                  «       }t        j                  dd	|«      }|j                  «       }|r|}d	}t        j                  d
|«      }|r|j                  d«      dd }t        |«      }	||	|dœS # t        $ r
}Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µr   )r_   r`   Nz3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]*)"r   z<title>([^<]+)</title>u(   [-â€“â€”]\s*è–›åŸŽåŒºæ”¿åºœä¿¡æ�¯å…¬å¼€$r   z.<meta[^>]*name="PubDate"[^>]*content="([^"]*)"r   )r   r   rd   )rf   r   rh   rC   r   r-   rk   rj   r1   r.   rŠ   )
Ú
detail_urlro   r2   r'   r   ÚttÚtrt   Údpr   s
             r(   Úfetch_detailr�   Ù   s  € ðÜ�K‰K˜
¨BˆKÓ/ˆØˆŒ
Ø�v‰vˆð
 €EÜ	�‰ÐIÈ4Ó	P€BÙ	Ø—‘˜“×!Ñ!Ó#ˆÙÜ�Y‰YÐ0°$Ó7ˆÙØ—‘˜“×!Ñ!Ó#ˆAÜ—‘ÐBÀBÈÓJˆAØ—‘“	ˆAÙØ�ð €HÜ	�‰ÐDÀdÓ	K€BÙ	Ø—8‘8˜A“;˜s Ð#ˆä)¨$Ó/€GØ w¸ÑAÐAøô1 ò Üûðús   ‚*D Ä	DÄDc                 ór  — t        dd› �«       t        dt        › �«       t        d› «       t        d«       t        d«      }|st        d«       y t        dt        |«      › d�«       d	}|t        z   dz
  t        z  }| r| |k  r| }t        d
|› d|› �«       t        |«      }t        d|dz   «      D ]†  }t        |«      }|st        d|› d|› d�«       Œ#|D �ch c]  }|d   ’Œ	 }}|D �cg c]  }|d   |vsŒ|‘Œ }	}|j                  |	«       t        d|› d|› dt        |«      › dt        |	«      › d�	«       Œˆ t        dt        |«      › d�«       dx}
}g }t        |d«      D ]ñ  \  }}t        d|› dt        |«      › d|d   d d › d�«       t        |d   «      }|st        d«       |dz  }ŒK|j                  dd«      }|rt        |«      dk  rt        d«       |dz  }Œ~|j                  d«      xs |d   }|j                  d «      xs |d    }|j                  ||d   |d   |d d! |d d" |dd#œ«       |
dz  }
t        d$t        |«      › d%|› �«       Œó t        dd› �«       t        d&|
› d'|› �«       |rt        |«       t        d› «       t        d(t        |«      › d)|
› d*|› �«       y c c}w c c}w )+Nr8   z<============================================================u   ðŸš€ u   
ðŸ“¥ èŽ·å�–åˆ—è¡¨é¡µ1...r   u     â�Œ åˆ—è¡¨é¡µæ— æ•°æ�®u     ç¬¬1é¡µ: u    æ�¡i‘  u     æ€»è®°å½•: u   , æ€»é¡µæ•°: ra   u     ç¬¬ ú/u	    é¡µ: ç©ºr   u    é¡µ: u    æ�¡ (æ–°å¢ž ú)u   
  å…±èŽ·å�–: r   z
[z] r   é<   z...u      â�Œ è¯·æ±‚å¤±è´¥r   r   é   u      â�Œ æ­£æ–‡ä¸ºç©ºrd   r   éÈ   )r   r   r   r   r   r   r   u      âœ… æ­£æ–‡: u    å­—, æ—¥æœŸ: u    ðŸ“¦ å†™å…¥æ•°æ�®åº“... æˆ�åŠŸ: u
   , å¤±è´¥: u   âœ… å®Œæˆ�! å…±å¤„ç�† u    æ�¡ï¼Œæˆ�åŠŸ u
   ï¼Œå¤±è´¥ )r   r   rw   r�   Ú	PAGE_SIZEÚlistÚrangeÚextendr?   r�   r   r@   r)   )Ú	max_pagesÚitems1Útotal_recordsÚtotal_pagesÚ	all_itemsÚpnr    rF   Ú	seen_urlsÚ	new_itemsÚsuccessÚfailÚdb_itemsr$   ÚdetailÚcontent_textÚdb_titler%   s                     r(   Úrunr©   ú   s!  € Ü	ˆBˆvˆhˆ-ÔÜ	ˆE”)�Ð
ÔÜ	ˆVˆHÔô 
Ð
&Ô'Ü˜QÓ€FÙÜÐ(Ô)ØÜ	ˆKœ˜F›�} DÐ
)Ô*ð €MØ ¤9Ñ,¨qÑ0´YÑ>€KÙ�Y Ò,ØˆÜ	ˆM˜-˜¨°k°]Ð
CÔDô �V“€IÜ�A�{ Q‘Ó'ò [ˆÜ Ó#ˆÙÜ�F˜2˜$˜a ˜}¨IÐ6Ô7ØØ'0Ö1 !�Q�u“XÐ1ˆ	Ð1Ø %ÖC˜1¨¨5©¸Ò)B’QÐCˆ	ÐCØ×Ñ˜Ô#Ü��r�d˜!˜K˜=¨¬s°5«z¨l¸-ÌÈIËÐGWÐWXÐYÕZð[ô 
ˆOœC 	›NÐ+¨4Ð
0Ô1ð Ð€GˆdØ€Hä˜Y¨Ó*ò M‰ˆˆ4Ü��A�3�aœ˜I›Ð' r¨$¨w©-¸¸Ð*<Ð)=¸SÐAÔBÜ˜d 5™kÓ*ˆÙÜÐ'Ô)Ø�A‰IˆDØà—z‘z )¨RÓ0ˆÙœs <Ó0°1Ò4ÜÐ'Ô)Ø�A‰IˆDØà—:‘:˜gÓ&Ò7¨$¨w©-ˆØ—:‘:˜fÓ%Ò5¨¨f©ˆà�‰ØØ˜u™+Ø˜‘;Ø$ S b˜MØ  �~Ø#Øñ
ô 	ð 	�1‰ˆÜ�¤ LÓ 1Ð2°.ÀÀ
ÐKÕLð7Mô: 
ˆBˆvˆhˆ-ÔÜ	Ð,¨W¨I°ZÀ¸vÐ
FÔGÙÜ�(ÔÜ	ˆVˆHÔÜ	Ð"¤3 y£>Ð"2°.ÀÀ	ÈÐTXÐSYÐ
ZÕ[ùò[ 2ùÚCs   ÃJ/Ã+J4Ã8J4Ú__main__r   z--pages)r›   )r   r{   ).Ú__doc__ÚsysÚosr-   r   ÚwarningsÚrequestsrS   r   Úurllib.parserW   ÚfilterwarningsÚpathÚdirnameÚabspathÚ__file__Ú_HEREÚinsertr„   r   ÚDOMAINre   Úgetenvr   r—   ÚSessionrf   ÚheadersÚupdater)   r3   rJ   rB   rw   rŠ   r�   r©   Ú__name__Úmax_pÚargvÚargsr?   rF   Úargr�   Úintr|   r4   r(   ú<module>rÃ      s†  ðñ÷ 0× /× /Ý Û Ø €× Ñ ˜Ô !à
�‰�‰˜Ÿ™Ÿ™¨Ó1Ó2€Ø ‡�‡���5Ô Ø ‡�‡���2—7‘7—<‘<  t¨YÓ7Ô 8à$€	Ø	€Ø'€ØˆB�I‰I�kÐ#4Ó5€	Ø€	à
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ ð DØOØ'ñô ò32òlòó@ò)òX òFBóBH\ðV ˆzÒØ€EØ�8‰8�A�Bˆ<€DÙ˜D“/ò ‰ˆˆ3Ø�)Ó  A¡©¨D«	Ó 1ðÙ˜D  Q¡™KÓ(‘ðñ �%Öð øðÙús   ÅE8Å8E<