PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/lib64/python2.7/site-packages/lxml/html/
Upload File :
Current File : //lib64/python2.7/site-packages/lxml/html/clean.pyo
�
�gc@s3dZddlZddlZyddlmZWn!ek
rUddlmZnXddlmZddl	m
Z
ddl	mZmZm
Z
ddl	mZmZyeWnek
r�eZnXyeWnek
r�eZnXyeWnek
r
eZnXyeWnek
r5eefZnXdd	d
ddd
dgZejdejejB�Zejdej�Zejdej�Zejd�jZejdejejB�Z ej!d�Z"ej!ddie
d6�Z#d
e$fd��YZ%e%�Z&e&j'Z'ejdej�ejdej�gZ(dddddd gZ)ejd!ej�ejd"ej�ejd#�gZ*d$gZ+e(e)e*e+d%�Z,d&�Z-d'�Z.e,je._dddgZ/d(gZ0d)e/e0ed*�d+�Z1d,�Z2d-�Z3ejd.ej�Z4d/�Z5dS(0scA cleanup tool for HTML.

Removes unwanted tags and content.  See the `Cleaner` class for
details.
i����N(turlsplit(tetree(tdefs(t
fromstringttostringtXHTML_NAMESPACE(t
xhtml_to_htmlt_transform_resultt
clean_htmltcleantCleanertautolinkt
autolink_htmlt
word_breaktword_break_htmlsexpression\s*\(.*?\)s
@\s*imports?\s*(?:javascript|jscript|livescript|vbscript|data|about|mocha):s\s+s\[if[\s\n\r]+.*?][\s\n\r]*>sdescendant-or-self::*[@style]s�descendant-or-self::a  [normalize-space(@href) and substring(normalize-space(@href),1,1) != '#'] |descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']t
namespacestxcBsIeZdZeZeZeZeZeZ	eZ
eZeZeZ
eZeZeZdZdZdZeZeZejZeZdZeddg�Zd�Zedddddd	d
gdddddddd�Zd
�Z d�Z!d�Z"d�Z#d�Z$dd�Z%d�Z&e'j(de'j)�j*Z+d�Z,d�Z-RS(s�
    Instances cleans the document of each of the possible offending
    elements.  The cleaning is controlled by attributes; you can
    override attributes in a subclass, or set them in the constructor.

    ``scripts``:
        Removes any ``<script>`` tags.

    ``javascript``:
        Removes any Javascript, like an ``onclick`` attribute. Also removes stylesheets
        as they could contain Javascript.

    ``comments``:
        Removes any comments.

    ``style``:
        Removes any style tags or attributes.

    ``links``:
        Removes any ``<link>`` tags

    ``meta``:
        Removes any ``<meta>`` tags

    ``page_structure``:
        Structural parts of a page: ``<head>``, ``<html>``, ``<title>``.

    ``processing_instructions``:
        Removes any processing instructions.

    ``embedded``:
        Removes any embedded objects (flash, iframes)

    ``frames``:
        Removes any frame-related tags

    ``forms``:
        Removes any form tags

    ``annoying_tags``:
        Tags that aren't *wrong*, but are annoying.  ``<blink>`` and ``<marquee>``

    ``remove_tags``:
        A list of tags to remove.  Only the tags will be removed,
        their content will get pulled up into the parent tag.

    ``kill_tags``:
        A list of tags to kill.  Killing also removes the tag's content,
        i.e. the whole subtree, not just the tag itself.

    ``allow_tags``:
        A list of tags to include (default include all).

    ``remove_unknown_tags``:
        Remove any tags that aren't standard parts of HTML.

    ``safe_attrs_only``:
        If true, only include 'safe' attributes (specifically the list
        from the feedparser HTML sanitisation web site).

    ``safe_attrs``:
        A set of attribute names to override the default list of attributes
        considered 'safe' (when safe_attrs_only=True).

    ``add_nofollow``:
        If true, then any <a> tags will have ``rel="nofollow"`` added to them.

    ``host_whitelist``:
        A list or set of hosts that you can use for embedded content
        (for content like ``<object>``, ``<link rel="stylesheet">``, etc).
        You can also implement/override the method
        ``allow_embedded_url(el, url)`` or ``allow_element(el)`` to
        implement more complex rules for what can be embedded.
        Anything that passes this test will be shown, regardless of
        the value of (for instance) ``embedded``.

        Note that this parameter might not work as intended if you do not
        make the links absolute before doing the cleaning.

        Note that you may also need to set ``whitelist_tags``.

    ``whitelist_tags``:
        A set of tags that can be included with ``host_whitelist``.
        The default is ``iframe`` and ``embed``; you may wish to
        include other tags like ``script``, or you may want to
        implement ``allow_embedded_url`` for more control.  Set to None to
        include all tags.

    This modifies the document *in place*.
    tiframetembedcKsYxR|j�D]D\}}t||�sAtd||f��nt|||�q
WdS(NsUnknown parameter: %s=%r(titemsthasattrt	TypeErrortsetattr(tselftkwtnametvalue((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyt__init__�s
tscripttsrctlinkthreftapplettcodetobjecttlayertac
Cs�t|d�r|j�}nt|�x |jd�D]}d|_q8W|jsd|j|�nt|jpsd(�}t|j	p�d)�}t|j
p�d*�}|jr�|jd�n|j
r$t|j�}xM|j�D]<}|j}x*|j�D]}||kr�||=q�q�Wq�Wn|jr�|j
oE|jtjks�xP|j�D]?}|j}x-|j�D]}|jd�rq||=qqqqWqUWn|j|jdt�|js�x�t|�D]t}|jd�}	tjd|	�}
tjd|
�}
|j|
�r|jd=q�|
|	kr�|jd|
�q�q�Wx�t|jd��D]�}|jd	d�j�j �d
kr�|j!�qUn|j"p�d}	tjd|	�}
tjd|	�}
|j|
�r�d|_"qU|
|	krU|
|_"qUqUWq�n|js|j#r$|jt$j%�n|j#r@|jt$j&�n|jri|jd�t$j'|d�n|j(r�|jd�nr|js�|jr�x]t|jd��D]C}d
|jdd�j�kr�|j)|�s�|j!�q�q�q�Wn|j*r
|jd�n|j+r&|j,d+�n|j-r�xvt|jd��D]_}t}|j.�}x+|d'k	r�|jd,kr�|j.�}q`W|d'krE|j!�qEqEW|j,d-�|j,d.�n|j0r�|j,tj1�n|j2r|jd�|j,d/�n|j3r |j,d0�ng}
g}x||j�D]n}|j|krs|j)|�rcq9n|j4|�q9|j|kr9|j)|�r�q9n|
j4|�q9q9W|
r�|
d |kr�|
j5d �}d!|_|jj6�nM|r6|d |kr6|j5d �}|jdkr)d!|_n|j6�n|j7�x|D]}|j!�qGWx|
D]}|j8�qbW|j
}|j9r�|r�t:d"��nttj;�}n|rPg}x3|j�D]%}|j|kr�|j4|�q�q�W|rP|d |kr/|j5d �}d!|_|jj6�nx|D]}|j8�q6WqPn|j<r�x�t=|�D]r}|j>|�sf|jd�}|r�d#|kr�d$d%|kr�qfnd&|}nd#}|jd|�qfqfWnd'S(1s&
        Cleans the document.
        tgetroottimagetimgRtontresolve_base_hreftstyletttypestext/javascripts
/* deleted */Rt
stylesheettreltmetatheadthtmlttitletparamR R"RRR#tformtbuttontinputtselectttextareatblinktmarqueeitdivsIIt does not make sense to pass in both allow_tags and remove_unknown_tagstnofollows
 nofollow s %s s%s nofollowN((((sheadshtmlstitle(sappletsobject(sapplet(siframesembedslayersobjectR3(R5sinputR7R8(R9R:(?RR%Rtiterttagtcommentstkill_conditional_commentstsett	kill_tagstremove_tagst
allow_tagstscriptstaddtsafe_attrs_onlyt
safe_attrstattribtkeyst
javascriptRt
startswitht
rewrite_linkst_remove_javascript_linktFalseR*t_find_styled_elementstgett_css_javascript_retsubt_css_import_ret_has_sneaky_javascripttlisttlowertstript	drop_treettexttprocessing_instructionsRtCommenttProcessingInstructiontstrip_attributestlinkst
allow_elementR/tpage_structuretupdatetembeddedt	getparenttNonetframest
frame_tagstformst
annoying_tagstappendtpoptcleartreversetdrop_tagtremove_unknown_tagst
ValueErrorttagstadd_nofollowt_find_external_linkstallow_follow(RtdoctelRBRCRDRHRItanametoldtnewtfound_parenttparentt_removet_killtbadR.((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyt__call__�s

								
$
		
				
		
		



			
	
cCstS(sF
        Override to suppress rel="nofollow" on some anchors.
        (RO(Rtanchor((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyRt�scCs�|j|jkrtS|j|j}t|ttf�rx=|D]5}|j|�}|satS|j||�sBtSqBWtS|j|�}|s�tS|j||�SdS(N(	R>t_tag_link_attrsROt
isinstanceRVttupleRQtallow_embedded_urltTrue(RRvtattrtone_attrturl((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR`�s
cCs�|jdk	r%|j|jkr%tSt|�\}}}}}|j�jdd�d}|dkrltS||jkrtStS(Nt:iithttpthttps(R�R�(	twhitelist_tagsReR>RORRWtsplitthost_whitelistR�(RRvR�tschemetnetloctpathtquerytfragment((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR��scCs#g}|j|d�tj�dS(s�
        IE conditional comments basically embed HTML that the parser
        doesn't normally see.  We can't allow anything like that, so
        we'll kill any comments that could be conditional.
        cSstj|j�S(N(t_conditional_comment_retsearchRZ(Rv((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyt<lambda>�sN(t_kill_elementsRR\(RRuR~((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR@�s	cCs[g}x3|j|�D]"}||�r|j|�qqWx|D]}|j�qCWdS(N(R=RjRY(RRut	conditiontiterateR~Rv((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR��s
cCs&td|�}tj|�r"dS|S(NR+(t_substitute_whitespacet_javascript_scheme_reR�(RRRy((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyRN�ss	/\*.*?\*/cCs�|jd|�}|jdd�}td|�}|j�}d|krOtSd|kr_tSd|krotSd|krtStS(s�
        Depending on the browser, stuff like ``e x p r e s s i o n(...)``
        can get interpreted, or ``expre/* stuff */ssion(...)``.  This
        checks for attempt to do stuff like this.

        Typically the response will be to kill the entire style; if you
        have just a bit of Javascript in the style another rule will catch
        that and remove only the Javascript from the style; this catches
        more sneaky attempts.
        R+s\sjavascript:sexpression(s
</noscripts@import(t_substitute_commentstreplaceR�RWR�RO(RR*((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyRU�scCsPt|�}t|t�r*t|�}ntj|�}||�t||�S(N(R,R�t
basestringRtcopytdeepcopyR(RR1tresult_typeRu((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR�s
N((.t__name__t
__module__t__doc__R�RERKR?ROR*R_R/RaR[RcRfRhRiReRCRDRBRoRGRRHRrR�RAR�RtdictR�RRtR`R�R@R�RNtretcompiletSRSR�RUR(((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR
ZsRZ						�						sb(?P<body>https?://(?P<host>[a-z0-9._-]+)(?:/[/\-_.,a-z0-9%&?;=~]*)?(?:\([/\-_.,a-z0-9%&?;=~]*\))?)s9mailto:(?P<body>[a-z0-9._-]+@(?P<host>[a-z0-9_._]+[a-z]))R8tpreR!R0R7R$s
^localhosts\bexample\.(?:com|org|net)$s^127\.0\.0\.1$tnolinkcCsG|j|krdS|jd�}|rX|j�}x!|D]}||kr;dSq;Wnx�t|�D]�}t|d|d|d|d|�|jret|j||d|j�\}}	|	r�||_|j|�}
|	||
d|
d+q�qeqeW|j	rCt|j	||d|j�\}}|rC||_	||d	*qCndS(
s
    Turn any URLs into links.

    It will search for links identified by the given regular
    expressions (by default mailto and http(s) links).

    It won't link text in an element in avoid_elements, or an element
    with a class in avoid_classes.  It won't link to anything with a
    host that matches one of the regular expressions in avoid_hosts
    (default localhost and 127.0.0.1).

    If you pass in an element, the element's tail will not be
    substituted, only the contents of the element.
    Ntclasstlink_regexestavoid_elementstavoid_hostst
avoid_classestfactoryii(
R>RQR�RVRttailt
_link_texttmakeelementtindexRZ(RvR�R�R�R�t
class_nametmatch_classtchildRZt
tail_childrenR�tpre_children((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyRs4
	!		!	cCs"d}g}d}xd\}}x�|D]�}	|}
xh|	j|d|
�}|dkr\Pn|jd�}x.|D]%}
|
j|�rr|j�}
PqrqrWPq7|dkr�q(n|dks�|j�|kr(|}|j�}q(q(W|dkr|r
||d_n|}Pn|jd�}|j�}|jd�sM|jd�rd|d8}|d }n||j� }|r�||d_n|}|d	�}|jd
|�|jd�}|s�|}n|jd�s�|jd�r�|d }n||_|j	|�||}q||fS(
NR+itposthosti����t.t,iR$Rtbody(NN(
ReR�tgrouptendtstartR�tendswithRARZRj(RZR�R�R�tleading_textR_tlast_post
best_matchtbest_postregext	regex_postmatchR�t
host_regexRR�t	prev_textR�R�((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR�Ds^



	
	

cOsVt|�}t|t�r*t|�}ntj|�}t|||�t||�S(N(R,R�R�RR�R�RR(R1targsRR�Ru((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR~stnobreaki(i c	Cs�|jtkrdS|jd�}|rnt}|j�}x$|D]}||krAt}PqAqAW|rndSn|jr�t|j||�|_nxT|D]L}t|d|d|d|d|�|j	r�t|j	||�|_	q�q�WdS(s�
    Breaks any long words found in the body of the text (not attributes).

    Doesn't effect any of the tags in avoid_elements, by default
    ``<textarea>`` and ``<pre>``

    Breaks words by inserting &#8203;, which is a unicode character
    for Zero Width Space character.  This generally takes up no space
    in rendering, but does copy as a space, and in monospace contexts
    usually takes up space.

    See http://www.cs.tut.fi/~jkorpela/html/nobr.html for a discussion
    NR�t	max_widthR�R�tbreak_character(
R>t_avoid_word_break_elementsRQROR�R�RZt_break_textR
R�(	RvR�R�R�R�R�t
dont_breaktavoidR�((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR
�s*
	
	cOs5t|�}t|�}t|||�t||�S(N(R,RR
R(R1R�RR�Ru((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR�scCsZ|j�}xG|D]?}t|�|krt|||�}|j||�}qqW|S(N(R�tlent
_insert_breakR�(RZR�R�twordstwordtreplacement((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR��s
s[^a-z]cCs�|}d}x�t|�|kr�|| }ttj|��}|r||d}|j�|dkr|||j� }q|n|||7}|t|�}qW||7}|S(NR+i����i
(R�RVt_break_prefer_retfinditerR�(R�twidthR�t	orig_wordtresultR�tbreakst
last_break((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyR��s


(6R�R�R�turlparseRtImportErrorturllib.parsetlxmlRt	lxml.htmlRRRRRRtunichrt	NameErrortchrtunicodetstrtbytesR�t__all__R�R�tIRRRTR�RSR�R�tXPathRPRsR"R
R	Rt
_link_regexest_avoid_elementst_avoid_hostst_avoid_classesRR�RR�t_avoid_word_break_classesR
RR�R�R�(((s5/usr/lib64/python2.7/site-packages/lxml/html/clean.pyt<module>s�







	��			*	:			&