OIeUDA!JVxNG2na6g_7gnA4LcmhI3O``xLb
zJgIs1=AKA9>5#32zaD*j12QFF(b)=_YJw5TgMA=5OO!l#2;T<64%cwaNVKeCJe~u$;
zZ>jX)n{r`?@y>I-Mxf9CX6XLd-?Ba9UYk%*@L0xg9x!Vh#{~^i$7b?BV
zwuqs2Ln;o8q!8s;x$NmRdpiml$m7LEqogOUuD0)5Z>tR1Jl{kMDg}Z(o{%aSFGX+G
zG?JhDK6hbey|}Z_QvP6BANKL8g0PQ4V6|;w$Kb7lT!_#eCQ$o&=dm%J#v~Q~UR(LZ
zpeI^&Awo>G6fmD+*w}3)Okb50-tdE|`2BpOb4J_sncU?cc-sV^wekH#y@AP!)*81Q
zec{CfUZvz&q%{ozOIR)*G<}K@<`6Zzx1P+N0e3}%v~_0I&7g4K=IW0I*Cxj>ziaQy
zcDXgK%Ae|XxkoNlxt{~<2bV?bh|m4#Dp%9~J|qxZB7Q$jZZ{?v4;!b*)j2KUff4-WWXOMovO8~JWutyTGIi+A$#^l0LC~m)!wrH$j;hG7?dt2E&Y+e3=sbh}@x}FG!%4?h*ft
z<4oT7dPop%QzC&j0!pG4`PuKo$?joZg2?wjA>~2Q*Mt*t8$-5+F}!lGeMdtidV`
z1nHad6z)^$B#;~+A{UcK2T&SSI|b$7bXSmHi45?!oWboE^X8gX;rkpWnx|D
zq|U(WO+jgM7p1+Ebxp&o;Ifq9wt^1{P|pw{u?)R`MoL`u)GId#!*Z4`P$z13K0|e(
zCE+AFbYv=XMB{d0Zm?rAvj1bw47(5pyWsrmkrl(#;WO0vF%0dFl8J*7HzyeyPsqtV
z72I;42bx6VjEmjvj2&j)k>QjQX1SR}V7BfEPsTHEAL9swI7CQ$u_N1h;2jPGwVVGr+885{v9yB*l2`E@e
z7%!zLc1#8aaW@b6>X`>lJ6Y67noSH)EiNQo7MMDYAhsbhoDTWY4#I$J%I0jYFBVP=9EAZXIwS%V16S@3&9FwLUb;|j%0w>jM7zdh1{_zn>)(sX7bc}kg5HK
zX#x3JdX99tYR
z0hu%xE!@r%4&z>71Cyn*9MuI|?Js7&8#V7+68JS`!g2@d8xFU^0@v*+>eCTApoFW~
z2}l~rER#lU>4}|}`P;GGT{AP3$#{SuyF3E5%t0)iOBOTFN!ztWHTNSEmDHN=Gb|SQ
zfg7$96&!*U>?Q1+GBOezz>MPB@`H!qFPd$LAOS8pp+~@^Wo}2ZU`D40`H`w8SBTdV>Cv+TYN<9wOWCKy>sdGC@iA
zpc0DFF4hR=|FX<=#Vz*eL?$c`#dS>(U>9Faanp{FrW=-XI76EJg{krzJ>iEKF(*2M
z7vZO&NJX2sl3J3Knh(BLxhkQ3QG3kxq{?
z+~k|gEJ`3DJ1ccEfzVwgw5Ru`CP8))Piac(a27bgF-9~=>0d#4ZUxQ6rt(Z%*&Lvb
zK&%kfDR`ELyfIN33Ka#unSwQwssJXd;sCak0%CIrw!AP41{C}W)EW*Cbox0&y+KZt
zJA~R3?yM4GEQ|inCcaLGzs?@!Ic(4etulsL-Kuq+ZbTUi9Gd$i8ilwstg;FZNfX~x
z(`ANMPjXXEkhMTpOpjDlZ$ylgP3~(aZn+j?)-BCPD}<;_bI=bRiFbgs53pH>4<%Hz
z2~@f%y&*njKu0+gjTZ)8m@b%#s>H4kG5M*=#xS*P=}p)(AxDKr~36vJ*uwpV?s`KM0r
z`8yiAauIL1)0K`ZaeBT&bT7$B)Msh$>0mGJWFPKx!8Kf=ykxJ@77$s|x)|z`KZmc`
zIjg_8zFA4F$dpnxxGYZve^^%gDRUesUn_bimjfOWd>{p5ATmB9tD@d
zT^*Be9n0k)>z~G#@D9_b3J&-ow&@{W{Grt@iJzB)(|@}JWroU|19X@nvgI}b!{2cEJq}Byn3<+
z4P{&Cg2*Ge#=I^=PrKy3FUPQgTMAQKr0DucWcvI*#=q
z$+iZ<8H|?bpx6#*vkZJQT&z|QYZAcAPw09FCc0Axe5%@fr+}0G@7U?|Q)#w1Zrw3S
zIpgO^U0YLA-`nQJ)Bt>kn65)sRabw^^jP(@hI`k9ZO3+3eofc(Apgwlw7IPn?ERweCYno}yy?q#9ArBbtj7g>yARuI
zVwu{#j30Jfd~mL4fJVTBsC$5(fFH+i(ZzbIG-3)?4|i~J*fD2`Pj7^Gdub!3i~D0q
z^mCM7Z&{H%NYZaPm8+P+eEDb1veM_!T@KzZ?ur^daD}l8D}!~;MsC)CKjbv$`?Vy^
z3kqJ`KWn(0Whu9!M=(O4y&{H?$tf_wCcozKsSItm=J^>9cn63@&!f()fu66$$FzK?
zFHMEDn^FqhrcRj1PQ}mY;M)xl3amO^ERe(^UlF^zlJuF#lGW00*2rz9(r*NJt;LKj
zhs+pk$;~`}Y&O`5snjVVc&A0Uhcf@{&1ydx|@+3&&B?y}a5pAhV-kgg~)
z>^lqWJ6-wA5q$OzbiF+6xy^vk-jOfuy&82B1-5h
z53x}uFa^+`O8LY{i!C9%T2P)mHoIQ8sGYFPJGNFpSIb+ok2@Mf-Eryt<7WS7-!Hhd
zV8p}zbWHx#w|0i|ax?Jy)bHywRG%Uw?kp1TkNC&I%KHkN{jz+Q0Ncz`tcILRE1`jz5JpemXc-?y!=R^TrQw{_d4`1-x)5>8y9pCE>2Kw)cp=96%Ll{uX@XyIQLeK5%@P?yjOB3o7*Bs*|67GyyU6o$
zkeQy-$MxPn?#jD?tGhv%yFvPQg95~8LcGOby2Wz1#fiVg1Kyy|-4fN^k|5oYG2Kxp
z-r4a9LkHa97$6Ov-xd8qWMaxm;<#r)x^KCeC{6_7bhs1fyA%9(4=I>noQAstPF!XD
zu)|JKR`?(t{~!l^I3awLGHx`d&Gg!=Ki?x?dvelQULS9*
z{WItffxja5$;vxH@GhmWYbmXur2wu28Qt
z-`;$*S#Rhdq+GX_ttyr>`**Uv_3W@W5Q;=~tzx&S0TZ~$uJ`BFa*2
zq7@WP%~2Q<&o!Y>BdOkuQU%@TMg*R1*-;cxdC8sR;&s&8b%mh$Msem
z+eFMM+TAefw*-#MvXdmCk1vx5zV_yz2vIcqofLVpYitU5u$;6wMNx{g3~kji9nYdd
zqeV1B^~0Sk^AI{)1w%`@_AWkb$iQ
z91U!$5G?Da6`hg%5P>^pJ
z7&JHtC^-24G(i79H~jx|C@>Iu_8-?Edm!xJT>=DwfX1huPZtOQL)?^&P$C%$MI__Q
zflfRaibk{*;Hba$sFmWBEg_5+ZD6~v@(S}+@R}A
z8uaqH0$~@@nu+F$r7|V1RyAq2O7%44BI{4jN3*p`t)4IlI?nyoCZ$gj0$M|cxmNM5
z0rj`l8r?3JkizXLkGcT^GEh}?xuhG>Ay^b3LQVtI?nnrZWS*{;v)N=ggT?4&d(&8#
z#6=jSe2VL0H@9*$<=>8$i&&Gs$+(%jNA1RTj=$Ri32j2VV4hGT0(eDsbH%5$7E`{D
z&ZjfUNP5sK>4Di?Sb#Bm_xH!^-6lBT4dc$+?d`Bty1c{Phqlh;)%mqN(BpIOIp{*N
zuebgE*){bkIZ$>abvY0U6WcJ@aiuxI6FCcGKLk}nYCm+>=sPR>mV`XPo9z5CU&Hj+
zqR@}}ApO9f4if4>^E$CnUEs$FhF+}aF?M=v)xK1+`+m?EL4s%;7I`8Lu6D6U4Mk~Y
zat1{!if`10>M;}9wHuBbgL}n6I(@JgslVD!n2j`T*#0P0=+e^P)}UAtJ?Nh->#}xB$^q7TgHzQ<3R7uE+kZ-hil`n
zX1kVz%A>NjyYRhEqfrSWlmAM{=1pRySd#wPldNV(U!pdjD8uN(6Xu^suj`4bl9Wak
zqm~p--A`#kAdpz?hJ@GUaL#
zs#;f>6uJ@ChA3G1h;3U%rYuxWor5Q|^!_xgiU)Rnc;BDY{wi7#xo
zW&$Ogt^b!Z_D2xlCJ7tq8$yT&7FqP{0k(k3-V5o{cCS&@dP?i0#fMLa#o;!cI=p-R
z#Ij-ZYz{kaA~92C5gj5HCO1$@h(6MS&*35Y*PVQF4!_2^dUxUE8g2yLo4iKo>n6|V
zmre--imf`#@5WusM~p5IrZwk(LQBaRUUGo!+=KBp+&)gJ(rxNq5Lp*++--zaDe?W4
ze`lBnK2#G6)Q`*)aSXkqFap4CUaz
zgFIJEf>i(hd8)_a1p`R4<$7t$RX*XQrG_b-T43p0yNnQcXU5a@aJ|#
z>bozpi78i!O;;gY0}WB>7~p^XAb$fufIc%^2Pr7WvZea~)>3kZXYB1lbR=I!(jH*~
z39hzM^uIJ|mAqsO3}jF$VAHt=3n-$fZq?2kL;F)~LkTR;^T9I@3NGyCWjE2F1zNeJ
z>c#2p>Ix1d(!#sq%WJi&NuXg=hfw^rW5CYvpfQq1&=@gj6n_{Qg$muV?;nxw1&Z*YAcTE1<4BoG&8uRjD8|1U$
zrNlx&fqzV!wKeauhOirTviXg>J#V5^{Smd}z?!mc@sSPe%3@Z*6BA-ay;PEcmKrH^
zW%TK`&cc;mm7E5b-lh>-J>EiG5-@4(){MuKW*tkRQjQPZV#CHD
zL2`k#ffoGKdK}CkdAU+lXCKPg`Kc)MKhVtYsT1@+XyzpdIymqD%o9JL@v-~!7($?t
zXywKo3x>kL|1W5!WF%1Jf1sJtNuY$4w&NxW<#oS0
zACCq+y3Ky@xSf4NGuvi+I-f7M3$TFbd`e8K|3NdEB6>ZppMAW%dw3i>g#N>45+U8?
zdp%uzQV|PZ4_FYJ9PO9w`M;f0X?#b$N$ffQfXpEDA=yyf3&MvL-%-YMCpQR&Ke0Fn
zCi;3_^Wr~0F0{GqSvL+rMO8Z#;(|>fi$T3QBa_lfOfO70i99w=6od3CPWq64Fo{=?
zfH_V<5zsD4(G+=&7XEgV>V_MV9!Co^+gVM;we+AHXV_|lCb$xj97XF`xj&d?dwMtH
zMZ65Kmok{mN^CL}e;&>`|2m*nD&%DZoD~4caZwc$RjkkClk@@SRw?G26(#x3Q8eXT
zGZh)7d2zIVOOq=%X{*YUfUq{@b)~#jRSmVY=eDs=lZSPvkX4pdUYIt?8VGq>q@g|v
zV)XS+pY+60z6AJd+%I4I^0Rt{OUTyQGi1>sWXVHK~S#lN(>0TGLRq7MqR+g@zx24r?*`{~eOExMVGka!0>2l-V
z%Nc5um^*+KS(=Y3aKj@lfr7>{`Hi&WXit<-pIh8p67FR;fse4GE*Xf+^V>Rq=3xT6
zM4)AZ+QxnST$BifXp1DeupJ6;>F0GAwiCn2L@XN$GCPVofP+Z4te>25>$*sruHs1
zk-vmqQLC`XOM*Hrhk`NygX_U^+};h&5Qc7zds6y3V{|z&0KAQR7$?qgI;QmCMO}^v
zkQ~0=eZuh?CO74#N}c?06m&q1;;dj9eNa4p<=i&=)Y9bYQjJ7}hcjDmq(G*fgUj3T
z0#w+>_?6q`Vj;Be)hu|jzynor`co52F$y2tZT8$;$<{Drg4s%B
zSsB*!r$Ntzrk*L0&YuAU(#M1VUL5Yg*HnE_+5J9{_chQcmFx{UdSev0e1vl~G@Za|
zMZrPVQrM9k@PSLemrm`e+U01oU!;~}FC%#0Pxqe=)zj-p@m1?v(ktR2%JF&Fd0>k%
zx(>EDUBWs`CIe+uAqAOLh>gS|?}bHqD$a>_73HkCSd&1et=QkpoUWY##6BrIXT>S>
z+<`HyO@;(g1nKd+r04Dkb_eeTKB=3^1)hH^ru2f+yH$@B1Ud;KrXIYIJ?0S|dB;+W
zR+;Lt14+rCwf}rIJB0N*SHv*cC>V-b#ib53`rfv|#ia^DKTguo>$Ysdlu8R~agY09
zIkR*Kb(d4f;c{k2#sjz0NXH&kL_I>*V$NLPxU`=0Mjp)Tp5A2bpJcM;b4tGntVhGb
zF3!>F)hR{Y@_lY>HO!RIIK)%1I=04riwG=EsQ74SrR3AOErxWx)8?$rL%^090=A4d
z>C>P$G>>cgWqt%+Mc=^<(}1{KaR7=ogAit8SF98rqTSgzWmcSXnuXc3%4q=X@*?<%
zOR1ow;!m(BUQQM#@#&BG2wp|6GX0%ptb0<#(@}
znul~KuYp%Kx_CN4I=R0aQ?&`x^POqao
zvGSywc)P0sR?nNpzTLKh*tPN{*{VPzP0d}7It}tWeSyK7q&mJZOJG*xWJR~L?c41}
zB7~D-FTHjqG?n?swma{z~l#*bGi3
z(Hbec0lFy%J_<9IX`iZ`UBKQ{dU1B{xdqVp!W44%${)aA(F9ZBp|BmGwRUKK_CS~#
zENNpCW`2S2;R#W9V&P_^D>N#ui(d;W?EA%w}
ztk6~;3Ft1zD2C=*8_9W{TB5v%6lu839XZ%EQ65Cd@rby{eq*>yn^&Rcoi0&|25BxF
zs*2C;{@N0kyf%A^-R-#A7?}iY>fU4Qf6y#Za^a1^Wn7_|1FQah9ggW`3W=xL?6jXB
zJqa#-$_4ka9quZnZS@_~b2TPBBOP-5dtQ(ic1e^JYBQ2_TLhI(0DmAxc1Q?>JELeB
z00sRG;~Q)b(d06(PW(jddg!judZSfr;g(bi$W{*&yM={G054QRbLXV|0#(Xzw_uLo
zqbT?A<#a(72OPVqcd8jewAq4!c)hh6MMfA!YoRn!BU3QPrAI^^DA}8d
zKuGW5zOVD(G;97!3#=TEdOUzkSx@kPmW4SL#*ijLIdx=Hj%Ia=MoWth!qC8#Wa=}7
zYnyj6m-4T5Od@{vBBkOy7B;mbhCuC40Q4hf0K>UIRkSRP$h%my-c__{8bG9xVNSpI
z8?DM90m<#av!31Ie7=V434m+kZ($5J8s*f;mCSAVVNw
zgFMees`evtlORK5r=?=UJQ@-aAcN3x2j`PnkV|2>ths147-S<`;{LDV&MT_P=xg%{
z5TuACp-6`yEfnb;HS_?2^xl=;tAJ9aM!?XENDIA(UPLe`z4t0rItoY=l??xH*38v>
z7jrYS*13Q8%|7S6`~05gL1yaThpIcK6WI`_x26v%f=JPE9%qy_-JpfKH-4v-wO{}*
zk3B7i=?%=30-2GEG}ru+<~C>XXv$Q&RhxR^joJ9UWla0NLHzhpolL-4dSudV6
zU9Ik(&V-k6T7TAd38t(TAj
zV<4Xpo;fgRwPYLwOj->tfRIJnY_eE@f$`E1_b}A#+2Z;&kkX_*;x
zk?f^3m3~-UH{8}~ke*y3uF4u*jVOemv$l1J)xf|kHrfxFfGlh4yZFKUqscPsMd}9X
zmwUI;Pg9O>b3Ds*As2NY7Jrv7lR{%6p1%^WFu-};4!f(s1x4K;*=ur*<9y_H2+2f>
zl5XW$Mx~-j>UN>v2Gq{8FqhbuoB&%!BwWfQ2|idOe@C3b`!d9ki&`3t&hSPH)TD>en7kQ*>;H0nkU5*9_g(
z+NSFni&|y?{9!;37ZdH9vgPb$y;{hi){#AW!P7#Rpr%c!)33!>93ZdwtnxfNA`X(k
zC7W&SNHot~N|JRH1nHuGes3v4s`qwpO4C`>I(7;IVKevfq*B^_{sUxkQ}CDOna&6o
zXP!N0yV#e?uU@Ji5Vx#7YPNS-*eua%kJddPSE2_=b_n&pq0u>kh-#?%h`4q^T_Hf2
zak7a09~U8S*9FDcfoPj;`J&9ZSLaCXCaJikAoH2@_qoOpMh4(Esmuo{YyuoiF6-|E
z(wFeA*RugHN`TwxWUKP6x_I~*>D+Iv7zt%sPJMagO;extho$Ug=^VEK*|29}tu*pg
zsugVeu@B~Ui#`#yoQo6-P6FY^iPj(k`=&U`9rqJ1x*q`wcD%v^#GcJ*RyX$C1aNR<
zMY`0?`z{2UcmcwwTJfxrNO_>RBdF{Uc@yWdV^smm0S+wN=~T+jck|qI~jcwfPl0(PB3{ZQ^niR
zc&wF(RR&tSR7(y9Bq88C>WM8v
zAh=@_WSxv^yr`lTQ*qMcRh~V6SpyXfPdaxnlc=VGy~l?`IbX55XOnKUr;|vv!@S6I
zv{T@jxd?_Nf}{w(e&=E~pj;KGJ1!#c_h(WtplY5`{%??(NcLCGK7(O_FM{tPzcQA|UGNE7xXZ4Z9Ax-65^j-fSR?lQ26
z$PB8ama#ktGOa>MNrNM^0S9Zuy7^^5wyZd9ayvF~Wf)jAuqSvJT!S9aVIyk>kQsKQC5)Q(AWk
z5kRs32xOHh2Hk0AN$=1b!1F==UO2M%hDBW$)iE@s_D^A*tNJn{=oTk{<83a7Sz7z7
z_e{|Q%oBfj$w-i3$@bSgN4fVnn)QaFo?ZN+GkT>|
z`^CmVpv~dK>yHMu?iFD?AKoiHN+b>*k7_3^Z!hyx&jNa)-kW=%Ws0vfI`pnffomVP
zvGLJ^#gV4D6mvnp*UOSBSPtqTggZ9O5>qYZAMs!>z6RFim#`J17c%M4j=L4VTtcYJ
zi@tH>M#&Tj?NQ#2q~QIX*ugncse79`#B`>COU~qPO~yge_nN!=f!fn-)iigo<8V5F
z$uX{9T2n19^stIGAO9S2X`96;miDD6R0J4N1d#pp(NDl4Y_a`4yKqL9brAS>X2{5}
z>mK<=(1?R=WB~K(E-!dqpocBEb|NPN$pCOPkH>pby0a|{_(Z-J_te#1*Ubmf=B^7d
z%T+Kzo0)Q2|H@Q_rBO{d%B#*13U8QolQ9f`MqH;ssv~AE)&?Q~D#~
z7U~$2PHXq1xn6)L9GPMottrp{tv-*N+2WS~oJUBmQ|>rt&oRAe5w&ic!qs1@DYn9M8CkgYd%5JCZVR-cxD8w3e5U}XgC3E*A{V6H~e;R69OmmNZ-_C
z$OBL523~3M%?OOSL*UZ3Eh<%Gw!ak7U7Ohd9z5JX)II*jNe&pcmi
z&<%!haCqmU(qb)3={flak{&r=BOmuUZ#@pG_MmwQ3ajd5#V
zYuE27L34COzcUlaEhW%7}_c&{nPa|he3N+r1-Zn2FToNMd0|otI(_bXRhWBIPGIPO4~#fM_smWH<)~?SmY3HYISDEY45e^P&!_7FoIG25
z^2$v@O)Z&CE&0~&d|5Y{ZK*qyJXz^PRXD8Mh)h&^t4w+t
z*)Aq>!@A~f_vxHkDmDIm8ksahtEm*%%LO1{qcdi6bg8#+@O4
z^UCWLhSiH%=l9n%M~YjhIeyc1$M+Xg)6NDl!Z!^PqRp=LHnI)?%TB845Yu)-8<6Tt!e549)
zqiO{ew)bj=xkw@R>wS!)-2k}eG9o0dqP$v!tT<1sDN`Y=@7{YsHE=ntVYn>wwM^X2
z>+2G?vIzYH@MgBC3eDzmTe<0L#(tJq_EFFUd*FOR8RxUY`d
z8<`qJqKoQh)``HTv@7p`D!5A~5%s*>cnMiAc{uXKV+d$MuSlgEW;Qq^
z{G}1qB`IURbHC&1$KgUhf;tWA)Q~KNf_oU_3DxayWM9=|p;!I*!EZNh7_J9DN!Wm1
zv91+JK2SVdk3{_39mpX95!J6q(?Eg)anmrD~Q%tDp3f{QMJe%
zx8HdnY6F7=iV%(#zql(X0DaJ!Qp!k(UTZ17k%4k(#ohJMa}8~qP{f-DYK#GQ)C*1O
z{Nqo#m9ge?viz(6W?-BYN_C3?85O!+x(h41!;Ri)!#LNe!PzIFA#nmW3#L7XMWGo%
z0hmm7|M^8Ki#UmJPo`wy2&6T0ommvXAePp6NXSsbtofJrkS5cq-q(~~tTHJB>6;l^
zGk#RjUMr@q
z5tSU(U!1eJvnM4mUsC#uMJw;+KkvI=%C+PLWWYDQEqL(9y9fa>v|9WO~8vMGPwb7*8kY)?7dq2SxO*o6VRom#SO0H>4)4|&q6TEa(9H2%1qn&oqmjCC`KL^guw=E7=o22TwE6CI^+20s9
zmeV|e?v#Y%@7z2(fn-)3j)D_)g)SRZj83T$G`PPTcq^8z`8V3ea92ftG+bxMegh
zYDM0eZFrU3t`$O=?hq~9xUR@F_0H-F$G+kfYwJCCFQ$q@+FPw(DqSIph@+79=7eGR
zg-WZzVZ3bjZ><2P)U*$Bhe*pRQvh3(xRITvlQ!w*eM)~ty5^JU7m?4qH?D+a4EYVt
zP__VPuY4UxO}1Cz$c3QOT5HbrSP4@SPn1DT3jdI&wwfu_Sv-qw1Su$7r~u{o_4z3m
z%$6RmXh{&mx_KU*eCiF2xYv>qAg%o5SSERlpPT-b<7b3RGKMMPvPoc^+*d9u{z*GJ
z5{VAaq;xT(?#~A^Td0t>`IvI!{oaytz^Fs4xX@R49a#ziA(|xb^B|2Jx%THZ(Wc@Vnoz&sMa6nCu^7kLn%Cz}
z)`8xg0`WK=osTTnC0i+rS#GMWJ`;Gg{$7d8@G^6{<^JW#bo!XxqvQb7*hDRYj`3;_
z{n(}ajn~TRWECYAcwa}u#7JojPqQZXUc8PiV|(Z@CxkIX1z3qYwC{;G$vo{f#k9fx{c)?LF4zYDQ2flxyZ0-imi-toRW1
zfEl=yV%R3y)T}g#ze#0-R(Y!Pm4E?c!7{z~A)qQ^9yQIENOH>OREO(z4)vC$*82^l@G}p4}q*V$P&g7Mdr+X
z+1>X~y{E>FP4Dgjy-4FGT(%qpA6BInc`D;OVPE+(_n@F*fmx@>&SK5)Rsk|?ag5J@
zsG2_|+oz6ytZ=irdhA*Nz|C05^}k{{Rpqz+^)NK(V8pitBe>;tC!gm%+g+VT#Fy(u
zNu^zj&J~)Y)rsf}?voqWKo1(k*5<;wkP1t${)A#Ui(Z%Z^Jm9*U{YiV
zX@+hHjv+FTf>xal#Dwui!BWu$ne{NzzcI(}yEd*Ld>`)sAQ(3p+vybxSzPYjf-g$l
zC^#9w%kdtpzEd1Pc{0yLiDD@Aq7ywveKbY+1<)~x$tIFMASr@nw-;Chbu&wsnakj0
zc)@Dg#kqsrzM|;c*D}N8s*h%|G~pl3G9w(5A|5kvp*96`J)_{`95gBAtVtY(g&g$q
za(H(WlF)f_$-j~U@w73H5(~VXNen#dh20kI_Z`TkjgpEl6mZpH3S3OLx(L=bMaH{1
z@r1fqinw$hI*|0T{6j=6Pb}kpH}0WWZc{A4D-5B1ms|HUcU4?+vO>k-ZJLla37jtG
znMQ@{=j4#W(#QHehFIkc(S)#ev9Lc+&`6xnAW2P~bPST_8v6bTFVIF_aC;v2HkQCJ
zHZxx2{?kbgDc@Ma>ng9)USIasr{yhqDoM5t@rYK{%>~y}$f@}sOW7LCdJ}gz$
znMp^o6e*4uWqsH=#ZdP_Y!IU~c&AOS&RBgPL-va8%@|spDC_Z1QeDxP!P@Y+Lk2;@
z&B1CW!M%cySPtyJO_pivTA#fxY{#cG9xB~~Po!o;RdUF>>6%*py4#@ACVq{!RE^=*
zXRY%(ba_`%VZIdk(4kL_cmGahv=wRGOp&n5ig0Vx4{tpkJ{ulsr0lQC
z-7l}7+`oW^mouj4mcV-yrs1-lG?V~2YFjzTzfimBCcsnuS5qfk4Y
zisOfCdY`uU^0s_f1{@i-dvthubQ-BgOAjad^(L+&Iu8C!e7&{OwnN=7o}f>QU$@bv
zkJ8zIh%guH?oN8LtT@_Av{n5Ky3rts`lFbO-1)N4Hs
zO;)Q`*x6N~2u?3Rc+9+A?@<#002-
zv#$p48nbo8XDq8r1E&Yhu&R09oa%nD!NUdy9}PUKX0$YC?F4vh17@Ewv)=6-cWIin
zPSdOL)Py9|*@KK|l_!{nK6+EkY0eD!9u2DkFs%~v!FN#Elx^v9O@b;I~1d8v$(t2N(M*ZT<1rnnXF`aat(8@;@qe|N5x5xkJL
zV)E`0CPjJ7d7%~Ky3jAQfMAja#*L-$@m@3CD(E}3S7s__##x7H?pUbRJkkb5X%`&6
zBUaX~D%N&YUUC)aAe}L7_A|pgHO)&~T4XY+C|l|&pKG(z;dGm%^V7u(_b+YCGrJY1
z9#Qt3tNF~BRc)E^SWNN+>vDf6O(-_so5(MUH=EzkO_M4k;D-?$n!k*Mu`{i}#4O}F
zEnrG3_fh&Id$s%;54@Wy=d!
zu|nph#)G+y5&a!a%k~_@)TMZfFP1u;_nA9P;;{Of%$BMjEQ_kXol;~T3K*Ob#!|E
z%u$6rrDho^q&8tpBzsjf|F&tKrDUD4+4^UsNj`-MSY-qA)L?r?bH2#{-MPx)Zk4~H
zcJ`FjOt!W$Ej)(hBjV=I>uyqBgMt
z<0SuyGqrA*+;lGA#A+-xrfoi9*(ydX$DVH}&1Q?tS}Ta@Do1a1x0`kR>l(ION9Hc6
zS@u4B+^?9MC;-%h1|g_;3$$6L^(?3K6ZLLavW1-i*R)akcjFQ}!RVW?S^Zfq2F~duAm0*LEsnro^^{Ldo;Wk;S~k%G$5b
zA2mB-rM2(T?C0lhmRvZM5<3^CV;b5WDs%QSh>c#}q@~e0o>o`~_wI+x?%%=gSmD;`
zKJC}3OopkvD6)59{cgF+X$QQ!63L63KeCwVJeXQ>Sz})D94YviZn1iFfa5ysnRWTX
za`?sG)uUu|3jEC?+S14m(Il}~bKod;L+_yY)qKlt;KFq%(HcJ^lu9cdcHO9#
zN?%wwdgbm>#lC$OGJPN7ap*2~neKtF@hH9WxQ_PN?)KKH%^RGEUAn@mJ+G9Yd
zCm_ZH_~e+pl#{scM{2GoLCo>JcgFdKqbBE);?3eoS=HQHtT(YeSSihaYA2u
z!Vt5?PV2;YXKsaeJdCWrMVL8RbM>=yUkpWD@boH4QI!n87xP*i9`JGK
z&qKV~=P*v$9S>JdVxh@Q-J1kx7O?zNPU2Ol1Yx1mGU!S~EwCF^t$wkOFjJVSV0LMC
zo2~a)agUNUayM!U__cpa_tma;g%KWfA_IywQe#cH9#^$u5s49a+K@P}6Q#iv0VDs{
zZO^C2p2=T|$(TAhm9k8*>sz43<>wsWI9jPcjrvQ4!O633*^s`u$w);v4Sl2==(_T3;m|y$KE|
zIR8mF@?`bVQY&DVX3fGsSowZ9;Xb#eiD=din=++4QGqI+v}`Sk&c4jXb2og)MwL0*
z(Kv`PWNT5G(_eBU=44@R<1Nbx_j5#J;m(yaB$@s^_@U3SMF3EyOBtzB~
z8n%MlO3}`3DU3zvl$*rpguM8MHmoP&2$m0qvxb_a$7N*NFgsd@I~m00M|t!**{do)
zd|8wnu-Nt@!l_=m)YR@Tye!&+z>p{I%}u{;dQ9T)R8Pkn{iPz=-ssKZx*Yh88?aP!(tvc}C8bj#Gmlss+{z(Bgf9ZHC(S
zlO#W))%5#v%7F8bYSk;0?9VQMM%+TBe4vJ>6;|OTUjy;wPGOJG2DhN6Np|vF%jar6
zCag0r`Hm?w_mWOi#Nr#l5Awe&9r~H?$T2rREbTu+T=EBfPrbv9I%$>alk!3yZ(RK9
z5ye(M?+|Ba4x0dv?YRuk;+B7Y()&qzK4VNidptt;a-^w=tUTVPXD0%FwqS3@=!>#r
z{DbZD#vS=DPuIuqha2oHEPv{{ve9eFGr7Z3=VMm6+q7<#QBIS7pEj`>^N#9~SiHQb
zTe-E6Mve6nCHarvJNYrAzt;E9a{~4Ns%m4fa6#7rGzYZq<
z>JyWC4ia1V^(~#K^Zyinuqpl*&^wUAqgP=*P+vThbYb})ptoe?y_C=X@<2oBSRTS-
zu|fQJRUz>vmQ0`Szl0x{{{nhvDn(<6h1w@9hcU)IC}xf3s)Yu}DTNs_+6Ou{&YOcD
zG+Js_Is#tSk6g`IeYg1l}nt=P>z^aG7tx#NScnXzz}Z^La3J7bUj
zi4?cqZ`_+I)2pc7gOR{jc-Cj1KK?FWcq#gL>{I8TOWx0{si6}_9l{{91vAR7
zEN=>e7db(K>A<>8vC3l`kBHwfU6p
zy?Be3REgV4BU+eLh7ve^PE0e-HX5WRtR{G_A+^EtJ<&j`XcKMIYl7w@qbt%>@^0@_
zCIBhxynCwgSh7$_6Xgg=10H5L*p&vvZklpxvC>I#(ZU6d>
zNYS>SE7xGA!2R|z$MkY{eC%G5yC?i!t}iiqpsc~!VTj<}4IF%*VB$16xmaYnqJmiZ
z_jm;f@i?lgb99$DFXLfTWR109hj}$HmT;EYd@$9%{#VxgXwc9-rQV=w?LACOQro00
zVAHo_N0P9>?`_TK#M#Ow295k
zE!e(Rhr74jM)lf{(W=i`(C@Pija-@7ljvXZ5yTP92rQ}C9tv0-OCKLRq&Jtc^gnz5
zWsCHMZs`{}cYbXYD`*j&4U7-B-Xm_(-QcPa4DNL8UKN*mL=5~PquF@}af1-SFg?~t
zB>yw_}a8m^68P@E%;_nxz27agm<
z6j(k2?GuxtO(d-TmbyTp&wG8M^e+OR0m
zR3?gYjBtVF6B1%kYp%(?wZfMH*#M3PMx
zGBk0{Hj
Date: Mon, 25 Aug 2025 15:12:58 +0800
Subject: [PATCH 2/3] feat: fix lint
---
dingo/model/llm/llm_meta_rater_evaluation.py | 22 +++++------
dingo/model/prompt/prompt_meta_rater.py | 38 +++++++++----------
.../meta_rater/sdk_meta_rater_evaluation.py | 3 +-
test/data/test_meta_rater.jsonl | 2 +-
4 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/dingo/model/llm/llm_meta_rater_evaluation.py b/dingo/model/llm/llm_meta_rater_evaluation.py
index 82d1f318..bcca3148 100644
--- a/dingo/model/llm/llm_meta_rater_evaluation.py
+++ b/dingo/model/llm/llm_meta_rater_evaluation.py
@@ -22,26 +22,26 @@
class LLMMetaRaterEvaluation(BaseOpenAI):
"""
Unified LLM model for Meta-rater PRRC dimensions evaluation.
-
+
This model provides a single interface for evaluating multiple aspects
of text quality based on the Meta-rater paper's PRRC framework:
- Professionalism: Degree of expertise required
- - Readability: Clarity and coherence
+ - Readability: Clarity and coherence
- Reasoning: Logical depth and complexity
- Cleanliness: Formatting and content appropriateness
-
+
The specific evaluation type is determined by the prompt used.
"""
- prompt = PromptMetaRaterProfessionalism # Default prompt
+ prompt = PromptMetaRaterProfessionalism # Default prompt
@classmethod
def build_messages(cls, input_data: Data) -> List:
"""
Build messages for the LLM API call.
-
+
Args:
input_data: Data object containing text content to evaluate
-
+
Returns:
List: Formatted messages for LLM API
"""
@@ -53,10 +53,10 @@ def build_messages(cls, input_data: Data) -> List:
def process_response(cls, response: str) -> ModelRes:
"""
Process the LLM response for Meta-rater evaluation.
-
+
Args:
response: Raw response string from the LLM
-
+
Returns:
ModelRes: Processed evaluation results with score and reason
"""
@@ -70,7 +70,7 @@ def process_response(cls, response: str) -> ModelRes:
cleaned_response = cleaned_response[3:]
if cleaned_response.endswith('```'):
cleaned_response = cleaned_response[:-3]
-
+
try:
response_json = json.loads(cleaned_response)
except json.JSONDecodeError:
@@ -79,9 +79,9 @@ def process_response(cls, response: str) -> ModelRes:
# Extract score and reason from response
score = response_json.get('score', 0)
reason = response_json.get('reason', '')
-
+
result = ModelRes()
-
+
# Meta-rater uses 1-5 scoring, with higher scores being better;
# We normalize this to binary classification for compatibility
# Scores >= 3 are considered "good quality", < 3 are "low quality"
diff --git a/dingo/model/prompt/prompt_meta_rater.py b/dingo/model/prompt/prompt_meta_rater.py
index 87f52f10..da6a57e0 100644
--- a/dingo/model/prompt/prompt_meta_rater.py
+++ b/dingo/model/prompt/prompt_meta_rater.py
@@ -17,13 +17,13 @@
You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate the PROFESSIONALISM of the text, that is, the degree of expertise and prerequisite knowledge required to comprehend it, using the additive 5-point scoring system described below. Your evaluation should be based on the depth, accuracy, and accessibility of the content, without considering the writing style, grammar, spelling, or punctuation in your scoring.
Points are accumulated based on the satisfaction of each criterion:
-- Add 1 point if the text is relatively simple and requires minimal technical knowledge or expertise to understand. The text might include nursery rhymes, children's books, or other basic content that is accessible to a broad audience. The information provided is straightforward and does not delve into complex concepts or specialized topics.
+- Add 1 point if the text is relatively simple and requires minimal technical knowledge or expertise to understand. The text might include nursery rhymes, children's books, or other basic content that is accessible to a broad audience. The information provided is straightforward and does not delve into complex concepts or specialized topics.
- Add another point if the text is somewhat more complex and might require a basic level of specialized knowledge to comprehend fully. Examples could include popular books, popular science articles, or novels. The content delves a little deeper into the subject matter, but it remains accessible to a reasonably broad audience.
- Award a third point if the text falls in the middle of the spectrum, requiring some degree of expertise to understand but not being overly complex or specialized. The content might encompass more advanced books, detailed articles, or introductions to complex topics. It provides a decent level of depth and detail, but it does not require an extensive background in the subject matter to understand.
- Grant a fourth point if the text is complicated and requires a significant level of expertise and technical knowledge. Examples might include academic papers, advanced textbooks, or detailed technical reports. The content is detailed and accurate, but it could be inaccessible to those without a strong background in the subject matter.
- Bestow a fifth point if the text is extremely high in professionalism, requiring a high degree of subject matter expertise and prerequisite knowledge. The text is likely limited to those with advanced understanding or experience in the field, such as advanced academic papers, complex technical manuals, or patents. The content is deep, accurate, and insightful, but largely inaccessible to those without a significant background in the topic.
-Here are three aspects that should NOT influence your judgement:
+Here are three aspects that should NOT influence your judgement:
(1) The specific language the text is written in
(2) The length of text
(3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on.
@@ -46,16 +46,16 @@
I am a data scientist interested in exploring data in the pre-training stage of large language models.
# OBJECTIVE #
-You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high READABILITY using the additive 5-point scoring system described below.
+You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high READABILITY using the additive 5-point scoring system described below.
-Points are accumulated based on the satisfaction of each criterion:
+Points are accumulated based on the satisfaction of each criterion:
- Add 1 point if the text is somewhat readable but contains significant issues with clarity or coherence. It might include complex vocabulary or sentence structures that require advanced reading skills, or it might have numerous grammar and spelling errors.
- Add another point if the text is generally clear and coherent, but there are sections that are difficult to comprehend due to occasional grammar, spelling errors, or convoluted sentence structures.
- Award a third point if the text is clear and coherent for the most part, using appropriate vocabulary and sentence structures that are easy to understand. Minor issues with grammar or spelling might still be present.
- Grant a fourth point if the text is very clear and coherent, with very few or no errors in grammar and spelling. The text uses proper punctuation, vocabulary, and sentence structures that are easy to follow and understand.
- Bestow a fifth point if the text is outstanding in its clarity and coherence. It uses language and sentence structures that are easy to comprehend, while also conveying ideas and nuances effectively. Minor errors in grammar, spelling, and punctuation are allowed, but they should not interfere with the overall understanding of the text.
-Here are three aspects that should NOT influence your judgement:
+Here are three aspects that should NOT influence your judgement:
(1) The specific language the text is written in
(2) The length of text
(3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on.
@@ -77,16 +77,16 @@
I am a data scientist interested in exploring data in the pre-training stage of large language models.
# OBJECTIVE #
-You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high REASONING using the additive 5-point scoring system described below.
+You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high REASONING using the additive 5-point scoring system described below.
-Points are accumulated based on the satisfaction of each criterion:
+Points are accumulated based on the satisfaction of each criterion:
Add 1 point if the content contains preliminary elements of reasoning, possibly involving a single causal relationship or simple logical judgments, but lacks in-depth analysis (e.g., presenting a viewpoint without supporting evidence or detailed explanations).
Add another point if the content demonstrates basic reasoning ability, incorporating some logical relationships that require the reader to engage in a certain level of thought. This may involve simple argumentative structures or examples, but the analysis remains superficial (e.g., providing a problem and a straightforward solution with some examples but lacking depth).
Award a third point if the content exhibits a good level of reasoning complexity, involving multiple reasoning steps that require more complex thought from the reader. The reader should be able to identify several interrelated arguments and may include some depth of analysis (e.g., analyzing how different factors influence an outcome or comparing various viewpoints).
Grant a fourth point if the content has a high level of reasoning complexity, including multi-layered logical reasoning and in-depth analysis. The reader needs to engage in complex thinking and can identify multiple interconnected arguments while conducting a comprehensive evaluation (e.g., analyzing multiple variables or assessing the pros and cons of different solutions).
Bestow a fifth point if the content excels in reasoning complexity, demanding deep analysis and innovative thinking from the reader. The reasoning process is complex and multidimensional, involving interdisciplinary knowledge, requiring the reader to integrate various pieces of information to make comprehensive judgments (e.g., discussing complex mathematical models, designing optimization algorithms, or engaging in high-level strategic thinking).
-Here are three aspects that should NOT influence your judgement:
+Here are three aspects that should NOT influence your judgement:
(1) The specific language the text is written in
(2) The length of text
(3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on.
@@ -97,7 +97,7 @@
professional, objective, formal, and clear.
# AUDIENCE #
Data scientists and other professionals interested in data for large language models.
-# RESPONSE #
+# RESPONSE #
Return the results in JSON format: {{"score": x, "reason": "xxx"}}.
Here is the text:
@@ -108,9 +108,9 @@
I am a data scientist interested in exploring data in the pre-training stage of large language models.
# OBJECTIVE #
-You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high CLEANLINESS using the additive 5-point scoring system described below.
+You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high CLEANLINESS using the additive 5-point scoring system described below.
-Points are accumulated based on the satisfaction of each criterion:
+Points are accumulated based on the satisfaction of each criterion:
A score of 1 indicates serious issues that affect fluency.
A score of 2 indicates the text has obvious problems that affect fluency.
A score of 3 means that the text has some problems but does not seriously affect reading fluency.
@@ -124,7 +124,7 @@
- Completeness Content: The body of the article consists of complete sentences written naturally by humans, rather than phrases and lists, containing opinions, facts or stories.
However, if there is a $TRUNCATED$ symbol at the end, it should be considered as a manual article ending flag set by the author, and there is no need to consider completeness.
-Here are three aspects that should NOT influence your judgement:
+Here are three aspects that should NOT influence your judgement:
(1) The specific language the text is written in
(2) The length of text
(3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on.
@@ -146,8 +146,8 @@
class PromptMetaRaterProfessionalism(BasePrompt):
"""
Prompt class for Meta-rater Professionalism evaluation.
-
- Evaluates the degree of expertise and prerequisite knowledge required to
+
+ Evaluates the degree of expertise and prerequisite knowledge required to
comprehend text on a 5-point scale.
"""
@@ -169,8 +169,8 @@ class PromptMetaRaterProfessionalism(BasePrompt):
class PromptMetaRaterReadability(BasePrompt):
"""
Prompt class for Meta-rater Readability evaluation.
-
- Evaluates the clarity and coherence of text using appropriate vocabulary
+
+ Evaluates the clarity and coherence of text using appropriate vocabulary
and sentence structures on a 5-point scale.
"""
@@ -192,7 +192,7 @@ class PromptMetaRaterReadability(BasePrompt):
class PromptMetaRaterReasoning(BasePrompt):
"""
Prompt class for Meta-rater Reasoning evaluation.
-
+
Evaluates the reasoning complexity and logical depth of text content,
from simple logical judgments to complex multidimensional analysis on a 5-point scale.
"""
@@ -215,7 +215,7 @@ class PromptMetaRaterReasoning(BasePrompt):
class PromptMetaRaterCleanliness(BasePrompt):
"""
Prompt class for Meta-rater Cleanliness evaluation.
-
+
Evaluates text formatting, content appropriateness, and completeness,
assessing whether text appears human-edited and free from noise on a 5-point scale.
"""
@@ -231,4 +231,4 @@ class PromptMetaRaterCleanliness(BasePrompt):
"evaluation_results": ""
}
- content = META_RATER_CLEANLINESS_PROMPT
\ No newline at end of file
+ content = META_RATER_CLEANLINESS_PROMPT
diff --git a/examples/meta_rater/sdk_meta_rater_evaluation.py b/examples/meta_rater/sdk_meta_rater_evaluation.py
index ff035c45..49b22eec 100644
--- a/examples/meta_rater/sdk_meta_rater_evaluation.py
+++ b/examples/meta_rater/sdk_meta_rater_evaluation.py
@@ -1,7 +1,6 @@
from dingo.config import InputArgs
from dingo.exec import Executor
-
if __name__ == '__main__':
input_data = {
"input_path": "../../test/data/test_meta_rater.jsonl",
@@ -13,7 +12,7 @@
}
},
"executor": {
- "prompt_list": ["PromptMetaRaterProfessionalism"], # options: "PromptMetaRaterReadability", "PromptMetaRaterReasoning", "PromptMetaRaterCleanliness"
+ "prompt_list": ["PromptMetaRaterProfessionalism"], # options: "PromptMetaRaterReadability", "PromptMetaRaterReasoning", "PromptMetaRaterCleanliness"
"result_save": {
"bad": True,
"good": True
diff --git a/test/data/test_meta_rater.jsonl b/test/data/test_meta_rater.jsonl
index 5a826da2..b6db2bdc 100644
--- a/test/data/test_meta_rater.jsonl
+++ b/test/data/test_meta_rater.jsonl
@@ -4,4 +4,4 @@
{"id": "BkiUfybxK6wB9jjDilZ9", "content": "In and around Les Buttes-Chaumont\nLittle backstreets, colourful houses and greenery set the scene around Buttes-Chaumont\nA picturesque, steep park in the romantic style, charming steep-sided streets lined with coloured houses and courtyards full of flowers, a few unusual museums, a contemporary art venue representative of current artistic trends \u2026 Les Buttes-Chaumont is a popular and bucolic district and a great place for a pleasant stroll.\n1 Le quartier de la Mouza\u00efa\nBuilt around the rue Michel Hidalgo and rue de la Mouzaia, the La Mouza\u00efa district, with a so-called Algerian place name, is just the type of place you look for when visiting a city. The small houses were originally built for working class people and were built on the former gypsum quarries. It is full of plants and flowers.\n2 Parc des Buttes-Chaumont\nThe romantic garden par excellence. Created in 1864, the Parc des Buttes-Chaumont is the steepest of Paris's 426 parks and gardens. It is laid out like an Anglo-Chinese garden, whose irregular design was the opposite of so-called French-style gardens.\n3 Le Plateau - Exhibition centre\nImmaculate walls showcase contemporary art to the public with exhibitions and an experimental space that presents the works of artists in residence in Paris. 50 metres away (at 22, cours du 7th Art), the Antenne organizes educational events linked to contemporary creation.\n4 Mus\u00e9e des moulages de l'hopital Saint-Louis\nThis collection of medical waxworks \u2014 some 5,000 casts \u2014 bears witness to a way of learning about medicine and makes an important contribution to the history of dermatology from the 19th century.\nParis and its neighbourhoods\nParisian North-East\nDirection the north-east!\nIn and around La Villette\nBelleville and M\u00e9nilmontant\nThe P\u00e8re Lachaise cemetery and its surroundings\nOn the canals\nParis Eiffel Tower\nPlaces near to the Eiffel Tower\nOn and around the Champs-Elys\u00e9es\nTrocad\u00e9ro and Passy\nAlma and I\u00e9na\nIn and around Invalides\nBy the Eiffel Tower\nParis South-East\nLet 's head south-east !\nIn and around Bastille and Picpus\nBercy and the Cour-Saint-Emilion\nBois de Vincennes (wood)\nItalie, Tolbiac and the Chinese Quarter\nThe East of Paris\nParisian North-West\nGoing for a walk in the Parisian North-West\nClichy, Batignolles and Epinettes\nPlaine Monceau and Courcelles\nTernes and Champerret\nParis Passlib'\nMuseum & Exhibitions", "source": "commoncrawl", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 1}
{"id": "BkiUdRI5qdmC92mfkoma", "content": "(Host) Based on nearly complete campaign results, Secretary of State Deb Markowitz says Michael Badamo has almost certainly won the Progressive gubernatorial nomination. Badamo easily defeated Peter Diamondstone, and a write in effort to block Badamo was not successful.\n(Kinzel) Although the official election results will not be certified until next Monday, it's virtually certain that the Progressive Party will have a gubernatorial candidate on the ballot this fall.\nThere were two candidates running in the Party's primary for governor: Michael Badamo and Peter Diamondstone. But some Party leaders wanted to leave the office empty so that most of the Party's resources could be directed to Anthony Pollina's campaign for lieutenant governor.\nTo achieve that goal, they needed to mount an aggressive write-in campaign for a candidate who would then decline the Party's nomination. But in the end, that didn't happen.\nTurnout in the Progressive primary was very light \u2013 just over 1,000 people voted in their election. Badamo received roughly 70% of the vote; Diamondstone about 30%; and there were several hundred write-in votes, but not enough to affect the outcome of the race.\n(Kinzel) Markowitz says she is very pleased that no voter access complaints have been received by her office for the primary election.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 5, "reasoning": 2}
{"id": "BkiUdmY4ubng4IUB1Uma", "content": "Support classroom and school libraries and build on NEA's signature literacy program, Read Across America.\nDiverse books are tools all children need to help form and shape their own narrative with a sun-will-come-out-tomorrow outlook. For educators interested in putting more diversity on shelves in schools Annie and SONY Pictures is working with the National Education Association to deliver Books for a Brighter Tomorrow, a national program to support classroom and school libraries and build on NEA's signature literacy program, Read Across America.\nAwards of $1,000 are available to public schools that serve economically disadvantaged students in order to enrich book collections with diverse children's literature and offer titles that give kids a chance to discover themselve and their life experiences in stories. The application review panel will base award selection on creativity, ability to make good use of good books and solid strategy for using literature to help students more conscious of their own culture and that of others. Evaluators may take geographical and demographic distribution into consideration when selecting award recipients.\nDeadline for completed application is January 31, 2015. Only award recipients will be notified in writing.\nHow to apply: Please complete all parts of the application, save the document, and submit it as an e-mail attachment to annieaward@nea.org. Remember to retain a copy for your files. Incomplete applications or those that include materials not specifically requested will not be reviewed. Only applications received electronically as specified will be considered. for questions related to this award, contact Anita Merina, amerina@nea.org.\nEligibility: Applicants must meet all of the criteria below. Approved awards will be made to the applicant's school. Only one eligible applicant per school may submit an application.\nThe applicant must agree to serve as the contact person for the award and all related pulic relations activities.\nDownload the application ( MS-WORD, 11.4 KB, 2 pg.) and email.", "source": "c4", "readability": 4, "professionalism": 1, "cleanliness": 4, "reasoning": 1}
-{"id": "BkiUf1E5qhLB3L4qdOhH", "content": "In a bowl, combine all ingredients except dogs and buns. Cut a 1/2\u2033 deep lengthwise slit in each hot dog. Spoon 2 tablespoons of mixture into each hot dog. Broil in oven for 2 to 3 minutes or until cheese is melted. Serve on buns.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 0}
\ No newline at end of file
+{"id": "BkiUf1E5qhLB3L4qdOhH", "content": "In a bowl, combine all ingredients except dogs and buns. Cut a 1/2\u2033 deep lengthwise slit in each hot dog. Spoon 2 tablespoons of mixture into each hot dog. Broil in oven for 2 to 3 minutes or until cheese is melted. Serve on buns.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 0}
From 915a704eced1bcb890b7740fc798e0a2f9bc3e7f Mon Sep 17 00:00:00 2001
From: shijinpjlab
Date: Mon, 25 Aug 2025 16:04:08 +0800
Subject: [PATCH 3/3] feat: dynamic_config threshold
---
dingo/model/rule/rule_image.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dingo/model/rule/rule_image.py b/dingo/model/rule/rule_image.py
index 5cf05927..29d3957b 100644
--- a/dingo/model/rule/rule_image.py
+++ b/dingo/model/rule/rule_image.py
@@ -290,9 +290,9 @@ def eval(cls, input_data: Data) -> ModelRes:
time.sleep(2)
return ModelRes(
- error_status=True if status_data['score_overall'] < 6 else False,
+ error_status=True if status_data['score_overall'] < cls.dynamic_config.threshold else False,
type="Artimuse_Succeeded",
- name="BadImage" if status_data['score_overall'] < 6 else "GoodImage",
+ name="BadImage" if status_data['score_overall'] < cls.dynamic_config.threshold else "GoodImage",
reason=[json.dumps(status_data['aspects'], ensure_ascii=False)],
)
except Exception as e: