From b5dd83981a7dbff571284d4d90a950c740245b05 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 27 Jan 2019 17:40:23 -0800 Subject: [PATCH] Export option: _shape=array&_nl=on for newline-delimited JSON --- datasette/templates/table.html | 8 +++++++- datasette/views/base.py | 12 ++++++++++-- docs/advanced_export.png | Bin 7662 -> 24148 bytes docs/json_api.rst | 24 +++++++++++++++++------- tests/test_api.py | 22 ++++++++++++++++++++++ tests/test_html.py | 3 ++- 6 files changed, 58 insertions(+), 11 deletions(-) diff --git a/datasette/templates/table.html b/datasette/templates/table.html index 6177163a..7a9f9115 100644 --- a/datasette/templates/table.html +++ b/datasette/templates/table.html @@ -140,7 +140,13 @@ {% if display_rows %}

Advanced export

-

JSON shape: default, array{% if primary_keys %}, object{% endif %}

+

JSON shape: + default, + array, + newline-delimited{% if primary_keys %}, + object + {% endif %} +

CSV options: diff --git a/datasette/views/base.py b/datasette/views/base.py index 4b89c975..f4a8afaf 100644 --- a/datasette/views/base.py +++ b/datasette/views/base.py @@ -432,10 +432,18 @@ class BaseView(RenderMixin): headers = {} if self.ds.cors: headers["Access-Control-Allow-Origin"] = "*" + # Handle _nl option for _shape=array + nl = request.args.get("_nl", "") + if nl and shape == "array": + body = "\n".join(json.dumps(item) for item in data) + content_type = "text/plain" + else: + body = json.dumps(data, cls=CustomJSONEncoder) + content_type = "application/json" r = response.HTTPResponse( - json.dumps(data, cls=CustomJSONEncoder), + body, status=status_code, - content_type="application/json", + content_type=content_type, headers=headers, ) else: diff --git a/docs/advanced_export.png b/docs/advanced_export.png index 90fecbde34ceaf86a5088d95db93fe465ca48081..d4349fac5c8625d9e9640c5f66ac6732aab13ae1 100644 GIT binary patch literal 24148 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ê|oZE_dY`TC^rY-0`{M6~e zMc3)N7Ks{Upq<{tiFc3+x1#K@`H?Z0TDEC`=PHpN0*L*-$POVMb81=Gv6y=MX}Y*Y z?nxf?+uO9x`0Eyid{Yj3iXR|~kMC#b?YxXMYG~B2e(n4MYSPauA+dKW8mJ~uYz;T9 zy)bn)6P{Q@^+g8E%w+Mq)dYlOEyjZZiB_-MUen58CeJkj>{wKM{jw1SJe3hT8%cOs zx+s)d@SR3)#ro`F@Nbj-GxmTQ9j&|eBbfGCNTkJf`sN4bo53r6Yxa=9XFq)D_x)F5 zN18?|{ZUgnVI)sT1wK33OnF5>qNvhm`Ck{47U`+)^mqE*charM^NXIcbGwh-j7k;r zyb&k2#@4|LF9V!nuHlCYF7N9VYAeLT^UZ>3U1v%w z_N1wC^87mKdDsDNIa82;pzD)5(P{@W<=l(c=+Ry+mM1Vr^$h0nU>YuA( zY2ZFg3Z*#NA3OfWkcw##2P>m5AX`%tu#$v8cVAX}cIlVY2JL@cZ+Zx4fcvX}U zh2HLUmiyC>qUN4OkRbY%RB7LywjZ8h91A?N&lLJ>2M&qvFXK&UHqtiH)I)W9n~av& zGzs5x-#DN5Xw@3XiVchQqM85`UIytHQF%>rR!wn5 zh@14V_Vi+YN&Ir;G52uHRi`NpvM1`#Zq_+TqZU=ufJ4{(dnn1 zE&ad>HoZTugLi29C!3|4VidCGox=tFgr!kS-SC;L1Dc26 z=`q*E+m8faG(Dc1_t>1wxp$jZ@&)fC(EHeW{qFxOB;w_}2b@DO+_D+My{SS7AOQ?m zbxi_IM#F-%6f7Z|&-^?%Tr*omEnvGwx?OCKRzwuvN z^#60gga16)|5_yCAH?oI?K{E0u*SdG$^RQo`FG9!3)uHJ-1A>yjsNC}=iX6*e9F`E zt}&gvPo0thZSvOHY#aR6Jz=xO{3&Z|=w=RMSBk(HP~fPfJQLyMlsL+!7m4EN>dPQ; zeHMBzE7(PHq%Bo}wYT9y(gQ3~<+;^O&rEUpmZ` z*yRZbn36oNhQD94xhQx=e39FkYdDlS5kc(U>0aTe9k|EMT4yr< zBV}`J8_!I#r@XYJS}y}Rn^T%v1+pk!#>Oe*B~h;^`$kFIuBm#8Foo~-_cs^Ek=C_u zCXaWnqrhnar@m9?J!0hBwQQ%?NR+nj<dlQ7;NFveTb}ksr`#O)E@c{ZiUrkEG>U!Cf<> zwIC>TP_~tj{9(*Q$^1eh?4;R!H#7b=TcT$6;)Jo`@muLox*_Ra3C~_N85s48ZtsOp zULt}H?|^tA)4Dh)uAz&F&Ka>02vQzC>73KhQeCaCkN ztn7d#=fc2D!w=$Sb~(HDmYAFY1Ho9JCHDh*aL)EOH^?7ZKBbI^=O7D1j$qeyfj0Uy z0~$@F28Dgi%ysT7g6P%^Pv-=p?o|6;4&_Kw(j)ZCB``I_U&@fGR}*@zF3_ni03dO!H# z4oVE`RNpet4`@xZ>fGIpceUOnt2S$!!-&$pZbed^Zhiljbgky)?)I$Rrx@O6HiLab zd1?Uj*?yogwJccuf{dMCXl688-`sfgNN98PaN~RSu~0e5-b%LI{x8ghf276AY;#WQ znAKD*6(JGbBZ<=lt)_EIkj-<&EQ4yc5ZRD9i0|Rf6X_2Q<1xnvAhbx3pC;c@FC^`} zJNp)NKr_5I!P%f{7ojm9tG2heL-OnM_bV8HD0mDe(SnJOHN5frO64+6Y4iQB5WXVM z^-=4KjT3Fh5J;6*4r7)#huKmlP(iaVyy@1zArrD$Y&^>_0G1AY|1%k_4z2K6;FWEL zKMm-#uR441BOIxfr-OZ!T}Zz>{Za+UvWXiR?)$Ifm*A}KCf6aa+WCG@FZXql51-T& z?jmw={GB@a`F^djTni#g@Xx-RKvDE?C}$uGuDt=KDRrwscI#J8FLjOH(i5K?4=}89 z@GlHOb9)Zup5bTd`DnB{V>xPc1hrq(Dc*R0jyTBc`UpAG)yvWFweYSZz?>Nl`*-2a zFxhqRvwac2!!h4;_{9$WfJ5CzpkwJ^5kd;TG0s$MieE{ei~l)EPU}=EN!S}(hd;%6 zzpjNcoHUV!E?jIk6Is}ozjofH!Gsa5jqPpc>$V-pCGzczZESsWJtjxUk09I&3@e=H z!)x8is}I%|@n@KUQ1V_o4#FEPbtzhRiROrVZ6uy|irbC1=G3R#hqvR& z(*1VNoGP}aaq5cBg415}+lX_y+6x1%Edg8A6cqa7Xx#Wt#!(e!le@x`w0c6 zVZG>@i}T)na)>zPof6^^nEYR--G^8_r=dOPuMCsj#UHds?Cx9(MTk^p;@O2^rucPI zs~oV1AlapH>BFj@gaE+Nt4cfXLeJNS>g?AWikt@wq#Jg}X-T}jEApCAFA$x7Rk_my z8NSW{TFIR7Yxi-;-ZH~99i%e(@>?KejnRMv3iJE{d>0wZ>OUeu#&jds&~Tt%AM;## ztIV^%pUKm`TQ3qaR_Gt9I%1&T=_iRh?+iqL^!ap)UHe-MwNhQS*l>MD1E*x)8|@<9 zdAW*_34efjsJ5n^Dg)w|{rB)WOz#@@0~gq`M;zY<`N0{E#S3oa<{b*y`xKkD)}Nv; z_8{4@>{UX>IsnoaZrVDRz5%%qF?{PX|AWZla{|TrPFo^9e)soL2V?(l%R9@C{$Dq; z=_GE8@$1ER`k=Kr2Uug?yCYGitAl1f!`@34dZ4AWI=PGPX3@^DPi`obNi$*3?nmgd zObEx5B}bYLo08@Brn=)f|5CHf`lCiTKFZ<7WT}NSse7}a7`5hyQ>Z+|9M07w@!QgGr`;cELGYzzEFJp4)xSHvGSRHKO-WHXlaG#Zr zQ|jcqxJ=#!Ht&zW#(NZC3ubn%OjvdVfHH~4_<8F4vnE>}4_#D>bY9*ne&n6il|Hthbo+F4<}=kEgDIo}IaPSYy? zJUKd7+_H{=_j@~R(G7CvEbqXi3I`a^*l>+xr(oOK-o}f=i+$HUc!^6a?fX82QVds>`3fK0dUUdw znY{9nTvCkX_KYXBCZW+%G;_aIm*DR5Tb`bQU>Qn_#dPBY7hxi8oJC$+~vIBd~{%G?6fh z(Hm{bYW_`znVrdK9#v-**?svWG^?R#ny*&wdi2*4abDsw%|NrS)VhnA zKbp0+W~sOF=&#i=6uO{NYoTJYzZ<4MQn=G;!6~cuVXSCah{LtxX8>mJvgmBg9%kGg~;)@11=i zwao8GR`7Zat&pWrrcTn=m=m3X+TI@?d`8)cW9<4O*|a}gj5H~Dd!*k!6p+Tom$rRq zWqgss1Mo5llDLHEYYvloh-J*;R@QYY)CqZ-=0=gZLnT6rTkQ#7F)xepA} z5Z}`mzY?{}46FG=&V@&;0JH_WS!Q#vT8zHKZ`o5y06?0`3a|u&n$KObp{2c@bfR`L zxEo|}pWhXM=mcTwQhMbRIMDB&kkgBF_)Tx_sY;0-Hw)_+x!S*i0cF3~9WMYY4N3?hD;Oo$FB3AUBD8VDX^un(x7CA$VPUf)q?3QVdy0qx_kb4ORh%JwrA4YgGlHp>tk?>=0^IbUM8*F+Nn%b z7}BuLb0X?p-Io1V;U(%WnUH=;yaLUS%s#pFV;{CVFRu@Nv#_PoxdMgmozg~`Zvnhi zFHga3eMYJ@Ixir7JhjYFi?~bVdb%31*NdH>&{C6#o!9XI%r5A|d2k(MWkjlQ8B_Gl zMffqHY6d!tPJs%%GQwpxTqD*HRui2=37FSw2-yD1hLUV>Ij4tHqL@o`j6}9bk zyp+$?Qc|BIBL9(1<1p%Ush9y6OjdAdvL;JBm;PZtdy$Cy&WaWMxaspiS&bUvf$-~M z6@+Ng>r+ht!<-4E4iTS_nBuKPhgoop7FUo|%Gm>axzdw-Z1EEgutW99@b>ScXWt-p z1MExj-0;4l3oAuKz^Uw?J^h0AS}19w`k~l2T%?lRDklz*wGMSV)39u#QA5~{25$Vz zKpEQ*bWLnziGQ}}VD-`VMlP-6q~oLQSnvi}H7R#j%E`uEG3GH158Npg9}!T^_)h&| zE}>=vRwjxWystU)f(2}z!T7Dr?z2Mlhx+r~FK1g2ubtMjNfJG*-^pA=h9K$B6Sw7U ze`8B;Hz-A#0+Y?)=+-;Voil9q#9+SD>^OLWlWwN9nW8gvm=NpyU*0} z_xVT!{VU=-(91+=!4#@9*)eugAtF%RDMsR zH9>pse5VqKMILmXXwt8MaS0YI8&ckq8L#Df^l1>PoEDI!39woKB~1Bp0;9#IUsig?@iikBls^*r=yqh96^hVdtkK;Z~~PqFrY2dS!o?$aNl(0^@W^SRhvNuN)P`o5hy{W;Yx>ee)1(@-1SaF)qX1JS7vQiQ|;z?#T^Av zTl+q%WI?RsxElk@lHj~rb=Hfw5u5^aBD-jP$2)OXM8ZjQ^8|apNR9kiWhAY`XgYv) ztl!2?t~=_67B%?1`jMiqobt=hdO~n>?Ayun5gK2>%r#V0W%vz8jZi?h{46`_fILF| zExXg!bm&3a@jU&&lrr7KbNQFsA0DwV<#oh$A5#A0hJLcKBdyt`d2|_FwCfg{l(&en|Vmcy5Ndj&NpMwy03E7)il4NZkH1#vPCCn=e;sy- zP{=+HM*;;=yzE*WhnSs!M{=dwC;~*LTfdvgJ(G_%p0QS z#m*#wo!{epV@#QLV5qTl?l}mQOL*#tZIGj^|EUUI0wI>nLal#V8rD8b8zrLq`R;^> zzJ-3IV(m)+ZVutL>4y%KkyR|=Tb-nOQZf9Hys#1tmQ-G@rkRf2;bzeq!$6`=Ndr*(a@d${%v5DfnsRe-`_) zqFl6_CrUa?10)Rm$!CDDNVs>+F^u+9Xeh_?*vXU@?H_tf{dncd(%v+Y|HgUUbLqE> zzg8-W4MLQtv)q#_8xX3f7q@67o9-Hq{>X0!h^%)_;(ePdff$mG56xwq22YVBpkRy6 zcZp?x)x#qt($rzqa>w$LV``iG&ic2f0bJ39LaWj*bGs5&W4b2r+p_1@=64ah(Z0qT z!j;DRRTvdg`W@T49awI;P&m3+M3&@!^&##k@*1!OGX0q3zQU=a>zqK{!>0x1by*Tlf9f!=K>f*gf(%e*@OwvYJkXZm z@JB0^pXc^^`N^K^x_f*MCeytZSG<&gmS?LBF*u3%0Hkm${ceM@MSO8}>E7MF%CqPV zY?69qB8Qu8Rw`PZ@D@?SN|s&n>Ra0n1@rNWw+`=ah+4O)j0Tui!d8|bYQ@<2*0x6) z;eS^C3K9wMKCK_T(Xvz%NMVlQ`ZFCef)^&ro2<`q%4g zQ)+6xr_aE$a56g6i5~55`=wGW{*=%sj6sv8Zx+}Sp;?qd1*mfod~-|^O)ZAQ zou$fqFK%IIu&d(Yw8$+vbf$|!j6{@2UrMmt{}^YlVc9F`p!CS+Kr}@LHtDk#P-gbQ z%l{JqI#m##HiXZJ%C)`kH-tHPaTNi6Z37yT7XCn^adul1aFP{Yl=W9ZWCsuk= zSvJChVE5AfJz7-xe__ZTn4eVyyg7@xi%W*1UWk6bEd~IAfnsl7R47>3c)Xg~<}Tao zk@SsJY)QxNR$*FuCC)qH{mnm|C6P#&nSMg-MR^#>gtCIk)r)j5Bg$y}< z76t%r()%dDRFShVCgwQpEOzllA^Odx3+~H>9&e3`JI)onS-Td9J>`J>{t?-`lR`2j zcL1O?KXac5UNxK3)@q%OsNF_I%oXH#?MPq)l4GAZgtA|xIQkYYbhJm`;|G|TpE}Sl zGJs}_gjNmhxinQUQSQ$789)UHgCLtDSlvAUdzf1Ie%F3nvJZepX<}-AiZ}a8un|W> zhNcbOe+!IA4z7M07aHRAXYf2TJX)Wu;djz#A+C91D;!~T=4d~*(v@_IcKRLN)-#JZoV-knz z?+9JVh|AN?>9l`RO)2TV$_rN?lQ_sjO0_P;l|lB^E1!qsas0N`3{Q0_aS0xmDQ&Y3 z(*7V1J0poGdZJs^>%I}^lr(^h%`^W|qoS9Z=PQSsefo0obwAldHvs*ds16nx8wME5 zl>;GPIyJYK4lYoNy$^Yv?nPP_hDY)63W^&`g*BDKEI0_+Bqu`e^>G-WN+LRQWfU!RJqkG-*Kh?ay0= zbhgU!`Ll1S33vPVrbQz$`ih&yL)64e)W3`Vgl63nH9(Ug;qwr`20wcB<@nI2{eqWX5gu2ySf1Ajlr!KKijSIqlhaY z>H=JUi_-##s?SX3z5;mBCs3XnQ}0zK|CLgUjF*wnrwgo={uc5aSC}ipHl^0SP~YGU&nWD_NlN%<&^rLDJ1HW($F0pr3_J7goNs-jG9dFU1>h@2Gns!0uFk23Z#aI zkRX;URS8Sl*1OKT?3E$vCu-aj^BfeY(?qAfvfldlN&A2(7-m$!J9Gk|EA;Q37|u(~ zN&rSOPnoLlX@>&r-l=IZ zLNPLGXLBg-uxclqVYdF=;A&Bx{~jRO$b2>XY&n`!9~ockG*&n`JCM4_L4?VpDw2y6kUPspI@Y}0(`?N9dsI{t6k9*7G6E4B9jn;Gu^GBfiJvHmZO{_otv zztaK#lP8`j-&U_0h3B;d9K?_6TFtt6cA(3+BPzVF|059yd}Y^t2~JCR3}ae)azSEi zYzF3@hU@v*R=m1+r3K4B13TLTi`brsRIR(8KC+AmdJJDLfxv_Rnc+DPwjO8m7)CrL zSMA2J4ObEY0+(aQZTedLj>* z#y_&>4uuAMUS`*)(W>}9aF5LPcFwSr?^!j*P%kCB&c4t3wYpTn3e2W-bDe91Y7bZc z03EljDec~`^#*mg$!T*wQBzXpAbT%mRUD0pk%LheqDO%V0f10djL$nBaqT&p0%W;Q zb3SfIDMV)v)@KAf_A8;x6m#?O05qjsud=P`IxYZqI|j)J?(>o`Xp$IcJphd1#hI*(~Axtx5RVR*kVCEu+yK(oujm}7yK=HIJAgTx4;yor^ zMAU5(76S>h zAx$aLgHWb`4j8YUAFSsBC?klbJ(H{Kyg#2v5BFdmZpZGyYiuf3$gIf`#~P9Mcx~K( zy*U`bsU(YB?w%C}1rKuyZ z?koZFRr6W$=*_puSMz$68{3uuNx%&a7Jmj1*Lw3J& zhk#D36aW{V-e22r5qJZLNdz6vWeiL0#&)-_nu3BdB_8{5M!$Djp(U9wRUM7e6ev6) zy$gu+w#2#>lBnzIh8U++W(y}6Ose@YrkS?br?0gNu4?3Z!hAiJMi`SI&|jE(He z?}HlosV^x&+OHzT535698J)`RFX`wGcH45@3Q;fO0ozy3N#^&Q&dFckS^!(c%8<$N z>P(UDyRkx!yswo`olN}Y6Z+!o$J`rI+fSIF6++0d52 z_xmXsZA@lIy@c-}W4Ll5lP$eW^RP5~;~bNcR$Cl5e3ocD|Qsnu4fK^Ir1Cr zy3E@FFHm#4Hac~&sS3Z6Wx3gMNYA#SH^i260p?#cs+o(-$8nW^9kFNLvK)0Odm#!q zZ$F;Q1}Nt+)8fO;y+SfuVd+a@Q=vZQJ9*Ytc|h%MlC73r71lixGWG3;d&Ly&jx$iZ z6WvYf)C~-_1v9*yDdTP!R4btKRu=fZ=}SAdtLqAYuasWR9sBt}gBWnFN95u!OHMjf zpsn}%Sz3}#XLA4m>y?NL{HakciSCfHkuhsNMwyjK}Ka8a5PM03$2J+*`j^beFblEI(_ir%PkSqbPqZ9iEeRh^D(n#A_V0 zX1&tWJ8dqY7pPcINm83pvfN+0NNkbvA}16mZ}hlsv#TgyGM8yk3`o5yfY}mO6vH=_ zziO(^zELSTf2lO$1H@ILBN1=$+Cyaegt7%4?P=9(X>S8|xdC7Sa5S7mgkAnnN-nxg z(T7&NLDR+V+8LUgPJ1)%Lz2s9v); zuBSmd`yrf_X-(%=jzxWtQY`0|UkA`WA6ET!;8Pd51qT$tlyP27qIWVyQjqBF_&rEaRaOd7}C+D4<26! zCZx#ysQ1$%5vOHG@Jk6Igc$loOrQVQaxyr^ zk3n|U&yJF%VPIaRUhx6smqF8y2Q?S|e9$kRI6!|V_+;l;bAwhOppovY;MVjpA5~GV zbN$I084B~;?zX}!0ErCr2k+K$hbM|Ko|%lD72AF`2Um zLKO#KA6e1nWtdEBJUk#VEiJ8|*`Fj|$<0KO+~-m`jg11b!RB<|75?SEN;T&5Nj-<^ zL~#ct0+IV2o4c3O8|T2pBH>cet!HZf{DaDVduWS1!65R$8bF%MBGd{%q(|(P5VHw;VbgQl-9&SDC(UD>RPcaC)|yaq-sMu*Ew`BImFVNi>V4}zWI6T{zxr9cK+n?5F06lkw^;z)Vx8Ic$1wX*dg+x+Iu;(yTqnXAaI^A-spjMGu2e8vQwZ3%Bk;v)lv0^?uqW2{ew zhX!OxvO6|Zm0ZonAD&`etFd>BQfc{SFmTsocR)ueEMqUaa2z8|>uF4b{`;I$BWX*ki;GDK8k)jTZDT0kz zRIjW0A6WJ#=JhHzeON$g5@yKgbGr&CU$a@Ah7#}I0jbg{@t|E+>rHGa3ar;E zc$|J24_(W4cMoZwk5L>hx_3CH(caNg1jy!s0^WZ}t^0QPk{sT$D4Oxa$Mq)-bk>t~ z+1~;uAo#win^awE{j84#9~|Pq-C%xn|5BX-dtUwB6+&;|8Ef>VXW$mW#fAh>09jN| z?-c=8s_vmlLRVkpjn0~tShZQXUhKV?4M$qjnmzilcx-!;R+36&<|^2xcRNBtm{HKj zeZ8f9w7I$Ls$1e6?B|sY-4Zd$h&I2@>Cu*h5=56eTmQWxRkCTPjm_$9VD9V*puugC z&%@>PBs`lfdLf3Kd*DdxApiYaTMuj4UV#+Qok3GUMy|NQtQS0pC@ z?j8=9uL3Yoj#H3pa5`WaN&ulWoUrqk;g8$E`v})Cn+SFYl#gokV^kr08Tnol(56lx z`iQ!oj#)W82_BE>#+8k6D=72&>!f63h?3svSxEuIEK>}hh1b{?vs9BeuSPyRsHh7s z;LxD;)Wlp49j3oFXHR9|8uY-~^JNig-UWnhG|Jf57*~_sn4C=)0W`y_-*kYWIbJp( zdnSUre(oLr2tRmoj!Hzx=?VW7LiZ%=0!a7nTgqDRfKtZE5aiJg%$FPLVopz!@tqx0 zUjeCiv*)2bGbZ16-$#tRfUOp-{z2F7;P$>%z!^WW{ctAM2F8275)u$>F|Ri!V#~Mf zj*KLqEz~Ua|WLTqZ=M!gDPPnx)WmGS?xb zGr5onv%H}-Pi^iJC2G4rfb$_UMXp9N?qGMz6K$*$r z2c^LNC0Gcy#8!B#$y(tSWJ~ozJ-6vlN@-Y`BBDU%Es;-g^6C zyWpSuNmUgq*#9>==HJsgYzX*?Gl97c{f(m_~_9{hClL^cNW41L_P$~?K zind<0tS+QJsYIV}by4zn?#e+{|fEK9Tj{qcS5wx;aLOJ=#x`!$15 zI7PmT>b+}=vp?rN^AhZs6Zj*W20&LsmyQpSWmQeMq=w2{7|OGN;}X)b&6N+cVrN>d z=?=5Xg)w@XZqQEy_e!y}_IzEA0zn0h2RSaLqo}3Gyla*}ms`^+q`YTQK%&KJ2vvW* z958-?Z;yXU6Y?NIqdX%FX={sJ=$#o6YFe3YWSGw$hs@V5MW-mH6$1w2tk!&n+ulr_ ze=Bf{b~>J2XEsXw)lK3*X?Mi@-L(I-JLLMJO11a>26B@6#KV$C}v3v>Q_Rx5pl~KR?4TT{i}iO|pTAxrl-1S%dEkq1F!=aT zqOjeltA>P%*aY9U5r;)p%v{I!-*Sqc91%xuVsdnLi{x%UsMi%BMrb(zYE z20>0i_oudCWCGf$tv|IxlC}W^sPFl7-Bk^*#VxlxloiGUo!MFa7a#sbQJ86cDD z-PW1Ng}b!UfcPF$-lz<})6hyU3;Rlaa}^Tc!M^m!I$JR2f3C;8Hm!*KGbFessJoKmvnzrgs&gZ;XRJmdA}d;=i~9XGv2I-L3#~`Zh^J{FB7-h z{LeuYN$9$wU@d$O<(;im-hM%9P2U9rij!&WHm`uD-dkM}4NWUd6yS#W(bg>8wsb@h%)p&& zJarsh#?59}dd2Ze^18}TPL-}(^-v;2Xk9H^zy5fVJ}JpfZ|Y}(F`ap62!@${I*S-! zZmVp$zxpe(?{jK_7DpX)A$F zpCrUZ#J$gKJNIGAZx)i$ZA%wAGSEOBDj>@9dO<_%hgErZb!NLz9+8DF^iW-o%ZwWJ zDQj>=l1wD4<=FR&0}2vnKr}9LSznU+)kKRQI#hn|73jSk=l24lS`b!q2eKbNl%VAI zv*-Ke!Zfe0BH$xllyQ}g=N8RS*sR`GoH`6lE`J=!KO%lVL&r3*ronkO20X&9I7Mhh z`dFdYiQOO3E78{`^Yklbi^MsH2j+NX7I)O09YG`E@5R9j(~u$-G{^p4HFx|J$Zj|> zvF0WfLgz3eE!1Ne3X@b&;2Kn zv1@jD@#E}tk1qMqfoBHAMh1hLSW3xucH`@} zI%jUlVzm)pc8UO4phFT}S0p-$i39J$RA3?p$xrDdex=n{Yy=EV><< z=A0h|H8iQO#I7x#8B4+uPH)SWx23+m0$S_Gg?W)sBmEsqJuDd7fiaci_S?84@KHnk zBOc_Q2=awYf`^KiM2D})brk|31ktF|BsjT$`n}03pAe(HB3GJq%z-yOcBYi#2&|;` zM1s94gfmP`&4$_vTJf2s8PhmiU2V=@)R?{Wo}~o_x%vs znorH@oqp9WQF08aAdCq358c#KLruGJp2M)M444pX+}==uu12*As!!OwiJ0ayw8!zJ zPre5XtD(rD*PECalQY$w&VySUu2sjNJt*Y}U*e#H;*lXGgR*oL(-V$kX-!sHiwp7g zHF$fax{=xfl1qof0X4XvX0?$Js^#HAQmPAz__+|3(6Pd1Ztc==AXVidn}6;3byr1Y zjs}uER$AwVgB~MOiD78qg4Ah2h`b#KcjojR>BKXt!AQ9eB_)XMls=85F9+UssQHyT z8$m-}nBRiC_j*NLL@T{((h;mh_M?97m|nPo0d6eKS6CgzcJP*6KkL~rZT~(M1vdzv zBZj=uv!Ke#b?MiXYaD0s%cgJHGdW4m25aFxBVMt4ZOWcP4HrdCA>Y=p0||thg12}P zC=l;8o+8BT$EMBM5w{)OwOeJ1HFX-6U=e%lry*7^_7k!FVx!Y=$$XPe9GNo^72`@e z*EeJ8W1Ad&Kg!YIhiHUzN#m2nGGR2TY_3Z$Zd;~#=R@*-we6GU?&m&gbKIO}>2}lO z_D~#84}~3$xGFUCX6R9Y{0VFX;eFUF9mNX_gzAtsMV@tP2Ulb5L*GRCm3+u2bTZjb zX7@WdPPJ{!y)is@KGyD`l9j32*L9emyf`$7U>`#;rput4(_PeDR4=h$(nO?nUtqkC zSOpIW3H+38>+)d}EpL{q%(e^|Hr`S~HmKL3)S1!ggsAESQbTcfAQtA*zQysQg_q!I zMA-B6TngVz%K%`j(5XV(&&9VC5xdvSW3pRzESQ9a^OfoXqXYvPtJX!0b>APUGYM+Q zS;QOMvFpHi6-bGQuV26zA6y3J28J=6?9XIzBtQTcd!iipq&~GXHa8*=9-0(oFd@js z-`ed0&k7|Scuqxd84rqGvQ(tasA~{=cza--9fjnVeAEweb@?S`NTq{2;4Z4h5-0+- zqEvo8b(xVCd&4o>OOqzR{fq&~*14}wsZR&bCG9=4e6RL7L}{*WL0=Xu+BX@aqPGrjy!_K}MvDcj@Nb9NhU_)Zt} zFMQYL-e;>#N^5Y2>Qu++D#BR$zK9mM=Q`_d8Dl6p)bISFKw!j;Tk9hcH{J66B384` zqAdMpS28rH+bma2W)%(=W|dn(kwnKz161+l^*WHG+?$mbBiJyEJwj+YC>kC>Jh4{d zkm|N}{^qJ*!XVR+*J2#~jV_N6o7k7zf&&%e*4JliLw6u0hq~1Z@CbJJSRh&Tx!Fh6 zt%ol8uleB-g~tTI4o)58g&xkZEkA-(4@)my+U=R>*~|)q9SIkF`mr-f^3yvBlM_rgs^#daa(E3+R{6Bd)(N(WAF}JNMxL4SBwA36smtj z1K?E}wLCTxz`O`7konjYp}Y#pf)r|{ZN8DWSF6Hp<&42ghf&Rbo+qP%+(VTn#8ja6 zUi1j{E8lt{vb(mn;d@B^%4VAgGGw`WI7*`B8qNE%9HX(LE|}f9w_u=Uj3C%n-Z<@% zYvZ@szBuww0Tmx2^EwL%5I`X6<*){qc@$}@wQYdzB)Yl;fNNIdEF0jYOxq<<0bmW3DZpLjDo#Oq zJ|h$fFa-d4k?GJ5<^l2rChaClK8{cX-D-wTNeppl(9i^W|^&;5;FRmOx zAkx+oKM*?UdJH-whde*t5y8Y}*VZ%NbiEvt_sF38@N!f7LDtB!*{bZ=V^t-;>0i4{ z`_i|DO*~cg+LO%9BaZ1n`(Lv`1SJA!SRn=T9%MBq)uS8JYo$rgM?)r!(f3T>aH0ia zFMm14phPQ0-*H_|;pxwCtx~rGRx=|KF)zo zX@N%=;29#G3~$%zJZ(pLiF%Y->m>K5F{9xHtC}z2nqf%o~;M`DeU&+<7&kCEv z3+t~VB{=2gq6FHwtR^Vl5_bKMmuTj^x?51q-Pr~+>mudAGofhdg7JR$r!`#h%|!je z2d3}Jv259mLit_{WE_t>EiRZb?ii&BAJD?(RlE>UC}^wUSKY9fwxTNyujv z@}1Hf9DQXbe*cz}=11l=x1y$U9}|L2p10jdB=$7qtWFCDoTa62UjkpN+oQbet%PQ7 zvk`dya`1b3PnlI6DwKuV}ke=ivGs6IM57cc!C!7yxM3(Id-jjE8_Il34Q)iZ|t z(r2v-Q`Un?`lv1RW~klvfcaMo(NK-S%oV$k4}gZRqL#$k+D2SjdURMJZhvc3U>Hfv z5~>r$az}R`j%x-nl-E>ORv)`y?_N~FAPahzjjOFQHy4dGTDu+{O;zz2bfrpH$>Z5d zK!Ng>KibN$hPe4nXmsSKk$UNOaFK6I`L5(AcFjH`ZE4ZAn^%@^2FUSkvmuY#1^RG% zp9uC6YVT?L3DI0u6Ol*sIGzXTWnyi6TZZBu8|c9ssJ6jmAEmktm2m+>yXI-`J`X91 z=ijAKU80)rxVc$c9<2<&Frq{kGN?eCt2wEYYnwsYd#N&x5b5imJ=I6MvJ7nc)G>vQc}H;xOn_qS$}2r&)Z<)~R! z--)rf$w1;z?cqAmc}zGAQXZPFq&L2(+>U&CjtO9sfJ6ph{bkOw|1`2V^yP6(x?YsD zCfy-2(ql$Q$RS?9RM7-<{6FU@fM&pJ8 zvvlZXi!ER?olw$=|BTFgjvocx<-s_T&oQdqns z%Qxrh0OM--ITy;;wk^J-{j{s-djt%|^;j1e$#KGST^&LOK1-iAeAN24Ru5KJ?tX;d zH>+zWV!@09^1Hedk37A!4 zhny*>=Jp!Xd~a_&xoFynP%pjfipGpwVAMoB%J3S>BgtqC*`nwD1CN$pqs>9>$ZyFp zjnb%TQBw((nmUroIUD|W`nR4sDRV$n6J(Y@+csIfVc>_hu7q~*^)>c9)EvwxU`bm0 zh<9XIMvK0GbJp<`fi&7BS3F zU-e6rwl0+q!GG7D>_FzU-KL)n*cJRAtZ_5@Zvmr!Y7}I z8;f|#@4u^zDUD?8G$j7>o=iB3Cw9-F$*ZNO;ZMlC{C1pq-M>4+`<-?NL zogD9%WC7xW`hsLf!;bR3C?h>%v7K(JJWw$X4xk8Adl5J06oe6f1@vc7D)Y#Xrie9S zH}}q!WK-Y~YSv}bW(|cFG*1jLFm~U4MNYd5tAojnJH9_met}R8Pl?t%*^h~|HHkH2 z0qKd!aYp&iAfJ+aoMzWasZOi$GB88|QU#>JYP6!0_8jN4DTLR$jyX@{cTR!?SD1eN zyYpyN{k>bCLjSsS8>EniK)uVsXPo}XUz$t@COj?=FZzDYtT=Cu77qD0)rELIBH=3F3PBX z!`6UU(BBOE=L37i zEmP6%rSK1o_%6$7$hzo1=l5OUDwO6pdOwg6|L+#$U09)*T^7jxacxZm@6aO`D)W4s zsn+osmcHL4qrd##^)Fb~VsVYnV|m6XT7rR?niGKMoR8kvzq|V7_u<|(8&f_8Hsi|# zJ!CbnBtJlGzJX}!pY?$U2L}DYRo5CU9f6H9>!#h@5R`z2*+2E0VZ4$pg5y18NB;E} zzz5`%))o$_hz*JmYN%GVnD)wn8osd-6-kvvYf5p|Fe$(MXmt!r661*9o)=;C!Z5x z$`z@~gf#a(rkp$T=QzLTH-vH9JCJ*6zCvJ(IG&1Jd-SG~7W41Tv)@!vkQ%&Gfs+D- z%uCmqn^l=M0<^MJe-ox(y&nHNFrSvb!@XG#uEYwdG@|UY8uO~SQPnOjp6mCYUZvIK9kXzG5~g|& z;p+^0d1FJ6|DVr(Hd-~0Tt=Kjx8{O^_Dzwl=TE~kzj&=prI VULW{Y_U!NtRhXtyu7c_7{{dsBmbL%@ literal 7662 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