From 83731ebae6f76848dd1913624b43a15ceeca3db0 Mon Sep 17 00:00:00 2001 From: manti <133025162+manti-X@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:05:32 +0200 Subject: [PATCH] ChampionCross/MangaCross: theme change (#11014) fix championcross --- src/ja/mangacross/build.gradle | 9 +- .../res/mipmap-hdpi/ic_launcher.png | Bin 3262 -> 2970 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 1684 -> 1714 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 4348 -> 4134 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 9138 -> 7388 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 13162 -> 12957 bytes .../extension/ja/mangacross/MangaCross.kt | 119 +---------- .../extension/ja/mangacross/MangaCrossDto.kt | 185 ------------------ 8 files changed, 14 insertions(+), 299 deletions(-) delete mode 100644 src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCrossDto.kt diff --git a/src/ja/mangacross/build.gradle b/src/ja/mangacross/build.gradle index 050c78dca..046131555 100644 --- a/src/ja/mangacross/build.gradle +++ b/src/ja/mangacross/build.gradle @@ -1,7 +1,10 @@ ext { - extName = 'Manga Cross' - extClass = '.MangaCross' - extVersionCode = 5 + extName = "Champion Cross" + extClass = ".MangaCross" + themePkg = 'comiciviewer' + baseUrl = "https://championcross.jp" + overrideVersionCode = 5 + isNsfw = false } apply from: "$rootDir/common.gradle" diff --git a/src/ja/mangacross/res/mipmap-hdpi/ic_launcher.png b/src/ja/mangacross/res/mipmap-hdpi/ic_launcher.png index 04e5120c91db185f6e1cc570dc1a5dc910fef6df..7786c72bfef698e8ad5ab788ff292105bef92fb3 100644 GIT binary patch delta 2965 zcmV;G3u^Sf8JZW6BYz7|Nkl9IIK^V2jw45o%TOPhUd4d z$Ihv$VO+)u+LQ!!gW6x}EWg&7X6xXs=5P63tfQx=XU_A_KmWI`uCBk#m@(t4>C>nG zVcN85wV^pV*MIB2j@LaWc8-sG-MI7-v{~15+JxF)aTdp*ripnds!H!LvHqCzN zrI)sJc6QF!3Nwd>hB^S=RB8p6#&S;`9VqGm4ZTiYeuz`5@_%V) z_{NPQ3a`tC4I&#hh-}y(^1~11Ce#9ov(-#qoNfO6`3sa(c^9P?G(~U4r?p7878v=} z-!JmrcOsvEUf{FO$~tZ0(@#ZW_~a82#gKxM$n*mTvc7=&OUV+3KXA70?(V16oT7;C zBI;B!uYW1GZr$qA+qc9~o3Zx5CH3`*D294_GnvxGal8)a&-B~3oBC+gpO35FF)%RD zrA4?P70p*^_#n(r3-n*f9onT}n+6ZC6tA0aB(hb1VSI3KkVg~I<5CNXCP;->KN}U1 zvb(aAGA(KiMZK+^zBjLj%ZgP>E{MepKAFDIu75hrb4RP&a@(!rd#&ozbG)8h5Q!{E zP&as+&4#w|D1FQZ%>4W?j8XYfWCN}B;UjB{lx=cybm@1}d+!w?X3lKLKp#^3dPj#`(In#Pur&Re#s<2(1uh@crYWm&0g3Y) zl>8%5pPO6|P`^-qdZ^5pA@ao+B0W6?_UsYavq!LJkI3G=8T!BfUVi)d zf49k?`aJdh=Ann=Uz<0J?B6fK9}tQ6-hb1`_+H5c*{x_YY^BOiULMoWygcxL49%S@ z^5l~_yiI-Zi6`W&-VvvCA*Zy!KZjxZk5i{gzb;UodP;KeZc<);R!v=L`Q>wSr&E#( zG9Ca^^~=Oi20DPkPumbX6ex3n!UhW6YEZ`N(CqJ{;AVLs*bHLEEJ1Kv54E zxz2hqBo|}}Kyk2d5Gee{4J8og_&Q-u$_C=~QaPiEB^LxVHv=^LVhyxf08rFPajRnV z1C1KgV?B(8FS#H)psInG-+Vx$d4H=>CCLX0E^Xs_-Fzm2BFB8=A!{uND4Ow217$yB zK;av1I4OX7eAbQ?q93SNqbfhR=m+ZO&!3m~-+y0Tc;ST{+qP{hok^b3$Mi}rhzA;Cr!toEUw^%NRgND& zF2{}?%Rt>=KFXs@D`wRgve*Qxu9YEoyZ2$_tZ^+^?Uo4j58NZGMihh8&UR5W#pjZ-69N^=1hY5M! z_PVbf(?c%M=qvQca@+AG7k|XV3{^!LXAEdGNZowY4fGKy+hUZS8`@!vaRX5FVZPDG zadE+}?5Pz>+m;m|(j^^h0Zo=ZK9hc-De)aAu; zy)U^S9zytpP`5ZxUL5^|=hv}4$Lp-)?JC`PK)E0K37<#16_N`Akbk|ze39?~06v`S z0Pq4$1aRB*uu~y9k$SIa@j?ktbDEPF;6KyXDsBVtK0M&6n2)W*-9{NI?oQX!; z3-S$e0K$Agc{x629PFC@EOly zlrbOuRRD^5Rezki{#pyN27&a!X1384*b!5BzIyGx8$O?rG0I2;Evl^5DC`!0|`Lf))bu06Q=g=AR(QjZJXs&DV zk;>$Pc&IN7v~B=s&G9v<4-5>*u3fw2;>C;6UtPjJn12%jX#d=>M$Aqw2uL5w#)(*A z`h4utrAu<^)Ts<7PoB&rAHc6zu|k$ET`GLY&pZS339~!+mm+2iOCKM0jj2d3$WCGt z2J=w@sQnUKw{BhjcFl_~zL@Ehe7k4avSq@zby(BD^Gv6lK7G2}bI(0gO8`)^$J(g1 zAOP7S0Dn}TZvz2w4&Tzba^;GIxOVND+z$RA+-lijv}etlC9`MGHrIs7S_`V`hK*Yc zXkHBCgmJv2pD-VFgZU`w10b)z{<`q_5^ee?3dsdoGbY2PfcR332Ozui%w`>f`6%h5 z^q`NRZ_b=K^1%lmWM9Am&^2L5F37q7S~q3G0Dp0=#jU2vnBV)RPMs=?7cZ8%bLW

255F{GB4aApX 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 literal 4348 zcmV?l1Ly?|oI%T{F|&b61#G^{YOo zr~CK4_g(MxYegxPLMfC&DU?DfltL+#LMfC&aat5*Q~@Sri*%((QIye&qKs7(Wt^fY zFX3`C~S1+H_qo7<@hwiPRW|p&Et(v4ADsF(<#_VqK4Q+{th4uI1#u z;{2zITnr8lK9AfWM^X@JEqKAPCr+IBimvNEx5WOxAX*Tyjw3h7k!%q~X|4H7moB|Q z(==Z$A3R>|Pef9pmg3}Ev5x7w9`9ZOIYO>vOGt}4Lftm8qod<*`Cc>g1;`b0mX201 zN;ap-!C>%wHXc4!jkT+xiOx@C4^n-Gc-KL$kTc2Ms8n@7TKenJ*u;8}L`~k!gT=Z| ztpAEfXfo#~GSG>BYv(8+SIC*7C=*g`1*2tCx+x!3Nut(~>-$5_6h)bo4gp-HD9ZG7 z+_atHOyo``GN4Y~SGV_)3KT_|Cb=7(4gt(aq(7bN;Z&Nq+wD|rLn^j~3v!lL0c6Vq zNv1a2*^YSInN(5P5`a_Bz!A}je(T0NN|!KGu@4y$fZGRhtFoMUFK%pw({x0#>M_x| znHE5@#>}qf+L7%xf8)qC&V)M3iVDh<3z$s&kZ;Hr8<0{Y>{idGs?XEuiKSZrGZH1B z3dnH_NSAAuZvC8WYj6|1#XFvE0nD)TUJ`i*$*L+RZmC<>)lT)Kt7NnVIPI-+v)@Vn zKbbT|vT2P}wzC=u=SvdIt+7r9$AZnU`tm9G_h17Y81&QnheM6owE@|7`*LjqqVdPh zk6^TC1VbB`h1g&`|Xr0GEAMk>q zjaaW6M*s(7UOOu)=$``~SkY5u1uTz=%9#60dMaT>Pc`fvtOw0tSJ!|y`p&?EEjz7% z2U~W~@<%N@2y@!rgUc4OoPu3zz3&`^s}@1Haz2DB=Ye|i2{1<5t>;6{NGI$W@WQE) zOK@`J66_xE!e`d=vgw9C64(P%ysKb}Zxu}OR={M!D!JtK3b=;hT?yCtDg?YMq1ac! zfMV}Tc%kb!UmKq9Iu2KRD+pJ4R|@##(pwIbyekQ}`!_;IBQr`?OFzjgVP4l#396B-_Wtui|wkpGh~N*eU>T z1^g`VFEBtn1PQ=b!Ni*|DV_iTKsOBdQ|A#<6O8TswRC(=>-#X#TTYnZDT4{#a=5v! z1O{a7SE~dT*E|d3Jf#9&L>Y|rlrmtfX9bM+l)|xKOFUJVon+kF-p}Bvj>GVD`(b#h z{SZ7Qmrr-__90k8`wsIGme9UK@MQZT`0B+?LJ(BbSHe#NyZGAh`A7$B?LQA&`!ATV zrSH7lFR*LC1H*cRe+Lmmhp%6JlgMQ}*LjSN{i^jn81F5E@t!gmC-F?pUm#p5Yk%c@ z=%`)YJn%1C6lHXQGK&R)W0 z!n0u`TLIr~dKapP+sx;K0S#&&5puonHBs{=`FCF23|(wYt;s#7DG!SPkbKnn+yYEQ zX~PgcwM42OApos)Z#)&p0wDEMYa>RT;H_c1Eq7XNxUIef`3iRUQjV*xPvECB0yde;d-e$_lstLBj^ z(!;&+gwFziA`c6ITR`jpGTV_b3}|8UaKBfxFs}{gOGXBu~I4NdQ#S3>|h3)WHn@Iwqg;I5*U2 zums9Y0oQmY-&@Ay!)*;4pi%AP+7EhP4dr`OssAwtWJntn-STetZy=YGydDOU?-2sH zx9MF7>S{c#keysmBDXO5SY4|X~DweEuR;cm0{({TjUnq{D#dXkKAq;5I>p;Z9z<%Tz8%A!=JElOd6w+wEo zUjqx;_QlJcf`_KBti9V}eePXROiihq^(> zB%L*yl?lCbp)N`_e>&1mOT?Lx4rq%Ea>6iIeZraU?aGe#L#nl-5T#j1Hws7;x z2%`!>A0H!N)|E~McEuwH(+2vW5A?n>p!deZY4dhp4d}xGFbqB0Z_?yS0D?d?U>Mz^ z$Adj(clbAw+ZoI6k0lr@QK+NUn!i%2K=fKI5X-8CpjIuUCHH1AIJp+CUJQ|j&0y%N z>6#x5`9~fm?{ZWj%5?Z2X zgu=_|$hdg!D0W)kSieSg7jm~@Irr%bc*s z>tb6VY!L>M9Zh^#LOu0+Fw}m&RUrVcxrfUn01x~7l6()ML}EGox$}sfCztKv=^`2T z{pKy)SIc06MIc4}v1Kx#lG~Qx3Ufv10#YE?wB157s+~ok);tGlZ3#rIs4W4t_Em_~ zz6$Ee#T@O@hzEV>BHuH-(0Lpdwe2@yVe39vh)YJ>ept}Dk75yS1*2p?!0}*9p1mIc z2E5$;U#j6uJQDefz;09Lcr1Lc@m&$odPN5cM$BhJog%T;v{lxAsq?EBf!6*Z7&ICo z`aXEwpr8s2T?AWIva7Lr5$J;rZr_-s%o7J$Ve8OFg@6din<1I-5<($_M0tlG}AXLu+&;su} zbOVI|*f5J0;CCAbz_QMxYY~f@Y zCDE?32!L&X=rY{raO8zhL87;7KD8hgfYTXMLWTyn_}7V=FKho|%Q(SY6B7tx5p*={n4ri zy`p`C^|^jOAo1W_R68Rsd$^9W0Awl|V+fN9s+1m3<$`#f=2n0a83Ogx6YK@C4RET0 zAgpU}U(;4u`lQ9 zghtN2M5zT6{L$+hDMlcbh2&Swr6mg>qHD72lDjZf2x=+}>0wHJztwjZ?r+)(MV6XR zX4dNr?jSey)r!%_WenQJL>_k9@aP59<=g^P9>Xcg=WazZv`jwL{CQma z2@&sWWSH0XejX>s6HUAzAH6zsLwls#SvlMavo3C8RYd1uvJn$|xemmve@-__gfn=I z4v$Q>67MaAYkjNXq1N4SDKcapzj^s{P(OQ`$!0;w@tnLaR8F``=zLYGA3Ep!%aqi^ z@^=3@>gbS6zoUtmyT$Pb5yE|S_&buFfm)I(jMb$tvPrnTD-5p-U^ zbcmN090t9&hSC<%BQ-iBL(mxsLYEe#C8I|h79JcVo-PgT$49{?Iya~D1tl7-=Cn7; z>1(Xn>Oo6&T7--aO-y#a9w+lY*p0NXdrRHz+mDIu^hy+n1}eHSQ-<6N={_G~XCNz)aI%EDd5~0%WTp(R-92afP5ES-xvQYbuI9!Xf11p->?)5Fqn{U36(n<> zn+Q17+1OKcrxX1y-2#}ds;Zi*8gesfUaE#RS#{YN&DpbO zeSttA(%RYznLr>A$jfV4(bCcqId|@y4>>_@kR!>}gmisPZV; z*@~jvr6|fhS1J@mxm$8DTXJ%XV!jpA^fl#o?b`dxc_(3~j z%jG%%fCixQLSEOCU^m^S_`{n7)L9uH9~X%VxLcFu%QDloLI-CJk1K6<6;IV3>1@D@ z>^l#}Ox4v0AN=0VYj2*38y)e_jf4S2j*wl}OfwJNW3ov23JcHtGHM6s zJr>y)L9o0ZUfZ#)x7P=^`>SzUEy%_GyKj+l zFF)HpW$MjYomFr0y8ms`xGxztx~wC$?$W}Vm&Siy7c$sKJt8P6m7ZmyxM6c>d8W5W zP@xp>(e*~p_@qxqQ)0~-LCBH4r7eR7Ax?bwba(EdoJ@)}I;py_yUrraF0*uUASs77sG*eEn1h%rY`OsBgH zN?2V=ih`kT%^}L4GZC_osFw4YeYu94_Qko^sx_|=2u`73PcBqmntenGB8l8Gm16h$ zOv+>W!=SNOfz&3Kjksqo_uwa@e{g}Yro{03RKD9f_}k>AwFsxfxD408?G2CFhzK>D{ULM*MPxJWHA3pWoqX2=u z_%`96TX&Q`4};!1y#q_Uvv2exx=HBiBqya_cNFWK<;uCsEgNY_jb9DJ%P6@rsP;I^ z4d#7aOGHaeTtlDJhwU8bK^5`s*s zIv+SoSE=8+UuN!x zDskwt>OK|xVU>RIQ7Pm1?G`O{&L(aKf_#HcrWPO(uwhTCHD~XWjj)T0DI58oco9kk zd1v*MCAYr3A*+9k>s%H7@wAR^TOH0=LMiX7)N@=yEJgB_nbVs>mAoEgE<3rRzoOAC zJEqpcBfCM%t8W~)9CU8}O4dmsRu4jiB)?Cu>!cw3Q!OgaJKM8lo-~`Jhv5#Z>3UjF zI64HJGerD?Wc6C3K4$3k^f#+Y%y#u-&P5sZPLI9L<(HH+tEn~1jyrOtyI_vgQ>fq~Mc`$Z8xNB2Re1Vms0Js2bC5az69#xvq5k+x5m%2Pd95K_&~K z5B|lpndc)6sH7jNoH@*}{N*A$*{ao9Vc(LCD#IQRq6q0H&NedB5TraeG7_mxLN>z^ zbec3eAg}1K)Jtm%!YQ;}eJC;<{-s4bKbKDs&JjEsoZGT07Qd|Oi|G^Lmr?5Fh4vsx zW&bH|IA=0nY}{LFCLK#`FTENs2fT*KGPzG&Shz%)TbMFkBZZ3k0JS1X-JzYd?Su9OygUs$rd89yOWrAlZrberbT zyEl-WzPLuCEB!jMJaV&1v5R=$=uk96?>gZ0kVB#_=!+Y6ADOPvuc{w|u;G0FK z=P4BGciQwZ_+VqQ^~UZDTaA`7gK->Dmp6d&72u>Ip_W@4! z&BBA84Sw8LzE!G>DWZ=~QC?~0O$eGxbw(iGVB#w6=lY@;i41YY(kS>nxO(vxgOzjS>225B z>oEJiyqj^&l>t$S=L<&-eXj`-O2zLpFZk|H`-{smk`OUl7n26no!_A+rE>`o|DYLK z;V3lB5)&P4$-aIq?07jE3G6{BKBGSN&9~3DSoujg_?nQ2j#{9W2OBXoK|`vnPTqqK zk}gB;4RHEA;cTT+?~L9niaM%nTp{9I>xc+i1d4{YE6vp@5G$hJ2Wa0lCJf4>8=m2fH}{{E1UpgcW99J}kLZ4o-UJlkI8PTEvRq z`4GGj%><*;#W+RkhB}DYKBr*^f;V;gVL7Ey7I0?_IZvn@g**Bk3G4Zs5>>oHCaLVD_ie)@n4 zEzIz)p1K~mo?+GJS5N1|Ja$v&|CT?mD%WOT6)T}zObA^YA1I;5RdWt)*xEDTzrJN- zD)!J=xKTr35)z(ZBC8_rMUI!iclzk=s5uiaf0yhS@}6ZXot3brcA5qL)%ul2%X8?d zE~XGfhj&!V113(mt{aS~&@&T6Y+XW0w*#1lbFKmm{63yG0Z!y%x(mRM`~g<{Uy zopFdr=z2cEcJ-*gX^*3k5&4Yy@_B)4lDjd}8^^-gZDT8bLOQv3IVkI$Uuwl>x+nye z?&vN*$E=1gF370Klj}5DHfU%qjJCM6mz6gI!-Kqw7mhaxraec4H@)ep!<`Nkp>9Qq zO8&CH8J})T#?>nCe$A|dT~|r%!nSJNz{Wb<X)qUj*$3+Wi7vpxXaVp z);)(7+&XjZoU>Xu$5z#w%Qrot-*xK5y25erX;CFN%1ZH5q zRaF0&4A0qGHVPv{IjCoxh~pfjKAs?OT8b>`GHGXqPxn*3C+DyR3&Ea< zz^Ja`O^d(ne9NcsP-meh7n#eM-wL_F9~8NfNPlS#l3@yq!-1JsQ zHr^%m$oXupTmDl?&D@8}SClcL0xvTx6Y@Oq*rla2=R@`aGw@OdpEDJh)ZlVZG(bZ< zSNi!SQ7g=)U(`mnlACzNT!Nkhy;~H`%xOA|(wX~L7i1=sr$|q_ItS958J9FgR1{wb z`g@*v#BtdRN8u+L=tV^dclVVTo@z`}l zV3}YZh58X++*Y&;lJFw9r^-devMbhCa1(FwcioeKrojWTOv^z@&zips;hfWK|8dlw zi~ldk5eK~z(5=uq24@`RbafoEXG$=VdB@qY_KXC4R^s@72uvliQ^MQCuA21jrf;@R zbJ5Ip6)x4mRo$Uf$aOKp=w=+B+DF&BHpkMA=z#pnj)6#J^7^TyM29eQWU`>K@GQdV zTOg*K&QbZ(v_ytyJN#P(Wd(7i2D8=Zx&C)Jx9lKWHeNNH(t%mu6qy5j>mgC33imWp zN#@NJ%6~BCZ=b0bb-owj5TFt;AT8r>FzLDE94gC+V#p@3?%y6h=*~2360IyLD=<^t zaV^OB9qe$HwBGTnscMkM`>&2N@jAi>95ci{%MApMJ2;mKH)FQSNSCV6#C4J^*t+$f zXh$mRkfW0|mui%=+CQA24`QU)izLE$c0kaa>2o9d5^XXXBbXEH27*|6`Y%V}Lgu&n zqnI=KA43!R47KqDcO==arcx#Ms>bFF7cVB?HmwOdIw>UTBl%8)Xf-z{pwiN>IDD$S zS6CLOrqDakGf9ut*jK0Tvh9S2L9VVww*=we$8+!ApD?JFR#DWcFzW{zd){6y9$+iG zVLjJ#m387;avZR_t=!Z(sRc~bue3=KBD1}R4jOLdRCRjI+ix`GgzQfKZ9T0nt7po% z-nE*448?@k8x`>ur2K^d1wT+~gSPbvo`RZUOO6Qc0RR-ie|rIOB!$f29T{5}I-(#q zExBt~k3orzuO0OpKX!uZ2B)nu_B3U27J_exXyB7N!jnQkKiu#6WUC+lY`5&e99;q@ z!?JkOe}Ewq25Ke5H2dW|4~ZFkz+r&!Ph6(Uzw-&0$Lio;2xMNk*!!iHbtE-v)b}og{deT1I_aPascF%JL?|L zsteZ;kS-}H$=-jt#njw^XaBu{*Vy4yim}-f(eJ-bPGRE!%6UFm%9<*3S7Ij9v5FW| zqACulLO!a~1usT9b*qt=54o=Vb>!*p#H+&BM_(A}Dqk~!z{4ACaji<6a0CG74`L8# z6{XmWr$v<}B-4Uno$6&OW#AuYrS*xEDUTiyrtE;HsXuYhoN^i18V|fCe4eXg3XydE zO~^AlSKc||nhlQg9=pUV#4}FExMui+*s}OmNNIhzV>qZ4G0b2XE&|o=nXp+|V+>he zKblNUwZ|tQ&A?A=n^(^P9qiWT0WqXRrF(aR&TGVRSrTt|9+%#QiGW4f1lajb?^Uf^ z5>6(k+56}2vmCLAyR#+b3aRT@?Oxlv-ZW4_uA<{Iq#SXXm>`vZBr3>NHAR>7wnc zI0ziP;z8!b0M{&7fc#-!pX5AS; z!x7d&T*#D3GZGmBm(`Vq>=GZzaz3G=b5U#~F`9JqCs|m`e{QPln_)p&G|X#NgoP8@~+r|U+5I+rPH(=RFgFBDDh2UJ5dlC164?Ejjv_D$|nfC zYGfgcewWl+Dn=LtfiXkScP)Ms&#VMAkmJ#?TaZ7bO|E+q@R6flobU1pyRh3Bp2*WJ zQmT8$3B#J}(4}5uA6-kF@=+S1U}I4MS(+`8nIn2T5j+zy`DScJpAC;2)k)GC9cGBT z_>kzl_KdF^JMaYU=AY?RXzk*Es2{3Y1A71o1vI;4^%X?W(Q$f?n?ruy(`^ZR2g$n7 zI00`uakbGxPCt2^i|B#3b5RXcF?%HTEdv1tT9>DLF2JV4z-lR8m(L(Z;Q)e4C=Xxl z_yau4Ug+0Ngl)Qz_LY0$t&xH-TT7%vh{=m6FduKo-A>D#PMHUYwjyYHR?V6aF?FB$ zp=2+YM%RG|7@v%-|9JiU^Zo@8*b}bEO^>DrvyqRx*;dFC1TvC+YPYUyGfVUJJAM=` zz3h8ZWHOQL9u10pJ!59-R8mC|qn*0I4g!PoKF?qqe@$lk5}bEZ%k8#cbAS>u!IPT_ z)>8qm3CAH~JK>8tqvjU0aNM4w_K$u8J*Z{R zP0tlXBTtr2)MOPkcvMqOmcnD_3iZ(hqde0g@+a6p)jl*mWDU%{(qxt4BTCV6)^aAp zxDq9`pT8&7I;|(Sou562?|yZR{lk}Q2h7|B z@;E$1)tu}SlchHFgEG9f3xsJhaQ#+BjPQMz3>OnzpI+JxN-$dP#`D|{R&|p18Hfbz z*R4eDU^4^>bDkQ8{N?K}Rfn<;H1k8&l*O3P|I!!bp%$9G=Sz(nZFd)%XV)^5WV}zs zDLTDzk8rlho zKJ_=PM)E6*Tx?3N#p}%dhMqos4azKhbjPw`x8&<lgq%?vesJZ_$fQ5w zK|ZuLOwAl1u+0eL+j02&%KY`F44)S(2j!e&$|3%G5E8=6^!8KRnFTK7R zm0m4#Q&yOVC6)lwPK?ngxf`dvyqLPqyJ{Squv}3?|7j_9vgl7>t`dI(R$WON+bW(* zKnc*ZdaOv0p|Bbxt!Ls>EwxizDLElC9{61r41qoW_1>Fwtc+6px^Tg+ta-9|L*_uj z{$^QNrVC%%df0@!2DH>{8$`K&cGA!;Ur%K3JlF4Ytij(F#GA0v+|=NXGj5x_&l(qf zrl_J%&Bg%)OOJ>wwUzSjV9SaW85*#FpkJjJ^2xHp3C4bto1?_}%Y`%9Jii7SzdHPC zLG!Up$#Jgg0O4UD=SzxcUk@yIqS3NL-BQS5x!Z0z>J(b0il_KwWC-}9M^=o zRECT>eNmYXzIc*6n?LXs`*S+$=wY0B?g(FDSwb1gU2kbM-V>^8YrdE$qq=>b<+qVi z;=F0y=yBkS5o^T_G~Yx~d2SjtZ=P*SfeTBKLDzCuOVk`kv{!1^wYts}#Qh5s!eyQP z``RXo2=PpG9Ce{5cq>%e)iN3%wt@Iz!hY!Wz_y)1dcm+=%mq~pJzC+??_wYKc042asFLjZ#jVd<75HSe>1A57ol zGWegr%4)q{qW1Hg@l$F&T-4e6!g+o^!)r)`rgv(>vtJM$KC4l7vuSEuVew9Yu}M#s zYrJ#|xw$bp3JdK?orn66DAR*p1Tu{Myr3lV2DV-udG9yulooM#ZD!s2ZWrX8;>se@ zm?z}hcMAXsR0+E6r2qwMBic=D7ePgRz}#}8(B4jK-9+*(epZq(xH%|w(Dcq~-Nnr} za8TQ-u#XtwA8P*BJ)tfL&UeQ&e*$DGUc33|~FNw0TRbQ^eL;(K$Pv3S;l&rG<@ z>}dAGkBXSt#hb~yeTj7HiS~-Dj$Vd?S?gzKK5c%L$E!oWr|o%U%xnXwr+;3#{b;pjDH%4Y(h z>}6V>$@D}jGh1+I4*TppapjR@Nsk@ui$<|iQ^v60!2murT;c_vc2%`CJDJiUw0%i? z-DGl6PiCoB`e)8-Umi|XUdrx{dp4T9wY$7DQtzerciN%-!LW-&IU4K}RmcU(CCNAm z5c#39J5@WHZdfKWj2{JIS4Z$0ur$L47mv1YnV*8+akD+tD9<&B+)_dCOxR1~9?#dG z%n{D|smNRXtQ`4gtJu{Nb2yc}4VNJkfockE2gB9FqCf zj5gR*|4%W4>Q+|6$*0{(1fym(bqMCs7ex}EQ>t@w%Kl0ou-BX(iWuDTce%dlfP|)Z zP7ze3FmuY+AX3JK@0JUB6K_n~QCFP>PR3PL#?rY$vxO%B2DG*U!OSM@^^tR*&((K} zd17^_hyT?m3Aa!GJGYyZDAJhTvh^2TE4NS2eM?y7HfXEk-oTux@##rweF1I(Kj~}b zcwDqWRZNn<5mM5z;qm8|006kX9Reye;AfO1e+v>q09lx*-OyJ~R{RryijwAwQU%k% F{{ygp&r|>a literal 9138 zcma)iRZtvEu=S#g1b4UK?(Vy|ElUU^^H9>;ATYyD^1$XBI0)OuR zeyeU(_e{UcneLaaQ+*n)qos_4MTrFf0B}@QK)V0#r2laY^nd5R()JGkfXQDKB(LYU za%zg1w*JRE1Gs}mW#wd|VxWP+EEJa1%KnyFx_s1LMR7haPe?P>&jOPg3q2)?rIee2 zid?GTGJ!0CtY=v+JPb8L(~ZwYaFb%%GWYT-10ns?)y*oc`hEZ9@mxG5@#f|=M-$~- zcK=@_6p-?w?c4o6E`_Qs`Tt}BRz``8s!(Jh|2(a6NC_M7n0aG_O?xq$ATc<5)LuW4 zCEbqJ=Aw;(Zx@WDGT^S&aWkiGd$!(jZ)Iv~x}jF8t4$RRK>@T|kelbQFj3x6bbI2} z1-s9@4FR?6Fl`El9{;mp1=hD)9mMy`02t1XS<&dTRmkQ zeM$TA%6d?F707rxd?`^-p>ibw{C;pN(YkSNO*9;G|8~{?N4Kx*HI%_^%E8gG8}2z$ zIsytCLB?zB!J!i2(kj(`f+3u;{yz86dn6R8-l3#bFJH{}!{qW#@1J|PJqzxvHrKYO zJ={ft837z~7?n2=-Z%?ma9+Nvrl9`N$iWy*IZqn3NiJqM;-9UWKM z`x+ze+?!k=1oV!#BQA8<*e=Z(`4xj?cSdfw?mVn<*t_nfj)}!=`z7;-k9^wac7u5n zu5npUh=H;MT4wAbzIzp=h4_;Q&sfjV{WRhucQpLQc0m%bI9~7@M(y`AIMaLMNf3^R zAeLg%3D8;U>1#NE*Yo^&3b>EIuM0`@U)#zO{ayB?F?BWd-544IdU^f|IqqZ@U5x3bY)+i2WD$Rm< z(xR7YJe<;{k#2kEhb-}?d?QHfOXhB2N|Bh+bEi%eA$+y?T4_17uLK%~A=x$1Ri(j^ zMjP$3m$M5~Cwa9pPsI=ewHq(R4IT9PJPD~fe`IF5l4rs|dCp%)T?rZ%U>~)GNJ)nl zGF#GE#t`J}xHpj6kgSBF{TL%4;pi%XW;K=?GSw$5J~nZg5ieYUoqjQt;gw1@57WEX zPZB_^+$I6Tj3ool3Y~o><6Hh5&$tpMevP3u1MN<`H#`$>;X~svsbxB0PN#-UMGYZ; z6Coc`kpf{vLsP@Dj6UXry!}9`^Uy~&l|M#99GAfw)2l)j10y|2Uj*hf@(F@zMTA*Y|H%Ch%Tt|l0uBTmC}Y8%OY4C zt@^k!bbh;vBDm2;FmLYhYYrYP?ucGt_VRKYw396^rjMe5GNH$rb*RNBsAzt~4iJp^ z0Q;$rj2|8aXs*o!G*j}_Adt%iP@wTBqYGa?x1eR<=*hRqSa`aI_i%a8CFlWRTGgnh z2h;SPR}3QyGDrdAE;Ajt;bBErZPTblhwxu~oM-4dGA2eHXj=9thIGp+9J5T(==?3% ziKUXUMPu@(d26eZn<&M49pF3X#B<3_yOqZmzjo}SmJo6Qp}UEdY3|Cqp7qnZ{`}J? z>gHnS!a%Bx7s_h8?+3#)Pg~lG!b$u%h%~%zWR&TwoZ0_m>|$KdTVUB>U}l(pJ9YEb zE9%#K6xk`g8+f?_jc*83Kq`!iZyl{{ z;Kh*+cPcXE9`uBREhlWeRSileqDQ4RVp$R>nz<*nYn;z^xp2!F|Ng2yylS3ug((NH z++>)UP_1?c9K3l>7=NGyhE8c!TLIK4D84_08njcj-qD7Ak|w!Oab+fuS_vf2X_0T0 zjayQ8{C>4#I9x#U0i}sZ1>;fS;n!?ozse!bfVUi{DVEWpfSr^VkxAh55}%-%Iixsg zo>ED0JBp9VtOve`ZLZ`b9Q1d=bLI;kHU$xc#Nwi@opo#H*Jr-Rto)R-X)3Pm!s+W0 z99$!VpTCib2;$1#0(JH!d0dv!KN@$_ytKclDivNAw>w|71!#GLRyU6xY3keVF-maO z#R<&&=Kl^`Ks=-;)T-U_!~f)ODIw#V=r$p89)5tG8i^LK`j-3aySIG^KNMvUaz~JH zzV9hs?&p*4%7G$5Gs;=9$dgN>#srLqxN>O6W9k?}1^N}@g7qf+hV7=`^b7t2ciey| zecozZGAb`6b7na5u9M8X_x*`Ywjiap`Gt8$0fRo}uhcg~h!vx8%YD@eKiL#C@WPuY^W;>oE2Sl>`*-h?lwD z`r;$AtZcT>d2#d3SUDIg>gv)OHQN{k9A*d`7ke`%H=)0G;%y?NncSbeoI~}&>QFQR z<>#p$o1zV>&FQ8^&V|)!YDRpjHa3H>-jTgWbR{tgGfJIFZcGN!*^C1b>9X@aPSnv z*me~+0Gy8!<^F@w?W#lFLUr85&$c94GqM^;`MpytEA-k?#AuCGm7XIU?bornrZ(co zz$i7fnoi_@I8x!iFG>G3nYS1CVfrCd*MH^kV|ycMf`_xBj!CVclyYWHvd*xgpc0a< z_0IVJ^kcW}<(nwW&|IDK zx!lxgehkf+DAE}WPne&E0u=yXNTN64sp-4uN%#HcH#EQ+OEjc^Oz%iG#s&H3F3GGO zZafNe+$eHHCpnT`xiK)#flv4ewWy%UwjQ0QYF(ko{V{-Wa6<5J{+_9u*sn91Et{=a zGnU7$bA z9pM{Fd!I}44FzpZkM!#*QGqkzCHWF5vZk5gi2U;i7s}%7xJFH~JnLE1qNCdZ{}B)? z;J?4LS%*9`iR;>0ihJHR<0;ljmA_GKY~HfbWP!+?Y#E)n{|xHOo2_X_TFYwb6<^Am za%bUsS&ef}5U6Z20O`e%_yeB*W~^V_LZ<~iz0LY2?br0)Wd3rAifPAH=q@1DOr>%D zFHtd496;=gG7?Nplu)Z!l(C^@0&GqxC1vI4K)ac`FKHy82qhfU@Y+Ry4R$<37`av` z;E0rQocYkb3HqiKo=sBXDCWi}*1dLdyrtlar;m2eG@U|Ok@AZ9Gfs*?poci-DdU86 zkB)p@@EalG53trugR+jh-eB{xj=y3htUyNQoPo?-6nIHKNE41O3uNMkOms?R!7R`? z)yzN;k1VS1VnpDf(>Q^lCcYo=FG*ELt-TTJz%Q(V+m%79AE81_x@GybF60+pulxoE zKNE+)VIe$}szV3cf77~Ly!=ci)xq1?NoW@&Xr&hTG#yr1Whlr&^H}<&|L!*jDYV&> zzImk9aSiiyB}r$`_ANEM(GvN#7^T15Ty>l_V?~~x@nd4{wTVdwX4mQ!VbgNKvFvEI z$hr{dxV{9G6N}Nm@q6+8pqB(PUNnsx9N^(e|0w(ObXw}DYeC*cv<-lM zBlPtJK#8$ZR-PT>XLw9Y+WQ^!UOoxKYRrA_p|0(F_Q}8tptYG23eh~IrUVK6dYCm(&n6vPGlLD7vHADRf?WXxn z{>|2(2cco&i%w7b(fU1R{1LB4tySb$T`uWd%6Y^#d@-4nkHCR@pRe2^ER|1=lG7Yd zLG{~UaDLIfUZ}o1)x1CXQtxgrb5X``45g>sf~D}DjoFWHXwP`UVmj1o{y_>-y4d+g zQBa`fNeS#){WpPexS$-l$2ccGTda@w=)%{0`7n2ay#9OxqQQCQh~)!9(Psbc{!;JA~EM+XuNsXQrk2SCg|p#>n(DZtA!{)?e* z3h{rz&nH3#RXxgL8RCa#T~#m14(7%G2B>)gAYIxr{&|=}xKk0Ue6JN=B~jZ6P)#7A z^Yel2OKSKdl8M>(^pv5^;uX#M&RddvS&|57U$CQeLY=Cc2NBE4-}D~Nj& z6syGO zWh5K_k%GoGEaV7nL{Angn+Q*VrHxjjWr_D=9CQEr>ZM3f`G3suIX(^bc(dK2=i#N? z9b4t6u6@wI!v;86lIhF`FQ8({7!@KEL?X>d_^N;+R|f>oVTY;*jUQ;Q^FG^5PN=A3 zX?->P4uar^RF>nb>0q1d%f)ul-Vj!;lV(S6{6&`H$k@F(U{_iXvS$sdk6z!WUp}yG z6eNsNOPqvAJa*pUrJORJUr;*B4ms8MDI14#&$o)MN)xwzhqUxXQv2>8=-AXWD~i{! zc;^y9h^(}OCl#=vcUE;j{A`LJ;r*0+l$nV!!sW7d++4l zLGz1Not=o)cJ@mD9A~V7C(5wxy|2uMWAH?(Q;x+G&seK+hO_@02()Ek1Kh|VdX3Uq$Ib0q_cU-Ad zAP$x}81LCu;F_GBY&Z+G5lBphlY|=iaH?0D7g%)Z89HYKQW03=@mPUFDR~taA8Z|0 zKNZom0TXKPdxh3oZdj;QTlznGcOLqX^w6lB@@%iVeuql3KCazSuFbwsK9>Z`de-7% z1{8cP1C5Ub?Uh$(wDkSLk<5agC4d;x{|fZwuvb?(EX8~=rL$DGnVJu{AH(lOs#R4QktL_XgD=n z7{+gKy4P3l$TxZwQ~zuuA&y*GoVM8ZHK}uq*rMETso9_l>|XrN2|gJ4y4V@NTc|zC zl3QHkFxv6hzxdve2me>XD$>p6(WeXTa-YV~BD%j#c%~aS$Xt$yexm{}1XQs>T77u6 zDE)5|KylOEjfSyi;YC_Mfe;~SrvpagRpwzx;*QYh%=$0zBmw{`9V^&$A8t2s=RwAw zZC>Wk`Y$0+Run&%gOTe*5~{g810DUwae@O}Qy0xo-o(LV3)ux<3KN@|BN=M+4a^;&=;n_0(%w+Ons|Y z+wk1!^>7>@I-P>*b#2x$7bmSDc5w7>fS_pNpFYKUD$(mhBhunJAJ1{j6S z8uDX>k~UshYWT|W@<n*1a2u*XZ z%!IMzgWri^zv@KJykfcEG8ar&BScLYJ=Merqs#)Zd*aY}>-;As?F|&mc^72Sl;=+6 z!J!2;UbC5z|8?W?40r}6p+HbKaOri^RKpgJTRWP_o65e5-SrOrX1&fnC`OjYmJ=lc zrg+4KZ*&Z4q#~gjza*2C4d{mve#cmCdjm4H{Q|GJrcRGTt5Drd+vxJK&tUY!JLE<_f) zVQBP$kCom*$Vp^C#zDiXX9DtI*1j&XHyZtf7I)~F`pKJOkF5f0e}Eu?|D=Pa3X_!)@6TOJO6~BiDHl_?Z;>k*Up@<8b#hZXOH`sNs}+5Vzmt z7+gQzQSzkN8&=;&XhuKOz6aF}48q~G7~+y&7lJ_*s8=!M?pD08<)TpO)iXEsv)08& zexL)BPB?iF19gilh4a_31l!d>xjD9fKOrebQ5nAu1c6-u7Ehh`$~h%HbnG;22ke8c zkZ$|=7>f-ZnrpcaX7^%iOaI}fGXc{tY+CfVXb!}`B^H%NpdgS+2<{nT3aR88&xsWY zd^|`FWvYkb3CJwuYeFNikSidpMs=`O&b6z)=?8O>4l`@McLIcD@g|*2(nPMU_Hy}) z!2E2BN)4qtvLEyez&=KaK!1KhBWo8LmHrCJC?+;kvA#b8-`Z<#X|!_DO035?@IF9L;q$Nj^%Lq~rJM$*}qYm^<&OH^8tpW!$! zzJlqfXND^2`4GYDbx`I_`IxqHqRS1Q;|E9&WzLw7l$V3BgTc|TXsZRYR%EMWC*H@z z`o#(SXRDp_%IYj%2W9@&=yX&B4LnOsiNNa*Wp#}U!nsKF8TaN+G;hJC{O{Dc(Y-=h zfMCT#0J6q@&lRlt(vpG7H_AvZL^74Jhd2!5_ zGLAdufN@i-EvZj>zCv%O3RlHTxxHTJre!SzCEZTLy5`+ek^X5Za}AK7s^4f8I;B7% zSUD-{x+y(h3bHy)|5|B1D)3w1nnL|@X3T|vxokrx1_zzAc#e4>N{;)9;XpbD;riP3 zin_M(Uo9SudHRogpDwiTt*23S1uK|jOHyN?i)JxHVcvCzP^EkHFd&hS!+P9?(pAI!AW#1eD0zS$0VL7g?v}f+p z8nzs={~LH}F%OntCtn>OkSYP1mg=f%r<>0r-Kt?^x zCTJ|CSyS^d$_C%}zq?)C{2YP#VET%gf#u}O#!fe`w{qt5YkP!U7wOEDXhq;&gpAG=G>rCNw$7Gt07uQ7r9+j%7SLvn z*ZuDJOAniHsK+^Ud(MAZ=HV}1wGX$japkmNP}Lz=4a?JpWXMlO+ld6&*H7xEC3A9d zuMux(V(mZ9=|()B;qOKXUKhO|sDop-|zp--ei$>aVhY%NlKnE*- z5}WYMh5SY-M}gIC+vkE<;PdI{)q6#rIVzJ#sJ}+)FM@oLaj0Y9|S~lZ&TysV6ElF%IyN+Wc%{95g8*xzx!cb9c_$qHW)Wh z$r=zJ;k(keV+T#sBFIE!rX^1^wh2uQEL#)&s$bATJ67-eZI4?o2O6B+tk-vHOZblk zTTh=l9%=NW)Q+o8S|C}m8``xPbiT+TpX;)XOgiA}yc)pYq9)4cV%QwqpQ8y+--qPl z$Yp`vtwD!$wUhOC8ml5@jE_OhlbX-37dGb<6=4A_pACf##|s<|27O1Eh8(E7?$1Z%{h5(5t#NDlt-b4CGy~3)U&W5F9lLmcMc!vlnFo=1spGJ3}7?uo>Zsm z8@Ujh~Z+)byct%L`fip``N-)=vtm?IqGt=cePRc2r3V1gC? z-*p-dbS67hewEv4B~MgU!lq&?hzZz**I;J2MU1TBC7%|n`6P)Y>gfh2Z78>5Dz=s{xQwEPy{&Nll3RdCG4|23K#6B&N9Q%!U@NsfBv#5gH< zV@ck~;-93bJ+j4WSsd?HS&@BNtk%qxnZm(^I=e)R5seH2=T+3HHOrVP*`~3};BR@Q znv$^`Nu{Q*7E7e3X$dTbr181)5NJ2WS};&{Vay4C-Gh@hsy#c@gE|`+T`lfVl4GH| zLd;+xXRudp!U%4E>GO-L+CX35Kock;uW<_>B51ZZO6r{vZNEvMvdZKz8gNQQLZfo@ zvlRcTl-;6<9_&&Qo0a;>E1qpupja2QpQ1_zhuJqd>CEw#?J=u?ItR>($BxSa|GLbe zY=t1=t6h~BiMXvA;sU0acHyM6Rv;Qbi-;NlQ{ka;ytl{01ZaBXvbh?+-<8aXD^&r; z;=a^3)E99{8zxKW+jKe=XfJ135lhWtUnmP}&YxtH3WPi2B|JLGI9Mrs~ONl7X< z9#%>@Th2I-t*!o;55%*gpc)Fq4SF`Kj0SC@Q@GJ`o||E*=!D|7FOFEu|5su^iH2(J z$O?Rbq+R=-EW01i%p^(VNRcNmK@;CiX}4-9B%?!jwrX%a^R0xVV`ARrDgKX$-Sj~H z89S6XoN}C} zUok*!c1T4-rj+jAKKwlO>%_uVyv@a}%7lv?|0%JjTv%GV-^^o=yJDA#xmFFMbp<5T zMyg1sGTmE(Au`uJD0piSBcsO+gN?Yc}LX;s8v`N0!PFr=%3ZLCE+hfDXRV7ga0 z=pSeE^x`iRBs49*7SG2AAixwa7ZlWk@js-%r6&Ua3jL?ur^gisWz4@5&(SG<3PCH3 zAAeXg>DfQxlJPCqPCFPwFE%tuESS_jvw8-Rc{YETFtkZzi96^rHrvB~$m9C=0ZXBv zq#p~V9Ikuxl_!gBjAxs+g^cfK-alSii7YwG!5@0|EolpL5ka*h+c{hpVsfB0JBg(| zTaU=;JtqO>RPZA8#I~nE#PqB^QO)%TfcYKm=~y z(7g-(Z{Ymf#{+)e9dYG_Kn_A~>R$ejFLWu*EdQ~oX+g{Vy&?^J_8iJ;IhTHiKkT)P zA#WBJPvmP6ySF;eUIhyYNglaVxVSzkq5z)=5%TMmKK;AK!_1>x!7>vihIad`r=-r_ zftMV(wSVuuz2#loECNf7A)Xi0mWs+R_Zdi5FQabJ1|O_u#gw2WG0S?(HM#1{i-_QJ zyL$|HCk_OzBP++ebGSW*_ui-PPZex<$J)TVv7SH-FcY`5g3tLw3O9+&Cln{-#1lxT zL{oU-oY2MNL3umgTBFn-oWn9+&&<3X&dHnuMv*?)EzaT6W%EBSjV{e`&Nz1`^;OJRcEOr82HmIlY`O@Yb??*ddDg z+?iBPT$_{Fgt6CP$U1W2Cl;}eHpYl%tbAIvBNkdP^t*gc(^(ce^SP(Zh&K?`Tlq#v zsMgIc}a`=Nh7sMTx!Q9h%1HZmA5aJ!xZ+{2#>k~s{KYGv(SCeE< zR<7dJeA}+R-7;=b*?)R;{=PHB145~jlxPgpWn zY2Iv~k642FeOJy~we;+&@7S`rQWY++>)DL@`lZ+y{~0nSkTkvj z{_7BLzJ=2;<=nO@H2sUq&n^{^&wsNgYHC8fAqVn5AhZ>lxX~WHv$)WvBfG9_6oYL# zC9#gC-7Tsv8nIeY?a^zIxQY`^oL@#dgpr2oGzdJm;Q#VoegjnR|R6JYEr86=hNqU&hm-M~kM-U8)1Eu<=Y(qHgwC&zHDccPTL$WHRK9m=Rf5mhRY0YA9X%fOSZ6}(OC&{h{C!R@3eVzq33dW(ehGTW6d?^()srLRa?od ztAjKL_^gj3Z`Ib~eV_2cqR^_XzwUe6esHovK5@tVoU0%=I-PXxxKwUmE|x1z#Ff_+ z7se+4O398HVb*LnttkaFiY4RndfFI)sSnwAejciZkPfM8&B0^*=z}XY8tYz}DciB4 z)xYT>{1R_k9L4NZjt+X)Q_Y|Oj7s%b=1jkR4|C4_sfvexQR^ni>|*OAyV?DTMM(b} zm#zm0o4~LrTC?g?3+_$g;ZgN*HUINHw50I)|J-(NefOKgVyl#KRLzG!WsKskhTV%x z_OGaXInHx$fvKmu%*v|ij2cg479Z{OMzNQ>ggQ4*APcXSg8G%NRC3m1zE>l;N;O-3 z8Z5nHHgnypGTgK7?MQ+;zCX^Volw?ueK1>r{*aO-o$RP!;8%yBJ6#BkMj5~_XnOCs zx|av=c)WT(k&Spb@#BOl!9&6m#h&hQvV1K~Jo%$0WHZi8wER7*Hx*Ukac3GeHZxgn zM9UCFFc!=z(-j`zlE;Qd7TWAQ{M(N8DPun1r)SFQ-tjgtFLU3>KT zgaMzR)MBj{xMbOUvu+_d@oGor~<${}i1 z{=n6(IFN+J*4)!MxP07=g1MI@+;2M~FU?{2g0zPh&I@@!8>`ovI%mFgntO#song*g z`~A=NtW5K10Wsl)V=WN`*MLpkzNM>(o`ephuQJhHP(#RW*VMvjv9;U@kxkx@wHa;X zw1L^Uz8wUKUJ^#~?0A~Ga7Az0hYpy^1P+ZG9)MY!W&Fy#6 z_!F_OiFo?ZaG$%r=o>Iqx>ke|7)~~_onV?)3MjQ)?Rn~Ud_JnQQ}cXmx8b=l#ml} zxOe|XT){dAikK}4Eq;kd`KC#2>gwI^6B<;x8+UctG$%gaSO;;3Y?>pTV_a7Ap}b~L z=v{ow#p=>61tMM4`U%_*9jZ~$|Grw>-O@hr+rnuiU3jg|$I^X??m{;r?kn;P%%DZw zSOE)NY*lw07wyBG)1;rg6m<=GKL2%g?LP4z`QDIg39&go-|V>K=e%nDVwqAo3AIJ| z9g*=NZOo3Sn@9V2x6y&XIeM0RM!*}9ampHqMh45nd@JofxF#B4NZ|Ljc6cov`c3E@ zQN-*|(YoX^W66^UQ-0=BPC_dEHTA1u7s2vmd2(Nz3&Mrkw8lUwFSM2sxOqIxZLP1W zBGg`7&XVWZ$j+0#(3svW#9dwgZX;(NZTnpky@k>*9lmN!<$f(~TnMl5RYt2g6=>?B zOGW5EkP2#4DRM*x4qK;vfLjoDjr}_hdX@iqMo);|#8|*+)73Lh7~yJwoq38X5TUwCwiBbqtF1k=wwCh)va(#f7mdyjc$ii-yaXs=qNR*d01vEk58H@ zsU;+CP*3*xDwD(4uPv1`I<(wH$wrh3>)e0(mZ&&`_R2l&`a|@6%je(S-(NAylm{r1!3&I zvtWAVPVh7{AUai5H0<#IsJJlCpivYgdZX*M@1Mn>Px{WSmQ}P%cSUuWZFUFH~xp!U8R5u%tmex2|#TC z{nbBj=w;|Dd*EwmBdQv%<(-IkItw*&6LxPYWW(d1O}(vv32GXO%V-o=QmmW;s|uI6 zQ&h5_#)9rmG;_tRB$wgDQbg5yzLRrdrUiRZ;czQ#T#_%!T}e>NOd}!PG_wgEYFsdD=9)nDjT}5vlZ@$5On!D*3 zm&osW!mk8BnU7H9iqlr>nU#f@X62_1%6L(1Qt*AJFRNvCqFBm?6Q16`f@R)yuC2EU zWzNvH0{B+d+XluM?lrlLz!`63IU!(W-ESaVpx*BUct@@9QNimR~~n19WAJQ zDrZhs&JEo439Q7p1%4LmS_m{Q#=DL_W1;9JDmeB8uTMRzmgJ3JE%IDmc3-X0Vw4qP zTGW%P;>XTe_H=o%lxe9&30gj*6rWQ4>P>FQ?C(00)ecu$FHc5%kLlp+BZf@rOxlq| zkJbMtG{S<{9KT~juhGMIDOQ4_h4TPGC>7TgNWZAn`5n!+x8k}_%4O=ZskQECP z`IUk6;3=r5fc5L4Wv)226Fd;itgT^I@Qz=)z1SB!fyJOFf`(75;|g@Np9DYO6&X?W z81hY*9Q|6J(QiTJe#N7kU7ES)0{?qKoA-`X?ukEcFO^+uNdzk+Sr6)Scvf5HyE}Rc zrUk#~kP4XJ&n#`*@2j4I9YQOdq0M$mQ)iBsEzU>W8vcXY^!IdJev5uj-;)2=3$VSu zq@H`4*8A(LsE|%j*I{w|OXV6ee%3|n+UC3oIfvSf_whvvA&Q? z@S}Pac@-JE43EWDp!>kY2{vgn?9w!kgf*Q`_jvLb4}iLJF7LcJi2IjDtBRTQmgs8Y zX+Kmrz%LwU6zfIqEE*+k#&tX(a`eZ2B06($@d1*fW=}gK$eT0$&c+&pD zGr4}*N=7);A|Ltarf!=NAP92v;qf`y(!Xe%yTEcU404bRaLBY#=%9GxqU zF52C&GKh2-==j~~abVb{J$$naZ|SwDGl=8|l$N6aD;1=dr2F$7{yWF9=nV(P7xM98 zD<%X|a&$=Pp!=Z{wYfaEcq;gtw%<=%vv-F^v`rdj#DZ?izl!BaOyg}<)^6ty$ud$g zd@|8nXk-y!#C1pKf6Mo&z30J@9^W_BT|Q@G+TIbDBoz~7mfW^JcXcZ?6({>LV5?8h z0Q-#|p5bIw^0sondQ;LT^~FEjGJ zUre!D@WfQZlsUi1qo6}M--_Eqcf=!|tVd9%J+S}$v7Ycd_k-2VBfe#h&Ycgi{7JE2 zORB|J%}+9P43I~4v>52{e&@k5g@4ncHw0LZ-~10G!nEKThsvg*OCLn_$GNPYTqHk* zq}N^!@;# z6TBa&LSOJVnaGGw>2kl|b8QY$?1fB1Vq*-lpjY;u6HFZ8Pcq03=^QP&(fi3e z)kGbSIup}@57-c^MxpM-EuKE>XSDd^W`)~jtB)Gxe-v%Cc;!l~Xa7nX&>zR255OSe zK6f)BLoF=PaoQ9Cr3(`Av%!g6e`8RF$Em}I^%;j2k0o|O<7j-FWl!Rg3fWM7#~@7= zRxkj08xFgIQA4Mrmx}@*b4TAwS91y!HJ^g4F!*r$b1FeLKgaqEJfTnZT+HSAX2qPG zGtx`2jGQz7cQKWI0CBYcJC0*w)b}8W?hsC&Ny^mDGzW!2F;RP;HeYqhgkGQ^n@(oI zZe&3&{4n0PPn5IbhL3oipdaMVzC5pZXWpvwUkz;pY9Kh1yTcoT{fiHFYxJHL2%Y^| zmviBN zeSshUa$!F#D0|nQI)qiUEeG{{^V{3DcFo6veaex5N&R2NNtV(WAQ|fGEm8{v^1SF}epP3*d^k&`wzv z$#|_AoRle%K<$6s&hO`{pVo$!&2u|r6Sxnd@~=)%sr$u$-xQd23(FxNf6oIRN6SY= zRf3A6V_6io_QdDR&+$F0| zvK}rX1+U9SVmhH9R?cz_o&heM*pD3Ml<87YSkfhMv9tE?IH{QNQKjw{sgZ341JGVq zuwX%Iz_;0aV@7yDFJ(&IP59c~MZf{Gk$PAMXg;sOEuq}jlR%|~XAqvU!I*k01T*8A zVra;W5Lzn^ynwpS?X&q4+8Er}lk_lsCVfr!ysV5Gux_(BU3BgD->o+YL22es!~|SX z0+>@!&$=i@ne^?3hCeI-<4)xbJMjw&61N!N&f@vNieI&CcYpdoYD2f0C%yYRlGy&u z_U2e>;`eO4M*INsqY`=%h;XU88RKh@fhU)=vAB~kCyt7(TH}T^(K9-1B)S`(YRXXG zJW99ESQ`;BiEs0>HkBCMQQ?)Xw=DF0WrNnV-s-5c53oLa!7r*c7?aEql27?Cg)Txq z^6H?FPJd`I>56KNG`Dj#Piw7tH(>M+f%|V7r}9#ilSx1|I3e z!6l!>mC5%4_6s*N*51OFBkh8!qNxr*J$o!=QZ|XH)Hl`2>NC|P-eV8+qi$LmeB3}U z>KMCxHn*KtJ)r!(74V9Pzj?(Ch3a>A%z#s>Msk?o)YFLSFCMASeVXr+hO#SVFj&cr zGeHJ-a9TyYGBt&@L#Isf*{+I#d6y+x8$=3911M}0reucCxlk*d19*ALB?C; zl)zj5gG7n&v^X16iLep?8c{s2VETpJVLkuMa}PlJ!~_&E2$3!b{2W-&02m~#9qmSvgum7yG41 zSF-c%Jumq6JB2d%Tmb;J6snB#s5sSiji_Bas@LLZY@i>dk_8A~%;!iBQNDpZS`hgF zU25p^tA}n|0o%gT>s(g00teI|>_qgsRe?^bYmCq6w~=*CkA!Zazd-nk3~fE&ekKuaJ%*}||O}Ebvq?XeU zF0}p|j(=z$)%j0cz7q$Od-dFa_W!j}QK^)WYe9zwd2QIVY1hi7d-y@x9-Mdv*!div zT{iS2l+!-iK#PSxGyx*{VpBMe$;YSGw($jf^*ecWMNCp7pr-`#mAk%e=Cug}yWvlw ztK48!N~*NqLTXZikY01LiZmbjkHnkpvzx%A)$?+E;b$}Ycb%lVUjv_p{5S>$e;HJT z98yx;sR)Pi9Xs&`)F+==$zix4)u6D({i2T5pMZvFje`PC;tR=&%-1}WNdpoZqFB=Ti-vPcw zkXK{yy_G}XHMDEhtlRYDA-ep4-J`M5Mb(=OdIHDlmO6c zmTyAWWskrT&7}_}JZtQEbiUy%<$N~b$U-9^L%V+r>Mdc2(I^n$D_Fs#JT-D|Nm8s3 zWA3=>g)<1?l`Q6h&6bc&`=0L~-Y4V_UZJ;s(O(1xrRptqBWO?Bfoc9Gvpr!;ngVa( zoN_c%f*phpDZRZE84Dy*m<#k&>q#A;6@|TP_cp%ZT;I^&+RO69HSP!$-1_h7$Z?ny z{py^*dH(_CgWqt@#X6Ohi=gW7_mDkDNL#!fejB>LNN!;k#U z8OKEq_d2KoB3*6}&}mfW9d#PkR$HB1AcQtj%=sG zkciVL*Fh!4qzJ=t2=-@(qfN^5yFO8ph8osh1|TkFYKfgqx~ezI=+KK>1b@uM>tG?P z5#r|}beh!-WJOb|XR6^qAHAtngTG6opz_sXnQ+TDo=d%{phZKKmb?Q!YFdKifXG50He{?k_myz%UdiC2}I6 zXFbNDki7pThg?3CTVJyPXnh5F`{$q%nzna z$c&kFBr)Iu)w^_zB&K%8Z(*pt%@*%D_w@~Y?y!-cvQYp!i6e{`q+!gZuAQV$cl@Xv zP`;A##k?eV**m?Tp$~K5KVo_5=q-sMatAMil#svQ2J=9?0Ia@(;nMZhy_q;ckLZ z!3gu}r%6G`Th#-=hEf$?+ISPn&jAb9IX+Y-v@t}E8?Fh8e;;p{>=D6|9!LgPYz*ki z7knXEeGk*OwcGj5-!EGQ#7G@A=Y z8*U651-*IBWG&y3nQoqY38<7E%5K{IJh)>;|LKo(XF2f=kJJ`VU=?k~H`JY*6hIX(Bj~UMe zN@#UD^yFUGX0D9eDuzmc!B91)vrEy2b1wkb27Xot_M=zs=Z#c5$O07TPHlpeb0@kZ zCmuDJO4TH`!gVY!wGgIX?kvSvC}7p#@%L1X%BV+_wBm1S`N{eO4gfeX96QK4Z!&EE z_tak(AOV>jaP;>QJlEKV<)aP#s~Xipp(me+M?V`D!d01 zpl4ckw%A!(^sH~gkh_uLw%NfFUQqazAYWAzjAi^6X>Fs=v z$7q=zBO1l(0Za4%GG)c5{u84WzuVerwMR!(HC}Sj!$cyxMfR z%;bX5A=;&ApGb`t^t%@a^M7eOpApaNwD`)}_muHf_WX4%G50`kxQaoSzCiiW_78tA z1JIwmuwyHr&V@e52X7OORMf5t^My$@+(AJ}bNe%#ca2F~KiyYZTkh-%Okc`aKXWLC zX+qCjEt-XvKgON8H80bVOpJ##pqn!?L2Or@{FzXN|>+~GOA}q?_D7VEE8*d>c|$O zz;UR5LL0-l*D^naN5F`WtRe+^D1oonhgvkB%9duOfM;5$_nLuwVombXS@;qkJTP`k z+Z+aza`+rzBf366A6I&>VplPr>bE26hl;7ANIJCJ%mZ~(jZTrx5$kZ9p^+x!vn z+47|XSHpA)WShP3xl%>SHuN-i{#K;4yw4XiFfw;D2V4;^?eMQDm#+U?XdEobwl=UT z1Y=Q@$|3q9y$QjccxVvH6Z=&vFRj}fXvq_}a{x0d1yV`-BzqumF#wu{!gCS=2Ooj0 zJA~M;v26&(wnhR{@|Hvx9=aR&!aGW`xZ{z|f*HQMAP}-~8+8Y!N-FyCK-{ZC{C=6Y z?Lz8Y$M^jVl%mTu&{*FhW!p7(Ct<6E6*56yu#PE~bhEI|2n*$fRCSXMI0OtSb?;6o znC|*O44XkWITv`4dZC3vD4EY6X)y_GFTE zYOwF8%adCLAMc&uzu48_IJQsjVbBe*sU-`Xf#ABr{Y^{Skr4(1z7PWQXFWCxa)&#X zH#5+A7&*}k3vxf5p!9ViN&ToA@pVF{y0}w)^N5CHN589FKY$SPtWK>NDcFJpd%ML4 ziSCWN;N_^=n49R&^~)QL<#408b5;+pB=J4Z?x7G31xKV)sofx}OJgaEz9F(}9lXlVn zo%Y@g!wv0xtXpc}+N{;U_8WzrH{ZULdZH+nDqt_!qX*WlnnwKaff3BaFR6TXNF+gz1T}{L{ZN7CBMF=7%)Nf!Vm8z31d7B)CYbll7`!aFxcAR~Vnz zQ1tV=NP*{Xpfw7+jS5Qy8m7LIk%Zq#%9WCKkCFD6i%SM`d3trHeqyh}d;p6SNMQ6TFnde3Z;n&;1Jxe1e5}3v^Nwb* zpAdJmG56aY>jYXIBwv~JnjG+1*#GiwiyC2vX@+Mp*;ta=>`x@HOeT)G@GqYh&q2#M zefV)HqY@_WL;xNx-A*wF^wh7!I!vaFkCWL8c-F$oF~a1rniO|}DdWXETmvAyLw+e= zD(ZWaeX^mM!1KD`vJVx*6L$XZ8|KU{>xa6au2&Al`0DP`nu`2q&wX;IXS*-%E_dxq zOCI2y#Jc=ll>Us_oxHjH0ov8*f*&=_ny5>^+&Dlv?brKrG|Mqeveh`V3Aw9VyTeS< zX20;pH!xQq4O;>WS&*s6?$~`n93mo!6N+aB1ekwx4w^@7#KtUHZoEl&qD4b#5$m?U zDnyS{>b2^3rnB8991FNTFc!qiW?XBf(_*b;tMK`O9F?P-s5{>PLFLr|2sj}H( zZBXRsqDo-*Hn~_*l2>v97IUU(bS7Ca$7+rK@c<9TrHu3nWAbSby0$1kKb)gU%|#B0 za=%qQ9;tlL-Fj%YL@npZ3D+Sd4>#7YR{zXl1@`CN!UI%5W}{#8e&}` z1?kHS7_TR3DG$6W>)JA2Dl2yj=-@u+LXTl@$HY9?Ha7e27_w6yOA+)NC-b-bEP|`x z>rvB=G=)OMdN?w&lEE3RKCG#&@*?bGS{c~B9c{B>ZERPD?&ft!MCa}l{^i41u51~5 zKw%LtLHy1ZG5fTbeZ1x;z?$2^n(bQ(1WshXun_dj+!-!n4iCKzP(Nw8{_1{HEFM}r-##ryS_# z8XiJh_T4URzCKrLlrP=vB5&b)ePjcK*&Gmvhq)zqKr4h5b6}F``%?vz1h-!y^yZZa5Vg_AdD^v^QyH@D? zFKDHjsW&%f~2urJiy{$Z>Psz9+ zOrdbCH*4A(oOlU9KQ;L|J_z%zZU(m~y-ph%wOdi4nJXM8>>T%>hkCd+hE$!HoHC!O zQ@}3hu_wCNyIt%qEjC5#y8L*UoUstktW-ZN1f^C1_-(sv@N_!|l+|t0q$g6w5i^#H zPPLVxm^Q?mrO-;9rRFYb2?`!s`&y+aJb&dYLTgh;Yjdu$p1E8<638B8k^)&y`G>!! z90I63R%PfssrN5a7%7~lJH@5jPKs2 z5d)dTyptr?lH`js$!djj`LLwb^NtMf`sIqBD@*G>Om`FuhiR&t!Y!yKGDu}kOSp~M zMZLkgIh@{R>=#WJaY)h974x?ds93*!=DSXG?KQyIR{htmDxiDZ1BpIZBHO=N8Mlr= zVut(N7S_ix8srx_7UfP8M2nFrOAlm~>c}Z(z@wzqTM!7BJm(#OR>U-6{b1G3sL_fX zEfLd!AYPAQh+`mLhe|zcrQzJEEq-@@lNd~k~T>ZdWG!Q8eLN!lCC zt*Vw0m+&luh7#U}h)=KWg{93uNDqc!vKmtkjZGZHuSknH=L8TDhWKDB_ethyGd|jl zldAQYR>bVs;c627F>1sqihJUK*X2^aBP{)i#?a7)lp|x?`z>feXdb4ciI*0YsO4f> zwS%=8Oc@6Sdw8XUrPRV?)eD7{3kIPE_)r=04}854`^H|Yo~gY#DS%&V!1f`rkI6;# zy+>F@LHRl7logkyH3!8 zm&QC|_JL%#fI2=*l_=8`bCHAy|3{(!t8}fX``O9cXKL4lYF7S2aM!cO%2F9uo)*mz zVn>bk(}tX@!nh}<7Qa5g2<>;5pX_+Ggs&nO_9{QbE{{rAJI#zBHx{ctaKGlG@-!8% z-afNgrs+wvcn`8;IfF2(e9dt3wp@qk7e4ki^7friqg(6>w%kJtu7pl9|FXC!PloWj z+xwQ~um*l^ekt1Vh%vv#MjsE-tFG?5YJjv};k*YiB6Mj7HZSdQ2?Co}SY4Q#tI8`U6#u1usQ-)H8e2juM(VZ&j$^rXEEzmN|!v<%E@wYbu;?=dT|@qDI{D;Bdsf y{)uXHpCQ=~yU4-k+zNJQ^X>5j^K<5t+)z%?VYv}@tjiGK_N!H;8) zGJui3?ic6Se-KoW^*wy?9->^D*2ZWXy`TiDOT~9=Lh|k( zQH@yp=Nj(?vYZCt@L-$lU5SBr=dS@F_GY?Vq}XT7a|s~`$WZ#NCBkX*IuG8pdMc?r zu}>LPaN2B`@X$qzL{wUu+(_J_@_q&J$o%sZ&Ixqz^t>XAX3T{|laF&SGyHE2?DIq# ziJN_M9^|{8L{#~-laW(r#6A!J-s_MvINA@9d*D@Vb{1oM(7Yt z0FL2vfHBHcNU;4Sy}rIi$#l~hd<8UY1tI#+p9;5vf~!SOc*o9%f7Yx)XVyj&KU6H^ zZ{lqdz)O6mval4>Fxh?1dwP0~`KHn{?%gA6Dj0z3`$#N5-c5o{A~-uk*nTMwe zLh9q?wL(;EJJMFAiNtTfx1)}%q3Q4KQtZ4$$vJ*@j>+Xyox6F!6Zo9Gz}&E==xrs3 z{NZOcZmT^^|L~=gDQe_2zO6sT8VIldU{4%9)cxt<=C}a&yHljtZkdiB#rsNFD;ek( zYHMU+X0m2{cO)2S6{P$z^K{Q=BHDmfkN{N$+@5e-m1wSu`U zwRFe+!c|A#-1Or(NK5dH_p_R!$oD^K=Y=Fd&2vcgtrL1s6Hd;~=7$5mhN5wFWS3KV zMyrPdcYXJNzSAad{ws*RmCbBZr0&K9Zjx@!dnSXlSN>6JXN^WhMmqj-@8ioIO|%^x z-su|zhKa&X?otD-^sep-k@tkLj-5d03#c;h!6WO%IG)@ z(x0q`BSWP)(}i$|_X`Z}9`Yf#5a0W0$T*cs_{SJ!-p}37pWyUD>_m$lC^}PciQCuq zI^Kt2cH1 zpmw> z%_w2bVGAk(2GrP)lTk&UKS53^N9w)CFE?d5sC7lK$c#bdFuCvs+pbP)4kC!=q{dA< zEXBk-*v6xo0RFPCEqZHNZ0ZYur-0{%<~jEe1DXraV6PLg z0+~3?Qkj6pNt~YIggpYufH1Z<%-_@z0cq80G71_({({w%gx75ap0QIpwM31&!|F!K z*_Fw`i28kP0Ov17doKb0GKN-62ICZ^3evdy1?cje=SV9DHc0mmjnUsPeFw!h<8c?h zHlEwVZ9%5PI}UVOUgHK86|$V0L!)}XT@49aVPcA@glf{M1;p2HQj>vH@U^01rjUfU z+?wT9LRGI5CcZEtl?M`Hw(e7zfh>ZUsz?~K4H&b1(etD7uSIO}Wj$67in6C4DSFuS zoE=4r=r%=7a*;JSf>`%Q`X-^~K{l+2a|x^X&3lVEPFAI>(ml_&XAj?FEt3kdD#$%1 zzts5+&~(0|lnch}&ORt#q4)HNGn8&MTrO0v48c>$)c!NNf4`9GWd&2NIgvUruX^S# zzR1YK-cam|BOUdMv~*AkB;lu|c*=$54SM#$mY@;nS*(qWL|jwno}!A34WsX3&p%#=Gq}xfkp90lp;ve;{jsUXaR~|$O7KU7Dcg^ zTP1SUS`D~VX5*iFanEQ&D|0D82f$8gmFtHp@6H#MI+Pk~v=qk+GHgjN9$J8X)|fQv=@`!R1IZhm`E| z5X^a|tL-KbG&?vKK80>pV(L!U_U+ws47=-jUGMAb036Cq_B~}RQ-AOc(mAoHqCc-8#pq9n-6mL~J=6zMtXRb@uUT&6JxGZQBEVE#?+zpk~>a5o!XSs%iY-wh2N$fjwUcg(3rC8n^-a3 zVDeV%^&?N_@REH;27r7J)d8n9QZecP$v%^9ty|fof4ubFmfGJaPi}II+agh`0*-!G zpN8hN4lxaU=%I89e|PiRv>nK{3kSsdN-79lXoA;yfzL!vVm_9iLjalB==^d;2I%dZ znJmQ2_t;P^+jz?3yzPeu=fc6!8;pwlTW^wK`nf~2C;|XnV*QD2)_7Cfr zD{j4C$}A&ly?$b>9V`MLSj9JFTjHePbJ&!>fkq!B3_ga&p3SclehS`FP^xeQ{h^X~N8_&j)XbIdRirP#9z6L(G;f`{aAg?hJB zuxB-8Ize$&7VGw&q7GN`aa{^VHTAY2Qo$AJh-V*QHSq1_n8F&SQ?c1^Gd(W(pZ~S@ zT=)gD*oRjh)KFpI{qo)S61F>`53y%|xNGnf;?k%Mw?8_U3P4N<9_|T6x^HR^v7sqS z&*fLNB&UQFAbDwcd(}Klx8>sj;}gp-Gz1Q<)%<9PCr;@ZDQ>K4jpiaj+`rh~>lzV_{K%{6iZZ&RsJ5Z}x0< zq7W>=xW-yvD6xDtmNgB1r@v2_dwkn@dzPc9$Zt6&kl#wo6;F*zUkBw$l$L@@2~m$4 zU_38rWp(bahu;@s`Q}^z7@I)oV-VNU3z9&8tioK{j>7cb?4K)jtsfY-3C^+aoJO6; ztvX_*P8K|*swb+$CH%bQeXV{FRiB59{1l%TTBWVj`Kt*H|D}M!ByS)tQyJG8(v&sN z_a-aTA%t6z^y*%p$f+Bio>4~JvC?lyH(K$NboEF64$Qg0>WG~R_5YYw z3aTW8kyZoDJshHMd>GB4n}|Ay5jLW@a-Dj4%4s9llVr`sG^z3(qRq$89R2c;(^}1u z`?0f?qs^=x@*UPd~Z>WsU8z!_FR z`M%Aq^^`IdrO4#C4Pz8;jjhRR$$m>XDz@~CyAoqBhM#lycw%6o4VuIaFsu}JOv=Zm zudDbbiL&1s+u!o{G$j*2Lstj`hxlyAfVWSkxf}3r`TQM0-6gr_&<5R7K~%65O1Nno zqbvT6GGMO7&GzqR?kko1SBTEXyOe2hWx&X`+VVI>tf z^RRys<~wG%3)x0VB!-257H7^7aJN=M86&wK!k=Mb7S#KM8>1@{gh1sWooXAfyTd6@ zN&IBW6{w=RbQ#hqxd`Z{C;w1akT~gqv_-Vv-ZBRrG2?Y_)OKw@KN?h)6RoI+dw!Iy zg?R`f+hRh9e-Y`2DuUJ@M15+-EoyH(HiSNo`sGbn)a{)#cY6Az0B9yO#JV*>NjSy7 zP_<$~n6IY;Ni@sAve!{B*H`S%?tkW3+hltL%ijRpmHg4`n0sonvT-@Qee1&fHo(_W z=LZptJG30AKmzYXpZP)OY|kgh(j4(Giw95Q@|r)W>1v03=6Q&S(Nom`B8XNb`gM!z z7ozpAVw!Uh>>g3+rMw2d!ZHX8!bPr10z^&O0rN|m+^8ffCX|75vq*$U(WEC39;%!yjAbkZ2)<(dro{x)k8?+ zXwp!ym(jU^>tobb9-p(l(I{8={mCR=PE;a)_&lC6bUYCjJa}_rUA^%Xic+T;wQEaiFF!Yd4jo8S8a{FKZ9M_bU z`6lkSi6BPfClA`8fcJ)4?$i{C{?AAE;JC?#;18XKS0JXywgw^o``bhsUIGMbu@7O7 zKP6p=L!?gbem0Q3sA3+V4bttvet~oRHsOZ(c!?C+I=wkp~J^;RV9RHV0R+Y(W9Y0gk=p}0I)CBkub|9HT90^T%O_k{=~m~ za5-`F4;g_3Z@Sj8_yw@ajr^P_Pul|Pj$feEKw~7>kn;4mM|LLaj47VL(M^GNU|Y>) zt9Omoo3UmyOp|6wylyHdZ}b39h||tS^B; z#`zflrKgRMSNl&-97$_|W@u4uaQHZipZ)I3%XKNMQ27U8Hd5}D2NuwJB%e>{EF=Fs zIv=?tBcmx2$>xO(*-0p0m6ZI1CH?2ZRF(G6061@N|lAtdFwh7j*lA9V1qPD{=YBtvdCvRDSi zye^$qV=JL0W4~2m9G$Xa!#)tqHA!O!lgnU}wsZXHY3BNG47W!C4U_z@)#@z)7vd=> zc}jvAuygZxdP9bNr*Ms{PeFk2k)lA9s@56o5Qe{11jr#H{J$N4(Dx#5^-%`|&>-a} zT-OZIyZ5*+L3zvSFc}5E46rO!$PCHe%?plZ_T<4zpIs{fpB>KcT4!7NGChbl!RTb~XAL4*mAp$9a+(;|5hw-ti^*K7moVgTHk^tH zc+@W_AEfS~YIL9$VlK0t_!K`)x9HN!TA_gX^M#TnJ`iTW0JJWaRjxBYv1d^B!lb^b z>x0VOb^I*rxI{(&;ELq>q4T_p*32#Vo9>I(Ef@vQ8ceDzU5UIB2QJrgYa8`ljQQQZ zM|c|#6pM4b-jl%4iZMKXP*CPe1+ZV-8^&~KfIj&S)TO)-lYogd3KgHsa}fB3@DauD zByt3%caGCz%SP5xIg?;bRrXy`aeQDD{qL#f@^1f8G>*;kPg5vCZjz5mWsymm4*goo4KOZmY9OTJtX2ixQuKbx3-HV1oJ#H4 z_J0~m{Kof}$m@w$FzjCfp=|r;t(O`gQPxy|RkX(_b|KQF)s>-!7xsF9hQ}o!1o{}p zVsdFz5=Z)yq=73$WFf?|qT|6^5Lp+0Nz8?p1Q>{!>f9OTpx;VmlBL+D5)nAnnVxaP z<3FXQ|2c;17e#=TqnEd#h|&`NquacZ8t)|h9&?@dZ9zk$Sj^IkcFDMQtq_U(TepK{ zyuiD2$Xvc*0ojC`P}D|Z4xKFrg{j&#{z* z87GwU)ZMDbu#j>s(x!wKJAazuO`tC7 zYcCh+uiZnwo;`tdlh}b{@CyT@Umi&Qk*#mJv>=mw{C3Gar5$-+Mo#GV*>F1COgil< z|2I7!a!r#*MGnTkG31`6;jb;Zibclk@*nI=99$7;^9o44{yr2h?FS1Hq$yuh|r+ESoCuR3~n zJ^cnb-h*ep(A+t#^=)KDi+(3yjIiUUzOK*En%mqJPhqy@IO-4SFG*H*gd+CjCEoVX zHG8?N9pE^`m-TiWoZGZCyx`m7Iup_|!% zhuT*EIO7MLZyWQ&;WK#Pf?$|Ev0x2&DH*8@k@loPX2* z8#Q$@mwdS;wLFcI*yD^J4Q~7eettT^%=5M}enUT4pP(q?2ryB!nxLi>Fr*OlY4g_Z zjEKIC8Th1C_eJ9ydCl>?<|xL@Z;A^T-jvS2!RDgci$$3!MM89{Nrhx$B_?)wY_;NuK+# zCkQL#BT&S^I&HTO69Mbx?sNM3JtYpp6`~N1u30SVZu9NO_(NM2?4zUeT~nv>JGdYN z*?$eYk%Wa0#~I;KrYisj8DlS0fdOyt()SEfP+e;p)Z-4)6YNX)JRp#+>)s4Ci4f z9m<+A1qtpk`9AWS1$h#PrB)mR0#Y;nRg3(c(}z38RQ@4~4w9 zugVz!bqXwECF0T2hp1rS^?eU#pne}%kWV2Fbc=7{%i*+Yl25BmuLSGv+}cvCb+t>aZYAn?G55om&1U;%OM!u z9xbw~)PyH7V~EU2H*J;JTR4+M2y^(*kI*3_;;xeoDODA}E?CbZ0cWkGB-sgA8RnbX zK*oCfE|<-;io#4z4S{DCRAft3r%u!grs?fS_v17aI)#~(!IIjgq2n(3Mxk}X>(Vg4 z_pbsyD{FjN{0NzetW&yVIb6pIpQQhrFM2_=0=+9Dc`Y(0GKVP%`#bFTF>om^8u7g% znwFA_y}#%}emuy$j&3Qk>;r3F%(`S^cVfsY+>&>qiE(nnNzYA!C2s70*Ck zoU>GM1i%>8iaZJHc3gUCb?Em+OL##zB@#t!!6pAeYxb+^43UoF_#aZXtH=Bjl2_W& zwjC4}XP%OiKS^*_++?AmxC8RW%@;h5(}4}8(D9?6vX&MFDA6CzU832cK0>QHgqG>p zer8h&?nakeXI4x35jh>+b%ePK?<|Lv_Jp|kqn*^ntb<1s>!9KFrdY+G(HhUo64U%kn@m@l~xy1_Z;AWvRF#s3doU+XxAM#-U9IPtC*$OagzYwk#iS7AM9Nr^;{c~PB zKtCIR{I`blPXRmV_j=rM_j@$?y7X_1GDLH0Mbj+(ib7+2|Lj0Nr@F#RBze_Mpaf;y zi?)$`^e_Fv^n~jt0Y}T&d(?#U^+hE8T3MEs|1G^^JjoV6FzRr@a3A-Lu)^U7B~_Xyej?b3+yEfZdyyUxdN)N~FCReruu ziJg0bF*U;KZ*c4BS{o%bQ{MGCw-2Q-xwI?i+Tx~w`X2GuTdItRwm(WWE0Nt&chrxa zwaVBhIAK32%lFp$viIKYmSt=><5Ju8eb*vmWgYL%_OXIM#(6Pw`Z{`dFPc(cLw>Ol zD`#0^MvSl37Yi?R5dr7XxH+)ds!|2S2Ofib(#uqWx-Aa=W9=G7er&7U;TO$3&UX=( zZGudxd4Q$Y?q5}ifi^p^t?R8?vBEqF441sXoyRyIYbIJGhc7%7!v=c)wj6j!Z5{O= ztCh93cXc6d=KJMj5j$;Q_ZGH^cJDH9A%=04c}f_QoGVg&i0+BdG(bJREgCS-l;Ih{ zS!Tt8yZcez9dSpDEHgylWO}^&(u2w)vc^pX+}@^)`OWjs63twTzr_M%;#~Zwq4}k# zL~$`1r6ZAOklkR~*}%6>Uc$FEwjM9GF1*VEg9IOWZ$9$4A6zqRb|n1KJy zlz6xkEeTzjLi`I8@-&aNe)hoyJ9F<)4!$I9SY6VH;!doPn~%3s>8$IjH&>dh06p}J zf~=i1k8qyfWl=hHPX(5$$6QLqBV6^e0};y&7mA8!_v#&{C96E|d-H%K6~(g+_2u2P zH9imjqNsW#uiOIat{j)*6jZq@B|#~p(==h`T3JpLv$|++K|Ug_)CGqFoeEweVP5w% z6>!8-oYCr<8Shm7nO;<%;CKb;em~ZKGhX+MIdx;fGFP| z+~B_#Z5gmFdi4KT`^(;?aRBY$d-bBX3qkRHS1s=2>Q$n-pv%c0EqZScU%M)qARLEg zR1Abfzm3I4A2*uF@Oly+9Sv3QnP;x$Yfh?k_x$=ekL`YD{P!5$qzpxApoW3hpXSjg-og(ea0dG2_8rumh_En|sd|q`+y7c? zl46{>%X;y(Z}ADXkoKZDwO~^cUxmqHrE^%L%%RpI*KC5)!Yo#aVN+AUEUH!F!Mpv% zv>K@RNUXCQG6IjBEbaoi2AIanNX4(7*-Iakz9ap3z=w zRdf3Nji&{Ivu5)~w1MjMV2Rru1)-At3RrI3y1G4jU@=v=<}dRkRm5J$&;~fXvl$t7 zkvgrD56U8oZu|Fpr4}y!!MD^qBEJAX;@UmCvqG;ko~D&3OQY=yo_UgAmk^v+ z0&If44`!1p!!G|GT3=2=MG&OeA)Y}gfT$qw>@9oAo3}GHugXFE*mXJLoiSi{v{x`o z6K=KZkt8E^a6ioMs9y2DTLa_{>XFubV1Y4^T#Q8nDSj#&)noY&>eO%eSmwU=9%k9XWgPQ1h8pXHwJQ1K`AO_-o?p1kvjq2 zu(PuAxN@Wd6v5-Pj};>jY*`*%+OY;f;Y$@)TQC9qt7<#gbSD5lOBX}{Gv6Fn*H ziLY|%<&Gr;x|e%dUkhH3apD>X6%`=tQJg+f(F47L6#R^05r?I2IPQej@lA1}p0rI9 zV)Kro4=3nrbdort?)KH6qY=9nHmus?E$qqL%{H!o`WB|#1w>v|z?0O2ze&UZ`XieH zFvy5{48q}xAi(81@)PXBvGSy-$(}FqF`juWVqb;np+*>(Y5mSgAs*c|ylC`UD?%~amyHpi0ddi0XZK>h`sh`RlpAjYiMQ<4HxzNkCc)mPIJ|2W8^2^_#xjc@S-vqUh09n7^Z(#eK|3o#;7 zYu8|=GOTd0n|}HRy(Z}TUKb>(IwyT9iXe-?**#xkv730FC8{=}%CCT1C^($Iaihr;u0zo7jk5;a# zSG$J&B1L;QYU596U-h!5Wne@ha*Bt%_j)`px{vm2l*=K1Nk7*co27atBFKsBdok$< z3u?93&ryzn-MAQ{LeUi9|vmUse4A{wtzdrFMxBQGU~(7b0bXe)KlcGM2a5&9;}< zf76edPTb@Jqs&@H2|G>pNjsJjb&Jn7t1z-8mMgo1Q`?paqJ6x$FX>m{?_HbPN1WL- z_mL{(bUw9w@~uj@l=;*>Crg)Ih_6Z0cgOIUNY&euukS1OEf_!gWyFSCeye&b+#7*= zIAHttvYwnSl~Tf2e=B|*J+^9#Tsdx~UEC-jy5f1pmBzvs0}|<8t+b0>+BdDixpo&9MD5 zs@OA+&n{bE@<+FLzKipNyA4`$@ ziy!fj%Q4BpfWz=I;g<8x_i;Wnhy4Vi4uF2H=uFg6-+o%2JKbCr4k*8~`DAy-7x!XF z{QR3#D9_XjL1c>DbCibR-Q2&?mfv+Aofe#?!Ujvf23@%6 z#Rx$npYHg*pH_1UML(H#3gtZCV15I5uJ1UB`D@o)lRx6=VBVP@8aUsWw2*(@Leu;q z2M6MDy!wK;6hQt$y2I>)0=!B36|?Z|i9;kbQn6$;?K~>vUR#UPe16du;Qp&b;@`)iHOitmJCGd=ow=eTk1k1|tibo!h-LN#=ADH%bezN-a z@j&D(E1gx$Ic(zjf4soeH%zO|&VQ5z?`n~yt@K)LHvXtqM;a}7?Od{IZ;{VE$!mj_ zRr`nONOTDGlT1NCHVXG>Y?Zstg=r_-wIUVY&~c%Vhpv%pq)Hutk56qE17%oVM3uI6 z0IgnxO}X{r!`9yS=EE@(ddBO$_a=0rFF}utum#IHKcCQrM{wpfi8XBp@dZ45U7Ig) zWg{#Akg4K^d3np5`7=?D*QqmnAJy>S`22T&?wp8AEaj}p-WyZhwZ$JWc4JOA?co1y znA%P)#&#Z#`DpMpyz+S7+}?vAX!e2bEbiyZ zqT?;4r_7so`OMQXwSVreEd6jVjgmOcfII0=S!tv>V+k#Cgok8fHb0490=Ea|!V+-f z=E91^KuU&m{T~jq#r_5DBtZwQ&zv6vQ8?M}-^j(!d&n4aR3Ej^@6faTFiG?G)e6AY zUwUldMm1P>Ii`25mVL~pOunCZZ=hvpurXW7K3h2xULp^WllkhFtePp-4zX{;F*L}hVp384lO4=ZMeMoyH_KPYxE>;-ZVdek01 zplCVPtV#gGhnaKjHj#xHj!Ky)|Iu)V57l->(a}dH48x$8VxM-wQO&uUAjso2Sa;o9L)C#zSWGBh8qUaFd8O{{3omS%7`<)VIpLLM+h`| zeFxw2iuTWjRay|3;6%R@Na*;!Rz#Jb7JJuyPPQhDQPN@Gz*mp~VF zaS%q+e{9IPVOKyreK&si({s5H`pLbh$&OtJWcsbIYjgbE1h=mIQ>iCvqw-{sE&BWD zLf^89sjZM|@EnTDH_*6Z5l|1iwtGVIDf=XiS8iflr?^(G>CJX6;D58rl~DzKS}?R( zE)?en$OsMbl5VMt2{O}&^8|O1io|zNYQdSyJ-Djl_znUiY#`5gFdhSh81o91;mvnn z=xZ}Py-d{-E`j506;i%>W#(2j_)2*ZA}-PBIGhhrg+by)nX)pMEb?Q_3y0fkMFoSraskX~ zxEzOb#OQJ;PX(DA`sz7(xC`e;SCWUG(?EfVFPBo43*W@|8TD$2XR+q!>-2wM8K6Q9 z|B+Wxi|=KgTq~3)d~P?H85?F(t*q3pC~f|%l`{)f$cV))%rW_1LN(H<%pu;MfT@7^ z`6$}0z570M2x>~D993we z`km(CH05nq_p~~L5o4BRbKe_6V-mO6*kJRB2mb-Wu$q$1?D2wCpCnWMf7`0Yf&oi z_X`?UMk+%QR<^M~C3cJH^NR>6HSHJdQ|psM2KLcK5IGPMbg zYu_Ny+P}FbQ8@?wK)W>+k#IqEbzfbe2K7FL%>m!z(YI&b^2YRGZGzH$vuK}V+79OV zpfE8nL&(g@3e@lP5z8J%)YGmAxC@XT!mllnsC=(*P-+%sRN{#yB9}W^E21+mPq*^* zq-~XMR;luSq4a||_WJU^GT=E!6zUrs99*F7_oJq=n8C6y_Mi??4)*iZ2W(!wRBEq< zcrme&NK{iz9|lIhjkcwpD`f>v&&{0z2NIn1`pas-*oU$4-^tj)URBYRw91+iiQkn$ z4C&65)EZ?|{-vBiE}@rO41Ij7-GL7`m|>D^m0CHTRGMZ)gSILvWbm0h<-~A=UEpO zDcD-iQVt>mjtRcBO|~INP(+@)_VG!dt(*oSPv5?IV`xOWQkZJus>7C1wdUm|r6JHA zM2&ofK)#^D#LB_@K}D66m)Pbx%H0|;%oooonve&Fx~>`$_m~F}Yb%g@HF47UZYOsv zE-iUkWPUSuFla7S7P!yt|qQ^G2+qlJg=*l@YW8%yWJ+@Q;EIq+<>Nv zEAVnFJksXzJe~V3?SHPWH#1X8iAmLw^ApyF*H1&9AG2I(?Y<6w{L)Wd+!p^(;h0$S z-FqKq=4DtnJ8LXUEpNUls&p`6c=%6W=s)_z@#I&x(Kh4-%WcrD6?g)Tt+M94HeM>p z4ZZ;*0mg?dW1mfi(uz*rZYTO0$T;K#f(JE+#c$0DY(5!OJb~3heJ-O{(r(dzK3&%a z-_4j<1yXezs;FST#KQwA#rF|~I9mU%D$+E;$~>^7}G6}^IF?8&&uo^6ifX{Uz&)O~5!` z{KRuwH5vApuyrtU!h`yj3m#J?mJpD;HMT5MmyDEfa@Qtq3*Mf+UM9~Jf`E&bx;EFsA$47YGcUDReiajWGq$6F~*pl?sUNBlsP}G^wW=gOw**)hZ?WR0)fLUv%RL z{GK`b6Q7CVqrOTIue>TG6p~58d8fe2S4ANG|5$$_v~c(j?PH5O)0t5l_j3&mKut+o Ku}0oH?Ee6-yNYW7 diff --git a/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCross.kt b/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCross.kt index 74364193d..470ca480a 100644 --- a/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCross.kt +++ b/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCross.kt @@ -1,115 +1,12 @@ package eu.kanade.tachiyomi.extension.ja.mangacross -import android.util.Log -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.HttpSource -import kotlinx.serialization.SerializationException -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream -import okhttp3.Response -import rx.Observable -import uy.kohesive.injekt.injectLazy -import kotlin.concurrent.thread +import eu.kanade.tachiyomi.multisrc.comiciviewer.ComiciViewer -class MangaCross : HttpSource() { - override val name = "Manga Cross" - override val lang = "ja" - override val baseUrl = "https://mangacross.jp" - override val supportsLatest = true - - private val json: Json by injectLazy() - - // Pagination does not work. 9999 is a dummy large number. - override fun popularMangaRequest(page: Int) = GET("$baseUrl/api/comics.json?count=9999", headers) - override fun popularMangaParse(response: Response) = - MangasPage(response.parseAs().comics.map { it.toSManga() }, false) - - override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/api/episodes.json?page=$page", headers) - override fun latestUpdatesParse(response: Response): MangasPage { - val result: MCEpisodeList = response.parseAs() - return MangasPage(result.episodes.map { it.comic!!.toSManga() }, result.current_page < result.total_pages) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = - if (query.isNotEmpty()) { - GET("$baseUrl/api/comics/keywords/$query.json", headers) - } else { - when (val tag = filters.filterIsInstance().firstOrNull()?.getTag()) { - null -> popularMangaRequest(page) - is MCComicCategory -> GET("$baseUrl/api/comics/categories/${tag.name}.json", headers) - is MCComicGenre -> GET("$baseUrl/api/comics/tags/${tag.name}.json", headers) - } - } - - override fun searchMangaParse(response: Response) = popularMangaParse(response) - - override fun fetchMangaDetails(manga: SManga): Observable = - client.newCall(chapterListRequest(manga)).asObservableSuccess() - .map { mangaDetailsParse(it).apply { initialized = true } } - - // mangaDetailsRequest untouched in order to let WebView open web page instead of json - - override fun mangaDetailsParse(response: Response) = response.parseAs().comic.toSManga() - - override fun chapterListRequest(manga: SManga) = GET("$baseUrl/api${manga.url}.json", headers) - - override fun chapterListParse(response: Response) = response.parseAs().comic.toSChapterList() - - override fun pageListParse(response: Response): List { - return try { - response.parseAs().episode_pages.mapIndexed { i, it -> - Page(i, imageUrl = it.image.original_url) - } - } catch (e: SerializationException) { - throw Exception("Chapter is no longer available!") - } - } - - override fun imageUrlParse(response: Response) = throw UnsupportedOperationException() - - private lateinit var tags: List> - private var isFetchingTags = false - - private fun fetchTags() { - if (isFetchingTags) return - isFetchingTags = true - thread { - try { - val response = client.newCall(GET("$baseUrl/api/menus.json", headers)).execute() - val filterList = response.parseAs().toFilterList() - tags = listOf(Pair("All", null)) + filterList - } catch (e: Exception) { - Log.e("MangaCross", "Failed to fetch filters ($e)") - } finally { - isFetchingTags = false - } - } - } - - override fun getFilterList() = - if (::tags.isInitialized) { - FilterList( - Filter.Header("NOTE: Ignored if using text search!"), - TagFilter("Tag", tags), - ) - } else { - fetchTags() - FilterList( - Filter.Header("Fetching tags..."), - Filter.Header("Go back to previous screen and retry."), - ) - } - - private class TagFilter(name: String, private val tags: List>) : - Filter.Select(name, tags.map { it.first }.toTypedArray()) { - fun getTag() = tags[state].second - } - - private inline fun Response.parseAs(): T = json.decodeFromStream(this.body.byteStream()) +// MangaCross became ChampionCross +class MangaCross : ComiciViewer( + "Champion Cross", + "https://championcross.jp", + "ja", +) { + override val versionId = 2 } diff --git a/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCrossDto.kt b/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCrossDto.kt deleted file mode 100644 index c95412ba2..000000000 --- a/src/ja/mangacross/src/eu/kanade/tachiyomi/extension/ja/mangacross/MangaCrossDto.kt +++ /dev/null @@ -1,185 +0,0 @@ -package eu.kanade.tachiyomi.extension.ja.mangacross - -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.Serializable -import org.jsoup.Jsoup -import java.text.DateFormat.getDateTimeInstance -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.TimeZone - -@Serializable -data class MCComicList( - val comics: List, -// Note: Pagination does not work. Pages after 1 return nothing. -// val current_count: Int, -// val current_page: Int?, -// val total_count: Int, -// val total_pages: Int, -) - -// Useless fields are omitted while interesting ones are commented -@Serializable -data class MCComic( - val dir_name: String, - val title: String, - val author: String, - val comic_category: MCComicCategory? = null, - val comic_tags: List, - val image_double_url: String, // horizontal - val list_image_double_url: String, // square -// val restricted: Boolean, // is NSFW -// Details below - val outline: String? = null, - val episodes: List? = null, -// val books: List? = null, -) { - fun toSManga() = SManga.create().apply { - url = "/comics/$dir_name" - title = this@MCComic.title - author = this@MCComic.author - description = getDescription() - genre = getGenre() - status = getStatus() - thumbnail_url = list_image_double_url - } - - fun toSChapterList() = episodes!! - // .filter { it.status == "public" } // preserve private chapters in case user downloaded before - .map { it.toSChapter("/comics/$dir_name") } - - private fun getDescription() = listOfNotNull( - episodes?.firstOrNull()?.getNextDatePrefix(), - outline?.stripHtml(), - ).joinToString("\n") - - private fun getGenre() = listOfNotNull( - comic_category?.display_name, - comic_tags.joinToString(", ") { it.name }, - ).joinToString(", ") - - private fun getStatus() = when { - episodes?.firstOrNull()?.episode_next_date.isNullOrEmpty() -> SManga.UNKNOWN - else -> SManga.ONGOING - } - - private fun String.stripHtml() = Jsoup.parseBodyFragment(this).text() -} - -sealed class MCComicTag - -@Serializable -data class MCComicCategory(val name: String, val display_name: String) : MCComicTag() - -@Serializable -data class MCComicGenre(val name: String) : MCComicTag() - -@Serializable -data class MCComicDetails(val comic: MCComic) - -@Serializable -data class MCEpisodeList( - val episodes: List, -// Note: Pagination works. - val current_count: Int, - val current_page: Int, - val total_count: Int, - val total_pages: Int, -) - -@Serializable -data class MCEpisode( -// val id: Long, - val volume: String, - val sort_volume: Int, - val title: String, - val publish_start: String, // all dates are in ISO time format - val publish_end: String?, -// Note: AFAIK these dates are always identical to those above. -// val member_publish_start: String, -// val member_publish_end: String?, - val status: String, // public or private -// val page_url: String, -// val list_image_double_url: String, - val episode_next_date: String?, - val next_date_customize_text: String?, - val comic: MCComic? = null, // in latest -) { - fun toSChapter(urlPrefix: String) = SChapter.create().apply { - url = "$urlPrefix/$sort_volume/viewer.json" - val prefix = if (status == "public") "" else "🔒 " - name = "$prefix$volume $title" - // milliseconds are always 000 - date_upload = JST_FORMAT_LIST.parseJST(publish_start)!!.time - // show end date in scanlator field - scanlator = publish_end?.let { "~" + LOCAL_FORMAT_LIST.format(JST_FORMAT_LIST.parseJST(it)!!) } - } - - fun getNextDatePrefix(): String? = when { - !episode_next_date.isNullOrEmpty() -> { - val date = JST_FORMAT_DESC.parseJST(episode_next_date)!!.apply { - time += 10 * 3600 * 1000 // 10 am JST - } - "【Next: ${LOCAL_FORMAT_DESC.format(date)}】" - } - !next_date_customize_text.isNullOrEmpty() -> "【$next_date_customize_text】" - else -> null - } - - companion object { - // for thread-safety - private val JST_FORMAT_DESC = getJSTFormat() - private val JST_FORMAT_LIST = getJSTFormat() - private val LOCAL_FORMAT_DESC = getDateTimeInstance() - private val LOCAL_FORMAT_LIST = getDateTimeInstance() - - private fun SimpleDateFormat.parseJST(date: String) = parse(date.removeSuffix("+09:00")) - private fun getJSTFormat() = - SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH).apply { - timeZone = TimeZone.getTimeZone("GMT+09:00") - } - } -} - -@Serializable -data class MCBook( - val cover_url: String, // resolution is too low -) - -@Serializable -data class MCViewer( -// val sort_volume: Int, -// val created_at: String, -// val updated_at: String, -// val volume: String, -// val title: String, -// val page_count: Int, -// episode_viewer_setting: { page_direction: "horizontal" } - val episode_pages: List, -) - -@Serializable -data class MCEpisodePage( -// val order_index: Int, - val image: MCImage, -// val is_spread_start_page: Boolean, -) - -@Serializable -data class MCImage( -// val pc_url: String, // has highest resolution but is upscaled from original, thus unnecessary -// val sp_url: String, -// val thumbnail_url: String, - val original_url: String, -// {pc,sp,thumbnail,original}_geometry: { width: Int, height: Int } -) - -@Serializable -data class MCMenu( - val comic_categories: List, - val comic_tags: List, -) { - fun toFilterList(): List> = - comic_categories.map { Pair(it.display_name, it) } + comic_tags.map { Pair(it.name, it) } -}