+ {% if '0x' in sp.0 %}
+ {{sp.0}}
+ {% else %}
{{sp.0}}
+ {% endif %}
|
{{sp.1}}
diff --git a/app/grants/views.py b/app/grants/views.py
index 07ebe2ce9b5..1395e17614b 100644
--- a/app/grants/views.py
+++ b/app/grants/views.py
@@ -502,7 +502,6 @@ def get_grant_sybil_profile(grant_id=None, days_back=None, grant_type=None, inde
grant_type_sql = f"grant_type = '{grant_type}'" if grant_type else "true"
order_sql = f"ORDER BY {index_on} ASC" if index_on != 'grants_contribution.originated_address' else "ORDER BY number_contriibutors DESC"
having_sql = f"" if index_on != 'grants_contribution.originated_address' else "HAVING count(distinct grants_subscription.contributor_profile_id) >= 2"
-
query = f"""
SELECT
DISTINCT {index_on},
@@ -537,7 +536,7 @@ def get_grant_sybil_profile(grant_id=None, days_back=None, grant_type=None, inde
rows[i].append(round(pct * 100))
except:
pass
-
+
return [rows, sybil_avg]
@csrf_exempt
From ac121ec69b638a50ab3bc86635a4f017b8018942 Mon Sep 17 00:00:00 2001
From: owocki
Date: Mon, 13 Jul 2020 18:44:24 -0600
Subject: [PATCH 13/23] adds ability to re-try txns
---
app/grants/management/commands/payout_round.py | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/app/grants/management/commands/payout_round.py b/app/grants/management/commands/payout_round.py
index f0052554a48..930be3dac59 100644
--- a/app/grants/management/commands/payout_round.py
+++ b/app/grants/management/commands/payout_round.py
@@ -167,7 +167,20 @@ def handle(self, *args, **options):
})
signed = w3.eth.account.signTransaction(tx, from_pk)
- tx_id = w3.eth.sendRawTransaction(signed.rawTransaction).hex()
+ tx_id = None
+ success = False
+ counter = 0
+ while not success:
+ try:
+ tx_id = w3.eth.sendRawTransaction(signed.rawTransaction).hex()
+ success = True
+ except Exception as e:
+ counter +=1
+ if 'replacement transaction underpriced' in str(e):
+ print(f'replacement transaction underpriced. retrying {counter}')
+ time.sleep(WAIT_TIME_BETWEEN_PAYOUTS)
+ else:
+ raise e
if not tx_id:
print("cannot pay advance, did not get a txid")
From c464095434168694558acd1ee03556daf48e930e Mon Sep 17 00:00:00 2001
From: owocki
Date: Tue, 14 Jul 2020 07:09:44 -0600
Subject: [PATCH 14/23] handle nonce too low issues in grants payout
---
app/grants/management/commands/payout_round.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/app/grants/management/commands/payout_round.py b/app/grants/management/commands/payout_round.py
index 930be3dac59..b30122481f7 100644
--- a/app/grants/management/commands/payout_round.py
+++ b/app/grants/management/commands/payout_round.py
@@ -160,11 +160,12 @@ def handle(self, *args, **options):
address = Web3.toChecksumAddress(address)
amount = int(amount_owed * 10**DECIMALS)
- tx = contract.functions.transfer(address, amount).buildTransaction({
+ tx_args = {
'nonce': w3.eth.getTransactionCount(from_address),
'gas': 100000,
'gasPrice': int(float(recommend_min_gas_price_to_confirm_in_time(1)) * 10**9 * 1.4)
- })
+ }
+ tx = contract.functions.transfer(address, amount).buildTransaction(tx_args)
signed = w3.eth.account.signTransaction(tx, from_pk)
tx_id = None
@@ -179,6 +180,14 @@ def handle(self, *args, **options):
if 'replacement transaction underpriced' in str(e):
print(f'replacement transaction underpriced. retrying {counter}')
time.sleep(WAIT_TIME_BETWEEN_PAYOUTS)
+ elif 'nonce too low' in str(e):
+ print(f'nonce too low. retrying {counter}')
+ time.sleep(WAIT_TIME_BETWEEN_PAYOUTS)
+
+ # rebuild txn
+ tx_args['nonce'] = w3.eth.getTransactionCount(from_address)
+ tx = contract.functions.transfer(address, amount).buildTransaction(tx_args)
+ signed = w3.eth.account.signTransaction(tx, from_pk)
else:
raise e
From d35d153269a15fd22403b75e0cf652d53127b9bc Mon Sep 17 00:00:00 2001
From: owocki
Date: Tue, 14 Jul 2020 09:36:17 -0600
Subject: [PATCH 15/23] adds logos to presss kit
---
app/assets/v2/images/presskit/logos.zip | Bin 0 -> 935017 bytes
app/retail/templates/presskit/logo.html | 2 ++
2 files changed, 2 insertions(+)
create mode 100644 app/assets/v2/images/presskit/logos.zip
diff --git a/app/assets/v2/images/presskit/logos.zip b/app/assets/v2/images/presskit/logos.zip
new file mode 100644
index 0000000000000000000000000000000000000000..369a3fdb4c169ca4960849441a00e71dc33e9d82
GIT binary patch
literal 935017
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 ts+v92i#)l#GNb7L-#eiZ
z(M))~77yCJr;Yh!NPdsmI!^U*@i5aLe5=`m;)l0ywLna&8w#EZHeDTPEaTCwwkYK43r4M66`eOOqNs#}i#cfJlu~D)H`Q&ApP8yZaWb=h
zw#FrkkJ&f#)wI6_CSC+1SqAOyIivr=mE#aVSBz+p?gG$sFQ(Wi6WCcIob$Rf+#Fgj
z-t%tj6?-)rAh|Wv!Yui^PkxNBz|FYR7@Ao`&hw1XP7tN#bdQ7EqxxuF4o
zKVbS7lK(xj{y}oq{}Gb^cl7$dMdYI7=ZFw9eEza(;-
z-z7P8)|TcL&i|f%u>Q^B|DrT4M`P3$hZC{ukS2VR42U%H6Dm+IqT3~R$4Bu3S`_IJ9MqSxmy-SGfmD~IK9N~xH)RzEsoFC
zcARgVkJ1M5*td1A9(F@*+Aek1wBUSi&t`AI2+N{+Yul({gWw=-jqU5R>2Gch;?EQ}
z=cU=hVlAU+EUebZyf2ljNebv@s7X_J-!9R%ms5N^L-F>tDA;(J1?i;)@HQSz4Ac)L5wpUFv!UO$NWguZJ_H
zBO;$@%As&
z2duz_F;@W;*sIHsSTV6yndOxM4-(gx->EEJe!y5H;9UjzB=H0X2*6zA-0_m3xn-*c
z{92t3t`u+}Be8E*xGKCYfYf?p8hQY>XwZAa=GKvQ4ct{O%YS+!9b>Y&IA5EeQJb7E
z&aDWUtFwk}!_T$%6VafE}TXx(%#G=vgL|FEh*Z(3+AEwGDyNI)e;NqAut%
z4Q5LMZ>ep6C83ME+pYzzu%lAjjnXt^bZifu9Y-AxXqu61$<2yi^yjCbq7Cw9(29=M
zEF^^$A2iJ$k#0+$cdQpEo(zPpq=_`+A^JMu>rP~;Z_GcO`X&~>>=)r9YIp>yJQ$=n
z+wbBGRfn38c-_WRF9~($42Up7r4~_)PEKVa@cW`;m?d-`X0sg`3P(5=0kWee7w!@RoTxIfi4?>a6lfD=RNaz?#AzomEawDLLe|&!WmN`5dyl
z)uCok6@T+yF05v?3J6J6Q^4>J?Y+V5(bb~_Ga_!pTf&NCn~M5$a^`Wvk0o(RiQ*bO
zj|uSKo#Vp8yQAQ|1_IGT`L-HF71v0n8mA0MMOOiWFF?!W!e&F54-^!KQTQy8RH0cG
zizFtfBNGX)f*z0<>9#jk$ZVld-dsvG+O8zY8&C=66vOK(u;l
zg5l#((JRGD`Sf$u3_7Ao&t
z0+9(>UJC%+s}2SP!mGomZllGelB0sPaonL(+g8DB1n(NDUXg|}QTg<9bMv#C+evjN
zPK66tmCQDi7CNa^A2+o{2#d~_hT#Qaz0S*{(nKYs_lc=aNrikv;?Qj9CnVumprfxl
ztl2hdr@g?%dDY#!LSp3^4DgJ`)~*+7_vF2nFec$%Ua7?7w2rv%OovW{$@vDYo$PM@
zV#viy8R_B>qKk{AK4#HP`eTZ{Lz6+n(K#S+mHmb
z_fZI!=e4*{0QMlyJ(1nGsD4V+57V|3npCZ4KpLBs=Ec5desuFf2mkg6?!idGI@Wm=
ztGJux<#`nF2`@29nDl~^;J^>@!*Gix?kR7pfmlcR-IGxT*}$fBeQU7*eCmx;Yks)0
zDFxFhp=citk%qVgs`Xc)rqN>P9(O@Z9vfbr+ntbW6~K932XbsXu$mBKsO0)B3t5hf
z`wvO3IJOPNvs=M-%kJHQZ77&mMLdsTVg;{b0Y
zBbiMXwsHOPTa`QCQ^pO{=m)?#9@(Fe<`_tYV&sJa9htNb~$7|~GlGtNV6
zz!6@T$L$xLIWj0=_
z9NknPiriDBL>4;R*1qv~PHEp>vo}AHReEM7AE>O(@v$diS&I7T;=m`!E_7y@`BG^!r%b~~U
zBJNQRzn!q(HzUR2N%+Yf&21d}{XvatuVE6eMCmR2I{df7wUv=%8XEj)PKJHJ=
zN^a*5u5Fs~IJ2dS=P$3ntlIQsviv^VFw1`RKW8z&t>!G&doiRreC58m6Z
zJ_TN+p1%+O>~CTkql6y|`xT#z9l~{E2MQXI4~D@0dY`g1ES%5@^9eZz*Gf6cOS
zvw96b=F~x9E$+Z-fnn_O`r#2;zQyg_)5%4(5pUX8@8XAD>Zu(;OWJ9b9eI2Si?8%0
zcC+yQ!?4-w*VW{_s&U;{*9m$HY!*>QVqxS7iJz>d&fh^fFrnh%sfYzuO9+8bgQ~EY
zP{V0C11A%OIbZ{r4ZjM+=41IZ4ht)?8j!S0;zM#Uq&XcDf^u{tMRS{{CNEo>1T9R4
z)r^sp{J=k+3i|kE^guPKSKS@dj(cE|-6e{Ris}T_ifNrNhv)+2s&>bwQ!j}Z%jUX@
z8d|7Ved3ZV&KXPdSX+fFwp0m`$wqIb0qgn+lpmhTV!s5zZ9_|+8&nM`!G(Ff5tO_W
zVTQJ8u7tll$c%1ZSP=&B-JdZheP4iE^*0Zuad~w)GQSPKj)&sKeklzyV1%l>AZ-Hh
z>m|$5~l9ep}ltTmpV5#f0QRh9#UvbfIcK@$
z;ESX}qy%;rW9`_ugD&Ky!8
zN2jC;YJg_1c;OVRk50J1g@$jZmRYVem2Sc$8)M)g5k~NWnz+8w=25HU@}mEHzNSn3}8wv
z5bU3030W^eZZVFB{Ph0?i>R-m7zjmSgN43lHd%x4aDz^Kb
zdD0n1+jymc&atV|xHX9X5)Way03OJ(VnUH_(_q-HosX$FxpbJV-M^RL+fW_zGGA56
zEkAfm!1v}_^gBtkg(o*06|-Pg^e~(!pBA>aF!*ch)APO1+SmPgm!_B8&
za;E#ePI2kAf8l;(kUU-F>7%au^YyrYaEP*~PSnun_R6S3kb<
zalI&qf$$7p*|#{wwPM%7Q==27beC^>bRcE};Q{MLy08@%bl3owew%fMo=lKm&I7kTUzt#-VV->5qK^z4Pbrs!
z+(sJxvmSl5Ne8U>IEz~lpg_+hl%--@2;;6HlW)Ob3P)DH5gu698q({>hOEu6+wIXo
zK=jOx6LVe5#xOO7DJ|c3>iT(`ll@HL+sUc7ai(v-G}jNUIjRJMgmwHF71I*WNpvO-
z?EfW5n^`NuU@eIpiU;m^?&qa?*16_CJSHsM^SA@$l;dhT1F0?wE=R$8We_kQByT+970E?A7rf}Xz>OK
zFkb~tA}pxJ0)uAL(Gv~JMGbWP-y-VLN8JltvC89vsb)!p37vpRs$m@(fk+{JStUjF
zBabpao>#qx6%iEu|j@R*mejPJv#KM(03cDr%vJ!S2e8?<^RB
z5Vxu@WbkA*?2bT&&KwH)+mZBgW0GL6kI*Ki-^$3R*M*cQ=4*SVgs6M0g2n(rJ?x*`
zpdy($mPMyS7n!f-45^Q7X#FWC{zU2Lx24ZORI?OQ*sR>PdTVK5&++;ONabu;@IU>+u12>NuM
zHH=oX)Ef7}7;ae3Sf*Q8h0}Qj&jt#hY-3{ix*m$o1(cb`(Mw_=~*bnH8fl*gj@7
zqJ+A=BrFJ-4U-4a0;@Dpm0S1+5D1Q=#V~w7f%ccL8W-!48B{ZVv`#=+@#hlUKh@SH
zJJxLp+!KyrijLM1Ic0VL;LS*)oQqVRYQolCgV*J>
z$Xao%kg2))ck2WBN{{g$^=I$m!BGqh-s3M|L|te(uyP7uSa8VXIb0SPXOjeZ@xl!8
zlhjmQTEj7WC#T8{k>Eh2GBuF!Y{Z0vUyw+0lIff%S-5Us8Sjo1t-sxWQ5S+bJM6^#
zg0|9|7D-9LF*p_q*)2v8aO@x2U_qPEFr!s%J4;9^j>PV20D)E%y60+WJXn==2bRu^
z?mBedDNJePtb*yM6_Vm1+&`?)PCora3VWA%fz_o=$iioj5KQAfhJaBPrWW-%_Qpr$xD|h07oX
zy#aMM23H=$o!9bi)4A7CmBUO0B>~}yv1Wx$-&=y)9|}!|uBlK|!K?kgzoT(}3Vfc<
zY^gmoN~p?+%wCo@Z>1Pji!oi;C->_`phbE09?fvRu*IPA4Wy)ie@vzG1$aUD=NAA;b!QID98;`?wkoXD0vi48fzUaF&sSj
zYMc1F53N~8!;koAGmGqk>l-
zA4HtHU+LgX)(uW_dyN?}dsqJN7aKi6PhT*&-1gd2Ud4BPWPy44J5Ky?_T!vBx~>mC
zf&MH?k$6HJ_5RL({h{N(^uXV9^B+CH@;}i7{~bdAZ>a*OsiyFte=A5!wDY<9XH`)A
zcj+&5y#I0&&flf<{-Z9~&-gEN!MH6h``;?k4r1UW$bJy~*@Uya;_Rw4C<
z^iwaNZ?F9hCw{(k40}l2EU-o>SsrJtwUTVkBWn0=fPVJ`L)Q6{!T|3%V
z1gTg}vbZiGa%{}4@x7^FltAB4-yD6;UM_syTHc%Z
zPJj3BR18l&Oeiic>-6*?p*!yKhmP_6%jt`mm%|K0HKn!R#@R>kiQk)}o3GP#81(9q
z^P5)paR*-fYusALlzG=%C*RgLeFE;Nq?GQWi)9Vf2zHoB>5IEVrnhH2S83ZVbG2-E
zaW{i!?fD=$dR$FrkvEqr(4Hq@e>`vJdK`)#1h(hpfW=jRcwsrHCTyYI$KcCQoOuHw
z;P@~^n=@hrc$jQ#rP+KG4)JMl>YyFWeghluZE!onFRQ(#6865~`LI5Q~=KrBwP>-p+ZIBJ3Z^VzPedsmLLbq`kr1KMNA7As2POb79nBVQ=
zC~gG=))K$x^H?5Lt6oQzt^r2}c2mxBtF9MgK{G0afWh%s4Zy)&2~TbVz}YOJ$c3wj
zdMh36SK1u!GX3X3Izz#rDor@8aH^N{gEEehkn-Mv{b%?n4H1LTyAM%Gxk8AFW+c52
zduQWz-6|o?i)ou;$Xr-&jArpnD_!1L@hcu^T7uP-qXUU
z#|yL7LH3M6xTQEwyVrHQeN|~an3vwpz>93cRK9;7zhbI<#SZ{w9CC5dEy$gJ^P8pW
zmZ11Hho~}UQ7}Sw+5v_56BQ^}Rt3V}GHPt3)EN>H1;F^NnjbWo?$f}u>Ugz?m~lW6
zi$_bLB@>CfbZ!H(Dj}h*l)kePZ_LG+wFOMzDU%VT$Q9kH_yGAQx=uPM@JIrwDx72X
znc%KfUNJDJl$fRfc!v_Oksfe4klbi)sJndzrE(=I!g(-Mti-btZuAqJM5%3Z8I$jHLI@OmOcG>(jH$F2
zioS5!nUo|`g0u{s5~Z9Jn!se(dw7qx5hKarv>Yw9r6bpnr%{D#SA1j$^(&VD_w7FA
z+|+5q%I}Mak&m)XgZqT5T49Ye=hy_Tpt(&YJ-xYP{wUIl4=kX%vYo)>y^Sa$lyu_Z
z=ydP#t5Foa`qGbrag4h@K|)np5VQ{xrZ&G<1@}{>x04ONIg5@9xZ}Q#OJ&VFC4Rgv
zxXCfHU`6>3TlRo+W{2hv&z-i6>&$F3PH!8BaZL@36?Np#P{5}IMX%`qV_wGK*Oj!~E;
zuht|gWlYT}bT3Y+#3|!pKb$ah_EoicdJxNBJ$a(|7MTNnPs?yu`TB>P+&(CsVXgvg
z7k#COm`fmqa=ijpBdEQR;F%>PF=Ltl0EH_ypeGuIlSuL`|9k{Ln~2CH|N9JY3EVaQR{5@2xqa
zXDKg?KjQYJ=N=><<$sB85Mb=|9PReDu#<~y
z7yNr9`JMM<8tDX(SR9)mrubl#Y&lUlg(3#VWnQDTk+t>LcoO=&7A$^BtI@8_Bt)^L
zBai645L@C^IWy0Z09dxVz{=4>*oq&2uE7{Q{(ro^L$GK;w`RL-+h_Z1+qP}nwr$(C
zZQHhO+pP27sJK<{y~e9nHCE)xi0o#>$jteT>3hLhwn}PB?v>GO4+@a}7vKVy0rove
zFp*=QI|4RFlU;KHq%=%Ka|V>^3E8g_|1#{jx%mYhjw=p9oTy!}h7gz%uQ9v4i;!}Q
z)L5t?9ze|k4RsPe$-jL&8OVPHCI_b?ODXW|F(4ezh9%>Q
z9Lacy{Ty*2OC^@O+4WH32ON6B3GZxm!bl^+>JcF_{f~AmfWh)05V}z^l7Oj$tu(
zf}~fm!*jCj&eU*be%)4Ly{-5gy`&xW(6LYZ3}xRBi1?L0t{Udd1L3q~tFIsiE^6U;%&
z0*tB(k02aiYLZxar)W)f-Gw#cmiCU<*RVa*pQ^_Ce-ozp)OGV@51y%Vnj_
zX*K$M!MfW{G5+OXfxZ1k)D_4|=AmU0APb-uGsP9ZL=~G!^dJ=NiRobS9RV;n=xR?u
zzLhZSc#uyUH-QT_KhYkq54Xv!G_Zcm*_o7^_+Y>Bo`D9`U1>}alAXCf1|pfA0Wb?B
z4`=0?jT{tm41lcBWcEY0GL|#n8aL{`OT0%nN>&wjfeIZr`-sxSY4F_mubp>B>XqeJ
zqHWA--fO#)1D)&K%5gT(4SpOR_owvhPyFo<^nZvySYgIE^B?j5hkXAR@&E5k{2$`~
zKMSG!|KjogE#~LFD~tS}A(U}!SepMY^K<`iUMn{RKme-$ehK)G*XsWfy#H?>)qfE`
zAA=jsza{_Wq)Pdhx=;J}{b&4tnXjh0K;?+}(Mi|%7}xXyJ3sf}0vV$_2mk#J?%mwb
zwXxptv~_m=o4}2Jbz--A+S{YMwjz4s))F;TFf`_Py+3qMOh6^4q6!9$2LCG(2tzt3
zi1>H#q5%MSMt%8b*&yH^?t8ZfG$SM?0s&AGCF(j8^u=++ESJQX90M@pou~r{(_;j<
zD+IZ}|26x#51b15vNg@KZ_NME#JsrdjWiM)>;Uk?=Mzv8dq*EK2g?HYpTGVdqG+G;
z_Q{@VGMJ$nEGj53$qRXMitd$#2q9}iV4?sUd8LtRFj&K?dwm76xZqunD=L~@OcLN-
z@}_rYCWvIw&E>{d)!fMrs6?H4A(DvclYTQ#(x~Qo9J>gUj`xh-=h=mFTQk4@h3E
z!KE!lWM&{1L0~&rz3w0E{FIW}zKC=TabrahIoGpIMqWwn8`xn>=oAFN*Z-TtK~CV5
zVpu&8#QPh23fPCvP_laxlIl>bxcA4YKj(%|GbCA7X@=T4YznzZD^AIW&}PPH=WOXv
zFZPtng>`xwBVkDcHQ8v~=80R!;jp_oY!=Y>#=bKCW*0_!=`tDTMe}>A8Rk$54)OKM
zmyPyMw2MCJO=vdp+WC8I3*i(7HFGKry@W{lguQ)lkRKh2DBx72L4W4BK=S;@;Hf
za9~G=wP|wg
zqRAk-)VvD~<0UTaFH2J-#&oTb!MMqONw*I7Y`7$o7C1bMB9g(zq{G=^oMt=;Kmi3QX
z8^^*%{A`5dVL62E$co^UPeMGhc~>Rji~M5}#x~Pf@z#yFsDHad%|zmcMoUrKXn8EZ
zF5}Jh1urYtV8X8Qj0W2bhu0ycgXMPppz<-ks)D*HA_6c)U0)a`Irm(_6$Kb2r86`sy34U{R6mh?%?O$5_}c_iN~F{fvr7LYTK+s9YRFS}7LW
zFBfd7{puVuR8g(5cPGDQ!@+Q(G{PX3N2RI=xH6
zH5Vs6Gu*-7^=GA^50Z@{QDTW6zGWMvRdb^P&kWS!i4hQ$RbdJ{!$Se!g;xsTL%bXP
zm>1JEnS`aBpUuWH^!(Zx%2?l;VE6UXhZ>pM9AfqO8afWcwAZ4`&)iyDCh1u>gk3(=W-52x1>X=
zN(*cX87EIuK+W-$uhQ+_dxpi;lMwu(FXB!t53krm>?2R;1y+=}g^eO~Fr30RQGgF;
zVA~B%lrr)@KWc*GObM@
zh#tt5QtJHC6)ilH)mLi5P=Gts{98IE^vQZN5UyGzMO~VkhPQ^pk7#+nmItr^3iJR2
zr%@cG#!q3JoxbCjHmoDP7Ntg)WKL%I!eVZT1(#!*1kZ1Pct_yxk{(E$+dHZiXWNtV
ziargu8f_okP5#;16cx!>rfARul)l*eHF3yG;I~{pKK8zEDm#ODK=;@mEXN?@8JNOb
zhSD*WuPe(s^U&kDR+pe)pZd1*DE6TXT?UZ1#cw=tjc!<@liWdJ4_sG6n21?cMAJV3
z0YYNhU?nQSTm3n=GbeaN4ghm(YvubA*Z6@aJ|2ZTiw3nfDrZbulfTU*_WCJDR?ELk
zX-8|9Pip1$So!RIPQQum&dl1z3o>+17OV^df`XAwml%nX-2=@z%8wa;bH%q~b{ZNV
z8P+7~TWo|{8>rg}qI{{6xPzM~9n(P1CYmHkJ6+u$1He
znSWdsypetNdL9Kh6sUFVeI`Rd#r3C(|0-{!8~fo#W?FrbL@lq7|e1QN6}H^ZZsYY%
zUyrl&Y%o|^d*E)QKlY50uab2O(->zjCyz?`4V@PYlEh>A0;5=wxqS3XIe(BA)(j(J
zx=hw9x|!o}jS5CGIRVOzN_scM=HHRbo^xPQU_BB$`Y}ysqH%`R1La^Id+ncHv5;DmgO*N-Dcyd3939;{CM=`w|lO!yhO|@2wbTy
zXCSZuWDmN}DAIa1VSiWGV$Z{wtgaspIZag0TU76VfY9kZ-zeYOCCt5^W^%(JjwlG~
zq}>l>7f9!TDX}-&!>$1^+=N)3O-P9zHqAd+S47|5=xq#WK2ya(WTm#Q*#)~{{$i!R
zIiiV7lscqndP*DBKA|11H98+N9dw7#M8|jHR0Q$46GCLm(>4lCx0YZ#+glr-w9On#
z%_w^3bj4C;SL%)awn}Ly1{uCw0(Rhi*t~Dvs(Ssp?{W|yx-$d9LcTF~O)26L`R~mG
zKcEnR83U2sFu2bm+YkXJVqOt8LuSknzT~n;K665r!%5Q0J5?_*=UptKzhXDfCMCY&
z)R^ez{v_FwH^Hg6xzBS&wygMFQ7%aK^(IJU^W*1rJoBt8q!_zLUDGjc`r}(#@(C@L
ziknZ+mCj%P{HgYooUuKa4OuLHp`@lXI}`!dK0>m&GP>#2>215yM(y!O6uZrD?d^gjT>F!9k*$C-~A
z6~6%x_BC~HJxY=I(i;S9T1Zfp;H|Q6=je@qarjFS-0Ti6ZX(4Y1qzh;!iXC`rqVGO
zidSezn@qHG`sVP2fSq_hREnaa`nSCrRtgv#&8H%RnsBx^O`qsZ;z$IYV)V7SnAC@(
z;Gn73Xqv7T<1_Je;Sa?&L^#9Fa&usnlwY13%_a!44zw8~${GgW@xh-0E7rQkI=zH>
z`Kj#*fK*JZQw5HtTT&sg@$98#H23J@3Zea5lN4o)-_g2@z@NO5CEV?AZSAd=0v6#Q
zVz4jQAfSLPo)WV{$#YcuFwB&)3N!f5w}{E))US2vFmZ7^{buVJ!7c8Yg;vVFZ45b#
zj@H4Sl$z~@_2${6EK
z9O6VbpH(=HPeAj{-$1+YTB7Xor5B(gGeZtT-gcxZ531R#IZAxJP?nKy(d_(U-
ziH%h*j!~1y3{80wzL15#vs6g5!JO#DK7WPU1V%jGj@{RV{ifFacMZ+AB%hsArM(cs
znP$0O(R7n2<4xI?5);et#>c;h9|&h%>&V&ZQm(X&W-W~9p5h;5vTW@j;6FTe(3)aZ
zMA1YTG4bwASN%H`46>*xU0qWis=vk3KL4ut_f-si#=>|tYX~%6!vx>;4+0x=Afs!G
zC@8eA7aR>zF;X6LeD2WrrWum3T<|ey{V}mv=TOlqA!<&&jMn5Ko~TU
zwr_h;rCl+yba`?pU6g0s8`KGd@CqhR2pD`K!vPT(?wn+%=ettEL%jmn@EkrwCYrp(
z_6k0=94RQ27+4V_0;geMk6aiJ49319=LL}$QE1Kk|WN;9ab$bJxsbxXh`Pp
zUPX=Rdd0#L3LWF=+K&_~jB4DJetc<|g52iws{H!X-o#Ty;&Gu8bT##Q_ofNh@P*89
z-I(9o0^3UXX8b3bg+b;4%O&z#Ew>GhBO_D?;a4fAo(VKIZ2vf=KlabX_H+d75zY09
zk+JS%Gsu0FEipAS*^Y{%#;Q-e-H~MOM*F#2xmT`&-@V1`0M%~0ATkP)AB-~yeMK}i
zM}3k4!X=eElZ{%!?>how);=FA9di`IS3|~>F2C=N8hh$-F5<3#b4d!n4Ujdq4B!Yp|PzWl%7tOV?y7r6~52$F0J(~u5
z!=XLG$6T1yYf|;Hwys}$=Jw;;qwTvZ3yP>Z%zc?+Mt%ckQ6qd5CS+yZbhAA#nNZs~g$IvjZGnx!3I50f8{4cXswl}H=znWnIe+hgzyP|qs{2G%rW2QT
zjJ#79Pp0pj-%ANvM=xAWXt~daRkhAYv-y6v?f3g{K%Lcjh`7)>4KxigDsws3+~ae%
zblzIg-_xvmTE}6zO(avwTDj46OK3>bAw*{fXEp?Rvv@f%jVG4jY6+?~$t4*VE$Y@|
zbRx%(y?iArBGtC>xD7LAayS$r!Y_8@>Q;11J6U(F?ON6HRCwj+wem}s(oWIL*K_(!
zo8QV(kGhuag`8vRIAt}C3|M}r=9vbhPGciYn;dj%(oU^+4zll9#5<5PCJK>L8v%#>Fg%(Z@`-Fl+k$=`&aN)ps%dB?~jG1o_zj&ZjA54-MRMu*^-k0f!VskZX=5pX$qz+DK^FuUu8J*j={e*#Bxw!(0XV1AjpS+l-$7^OI}3C-};6`J^0
zD(#WIQ{`~}l?80YeW172j2!}?LDF{YdK(l7aZ>8v0o+kG8!0_%;%WiF14IEfOw
zVQ>0
z{KP`CM22}JC^UW^OG>94W)*4*0-BJFy4+p`g?n0K*?$?Ofm |