From 5b90b75b79208cd79621d7701f64f445fdf10a80 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 23 Jun 2026 16:04:10 +0100 Subject: [PATCH] Rewrite python docs & onboarding to be more opinionated * The docs now explicitly tell people how to write UI scripts, then UI extensions, with as quick a start as possible, and go into detail in later documents. Use of the python module directly is also not featured prominently as this is a rare use-case for casual scripting needs. --- docs/imgs/Screenshots/ExtensionManager.png | Bin 13225 -> 14533 bytes .../Screenshots/PythonExtensionModified.png | Bin 0 -> 2961 bytes docs/imgs/Screenshots/PythonShellBlank.png | Bin 0 -> 21544 bytes .../Screenshots/PythonUIProjectEditor.png | Bin 0 -> 20349 bytes docs/imgs/Screenshots/TutorialUIExtension.png | Bin 0 -> 8315 bytes docs/imgs/Screenshots/pythonshell.png | Bin 38625 -> 26207 bytes docs/imgs/icons/plugin.png | Bin 0 -> 669 bytes docs/imgs/python/DebuggerAttached.png | Bin 0 -> 2912 bytes docs/imgs/python/VSCodeDebugging.png | Bin 0 -> 85968 bytes docs/python_api/faq.rst | 119 ++++++++++++++++++ docs/python_api/first_steps.py | 27 ++++ docs/python_api/first_steps.rst | 114 +++++++++++++++++ docs/python_api/ide_integration.rst | 91 ++++++++++++++ docs/python_api/index.rst | 21 ++++ docs/python_api/python_module.rst | 90 +++++++++++++ docs/python_api/ui_extensions.py | 78 ++++++++++++ docs/python_api/ui_extensions.rst | 85 +++++++++++++ qrenderdoc/Resources/resources.qrc | 2 + 18 files changed, 627 insertions(+) create mode 100644 docs/imgs/Screenshots/PythonExtensionModified.png create mode 100644 docs/imgs/Screenshots/PythonShellBlank.png create mode 100644 docs/imgs/Screenshots/PythonUIProjectEditor.png create mode 100644 docs/imgs/Screenshots/TutorialUIExtension.png create mode 100644 docs/imgs/icons/plugin.png create mode 100644 docs/imgs/python/DebuggerAttached.png create mode 100644 docs/imgs/python/VSCodeDebugging.png create mode 100644 docs/python_api/faq.rst create mode 100644 docs/python_api/first_steps.py create mode 100644 docs/python_api/first_steps.rst create mode 100644 docs/python_api/ide_integration.rst create mode 100644 docs/python_api/python_module.rst create mode 100644 docs/python_api/ui_extensions.py diff --git a/docs/imgs/Screenshots/ExtensionManager.png b/docs/imgs/Screenshots/ExtensionManager.png index 8bb030911056f5e6fb863c16307687cd58c174fb..d19ce7a7b825d4467b1454964bad583a93543f6e 100644 GIT binary patch literal 14533 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 Ud+ZSS7aTzSHcX{h`N7kF15&d9R{#J2 diff --git a/docs/imgs/Screenshots/PythonExtensionModified.png b/docs/imgs/Screenshots/PythonExtensionModified.png new file mode 100644 index 0000000000000000000000000000000000000000..8da0911c3f322953ed946b55e35afb18b544daaa GIT binary patch literal 2961 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 C^rJ%n literal 0 HcmV?d00001 diff --git a/docs/imgs/Screenshots/PythonShellBlank.png b/docs/imgs/Screenshots/PythonShellBlank.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd99068714439f3a918ca04c330b2cf8049293f GIT binary patch literal 21544 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 literal 0 HcmV?d00001 diff --git a/docs/imgs/Screenshots/PythonUIProjectEditor.png b/docs/imgs/Screenshots/PythonUIProjectEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..85246593046bb5565d0b880cd8ef9b1339641ea0 GIT binary patch literal 20349 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%0AsJ=CUB%SK^%Z z5fVg27lQ>+l4r~tNBDO?7SdvUo?HBK4ptb^8f#GCOcYM~RW`Wy{yjMZWgems--jiO zhU05v?pdOH@ADb#2pYpD>Zu1Tga(6New~Z8sZyQ>_Zk5lbmEt^hnTg{W)yNYyZBfQ z)96m2thNzPHX{Seiuimu`S(O|!1c%|2>#s9q$U66+RW0{jePnwOF{9H=qr}HURfkt z{_N8T426#H_IOYtf8-^lFW6hm za{JIXmmMB|?8O8MAsb!M-+Qkt`4X-Uv;T@IQ|f2HG@=z&Zq2r}O$_0QEMftk%|>MU>txswyW-Ko$H1ic{U z_#Y@x_eo>K((I16lxt{Pcih3}LvP-Z6{9t8MCp6OK#A}0TA0rktW0)ao7kev1oHXc z@YO<4Ls%aQp&cx?QziFVu7AkA7V8nznDX#*t?#Vx-T@~3>$l9Ji-*0?$s_G2pj7;p zOP9R&mouaFc;&Ji34_QxrE-(Izvr3acgPDpmQ3$ei-gc@#W%&%PktwFn7p`|s?GV( zK6Z+S3)8uDsvKvG3G6WpJ>=nuLe!4_?9H`#JHGTgkVk_D&;w9a4I-zTR2bRF3iX+^ zet~v=QwE;wpzuTOO!OyEF8pb5bpi^9`T6{u${{k9(Wl%D(Tn0!@!xxwCq4|J;wQR1 ztMaKX7ON@x=+3q(4UuC6XyylDGkOVNBPz;S>(xvA$7 z$Q8*dS&0#;B}Y~j^1^NqaW1PSEBwU8QR%(SVW(0%l`EFwFnGxack@G*-vUHvEB5O- zp_{Jkxmc7iL!EMTT?(G4tFPSDBX3SnuNy9Q^|l%#xD_8F6SuuH86{Jgo-=JVzzoX0 zDrxg@J}JlHZ*1yY$KKw7;r0JD*{z)6kfCvO!yrHRIxO`J^JT<$_oOM{Tc<>8rv5~; zx;3~AUXAbe$1tBmGod3C*J((Oo(>2kAI4AEuCOT3a0DH2bn8FURsKze{%4PY@vm?2 zFaP3y9~%R(%ipY*e^mp-;Ql9B1qvOqOEhfr*G>6vs-d|mw1xrnba<|aR{Bu74-;Mf z`)d9>CGp=>^B)byea^j{a<_YFYWY?+5)m2{+j~-1RDQKyMLXwzel(Z_1*t{ z?*4ty|7!dH+l*&`l>wIU|Dn-;*8RUM7$XhK{#*3)f7v1bK7s#%c>ivj!_tSs{9l5w z|EFsH)5HD$_v@k1{69_Jzf0*~&x2-N|DRUw->3XvlKM9f&cck4tr?kRFmbA^9Rg*} z1I+g8kvqQwVd>q^wW4`bU+>*rr_9XQq=N{jf!xqldX@gyJhebFsJ}`W5Xoy-Ce5 zquR_g9bIt&_>~#*_gf~n#@!LRi~q7I4!$&Sa_Keh*m!cU3UyJe zo*N+E<0PX-N3d~id25inzTw|89@V5B34E%T6+?NKV(Vg%yNj30fOnGnEwoHQj?xie zgNni)l@t_S#@g&*7BHuIVYqCT@m+mrT<2;YOMh+3XWqhe?jcn|9oG6L-b)iWHB3|V z*Yy!MUu~O#K8k6K%=j8YmEde1og?1bu^bf2?ozUpPd$gaZtE$vhAZ|_`iR8h<0#H3 z{EP9ON*8D6i4CUZ?<;vxQ9ZguSBL1)%_dUhEZGcY3OW7JsIbiLp%+&s&_tU7!n5?Y z+OytQXbxAT7tEA*s`w*sE^sV%`h0Q050NX)_$TcM*}PGQk!vW^qjPiDGAgt(Ut-_Q zziI?!Jf^gL#6e^W2Q3YEZb_EB4N2++AssV`laHJ@+UIdR*E!gJ;^2OC z)w~8;r1=!fn&Fw}-1jhnZAawm(wtQ>jJth2- z&4?(nnH{0Z5ZZwW4EUz3iT(Ba8cIU8mn&;qHUih8d>j?S3G}k>E-F4KhcoNt_C-Z3 zCNR7taLG`KEK>5r>~-MCZ!5%-0!!%f50>Tj4h-=@8u@BtXbHvRc*0d^&XUl?gCWVG zSjNrnPW*X_Ko(9Gg9#jH&lvF01Z+>s1&o@~rM@RhdvQX@RJV>`8s7mx$3t>U8Rg!p zcM{l1beMTMSnuX>02|+-!&KDM(_J(o$f{m*EhJS>(>CRM@Ux|BCxC=h88w=z24*HX z4fs!rT_(`}5gxg#%|NPk`M4NJ8jw1bODE9IH#|OGlnIA(0iwv4C;qek>IpTCe+(hb z%p97tL+Sz$&qM1DYNDtYr_OdsA%eUukLlijR1^yu&`>4*I4D>z1(*(4Qo z0x8i8tAa@`ED>7$LQfXHdS>6LDal^ZRqA4IT%f$f2owV(15TVVF6Dh4a;o+^YIM|e z@{ckQbDEMfeB&3lTTp=mPT^U4Z~%J3(F;Sga~m8iFD`bfk<6ISOO}_HSJnR4e>idaxg^gIPCz2;p)|ji7|LjqP1%*zQr_ zw0ikwpIeCuuxUV+5W}1ArRDtQ$mT}YC@=4@coh6JnK^oL3t=8U#PqwUdBykT@uS)z zDr0cC;33*Rm?eo&bY=TW&C2mIecR$2tYBHp%zvyYRg~hZU*K_Pz ztvANGJq&XlwH2Xy9#>u?4$$^)ga}%iqpyG0N(03rF?R>~Q+wF*!mRZ6qaUf+Cn7d} zSY$3(X-7?_N;AkM2Q=a0_$th5Cv@%KPM&YvFg8<3cnfT)i`IlPg}r2eJ*yf_D=28y9q zC|?35rx5`)SAqXO0Ni+v^|?P$WJipG-L?m5V+G2xGR7hTnmHpYP%17^-FSX2nJ?#w z3Jtac%jk}$-0wB0jQtAI5M-H3j>ig+9;##F$(J~)L;;TfF@eIj^5Dvj&Vgk7woU31 zb}Swj0vy#p9i5XZBi|`tBrKTxO*ykwp1oZA#M+-xZP!4;h-~K>o9+-A`UQ?m8g0UN zKR7eh9-F!Ga^N-k5P`sY0dk!#!ybnIY8mQFGkpJGKBT|}>F1|sc!ZS+3$X^-np-lo z?9`Tfx08940=$lB9+@Qq1`P519}{(Gwhm9w(-0%wSxZ92^X`i>FW5LU05o`O*M4Z+ zrTQI?;K~lj57X}x!2B#8MT!A-&hZv%qn9?ffUN_%1hfx)J*?zL5vq4-Tb4WYBu!)i zgTtAmmuo0{Av7#wm)6s}gQB24NW$Omo}%cj#sYuzC*#k&Rh2H&^0&hn+nk5>F#b*>!rsPz)zLQ1vCwsl*< z5YlZmY;+b@ga{7tQ>SdI5gqzEu=Ixlu|4M`tds3hg`~w(>HScT1f5rlZ6iCK16HRl zdy6ZjRyLSC%KxU=Sdfus*vW46%i`i~ANw6iU6B<7eb4Tmc<&R0RQ5cCr{kM3^vQt4*P^sA6eR$8-LQC_e zlI}^tqF<+MzZSc6(-{p}uH25RPkFpGUTexeE07_9jlclu+5a}{srL8k zpU&!qVjSPL{M;w@h^4;*c#y+&x1Y}%b#lM+uda!^5`4L;ee=xCD~<-%ZG59)|0l<( zKRY7SnV6h7gK-W{736}9{F z#w?!ox7sVeK4SbRG53(7?3RyK-&O-F?s-MW>$C)KZj=v#gsj%v8~VXN&t1!W`o_1^ z_Hq7h;PE88*L>)!&G!8jP=E5^p9ksp-qZz{EuC_6N7sd4a)zt;8$PWL+xJ_0*P`#w zL(heJccxsjp0)0%)PX7MmUPJ;KjH3j|JGZ%sK8mKn)09iP7gmCac9>b|M#XJzV`ms zYn*Jd2zbIr#Ima5Ns7#(2i>kcIsN@k@Z^N4Q>OOcR!9v!SsfX3WMA+V<2r3iZtJ+x zwgVhW z{+og4qYWC@46kI=v*VLEu-3`AxM;y+*F`g0L3t#~@u$-(`yU7SgI0#v&7WSYf3M5M z@bpH|+9!sLq^I2haV!3|N#{*ioB!*cPl**cPdNx{-&g;!$MJ&-I12*TyQjXkX4(A< zS{L6>|GVHlnBA>$f6KqKY>xLqnX=(pAb18G+-wGBOmI$ZFbe{0mD~o*$qthrgIWW? zjniLVT;v2Q$cSorUtL}84et6zaqj>0@;t~xJ^;M-R3eh;XF!PC{x JWt~$(699uWZ*l+t literal 0 HcmV?d00001 diff --git a/docs/imgs/Screenshots/TutorialUIExtension.png b/docs/imgs/Screenshots/TutorialUIExtension.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4a09d40add770e8bbec005680e017b04fa3abb GIT binary patch literal 8315 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 literal 38625 zcmcF~2UJtvvu*^Hrhp&;r7MUODbj1CcTogEssW@+k=_!eNK>i`(jo#PAiWa;(m{bB zy>|#L^q%&D`upGe?z-!~b{}hHk?eEMF0*I8`DSLH$Ore;FH>Hp1ONb+H8oW90RWOt z;wONdgxKPqw0%nacg{m!T?tUs%d$%Rao$c*R}laxjithZFA#rIxM@7`005|4&OYZl zT))~78?Sk)8hbu+we|D?zjy|413S2Q3c5V=1Ak?R8T;dTL22pFY@-v>8GiV4l&C~lq#i{jmsXOaL7+>cxNDWA@#*| zxNzj#=PZ^i_EgqMUOExJOf45e=57?laZ5F;*9%rf#t8~V=DJXGOwV)PtKV13?MSxn zmhMP%im4nK4?ueyj-dzzIR(mJ=5CQdN~ivU<<)n+X!W5NZF&Mzpc+x@{`{e4-f z<7lm*xB+)Ku^K^2To}Jqv_Tt#k=af#WBom<@5{Sb6bKe`kUG78tLN}V`5*_PP&GH*_HG39)22>VGq`>(6S7GZHL8h&f57PU3GyPhRcc=7(#!{7Z6 zkbvFSUX~DVDUsn2xX(%pBz}EN7TR`eTOGQuo^n@=ih`Vq*jA9GXN<*FgN_W7W=?9i zAn5X$lQsU$X+mB#LG9V6A&KN@yXtDB#bEc+HK=+1&e7x{BAnf~2MQU1vDBl;V&#t8kyuq?PvlX-8oXjss3 zcq|s`V<9v)Ll}KaBe&b9M>ui4MLJ%Q(#KBT5!xj!u<&D8-se{6DX`0V%wj{pr)V zU4+>@Ij&Z)yk;-Xd7+v1mbi^pc2&UhZ@O11Vmi)=FHW^hFY?_gQ`hxMi4y~tZ5Z`; z$#FZ=9~iGd$D$rxPQ7GGUpL{wv1v2mr zgkxC4X`XURK;v#H^uS1{RKi48<5izps|zQ0O^-?q8TjT`@lU&sLSS>v8?To=?3AYc zpXwWINsZ_i!fpmuN4_i4%EwPsgqhJVBAmMK3;fDN{oo8Dy>WEMzv2RV=#N6O{1Ceq z)&{CO@Y_1wO^2QIB3udcWR_kh=|cEpQ^NLwYtYb=&*W|xjsBc$qo>`el1c#uFYS25 z=$(!BpFb2X1oCc`BH_1H6-~Xuc(-OZC=+h1M?Iz&F@JyQDo|&8Mtt+}&X1t{8N-OG z@3E3Z!LrC-2JdXhS{y(dP^t-=E`;5wMvUvGZ)J96N*qb%+lZ%&Z_(TOQqR>_bF@{s8$e}+}k^p52nv_UJKuFWRj(~x)Tr&k}R}2|158N zs2EbYeEE+JsVf^_nyI+1_%KfX$|jF*42-V6+p>Zc8D3C)YyU^jW1gj$sTrqv zYN%g|ndf2sW1ghV!JOs~1Fx0-`m4LNz+CFTmP-qq6?=J;8UT3ebso*YUV znF;VnIT^CV4Rt6SmTp0g;KeobQH=Go7i45pd-q_3!0TJAK9iY##7CcURhIbnCuW>C zRdPV`o=aC$kIHGmxeCMr-wHx9+395~r=BbVuNJ zp(4X11fKqJpk#aElaCy zM$Uioh<@MuAXB}`q0b4NI{_SBLskkNM%6Wkv^-X#$OM+PdNVmE{HZr)L-h_@xcl9X z3s3xk^6*>1b-BF1*Fm>z(j2@J3s;^$y7%ElC8m{wM@*N`K0>nequocl_SYW6WOlup z{^wD>Hq!2!-6YiKe^1frQUN8i25}+pHQXh+GH@!T?`4?`vY$xsdbDRe-@9J`s0bC% zS%MzyUEkV!PFLnEW*>1ea#AJ>lfTwvs|aqQ<6H^Wdj3EL8*unW%pfn;xZow_d(pQ$enkd~?;qawZuj@EUz zIUfSe-Ii|O$?hJsn7^nIBIo#9Ae@7juK;-gK2*G%7Vq3>nlCy#-CG*6Xs%08F(85K zUGiIhrFo;7<23ltn2@mfSZ}GT?83*j`p~b%T(xmlfm%M=T+gorDQbPXyK?lwQ%g`M z=GN;p$203-q6okBkIY6c&bojl<%|wje^UL$itCDJSi!S$#Yte*#jCiU3#mhidZ$r3 zc@d&X?9^O2g#$8^$-P%E9vUW$s4qdC`B-5}YAuPl2PPqW@$*HOzgIojV%bIn&$B5F zSU9@Lj2P%EI$&FQ@{8=n;-A86l=GQ+eq|0QJB{5yzPXHI`Jv2_+syP!`ibT%t#c0~ zRH0LC@5^qi3|DeLG+NYRL}vU-A9f+xI3W%McoS?GcA4wl@Fy)rqr-^3e7p$yX?+t~1pi5`1I(S#~Eql_Wio-NL>8`hj8;!dH z7ZX07o58qTW|GJB#-{MI-G!ddMTOw25tCV?3YgE^&@c9O4xO1_h=ab2*LdnkLG?7O zt@MF*;?4PF^~(UjELTf@^F=x>rw12)!`XKYW5dyVN)DIvXGg=@MBHW0ZhA`hPa~lD zjJ`2Z{8d!uHcQF7mMnTA+a<-S2ku1cR@k=d+~Ck-)Q& z0S02?q&e4m6pdfrJZHxU05}75d+s@?dBj`+3+cFSeh=vZOo6Uph365r=2K z_ek_X%C9u*^WQ6GH%I_4FMrCrcDu*ESHy957=fUYoIYM=cBxTtWn7t|a`pS!;~J29 zy^zcYu}kC^+@OO@#;rcJNVo+~2!ty=3OX%1f}Hl&JUqR*^?2QD-cJ%bs}99{AS_o; zA6gQYC-D4sS>`tPY;C>`4QJHajcCq&Fm>@e`DuyoC(p@KIXVaU{$*hB(mPu*6q7jT zIrkN}EyPg+MtNEg>)cJk$u=2m5uN#y{WyeQ;W*qVs#k+~EO6hDpv3>}GIXKZ z_2l~q4PpLg>`J#x+_{hOrH@SmmNU%Pkz@+n=k)0$r#uIqS5F9H!fNxIVXdw(PZt!%cagOtbT2Yia+*>2#+_YM_y57=FBy;EX2 zFzkFa=%ft;+97`MC$2#o9y8ch#s-}GxB@|UT=k-jTD!?}^v3}2Lg{Q~i=8MV?3uGb z6A^x|N3wC}t!v;xfu-)*)V`)2Dwz`ZHRJETe(gF?G!EP(`VcH*!*-YutP8GNXdn>ZUQ9T3#kRZFFN+uFFdeQILkZGI zzg{Pcy%djP2m@6#%n$fc(U|3$P|&LO%u&M;V%>bpe`?+0XndsM1D=6Pcc~)DdGI=M z0q_280g`5);tq*ZKhd_tM>)Uyk}$DV6H*a2S?xQZEBW=HbT^ZcFx9eEkDAkyU!Q{$ zdRlx4rl&{oKamP@zQgjarycD0kPgV=I6Br0Gb&5iE@cnu(u3^RHDV&Gv8IJp7qJI3 z(*YeQ_7fopK9((TG2HTGnx+vurQYaEXtAs(#BXo4zzB!Rme|7(kZ;5#3&nplHmO5g z5(^?6A2EKDWvHHf@v}#A2AgqIA1>CqZu&qP&7G>)SbcolwqD$L?A}8(XwA?6*wYK# z1t8F}_Gmhw@zikab`Zg*Q8_Gf-L+vZt8s4=Zm};|c+*S{j;O2*l7Ku^8cTaZ!S27K z#|lBAV>s*y+90@FTgS?F>{sVcvTB9n)gpYXUPlQy=XYKDMHDV7Z zT%j$@(;U^e>&^tgTsA0kfs4C0UE9j)9QfQF5`Zy{eN!QwigEbQ!1vp<;GLo3Ae@sW zL2dkYz}83up7?WN{U|8<5dXtf;Yd_+daq%9^LVyVv|7+uGfg^i@VuQ7a}j8t9X~yH zM+5l89OJNm9 z;r44i2*DMxTOJ-x14YfLH=NAgJd)quu4eNOt-`Pc9y8O(9iz$E{r7)`RUK6Gn= z70q?!<$adBr8Vzpdu;&QWZ@Z@_6`tU)f9BpTnIzEj5y=Ex14eC^=gZQj6xddVXWhG zF!F|i?W4;zP1=^H{b%Z448^T)9c3bH2JjN0&zhz!5-t)Q$xC|ezo~-P8u3^$l^BmRPs5O zls)6MxNFy(#BcSu-trMX5S~!MI9}xj>jbX!H&}Qu-W@UMqPM6xh!>K_#UOE5^pRNA zgaT%duqvt-&}Qj^*e$Md!R&9vl|H_iZI>cqUCNr{dF;~_qV(d-1AOEc=={Pfpu%7_ z9(^QWV3$V4RLOY(btstE(-s|&(1ZCT2mo|Y-N`l#CSP~@SWL%uL!jXRjfqC%w;-4R znjlnoIP~OO<4KR6xfG_Eu@N`L2wjzg?G0Bq7#3V{uN_&kEWbtjf%~1T@^*uVoqifq zi+T};%o2Czd1N#EdBzFCO(DN>>|!dq}~uW@H0p!j&(2eSFr61xh*Vf7l8JqQy83P+9j z9eING=xxO(eA$0pAIYT94exvoZwVihN41~C4~NllAuLI^>qDZ(%Vuqq($LH{IJbg{zck`VOdr)%Bn7fHmbF5eB4 zK8rGkAch-t^BDmNWlz)N#MLzV6|P*((Xv2mv$-ySSE?Xyhq7HDPUwylfHeD??k2smMOo4Gh>KbnBw)<%NrkE$(v@V09NqsGI^GqlsO&moQ1%bxT>HE8ZboF?vvI7N@{H(kLOTVQBO;b6%5Ay`be{L9w z?;Rck&Bz>e6{doA_F)Lyg2x4uiT6?*Wzh+nA2j?g75ldFPt*DCrOxP(e5QIIeeQ{4 zy2|kRhfj>(bI5#d4E~jbd*P_D9ihp(olPEGmX;xH9%}OED7`GpSp*>e znn*Y6=PtX}oGhoFX&3Wv-*yJ=SB5Drejvl${cNga@Pw#NxBjRT`5$%S5a0PuO4Hv+ zqtI=6+=yai_c&$*dHLd9*&8;B2^}y348JklsPCj*`YAlQ^~wFg%+>iZ(FsRwO{;h* zH>5nf-x3JE_l&UJB6PA!gE-y_+HQkxDGTBAWPR9=awR8~aD+{tM!V{mlG)xA+8^nQ zX{;pg#W5h&OE(L*;XZ*F%c&PzgrI>WcF1fK2D;s12@2>zVmCmw1hQDj?%q+*n#YXq zF&PbZMlvYuQs*~X;Goso+X|P{dtG9;CFBwttQ=V{gz+z#-*uGX8`Iqvd0A_h)Ujt7 zFa*NkV)8khF%Gm}ex_Yw?X_K~ORHTkf?MEslM-M0PE1UzovG4*MH#1dVOE4r-<#=j zVLr}Hmmmgx3aW*R067=s$YX< zCosFX1idZ-dS31>J5(R!K=UV9`(Y+#8lWxwM>D(mHHcHRB)*H;73;A!r%WS{oeiPs zQgZ+T4-4X6qLU~dMKV1vz)yh3_n9>K%{(wZkR8^U;}g?{!;mfcdsCQ?Fbt0n7MJv3 zzTEQU(5?|%$R2n^RuN4UNxk*MgV)hgvs%-5Fd4ILQ(r#g*Km%Go3$)HZk-m7Zq_cu z$X?G6z71!**mNRxowZE7KwT`@)D>~SKr|~|BE{CG;>$(YWDQ4Zu}7301M)&O#((xJ zl9PNcV#*E|Ap^X$=Df4as~DOAInJ=6ZH_QTXU;1iqSj>lCqGgcsqhoofd@ zT3=YEhaI=_Tuu_QY`}k+N9xjx2^J2t(1|!)B}_FoE*&XsO1bOl4xFL;+j^zN{u6LPZLsizjR3D=aY-_H>WT40{h(6Rz4 zIq+q^7}u6?B!+a%TL1Xx#V@I@4ci~8x3zVJ%zXDur+4iFp!fnk3@C%J-vQk{VuKQy zV%ufOt@wNn=1L2Y3xv5b-SD*7)K`4{lLGtulH)MY^v&AsEaU`62)eK=3)+u7f^H{5 z8=&hyi=Y!^p#8kY8k{xM52LsY){^DGfs%wH0@A5_AP7B4g6098?o}sVEhX=HNA$VB zLm-|o_-5TYZVL+HrFhk!K4VB^r|tiQKIeq*NWqD*Ea^Yp0+NAg=ETg^xj!MLv>HH% zs+Z`6M*%4*ulnCCv)lxHx$qxiOkxCjPxX)F#)!eI{QdtBrEWEcQ5l)Jhi&|hdrRW- zYeW?E6Uq`eY+RMka^e8MrA#`yH_IFXXWxYr{$pHB{X4z}+{`1!ytU#$;9O7E*^S0G zxzvo5f`74u{_gkUO_92P*9%kRulI3J#eB+$ObafH2?!@EPuEVWJb(72dPM8W*&wMV z#%Z!Gy=RGgEZqvZfTFQkLxrepA4yWk*szzWpKN2nl6I-2=_td&1&2hFi^S&<}jgmm<6?H&z+o zOiP!=PmJ+h^ug{s8;8RmJ-7rPa|^8Gv)vYG&W~3jFHEHmOGJz{U+4Bz$ju!AR)ju- z!BMD=$f>=z3YXHR>7(TN@6+!gCpdY!qoh9U#Z?-lCBCw|@bN9eS#uL97>4=w?+3~J zre+*UV`!UN{Qwvp78st;&&mVt8cji0E5tBi#$G-7WC|g#^|+@SjokP_8C@2zY^z-A zyu=BcVJ+EYY!1fm)qP7JtQ+TED?|s5_TT7baNr%>{S2CdM712&pZG3ZUk6RVX2w=o zf{Wx8sn==eSvnqu0)4!Nav(smf(iCJk*JXS5fuuD^}DC8Kce@BU(vKG=F?${@5`WK zLu6?(*e6a(SeN{gKdl`+`4v_t<4VoHQc`A`PYymOLG^d@UW8tthnSaETYej7^Dh1L z{`MVXiG&^htBlbl5=&lu!#Vcp8_}jeGT7BNleD^;bW#PwRDbBt?0!}Y`$a>RYR`Tu z;WOCF8okTIdpMAJr1|S2KsLMwauKsxUwgKMnJ;5@6-QX|DYiq_4v`0N=?wS!K~Fd+ z{b^$FS}E$i^;SkTTPC42Y851IWB1Lk*SOwqWyeDR1?K4Pe%S^7O2Cwx_@1~y7ipD^ zU%pkg^5o`X>Pf#1=3H-c17G<7nBL`U;ZFy)-w{&N3|v$#F}qw__f4^Z{YyS~-wpc_ z#x8GQx>VhT29L-Bn^9-7-Db4VX5^t<4bF4JJk9;i{7j4_b?ed1xa!a0xDNMASGQk) z9#!M;or@k!%M_6V{WGx5egDJv+#h>n)5mc%z9_xK3s{y8KjTl;Kz~kx7^0SWZ#l88 zNLn!Kl=OSbUlY0irsVeLCvyR$JBF?fHcoPMmrgK1^DJ0tMX&X;5P&F&CyEr zRR}$v-ev<8r+}Y`tw;Ag%=trAy-kZA_`TxCl^6Y(a$2CGdIFb4{Lp1aFLj4Z=pmW@oXJ}cE9eabE$L?fG=tJq&FhseM>qz>y}Y!EFsYX#KS zyldu|0n)Aaqa8-cRroyig+yg_=RR{UzWp@c0A)B~;Xod35dauw`=f)Bc_nd;;yuo= zAy%r)o5G#BiH>=WH#uKb`Qj!HVg|}2Ev75@G(RxL7#odzS&XW}T`MMUfYsP6>Kfg! z$TMA1spU^f!aw(;w{|v~j(Acg>Ste9;L2u#+bBPBh;_;)3@?(6?>%8>G;Q-}+p+y# zy-ISSeyri}LzNuG^v==?_xnNoCJqN3(#0fbJSxN#R&8#R{e_VJuv}8KOJP%vTo+VZ zP`9qpt1Oyx(A`FdEDOK3po2)I78GYbIRKTns%+o>HKm)uAP7P%usqFfj7%}+QD z%r5yVjO1`zlOLq%$`XQvN$G{Wo4$Ave7=^yWpGLDlL%axtQ(+vgFL0iI0;2$N}K z8QWrHTo8@f^}UKnip-corK$TtkPPSDETP^l>e{u~=)`^`+hb3K5M5O(u?zm1v~)*C zHw1dqHT{EOn?cKF8iG+V-(P$$4rO|=n()?)$FnKI-JfH&!bkyh#U34cL1bu8GwGll zi)Cq|ze6U^1-T$LA)guVK%TYyG0Q8k?P5>YU4N&X4xh`I+Q%r-QH{U4pWWR2g6IS) znr}b_BG{=t)rB;TxqRmu-dRXKEjo{(4sI%qBhB?|dEmP{+q;>wzZt@Gb;u7WnaAK~ z%-O|pN5|apK;5VacREG+rWD4?q&WM=Ndq1RGtLpFUR3sgRQI17!tM|3BdKZhlgd1- z%^;&M+O@?_9p1J`NbvwIT zgU}-^i!9P+D_!EG?S>&Lpa@>C38(5-4!{STIv~SWY~oLL#&vCFI3HyoT|lIMW~*{r z4%J@ur?~2o#AUgc)=Gc$qfpCuoB6(Y?QIzn?PD)h|A)J@D=dYAg>Lr?$h1-~aKoRa zf>DAe)r?$Mie%sxt)3?XaY|D^D|zm)b!WF&K$QrUMXQ7izj(u)3o0`;*U^W^A~$oQ zO4E#9&C{E@#H{qjhND2;cKZ$}(T94@0rm1Yv)RNCAN|@sxS5ttv8ABL8=kQ9cG_0bLa7%z25MUZ@ILZ?^G;1I%hV(i+tvzbV&V!mlzZ z2kg)T8S0T2!z9epQE2bY88(jrq=jn%QmsT>2?A zI?*Vx{%wQQg@7H}s@lLgFJRdX?PHw7QRD8tp{3?^cBASkHqa7Jx$o6mr@d_lGm@|< zbh+$w1LS@gtp~kVmWO?n?5~s6m}<1;N(PNm_2iabEaA%D#zE-q)cemb*KJ-}SZ-o2 z9?>iF=|#Ek4L~QoToG*dUnpR3p2$6Kc<;^&tSss|LGI;E^*>vodq*Jnt1&)2^-avZ zQae#s^m=W}1Mr+st99v*6nhCH%U4UMbWGQn_-H&?9S^46y(SK@59UWh!$2^lUv|Zy zAY7Uar=T$GLBOA>jmzRmr}h->-wDk_TjfynHO_mDOmbB?+|K6aJhaZMZlNiw{%YEK7 z@UEz64B}GPz_g}qE*M$A6kRw3YruC1xMD=TnT1w|Yp~w(Ah5XxydE;X>t2B!a4hpm zPuDB|$}I!_E*s+l+KWT6?fXybGZg<)kU`%MfK+v)qMks}OxOTaizkXl#46*XEuqJ& zkmvQr8hkSa9g|Ado=WiBOZ&-~3N!5WzyxmYZ0V8=I9B`BpJHY*kPTm+UG*TNx}|I- zrs_uo!+j$TfiG(6Psy9DrnVv(q8hZl-+fEb3z0`4` zG&6Niu2BP<1N%)}Gbv(TW~@^Kgr)y`T?5&l;(U|Fo1(LTAdy>OlZxg?TNVe=QTz*a zh^oH3AZfJYJ-{I#IAPZ$liY#Gc?*NxTpEy9yCJ6wUV_Si4EcXzo>cF!=|bh)%&uo^ z)2zW(6e9cwv7L!_sWkXzxe#j=E3vjSSsW4_!v(z(YX;_jZR!Pq5zDDX1=v76Kv&MgQB$1Np z=VEiSLTy4dn97U}NC5;U^;=_m7M9TEII`kj^`DZ8Q|A-5MS`#MrP!Y^rj9|@$MEeC z@25b|T$u9s9c(LKm^+8w!O4`P`FhLEREr-nzcG5aVQb#Bn(jcr9!B+RMDZ3mBlHYIxrCZN4CGdp&BOWS&zjOtnq{ z{mjA0vFe()ZUW)7`IgPwi1qtkKSN9K%23ZMVz|tRWFlSf3&J^9Oe}Qlr}4GFuu!&+ zpbYxia|OL4Aw61tg`YL7bOD_^!7f@9!_JaK>s3QK$<4-E8@1QxJc72%@AQNm+Sux> zeni=HS-)8l?DcDVBi$f~_cQI*OK_LRIrN0|-S)vgkYRUH2z)4fp$?)J%lL9f<4x7P zVl#d%G)(E#YPVQvk zH{2xsm5yrgW;G)W>J>VL_*g>g_Glg6$wK%_^>r{ceixtK{mTS?gkI2&UUD&6A-@Vg z-5#ztgI{6*(qAjI>!rH#$jg(4W1z3no`LW5n2I0k>T#fdRaz$vgawiWSMI_&+zYJPvr}}>5ugz$N zwT+<*MNwisGZER{N-N}-UOYr+uxB=rQBhSn3!aPaGoCdg+=tp{cC}>JIW(cy?L5F< z*mqQqEn>9@28fLBipk`y4huFLz8zK_hL|SzozSp}q6xkHuQ-a1>g!LZnRk|R?W-fk z?qK(#u6YDb>|>n4v{EW@tCcjq`>BRyW~F;BJte*O(jZZQB)$bhYs z5Nl4@=Zln7b&K7s)P)I@Cv`c70@(vzObxv{6IMwuvpTN+eTE1?YXODAU=eO2p{51ajF7z!DJP~OZmIn%1U&cMtvMG_qDU;$e)s$%cj@0JTL72- z-t^zaobP`qsS%R%tvLvk2Yfd$V>_A;bxX?4XkuOt$lh&K4oF^ zvY*!@aPpdF9?xuK0b;MV87~B7NkxH?C-oUR{t9}~djDmQS6)y1o9_N)VUFNTSM5eA zL&V2{MnJrnT5-fw;%Anu_r=ywd24Wi3lynH4k8$ZE`^4V{~oZbyv`7tdJnQj2W ztX5LpStwab)STM=fTWnQNcmJ4K;qT0e%N6bN7$1+G1p=%bkF&SO0eN5O4;k1U=KbV zUW#E?=p%D@>=gfNdqAcketYcMcN@AzKX2aJ6dwhtCGhfrAuE{wbc;PH1LDtaw@!@Y z66tAFoX9=%Eqy(<|z$aPmBtHW){vdfu_6i*NaQU2rf2Utlo=5&=+NLDpnDMOI8 zGi|R>9@cY`q$I?4p)*yKhU&(j z4;d;soq^x)tE}Lb3tu(ab!#{Dt?KB7ku|UTWlioVuLj2Nf$uC=t#`;aoQve%{8j2^ z?h!NgxPDX_We9mZT?+er<3~LnSwxn+P~<~{ zq#4Kv_l*gw{G1{$O4@9LtImLrSm&A_&d5Q(-f?n3B9{GD4w}}XC0iLZ3PB^T1%z|R zz3msdF!>ICn1-2T59sL51|>>)tx?^+S_GzIjZf55VDJ+%EY&q&`|uA%<`d|K>t1W{ zDm^bl64KqP-yBT+^3I}@UVZIRS=3FNu&~jN$Abbavm8tVAM}2_hTW5mdsnpaq`!)0 zkSC7F-tqenFm}yeIjIw+Z)62`vxd-ZW1=)F1t1-wFsvDQKPP`Eg7s^TUc6MR`l~N) zuZi~v1KO<-KB0XlwKO%*4uc)~^3xcY3l`x0HmfEU>=qBE+YjjNdqZ|CVX9LnX=McY z4um^PKrbP%;r*0TMmTz59cenzK=$H&N9D>vfiKFhrC|!0vG7dhn#4fdrnp^<9uh0I z4D$LErGCYZ4XFMvdUr$M?!ZiGi4m3SUT)r1piH?ZK+WPSnskG$Gaf=xNcFxw71{W? z$OB9z(;fPEZN;C)++MS<(?=aVg@zdsCvv0w5E`9B|KmN*%#ft>Z=oF8ppWw!BRpCgbTGe6*on@N zH~L9`Nvx+Hhbu8^Tm{Dvta?rNW3=mxq|&TsR$?C{VIaqk9ZQ{h1N}QBzvt?rtgTWr zPL5(+%j;J_c8~m!?hc2dmN&UA{HC6R7f&pus;f6K%eB9X)^n4|?mA&m6e77myMmJ) ztZ<=U$)V?)A60dG(oYDug=yy`%&;8ve6P1!QmQa2(?=lyw;uxxQ9-LML};*^!DgueIFvki@5)0Sompyt5oq_jg(g^Wi^aL6NRRx zZ>w0<{_ItNWd$AXs2f9f%xc#@N~Y^ zRiGNZ6od<3m^{-VlqXIv^sn%E<@u3FEgfJ-L!>sb$dJ!ej_ocB*Qc%r&k*;0quZ7x>p*yJgqI|qLx9Bg600rUJ-M(=Kv*(NVNwO>m8@;=^1RVQ~m0? z5U<3~qX_Pt|5-`lcl5CdlO+_7=T#+fz~qQ{_quINCSBKJdQ~h zY(W>Qf_qO9onv{07$N`D{+}e-Qq7Dbd@fpso!yf9y49X?FM)$=tys<2xHtWYK9Omj zT_}hdcr*=L`iB_{GT`>{6w#w6`%Aw}NQct-rN-B=&Khe0r z7inmHxp-=Rx`QRGf0cT`(#e&8-3&@msNd?Rb}=DNkm+TsebimzmaY&hJZZA!LCZRU zm!J6mS`A(yzrpG4_$}L$K^)F)QwQBU~xbdO9jQqltUzGYa zlJqx=r&9kWFx&J zmn5*FoW-jzTqkJWzjhGe;`dnp^k(ZhSaG>@l#6uARo#F5j!&h@53xz6J45Hs%68vL z&IEdsDA3*?pr^bp9+S?tg}DhrWfphLvz3)|{~!OzI8b?cg& zpG#I;eIBi#r?La53}hg7^puH6yBjovrnFzFLN+7?o$o4_}445YJzq<-mFQG=s@A9mATf?s}eobWc$xkBm4RK;Ul%e8L_K zR@kFC#{I5CE^~^cC>3y#M^@x2{mG)6{2|W&Wl8h@-YgO+qqnKcx)X{ehpwpfC*Ia; z$tpUu9eMuTyqbQR&fD)uF2`@8DWI7+VHQ#1T3Cot&Px3aa6D|D)xt$4r-XKR?OF=I zueh_a;iNbHC)@p?SW?fP`t`ZzpxHL zp328{+)9H&bOTm?tK^JN7Vb5+t|W`%C?iALHaGDf>RG;B1;S1qcdoL0 zFKS>!<&GqtMgLxQrc1Yox-=dY*4DPuVl!3f!u-6nS85oOy4x)c|1E~wS3zgVwowP5~k&nEns>5#N*Mp0e$j}zQK%(MhkW!@*TIe zX;OF`ddHCHFJ3+)dZ2hcy3q5@43yD%eOJCEoZ^4$wf|ohlB;i=YzicW7@bYwWdzad zWD+6jbB5!eT-`q$?f<$Q^k3>cG1u3de&xv2w7?JU;LpYVoF0VU)fkN+a}FnqxxY;w zmxmo3MZK%YSW{r%^BiuafV?x=VX4_RkkTaueD~#28z{R?q4c=xJ$W?oHNM0Qj-n7DZv+yvD>n`;F1V_JlYPL8j9`tq-p!yL`Rj5m{Uk`M6)sKOV}UOUxzIUP%e^ruLX@ z-4i)1m%mAF0wL!`yH;=07o69DI|Nf)_lLgZLA8Sw%VAZ*55y+lG$A0PqZu?YP~Hy} z$+-_T!(Mf0cgi;Zbgd9m3Sd^YM<(p&ND#L(y4Bu9fJ<@v$HOIY@pC7safRq|ld7}2 z&3eoQiU^i`^v^nSKh~so8)&4tP%2E|IoCoZB7$4m_mbHgO-%#Ku=CF|{XfI2wIgnn zio3{s`I(AuGq&1DsMy$Uf2OXyYOf-g5ah;)o;u+?E8}#@w(@aD&s{ILxWr}be>&!& z{>r5I@Q#~;7%tIJu&|ExmYO_`l!XJ?i0A^Pr~17I;9pNwuDk3L-_oR`%W^1m#$%YLz#m=rKjp($Vt>kXGw{>caGmQuYVn*v?^v&0`4vYH;tuJ=bE{qK^l$|+cgX99 zFX4CArv3YL32hMt4tZrNmT=qbXLi?$M(q*i#EmB<8VG+37x|NykIxE-A~TSyA61De z6k}l=DsGWzKA)fv_%=hy_^M*=HQ3rKPty0GBJb}7a&hsGeQ?54#8kg(fsWY5!OSyG zkQb}+9f4EKLK=-O0qqCO7Z{ju36^>A@uBG18Dh^&MzV`JsVY>n;3yR{wuzo$oy&5Wm2a7=yu*^ zkNT(`Z}XCh>uz?^RHdk>wT6B7XxHv z-#o7wBiLq!U0Tz3lwpG>3X6&w2IqY_ z@YDbFaY}Q+#KGK5@d()h+&Ms+q9?f`DeSf_}5EAbg%3SVxp+E)*aNH3yNX- z!x?1OLP9d@A9z5a?+&X?k0T99zL*D`w_m|g-IbQ4rb@w8guNPc+rDc0`OQ>jRhw^Q zeTbF+R!wWTjg4pC9TAuAR7slqP+!|sx%hFLL~q?7g@MgURVNnvEiH%@XQ~6-Z#Y#W ztQ~ud>y{m!ts$={XUi=uE}|+O76UjDDYT3cw_;}=oDK}$GLGvs-d(3)(0@U>8}f-Y2xVy)_JZK_?)OOAF`-?oL!i*5|NJqWl(aU?v@h(83~) z*J6_-X)K_vIWpAgiMx47yL?(WgF|oby82z>o6D^hCVLAfxt`-q2UdR0;`e0V1Z}oZ z#za32U?7+83+~eayB?9aVTpuj&w%c{<#j`gM~`UtRi0v;-3eB5GQnBR<`0@3;~%7! z2)hLfo;=7N(q6cCIGzK}czla2A1v<(f0ec&5K*bu2pa|$8T)bEyw)`(MFv51h`yiIs5Up{1K&@nz1bu6pty5}@1S92Q6@Yg zr6^J6cicTE8%J3IvLS~ny?QXhfs7ytdTWox+exM``57RFCi0i336WHm2O2gvyCpPG za;9Afdz=&4WtZx?WJFb3-KV2oc|#oj{AaS`nAIet3YEDV_j(Hhu0#7nq8@*=A6;+! zsRUV*dDU0hXGpEn_0$;J{G^4V8nl#Qz-REJ-Dw1^_v=B8a&g;02GVAP!tWsYqXkH= zMW@;%RjjJJ9zyBlW)>3v27r@ppMfy%NXocA|%X~zyw*N&>a@k+_^j$0* z&4C4*wbjt58>3G;JJjSrs&JdDXoUMS!Ukf0EV(*=YVu(*sGW>C@d}S}LFR*r%B&@o z4QYmbOl&LVYdIU2CrADe9ih>>in)YEPEjc2ZW}i7q37dwWU&d9qF1~_GZ++dr395+ zR7K?Jg;s?{aJ>L2N20;E@lpgA5Aqe~Eph6E2 zWzG7gOTXLZd8c@Cy@d`*p+^7ZObgcNv|$cB`=nz4vVcSk$D9dRAmv%ZzG zed_QttGMjjzO_%C?29BTFkh+l26OS&B(ss=h~>g-ze7|HEZk+_3ub4utv7X3$3tOY zy6!g3=h1^C#Lm`bJ;2UjJghX0!UeoyyufN1r(Kzk)uHC0zp5%E_nh%_Aq1{*D zPp`SbNxrcYLzZEU;J7~0KdkfD|JSMukO8>+rUzZlD9+v`#3}nwZ`v#wp$V%rm7{q| z%n1~(7p1aJRtIFzp?tRZf3yhRc@iA*ai^YX593jy7vLl4;KJ8lwceAf?l0VVoEtn_ zOU;HD(N5l(wv*_5Br-w}xkGj2G3#Fz0p0Rr^1XkNDVB&@6x@o$*ET1WnuCW(S1&?- z8uJQtI}PYf!j)oPt|8dOE5456l7!Neju~&vLnb|hWud&^>|;%QF$gI@LlBn-ybxfCM%dLo0%?D(aO;0Wh0Y+()RQThuwn{LuesP*~32C}vN|OhV zUz-xIXzbjRdZbv>-CdJ{yM*ZDV|86Ho|8MqdE&^v<=ne9{^4K+!;`W=IXYJ5y9B5p zQp1q~u80y1C1cM{Mz@zmLum&y8$;&g{(Ps5_22067Rq($eG~}J7~n&11#_^-upS%~ zfC)2=T2ekAl^>dY=`^`)3Rv$#c9HeH3QDRDMQUn0_?nWtzfYe%s>0ua<+jN+)djhY zqv8OvHa7QO249XHY89?GNMDClYF*h8s*j8Mgl3jzEmYW00Dh{?&Df%Ol^_Ns&tm(ny2?SSrq7IWM$8@#xk7ixVH-z>j1ATg zh1>Oh!P-ayvEEtoUx5P^>n-8j!uzA1F!vWM2p7&~Yi9%2?0Ndg2=QLZZZ%t57*$|*{{G2RhFRaw zGco_sD<8UDh0pd?vBV8OkwjRp_kS7Mo__OG^!mnq*7@dRKAJI=>;I#>w+_o{ZTCfy zkQ9&xY3W9~k&q5Sx&)-VJ0zt`TDrSCq#NmO>6R|RGhSdio$Fg`pKtB6*E!d9{^Vth z@zh<<{kvm0cx;H7NYcp-s=_WFx+EppBaMkKJL=0fJC}_#j$+R#M~@t^T;RmXn@C`q z!SfrlpT6`kNnq4+%KXa8W94BkuJp3VfA*@;vL`YkAl68O&ZTV!m1%@TtGq6g|+nbLyGwxS5{t4;Mh3rCVG&2Y4fe@SsE&$}@ zUl|0q){)pWstm1Lj>cpaXTne?GNM>72vuT(MAk%~}vQa%=CGyAK9+5(o+=JGv#fV9)?*_yG<+RC7vg zE9NbjP`I1kWyjR@RCVZF3c4mvt3Pjr7<;ZIJ|mf53k zj)Gn=K#4fxUX4+IZzCIOXD&cBSMuBj?q@lfBrqI;L=Q;@I1dKx|I!Bk-^SpI;~6N^oud%;VuRNp;74{{$O%y#i+AygS1I{}ucVkQq}2M4-}| zM-l=#_~t~Q6aiMgvWAml19hYQ4&OzD^mv=e<1W~#%U#mpCvzDuidz*Y zy0xM4dAGeP*W~8n-;&dz8q?QzNoJO5PRhmRVjoC-bmi+T7Veg)y*0XK>%{wN1jg0S z@CD7g8W5lFae!f~-T*UK2a-APyi2!`c^Tm=cQE0bd=LWYT$pC`2<8T~i93_=`A|oG zX6~MgysD&ztl+pMN*qmh_8{4(Kjvo1Bb1B^XdQI-(=?3kdvTbas$Nw(dX%q_!B_mt zvkI+8Xs#UJ?U#^^I^d|=_)Db+34HDS2!NnVEctT<=h< z`{s)c6k=AV(hEo@s>VuN|Lmj|F|xYK!eSS3@(%ItxdWN69{U+wmJK!ge8X5k(S$-C zz^9<{8Iq`g#7Efoc1`0cL^@mw0;W-U>eP@>Wux;gY!6>7s*FY{K7t(smeywxY+!q2ML&XM=EI8D#0x{|^K`1Y9pACf8R4KUUe))tM-Z`yiEWr9Fh9uGU2dBQJ zFFZvFd}V(%#DcZ3dKv$DKCjK8hA)rlOF)&RX;gZ-x4MX=p+$MoCec*6i)iHVS249U z4P)*SK14jew&T_Pn#1cFjQ}BwUQ8!KuPBb&-fz~ifSYR&kUP||fD@u81_eXJI~2?_ z>gjgCl`$+Bm^9ggFBJ#`_Y7dDp&2-&1zxBC_)h}lwYYjr^7)_Vzw#M3+lv`9I*S9G zpwMN*nM9463YQdpgm=wVS!x%Q0ptfxqQ^o#$v~v<8SgMBLhiP#OK@?;GB5b*EFJMh#6$d` zuoFD8jntG`_qXKno#xwXA`U9WfJO#(1?JJiOr)K5+H4x!(cO!J5$iD2|14l9)VE2g zRZT>D*#DfE20f+BhU9biE4cvIK8t4E^h?=;%WWcd92_?l+u0 zGDs+jbK2#ESjJ;Sr5I(^YLPeZO|IP=tyEqlBaJB>h6>Xd=skxcjv6HA=&M2)()y1KXdw2Lp`QmF-(GE-qT1T~czlbs;%yWx`!MjYC`-wb z%y0I;#mj&qv#?Z;$md))|jFk<$ztw^FvKMS2ncab4qGF_&?gtf*J-#@H^+h3@h^;Af_M zM4V|!Xx1#Gn25>R2I2Yxu8%fa2kr!-YTRJS8@TkY_6X4oC?sckP}^cknG&ry_o9)b z%M`4iy}4j_=kD-e;$#*5He;}-nyU_!Ofcc<_*%CXX8M4^avRfCMCs?%YBNal{?rzuM~tw zB2O_}zpW3{UO;&@6>bQyO(8^eK-t)=B?1fMM1$`0{#~{pV}zKtrg$u;ef)!c(oH8C z)X`OsqH92yCi(&tsYm+yN2D6yl8;&B!pNkz>~0firGYN`CmP#lHAq5z644l(_+Oy0 zfR)e(`Xq3Ov~hs8zE!U)4PQu52lz3Y|A-p8D59-x_Fs|MCv$%xv4SPPSa!&PC;%Mb zn#~Jbvn|U|w28iMqg}p;_^bl@%rXqP@3|srwI{E94!{kc!u{G9vEzH<9p2U*hPh58)!N&{2x+-)I^m#Qr-$3C&5-ge=TG1iR-kS|4#AEhaHnC z9&1((uY7Gu-CFkamZ1(j!ySZLaev;#=+v8)nyF8jd|LrKcRLe2rZ?CB{ZgyJ9iU`C z09sX)5JT36)sR-keZ~on?4>0K)Ik7iVSI#s327#=PE_izZh#-bmO++univpcLG=)$ z8T@}ZM)Q$n9JM=z7 zqzb6vlnZAq`7ynoIVoNv^yykyN0o*iZ-v+dcPkbQ&n8=j=0Vm!NmFsEexd2ze!?TAo<&8PE779O4& zje_SQRQO5(TtPHmAPp<Sj6xPz5Y3U312t;;QQhQV$&kOJ1U=Dyi{~8eUpp=I*VA9vlrw0uJ*^a`Z0>A%z zpW_N_586GaEPs9kuE{Vlz9+RR5rGzx4IEorBM{hdUGN+u25_u?#`q86MRsk(dy{Jb zHVPW^cQn#{T>4K3;%kT@(!WEC{u0+$YGc85Oc5R*%I5ds{+`ccg2v+(gT80t{ol?v z{7*KOontt#h!QLm_K&L~IkajS3sei^AAw=ZYy8yJ*+4~%KSDRY;2L&LqJee$JPJ2p zr`y@)4&i!{Hq>|G7dgQh5}L3FZ@(39U>H#Gu>b)NdxZA(7y3XzdX+0=nn^smt#y{@ zh2C21m~EjcS_79;q`VFMAeVB?&cH&#{&uLO)56FTY8iytyoU+eQi*#lN7eP27&Bbs zhfe|}ScAr5-L&gdUxEd-9H~Z0Fh-{!6eUn*`VzA7wd@}-D=w8T8cXe-Wb!jLM0HKT z;>!zEjK%YDxpYgPT$;0@Dhs;G z)I+Ey#ZD0VlenMvQKdsLIld-AZBA$?knq{zK{lPRn%z5FSydS>9W}Sx&*kUbST6WB zII8_fL|M1{816dJo<>vnPjH-nd5L`sY4_6SGt(wy!R79Zq0n{6HDlByK1_{U9PWy& zQs*Y%YWOl{pT)uL2)T;B@r%tC2v$3JuW#OBg=uJTT!?kEQ;%vQ1tf5@0Ln2b5D+NR0wFSM#3IGkkNS_D~JwihYn+aNxrQC+}0uYRY zCc>KHfigx`&!TKS_{Mrj@Irco%aIP!-Ig3*{43!&o3ZLErzwz#qgdHv?`8u$^cSQF6$T-X|i4*qWijEZBBo-U*K=Ccx1}B&2BL_pZ z_TFNJ_aMZb?~Buqn+)C_PpZDJ0xH5qQLWP_@z44q`F|)Orr9ctZ-=stPgR~N za>A0x6kQ=PhglE|-sNrzSu}jms*YF3aLMqwtDCRqYjrb| z?B6Gda}RXwUQw#*rE8b`qJzK6+l3UE5>Vo>B=Ob;kmzUR^LL+JbY z^Bwij#3``*ERVQ_6cr83m5PCLGTyd)mYG|WjFP=d-48lQ9m1*ilvH3RJlXeg}kfV_#wGVb%Jxg*~?OQ+Z4!CQ)IvF;bwdKQan06XVGWupPYZAC~M}G6B zp|PEyq^RXsb2N;N6 zlgddaf#J0P?#Gh|c&%a?cNB6X*TWDkaA}|P+85wpJ|Y>M<>w+27ELFB|4v6o#)yjK z%ZQV~5;*$!p=y^K42nANhR1*_F8J6U>h;N^_5cZI82Be3o&JUYABq7K4C@&M@gKek z*az0B=xXv{xTwEch7U4QST1N9;z}*OyzX!a38y z5n4q*kIh$-gy!6tppYx(yAznp&6Jsj!@}Nj^TNqz_OC7}X!5LCVFcTm<~Pu)aG?p_ zD!hUiBzS!@rR`f^Qs}l{Q?I6!TW1b+?{H7OKI(e{CjSyJw&8($k0T8!&842M!8f}l zbZdJqzD};j`O{0^PKx{s=ka$)Ee)>QjfGR%P)kEDi07CvD=s(tSstcNLEbaY3qp03 zOy=%gvo4bBo64flR$CPFClyl8Bzs>9QYGv(3h_%?Umn7M<)A&N3FU|~ zz~RO3*plTQiso1ieq*0MS*Vp%_Vd+f3nWSdPJ3n_<+;ztdk`_|Q1-S4TNCA&bd^q4k?K1Z5M5|9HqOoO!%Y^!Lw6v!{WA-sQ z(5=mDiq*ryU!TwjvJ{v6xJzHR-^B<%XjEY(vp}_HTBw=3{*8wmf`kLRDG}4h(k&CV z{UVVj&r-ty!4V2G@2*iE0_Tk!v3lAOj``J}j+Q=1!R-A3-#{B{8vphMRd5P)rf5NI z*T;19L*r9`I8lii6X<}OpmlVyqOxQfb$wg9EX={R0t!a4j*?6#tgo>0L6AZ-z31}< z6m3%{cxoCQw(s3D{3C4X*s}W~JEoSUd}|r3Zl`Ses4ziy_Nz5d6%dm7l@V|){9{TP zKA((1Tp1xsVefUnggQ;zbl$ADEH3%3DNvpEPF~q3LHz(ICJwrE0*+c0HbqKMbmz!V zs*XYyUzj*aqs(#y70z2L2z;^UF ze81nDcB==(f5N?Q?lA=VD)Iv}U^5DJ2x-$YhspVl+q0s;?C_C}8i2A52z|VRtvlT;ZnZ07*8A9>RrD zfn6jT7!4Lvn>(>yPF`rlh$?j~_nBIl&F_f7?^r4bdH*}KRH*Tnf;_7JXgIL_|EEcusJ^XUcMU&L;I&)8HuL1$l`M_>BmwH z2R=Yhve70xUj**gS`Niy|JC*89_SZc5t^8_8c$lR067L;4qRJ?$R!`*vGE?mn*V14 zS81te)>aZ1M4UJMt)*}6L7fP|aJc~Y%0qhT=h9k7`$RjzO${Pd{KueF&?BIPkiYIk zS)??PajBIT2V)=qFPHx;O{Sd?@#_7{X`;=|Bl0Vp<<1|_xFb$GfwD9X+odkf#QL| zCZGOsg#z<@%-sL)By{{Y_8*iDYvEwvaronXwas>U3}^z&FpsJ;2oBz0e*m%a{j;Revj>03kf`Ut%GNv^@Y)1W>zOzk@k`QN@mK7yq^KLpY8&v!bR_ zWZiw9?Bfc;71NQ*=h(YQMR(oSeil7ed?9;-elS74%+z2Sf3xMb z2dv6;5h&PBsBm(_tOdQ?g?DCG98=uho_fgrzgIdX+y#F1)5 zHSYuz^#HRrgzg9QM_pjIMv{qQ;(>+Up4I8~;iYzN-*QCP1{^u(Q2UVDrX%CvU3VJ` z$AOX6`x+x1!J>_y479(Tp@ezz&Gkyg2x@-m8YLmQb&s4H*fVG;pBAQY8ZQQZ+oalb z5RSdT6(PP6+eMm|eOxF|4`;D#xdEr&4KMv=sgIV@-hOxPFnrSbRc1~QYx360UQJMJ z_CC34vwON*ZOpje=()g7nzmDEES>6(pk^(sihO3Lcl=%-t2UI_qVsjU>16^N=J}(B zYbzd>;VRB1$WJuOPwB7RY&CK~B`hRm*pHi&KAGk9VH!BfXc9Et>3y|J%Uy%+-=*lMtpEC%$!CV~yikr;ikUR7ri|)e)bbq9un^uF7g_}AC48v`dV$B?c z5)I8u#cfKdSqD#pg<5{@l&(3;Lv-E2K2W zMcA#wq0;Rn!5N{1g7ZcNTDb+HkBug8NcZhVo1nfEh&bFnN%RMDi$LjOdnMw^SlPE! z9m!RVgLRP$@Y$NS-|fm2r@_)Fv2E5u>oh=+8LwH{-Yo6P9J!DO?fqdkjA@& z!D%6LXSLbSU1JVZ9NPW$o^=lCHcc~W$Yy$qz{1(-@(SLU_vc9~M`-7^l-mom9y96) z>-u9(mC#tEGTU~pP+tO^%ka0}s6oFS-fLee(MOYD8+64~Mo=))v!UVOIS$uRqiS<6X5|rDOQsX*l=?lw*xRC4L&20*IoTgyZ-nl#b zitjmT017rNIVC%Vo9-s#od^E4|At^yB&w#s!MHwH+L9ssPr#9zK@DvmWC-7 zt3z`wy?h7rWyG0Pn<9oco9=zvukC_PGWC|GJUDiDmtSPj(-{QHtN+^^1W(9F8Hjb)1}(&e*2DWfjz%pd-3oqt7*n3 zn!iH7K~Fsc{?X3*zkCpg{oBycJxd(3>&}!}EPQG&IVYbizUn-H%DJvv1EibGv4p`g z$#8GLPFe76BxvP7+b}0^6|jy_?iezz(QPsTe;vwd$FM=SUIU~~H9%b&RJJUTY_ zGu>vF@PaXDw{9bD#M3y1%@%*s*EUC#UiOkVdZJ8OXkiWw<@t8j?mk!3{k@Su2ue(l!Abu}P)+0v9z0Q` z08C0Jfz2Rlq-tnEntT43DNHU^%=#)<(yb~*3b;))Kle@NM&4ZSR~5?OTlo|ny0{pE zS-;Br!0=8uVNB2CIPw8lu(f%1nre`HFtvUZXG*h#fHfPe#mAlV&MsL{^-XL{&fD&w z>U4jZ8EJQ&vptoX7=olLtQy-kKqUdiNpy$fI9Jm=)UIlE#4@5<1I1#>!b8H&FSCmn zQ_|9$@he?|7uE?%ezYcx_zIg`-Hxb`;-6sgq<-T*H3bTvWh~@#bE*GcowTcg${}2R-vsKPm7HT?2`pLLgcN;&Y&biu*o;zS`%&wDsqCYntyfl+ zaF=IZombDZ;b>*UVL2Hk7&GBhd5c9}PO9`W%wl$H*dAJ+?jpxDk!GTgZ_`BUb;dA;Zn21IQV4N55WV^h@Ij8}gM5&e zJiblTWyadtGAu5)Yw!&=M9~Ic>4-^HYusKd;^)?@Gc*${)&mYxBWTZvNWL2+r7Hep zmm3ZN<bc+tQzN)lUtvF?@eDE#S^-&_9uPIM?O--zMtu${XmVYH0y#AN^kbfm35^Bn~nOpx9^ z;TcH*_i~92044V*n`wLj7_0HQEM&iq^ndPU=@!uGf3v4g?DFl9Fs=z_-Somu+|!~Mv$SufjHfi|E2~K$O87d@gjZRt7QTjlS!LJ9Z?q4xHl{%I zsJq%k>>ocPi2dfIj7yepGPT1%%lyn2WoPLPEWArBF?P6rvDJKTjs1CP$Q%W+L~wQn z6|5JM6_78+4@6!Bp(8sjMV6=Ab$`#BtL&mY6I*J|WIAWo3yEA&)js<$ElKA+E;R6J zZf=j&1e_8*)9$OrkWB3z;Fav}msF+1EF6`o`(dQgGTsLyAsJDD3!|=XgjC0PjLF<& z)LC^??;F!vqR%w%``^4QK$xJ7NsMvR;*&3`4^JrFHCaPqz@ z3tl*Py(aOdPPncAn?1;DY5EPqVzizXmj}tbA^Vq*iF(k$ulc)D!_rJUG8u4mjNK2p zub9J64vBD>I63gucGGargTq85ENpn+(bS(6QcaW1T_TFxz1&o0QxB7{ zK#L%KGnNHpe-~$>lF{UUeAKSfq3*v`1tHD9sdJ@2J+w;V{GF!-y4f*2BI^GMeg~A5 z{vQSL|M!P9p?NT2lHUR4tLMSAt#*rQnpg1-hl5v&fnwd~vnDBLg$6tT91W&Sie^Ib zecov^3Fl)ARa&Y{nidlxsIWDgjPl;$;gEiX0rx6)baiUR&42-~JQ6$bPN_4+0l!)y z4%`LWDdlMt*l;=q=#43A8X<+@vP=)^BZ0oRh)lqfmLFtKN7x}1A$)Jpu3ajHLDh?| z+S>91i%nc1fTa87t+cHSE11Gy_a}s)xqf*`v%&eS8wfrC@=cf#KPtRZdiwZ#^6j2M z|ItZi;C+?vP^=Ka_nqNj;jrXlsltB0D|%a|4+FyubhLTRuM_}rabPB&x`;}}H~Q|I zVcGaVjU1x!Edr4=mZw0XzDSF@!t49*)6>B0;@l_MFHg6oBo-&2-__+2&VnQL0JF5* zTYjP<(qc>yP8#l*2eio(iT(Vt85M9nlp0e^%65FrXUCz~Qqq#Qy{{ntZ-Dlt)j<2woj&Rkw8UqAU5;lHN=xoH`^-BI z%_m7R&ZAM)H8pliZv@+2fgXM|5P(Y_48t2dFx%M&Dld?_xb`~~z2nCZY{{E^zpj`U zLESv~j!^lIzHD;)>+DmmC;=@f32vsl7p=PSI6-AKes>B38V*W_`I$|8|Q=R1DMm)?5**@_d14FDX({%RhUjBhxOV3<(>5A3MeuX7PLj1@IbosNs5+vN>gr@Mo+PY zgMZmMwcneZh?rb7Z*s!>ke4s!rpVf9vg-wqt@*_MzibSECYU~*y&d@Gz%<{Z-P0uo zMkYz$GQDw&F}T#&FE1`R{I8cmb8`Uvx)*Pg<+nA9`3(2PIBH0x4>=75QPLuu6Xm7{ z&>Wz4HK0LmvxDDlk`nkB*c%;hQ5f&rwl+9$-^{Lfn`ddVWRa@NF1ROqQxG^+Z&Zol zKf%BUERd7Ugp&$iD%n1LO-3%II=l?Z+y)xKO%tMgUk~&VE=E6aYHXfz=Sh8Ql1VDW zXxP;QlU&+?>LBmLN~Wi6k_=`@!UjOxUbuu7m$Ez6gWuQ6`2NUC zFc@GFB#?4Mza*LZU?%Z^_I0Jy?@xtNwF!iKjs$o{L?tSHg+(o6A;jdS+oCS!r0yMa zLAu_epS&S_It@jI3Imj}AVO4M?kiKFTaPNAgU*+|^O2bEgG(OD>?g`9f06vZCxUzT z+XLw#w&|GcZs(xz0>N9rre$tX!V2^~2Gxf?^tpJ5phC#F?|@aTXM1}##dly82CoRb z0S08;lGIwRcu_$1DZ&yfpTWUf6M;Sj=1GE3pYRdrQdbufL4pXPVgS7AAoxU%4hb|o zI4P=Hm+x8(CO0rKsm_5qfmJZR(O)5?J3OFKe49@N3Y=gF%{#^J7V}drXYQWk1U~o{ zcpZjzTGMO!tg(*`b=H~>O%ema%Vco+Eep_F%Q!*A+lw7N#wAlyUJ;6>{iqsTd3<}iiz}3WzBZ4pdn>~rNtTMwIjCLQXr%yf?SDAZ%IejxiF8)h&f1AGjy@Q?N z8BK=B*>|{Ka{bj8{CM;~kujW<#qK5ghUD3N;-NBoszfemQPW^xQPQ1e|LKt0aLPF$ zrP&TxBefv$9lzo21q!6UKh=_?VShxE3c?o01RNPIl>Bqym#7_CaR_TqYpW!E5pD7l z{Yd16_^a2NjD=KY;?ooG-nJk`L@ZO2R@LdJ*)196icMVq*x?@TNqufbzZt?TU7K`3 zMs0)#(5i9xr7VHf3e}MxjvdEk{W9r?fJkd)6%j2~>0!?KmSgVr!7j~O?q+;t%2(<`x*waA zebP0m^e;gVDEipFj7zx6RA>U2cijq{U3lxEb8%u}b( z3F|CaG|N54g3E}$o7JhtG&O_~wks>jPyE=2&t<90wW?+5BRWGxGh2plJX?fREIqx^ z?uwi>CacamzREO|B;_o*09xP#(R02$xaX(}il#8C#Z8c{1y0cxWR-frbihn;(YAng zD3is(rL$fLnZr?V;16qm1^O>5BHZbrV>egwQLw=~HgcE|44~~wX2Z#S*eB-yavK#7IjQ(Q^;NN zRIn_!W=DNU3i_l`TBZU3ZiQWz(K_-<=U?h2B#67<{r&pit3b!VKzr&#g*E2xrG3`Htj+VNd`1N4?g1BCMIpN?f*Bda$L!v>_xGmGK*7mcbjU z_I%YTi7~61VYIl9KFjomd{Sbmfno9bd<)+kUhHJqGSvgE^zz*N77>GYTdjr0I(&)% zxvdNZTEyEH31m=zOf{2!@uTfXFRu_-;px;*+QbgQZ{9Vb3zMLYNx#?&YS9`u?#d}% zGAFvAwDnnyR}g((q|LP?Q<2h?gsFO4v|YAcgr6|AC9~aDp5LSGHZ3|9?ECA&Fethb zB>jZ{K}73dBE3m?*CGsWXVW`PO^3tfV*J`ucK+W-P}9 zB4&jvvu3%GXL83s4{@)CpL@naF&A3xU4UABHGMW}L_zmr=g0^MT?TF`=(#F3I%R9 zEsQIF^N2TK?r@QX@Ggi-tC?HyzDNbapP$}yWk|`7Bl!%cyIX?X#ub8sytJi9lX@*X0fp?lrUmdx%y3e>53HTP5)3HIXe$W zy94*ka?`=6({cs#fRpz!VUMZ>3q<=dCIIalYd+AvXqH%82Q9r1`g1R0F(x`gAIb|~ zQR-8n?moQ<{+cFzOn}8&5bEYgpo1XmFdQ`IinHA&^%&Aci7tgE?DQIW0eE%u@Ecc==yq-$#v4{%g!pXyEW5&OK5lDgVu-+zW z;aV=$sT9Cjgqg)C%K~2kflYsrw~$p%iOv0Ty?PTw;Lu@Brd+e3arNnc(s!EJqoydk zH$U0{^Mj=xWPbd+q)fndX7-E!=LT@I0a^eP0wNa85zsSMb^o1@{G0q>?dieCv2zjm zGpIj#6ANbLBeYG?q~{YE{am9^v!f?S2}7(K-6iK@$gi?T4RAMozJ~BDP6F!25wy0V zL11lJ4WMb2%khr7P*LpBV9|wrEORrPCAjrWw2^%M1+Je*E;}zT`OO1q|M(||!okC< z9{E-t_=jb5pV*JRuWBDEL|Bvk>}=#bylwE?q-rv+M<+IsTsk6_*S`i0FZmHT$6>ic zQkYOkh35F-m}q1H9m3SO7#)GKc3Hn?qF|MK{_a)a|l=u3h4h}@U1_KnDFfr z+n4v(!eosIz*%Hw)CMWk7$J}~*a}#K4|YSjoNIXI8DG|}Cmv<{Qw0ksgn;_Wv3v|c zwsU34u`g@CVzuYbiw+Db$E|xuzvhwK`En#_@9~fNu)s@fxExf0WW7wqyJ}5^wbBFJ zPjCt3WeC6M_47X5bAvMeKg25TvS+Qn1zX6zC217Ru79K=pH0+kzN7jNfv zxr|JYh{sySL7Wr^2@-J8Gk}1z{O{N$>$*92bcCMttH3FGl7grKt`XSKT6K`%_|FWK z{|ENY)g=s)SZ+%AFbyu`FBsdjKp|&SpR1AFtG7nC)4r7kBj@6wH6RI-_z55)^~ExW}};v<`o64as4rmKX-vlyh)nkJAGpG5I4Z9A%g^nLt46{XN!aAC>Vn(JAFGB8l42~T7}oW3S-knBT-DBoTrM!H zvT|qr4NQ?z3fhV69Qw`9@ztQkrSfeKjAcJ6;`6WpH6gB=OeCLVZ zyh8jyIloPA5%^KjjN-#~S10%@$%&{NeQhyX9M#k5Q>D#PO(d#Qv6pOFx^_%I`x`2f zhrg*3Df|7p5c7Qa>Sxeb|FHZ*Hv_Q7&M#|VRbwDDE*+CTF_u_{XMMz)>oLyHarnpz zpQvH{)}CUPPMJq-mKR$gGRTA_JittzC(5+k3nUQ0Kx@tg){OYD<{OHyaG;-CU|;{k zOt^^~>bmQ81O5XBlnVj&zid$gnFi{9|Nl*q`R|JH|Lk*kZQhuTIdmk)^2A+tgFTJV zT)5>3R*k2&941Ijp{wL#4ToYs8LY37Ur$14Tk6kHP}S9vRX_9dHAorezJRo!6w zkwi}us@NKaHmUS%o5x<~zG3-I!gh_8=s;E)CTNi?phb4vFA`C9pfuu*4N*Fd^>XfB zfc`k6BCaS4b}pVR4@x$~h{3i*SlLr{s4a%Apaq@l_4 zA5QPi{>tfp<}8~g!^!kHbYk$wQJVrlWZ+QFk%&XC8%zpPwy7FoYJXq6LM_MNCeY)N zGRL6lG3HwSVEJTJOlKjMH9GooDlCm+{}WMxCHB5(^|Eh)Bo1Ok(CW$-%3QWH*~|wh zko;xWp%~V3*{`A^#_b{80#~AfX>7aSI9}~>tvnEYr@}*B@4N`7`+#iwk@~j}1=aV; zbkAcR_ycWA@CtN`&$sg-Q1(*Cf-FjVn>xMBX!{Vs!djOKrhjR-WP zk#ut25!ysjZ;yJ>n8QB~$yQ}mVTn9{E`T1Nfqw%wStFbZ0Rf6=dF>B>s zFK695rONqRDT|kJpA8t}dkNMV*Jyr7h`RN~h03VOe@jUR2QLFy65o734E@R|95=Sj z+p0B+-VXY3_FjG{uF^%C1pZb+>};53&Gx_=#}Y|lOhPfmeNTw{(?q2Ut}tlG&wmX0 z*PY*oKU@a|nnFrEJ6I8S{-qN^$)&hf8YOJz_jkRO_;!M$NR(OUUHrG}lRg7<1MpP-`h$2 zCid#BPFJi2PS_FfKxOi*P}e84l@rgp=Ks zQe#>Cx96^{m4A9>WH>np+-iFx&Jd)r(EvU*4g9;UZi~ z_={}Yk{L9*Jj@@XPfg!j5E_PQi#{y%wI?8s`a(r9TwuRNde5him(%#m-jZv6$5-2~ z8z5h@^mBk2x&C6t?Eg=h@&79!@c-9wCF~u5^5X*t^p)z13oGuB8*yGMKPu_ClU$g1 z2)Q~A^m@b2tCfpzIQZ=CSqj_|k0oakkFZEPn_os%u1JH2nDo5{EE%tV6rK;?ld3I8MeM9`Y$J?wU|v2uI6+aDa~m1|d+XqRDb=fC#5oOrmQ0-9f=jqm3NdZn4 z#y>>eqiCfwqDj$(uYc`&xy3)#3e*_ZlMBz_$_0l@|Vn}#iqim=MnzEQ2|}1>N3k*Ln-&(D=MpG z7=0`jC)T5*Ss#gf8Ioyc=RaTef#$5}B(OMZEPO9VXr)Xo=^1lGJ`7JguISLf1s>Xg z$YLUmRJ3EMX{?+BB|>7GYj+#7p((7m{OiM5rge40;u+4YV>ig13hV&EnJVHrLyA@A z&%u-tNLDLyQ9=`}KqNc#A0q7$!in4nWN#d9qqYnv?4E!YK9`Gs(_I(WCa+#Ap~gt7 z-X+^XGRNU®mha8MSI(QXrYC#UrLaa@vQ99yyq7E(EQE>bE@g##fw2gB|w%;&xA zgsm-f#u8lVrLianj*$)TwV8@0DXsmD5Kf;lY0sI5=3qT1$}$)1Wu0CBau8@`7rb`hO4D>6QKN-?foEfAWJfo1HuDJknHGar7JMa@C02|!T{LvkXn~EX@5}nIy zFQ2DmwpUGQs=1L1s8C7fd;Q4#%V+xMLw{bqAl{|lgQs6y|KW7B{ylWqKRsr$0olM% zV3x-qr`+GJ)+baWfV&+~W4tIwOGlv&^Uk|Pk=3$9`=i11zirPy*Gqy2fLjE2fSUS*RJ{q!PEcu+dfL2IBRJ%TY=mwrM%-aC{11tvY;p#K);F!OA8eXy!ZOQ0K>WcWdHyG diff --git a/docs/imgs/icons/plugin.png b/docs/imgs/icons/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca4d1b59493fc040b524aabbdbdeaffd8cce911 GIT binary patch literal 669 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 literal 0 HcmV?d00001 diff --git a/docs/imgs/python/VSCodeDebugging.png b/docs/imgs/python/VSCodeDebugging.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb2c3c73bebaa9b31595dee5bd2e988ab2c5811 GIT binary patch literal 85968 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 DPEM=e literal 0 HcmV?d00001 diff --git a/docs/python_api/faq.rst b/docs/python_api/faq.rst new file mode 100644 index 000000000..01dad5560 --- /dev/null +++ b/docs/python_api/faq.rst @@ -0,0 +1,119 @@ +Python FAQ +========== + +This page details some commonly asked questions about Python. + +.. _python-crashes: + +What can I do if I hit a crash while running my python script? +-------------------------------------------------------------- + +RenderDoc's python bindings are generally quite thin wrappers over the C++ APIs, which means the benefit of low overhead and powerful exposed functionality. The drawback is that it is quite possible to cause crashes, corruption or misbehaviour by passing invalid data to the APIs. + +Aside from type errors you could encounter crashes due to passing semantically invalid data such as a function that expects the :ref:`Resource ID ` of a shader, but you pass the ID of a texture. Generally speaking you should not expect robust error-checking from the python API. + +It is also important to bear in mind that python :ref:`lifetime management ` with refcounting may not match the C++ object lifetime. Holding onto python objects that refer to deleted C++ objects could cause crashes as well. Commonly this could happen when a capture is closed and cached information is cleaned up whether or not python still holds handles to it. + +When you encounter a crash, generally this is your responsibility to debug in your script, unless this can be reproduced purely using the UI. If you are certain you have encountered a RenderDoc bug and your script is correct you can report this, but you would need strong and clear evidence that it is not a bug in your script. + +Is there a more useful object preview in the REPL/print? +-------------------------------------------------------- + +If you are browsing the API using the REPL you may return temporary objects at times and find that the preview for them is rather unhelpful: + +.. sourcecode:: text + + + +This is due to the way the RenderDoc python bindings are generated and with how python creates strings for arbitrary objects. To get a more useful preview of an object particularly if it is a struct with properties you can use :func:`~renderdoc.DumpObject`. + +Why can't I see the new UI panel I created? +------------------------------------------- + +To avoid unnecessary UI churn and flickering, when you create a new UI panel such as a :class:`~qrenderdoc.BufferViewer` or :class:`~qrenderdoc.ShaderViewer` particularly ones that are not singleton and so will not already be open, the panel is created but not shown in the UI yet. + +You need to call :meth:`~qrenderdoc.CaptureContext.AddDockWindow` to add the UI into the UI hierarchy somewhere. + +Can I run python scripts from the command line? +----------------------------------------------- + +For some workflows it may be desirable to run scripts from the command line, the UI offers two ways to do + +Passing ``--py path/to/script.py`` on the command line when running the RenderDoc UI runs the script early in initialisation before the UI has been created or shown and can be used for headless execution or processing. Unlike in most cases, calling ``sys.exit()`` in one of these scripts will cause the RenderDoc process to exit. + +Passing ``--ui-py path/to/script.py`` on the command line will wait until the RenderDoc UI has been shown, then show the python scripting window and load & run the specified script file as a new tab. + +What version compatibility guarantees does python API provide? +-------------------------------------------------------------- + +Currently the python API is not considered locked, and so each version of RenderDoc may cause incompatible changes to the python API. As the python API is a wrapper, this will only happen when something is renamed or removed, or if the meaning of a member changes. New members in a struct or new methods in a class will not affect any existing python structs and this represents most of the change in the API. + +The release notes for each RenderDoc version includes a section on any breaking python changes, with information on how to address your scripts. Generally it is recommended that you target a recent or latest version of RenderDoc and it is not expected that scripts will try to handle multiple RenderDoc versions. + +Can I get more access to the UI for customisation? +-------------------------------------------------- + +Currently the entire underlying :doc:`renderdoc ` module automatically exposes all functionality possible as the same API is both wrapped for python and used in C++ by the UI. + +The same is not true for the :doc:`qrenderdoc ` module which exposes the UI windows and functionality. This interface is more conservatively written to avoid exposing huge amounts of unused functionality which may then have significant churn and API-breaking changes. + +If you have something in the UI you would like to customise or interact with, this will be considered if you file a feature request. Generally as long as it would not be unreasonably difficult or constraining on the C++ implementation most things can be exposed if there is a use for them but this will be done by request more than proactively. + +Can I get callbacks when captures are loaded/closed or events are selected? +--------------------------------------------------------------------------- + +Yes you can! RenderDoc offers a :doc:`in_depth/frame_viewers` API where you can register an object with a given interface, and it will receive callbacks for these cases. This will allow you to have something reactive or that updates when the user browses the frame. + +Can I access these APIs in C++? +------------------------------- + +The short answer is yes, but it is not recommended. + +The python API gets the advantage of being tolerant to ABI-breaking changes when a structure is reorganised or a member is added, as python scripts will only break when there is a source-breaking change. If you use these APIs in C++ you will be subject to all ABI changes. + +For this reason using the APIs in C++ is possible but not documented or supported. You should consider very carefully if you are thinking about this whether it would be better to use the python interfaces. + +Can I freely modify and use data I obtain from the APIs? +-------------------------------------------------------- + +As mentioned above and :ref:`elsewhere `, RenderDoc's python bindings are fairly directly linked to the underlying C++ structures. In many cases the C++ provides data that is a read-only reference - which has no direct equivalent in python. + +In the majority of cases, lists and objects returned to python are instead copied - these are then owned by python and can be freely modified at will. There are some exceptions for cases where copying by value is prohibitive and so references are returned: + +* For :class:`~renderdoc.ShaderReflection` objects these are stored as references. +* When :class:`~renderdoc.ActionDescription` objects are obtained for a capture, these refer to previous/next neighbours and children by reference. +* The :class:`~renderdoc.SDFile` for a capture stores all children as reference, including the :class:`~renderdoc.SDObject` and buffers. + +You **should not** modify any of these objects, as this could lead to problems or even crashes as internal data is corrupted. + +Can I use Python scripting together with Android? +------------------------------------------------- + +In theory RenderDoc's scripting works transparently regardless of where the replay is running, when used in the UI. + +However Android is an unstable, unreliable, and often broken platform. As a result the use of python scripting with Android captures is not considered officially supported. It is possible that you can use scripting when running on Android but this should be taken with care. + +.. _example_preamble: + +Why do the examples have a preamble for ``pyrenderdoc``? +-------------------------------------------------------- + +The :doc:`examples ` all contain a preamble in their source which is used as hints for external IDEs about the pre-provided modules & global variable. Including this effectively does nothing when the script runs and could be omitted, but means autocomplete and type checking works correctly. + +.. highlight:: python +.. code:: python + + # these imports are not strictly necessary, but are convenient + import renderdoc + import qrenderdoc + + # this is here to give autocomplete when editing the example + # in VS Code where it doesn't know about this global + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + pyrenderdoc = qrenderdoc.CaptureContext() + +When opening one of the example sources in an IDE like VS Code, it will have no way of knowing that the ``renderdoc`` and ``qrenderdoc`` modules are already imported when running any script in the RenderDoc UI. Importing these again costs very little and helps with autocomplete. + +The ``pyrenderdoc`` global is also pre-provided in python script environments in the RenderDoc UI. To hint this we use a python feature where a single constant in the ``typing`` module called ``TYPE_CHECKING`` is only set to ``True`` when in a type checker like in an IDE, and is ``False`` when actually executing. This allows us to 'initialise' ``pyrenderdoc`` with the correct :class:`~qrenderdoc.CaptureContext` type. Note that this type can not be created from python so this statement would fail if actually executed. diff --git a/docs/python_api/first_steps.py b/docs/python_api/first_steps.py new file mode 100644 index 000000000..f8afae2bd --- /dev/null +++ b/docs/python_api/first_steps.py @@ -0,0 +1,27 @@ +if not pyrenderdoc.IsCaptureLoaded(): + filename = pyrenderdoc.Extensions().OpenFileName("Choose a capture", "", "*.rdc") + + pyrenderdoc.LoadCapture(filename, renderdoc.ReplayOptions(), filename, False, True) + +eid = pyrenderdoc.CurEvent() + +name = pyrenderdoc.GetEventBrowser().GetEventName(eid) + +print(f"Currently we are at EID {eid} named: '{name}'") +if eid > 1: + prevname = pyrenderdoc.GetEventBrowser().GetEventName(eid - 1) + print(f" > the previous event {eid-1} is named: '{prevname}'") + +pipe = pyrenderdoc.CurPipelineState() + +outputs = pipe.GetOutputTargets() + +for idx, out in enumerate(outputs): + if out.resource != renderdoc.ResourceId.Null(): + name = pyrenderdoc.GetResourceName(out.resource) + print(f"Output {idx} is: {name}") + +depth = pipe.GetDepthTarget() + +name = pyrenderdoc.GetResourceName(depth.resource) +print(f"Depth is: {name}") \ No newline at end of file diff --git a/docs/python_api/first_steps.rst b/docs/python_api/first_steps.rst new file mode 100644 index 000000000..94ed45996 --- /dev/null +++ b/docs/python_api/first_steps.rst @@ -0,0 +1,114 @@ +Tutorial: First Steps with Python +================================= + +We will begin by writing a very simple script to run directly in the UI. To start with open the python scripting panel from :guilabel:`Window` → :guilabel:`Python Scripting`. + +Python Scripting panel +---------------------- + +.. figure:: ../imgs/Screenshots/PythonShellBlank.png + + The python shell when first opened + +The main area is a script editor which allows you to write python code, load and save scripts, and run them. + +On the left is a project explorer which shows recent files loaded, UI extensions (which will be detailed later) as well as a few pre-provided examples which can be loaded and run. + +At the bottom is an interactive REPL (read-evaluate-print loop) which can run python one-liners interactively, as well as tabs that show text output & errors as well as help information. + +Your first script +----------------- + +To begin with you should open any capture, and we will run a very simple script on it. + +The example code below can either be copy-pasted or you can type it out to see the autocomplete information as it goes. This is also available as ``Tutorial: First Steps with Python`` in the :guilabel:`Examples` section of the project explorer. + +.. highlight:: python +.. literalinclude:: first_steps.py + +You might get output like this in the output window when you click :guilabel:`Run`: + +.. sourcecode:: text + + Currently we are at EID 9408 named: 'vkCmdDrawIndexed(123, 2)' + > the previous event 9407 is named: 'vkCmdBindDescriptorSets(1, { Descriptor Set 692529 })' + Output 0 is: 2D Color Attachment 690491 + Output 1 is: 2D Color Attachment 690493 + Output 2 is: 2D Color Attachment 690496 + Output 3 is: 2D Color Attachment 690498 + Output 4 is: 2D Color Attachment 690500 + +Breaking it down +---------------- + +When running scripts in RenderDoc's UI, there is a pre-filled global variable ``pyrenderdoc`` which is your entry point to the API access. This variable represents a :class:`~qrenderdoc.CaptureContext` that provides common data like the current event as well as handles to the available panels like the event browser. + +First we can check that a capture is loaded, and if not prompt the user to give us one to open. + +.. highlight:: python +.. code:: python + + if not pyrenderdoc.IsCaptureLoaded(): + filename = pyrenderdoc.Extensions().OpenFileName("Choose a capture", "", "*.rdc") + + pyrenderdoc.LoadCapture(filename, renderdoc.ReplayOptions(), filename, False, True) + +From ``pyrenderdoc`` we can query the :ref:`current event ID ` as an integer. With that :ref:`event ID ` we can fetch the :class:`~qrenderdoc.EventBrowser` from :meth:`~qrenderdoc.CaptureContext.GetEventBrowser` and use it to look up the formatted name of both the current and previous event with :meth:`~qrenderdoc.EventBrowser.GetEventName`. + +.. highlight:: python +.. code:: python + + eid = pyrenderdoc.CurEvent() + + name = pyrenderdoc.GetEventBrowser().GetEventName(eid) + + print(f"Currently we are at EID {eid} named: '{name}'") + if eid > 1: + prevname = pyrenderdoc.GetEventBrowser().GetEventName(eid-1) + print(f" > the previous event {eid-1} is named: '{prevname}'") + +After that we fetch the current :class:`~renderdoc.PipeState` from :meth:`~qrenderdoc.CaptureContext.CurPipelineState` which is an abstraction over a subset of the current pipeline state, which will work regardless of the API in the capture. This doesn't provide all possible states especially where there are differences between APIs but is convenient for simple uses. + +From the pipeline state we get the list of color output targets with :meth:`~renderdoc.PipeState.GetOutputTargets`. + +.. highlight:: python +.. code:: python + + pipe = pyrenderdoc.CurPipelineState() + + outputs = pipe.GetOutputTargets() + +The list of outputs may contain unbound resources as some APIs have a fixed set of outputs which may be sparsely populated. We print all of the bound resources and skip any that are unbound, printing the names and indices of the rest via lookup of their :ref:`Resource ID `. For those unfamiliar with python, ``enumerate()`` is a built-in function that returns pairs of ``index, element`` for each element in a list or sequence. + +.. highlight:: python +.. code:: python + + for idx, out in enumerate(outputs): + if out.resource != renderdoc.ResourceId.Null(): + name = pyrenderdoc.GetResourceName(out.resource) + print(f"Output {idx} is: {name}") + +The ``print()`` statements get sent to the output panel, which will show itself if currently hidden when you run the script. If you hit any python exceptions they will also print to this output panel. + +We can also separately show the depth target, if bound, using the same mechanism: + +.. highlight:: python +.. code:: python + + depth = pipe.GetDepthTarget() + + name = pyrenderdoc.GetResourceName(depth.resource) + print(f"Depth is: {name}") + +.. note:: + + It is safe to call ``sys.exit()`` to abort a script running, this will not close RenderDoc itself! + +This tutorial will not exhaustively cover everything available in the :class:`pyrenderdoc ` context. You are encouraged to browse the documentation or explore through autocomplete to see what is available. + +Next steps +---------- + +This gives a *very* brief 5-minute intro to using python. You could now look at some more of the :doc:`examples/index` that give starting points for common workflows or pieces of analysis. + +To move away from manually opening & running scripts next we will create a UI extension which is more convenient for day-to-day use. \ No newline at end of file diff --git a/docs/python_api/ide_integration.rst b/docs/python_api/ide_integration.rst new file mode 100644 index 000000000..f91c41a7e --- /dev/null +++ b/docs/python_api/ide_integration.rst @@ -0,0 +1,91 @@ +Python IDE integration +====================== + +RenderDoc supports integration with external editors, as RenderDoc is not as powerful or capable for python development as a dedicated IDE. With IDE integration it is also possible to set breakpoints and step-through debug python scripts as well which is not possible within RenderDoc. + +For this tutorial we will use VS Code as it has the best integration with RenderDoc, but it is possible to use other tools such as PyCharm. + +.. image:: ../imgs/python/VSCodeDebugging.png + :target: ../_images/VSCodeDebugging.png + +A screenshot of a VS Code debugging session, paused in the :doc:`tutorial UI extension `. + +VS Code quick setup +------------------- + +If you want to use `VS Code `_ with RenderDoc, it will work out of the box for simple code editing. + +To use it for debugging python code and with fully-featured autocomplete, here are the extra setup steps needed. + +#. Install the `pylance `_ and `debugpy `_ extensions if you don't have them already. These are automatically installed by the default `python `_ meta-extension. +#. Open the settings window (:kbd:`Ctrl-,`) to modify these settings: +#. Add the RenderDoc stubs folder to :abbr:`Extensions → PyLance → Extra Paths (python.analysis.extraPaths)` (``@id:python.analysis.extraPaths``). + + On Windows this is ``%APPDATA%\qrenderdoc\pystubs\latest`` and on linux it's ``~/.local/share/qrenderdoc/pystubs/latest``. +#. Disable the :abbr:`Extensions → Python Debugger → Just my code (debugpy.debugJustMyCode)` (``@id:debugpy.debugJustMyCode``) setting. +#. Enable the :abbr:`Features → Tasks → Allow Automatic Tasks (task.allowAutomaticTasks)` (``@id:task.allowAutomaticTasks``) setting (optional). +#. When actively debugging, enable ``Breakpoints → User Uncaught Exceptions`` at the bottom of the ``Run and Debug`` sidebar. + +If you just installed the debugging extensions, you will have to restart the RenderDoc UI for them to be found. After this you can use the :guilabel:`Debug` buttons in the python scripting panel or the extension manager to debug python code, with full autocomplete in VS Code. In the VS Code settings JSON this looks like so: + +.. highlight:: json +.. code:: json + + { + "python.analysis.extraPaths": [ + "C:\\users\\baldurk\\appdata\\roaming\\qrenderdoc\\pystubs\\latest" + ], + "debugpy.debugJustMyCode": false, + "task.allowAutomaticTasks": "on" + } + +.. _pystubs: + +Python Stubs +------------ + +Python modules written in C like RenderDoc's can't have type annotations that are key to providing good autocomplete in an IDE. The standard alternative is to provide python 'stub' files which are written in pure python and have no implementations, only signatures and other type annotations. + +RenderDoc generates appropriate stubs within your application data directory with one per version as well as a rolling 'latest' version. On Windows this is ``%APPDATA%\qrenderdoc\pystubs`` and on linux it's ``~/.local/share/qrenderdoc/pystubs``. + +Typically you can use the ``latest`` version without problems, but if you are targeting a specific version of RenderDoc you can use one of the versioned directories. + +In VS Code to enable the use of stubs, add this folder to the ``python.analysis.extraPaths`` setting which can be found at ``Python → Analysis: Extra Paths`` in the VS Code UI. For other editors consult your editor's documentation for how to add extra stubs paths for typechecking and autocomplete. + +After doing this any python scripts that import the ``renderdoc`` or ``qrenderdoc`` modules should have proper autocomplete. + +Python Debugging +---------------- + +RenderDoc supports integration with `debugpy library `_, a common remote debugging toolkit that allows external debuggers or IDEs to connect and debug python code running within the RenderDoc UI. + +If you have VS Code installed in the standard location, and have the `ms-python.debugpy `_ extension installed, RenderDoc will automatically load and initialise ``debugpy`` on first startup. It will also try to load ``debugpy`` from PyCharm's installation if VS Code can't be found, or you can specify a custom path to where ``debugpy`` should be loaded. + +If you have just installed these extensions, you will need to restart RenderDoc to initialise it. + +.. note:: + If building RenderDoc from source you will build against Python 3.6 which does not support debugging. Customise your local build to :ref:`use a newer version of Python ` or use one of the official releases which uses Python 3.8. + +Once ``debugpy`` has been loaded, the debugger is listening on the default local port ``5678``. Within VS Code or your IDE you can configure what may be called a 'remote attach' or 'debug server attach' connecting to ``localhost`` on port ``5678``. + +If RenderDoc has detected your installation of VS Code it also provides convenient ways to debug UI extensions and scripts. From the extension manager or in a python script you have written you can press the :guilabel:`Debug` button. This will automatically try to launch VS Code with the necessary environment to connect a debugger. If you enable the ``Allow Automatic Tasks`` option in VS Code's settings it will automatically connect to the debugger on startup, otherwise you will have to choose to start debugging in order to connect. + +.. figure:: ../imgs/python/DebuggerAttached.png + + The status bar showing that a python debugger is connected. + +.. important:: + Due to a quirk of how the python integration works in RenderDoc, VS Code may consider scripts as not being contained properly within a project. It is strongly recommend that you **disable** the ``Just my code`` option under the ``debugpy`` extension. + + You may also need to check the ``User Uncaught Exceptions`` setting under ``Breakpoints`` to properly trap exceptions that are thrown in the python code, as otherwise RenderDoc will catch them itself for display. + +Next steps +---------- + +You should now have a good setup for writing and debugging python code using RenderDoc's modules, as well as a starting point for writing scripts and UI extensions. + +If you have a specific task in mind you can explore the API, you may want to consult the :doc:`examples/index` which show how to do several simple tasks and demonstrate the use of :class:`~renderdoc.ReplayController` which is the main entry point for the underlying API and most of the possible power that RenderDoc exposes. + +If you are writing more complex scripts you may want to see :doc:`in_depth/index` which have more detailed explanations of particular topics or things to bear in mind. + +There is also a :doc:`faq` which addresses some common issues or stumbling blocks. \ No newline at end of file diff --git a/docs/python_api/index.rst b/docs/python_api/index.rst index f943ce22c..d36919a5e 100644 --- a/docs/python_api/index.rst +++ b/docs/python_api/index.rst @@ -1,2 +1,23 @@ Python API ========== + +RenderDoc exposes a significant amount of functionality to custom python scripting. This documentation will walk you through how to get started, showing examples of one-off scripts and permanent UI extensions. + +Scripting this way can help automate or simplify common patterns you use, and personalise RenderDoc for your specific needs or wants. + +RenderDoc's internal APIs are exposed directly to python, meaning any feature exposed in the UI will be accessible in some way to python as well. Many aspects of the UI itself are also accessible, and that can be extended in future by request. + +It's assumed that you have a basic familiarity with python or can learn the syntax. + +----------------- + +.. toctree:: + first_steps + ui_extensions + ide_integration + faq + examples/index + in_depth/index + python_module + renderdoc/index + qrenderdoc/index \ No newline at end of file diff --git a/docs/python_api/python_module.rst b/docs/python_api/python_module.rst new file mode 100644 index 000000000..73a88599f --- /dev/null +++ b/docs/python_api/python_module.rst @@ -0,0 +1,90 @@ +.. _pymodule: + +Using Python Module Manually +============================ + +This documentation has introduced python scripting from within the embedded python runtime in the RenderDoc UI. Demonstrating how it can be used to customise and extend the UI in personalised ways. + +It is also possible to load the RenderDoc module from within a standalone python interpreter as a normal python module, though this does come with caveats and limitations. This allows the most amount of control over functionality and can integrate most easily with custom automation. + +The only interface available in the python interpreter is the ``renderdoc`` module, for obvious reasons the ``qrenderdoc`` module that provides access to UI functionality is not available standalone outside of the UI itself. + +.. warning:: + Using the python module directly is an advanced use case and is **not** necessary for writing scripts or extensions to customise the UI! + +Building the module +------------------- + +RenderDoc by default does not ship with a python module that can be loaded into the ``python`` interpreter. This is because the python bindings are specific to a particular major-and-minor version of python, as well as the general difficulty with distributing binary python modules. + +It is however possible to build the module as long as you know the exact python version you will be using, and this page details how to do that and the limitations of this setup. + +The first step is to ensure that you have a local version of `RenderDoc's source `_ and can build it successfully. The necessary `dependencies `_ and `instructions `_ are listed on github but e.g. on windows all that is needed is Visual Studio 2015+. + +Once you have built RenderDoc, by default you will have a version of the python module already. Depending on your platform it will be generated in a different place - on Windows to prevent filename collisions it is in a ``pymodules`` subfolder under the relevant platform and build type, on linux it will be output to the ``lib`` folder as ``renderdoc.so``. + +This module will be built against the default python interpreter - on linux this will depend on the version available in your system which may already be the one you want, on windows this will be the version of python bundled in the source code which is Python 3.6. The module can *only* be safely loaded in this version of python and no other. To use with a different version of python, you must rebuild RenderDoc against that version of python. + +.. _custom-py-ver: + +Targeting a different python version +------------------------------------ + +Forcing the build to use a different python version varies depending on where you are building it. + +Windows +^^^^^^^ + +On windows the python configuration is set in the visual studio project. Each of the projects ``qrenderdoc``, ``pyrenderdoc_module`` and ``qrenderdoc_module`` have a tab in their properties labelled :guilabel:`Python Configuration` which has a single entry pointing to the location of a python interpreter. + +Almost everything that RenderDoc needs is present in a normal python installation - the header files in ``Include/``, link library in ``libs/`` and python interpreter DLL. However on windows RenderDoc also expects the standard library to be available as a compiled zip bundle ``python3.xx.zip`` similar to the 'embeddable package' that is provided by python downloads, and default installations only have the standard library as loose files in ``Lib/``. + +For convenience the RenderDoc source checkout has a python script which will compile this zip. Running ``util/make_python_lib_zip.py`` from the interpreter you wish to use will automatically compile its library from the ``Lib/`` folder into a ``python3.xx.zip`` next to ``python.exe``. If you wish to control which library folder to compile and where to put the zip, you can pass these as arguments to the ``make_python_lib_zip.py`` script, but note that the visual studio build will expect to find the library zip next to the DLL. + +Once this zip has been created or otherwise obtained, rebuilding the visual studio solution should use the new python version for both the embedded runtime in the RenderDoc UI and build the python module against it. You can see it successful with a message like so:: + + Built against python from C:\Python314 + +If there is a problem with the specified location you may instead see a message indicating the problem, and RenderDoc will fall back to using the bundled python 3.6:: + + ** Could not use python version C:\Python314 due to missing requirements. + ** Check for C:\Python314\include\Python.h, C:\Python314\pythonMAJMIN.zip, and either C:\Python314\pythonMAJMIN.lib or C:\Python314\libs\pythonMAJMIN.lib + +Linux +^^^^^ + +On Linux if you are using cmake version 3.12 or newer you can specify ``-DFORCE_PY_VERSION=3.xx`` on the command line to force the build to require a specific version. You may need to install a different package for development files, or use additional cmake configuration options to ensure the correct locations are found. Consult your distribution's documentation or the cmake documentation for ``FindPython3`` for more information. + +If successful, the cmake configuration will print which python version is in use before build, and the module will be loadable in that version of python. + +Loading the module +------------------ + +You can use whichever python mechanism you prefer to ensure that the RenderDoc module is in python's search path. This could mean modifying ``sys.path`` or specifying the python path another way at startup. This will ensure the RenderDoc module can be found by python. + +The module itself also has a dependency on RenderDoc's core library as itself it is only a thin wrapper. The core library must be available for loading when the python module is imported. This again will depend on your platform. + +Windows +^^^^^^^ + +On windows by default the module will expect RenderDoc's core library to be in ``PATH``, but on python 3.8 and above, there is an extra step necessary on windows only. You must call ``os.add_dll_directory`` with the path where ``renderdoc.dll`` can be found. + +Provided ``renderdoc.dll`` is available in the ``PATH`` and if necessary ``os.add_dll_directory`` is called, the module should load correctly. If the DLL can't be found you will see an error like this:: + + ImportError: DLL load failed while importing renderdoc: The specified module could not be found. + +Linux +^^^^^ + +On linux the python module is built with a ``RUNPATH`` that will include its own location, meaning that by default nothing else is required since the RenderDoc library ``librenderdoc.so`` is built in the same directory. If this is moved or changed, you should use ``LD_LIBRARY_PATH`` as appropriate to ensure the library can still be loaded. If you do not you will see an error like this:: + + ImportError: librenderdoc.so: cannot open shared object file: No such file or directory + +Using RenderDoc's API directly +------------------------------ + +If you are using RenderDoc's API directly there are some things you will need to take care of which normally the UI would handle for you. + +The RenderDoc replay API must be initialised using :func:`~renderdoc.InitialiseReplay` once before any other API function is called, and at the end of the process you must call :func:`~renderdoc.ShutdownReplay`. It is not valid to call any API function before initialisation or after shutdown, and you can't re-initialise after shutting down. These functions are called by the UI normally and so must only be used when writing scripts that use the module directly. + +For a complex example of how to use the RenderDoc python module directly you can look at the automatic testing scripts in the `RenderDoc repository `_. These scripts perform automatic capture, replay and analysis for self-testing of RenderDoc and are written entirely in python. \ No newline at end of file diff --git a/docs/python_api/ui_extensions.py b/docs/python_api/ui_extensions.py new file mode 100644 index 000000000..5db57dad9 --- /dev/null +++ b/docs/python_api/ui_extensions.py @@ -0,0 +1,78 @@ +import renderdoc as rd +import qrenderdoc as qrd +from typing import List + + +def check_draw(best_size: int, action: rd.ActionDescription): + if action.flags & rd.ActionFlags.Drawcall: + size = action.numIndices * action.numInstances + if size > best_size: + return action.eventId, size + return 0, 0 + + +def find_largest_draw(best_size: int, actions: List[rd.ActionDescription]): + ret = 0 + for action in actions: + result = check_draw(best_size, action) + + if result[0] == 0: + result = find_largest_draw(best_size, action.children) + + if result[0] > 0: + ret, best_size = result + + return ret, best_size + + +def open_window(pyrenderdoc: qrd.CaptureContext, data): + mqt = pyrenderdoc.Extensions().GetMiniQtHelper() + + top = mqt.CreateToplevelWidget("Scavenger Hunt") + + group = mqt.CreateGroupBox(False) + mqt.SetWidgetText(group, "Exciting scavenger hunt!") + + label = mqt.CreateLabel() + mqt.SetWidgetText(label, "Guess the biggest draw!") + + eid, size = find_largest_draw(0, pyrenderdoc.CurRootActions()) + + def do_guess(pyrenderdoc, widget, text): + print(f"Spoiler: largest draw is {eid}, it drew {size} indices") + + if pyrenderdoc.CurEvent() == eid: + msg = "You found it!" + elif pyrenderdoc.CurEvent() < eid: + msg = "The largest draw is later in the capture..." + else: + msg = "The largest draw is earlier in the capture..." + + mqt.SetWidgetText(label, f"Guess the biggest draw!\n\n{msg}") + + button = mqt.CreateButton(do_guess) + mqt.SetWidgetText(button, "Guess") + + if eid == 0: + mqt.SetWidgetText( + label, + "You don't have a capture with drawcalls loaded :(.\n" + "Re-open this window after opening a capture!", + ) + mqt.SetWidgetEnabled(button, False) + + mqt.AddWidget(top, group) + mqt.AddWidget(group, label) + mqt.AddWidget(group, button) + + pyrenderdoc.AddDockWindow( + top, qrd.DockReference.TopOf, pyrenderdoc.GetEventBrowser().Widget(), 0.2 + ) + + +def register(version, pyrenderdoc: qrd.CaptureContext): + print(f"Tutorial extension registered in RenderDoc {version}") + + pyrenderdoc.Extensions().RegisterPanelMenu( + qrd.PanelMenu.EventBrowser, ["Tutorial", "Scavenger Hunt"], open_window + ) diff --git a/docs/python_api/ui_extensions.rst b/docs/python_api/ui_extensions.rst index 0e679a09b..cab4460ff 100644 --- a/docs/python_api/ui_extensions.rst +++ b/docs/python_api/ui_extensions.rst @@ -1,2 +1,87 @@ Tutorial: UI extensions ======================= + +This document outlines how to get started writing a UI extension. + +Creating an extension +--------------------- + +RenderDoc UI extensions are python modules loaded from standard locations on disk, depending on your platform. On Windows it's :file:`%APPDATA%\\qrenderdoc\\extensions` and on linux it's ``~/.local/share/qrenderdoc/extensions``. + +In any subdirectory under this path you can register an extension by creating a ``extension.json`` file with some metadata, and creating a python module starting with an ``__init__.py`` file. + +.. figure:: ../imgs/Screenshots/ExtensionManager.png + + Extension Manager: Configures installed extensions. + +To streamline setup we will ask RenderDoc to create a new extension for us. Open the extension manager by opening the :guilabel:`Tools` menu and select :guilabel:`Manage Extensions`, then click the :guilabel:`Create New...` button and enter a package name such as ``tutorialext``. This will create the ``extension.json`` and ``__init__.py`` files in a new folder ``tutorialext`` for us. + +For more information about the registration of python extensions see :doc:`../how/how_python_extension` + +Loading the extension +--------------------- + +To load the extension, select it in the list in the extension manager and click the :guilabel:`Load` button. Python modules can't be unloaded but they can be reloaded if changes are made to the files on disk, so the button changes to :guilabel:`Reload`. + +When the extension is loaded a ``register()`` function is called, which at the moment for us just prints a message. This message can be viewed in the output panel of the :doc:`python scripting <../window/python_scripting>` window, which you can jump to by clicking :guilabel:`View Output`. You can filter the output with the drop-down above the output text. + +.. note:: + The output this will not show any messages from before the window was opened - you can click :guilabel:`Reload` after opening the python scripting window to see some new messages. + +To avoid bugs in extensions from making the UI unusable easily, python extensions are not loaded by default. Once you've loaded an extension if you wish to have it automatically load on startup, you can do so by enabling :guilabel:`Always Load`. + +Editing your extension +---------------------- + +At this point you will have an ``extension.json`` and ``__init__.py`` in the ``extensions/tutorialext`` folder in your application data directory. These can be edited in the program of your choice, but we will use the python scripting window which can browse and open extension files for edit. + +In the python scripting panel project sidebar, expand :guilabel:`UI Extensions` and :guilabel:`tutorialext` to open these two files and see the default-provided contents. + +.. figure:: ../imgs/Screenshots/PythonUIProjectEditor.png + + Python Scripting: Editing the files for a new UI extension. + +We will add a UI button and new panel to demonstrate how UI extensions can provide user-interactive features. This is available as ``Tutorial: UI extension`` in the :guilabel:`Examples` section of the project explorer, though note that you will have to copy the code into your ``__init__.py`` as the example does not run on its own. + +.. highlight:: python +.. literalinclude:: ui_extensions.py + +If you edit the ``__init__.py`` you'll find that the RenderDoc status bar will notify you that as well as having one extension currently loaded the files have been changed on disk. Clicking the button in the status bar will reload the extension: + +.. figure:: ../imgs/Screenshots/PythonExtensionModified.png + + The RenderDoc status bar with a modified extension loaded + +.. |plugin| image:: ../imgs/icons/plugin.png + +After the extension has been reloaded, you can use the new extension menu item under the extension icon |plugin| in the event browser. The menu item will open a new panel with a scavenger hunt for the largest drawcall in your capture. + +.. figure:: ../imgs/Screenshots/TutorialUIExtension.png + + The new button and window added by the extension. + +Breaking it down +---------------- + +This example demonstrates how you can bridge the gap between python scripts and UI elements. It shows how to add a menu item to one of the main interfaces - the event browser - and how to create a new UI panel with custom interactivity. + +When our extension is loaded (or reloaded) the ``register()`` function we define is called with two parameters, the version of RenderDoc as a string e.g. ``"1.23"`` and the :class:`~qrenderdoc.CaptureContext` which is also available as a global ``pyrenderdoc``. + +From the :class:`~qrenderdoc.CaptureContext` at ``pyrenderdoc`` that we used in the previous example, we can get access to :class:`~qrenderdoc.ExtensionManager` which gives us the option to create a UI. First we register a menu item (:meth:`~qrenderdoc.ExtensionManager.RegisterPanelMenu`) in the event browser's toolbar, providing a list of submenus and a callback to call when it is pressed. + +.. tip:: + + There are multiple places where you can add a new menu item, explore the available enum values and functions here to see what options there are! + +When the ``open_window`` callback is called, we create a new window using the :doc:`UI helpers ` in :class:`~qrenderdoc.MiniQtHelper`. Note that most RenderDoc builds ship with fully integrated python Qt access via PySide, but the full Qt API is quite complex and not necessary for simple quick UIs. + +For the UI we create a groupbox with a label and a button. When the button is pressed, it updates the label based on where the :ref:`current event ` is relative to the largest drawcall found in the capture. This is all contained within a top-level widget (:meth:`~qrenderdoc.MiniQtHelper.CreateToplevelWidget`) + +Finally we use :meth:`~qrenderdoc.CaptureContext.AddDockWindow` to add the top-level widget into RenderDoc's docking system. Any widget can be added as a new top-level docking panel, but it is recommended that you use an explicit top-level widget to be able to use its callback when it is closed. + +Next steps +---------- + +This shows how to expose user-visible tools to connect through to custom scripts which can be of varying complexity. At this point you hopefully have the starting point to begin exploring APIs available in the documentation or through autocomplete. + +Up until now we have written everything within the RenderDoc UI to get started quickly. This is fine for writing small snippets of code, but we can also set up an external IDE for a better experience when writing larger or more complex extensions. \ No newline at end of file diff --git a/qrenderdoc/Resources/resources.qrc b/qrenderdoc/Resources/resources.qrc index 418660ed8..915bc69f2 100644 --- a/qrenderdoc/Resources/resources.qrc +++ b/qrenderdoc/Resources/resources.qrc @@ -1,5 +1,7 @@ + ../../docs/python_api/first_steps.py + ../../docs/python_api/ui_extensions.py ../../docs/python_api/examples/show_buffer.py ../../docs/python_api/examples/show_texture.py ../../docs/python_api/examples/iter_actions.py