From 72790ae6c15cdac500ab03a7b4374d89fba39c5c Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Tue, 26 May 2026 13:59:09 +0800 Subject: [PATCH] PD-sep server-side profiling: vLLM patches + per-request breakdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instrumentation patches (microbench/patches/): - pd_profile.py: shared event emitter (VLLM_PD_PROFILE_LOG env var) - apply_patches.py: idempotent patch installer for mooncake_connector.py and scheduler.py, marks insertions with # PD_PROFILE_PATCH - analyze_events.py: joins per-process JSONL event logs by transfer_id into per-request phase durations Seven events captured per request: D_get_num_matched → P_zmq_received → P_prefill_done → P_rdma_start → P_rdma_end → D_recv_complete → D_request_promoted Driver fix (microbench/lifecycle/driver.py): seed_prefix_cache now sends via the proxy URL so P and D both cache the seeded prefix with matching block hashes. Previously seeding D directly produced different block hashes than the proxy-routed measurement requests, making incremental transfer impossible. Real breakdown (fig_breakdown_real.png, server_breakdown.csv, n=93): prefill_compute 620 ms median (95% of overhead) rdma_transfer 42 ms median (~71 Gbps effective) other overhead 10 ms median (dispatch + params + signal + promote) Mooncake transfer is NOT the bottleneck. Even with bulk RDMA the transfer cost is <10% of prefill cost for Qwen3-30B-A3B on H20. --- .../results/interference_data.json | 1 + microbench/lifecycle/driver.py | 15 +- microbench/lifecycle/launch_pd_pair.sh | 2 + .../lifecycle/results/fig_breakdown.png | Bin 0 -> 147827 bytes .../lifecycle/results/fig_breakdown_real.png | Bin 0 -> 131881 bytes .../lifecycle/results/lifecycle_data.json | 1 + .../lifecycle/results/server_breakdown.csv | 94 ++++++ microbench/patches/analyze_events.py | 273 +++++++++++++++++ microbench/patches/apply_patches.py | 285 ++++++++++++++++++ microbench/patches/pd_profile.py | 57 ++++ microbench/plot_breakdown.py | 162 ++++++++++ microbench/plot_breakdown_real.py | 213 +++++++++++++ 12 files changed, 1099 insertions(+), 4 deletions(-) create mode 100644 microbench/interference/results/interference_data.json create mode 100644 microbench/lifecycle/results/fig_breakdown.png create mode 100644 microbench/lifecycle/results/fig_breakdown_real.png create mode 100644 microbench/lifecycle/results/lifecycle_data.json create mode 100644 microbench/lifecycle/results/server_breakdown.csv create mode 100644 microbench/patches/analyze_events.py create mode 100644 microbench/patches/apply_patches.py create mode 100644 microbench/patches/pd_profile.py create mode 100644 microbench/plot_breakdown.py create mode 100644 microbench/plot_breakdown_real.py diff --git a/microbench/interference/results/interference_data.json b/microbench/interference/results/interference_data.json new file mode 100644 index 0000000..c93dd0d --- /dev/null +++ b/microbench/interference/results/interference_data.json @@ -0,0 +1 @@ +[{"D": 1, "P": 16384, "rep": 0, "prefill_ttft_ms": 1551.6944919945672, "tpot_baseline_p50": 6.0938840033486485}, {"D": 1, "P": 16384, "rep": 1, "prefill_ttft_ms": 1538.5930379852653, "tpot_baseline_p50": 5.923410004470497}, {"D": 1, "P": 16384, "rep": 2, "prefill_ttft_ms": 1537.489719048608, "tpot_baseline_p50": 5.858020973391831}, {"D": 1, "P": 2048, "rep": 0, "prefill_ttft_ms": 138.6167829623446, "tpot_baseline_p50": 5.895276990486309}, {"D": 1, "P": 2048, "rep": 1, "prefill_ttft_ms": 135.26123203337193, "tpot_baseline_p50": 5.84050000179559}, {"D": 1, "P": 2048, "rep": 2, "prefill_ttft_ms": 139.52087302459404, "tpot_baseline_p50": 5.846929037943482}, {"D": 1, "P": 32768, "rep": 0, "prefill_ttft_ms": 4565.813232969958, "tpot_baseline_p50": 5.815482989419252}, {"D": 1, "P": 32768, "rep": 1, "prefill_ttft_ms": 4564.696346002165, "tpot_baseline_p50": 5.884206970222294}, {"D": 1, "P": 32768, "rep": 2, "prefill_ttft_ms": 4559.26972796442, "tpot_baseline_p50": 5.844508996233344}, {"D": 1, "P": 8192, "rep": 0, "prefill_ttft_ms": 592.7710899850354, "tpot_baseline_p50": 5.8953959960490465}, {"D": 1, "P": 8192, "rep": 1, "prefill_ttft_ms": 587.9120359895751, "tpot_baseline_p50": 5.859997007064521}, {"D": 1, "P": 8192, "rep": 2, "prefill_ttft_ms": 585.4344139806926, "tpot_baseline_p50": 5.852615984622389}, {"D": 2, "P": 16384, "rep": 0, "prefill_ttft_ms": 1542.8870850009844, "tpot_baseline_p50": 6.665366003289819}, {"D": 2, "P": 16384, "rep": 1, "prefill_ttft_ms": 1544.4676239858381, "tpot_baseline_p50": 6.215651519596577}, {"D": 2, "P": 16384, "rep": 2, "prefill_ttft_ms": 1547.6729370420799, "tpot_baseline_p50": 6.198290007887408}, {"D": 2, "P": 2048, "rep": 0, "prefill_ttft_ms": 140.2357509941794, "tpot_baseline_p50": 6.308203533990309}, {"D": 2, "P": 2048, "rep": 1, "prefill_ttft_ms": 134.00237500900403, "tpot_baseline_p50": 6.295669532846659}, {"D": 2, "P": 2048, "rep": 2, "prefill_ttft_ms": 133.65825096843764, "tpot_baseline_p50": 6.221923045814037}, {"D": 2, "P": 32768, "rep": 0, "prefill_ttft_ms": 4562.765512033366, "tpot_baseline_p50": 6.217204965651035}, {"D": 2, "P": 32768, "rep": 1, "prefill_ttft_ms": 4588.010042964015, "tpot_baseline_p50": 6.249245023354888}, {"D": 2, "P": 32768, "rep": 2, "prefill_ttft_ms": 4575.238945020828, "tpot_baseline_p50": 6.3047730072867125}, {"D": 2, "P": 8192, "rep": 0, "prefill_ttft_ms": 591.6664049727842, "tpot_baseline_p50": 6.216273992322385}, {"D": 2, "P": 8192, "rep": 1, "prefill_ttft_ms": 589.0314219868742, "tpot_baseline_p50": 6.219989008968696}, {"D": 2, "P": 8192, "rep": 2, "prefill_ttft_ms": 589.9350599502213, "tpot_baseline_p50": 6.202562013641}, {"D": 4, "P": 16384, "rep": 0, "prefill_ttft_ms": 1548.318826011382, "tpot_baseline_p50": 6.581096502486616}, {"D": 4, "P": 16384, "rep": 1, "prefill_ttft_ms": 1556.7272949847393, "tpot_baseline_p50": 6.632126489421353}, {"D": 4, "P": 16384, "rep": 2, "prefill_ttft_ms": 1548.7530149985105, "tpot_baseline_p50": 7.3001839919015765}, {"D": 4, "P": 2048, "rep": 0, "prefill_ttft_ms": 141.15837798453867, "tpot_baseline_p50": 6.574946513865143}, {"D": 4, "P": 2048, "rep": 1, "prefill_ttft_ms": 144.0463720355183, "tpot_baseline_p50": 6.539304507896304}, {"D": 4, "P": 2048, "rep": 2, "prefill_ttft_ms": 139.0016739605926, "tpot_baseline_p50": 6.603387999348342}, {"D": 4, "P": 32768, "rep": 0, "prefill_ttft_ms": 4582.872495986521, "tpot_baseline_p50": 6.574522005394101}, {"D": 4, "P": 32768, "rep": 1, "prefill_ttft_ms": 4584.32119601639, "tpot_baseline_p50": 6.611509481444955}, {"D": 4, "P": 32768, "rep": 2, "prefill_ttft_ms": 4593.307823990472, "tpot_baseline_p50": 7.247850007843226}, {"D": 4, "P": 8192, "rep": 0, "prefill_ttft_ms": 588.1257400033064, "tpot_baseline_p50": 6.58076599938795}, {"D": 4, "P": 8192, "rep": 1, "prefill_ttft_ms": 593.7537999707274, "tpot_baseline_p50": 7.294313982129097}, {"D": 4, "P": 8192, "rep": 2, "prefill_ttft_ms": 589.4501690054312, "tpot_baseline_p50": 7.346310012508184}, {"D": 8, "P": 16384, "rep": 0, "prefill_ttft_ms": 1564.8929480230436, "tpot_baseline_p50": 8.545519027393311}, {"D": 8, "P": 16384, "rep": 1, "prefill_ttft_ms": 1548.527927021496, "tpot_baseline_p50": 8.990490983705968}, {"D": 8, "P": 16384, "rep": 2, "prefill_ttft_ms": 1554.4496020302176, "tpot_baseline_p50": 8.913785975892097}, {"D": 8, "P": 2048, "rep": 0, "prefill_ttft_ms": 138.16959800897166, "tpot_baseline_p50": 8.98516149027273}, {"D": 8, "P": 2048, "rep": 1, "prefill_ttft_ms": 139.2026540124789, "tpot_baseline_p50": 8.52142449002713}, {"D": 8, "P": 2048, "rep": 2, "prefill_ttft_ms": 138.62996903480962, "tpot_baseline_p50": 8.513206499628723}, {"D": 8, "P": 32768, "rep": 0, "prefill_ttft_ms": 4627.19459598884, "tpot_baseline_p50": 8.519548020558432}, {"D": 8, "P": 32768, "rep": 1, "prefill_ttft_ms": 4593.522923998535, "tpot_baseline_p50": 8.951486961450428}, {"D": 8, "P": 32768, "rep": 2, "prefill_ttft_ms": 4582.791887049098, "tpot_baseline_p50": 8.94658948527649}, {"D": 8, "P": 8192, "rep": 0, "prefill_ttft_ms": 595.0289380270988, "tpot_baseline_p50": 9.004380000988021}, {"D": 8, "P": 8192, "rep": 1, "prefill_ttft_ms": 599.6217179927044, "tpot_baseline_p50": 8.510532497894019}, {"D": 8, "P": 8192, "rep": 2, "prefill_ttft_ms": 594.1418160218745, "tpot_baseline_p50": 8.511811000062153}] diff --git a/microbench/lifecycle/driver.py b/microbench/lifecycle/driver.py index 125ddb4..81413cc 100644 --- a/microbench/lifecycle/driver.py +++ b/microbench/lifecycle/driver.py @@ -88,7 +88,14 @@ def make_new_tokens_prompt(num_tokens: int, unique_id: str) -> str: async def seed_prefix_cache( client: httpx.AsyncClient, url: str, model: str, num_tokens: int, session_id: str ) -> bool: - """Send a request to D to warm its prefix cache with num_tokens of context. + """Warm BOTH P and D prefix caches by sending the seed through the PD-sep proxy. + + Sending directly to D would only warm D's cache but produce block hashes that + don't match what P later produces (different tokenization path). Sending through + the proxy makes P do the prefill (P caches), pushes KV to D (D caches with + matching hashes), so subsequent requests with the same prefix get incremental + transfer on both sides. + Returns True if successful. """ if num_tokens == 0: @@ -318,11 +325,11 @@ async def main(): print(f"Prior context C={C} tokens") print(f"{'='*60}") - # Seed D's prefix cache + # Seed BOTH P and D prefix caches via the proxy if C > 0: - print(f" Seeding D prefix cache with {C} tokens...") + print(f" Seeding P+D prefix caches with {C} tokens via proxy...") success = await seed_prefix_cache( - client, seed_endpoint, args.model, C, args.session_id + client, pdsep_url, args.model, C, args.session_id ) if not success: print(f" SKIP all configs with C={C} (cache seed failed)") diff --git a/microbench/lifecycle/launch_pd_pair.sh b/microbench/lifecycle/launch_pd_pair.sh index 26484d9..9f9f549 100644 --- a/microbench/lifecycle/launch_pd_pair.sh +++ b/microbench/lifecycle/launch_pd_pair.sh @@ -32,6 +32,7 @@ echo "" # Start prefill instance (KV producer) echo "[1/2] Starting prefill instance on GPU $PREFILL_GPU..." VLLM_MOONCAKE_BOOTSTRAP_PORT=$BOOTSTRAP_PORT \ +VLLM_PD_PROFILE_LOG="$LOG_DIR/prefill_events.jsonl" \ CUDA_VISIBLE_DEVICES=$PREFILL_GPU \ $PYTHON -m vllm.entrypoints.openai.api_server \ --model "$MODEL_PATH" \ @@ -66,6 +67,7 @@ done # Start decode instance (KV consumer) echo "[2/2] Starting decode instance on GPU $DECODE_GPU..." +VLLM_PD_PROFILE_LOG="$LOG_DIR/decode_events.jsonl" \ CUDA_VISIBLE_DEVICES=$DECODE_GPU \ $PYTHON -m vllm.entrypoints.openai.api_server \ --model "$MODEL_PATH" \ diff --git a/microbench/lifecycle/results/fig_breakdown.png b/microbench/lifecycle/results/fig_breakdown.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ad4a3a43331385b15e538c301773c0ad8cfd12 GIT binary patch literal 147827 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

i3-ji> z3Z^x7>|#Pe%ZGCu&$gR0r8*K#c$?Eg?;{(kh^(kDyc#2wB>pCFa4u5stN4K;IcXXmliO zNLkIt5f*yW#*G@7x9L8uBz3}haq<$}zMbaVAHy=VMGs4zlnwi~8NRVAn z1QELRE$6$xMS=wsf*-T@hP%JZvoi0v+ba=u&2EnIp;#cKtSDk z;xY0@Kr>op?_aHzR;$v&NxI=udy`v*bh`MxIHLa90qqK@Q>3YLnC1 z-Oi7%<-|Z|{Pg;rlE|?ofP4~V&ANXEH678grMAJzQX%7FW)GA8N6S3&q-(9mE0ic3 zCSz^k?a^`4p6*k-67DAPU8~_zVBDWnGvFJBpU;Y`jiL1EDRC9SU>YaD!Q{JfVnPTz z>VsSLFl0s|i$brQ^0;>0DwJ{2u!z#K={_{9@=rH76r1pna3Ii)^-~VAKs8*GGp<)X z2(6R_Q`SFS)Bebp{+0Fu6bhHa^?X1}GG#>-?bjBy>1Nwc=ATI)o+*)r3f!>oq^V`d zA`U)1p!x9!$w=)V?8^Cl%-eVc3j|K_JJ{n_;`xoM+(IwE`C4lvY0^s# z4=>9&y){41Q2`wX`B%3z|7kNmAUUepC)6vvK2&Ao&8`|6ldNeLeiKZei3o#?j!uq0XS{zt>2!Sjq>pF% zb)poY6ig!UoruqIH3qPrG?{uYyvey0xACPC?(p;y$#%f!z`K{k<&e|+} zuG=tr@IUI*2`Ai2{*-q@kn*#euwesqwfWyVhNzso6Fq4lOZflpp7DTY-jQ|vk?aQn zQR$6&>LzU13d8^r`Jq;Z?M%s5yOBR+b8gU;WG((lD>M7%B~vg^wV(Y?>{XGI1PB&O zHx6t3E9@Ppq{wYxPan;nTSBNVC|07tinH!z$R?x^R_ZRE-M)GAW4nicH$eLUoIAt& zRa^)Mg(!ND7tL|=m>#uTZ`q-HE|9NFdS)Iu08?i}oE2_w94u^KgkHMUTi|CdAbq#KWR{W6_9> zKrAfztIP`1C#Eb~{*8AM!*><#S)$y@DuH%TSklUy(CYN<5m)^pCZ9IpG2500b;0IH%H7OTUYGjP?^BjmaZ(a&ihr1WJstct5xggtM?HQe9sB z{KOW%Y9DEVGZgS79*{|zNC1K`qLZjgvUm(}6bkbDKp`8h96Cudyq>K@_>#=K$}@qk0@8O03K|X&H-kY3`fq` zIorL$OymtvQ1VNiKD-!l5f0Drmw)rJRIM0!_FQRS$dy154WY~xV3zudcl%fL<_|fm zONEXX%!dmeg*U6HECjTt*0J4F&&vzfr^TFw@Ttdlu}RI=<_7(;!12IpK#Z zPy$zG@uQPRTWVW)1)sk&YvxQ)!tH7)Bp+=7bG4k2hYtC>0aeZL3C*%wv?{L*z z-q~Pe!W9#XPJLRmxOYrURkB>yb+hN8~A*$aLvz#5>?MxA-XZ zPnxq5V#oM#`wrCIOF-Wf^mF_n9YgqEZb~+vSfqkz8PvNwTtX`YVv$X;DZxf`D#9fQ zLPfv~P4(L*R52)ZEMTo1dO_4EYbc!Ui#)0-1CR~ue{DxZHWZD6pp4)YY_Xj#v?!x( z)e0Qjhwl%*n&3&OXE=O~s5Rhq_Z2@~<>;6}uF_#lTizXBy!$t7*g(N|oSQB1H0^Xj)SR2yi06ZRatbZ`fIo1qX!pfB9_(R$G*0Pn(l1suo@vMM)Yp7-gIpBaC<6 zrS9($L4#;Zr*E0O<|2Ydv*?+F1nrrAdZFQzytQh;vJ!^FXT(Q?J_pGuM?@=1C7>Dk zbeyV*!m1xWe3&8XDEUA@eeed(1+RR9!TF@c5iSn2MQ?kJT%NNHKj5uKsfdO(4Cvgo z^x~Ilf!XU_S&nF`q<;Y)p?jSWD`Nu{DSytf2F|2ti@9BR2?TdvmvPF?>Q1?}J>lU1 zWLnJ4OvN*q(dTgPjlck+X#u-iveXwmL0TKo0M2AF+ z%HC8exQiDrmKCPQ@Z-Zjop~{4_8G(eBp2#xO$`kLVK3QQFMv?qwHj0NuG7WYnXmN9 z(;RngQrkBm->|bna+3ikkl~RD`5@e&iaajR{kdciky+5X!XcLx+_61%m-bOwP0}vy znkHqIXb!^yfh`iDPEo2#R`)23bRBYK(skLuqk(l%u3`oYVqThvp0+96ttU9zks zQK!?+wEWLi#*XQg|Xw5%+F{dERBl&k4 zaV}D~(*9}#ND#dIPU`{70v_~Hbbmp%W1{?x;Bf*HlTTum>l=83R?HMegTt2bKYErA zSS2Y87nLG``8uhDMI-cB@T4KJ%6}MmldHod8>8JL0vtep^H2NWtAYw9qY(v7Bi55f zT}4I%x=&4OT+;iWAG&0GS7_9K{l^CN#=rjO|F`m%|GPHkcBiOXmpsO;7#|rucG&pL zR*vTer(Hhc_UHe690S41Z}D%l+8m1yu~AxG=i%g~Uv}82UiBEmX;wEBnMLNnxlv?f zG;@3JTaPa>@qWum0SGyOHa7+&Jj7{W`eDuw(LWFY+o!mFGdWZwV_#Ystbq?E)TnvO zOSN#h5!HbaTIVU`q!z7O9S9x{GhLh!vYm0tUV3`Tg{mEXf3%LuF-yBV@6$@DrJhil zbOW;xn*~7JNYRrRYF&H^FO`=qAMWL{(>P*) z8$xc?LKj8DH0juh%>D3!5|lanMW`6Zmn`${p`%kCrU#*CPH%T7*8}mTcUI}G0KS42 zT^$nBu$IZ)yUq|KhtqnK+wi~Gd-Hg#^S6EYDpO6iWD<#F8i(&X^}0F zrLvo8TD9o16+RTeJVSh^z}7A+!-91h>e1+3@Qi z1zCYtmN;=J+G3(uV{2;!vPpf^BKImjqxC~5FftQwG&m^~1MrKjIF5J+`mth4n&nq0 zLw=JMpIi#{OIRA%-Lz)GE^zLxIYFfvl6Vea;&5axrhNPcJE%NE0#YP>k+}&d0*n~K z!Fyc^&Yxrz+yXTLw6K{qX^y&398!$QNruw-O90+lXxV-b6B={n)k zYXZv%(x+Vo%L;d93-$KV%wVSlKoAvy1~ZjC;)k7v=NM5J6HlIUZ9f_NIKs@aI53-D zk1mZ^FYvbXr-{0eP>erE-x!&eOGj*o?pJCp+Tk7Z;$#7-`Fl^pL2Mj91XunNsKShp zreZ0vF=Krc@J3gMU`ZSxxfbxgp{^9=%uqMtBn+h1^&+sQV4mvv{{3+F8>(~X;9x>} zOii$Gmm6PKoyYu{lRS=som6dBfp=euA4PEIO-$6!(xaxu0cGc0TYDSJn<&vpA*3?fvEa0jF@aE8;k9h*#5t>WsZoc9s))i491PSi(+*Ku zko@4mbND?24=ey8bL42biG&$42FinoR7T(_G*>_dbZ$NSf+ZIQaE_??^p~i?S}2{s zy7l}hG}M4L7Ou~m_@v+)gww%-tO0N|w(5~QV`pUl;JEEX_38syi>hHrN`z!&sw1Mq zr@FxDnpPAz2;0GiKGF|3(Ig%`?G|* zxYQPG7Gez}OCgwwh~>yzlD)LYio1v_!|Zs%zePvIMkM2km|dAtMffYoX) z%yQ}N(03l}d`8@IFiNx&Ow`eEdu}38`92APXYl?&C(;K2Tnh;v+U)Os$ZyAVR6-Fc z?YZ?KDa^KyN3b14%R=Y7N*DVE!`~4W!p}DeQGKwo6fb{t&bvJ9(dA z7Rd87It|o;m0QnDr8Wf0c;nKJY-4%6SiBR!@(nt|8KfkKS}MjbsC zs8pq>g8W@YS2h$|-v#{t!hUs_y`J z)B7X76Vg;@lwwi2nES`P5agsEFG>eY$G;dPqe`QBaJ~ zUkWA`6=8%nqjV{KaO|MJ^S@_5_&bM!s7**agpfr4pzENt6?}pMU`e7_*fv#fU3Lo4 zU4S)09b&?v=kiD+17_pgHgFxXqt*xQB76xB4IGCOGh9Nqp$hG3^0!38NuP>kJozDJk0USvDw}bFL8`xlpdnP~#8XEp zm?2YhF8klHSLT-g*-~k3ZLI-7$_wucKSq)0uLw2f>q3x-ha-^yB^@(%a=maXK&h3` zogikT%kUTD$O|(K3=F8oLk5p7<4AGwoIzdBiKyc_$a_T)p(`I8yPe}JW?4#~_NlwO z1lWNcx~!2OI)M%lp-2m~TWZF#2J{gcQD)pm$rOQ#(xExv#B5;pKr7y%*jLBdoNM7} z6Lgh>+$aJ;R~kY9!awMdp|FOQssKT$5hy(Mh`Sg38&-(Ihw{l%pd?{u-a;5@qgRIG zDFFg*g3YLPh78?3ww8%hBi_lAq$h{wu zAC528X+ueRsBlMr=wCFbT^p4lOI&c80}*xzjR*X$0XkK@{En~N*KJ zMxYrIyi+GOfIwqdIE*L#6qU<@b%&lCrh*4${{;c;5}QmyB{8d4uN%rYNrMMgnS%pZ zJ{Q>+5go)~p7JVn5c$mxWIDH*4amiEUjTQs@H(_ggLAGExpq?{`W+jPf|st$eupl6 zY(8q5h5VQ*bHp_DME<9EK5)&{*~jp_&bvqoActJ5Ag*0|Efsr`cf&lKp(ixJcxY% zA`XhRVplF)5C^rjaAo!blfvchTSD@akrzEh&e8P=F?2zDd;2AXytw3%w=iBv!TkUy zl`Qvvbeq7AlmH+ay!;ECot-@s_7zLj0wQv^>7nNaGURRazp|WLLxWtz6~s|Z)Z$>? z-t`Hc&4pB@;v$i78X34CjXH=!?jnfLPvN2B?%dl}ole~QN; zdk|P6UOEn030QL{&27_k7s^xJ^5x0O>|J0Zxep|-#!6HA=rmk+Y6cboq*$z?VbEjD zY;A1TL3giL(}gBdC$R9j>4Lpm4yH`{+*{3~n48a6yjckHk*7Gy{C&|- zc(n@$DDDvq!~?N1$-QlVVsyo|ba$j!d!nk4w0x1il5e~3^2pS+ybT>wRJW7|dJEkb zbOlsn+*7@l_tFl)Z}@%$?ITCUaFXLi0z=@v^z?!8kon!T!!MDlbfT-duK&xI1&d%R zN-O&5lPB}>z%CJ|F%~iWDa>GIFM3=&?DDn#{rE{SXV=GK&`k_ag)`%4_a2U7QrN~} zMk!ipRXGrxLd+CK4~d6lcd1VB{$80J|5d)!+vru2Hd@)tm(E8AOw!qCFC1vH*VZu z@8xv`I*2%JcK9uj8@7(mPx=0-P`GH zy>Wk{A>-0ThWJ_Cq+`{vDl(cVGA z6m162e?bk(&!UsR)Xm#;1V`W87fM03s0A!sTmWWz&hGuPdG~OC_V4r^Y{KQgPzUePHr>1L20C`5kg-)S9Z@{l`w6 zAa=~0xpNQ4R@=IOWLR;dVF+&=oVP+8pg`TWyW54l4Fn|3@02m3G13TX)=?{IuywE| z3$U(c21s(iZox5sABkNEM2R*nUjUQ815#jCbw650MuweGON@#l*~YdY0jb{W2-Be6 z5lW8=MWN{Powv1$n%3zm^0<`fK*f+D|Ifa2@$JT)jyOH2;X*|VTHYj+T#sIrxljIl-72|ygT*?RAi?H)KJ~Ac zJ6l_|AtHc}o#N0F0Zw>l$u;)OyV1^q3Dw*|7GnTVz<3zjfS-PhPO@r|lgY|f~%>yPq50^1d> zX!3JOS+nQNkffm{@X%7KN(Qr%;~EpnknyGw}kD45od0 zw*5qA?-tJ+7SDXE9ZeNF%CjqyOh-B+Hx2HASC=Ba8PMNXkz|6vA&P6cUGGfiOjg3F zhu?(|;eendOnM^nIz+zIwbIzDfhn|iK}|TiP6&=KqrWs}o#%0zhFn?$__8$y3;}po z=r{hEtR(w!yauLBD_+Xdc)eqT#Q;(n$#RT@F1)2b=n7bGH!y(vCQCp+#d_WC^%o=s zYB&G*V$tR$p7zEC&1U~Li`5(2X-SyaWkcG+dwLzn9n-&y2w(;2#sf2A{AIN;32 zJrN*+c>4m-(1C!KfduW{b@pA|-Co`Kat9Qsv||(dTGmGC{*&}GN4%X}Kk;609eQ=3 zP4D8qKV*_?Pq%cfa}FGtAhwmBJIe^m6fOSSBzZ@{FN6v0nH(5|EuktGSUZ)c zb0qix*;!fqh3$|eY7?+WBSq+x5_yw~wri7QNDe=UcmU1+{*_^4tbdSCzWKnxgW%-s zW3eH$GBhwqG}C4kAwfY)70^oy^>l!uS@>MLB8Jmi7^!DokgTQXxJ5yx1?z|1{%EOH z_0jaLpSdK^skoZTd=PSx5hzfa0-%UXDhfJMM7bMhW(F)3k~ z+g7jZbFxf9?CXp0-~$Dw6Wp}z=#c5+c1WR1-0X7Fs1u%s=uC`s{~@qHRo$&Wg(SU3 zE@UdY@5s!B3(Z}o=&>Q(`Ob`Ziw(&O)qC=#^8oajEsz4n$^SsHk2+QB9+BY}wIuOP zW^3Dj&qkKzsdXtBh$vy(gpZ?w&>PJ;N%q|@@h@zMs+xG?D>&MFONIoQ{I!L}*MwDM zq?Qf=I5Q;%*}%0N-5?AU%pO?loP5jE$!JSpP1Y z#8coxkHXiWsFe1j1h3#TaRxr%0$GYS1csT`?ISzH6pP%>BjFg&!&4e>tV)h1xDKQw zUb*+d0cCTDnZ0I>8t|7U$DSwEO;-xY$Kn_uXt->D~H zZxd&<$?+l6X8f;!3hb}9)M7WOJXQY+;L7C?>3g-N)H`s|kPD&XuobV`m#}95ZTRNx zXouc=7mu2)G+dL~K0-- z5Wq>17WF1sC=j^-6<1*Y7iEMnw2;dQ_(4A-47@36`%fGco;UIS%@NGw;s*pbWEU2W zE*&6Flsp1cRi=iOySqEa8%84M2#~SY02btAcE0%uvv-pN@4xlAC=CTYju)m%@PI}B zB?39|Zah16u*qjus}hkJ`8j2&cr!XkJRqMWAd8N6pdO^WyCCc9g;YzI$O(w&09}N! zUL~tQ9P`U>#F5-aj~9jxa65srI0_to0(7A0b0wYO|yV(^n>((@Qd`IL=&1ee@%wjPpA5tUS206DEX*NpFT3UzyPp1 zu{Fu21oSDi8D~SsihV?l2_fk%U!$`;`u`qB$s$8z@9tK@vcdBOH<5~8w3jW{zO!H> z$8N7p-v{ml*;v6SbvdqYB|3oQVnMww_sq4hY(c6LfmM&n&4&^JlqAByR7ho+Rb7ZH zrhXAQbRe#nqlPAq3SfI83`Ay5VUY%dRELNoX1Etph=N#13ZZbE9g@0e_RKQ|!?aJlZ2jdW`?{N&4BUqD| z9aWeRT__SO!@D&3Qwt2STbgZ<$Zaj|#7D6N@99$&reEZ>pW#`4qcVT}59b7QvBav8m z!k{=4{g6&o+7+2Y0dQTQV|B}yx3jvsg*ypr!MRV2%WgcuG;j@JZ)Fx2^8D*gaPtzM ze`&`-y-B|}W1yrH+pF$I9-F?DwDua+hIbI|v-;hWI@&H3Rt4_!VBIseTGV(v{~8Qa zT8O!Zbxp~bu==fSdS_1=&jwQyRRWQ_$PD<@u57X%rv4(;nZTlpr1=P-wS5UxPi1PS8noiP|QNBvYXUtdld+W#36Ka!mzj_5$i)QCC_$R@cK z0P-(FGFL3UjdKeNh0quW@cs18ehS(z!AqSRI!PhgIRU=Q*k^kzg%t|t93Bo)@UZ7v zFu=DEU438)H%V^``x?n+%crhY=#F`mEgKA-KXsz>r))vfMPKim!N|~rh2PTc5C^OW zCo*CBw-0Aztc&|^7_%%rOl^y7gkvIeJjn~?PJ4mdHJz0s~%#;hW88dg( zkKF=;;W3`9)d1djaPE^P4F>`4A{=K7DN+cK`TCHzG|P`$dThGsqVM1Pai0w|4&(*` zMSvQP(7?(^=l~GkAuEo!i)uH2BjP(mse!s-jE`DcTwXD3QfL+;gN-=x+FmfL3LdQ< zsL%NLhV9EYfR0BZ9Ux9PNLRts2|0r*)e4vHjmr=a9wV0HQnK%%0D)?LO?L6@C-XqP zLk5LCt&9du5zazba5203(Q`0ID+i~I7m*TyLzyE%LeD}eYXyU$_>HKJ&toCaT|u^P zw1d!0x%z&X*rAAaOcH8QgPmL%4btHz4r2~=Bm?Wj;JVQmKWRGSykW#wHV8gx>3LYb zEUZa)-G?mE^g=(dY*ieGBqS!CHY5`WU3saGa45oH2HpDGq=3fx!qIuh7+qTohQR@_ zBml1>i!GT_+lvzdX$j^c`MxD?4*mk)>2&ni-)SVL1iQQ&bscfDsC@?XAXoFpYc8&p za(D?}=m@3FkHh6Ud4zyW{XEqLfe_T@P-I`Bs76RS4?0>oR&ikS&2jS0qZB3`YM3ik zf{5=q6c1;Q

g!!=AJ$av}ltKTAZaotFA{`=tO8` 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

H+V8tqQLztmM~vj_Adv&)>)=7I8cm~8H8`_G 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

rFMV;<;yn+Au3mI?#t=sKj@F_AY?KBK= z+%&8y@m)=ns>Re&Hkx8gXl9t0RkeIUc6WVLlP1Q(g6e)qYS#{(29Hz z!sYVa21K!}m8|mZCLK;Zu#VRcay&`Cs%Zy_jab&mVVD`jibC2%!|0V)zRAcq$UW!A zYM@Pc^8l)a7*W(OV$=3|$^fH)qH5K-|4i97t$Os8C+pMM1`~eh^Z=k^yf8r?im07T35$5*TxLAULO+S2jBIJ;f|^B0iBcD4A+ZWfU6yK(st+I z*cqy@KvB8ZBjNTY~!gQS9hQX;m5iCaZd zQc_w-^=UH*^+tHckZiJY-wNZ`0mdzSPagj!x&m#vc)kar_@)!xdmBaiPI-ztE#F( zagOxIy|y?4nvTn&J@57*_au|L{k(T>!V-sR<_R}*iw0g((!X1t+ zan?%QeuT1eJ!3Zc@>B1J2H0q$~LbVWR37>u4QD+sQ73REm|kMzw@AZV2!Ma z9*_@N%gK+`%E2`R-1c8>=SHAvTSSTI<_l~=i zDrX#wvf-@$mOy7U7G^TJaH;xqjJjTptX8sn^TYS<%wH~M?|bq|Cb@e~dQf)bT?rmx zp>pAB_dd-ATKWfFc9k(pPgaH}PfFJb(Hnf5JO9h%=h>R5^8;zKPq|Mfe(cF8?ic0n zak7h$Jz*CuS~Tdzd@90ao2$9u(<|2lKeRB6*X?^AJLe0$8qz&_z zKHQzn!145d_kG)+YG|o@pIKf`y~bbX$ED;GS$D_TOhe@@I=VZG1ZZv$o^MLF6vaa?E>rB@TWqFI?dwCm`Ng$ZNlNW?X7PG1|=BwU&Rv zUOUE2Iw+sxVEjak9(Am1U`T-JWQ>E9gE>u+W<$Dm5aSWEaa*qO0i)xax~Hkm_wlrP z_E|5Mh>AU2ays0xp<6CU{l}As(xLr7te)qdheVY+u-^RpHKU4?Wf!CU6hYb z_t>cfYs2318!Q3qq(9h>Bq|))&SJs_Q-~-77{$f~vQ#P-a2!3dovWWMczz9o?KgqP zPk+`qpl}?rs2)!UZ&=6jub zbQqlU4kv&5)M}zL&p~P3+%iMU$H#Za+6BHj|LdpIjJytKPWoB6jX#5}6LBK7n(KYr zkr1)SPYj}PHsvb6jr+csB{!WL$ldX;Yuy&4Zz)IZ&}6rX+jT;X)239AoN-BfO?8oI zXGVkE{fUhr?8fqCj{N(TW4wA#BQFeiZu$3Lzie+sGvMDpuh^i7{QKws`CoOi;{j** z&5<+vMld18b&T6-2lWk#7c+d4;EPo5yd0t;v08rBC9C`mbe)d3eXs8bQ6lbgzfU2A zN8Sr~c;VD~m=h3-Pb(bYsgE;1oeGIz>K3nTC0K>(GCuYFn*wu-9H6J_9)r~K1V`?p zN8*WJ8=Ry3w+BhB!|O+8U2sM)J*>Xi7Djwz^WbI`-yGDVe?%nITcW3?MYuxB6UKe( ziGL%U3d!-aE7xvpC5LOi3X*v`Ne-U9#Y|27s=h@qvjp(LF(L&hd*sal*VV8#7T={3 z>I-88oXn~mA;U#HBg0|J7dqXO&R%)r)rNVBuWw^K?3GI+WV3$w96n;$K#YbF2v@VG zVYoKZ>^$5CXSG}c;X82TXF=B^9c{1eJGNPO6ZgauCr-pMdE!(SSOCge!p-v4$B+9u z=80V}@rq4uzP^@(%)|X!cVN`_Lh+c=kypW*HrnuoNP+W9EDVJGhmXBdBPLPsX3T-5 zt3McnV^PpwN4^`teQX9My$>giG?UHqVF)t%>s3(uKte?UZr{yQy!Wj(mp^0S5+@Id zNf{#y#fQ_!En#1|Y5o*Wbg5}>X56|$;5zK3QV{y z(k?J^^o}$phH>!ZYYg4X#LU7V_SQxlN7NJVSbRAl_<~=uDHC;sKkzr4=UGs2lyHX> z@CX67g&92w>unq#5qdI6&HIIdjR0^gG5jZif zgC@UCxnNF7JVw1Yn`g5dg{r;YzH=L&vXRm5=*+oml&}xm(kT?VLZu^z&t^9{v;mznrg656ljqqcIyNN8hhc5k^Eqt|Y>neFW z3PS5ZBz!mQJ-3C8ULWVX(md?vhRMSDGh1KkS+(8TM6854M;75UO$_>oRdl&TKRBJb&c_@{RGSW2c_Q=_VHTbL-GjYYfzchzCQ#Ny`r_7g;6FQCWn(qm( zpD|Oz2iARgzQxZ~@rcMBPTOyXdu4}zCgQ9_*4rzH`J~gik z%1#VZiKq33`B>kp>y6FLRhCoJ(;I7DB_$=}42#z-AfX=-V9SHAr1yvDw6B8-JGRNA z&vrg@Yy(VF;CeRLk2~qS2n_Ju6Jcn8M*4D@HBMV zjy;F(%c84RogQ1k-NKd>tL=f(QyRn+lpGe@ACndMDp2BDQOCNT&yY_)#$~r2ao@K!sBm0ho5ZP197_H6 zJPXbz&h*e(>^o1~17BA19<*ro=UE!@`D6VHqdP7*o&LI6(3Q%@vOyDWgNPL-%44`k z!yap?Lw1Q~yt_# zIqUd2uR_VYaVdXa#@Bc5tVxIA=x>K(Vm(fL{YDX@G3?2Qx*r>ie6(;~i+XQ$*kJ6E zzpo(-UCSrlQzJ6rTm8kuYz4VtpNG=c5=XXh$M)644R>Y0BF??;z<-XxjGUN;eLtgm zIqIt1k?$?AHx6i7=oX{N)Pa3ffAnWY66|I{#ZJQ8rY-X^e9KAvpoyE+)oa(jkfaCu z!myBg>4A-;@3urR21LB4s!Z+tZnaUPMBn_T0u=rN}>DtzHF_r*={0{6vzeBBx+ZgI3z##~*lsy@S63=ZXfu55IndTb;{6kKT!u`m;+f0LdZeX>gs|P%~B-1XdY&` z;#lgo>3IUAKaX7^W|2}ThywI9#8Gqvr!aEB_V{#dg9?nR*KXRc>~6+JOA;A81)jqp z3xN5ti1E5e)rfGbM!1Io1sy(fh7|@kaE6A>;Q&>|Ae`=Cutn;umXrCS8H^6g%E}J8 z%Uu4tUiqoWYB*Elp#7rjMi0^!F3|#7QfO#C2VbxXvlxDa%J7wEw!lM+PdZCAG z8l8mBp530|O*K{%7w%n;fBS-W%@Q(6J49x#38yHn&l}-`$%o8G9E)~@q+@m#THE~Qq`x==AjPj0j# zpPUZf4o6Tqlog<^dup0U)+3%g3lsvt%caJZNo`7QvfqrzET<~Wwuw`Y(mVTiuy)~{ z3%N40#j3wOSHHhIlMuL>(MLElv+JQ|ymqBCJU82t8q9M6@J3((*ox!Qk1t2TBMhGG z@^IYNc3-snl$h8ylFL*`vJOmN1v^?i?ELLaML2pz>BVF1_?cHxV*9GSReQ6SF8Fr<;?c0hdH73c16?gH%OwP$W-Z zP-?o-1}5BPj>6hFHJxN>-1~XDiJ2Cs9xk$1h}-;DAI_Ucw%w@taK3|_mJS)3j(=Pj zC#n03ZO{H$_;(B`kHj&MBug|5{vfc(mR2egrX;x2w!wqeVK5bU=1uhvKmu?PiU*M7 z_nMl^jY-RSGkrB5;y?{Zh~d{HH2{M93=Nrcx{T!XHlTzN8$5Cg?iKGq!l%crflK&n zi|QXgeBqKo{1|NqQzy@#KQGog%oR&56|88Oz0L-gNLZ0@W}U2Brd|KJPoF;NR=rk& z4FJxT_lh)rEN-PgcM$x!m+46-0|`^>nmE|55<78nL_a7N2}NSOzEU~}zc}(rjUwmd zbm(TzmUXvRAm*^P)|-3nq8^J5JUFkNLk^W6O6?)cfxBwF$ez2qi=%ctU8C^o-$$=A z(A?34f!B{4@bB0}u`J&C$WUZ#UgAH8`?r(Vg8)4f70mdh*g|^kF^}Q>{=ok5O_zdX(=AC-F_2eOI!qq4LZR&3dSifZwcTbf6InnZE&gNHc!ewv_QMQL$-hHj z6w)E_)CF!AYUZ3bL2Uy(7sS)j{2H+o54%a|a;tUv(*ohqt&0Mgg~Rpm@OL_)*g7 zZbF#%r;o_HbZlFnpAMV=k+zl;AJ7`%F?J z6mG{>DoVENbd%5C=#*_8J&P5&%GJsT9`xsP(8dN$sG6|r~h4`TEyzxVLH90G&`r{)oikEQYiD^YHPjk z+_^(_-hZklIp=$GvrMaKBmBORO4pHmLMZXD>##GnF+r(S(|TM6T$|0(Pvv^FSNOp& z^*7!mj04}Ohtr04{7O?(6TF14%v~Bp^;Ezy1QE*%Mxd;o-(Ljnh;1zL`YGt|SSY^dLK0mIhlaQ4QY8+D_Nt!gfcvtb;JI zHWSFQ9p>kGxy?PSa4D-R8|!c;-+U9}^>> zC5PCXP-Yf~-Gcz)Xd}s#$gi~UNg1rWxA9Y&DTSv8%{VYnsGy)Q=bRS(_Ph{|XoFTe z1j61nJ}ZE#EEaL@FhcQp|MhZKUl(^ekHpZB$jR<1k&`7qR4srwzKNKfHCJj^*Zy12 zgVT;bSg{o(I1jsqDf_3|%=Xm&q<6s(|9p?B>oOopy+L#Em z+VeK_CUCM@Ly{gy2*qQ%#hr)9Ixl>T))F;rzWX|y+PjkC~L#w|12K?-{G#+8l zlIcoPnHn6&Nmcon+|Egj9~jl zKjLK6yL0_!4vvv_zXR>CI4*m}Df0~p{RQvwg4NWzi`t9ucv+$A%6tgzVA>TF;M2Hk zHGHIG0x$O0#i;I{LLmH>(O&xP=Sb=yoL^pDePQCQY`)}hx~I-U`zG=Js04~eiIU2* zgZm7YQ;^zMP*Zuyzwoz`f58lS=%S`(b;}2UTqI33Ev*1Uq1&k6ZyrSr{Q5;!(5h6h zaD7)xd}=DYyl>R*ji|~$Qf+oq`j1$A@mfuz!i;bC4K*30?pInM3__o$rEz#9`hSns z`W$Q7_T}*I&a0gx)(kX^m$<6!xPAjyP%|n@=6us|&ADh(g4#nM4mi z_uulJRmV|ElmVrmZF0<-OOjc10AO2w$GT!?PU(`K{TJd_kj1CkVh~ZfbiF*62x!E7 z8`~DX>QjIJt%q0EcXV;kaz2*W=$BtLU7R>=5=1(+9*MgxD*E|0hx^5OtF@(HD)dh9 z{_B+*Dp~yV4x;jnV83kP2q2nAfnXtL$fSKt`q&x@DG)T*Sab(Hn@}UkxB3`At1GLh~*ZW=kCW>6q$GMQ5%Jb9GmZ#A_QUhWyhlxdBcIWYZkD7$)hke`#EH znH4x{A8c;2+MorJrg#wtEz)CP4%OEW@7}FO9LsLx*SIUgK2RA#uL+BAnaOvmmm6as z61&e;N5nb|H``hf62@}-h$Xb*E9+lEQ`;wPu4<{h>sT{5+F3>FJwRi5l0Am z?|cL@jUxz6^*lQ&Mx^YI^ogny8nL=L9*bL>re5(Zu99E1032U{>Zr#?n>ijftc!F; z?p|72nt=O~3*}suWL>;Mj;=sP#ZKMD=u8++J5JV|r=mdQ>Xm*$?2m4SfYG$bl-$WgFyfP4rAe_46;=o%YbyGFv5lh>8rp~GuyKmZ4^2u4gZ zHio>^>#0Hfq)1$Ox+`I@Ugw0a7|3}n?gjnnVDKPF7XeHGp)l-vb$j}g)NNK%)MupvW+hdY)&$7kT z#X`?-U9_&+_3 zeA99l>2nl?mj?;#l==qP*1|mAB5Uy=thGjJV%#=B_i#r=h%>IxsjR93jaO4w zU-_3>to`6caFEuhgmQV{O#);I$7-`=gT%?sx=*_IQ1(TxS8;KIi<6kYfRnfIFPqfC zqy}U}^Nh)J3s6Zsji1g$EYI=~g$QlGy^+dKZsJ}7IE*^~gdZ^biG67Iw7m{dk%wBi z{;$I@y#vQ5>x--a-?;7EK?ak3HH2j$<9Fj1TT=Uyy1TDXiZtG{%FQY0>EM3MpaD{4 z{58DJm3RFY(y0Oa!FU5YJgc^n219wd3K0dNBWNa>9!B3{!A&+&CG6s-VkZuX1GNIJ z*|l*HTYn2hZCObjDknoH5e3=Vf2Mlt(8K9JDq}lEPbMXRI z@dIV{Z!MEJ7iAL%iqWN|lpRgrp!}-F>-`^z)TUgWN4f+RwF01E1LOKADK1=}XWIQn zff4k}o{Ea&Q!PvOCAazum&<`skd-AU(xK6cj$*>yi5PS{T;bWHzp+-}YoVW=srWSw z1B2}{3nK~x%^8~soy~NeZ$&~Uregpo$1Y#qNd&&WzCJ1&Z6c%>tGeAh;M#iv^l+0U zX>ZcW&QO85_z>^_EmK9TjZk)6X9Iho#_7{HQA=N-bUuyL`+9#*uY`TGQx7Is$tD9C z0^}p$gKi-#7Q%#?M00D_al~5tG8CCumz!a{Me8~LJXC^W#Mx+xE!WGmv zCeHCn|Hi=B;S`F?kWEB_w8gp8r>V8-DzRjaQsHX3un_Yk5@yO=--oy>WgLyrs>G*$ z7|=z?*kPXPcYT{ZLw))1|1D06n8gn-SG$fZfwR zH;r^99i7(qexmuPw0qY3_uY-V%LV+Y&cDJ&0RmcBo*I&pcrR4eF_SEx^i_Tf^E&Ds zTbWO((fh5qpdjVT%llEJ^pKGEU$iSO_i}T}U6uQE!+yYAocEbR$WhH_>UtW6ajaoS z*RwDi7JBVmtE5Q1;dH&pQqjA<^-8zy-n!d4edsOYiy`NhH|8}VnyD48Iu;fdp`oF? zyu7Vw1rTvCB`wW*;D?~Kwe_#cS9BjQCbky^Z}05vJeyXbuD3{ib#dTap02>R$dj8r zgxH5vR8$Xg5bS36J8(;RgmrU!*V=Oye16j7g@(72mH)9jeJ`TpkSW*6+j2jS8yZTENk>Oa;H{Um-) zQ_vJmy@}zL2xzeJfXquh?n^#sf4BGc7LRq6T*$aCin_9kkMDhBmQw(aY&ck7M`vf= z(&Bt?T@25@i=Vde^ZTP2e(KaIISmaqd4~t#B$eGuD2{;u8K*B@Dn%l_@ad}B zld(GncMKTRac@qITMYm-5ByB@!_->khw}%}kjXK9<2@N$}t6S^Fz#|iiJ@8;Y<3Io(NoIQ;!XN3N$ z2LHyf@$nn+)f*n1tGpj_&Zr_hzof(uVyE80XG$kdyh0-=$=?c+UxPJwVveB@{@NH# z-#2yI@qxva#c}HL^3+FPvADatH`pp|-MZD$*_n0ydan;3_8J=-*Km7&5Aa@}``o-Ma7vYT17=yFk>ZQ*LSve^rFSVy}Z1-sCX0obxc@KREwgUE7uNud-xar(A|xzKWx9Jit>+Dt-1_hsv;6#gvXAzjj~>A!(2w}Qy}3^-yOFD6 zODFs54%zkHH+#P=qss5qLP9b7Ul;t;{M@bUG9&s%7Hh~I{2xs0fiQ<5*Oe09vM z#BOG0=I+CXM^#h;o5YbHi%Lp92xv;~-Royk7hM^nBTH#ex;?omIY&3UscA7sU{PVbrKXMlv6aGBbD zs@@3curIvhhd0A!z!rsDmoZtBi;`)&tg50ydx}$mgcYyVz+v%C<6~od4qp}h@=s&X z{5m%+!vXIb?T^o%RJg4-qMH|&oh|nzH+OKz^aFjE-yUzJ8qxdW=NbeDpioPaSpX-X zVzZLJUGSN}RPL#7heI&Vg%PK-X%^>JuU>sQ{Il!)!Bb;SB5d@aAf6bT$2h@9&JcwE@;y zjkf=VDry>W0~y*tfXz23D0%N@9v+<`=Z3HPah84G_h@=^FZ6qTne&NiZ`U^msjpiR z`krt9{$2a_F}$kO7Bo80SgCk{$KZAft*fTxjjd0pKjREAh6=kf9J;_gdQ zR}xYiLqeWTL6Wr@YCMGIvL^tDQF&-w12-q9zmE?c9TPV|Ky|d1WO{mf3S#=LYD6~> zG4fwbqs}#o?BWFLp+kozhMF3tLUFw}Zrs4N=nFkbu^;4ca&odo9ynTPKh~+VX3ZMY z5(|70>%pI*NCJ+S12H|rF*`HEyng)=7Z<5pw{D48G>4X!Do1N)9JjQL%}sp1Unf&p zTRXgop9|GRM@L5`LgpmUhnRUIFw?iTVkNuFhK8p!G&HUhFnz!#JFTIih%TC?o!w4Z z*@*Ao&sy8qtY&1i7e9IC`0+I>SFW@_5uWn-bM+_VGwmH6#T6C1_wN0myzbuj0}NY{ z0N8i~9~`ravbwqoF%ace_`AxOtP(^FJa;3@|1Qv*xsb#9PYkgZB4RwfxeC|kuFriv zM*r~X;|>LmsD%ZWsiCG4ATq_HM`^>u!@az{h4k}QEi5b`ynC>xx9{9}3-_=(%iZ1o z=yo3W1wqWa#IIeCt*#H$p7d^pnwpyAdO|rU_*%QRZ1Di{`8nC<$t06)C{!OgaN{0* zk|!OLb!QO^lDd_h-J8oL4>4GF3mus>?JEbdx#G|hBJEl0@$Qo@E-t?sk`Le&q&V7N zKDmn(ZEHj1rlelIC{%!1%r6zd4|`;E6bwsyi8G58P4;eEsr0dF5TK2%Q~*f-DCP9GIIL)a$0n?PJ{cE7&vTWXb0u|l3 zDJ`+-ASxiRZ*fr(YDAb1_jO+n4-XEmXEo@e;V++`kJ0XOb31+dwBpH=`KAZYXlVEX z1#4?-ub`#CgnC~p`SB+Cg$It!m(*5qhgqnib{cg+_yBl{xv0-T_DMGx)IzU zA0^=IvnHHR|G$2W*N66}(NsC^+_j6EnVI>NUMdy_$=h_fqN2hGpG2l=ZPC9xH;==$ z|JP5|x8K)w`t-V?p`n?%xpNxj_4P|;P(ao1`1!3~v*vx-(CvSJ-!&KCs(yk<-In&RXd@|d;zYc5E;c0iZGQ1#<4IoM2J857v(N6`}ON{ zi#-0n-~0PxFRvB!v&G+J8*|m*hsz963Wn!v|AA{{A3o0zlv#gOASYn3_fn zx<0;p_f%ceyJTYJo};TfGtzcB>494S11*gObfQ~!4+8h_fMYxv6uwfLtt&9{tYsmx zVD7;0FMhg(mn;RoGLj+s$ajFLM@ieEqazn3&#Z(^W7(`al7XTsGrL1iPtVcOk(rC@ zBmsnlL4~=wG=BMCNLzdf57^e$KmNUTub0qI^Bin{Da965Nc0@0vs$M=W5=!C$WPHl zy>-}^g`OI8)%T6f=)eea1d!HnUSZ++)IU?_!E?&DX-@A3=P1S|1R})5kRN7}Zh(ie za&ZOZ>$hP{Ku)RM11TL!^UCL_s2~X_5DG_*tUxSG4AirFeEKAU{A#8|`{%35uB4+g z5PI^}6`D@NIdkYw+d5+@Xt-Yk<@)I~}x2SZd%lB8l?7=rt!KM z9lGq679QSbJMIPt9|pL+0^f|^KgJ$1vz@H*2?@pxN&A9>gB|wC0%%{-(h_`DmJTgR z-CS(P4lmFP-8c=6&-P{y`v1J{T@3cJ-L^e@ZUc$8b#xd^FMvo}T3c^J0f0)Td+^!d zy%kZb=}`7FViq@$R|U^?AS0toa62|u0BmUl{0FN=hNHW{3NL@%y<>;202{>h(7{9C z65VP~iw*VrYd`vPNj@Z_KB}s!xH2SJQG}8KTB;iS4=-*u08{}M#02WY`XtLXd4NRZ z$)wQ?XyRU8Uaj5T-dS0)+m8iyV(8;Rv^(-N8Sb5#pEtnx&G&b#WX1pr1!I3~rul}l zJItFmo9umrofPT%0iBo!hqxbvnZ0;#*OX%AiGiBx3}=U@q9)#-KTG0c$T+nNcJhO3 z4Z#RdyrUo+Jw2Diee|sx%utnfq4W0w2u*F=`qbC(!ZwWQ&O0>n80#XgDQo zeFY5)m^nD^R9?-?&Gl?;)eUzUQ@T9}7@< z*!9<1b$xxnmn;nuNYU5VFRG}B`ENu9lZX_*Xubty4Rnss5G87dU5sq>v=@`jU0de( zeuwU4A*7DppNV_HZn`kQ^SJB^LgA3>oQV5E2M@V7_!=?xlBBnV8@L1fH^Ha^k*9F@ zFx8$tdkFVJFbnJF`ATHXux;9O%+XOCvPn1I7J5#|)2CmNI-JnZIb_+It<{fC4i%QJ z17r5U=MMmN_g_lMMoX>`19Jtqxx=}NLot{od5Q>u49XSAC0T%RkK&S&4!oslV@j~E z?<%C!GjG!BqAujdxG$PuUlWc~A7?-Z1Y>XJFz_Qd)uv|*ojL1{0tToBC>dAKy`X0o z@&ckzgL1DYsV+UWyx6jQ5-1(*I90%%-C|;!P`Qz|#a(6upa2>mKdE!fH(g4xyurF# zg(6`4>)Y{RF-+cJ>;Ztx2onJ6=F3lv!l}0G+ZO;J%vZPlPk!M+^%(jL7Jw?xxrQH`S@Ofmzp-EJ-B~= zJwOd8pV`DEGDMh7DkU@ zk(88`J4f1b$pqP}$|BrK(nxdNyc|ZdDcWv|mX-pjf!hxqdV&u^2wkm>Vn_1F)I#`| zFY-QidHMOH=UZovATEo6-rJ zhCvRvbQXHpZ7iv{cv*`5)WjcF6n^J@ll)l!$L!$d>(r5x)x!mvhbimr=XHOop&s_A5h@b}k#qx^Mq7WsNrMcO zP+CS##UO5J=uP@iCDG4gk}JMH2S^CsRsYr5$w~c3xShnLMQ|%C(-Vg1VHQ?}K6tJD^q=xf^~t731!#cr z{-yi-Tyv`VL`1&Zi%lYUhSSQO?U3o$%gV~)w#*`mO+JQwzK~@4r0JHy2bS$ezeQaT z_V^rqei?I|^$$f({ls|ZujUL%3K(gOn-LG?-Me>qeud^YVcN-{0j7Q~N`p$y+zP)9awaCMFeV~>($DaEBEi;kIQe^4pGDd(X0L;>^)Mr z!MEp!yUcBXANcv{J&=xk>_Et$VDdGu&A#6u9%TpFJmA{IRF37ZZ(9Mvsn|rX-Oshg zPFz7pN3$U-2plON&#Muz3LJ@{iZB8RG^Y@(a>cihX*EN_!nB4uFvKE-j+#fu>mY>L z$cUw8)^3&1t0xw+bfO}j!0VLH05=y|>lDf+j^V)ern+DH6FUE?Hxj=$@{zvn|L`5f z42RjV%M|n-d_R2nkZVnl$LCnqb?X3V@q9uK9;qzFm`!eSi`$8#M~^<4Z2w5~^Dg`M z9p!IYhC18YsN{gha)p2kEpM6KSK*80_MD5FVB5pS}Oy+Bt$eBk`$vd}{z$YDUIc=%;Wde|b& z>ZPswpHG88?*CW^ya^q`v z_#=}T#A)zNVv}b0RH_GpuoGxWB!ixch}{5Bt66uo4iBq>?qbYd41|!Rq3Z-Srm)^SrlzW#Z{C|`!8*gm2J^WMU{i# zXqH@&ApzNqqNb(>c>74R8@Zfen-%H%Z7`R0o%=M{195IdT=CG)EDy|#$?!|jD_zr!D@))2=deGz~Cjl7c<>fVfKL1HP zFY~AfGhktPH$68!%p`{f6d9ZAk8MOPDH$+OzkYHCMZm`nJ(#A%QcO7R9kP_Rf&%!t z(?b#$$lw8irO4dO(F6Otq0iC~_+mqnMTVtjrHR&s2k$;0?Iam5A)wl08-b@&TxNw% zO}W~>1sqz3w14UpGx|P9{`zYakC{B!BW75{{Jit!EPDKW+{#>*R#tj=N-AkNLfSd0 zpurJOUs9!D*e|hfbYw)gJoFF+^Q1voc|#rJknCVo|VB4O2=9gyDV^q0dI&0%^{CW-?#i+wefwd-3CVwBM%DD^j{ zrPPMV9dgA{Yw*m#vRhpeW=C%a1nd+Se++o_^5si$t9CD~Cpn&U)#%Pq zAXCT#4&JiEQ7Rcf9lBe3F}t#%+};urMni?et~=kosAy;@JB78*Ua1ehLl_;z0;*V~ z_v6Euz-_6Y{6E}@=;&zjfCX>rO#NF`9+~9@8`M=5=naB`f)HtgAg6|gh0S6<;OqCw zkD6i)P2EILgboM29`QCDfFUJ=z5FJ+0T7 zxEGWak2VNnF*9eoH>0ze18(sIPsd@5fcp5*-*D@*Foi_;h~=6~?9pN#XM>j))1{CeLWbZ3jZN**bx zsv3b#965T_dS*nA((F2|_1P=r&L@kO@E<=kc7n4- z>12f?u&G(5Tv9amJ`A}U%F{YUTF7I5ny z9q;vFHr!Y;*<@VxdNoA#HXIkY0Xi1c1#d*qz5DmQDz6$MH70#-J7H4ueght%pwh*7 zIC{q$(Q8Ga9C#?`>+f#}A&bI^t_-wY4iHay1%)Sq2DGQ*cc4e$FvyhlkbzVDuG4t8 z)ky1MESem6R&QgfFeWM)p{kS5!!(SZ2uI0)q~nP0?=Sy4nS@? z@(gB8w8g^AXcD_TU+&LH5QzVRRJDJSh6o!fb`Q$3a;SJPzK5;|$LPcaMjE*FaLJ*v z?&0K-2F7WfWOFXuzgHk-=wd_G{JL*ChmHsMfR@~^w{LeJeHDy6HwIcr8at?Y=QS15 zhcU`hO0WrN1US)7Xim1^%oh@_Ak8Zw_jg*hAiTyakMWS<1Sx506htDOFW_m4c1$G_ zp1mQ7Yr}?o(&&Zeg-8*XlsxamIeog$gNlaqYcPbd9d{BBkFlr#fo$YMM1TH#3u#dU5+M6- zgQ(^BKzr@6hx;@OP!Y)ZG&;U0cpU=+{*VC?mjuCuN;^LU3jcof^P3As@iUlZ-FxZa z3nAo~3$eO~-;}sRmY^ItcC4eX@8ZX#KMAXEvuBrf&(wcZVqQYzT|LWwOH(I;8E^Cf; zn4h@t{WZW0MF4wyC&QmI`0DjPWsrr%Nta*%e3=A;LdMURIj@~SI|yhYr>5pX%kt86 zVsrTK7ZrIb{*N+0mOU~yrVqV>!hb0xwzfeNObTiNF#b9Yj*I<+f23+DUwTYApRNo0 zkMX+wd3s+R9}A#@J^h@1cXS>0BTn-BNSj?)UxX{bv4{?t)8 ziOz;ZqN&-i9$#VnHk^$AlXgvY5N>Mj>k2S-a=8*!0? zVj|)~yDXfX>>Q; zjp-71T`e^%yu-goKrMQ7k#0;%KD52Ai!|iuo%~49-o?cwBdR^m)odMOvDmJ=TTX1) z{XhSqW_>w6XYK#|%D-=zEO@e({D1qZ+IN0CmH++c@!bsp|NpoCuN6>x{O8Y~U0XJ2 zdskFcP(^Hq8@^XD_k zhj<%4@9{b4P8}F9sfm(hKWwpu^RUHj&Lh_q&Yx#$X=zDKO;vcrDlB%TkhC<@WF&cW znqN&#O(0M8lzXyK!4o6zWtNeabl->wj=LvztbSJ z3V0vggM$y6Kb!Z?jLO*SBU^2T95b2{Ep$tY~QOE!EGv$#U}ErqbT>K&d(hN5^L`Up^w+ zcJ`D#-tmiU%R_pj`byeuvQJ4vD}{i-Ea14Co8;K^(vqj=()`xVJaQ$2b+M&` zY$Ey!FK%ZIX}LJN6xd*mu_>aRg*}4yavO|qt z7cZD%nD-UCwq@&9pMsUY44XD>n#VpIyg6;LVcpu86gmUCd|@9SpA8HQCNX~g{%RK& z1T`*SzFSpw?wXm|o&yIqnpZ~_<+@Laxs6}B(UHrctE<~!p!lDqVLt7n_wP?%1rHwF zIyyR<>Afm9Ju{Qwxj?*KHMQp@gR!cwzP^;Oy<%*9$uIqR4c^L+7!@|pm8GoggcHGu znVIaeH>VYxoW9gj7&mMvT$~%zv23ufzBOW)@A+V~J*T(Ohvs+l=U6ogKJxCe01n^1 zXP)fB0+*GQDIZ{aGfdjuU^-C!ieE&eEZHC@K1bj`rGx*!E5qvhvOu2AZ=%yjrUq)Z zvapm6Qf6j`o3uZhF?~4ya-VBf@x9IWqN1YeWtesx4c1X@*1TZK!op&V#SWKoPiu2d z5IBDPc;uDG{{HJ*$hMn3JUlEcEV{6v*tdOf5$(evrPul(^^P zv&O-}Vf^omRa^e89hR1shbkkFx!Um6Pq$t*HKmo8m!Bw5S5vbatmVt~n0peElA5~Z z{prVF@v6pGuIx%bCo3z<$RoE?K}m41zWy?Cig@I``ub#D{;;>Tx7*|ABAP_qe>&gZ zLY*2PSMXiWL?Y4B(z=azt*L%3UsFN$n6s&Rb&T9{lj%P-H#+yf>gS~V^_iiDMDP9k z_Psm*^60mU3gej9a<_Ef7LK%KIU1XrYrV~;_VwM*VG7wNB=jeNp-s+vWha}c;k6hY z9i83#_N{jwZlw0rR8|%*Obys~6|N~MFW1sIq9ir)>yvL#hRcX<0N1fliPb!hIlJlK zm$J&8SBx}L3}vg291s`Zj(Z_#-?L6|xjn~~xB;ghbMmF1+q-wKYJ{Sq;;#a4d9T%F z*Idtq=SN1WUme?kGg0JACz!gA@3*wVSt`4<6MyXR(2pM%m&S`XN9Gtn$@#xW`iC;=ePU#nThLfm|_(8>z8%}m5r74>fC5M`_UWhC~BmWCr@JI3)|Xua!ETC zqWnF3{(Mh*Kw+T*Zc^iG{#3U=zYb0h*3mUKHvahW-CLM)KfLhBdHz0Mr@`T3FV zv!m^mFC~r~VZl+nMBn=N%@m@syD>U+}x!5 ztDi;P2d03>k9Tj`@FU07HqKN@-DQ=No&8Ex_`z*c64&cDsDC(DgysH`VXfC8gRUEy zy?_6H6`?7-oAIeBUq3%ul-3(JZirp`wnab7Ax3|A9SP^DjfA-T{;|8H zq$D`uPi_9paAD~qwu4T;FaG-VOF>^PIXJ%k{(75FO*2ocF%c|D4HhrS> z(5z=vcqQ$8<;oS(+lw1iR8-vD+^%4GzJ2@lG+Wii#wL>bKzHG_jQcjc=ab)G9NEoG zZ)|3^-pI(Px}51bGaFm)uTLiPgR!rFB_T+5D^iHoFS*DQ@ON`$;ol!Bq}E9roTax6%-Vl z9&O+8?AbGF@<}tZeVQqTk2~@_imR(P-Mo2o3%wuFJ9At{#7rs7y!-YkM|RfL1*xxk z%#GSl;wV1|i9Hj@9VrtgV$c(O1pQT$+p?g>WA=|vU|`@p`4@#kzq~jXHq5C?^sYTD zC;zpue5ML<%L@YvtrmF@I?RZ9y~5ok&s4r|x0m7Ky} zMR3S@O4_=kLtPnaNGMnGUYb8>yMQ_v@ZtrhV9KXY2ZO@G$|+hGFBaku`~Lj#<7t*E zeyv%uVV;0}>-hJn@$Qpl9UW0Y9SK?~4r4UV&d!=T0s;b6sMeJR+{I$Ki@{^_LIMI; zz5WjFf6#hXQPD2~jebmOY-mWpenC(x`I?inv*{>}xVU&fww*;+%fDNGCAy*J+qe5c zovp1eL(tizB4si%GSr6cd&`(k@7iM5KQ%LxG%oFx(Bvbmmm#)&-?^@Kk#`08w-yf> z<$K2ckj~7`cAzkA*l;m35~ZWEZBxuDdVdWsFK;U4tg^D&M@A**_Rr>UQ#dn zB>2^pF)VMz)ZAR0ICP$<@+ML8-qi;jJ96Cv0OCsi2CyHzBjwm1P(=;Ru&mp68aE?( zhD*|J*VIJs8C4DjR-vvw1F{X5-~}5Sk-g0HI_|(@Qcaye4k~6ko{N85(yanszI<7d zo$&Fa7}|PhCfC1Xb?t4TFj0BGxvD-Z9C>rxS8~CB6Bp$rIc@DbAdsG1q01T?rnR-T z;q&uu)syGWoeKvlt=r^Fyc)k$RrcM3A-uP^hxdls;41yPqA79fuJe=_3?*_jU`=q5`xJGy`@Fl4$ zt|cF_YU~R(x3KuOG}~%hHPKrh0W^3(|3j`%D{4+f`m4yuNJ-1*Yu^KOU9#Z$h>wJ0 zPM>08`EZ>L13kSP%_54b8CCE?SEw<2S!LxT@z=QJ1AA!{ZzVLX$=}R1zp{SQPVKiN z>IOb~Z~7#N64G-hcxxs#M~?DWFZGH~TWeWuty=OSJ_88qb5b>dd{6nzuxeC{?m!U!lXkr@}@g; zYBM|rhmBlZj`og@R#((TD{bF*D8TMrUfFl0L$ zTX}^95S(UIcsP5Mz4-0GBZ3K>GCW-NZ#y@v zA+=>YGu+$6)e{}aEvx(1p}#7E2B-Q#-Q&lP54w)(Kd1wmeS*8MsS6NheEm8-xI=xi z!49y2?H5!oTqwu7|4h&l^&8UBY00o=;Ns%CW^VquHpQqwWVBJoz<}%V4vEu?vm-yV z9L?wF=M_-buSPt0@PPf`)ph1MXb{B>4J=2l*B7FiNf}VV8n}Vfi^sc*O&b@{U`Zsr zpNUyjC8Z+#Z4C*xBm9UJD?I~4>D1kO_e_XOp7yo4Sjy70eD5n+kE2hxj+Ipm{QkWG zJ(8K3xvQu2k=x8rh?_3J{ok44dvu$*3(@~ao#XY$A_U?iWqQmdXYQa*{;rK-h&|ST zgV^=jd!mu$nt#>O^1)WCphLN$y!>*<-Bxm1g$o12%17PL>U%%(k? zPb*@FgiYVb!%V}xn|3ZP{_*hwJv}|+^Ajc$1f~zzDYXq%=dQ2s$px*ms#~{i{Z>;m z5Zx4~e&ztxb+DEeSo&%Vuvu4QlAc9Fyhc{#vStbm3O7l)x)@*UMRAmLpX5zTOVeI( z8S7y3_FkoTK9+nApxw^N=`PAHV8q*mghz>qLNYg}H%v@SBwB}p%{+a&<;JhnH3~{$ zZKzaqq)1s0*3H~9S3*X*yNd=jbDYQn1dzv7m2ytY$T*F*^ydA0Uwj<9>PilAvp3eQ z8Fr42L0MjLadD*Ep~8Ca+^6~pIv`?@T~a~5T1t<~nN|xxe-9<=-N%op!DVIZQA6+L z=gW2E-+F|Ky-Qg5aY*^suWJDkLH%+hM{uF;2L#*&BoQ2olJ$_R?AqaxvB%}lFCVL> ze|&fWsfkUI_^{ zf^4AO3Fetrh7wCPK%T}u3qNE^AG;H%-wCUXEhJzxAkVHj+wNbwTLOwm z9K4^;wNY}%#*PvN^!~X9E~$P0C`^co+M`z7 z9&zl5Ij(Z4+s&Jk8D$)RBP9-e>DNML_9w9D1Nlo%1&=yBNonwZ{rdISnZ!g^GNXEJ z>6<;Rr!HIwj5un|8T9JacRjjLlN;wmWbKYSPcc5-vcJh<+E&9caCh+9^Oi}RS{B;VkLVf zbw3UW2nQ0^lv5I3rDRwvPf{67jE##b$Y=wNvjTV*UW+3Vs`T{f z&UF{Jm8c+*O^x04+PEd{Zj+bZp9u{0SU#2CFs#rVI$iTx-W)oJdn5)I!Imwfmyt8KwS5U4~?^y}U}oGz|dnS5)S z+d5w?whDG;+V@KS>xI;Xg$4V`xcK-(R*i|>UtS2~ZEoV0`Icyq6B-ir^l9M%yc_OA zWKik#K~Yg6&WlR#zb)+jTi4KFIy=@W`stj~+$l{>%}CY=KR>^7nwqS|VidG}_dm+l z?a^5)aRUA3+Crv}eRB=uW2TSz_>o^T|J5%aki{;nkT&t~7<$Or!& zG@<|EO$*gZHI)YR5K*ZFkSuiim$uU%ymZB%x)bkMVByQ>|C8--Q5Ek*Ao?6uRo ze7R(4X{v_acE_1BXH?0zU(0*-p_i87u=8&Q(?2@9Vex~X{TlwH4I zd(6IKv2$n7ZrEP~&aLf!^v18k3UQE;4%2=6_d8Cuw6;1HmN39c4$+G$ zDhX}9k;?S!l*Iumwe-N}Tpv9p15T|k$1MC8j;7E6VzPRFywpO}5_j6QYld4AH{kUZ zA3k~%0c6tO>Ah--7FT@k#o-4V>FKw5zbTRMcN|m*y#LOp_1P9L`TaeKQ3^E0OlPCX?XAIy9Vn7VL^qg=$Os}Y+(7Mw@Tyzl$d^TknXO2mGC z{`(TPXuj7BUB}vU%5(BAypk?GASy5a`qQUR-F?fwf%4i5nu*#)728=^%f!wprRGf^ z9j=cHnqU21RaIgtq?2~)Do4!3vK-LQtDv#^IQ2-+_3PJfBa8n#2Z!r54iSIYV7zt1 zI(D%uBw+Y>&t}t{H?$;CQBihI&WEcbzklCf&%~LU{kf{9rW`WM7G~zld^5oy1GK2y zB>;S>xcNJexdf1Nn$if#4hX9otH~0}$IENi|GlCDB9l+sOqSck9@OUO{=xPfiF4=A z$MmBI`GBATqwZC0&GV256)~U((ImCmJa=|->KYrXQ5I|siMEi-7YSY9<>TuHrB6*u zd;VgqoX0y@`WAGW`;Q-oyfE)6c@UYrod5&CG(ra1%*MvXJvQ587Eo9KMjt}{{5?Ee zS!JZFrnW6X@9Z-)Bga~BHte1cQJ92-Ypxq8*{sJ$<@s^iFm>s<<(rjj~{% zZO+=RNTal5VNZiX??+8*2o)zw{{@=U<;$0~+cOR^5)JW<<3P1T)A42;sZS16Wg*=! zXOpK=zf4a%{c3I1vRLpO_=&RVPJYV^O{Ju($Ty~+0}8|b^R+Xg&_{rDNQK^Qq_jYD zIRfB{80PY?xL&%n^{8!!(5Q$v+D@eV=_fnm#vOvYp^S{r%qXIv0fGpN7d(E<1i-FK`c zgoK3mI4RnY3F;5cCrb^~ye#h7PRRaJ0;4514?P5W=nUYp&&2x5cX(!4#f!e(MAiP6!#znYs5wi zX!YtEt&M3?U4*!~n>;Ijl2L(Iu1QBkc=(l~JG9~Q-g3k-W?&Q9B_gsZOw`Eiaglxt zN`T#X*YS1h*DD*C=?o4I<`RuvjX&>8ymWGKDYPMz@+YOZVtnhlD7_Uy`?rN@wScQd zhniSf3EKY|wH=hc0@(jD`Tctuh+fs7_y>O_3IMZ$qMpej?n&JEWWx1=aoWLC<)?LG ze1}cT6KF~JR&8x<{)@%iz)1X)l9Js1*pYsr7n)T^Zp3Y=p3lJh=wYhXxNKqZah_9G zUq1knG@*A8*k;(1Qc+QaZXso&J!RRL7*RhM^67QL-(L+seiQ3yc!{Ptz|FZLw@(+#KnORu6fz62xTUi+3X`C((H6CooCy9#5RHVnWgScwS2-_dAYf6dR3F@nSWav+QXy!oo{lE$KfA=)!kv+b*TFdF{;{Y%I&Q~lq6W;4u6CToEjxDx z{P}akzQvzuhh%vQB;Na5_cEv0(PFiqNyth`>6ksz)hS@1$gRfr{5o>*-L$1?xEnA?fF5?R?`Us-+9XT_;^>FBV^T7-P(uQ zA6)G1x6;{&>Sx||8ELVnBvgxZ61#VT^6o#o2ZFwij?RQ=3Snk-u@}w&tP7@7LHIcL z?A<&10k_+?D7S?0`O=CDXIVoJ3>W$LY?b#vf zn{}{geqgprBSV+&+OCFnkSEi~GMaQ=kqOBwe=`_KPmwdovk?)vfeq;{s=?)_uJsl(SOG*t!;$ z=Q^cKu7ki=a?SU&o(2xtHZ}F?4B%*4ZHx+)eno56z5bmd0|a}!GIKN%;gzMS3x1Ue zU~#}VsW2(*TOMrRZ%1@BIak*?`aqsUex*h2mX)Bew3-5nq)TOOLqjRB=nn$Mg?&X! z^a~4PgC$XJX_=Uu`~(hOFaDM|4SF{9WQ`}Rj)4M#%pE{^%+G<;xc_lQKrt zzmPmWp@S(K%;Gm)LI>z}Ff8zTjBVt9dzw0jWnG%@4NU#~xfm_S9zeb0%>^$nIT)X% zN)m?;pMqLmvf5ZzcM|1P#~l(NwC??%(pB(1c)@#b-n>z^{N9jaB+t&yo>~jxvE(lq zxZi&>PxUcx93`pakI~PJfz7^ER`$NyFD%RigVPtzMSsm}BcB$ns)E&(N7>H9@4Q!6 z=En+Fc{ARC)}1dHKB{cu1bAY&nnEL_-sfnMp`Us0w}n`GZr$ z3Rfw2%Jc8^Mo`i-1zyXN2G6|&@m^ESYq-DMXx;|w+jDM=umBCaydlh**F<%v6s%m0 z0iC9Y^U>XB-I*^7p^_>6`!37P?mh*9%^5%f9Fp~j>~=m!p7DYk8yJ`jE; z42M0Ye-|mW;)N3!u9AM`xTa*XBpk+TpCTCDAl`{7tgzlz% zjNPNAuKvlc`-G5w<`#c{e+!fcAz|USF)@C)1F%~dBEv#SVs>2$stk$HjZU3Dopz@c zTqG5j9lFpJD=R|eBQ_LGtQ1ZBX;2UiN!i`fAQb8;XvAG0c$KO;z|RN58&`5O`y$-m6}JItzG)hK8VNodPB? zwy?Ml*53;}pLuKXsJR>@NCXH%tRkRW3!-qA(yzqC#=cj4#5z7Z>yNAf(J5fyXHn|v z>rdI)iQz7nD|cddpcDSYeb?5}IlgO47p|WhOlNM{o4hu8tXsBROrH6u%)!CYV}I}S z=g-ezAQ4hfrRg*Lyb0Qwa#AtbjVoN-eAA|#lD7##4z+=BJ8f^rPHV?fwy?47?=Y%8 z_wpzcwCPg`nn`x^iZlpci#rJ18=%0=>UNN-8QgLiiv`$z$fjaM`dt?r zSh6`v+I6(*Sf~uiX{cUlX%(E>0#_c+g4sNNP9lHoz@W?d6-C8(t@+6CH4Q^muB}!eev^R=r9drc;>sVMTb`!jwFwg(vb#GeJ!- zh$y!@)?7hZ-8az&+BqY=Yiwdv8O%TN$hR)mg8x-8I$>~(Froh$5h-YZ%I)6!RU@BD zjsbPXR43ej7+H7X?b8R39`y!SxL)8Ln>nX5@ETMSY%QWv#-VQmA^uem+KT7Gq+f_u z?X4@#^7);d`BqHDVpW9g&|!m)e^t(NewV#B^mmm=R|ss0xx07o-ZsU3%;j9qp}yr? z{jGGQJO{$JKf7>ItKy&DdDpc5R#YhU=gP^+{b+17 zi=p=SJLq<6@{SM#1N5* zb0^%zj$~K9<}a4p36W*!v>GeE^MOg9mlct8LJ9A}(rv5Bo1BLhPcU{+vIEZNrsQt@ z9XBK=ynwcWIMM!@U(OB=Cr+KZ+cuE+>J`_@eD7wz;X{u7=l-;$tGsP|m7SfP_(?)g z9Wv3@?c0l6-(||+Cj3Y>KG|WZ(SH6AkDi_$O07fL#Uy^ySKcA^e<-zi9KKOdh@WMqB1qa2W?G58OTxqx>q4d*s9U z_BM)?D81*^N1UB!1deU~caQoM4fwVbkYo!hOzD|y(IDB0ZIAcF@Jy>n%BR}44Tb>6Sy!`tQ9u$Gn*{`nL;@!W$ z7d7=;b+tc;27*GDa$Ky57LVkEUrtU=Rq{t!8JY3EitVRPo$C7i^Zot6z;dJwo<&4# zgd;YQ8UEzS6W9#CaH-9295dyVa^STMd$IR)z|+59wNAlH!YKn>C-a|IBv$yxj&c5l_6e|D% z_c1Q+I6w2(!a@>sP++{1bsx?{_PAte(BM_sxPTY}l{!DX$jJ0xs7N^qR*!02+lmN{|GKEl@m3OeYu=1<8$36)2lxGH{3NH}@n!e;a^ z!lZ(nc5`l&>HPWc$~sYL)dUnbLW3;>E%@X(pla{h1vwj$H;GVDqbJzz zX!LmaBo-aHQl|sh*LZt-H-@K8&QFx{5UCY7RNd%lna;zkwRLsRUccUqB0}(9u468z z6ck7=4qNW|EW^OSfWoo?gvulaXUD#*0p#WgWTpvfC7b3=6bt6Rb`SnxE`bf<6pN$B z|M}m9*p;G*U5=&R00~}8Lz57DqVJ`{Xq%L(N-ecAOofXl>>s+{vS){L$hrUip)Du+ z)U>tlV*@|e5~v?0-1Yda|K!-+otuXQBL4F;#C1IT1)aF0tZWa+804rjKntBZEXSt3 zd*5G==lbuTp>Nyv@ACfp#{-z3#e=$fB{)QYSIIq`TmOB1^47cL=l^c|zc+IKE1XJ~ z(KbX<5{8oL|Ldh_|F@UQLd*DyOvy=q#v*jPuHIhtc8xv%3U^=5?knv6aihxr=bQbn zKYd$0blv{{lhp3QYv!Fh8GRHA|1vN#CXQYwK1awNF|nspIb@`7hLRh#2pEf+L5ITr z7B*FjDuPfA26?v14i1L~wBK8wy?+%Z(4Y+QrdQ7V3%%a21vO+UDk}QjmL>jYWaMp1 z%I5z>iwM%U1(Cin>=V1@W15Z}q0H?vR76yVD3yAT!7|NUigeLeGuw_BjF{jQJO4iXs% zNa;sOxQ@Nr78nCzyfSi?(Dfy~?d|}BY_*AqYDkI zp@%_$VclA^6+wO0&gHZ2qkE%e^#Tx7=wE`?@?27$whE{GvJ^qAFFgn1|9~pXNXlBN z`u;rvuI)jXXblE4w*FaJS#7Oa@XDZ5nL=O%8;WC+<4hrW~i@4sGO~ zdim|!w}+BLYtfD=dA1}mNcLBdP`(z5RP}d={FOpArKNuE6Fq(<4)YlWGTyALtX0s0 zL$cx|5kBS>DS!s%5ca-m>d1iuar&()8X6%B2<1k6{d&UGnmgv%7u8FbE~yPLY}n9M z1;j_GaP6<+IE`{OY7HJ!o@i8HXqGoMIT`-*{TXqDqSPu0dlC6DgX$#pg&Wq^e2uq$ zyg9BmaBFo%_I*qYpZyA;>E-XrTl~gf9YX-D!64~68z-m0)L*bQz4nHs590=%1u@p_ zEG&FYV~h*424ET_lzptOSH(7HY)kI)S?zQSk|!Ow4FPB+P{8*j*(rV zV2#o4{AJX^Rfc*ZC(U03`(MnaP0~-7Klj!mD?!3ghkU_uP8b;#Y_pm#xM$4%=hr71 zLay;%U5@?Y0EiL*D0~%ti~f7q>(@laP%w%6R2C5)ynUPWdvLI*rY2CLh7e?sCdtyR z#1C^L=LC4+gDgtz&;mLjK{_^W+-TAAC9amj;=ZyZg}cbBS^yH+)7$$qUIY6|POENu z_im4nUIrshBF^|l-K@?#;E#Ld<&EAh5dmx*?tSN9l)Q|6^M-`WSc1JX4Gjwk@q6=T z7nE;qT=LKyZX;hbJCniMnA9&{`d;Ou9}8G6tDe;WyBFOL>x~h3p~pkr#H2Sqxl!W0 zkr5AJ67!=7H&1s4~%LX{mFp#xN(}}vo`%jg9O5chcELs_@zp-T9P<@;) zq!}Vr3AeK-MkVYbY*>mT(x!|%CASc)>mmJ2kLYHiciFVDqmLpycoxx{5J4@soc@6O z_Z3c@SgV_HL#La{%FO%*G+xqmbmy28qBc;5SphG;Q79)+Cbw&`{Ru#e?l|=IIHZ23|6*y}SAqn@;QQSMwue$+e zB0W*F?!A7^bG<3~d&F#$k+=Pw48Sm8zSQ(|MXUsoetN-;b^>YoLA#XqV?tFhE?(b} zOb??O+F(n33iIv|UV^Y?fIensW?nvNoxd4F2ikczot?FOx11ec5wb*V>#=W>o&0#woatNJ-|GoP($AQREyAU08Bf_wG80K+PQ8A!2<%7Q>Mr_ zM%%K8CPbtqBQ!zPiLkz7e^vLn92j0|Yso|&lc_~lN5>e!AF$%h=DNt}&Hicjg(rU5 zZQ+#H?Ck6>BoB$i(UmKO5i7GJdbkg-97Xo++ed%~f?-T&ISx3KkqAsv4W+nx5!oXG z5aWF@4@luq5W)puEhSOB^HB#b#d|bJ#Ggb24RjNJJ^Ynn{jy31BF|TOWS@}Vja!KC z@q8s|zi0n0Nr+5K3j?nczrd9NPWf6_r=ILkupc7({0O=8N0OcdAjHEui0Qtl=Uotz z5|@ys0Fx+B)cLGE2wx#LDHMnEG5+=aRW4@cyHH8)uYMO}+;=YgHXK?(tC08-v@t>) z1!(+SyLZo?ab!=g$FuCFlsDbfkC0VFrH}JMBuWxVc^JDz%0y5d`bc2G zG~spwZzU!s{wVPF#!4v*PsP6W>S0>D<~EW`ppO-;?^K_Sp5SvQQnQE&3ku@9Cf8f9 zK{$>9u2H7@)IKy+p-)RFWP}!mgGP+QKm&b?77Tt$&=n#Uli;ED3<}&=@BrNMANBQj z^YUa*2XcSkND|od|Byqs6>O}faBs)eAw7Nd>M@W4F)sl4;;*nv0r#`gK#PtJ4M6O+ zgareszrR0sV0)pgA%Bgy&miI|wIDEg2zjK<#GRN1aSY2jr-Yot z-TfD$Qftw&2-!_j7y2wor6q{KwCq#xd<#j&xed`Ul41FLS)T$iK1*Dm3o$ zpx}Cgz=Nr8f)KOe?w&#{>0*MWFrwW=g#|JJ!7N6+sk9($(hVKtj<0X`=;$VFf`z5! zalk3m*WWGaf-5VFw$U*$O2WkeM2^;Art3)rRRU)C-?QhDlJ+N(|FZnw(&rG8Xi#1) z>OXE>T3SlIIddH~YABk& zc`Hz_&ah$jOx7Wz7|HI$%mMA~pl zC^u)f7|>xFM#{9Tq~vVd+#agzQQi?1QyZTuHY#z{tlfin3Ndqn@8?@#`h(C4 zd^PF|BSR<~FmH{MUWbIRAnL(aEe<+eeH3xAXKKS5ER>G-!Fl)AD9aThum7sVJ@|n! zJK`~n@+y|IivSo;|1sTs`8dAt& zq#j5j&c)a7-FUq1^W%t*~a^QOp??kVl)*DQt>XS)1Z!(ek zGmipWI*751ZIzd?Qbc~maZ%|x3>1hPs#(A-!mbf}&`88>Uxi$n1xb#Ob{_iH)=vtD z2Q5a_2yIRDxPL~$l$C{r81y9*BApchExu6C49RbCbOHhxn=KRF9%E7(SC{Ae-67hW z*xJ@8jX`*#B_}%Jp7#mW5w83gYEh&oTH!fFYW5TVUdkQ*cLZRIrdqniBm@ zI)r$85#1{KBq6cDg;Q`rCro)5}g4wE=Yx;M7-fj}@CcVu$kIol)Hg7Yn%XJv70DrX<#xRTUsA$1U`BS->WCSd!gG<5&%_II3mz*}$d({Q!JE9d zGiy7XT#6&M_4N7kfLZXsA}68hlzZ%)uqHCr;^0YYWDN~^CZ-UNoY3|f&pPTd*99dd z<7}tFJxzzcgHFK|P|>H$cL&FgxH&VVB;-g5K7hI3D!4ryJ9g}Nu;9xf2P=|=QG<;^F7(Zye$j_`SE5gw~>=CLq?Mau}blOyoL5#5&q&g6c z>X~*KDgx}8>Tl@<)FRh*sat;!+jiW!vljK^Zip5>J3#zn$qSb+2e*|cA#I@3Xe-E* zZ_a?ESK}xCEgK|jp5aDZ`(8X}^ES6N?+XmM$qvWRWpxZU0HYLQ=F*YUm6I>;wG{5^ zj)+ubrz39qK2g!Ykd(C7jzQ0#vm-e9z!VXsLkPi`hZK`VO_xKwynuqjh7HxHB~V3Z zXL&(dnf}Qy2gpFPQyuf6oAQ;PBgX3?ZZNAzoEIHXz6Pl^yYjdp+#&aEH#ZOdkfr@=`}wN$m=zXd=LzJ0}0mjtDw>L4sK%Rj_3W^YdTvymgBu z{`EzEB3$b}Tpngr`)G`^q0I|N(;eBc&)CWix_^+fAFQmq&#EDw#de{&xjA>(0TYax za>xU~{XK`GBpT$nNLJz`~8T3k^b;mUxR(Yt;=5UMZ=lsJlr~WsO)iI;^Lo zbDTs@OALL8+I%>q-)dvq(d+g1)jNpjj62Z0oA+nlJi8SlCE$)gV5LDhrO>tgK|sJY z=a6wrJ<+5_!i39?0lvLRtQs0d)rZYJU*V;V zo?m-(a>C_7GOqZ8H#(URxtnr?2H^>1i8 zJFyvV!x~({T$v#Qt};l7jGDwxcLK$_HTj690Q6Q(661Ct5Z|h_j@rfCf4GjF8n@%( zwqF8*($c!!BYMp~dhSn{@&_rK+7KM6kTJ(PmI@i=>-S6Vz!div9Kk%mn1 zV%1K+9-?mw0jq*I<#R$i+1bCnoP#nJnF}arMqSWcOUB)+Le56pGRD`5xI*W}4<0l| zXA8+_SH!F|Gd=HGVt1u@t_o|X-VPE)hrwJ8PgLlwGiod~S(A~Ufm{*;?FF`F-olB} zKW?E^zHawjPhpDy!iT1YV)I^#Bvf+0xyINAE^SxVgf1dI+zA$zIO>QkvZGR1FuzCQ zA3QA#qNToqG8411gG4xef9C+$KLG=&=A)7nLDPogcmL6&Vi4%kI&@nimO}Ujn4o&D zsU-v;OX}+BxdYv5ubf;|9iKVGG2p^`a6-;pl_JDz2)EZnQb6r`L^ccVk(K3wh(?XZ zP({oM>WAp)E3kdQbFalDAlw8ZNlbM_$++M7{o6v5d<$pvcS8ajx18q&#J=qR`q0qX zVeYlsfq*ROR$36=dxb>Wu2e%6*5gI+*ds1OTL&%YQ zNAydGycMlSoOD9m^OLndtwrL3?xI6mJA4wY6hl)giewSSh~D6Lx@I-RO-oO}2~=-M z!zcgNs`xT6aPx4ds8N33NXF$_cZ_rwel8*k zXo<+neUxjvWFF8l3y@Y6*q|D?GGgjhXClwj~Ipt2q+X|B!*Am<3p+n z4Vfe6dT=qAIb&yVV_^5lC+s+d!H^p*UpC4wjnfF)Vz3YHLeZdE-LGHl$;rut228-P zL2ge#bqfp*03?aH<_V~vN)sLniO=L^*z$KyOhhIKF5+0K2w!L%lPne^yzTjLfg~IN zBFS*`rZmAo2jyIr<|i;7#Jb9@GzE*EV3d$k(K3jqCqSH(qORea(S+ z;E35$+vUfBr>Ezqq}f3%=r4G-n-m zVnW}@Yk^jwV(cYc7~-!`#?mHl;n@UW>jP~xw~}hq9!8D5b3YZlAVk3Zj={>iHZkE&>`g7XzvXalBh@Cgkj{w+!*g+Mbzn-FWHyVu`?V1fZOF& z{Qdll0a1Q5H4QkuS|adS#u>$!m>5DKbmWPHVdv`V3RbckPcOiUP8?__l0FDR;N7vt z(ym)~1qCae}GgZs(K?&4|KXL>9PT$L;mbJVcqO8ao zQePB+jzqdwy42mo$5V|$BKc7)GSgFy$1%6MFg+L~Y1GWBfzN!-#wOYAFJ9BFVB9F< z21kNb0d}&V-09WZw*$Pze0e^fn{~swD&$2<|FycD8EYcYYt6>PBRZ3C2?fdwG8raI zLiHCLx-M|8`K6hw*jNU#O&>hL*i%(dt@I4 zRlyAUZ0@jnMyWNXeg=jujvP4x_9&a^i7{AXB0xTsyI|c5Hz1WxFoOqaOus^?G@(Teux~vTvFz~3#a1R3Ul*k;) zWUeV(#;BmC!ooK@_2Ta4Ch4;5w)D;im3Gc!q4y)Akg- z&Gs0$ZyyY#pbIBY`Z{xAq?ELIk|4{zQmM2a3e_HqI;V_&b8k4RjMLGx(pf)^PA zi&Se^3WFui2|{*9B6|~3Q=dv9r2ZL+LRBf`ZL1J*;~gzWl@vohtw-olN=RZfD;aEu zdgB7IiumZcm3=whQ*(0zH|iiEJL=9ix3p+}WZRN|>v9yUVa&uUhFVIn6W81KN6M`AxxFyn?c1{> zI8M9rBIz82l5nI?A5K9yctCayU0qoW)G%zGYR8Ka2{!XAVw4E#d^j}6N6k>4&83a3 zPPluSQyg!ceQ}{#*v991_YGzF)w4q}A28{aI8x)gHPo5Nt`Mr?*$J~dQ|C)qT zRlQsf-rzoWUQyReHC)U`y#q;S9d`^Qvg2TCMnN(-g!Dk7XQ$dDJ^yaQ9Ym%gIyyQv zSrGM&SUb0-q&=<6VMbovc~QZ6`G$DUpGSbKq>@?}p3J4Sv&o}j1jYUlyQDD_iEdqi zK+^pwM86{}+q2WFtR8+j6m#I%^ka0TAW+Sh2uYS#AyyVngwBM6ww#Ekp|yc26s*@Q zvR%>Jl;;mG;VzpSVsA8~0sB_oG5mk?cJiD&lL*-rrXd z6q)Vx`-cy?1G9SpfWOp++S;Cg;_|sIEr?{Ox?@zbr!Q#cj*;fBvzKEDmAEe5$vt@F zwDPpptl#@RKrkHe!&M_Z4Yb7>iy1i&pBZ(cd+RCM2L;VNXS>jjOe#a8(vTVE z^&*0rh*|hR+hfpYFZu|_O6vINkxQ)Ex%6yAdZYqn_CUE}h`Ez8ekkA^J1HR1f+#SOnww zckwMI(4>niyt}{Bc2MQ8>f|MuHDN(o8XD;`FCQ3($1}AZVw^Kw!NUNg78FemR;rT$ z&>Sa;L23+-cGVB#bmyAvP1Yl;Mw+9>L=Jk2N^tla6YX-bbqla8rJOAjY6mDXF31Eo zLyS?O7q(I&RR+Y~-F5RBEXww+TZ@DYbHj;AMsdhfW~ee%^Ao)hIBAZdrLK?rTeUC+ z+0#}>On~p%bBE0BIsAbbNjteWe>730piqOkGh>x=Eji7re4$Jk3|rRLFyCV{PF3~2 zXPz^}195cR;VQa$cY@?p>WFmy*c;r4`@P2f(cugWNDa^eucG8sNNx17kQ{Ws_J)S(V-^Lz~=F~BZW3zaVI>u)!V2$P@`5+l2bHW47KL>7Eh^HK?5 z2Ne3ATzuGj0Dl;XEgW*$a62=>^jTW_!kR+p3VowxLYS)szdMw3hdRvtgF<;26dDn6 zAblq~pFP`gynx%{tngJ66CDF#fRC%_PDEk`oDt9GD6IqQ*KQY?h|@}m%4GP0o;u!N zL7_a?^*;S;Cm;uazv#bg#f-C!J|A*V)P8Kx9^WRF}6G0_*gv@S00fm zx16T}kH<0zLM`?BEJnSMnEsvG=#Sj(;orTf-qZ-ov-)XUo3{l;1q#r zZ^fYe(CHy$V}CcL@DRmm@WkaaXYQ$+4UQhBM(nFOa-16<2**Gcg{^#0m7LpZ39uhI zdJf}70iZ39R;_Q`2!OKP1*Iv`6E3oL+O-Gurkc~9Ngt6K#D9on49ps3!8yGU2k*I5 zaT;yoKnkQk_@G%8`va=Gn_D6AfQt@@zc2xU>twz3^>-4f&h!r8(cWmK>?m_HvxnY- z+qZ3#Y@c3p#hF$#1w6n6Y7IuM`$k-Jo?})mYcgcnprNsm@Mq~RT)5D&*BI;UO*sQ*{^QKh+Y%4v~7*ur|{W*$+n$C%AU)F0jw1S`6Yy zPU&iE+xhc6bC%cTz((H%h8OSSQIG(lVIQ#8SbN`L*M3nYsosw~Jw1tGaeKBr0^0)5=(u~WESSfL z&ViJ=E&n~T-=J1}$7^(_v?m@sJUrm)so4wd|8rPz`6C9pkT}xR)sP*~oRJzH9IUu` zw6dn=9-eoDCxiqNp9S!quxWJDuloTboxs$>0pb~KrvEX09Ry`RT(-p1GEShHU8`Q5 zq^hWLcAn2gaTm11Xz(MP9*kPOK63Q!qelz~3fIuLg|67*u?A!+!!7~ksDoOPF_r763f1MLJ(x0ku5-qei!F`Yf&gvKf1y%t zVP)NS~V`zrAKuKmcemsooGcvv3y$hVx#t;ZvA6yXUZ zMB?o2m6T*B)G(?n9;HTv6K@u2b&Qlq)D-&ANLk`x0FhUW@K7{X5q*BIOJ8H(4I~@} zu7^)ULt+~8y;@Ct4S8x?E4vot)WhU;))8ktGbbl(*wn1qUX6Oh;>WHB$MxO}jfUkPL9=0zGDG=w zFMk*|5Ka{gvh{S#_k?H}`6aEFU5i$UhkfFehv_gI0z050jd|Yo_6O0PpM{5iqga`n zV?1NmIXr;p?I$V=-|(-G0+ZZ?i5KbQ{^YUkh>o%$#gmnoo0E;@l@0nfmH6%>5)^5p zK9f^Z7#fiy{3CqiV$?F7h4%J#B5N7b^gbTLW>?Tb2~W1fGG@#gGh6~x-**&AQ6!nR zY}s-fMqgT}Bch7P(05}Q6J2=~D#Xt<+eao0NojRBYU&h77#bR~BS?y8Ong`N#_%&D z@+HdR5)$QL!(!Gghad1*ZaZ<-`E89d0wKXKquI8a8r`3QXVRUku;wea7{KMZHP4LNx8n8Sh%BjSfLpE5JYpMxdwE6;;G&*1S4fd3Ej z-XUddTU5`VrwU5|<4ag*AQS303^V2teiJbs262FTPE@aE^6c5OUDnG)JtJ<<3L%JB z%pqk0mrt#ms#&%W|KY=WCN+oa$y5IKdL_0je?tZ6;HUr*htHfJeejB(=fWrqqZ3`cv_v&C@VjeNtYOg)6RB^ zD;d<7$(c_&P&1bKr8g}%Ph>o#f?N~d8>MXcT#hkhpsfy5oVbRBg$PwlZHR6kRyrJ$ zRCqq3{%AJkeeRr_=kb6v;aHYS&E;it<3gna9y$F?+%n-)mxkehlSp`Ol<}=;y5My; z3)rA@_?C3(n|{fl6&RcEZWVpE{H^I~sOak4&FZy$HEQ7YX8>{EeAt)uy#;@nK*oX) z&FE*YL;KV4(Ip~?2gs;)$ALfVOgm7NiARIQO^vpaH-kWSM^8Dkl#(Nn*7%&ijR+&a z4~O@&&PRddZ+sEa5TqS?pp+y|Vpd#IVjP~5)CQ4P}$ly*|UX+5ZU+aX|Yo(?MNx5EXh)`lw>VZQc<*MQ{B(AG1u?= zy&v}<_doaJp2sya*QENqm)GlDj^j9wS3+d}Z;fv1yc=h-lMQ__^*v;vSk3LTcG8WD zNZRHyz^C&+%O2=%`JUOR&s3&3iF=Cj?#-wng!E50jc`(n&Gwg(jdn{%_RLpVFh;Z0 z<7`G;8o`oGE4yQJ*dw(22!*&S-hF56aj!!|8ouBe``bbpqAJ(kQghmE);0b6MMs|7 z7b8b)=Jo+SWJtEzi;CCq*e^WF6*BYY^t1fR+kr>*BX-xkz#&Qop;G1r8(f$;eDlxY zg?sAxfc|<~TwQp2bvBQPN$%{d9IaNT&zwm#C~kv3FP=w`IC6_)i%#kd1!ee=bE9o!PFs)-~06+N%ZChfbY1vFeb4 z?)_!>4dvWu>o#_Qk(t?js&7HI#Do&39`Qkh7Te8dXYyG=i=3(0K2ltP*g5z-pLBMk z_Oq+{OVHSzcA8yW_^qr&)#Rl5xkkWm=e@k{G)=haRMCdCpZTcIldH~N=)#{dlD6#4 zwW+72(hyd>_``VstICqx3ne3rJ5Yp(Iik>kJ}^u39~|lF7CI&N<0KfIl&-Nuow`4L z5op#5by!e(qu;xZ*oocEH2oA(aM9YavrL{`Pi4Ai4ve@kyY!|6hNa8!l?qI|{O(yIi2v)~w(%59HQVZu;|V7OSj=ktMqB;iOd*}mjgNsR z;le?oj)epVAEaxS_?8*Q*0^FhVxQ&f&bZz2_A@;`iPM&L7muzHO%<=hmc&`5ftx-o zz2igclzg)brXsGD@qUwEjnTN(RqN&B$J0J|oD-rHYr-cLZK_aukh$ISKv z7q{||9n9%8g;g8Ux$|$!v#bliorYUatoQb#4`}TFENy_l1*Xf{HS^VggWFtIPc!sL zEy}dLZT=&1u}*{$u<|0O`$faSA^P+PcvKv&t>iGQ{ARgE1-dzTlhgE9GVs@B#G1(k zW7bk(4c`{_;KAf6C)9VjxkG8a(UDQZc7f|PQj(MJkU%cO8<}o!ytgE~>R=44LE+2A ztexQ-e*`^Om#0 zbG){GBN=+JTlo`e>GVc3zAp?&-7vp=q&oAJM8T*2MtxSjM%tYM+_lrXm(FP9}bV z3y9n8aI{fPFL(=yvIo1yX_ds__f)Y}yTZ0YVl6pkK}$?|6*URvl%EJChiiiweCEc0i(>1}&L!>&8a zTo<9GCE`px9%3Ka81L3vSHP4})4%>%b|msF74LnD07t7**O9Zr!ox+UJuMa$*yYEE zc|CLEo!gyuBHx&1!d&wWaWc9`dk8J{(k6SkRQ;WD7}Kh^0a5OqQw|xS`=g8 zguDL6KOz>Abws9~Gh!45I8sY^zPQf_%liX6I(F@Pkoq+=*>}o`JC)Ae`z~>~yKYnE zYm^@%@J9B*|3rIKxJM&2^7{2v8+1gR$(Avne+5Wj9%HKOk^HJ$n$dRx8|`jw0hRZn zNAYMWKIWX;vT)N(SNaG-(5g|x)ipFs{MsG&g5P!A=p}v^;>zP#@8SREUiYSy-*bJG zkdW!LtZlb$k2lnt-HjIL)0!W+4oimWHDH4%;X z)HbrYf1K zpUoZLNu+Ak*QV^ke-qHP5k;p1KWlDeMpGOF>zqdpt7lbo?XmMn-b6J)5sfDUYh9tg zdfebPgDzsv%9P7_qB(DBJ@P%){@slYzA|=Qx-EtW(**lM7&G5{c{TUr;~Rlu=Oo$A zn^#}#l%fDIXni$XtzapRq2U>^_Dd5;800ddI)?bW%fh>x-==lz9#;wyil{JDvAH3= z>|&<%B*Vc7dSQ$HM%e}ue4|y*twr5#c&J*`krU?U`t|E4Zm_^e?3czgbQtl8oC`#{ z?dYFwn{=ge-??kom06#uT>b!;+s2?3;=Au9xkiZZ4i(pb3}(Fgk+>tZeZP^kPnoqB z;lVhBeF*OFP%mX!&gPOuWs;J)40)>gm3fWC_m4}%2BasvSf>+Z^-_T|BCNv5&0=#9G$x0(_QU)43P6c0tnesBPH%N% zcwD<^r1SH~60N&VJFC49PT+C4Ocn{%C$V*3F_~P@(V(H+R-Nu{ z6!Xx+5u$L5T>G_ioy2%R>n4}cjX4KT(ZE+C`*ey_n7gR==3-S8R6-7X9&FVCMtlY( z6}!VRx*0lLZRS4u)yUAKlvq$V2iyuVQWBFNF}35-z=(c3G+vuBf!-=oE}%ZN&v0jH*v;H`nx0j4AGGjKe zn1E01l~sK{L0n}D(Nx=8I>s+aA8y?)6{E<9F`SqdSQbjY9*}n5 zjbLb6UZ$>bP0(T+t8sbt(n>XP@~Iterz`cdmGFEIW?z==kn)EUm2eAI^c0kVyq*X?E~F0nHlXKaSqu z0;35;_{^{V-d_qay*AdWn{n9=WuXql&_c1RmTEapv|>vEEGrK1_6vXFJUlOZ6K0op zZAzKl%(EwqTZA~^mh|4$2I<>F4`zq!{$aJyLi_~+-eB$J9dgx6eaMg#l{B{y%w8W$D*9W+CdpJXx;~^MO-{Dv9B-B4Ky!^CULJ4}8=$FqUh31Zk)2 zzL8<4iRh>ciue&h(~I3TFyysQH7Lo+$uaX>jyJN_M3g^9QZe*doeuhyK4PR(`Ha(( zUgZRO=kL6+MFwwNjvZ48OLCo>JOVgP_sqZ^J+=-xjPA70Y`j0NM|i*k6owWT7k8q- z+LdrpYu$?YVW!IOs}8z^f35iTwN|xyis?R?Lzn?zQp}t3lF0vHj2E_bNuc> zq>0l-sOqxQyE$bSRmWn(=3&6hPV@@K<`*Q@(xxY#p2YAFqHp^%ZJnz64;^Z(T}@?h z&5DaUi;k;epm)3i#TFN+@T$@RLnkx`1homs5yIAm)x zvmZu}MgX_j9cAV#QR_#EwZ|ueA6IXQKkP}5LJJ*>G=$*B{!eDpKph(~I^#;OLaZys z##XBqW&kDM&Hi?#)+MBmGo(XA6}Un|b;yLyx=)n6ZW6Nmi_Owjhy4AfT+E6sI`KmY(-QbaNSeYZ<09 zDcemugRrH4e}!0y-Md2sq$bm71jK@6-~1S{q>uPZ{SP<-nN6_Y^6C=SEo^nhd^+8* zHq)E8e7SYVz*IL+?cn~WG;DX1qIKV`r8oo&cMaU135fB5%7p-75IG>3OpHlu=$-i~ z1yB(h6MM}_c3b&sz?ce=Ov_OJtf=VZOW971wt}1W>fQU(mTNwz)VW#YVf97&yXf?@ zP;TxD67=-J?`k_VZCD?TL09;?V-=@bxgHo_Ui@VAN0@^fX~Ntf9j{N{cXj5+(@l4c zli5HbVPL3x4h{AsOjhLBiI57&0mdA zc>fGX^H>-@!?Gf@ATD+hQIQ$zN#yRV1Upp10xqnN+*Yd`8j@(EIefSbVc$seM(#15 z3dO?YSO8L1*pHa!l@ZkHlklN)sWiTu_LHc)#=vTWc~{52RTe$|8$z#scVSYi$L2u^ z3usinm+3rrIo9_ucs2}-&bfwc)#e8x_425R3_vCiUvsvmO_48@%!x1qxQL5@%2UMCEZ0gga|MMqFG2 zFzqaFkCtzplR+r%>E`^EacwC2?xt;f_dtSwT zAm{h(-+w!*a+DC_*F`g2pR6WuU{~X12|K7Eo za$d;er%zi`@X1sHYLaJER?R$;(x$3sm``^pDa<%GSlS-GSDjT;Avy0Tks%;vEa#(fFAuZRf#2f3kAqpAC zKoQ-Dj0eLJIwQy$Z)9{eD)8sj6NBgfMj;|W74@&SQ+aFJhjQd1AW5>`nVjHLyjUQ@ zlsGt@u#VR&S9N10R~jWX-GcD5^*rP6ssac$7n|D zQx;q=u#$GRlQS5a^X#*Wo?WWeG-F(o9;%$KS)Q`?=ARvb!P?v(+#RpZE?v8lQFhV! zN~3W)XAVi614kN?;N+(IZz^vA0N$!zuUx%JG7xLPR%7tje7;G5zyAkbzkT@1UUj4M z|NSF&QJovFp^bC)SbIyk_T!mR0G9X{1W<%gJ@F3cY&-GScmDeU#@+uv zkL=f>`v3mQ|E^@R#xE1W|N9pV`M-<<{=JU>Uwx}lU_rAZ0iJk~!|o9MOxBtFUl+s3 zUquMa@>uXTgy-1Udz{rj{{EH{`VaJ zyXgmI@vmP;-LZMv@&C_oe`hSrXIg z{p&Ku=d>BzVh0T@ z%Tbiy?CC)E6yFlz?ZE*MIA6$_`0Ez@d$5SE04rsE`cz*b2gY2uV3efsui*rv{~F26 zGBTKdcGMJxIH-rtAUvFV*~CLmU2Zc69QSgG1l` zciYCi>!t(qGV5H__`$tHOWscYb&Ux+zfQOMbxCy(#DC#`#|{0r9{BDfOMOk>wd;}b zoA2e;yK-|=ty}s(pE9M#j0@xcHTU~O7(eb$WJVP=uMUYkJg9-e z6y#DeE>58`kNlr%-PK1>RO!gccc9(wfd{ZXm`m}yzOtkr@7m33EVq}Xf;(gjI?INL zW9bS^uDxZD@9`!d_2MnlF-#H{ydEG$%uTsP1#u7#ovx^BK|8V&wr~zm$=5d`0m6F4 z(dWf4qmyxyvn4!~-}G4QvxI|_WOOllZ9IW|j)Csj57d~( z#HxpLS4i$4{R0qBc4{!l6HjGB7H@Bo8j+&h|#l2XPh! zz6h~Vfw+LxuKx7+jMY1n_jHt9eB2xW@aPuW5zm>5-@_?SVsz$^zgv#(VZ_+@b!hA` zmr*@}_CgLyku7QhQutgOn_Wo#=Ye9ec;{t<-~BF=$mBy5An(!S#!+Vux50e1i`WFv zdrN_`E3X(RoB50`luMUN&IgCeF+X6q_izWo<740dvFnKis_@|PW%saY z*o_;KVh&iWAY=Cqb#0Cm{d)d|r%$>#xwrxKjJW+z$H}vYDCuIZe?KiS@|4k=gRR^i7&tnw$7W0*q z^Ln$p`Og9h(!r{&4hFO~GxJDs&ZdREON}rH7p~KA0nL_LY~nl@u}_p426=l0d6Gb; z3EN1kF%~_A*aagW3iV~it0V8BoKi<4^;^DSyE0FdwF5Dn801vGk`1yi1>jYLQH=Q~W|H?*Q;IUSAzx z2;eqo?H6-7S?PbrJr*4_@-JvcC8!Y` z)?XTqB}?{kY1`*^G}ZJ;+sIHQPA^-5zC|U4V}-r@UmZI(p+}SBDu)vDSP3s6`^Q8@ zNAHhtd^OiyD_JU z0%ZoH} zw-Xba2vBJ66!{*i5le;b_aRu0^tN>o|Z zHLF_9&4y?#pM*mdZ|Sg{k5J?q(~47)c4M^27)`iN*$kh;tACdAw#MOUS?8SkqgAU2lkY}ywvj`JU3FZ-`#8x zHwV;4jJ7bXnloq4R?$0>rR>wPN#wYF3>R*nfF)n2>TFY-=4a4=mI*1&Fp96NS^p*A zBbQo*M=DR4W;1(=^^Ns^ummU3p$x`724z=$1Ap)xE( zF1|o}p80k0HC9U?gD=$36R--czPepTwuj{A@@?JBtFlo7KB96Zc}YoUQv3 zk19rveuvD*@5B0ZAwney#|Rsq!f9bh^bt>FbIvi59+1~N4y@wz=pH>3Oa_c&Dqb#? z61gW|fsXzZe4h*Wo`314*nNpJAH66uZTpdO>;(J%NJCTzQq_jesVDk`y^0&PIJp{){UfxC_vsba5i2y~Z; z#kl~601S7yjBl*XkNmwzO@%^3_>8Mphe+d&E`u@r4s2`Q==|zW9yt-lF6~rIdoV)= zQ@9&=iQu^h%A_kx+%UTF+SRMaqcp^bfN+>l@p-C&a1DGuApD%=%acy}Ub=KxdMB5r{7dcjxC2e7?c^HZcbmwTt^=``j`!`cO^_}|HilMTl~TgL}oCSeZ@?Lw+Ez}fG-U+nN`U0 ze~+34MXeMknSSUu@6N6ws9yEu@T&H#SUGLOJeMUz&wrPdW?}8tReODF-c&p=(-j6$ zz+rADB~AUQeq~u%q?-*O%X$ovaT#hNgUn&jT;FR4!V+P7P=^a~I@7AC#Un}0`?1k` z@sk89fQ7mF@$&eKIO)g=7ubb3w39(E#rwmfYqnw}!gjj%SLDG%;)OlzJ)GS61yx~7 zQ=5sc2H+O~{nEFn#=rgcH>D#rLX#FPvTm$#;!>m_r2xz1i3bfn2;8@qz%S-cSe$LW zlla?KUb3P#&2qvlSc8VQM*ij_^TePfEkR!t%2hGMSiy-^R%($Iu^QgDS{tckJ=W$O zBscNFuB4-bth(C>J1Gu!1C1!YtP5XzOtN!0&drH)+IRx8I;I8 z*6I4ATWSh+7Vj_kPFXOwp#wdE7&=iahK3!Q>mK-~WE}CjqPBt2jblL^IdWtxuV-)m z6#@C;<39imWQQ2R+yR%b&sQp}83{UeZP}~staRBb0P>2h$QsT=+I2)16Sc1JcXU+gvJZ{C9Nqj=rU zAtc+kZ#Q>51C%xP4aG8-Gxu%es?!}7Z>lWW#x}-*)(UH3U9JwIbRU=<7EKECcMS?K z1sgG9#OV&J`OdL~reV?NTV4-?Qrf@c znnF?zy^nZD^TRG%eA)@-xxmI|?)S|2Ac{;(66lE^d}(if5g0o7LWZa-l_Z`9u zYinx{f>wn&>Y=1Gp}=P9xlz_#!WwM_hP#6_9kji}MP*D(iKlfE&-K(6Ejip zejjSUl|d9)RGBUyV@Mk4ziTFIP$7lqK?G2x& zs%0Dxp(&B5jWAWS*nwjij?I2vnMF!4%%45WtGYwiu4?I~K6o>HV9{g`7~QK^1BG|& z8a$cXN35jB+(p$|Syp&h))9Nde&GH~DkG6J{M&>+TT7zO&eBj<9|u<@+B?u@aWCcc z4e>>yw$!Z9!jzb&5SmO1Z^m4iSTrGXUo^Gt!JGFYM(Vr~{wCCvVYDXxLz$Gi#s1$# z7(?&38b)`D|jj)}W0)mWddEq2AlHItRGlkECApM2tJXyPU1h;z z1`%d4&xr|Ye{{_#N<`-d&z#DyU0huCpsMH;&-3U#0C!%=B&L|Lgi%Y==J}4HNao=6 z=Hz6!h3=pjQZ`Yr@?Q_!TNL0dk;Gy zDSfOZOI& z3&VH)pBn*4DZzi4O4IkXv&M03fi+l8nl})+Vk^N#KdFypD}%J{JTPSkyNfMoH$PIC z`K)qR$#XwZXmi1<-YkRb)azNxR~Z<1d93tOta30~Ga8knXjkR5$cA=0RldtA;Ql~6 zGke5nW5lf(Q>3pC$}`~)3Xl72Awd0J>)r$1xCx-oK$XWcpatKv`$_gXPvgC zC!}woT5F_8-(b@C+1jl9wcn`4$oBZ1#gr>UN%Z1m9a1`jidDX0pb5PO4s6Bz>mJTwV8oCv`tGW8eUP4fueqtp zCC5vg>R!Xr;W*k`gASC>x<1sg;9ScVEwJX?&mXS7*X8lUhetPbd0O4}-z~V)sXOOt z?QMfT^*1!Wa$JSoN;>5Z09>gvuC_tAH5S!x>p%Y31|o5INX(jVtEmC;c)SDH@=)dm zw}Iq{T23Q2I22LnL5+oPC{w>vZ!=f7E49dnB1o|nx7f>{&f!8tD=|D9?~!^6IRYjH z$*CajB%5AXcMKVc-V9OKz>H>|Svn_~wpp+GE{{O4M=}zrQk22AuX&?KvCu@7voD2C zroMvQxzNF`D`w}NGTJMEBpVQYMU5V@>j8`O=;_msbZ>%Qff@YSIYmIlqjxEwH*el7 zRU9?X`q6qc=AD?{x;yqRLsj(@`SX3C0YrS(_NNJ`2vm!l(m>(0I^k1v&Ji=mE&3`u z!Z!L939iJ700T46g)JHnLjwoYZ&fI#ls{s4tEO=`an*k3RmyZ0VfN71y@ zj~gUNmWuV!YL&cIi>UU4&aa}w01l9|ajBH`myYBX|BfwGTMopTX&UY{q0EDybg>-u z>lGfkBsS1{UB14(-j=>t&ZVGZMeZucEP#B#`^cH9!#NrwJk^c~L#Ca^1G)$YCgC19 zkM?H=&ZooAYdPc@YI1HX?%o3D zlELOXI3TxajG9;q0~tP}aFMh|I1&XHX>Fk!(&1(RGCam!@TGDjR(N-v(cic7mTHASwujvb#!~4$vEyxj1Z+y zrSXJpmBo8^{@r?8(L%{_A=L4nU~+QO9b;t@u7tY6zrf@g!*!x~fX+XU>f!T?;J-k) zj$%zpy8Vd2`Q`Q1b(3es&;{11KM%L6q^6lCs125zfP+miEk8{kMv)?52_sA9*?V^GltYB6-Zj0vyu{oBIzkF? zn#@~VNTNw$(NA~N_Kh105j~F&LL4fbtYQuoPi5J&;UYzs?M5bG8FX>ad zZ!RC3c?0Bk0=LmK08EGnvBjif7g`@*L|Um1Qe~&lTA~nm zM`&U=1Dg;5x`Y)uaw%q@z zn0Y!eZLnRswz%Oj$Z3@c7&J(2ALIHY6~8QlWprZZMGv=lDEbD4-P9Ll)hU*IFaU! zPC%d+pd)nz^K-GKx2Il$u{La0GZpCdexWh(s~ zQis9l#-?4D0*fd6jUr1BGxG2rPEm}s@uzpjclZkP4B}l0g1n6>7IX~KWTdON8@%*+ zU(THP2wIrBS(So)D;v-mtLFE-J}SLlqP?XZ6Vp36{vsQT-|>*le{d!zh==&|^4w(* zqTz~qBDw*Ti<9JqiiyIc6~*;fzFj_Fj+J$*B_8tXU0x?37Mz@o6WTNfGtXou(K7iH zu%=ri##KBV*%Ooy=nC#rFb<~2K7Q&{gTA?5Rgo3bVhP|>UhArMkik(Xnj>L8n=zv&Cu3x|YLC_unwa$$`%qIH?AS;pxj?g?v5gufIW&5y| z;L;{?5CrW9C#d{qmG2bO5Ho;O>wO8(lWRXe9XoF;>vk%?e38#rihK~IaTE;XqDGKu z_^h-<^sxhonNvI;Sfv9wNS{Xy;Yk$3;%6e`=`0XWU*Fw8S9cI;4VjIPvIs!OUIE7I zg>5feVLZQ645>Rs_-nHy>TMme+jt4KQkg5}pcH@b`kyItdp1i+QJHx-!F%Dn`t`z} zR()cUO%%#|ot?LzI%VZxcF|CPY!s6)h-)0ovIA2vspp=85No2vU;Ukh6_`4_P(t&{b;$AXE`^zP-OKXx*lFj1CCJ!VpG_zy4_f)10|g+Fq@9YK3Pes_{-F zC8!%G4WfXU>dVyU_G=Qd{Ou_p#7L?JZpp6q$|{&TXym_@l)Mvm)P09UHrMGsQ7Ydw zEC}e7nG(3p^(Y zgPO+QhkFuL+BRNZ?>wO`^NMof+Ekq;71t`t%jFpPvDiw>`zS*1syZ|BNYvgwT*BmV z3p@rG0N9I9a9)V>%vlI_BmwvB>lYRH>pk?G&=j}q1d4IR)^#oPk&BdkdDT|25|5$u z3PxX=@|DLoyowSYufskUbHX@|Tn9=$GJH1B3%&@!pW(M+=i&Qe8y?|Z`&!PIcWr;8n%{L8VG$vOw;Y+ZHeHm)gTzn3u=}(*1zE+OHwX*-netwrXCbvKMj$to^RgNCLVBd=I3dU%L z1FKwpyu9k8Ia2^71w1X9U}IwPPTxb>zo5vyRLyQrf?u?HVx@b;c!w^DwTW-Wo{jPt zu>VkYz{rca=I%EON~(+<9n2P5WE8DEpK)TVNi;g3;&_WKthi7!<>b077Y zLWXXUK&FSbXwl+)aBxcnO!*`x`}!OPI^~oag>cD|lI$!- zl4GwszcV%kV$1=LJ6T`(^!Gk#!2mCg+vEpT6eZ)>jnHoIxgv-X88aE;NQM+z@ z&iAVQ|Eeoj70GEOco-|b@u@P~5TOb^vZ^ct+~>yqt4IK#BNS}Y{iV|`4y9@3u$^rP zRsdjz9R|>YwydY1FcnvOyHUuy6h++=nP!*-gWTsZI$Mset~YtKJ12nMjfvMC;ZADf z7`i57Dz7YCxbQa`neW#VE|y&R$&3zFk$sWtD0f8Y-|-Yn57q0QSadq2s9U04`i&1U zE8Iq1%+_@GIg{etEiw6VZu0$5?VL4h*Iv6@w#E5uO1qKnrKP3ug)0AkkI&(3zUVdI zB7L=G@|7t!rz?Lh^KV!^%8fVNh8Mnl^Eo}&oHBpxEZbTcJzw`%WVN{4$RUt&Y7%y> z_2B^IcqJ^BZi8$DUfllQ%9j*Sw;PITn|9Pa_j2=n>g-+6TJ;nXeaLDb$Vn7Z4QCW( z@BZ9;Yx1vj0nNU%wB2C_@t9El26E|1jd{94&Hy`<(5H8A=V(19zXw7<>=nN_s_Box zft2nde`K0xK6V7zvlbcHzU9Ys9~rR}shS%o7%u8tW4Qg_YeG=B|7_1+i8!nFLEHVu zeCB<1xM_ei<n33%b8qcNEPH%Lx%hfc7sY>n zE$H@S!OBxB53DXO|BT4FzoGYDrCb{9i0Ctpjhf3Qo^w0x z`RU^^OD}Wpf4@Yb&`vu0@cmj2?Q_YDdrg;N$g8MYLg`fvHD(bVu}(}ipt8Sr{AvkzhA#TZ@AC82Ho~h zG#atlO!=X#tdg7K5A5Hc!nIz4=rMPBj)*%@b3H|t59N|A@w2iZy6`z^QJ2x6p!AJ} zBi}`?8sDzJ@eBq`f_|9Ma>kS->%Yb*RsJyPw5AcHyo)!yr70=D=-am$)J4J9iobt1 zpv@RclN(c(z7fUJG5f3sJ$0q$DnYKV??SC`{NAFz?dHw*-n&2dowK)Nx!$1@MJ~Vn zcL!s7FH&z2H@R@4cQ_TXAFWRjzm&(Dou3~_YW|Fch~NO!tjgmAR7!HXIQ_;*o@=T{##X{yi1Q$i#0(PyQYYOZS{cCOa$3 z8(i38!>8VVcIxDhLSr!{8lU>CwmPFWmmPvjvdNk?VKS}0>f^nUMVh*gcRt`4PtK}4 z;$7~zwe9ZLQI69pi*`*~aesbl)p=JnyA2WbxueS}+S)TA_VS*3?qKxy?90u2T6FRv zy)PvX2Oy6>>2d$6%EOyIJ0zX=w#(5oM(zY1No_w@I+Y z)ro8*Gup=IVM~l!b{YP3;jEc>d<(@@)XZPIiC}YVN zkWoEYpzgD7wL;P9CFOr|bknsC=*yDwh(2ySlM;C8JQ{oZRjUl(bWCKaRTV@hobouO zXnPeJmSVw{YO}NYg2_?Wlrhjn^!%J|spO5_&0GXf2`gsX{9!7w*^FLYX|_BmMz@V@xP5JuVQsWx zKm`AZDPm-V#;#A|d@u>e4IBEy1ot=cJ-}l2Cf>gq`GdK|eyXZd41XRe0MPr#1}M*$ zP^ITGYjcGSGp~sSgS%p(L&tkVX$dVKLyITg*`ISN+SlJS$Pe5Aq}+6EB1cEO(wQ*9 zk1otIWpK0Y(=O z6@5wyWIR>ov1BXon0#0YmI+8r48XviBV}s3ye=9p`P=BXh%uJ?oSh93a6n@B2VI>A z5asf4fy>RCHyH=;Cx|>uOiV1e#Mr3Wxm0QEGcE zUdjBGRl9zM6M$t$U|!%pz&Ze`Gnbe;Ic(8H1b-&6PL8_C{H8TnGc11_X@EH61p@Lg z0E!74Uu$VysfV| zYeCnO2H%((xoW;c@F;%=7!hX8V(gRLD( zLqdP~sNf%TO;Pga;9`rZCoG}T5v>FwulfvT!D5)^_3>p|fQdd!30gcT)jn>}P_78q zWUYtuoev&NMe=1Fw%CB;5T+XDk=Z~=cKk{D7o%?1@k-x?78f` zya3|Q!LC{_d>^rF7O0<4y>J_|m4(_n&T!p-@TnG{D18%AvH3L0z* zWLpAM6NsKg%7CEVFE#dD*;jf`dtJe4eEHjT?C7U%lb{rJ4ySzc&EKf$uU7t{`k|H0 zr~9;)2L6UV64KZRx-J~z5y0GV|3QOhq^GCTWEstwbH4Yq(~HaQYae^)&E4lhYc9pt z6O2ErpdbWBG>@QhrQgksWh=lQCX>?K_V3?MZ#}pEKBSX``}ZfwLXp!~PgS>5HJ`y5RL{|#lu!YvaJrWL%9T&~fD@k`r#Nf& zm>M)GU?ksROxRVDeEBf_G4HO|q(jfiCc%UOTf)!UL^9M^;_4+vc3z z#kEKF7A##j`ZlTFBuJ)SBUahyR%0#ZD=%1t~!lw+N@bJdN#FM_0GkskH1XXi3sfl-JcY2keTla%Ccptk)B6vskz}@ zo>Ruw+fZ;lM=AbrLNTRaF00UFSF?8AQjW@^Qk>Pn;JC|?dg9>1VtYn;rNNBY!7iFu zV34s&iV_Fr)2KW{|7=Vd7Ff!YGnhH^?f3?fM5d*Z=tr#aYxZZ~IqlYt8ou)l7lW{N zfJ7YtDYG$Swkj=QOJO_fUQ<|GGaW#{kh}^+bzVZTtR=0SBEHqcN3R{~+uY!Y^kg

-S*DJ`L14KVa^CgeOPyk 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 literal 0 HcmV?d00001 diff --git a/microbench/lifecycle/results/lifecycle_data.json b/microbench/lifecycle/results/lifecycle_data.json new file mode 100644 index 0000000..222bc12 --- /dev/null +++ b/microbench/lifecycle/results/lifecycle_data.json @@ -0,0 +1 @@ +[{"C": 0, "N": 2048, "O": 128, "rep": 0, "ttft_ms": 2622.1298610325903, "decode_ms": 622.6007409859449, "e2e_ms": 3244.730602018535}, {"C": 0, "N": 2048, "O": 128, "rep": 1, "ttft_ms": 5035.966206050944, "decode_ms": 614.4816449959762, "e2e_ms": 5650.44785104692}, {"C": 0, "N": 2048, "O": 128, "rep": 2, "ttft_ms": 5154.69168999698, "decode_ms": 614.7105349809863, "e2e_ms": 5769.402224977966}, {"C": 0, "N": 2048, "O": 1, "rep": 0, "ttft_ms": 714.142931974493, "decode_ms": 0.0, "e2e_ms": 714.142931974493}, {"C": 0, "N": 2048, "O": 1, "rep": 1, "ttft_ms": 174.80234400136396, "decode_ms": 0.0, "e2e_ms": 174.80234400136396}, {"C": 0, "N": 2048, "O": 1, "rep": 2, "ttft_ms": 613.1551950238645, "decode_ms": 0.0, "e2e_ms": 613.1551950238645}, {"C": 0, "N": 2048, "O": 32, "rep": 0, "ttft_ms": 181.63492099847645, "decode_ms": 151.64763299981132, "e2e_ms": 333.28255399828777}, {"C": 0, "N": 2048, "O": 32, "rep": 1, "ttft_ms": 169.92324101738632, "decode_ms": 146.16969600319862, "e2e_ms": 316.09293702058494}, {"C": 0, "N": 2048, "O": 32, "rep": 2, "ttft_ms": 172.31316398829222, "decode_ms": 144.68226401368156, "e2e_ms": 316.9954280019738}, {"C": 0, "N": 32768, "O": 128, "rep": 0, "ttft_ms": 5622.758224024437, "decode_ms": 810.583260958083, "e2e_ms": 6433.34148498252}, {"C": 0, "N": 32768, "O": 128, "rep": 1, "ttft_ms": 7788.5780279757455, "decode_ms": 805.351905990392, "e2e_ms": 8593.929933966137}, {"C": 0, "N": 32768, "O": 128, "rep": 2, "ttft_ms": 7058.200741012115, "decode_ms": 809.2719879932702, "e2e_ms": 7867.472729005385}, {"C": 0, "N": 32768, "O": 1, "rep": 0, "ttft_ms": 4707.1176070021465, "decode_ms": 0.0, "e2e_ms": 4707.1176070021465}, {"C": 0, "N": 32768, "O": 1, "rep": 1, "ttft_ms": 9008.615329978056, "decode_ms": 0.0, "e2e_ms": 9008.615329978056}, {"C": 0, "N": 32768, "O": 1, "rep": 2, "ttft_ms": 8051.877580001019, "decode_ms": 0.0, "e2e_ms": 8051.877580001019}, {"C": 0, "N": 32768, "O": 32, "rep": 0, "ttft_ms": 5841.207611025311, "decode_ms": 188.54903295869008, "e2e_ms": 6029.756643984001}, {"C": 0, "N": 32768, "O": 32, "rep": 1, "ttft_ms": 8518.694756028708, "decode_ms": 188.50646598730236, "e2e_ms": 8707.20122201601}, {"C": 0, "N": 32768, "O": 32, "rep": 2, "ttft_ms": 7864.250976999756, "decode_ms": 193.97482799831778, "e2e_ms": 8058.225804998074}, {"C": 0, "N": 512, "O": 128, "rep": 0, "ttft_ms": 728.4340729820542, "decode_ms": 634.8835580283776, "e2e_ms": 1363.3176310104318}, {"C": 0, "N": 512, "O": 128, "rep": 1, "ttft_ms": 664.6796799614094, "decode_ms": 632.417738030199, "e2e_ms": 1297.0974179916084}, {"C": 0, "N": 512, "O": 128, "rep": 2, "ttft_ms": 410.0534439785406, "decode_ms": 631.1866460018791, "e2e_ms": 1041.2400899804197}, {"C": 0, "N": 512, "O": 1, "rep": 0, "ttft_ms": 95.32903297804296, "decode_ms": 0.0, "e2e_ms": 95.32903297804296}, {"C": 0, "N": 512, "O": 1, "rep": 1, "ttft_ms": 86.69768198160455, "decode_ms": 0.0, "e2e_ms": 86.69768198160455}, {"C": 0, "N": 512, "O": 1, "rep": 2, "ttft_ms": 86.6819639923051, "decode_ms": 0.0, "e2e_ms": 86.6819639923051}, {"C": 0, "N": 512, "O": 32, "rep": 0, "ttft_ms": 327.12496898602694, "decode_ms": 143.43970402842388, "e2e_ms": 470.5646730144508}, {"C": 0, "N": 512, "O": 32, "rep": 1, "ttft_ms": 706.4849309972487, "decode_ms": 143.21339299203828, "e2e_ms": 849.698323989287}, {"C": 0, "N": 512, "O": 32, "rep": 2, "ttft_ms": 970.4811199917458, "decode_ms": 138.52277700789273, "e2e_ms": 1109.0038969996385}, {"C": 0, "N": 8192, "O": 128, "rep": 0, "ttft_ms": 4131.300662003923, "decode_ms": 938.5443479986861, "e2e_ms": 5069.845010002609}, {"C": 0, "N": 8192, "O": 128, "rep": 1, "ttft_ms": 5790.499842027202, "decode_ms": 1001.3815849670209, "e2e_ms": 6791.881426994223}, {"C": 0, "N": 8192, "O": 128, "rep": 2, "ttft_ms": 667.2124259639531, "decode_ms": 645.1671160175465, "e2e_ms": 1312.3795419814996}, {"C": 0, "N": 8192, "O": 1, "rep": 0, "ttft_ms": 5141.556997958105, "decode_ms": 0.0, "e2e_ms": 5141.556997958105}, {"C": 0, "N": 8192, "O": 1, "rep": 1, "ttft_ms": 5749.518854019698, "decode_ms": 0.0, "e2e_ms": 5749.518854019698}, {"C": 0, "N": 8192, "O": 1, "rep": 2, "ttft_ms": 622.4338539759628, "decode_ms": 0.0, "e2e_ms": 622.4338539759628}, {"C": 0, "N": 8192, "O": 32, "rep": 0, "ttft_ms": 2566.6930489824153, "decode_ms": 155.39966901997104, "e2e_ms": 2722.0927180023864}, {"C": 0, "N": 8192, "O": 32, "rep": 1, "ttft_ms": 610.6696259812452, "decode_ms": 155.02595499856398, "e2e_ms": 765.6955809798092}, {"C": 0, "N": 8192, "O": 32, "rep": 2, "ttft_ms": 5785.52105196286, "decode_ms": 245.27249700622633, "e2e_ms": 6030.793548969086}, {"C": 32768, "N": 2048, "O": 128, "rep": 0, "ttft_ms": 672.5708569865674, "decode_ms": 853.154796990566, "e2e_ms": 1525.7256539771333}, {"C": 32768, "N": 2048, "O": 128, "rep": 1, "ttft_ms": 5643.10712198494, "decode_ms": 852.2008170257322, "e2e_ms": 6495.307939010672}, {"C": 32768, "N": 2048, "O": 128, "rep": 2, "ttft_ms": 673.4716359642334, "decode_ms": 853.2642320496961, "e2e_ms": 1526.7358680139296}, {"C": 32768, "N": 2048, "O": 1, "rep": 0, "ttft_ms": 672.9947460116819, "decode_ms": 0.0, "e2e_ms": 672.9947460116819}, {"C": 32768, "N": 2048, "O": 1, "rep": 1, "ttft_ms": 5632.6510579674505, "decode_ms": 0.0, "e2e_ms": 5632.6510579674505}, {"C": 32768, "N": 2048, "O": 1, "rep": 2, "ttft_ms": 685.9644679934718, "decode_ms": 0.0, "e2e_ms": 685.9644679934718}, {"C": 32768, "N": 2048, "O": 32, "rep": 0, "ttft_ms": 5624.487289984245, "decode_ms": 199.2717279936187, "e2e_ms": 5823.759017977864}, {"C": 32768, "N": 2048, "O": 32, "rep": 1, "ttft_ms": 674.4227990275249, "decode_ms": 199.34023398673162, "e2e_ms": 873.7630330142565}, {"C": 32768, "N": 2048, "O": 32, "rep": 2, "ttft_ms": 5588.859603041783, "decode_ms": 198.71050998335704, "e2e_ms": 5787.57011302514}, {"C": 32768, "N": 32768, "O": 128, "rep": 0, "ttft_ms": 10629.962367995176, "decode_ms": 1042.7065159892663, "e2e_ms": 11672.668883984443}, {"C": 32768, "N": 32768, "O": 128, "rep": 1, "ttft_ms": 15692.335498984903, "decode_ms": 1043.1572350207716, "e2e_ms": 16735.492734005675}, {"C": 32768, "N": 32768, "O": 128, "rep": 2, "ttft_ms": 10634.278179029934, "decode_ms": 1043.5610840213485, "e2e_ms": 11677.839263051283}, {"C": 32768, "N": 32768, "O": 1, "rep": 0, "ttft_ms": 10855.033353029285, "decode_ms": 0.0, "e2e_ms": 10855.033353029285}, {"C": 32768, "N": 32768, "O": 1, "rep": 1, "ttft_ms": 15949.58597101504, "decode_ms": 0.0, "e2e_ms": 15949.58597101504}, {"C": 32768, "N": 32768, "O": 1, "rep": 2, "ttft_ms": 10859.418225008994, "decode_ms": 0.0, "e2e_ms": 10859.418225008994}, {"C": 32768, "N": 32768, "O": 32, "rep": 0, "ttft_ms": 15834.861388022546, "decode_ms": 238.35640895413235, "e2e_ms": 16073.217796976678}, {"C": 32768, "N": 32768, "O": 32, "rep": 1, "ttft_ms": 10674.632200971246, "decode_ms": 238.6556770070456, "e2e_ms": 10913.287877978291}, {"C": 32768, "N": 32768, "O": 32, "rep": 2, "ttft_ms": 15735.035521967802, "decode_ms": 238.99846902349964, "e2e_ms": 15974.033990991302}, {"C": 32768, "N": 512, "O": 128, "rep": 0, "ttft_ms": 5252.030164992902, "decode_ms": 838.8174789724872, "e2e_ms": 6090.84764396539}, {"C": 32768, "N": 512, "O": 128, "rep": 1, "ttft_ms": 285.0615810020827, "decode_ms": 838.4164330200292, "e2e_ms": 1123.478014022112}, {"C": 32768, "N": 512, "O": 128, "rep": 2, "ttft_ms": 5247.092439036351, "decode_ms": 839.5037169684656, "e2e_ms": 6086.596156004816}, {"C": 32768, "N": 512, "O": 1, "rep": 0, "ttft_ms": 5251.212673960254, "decode_ms": 0.0, "e2e_ms": 5251.212673960254}, {"C": 32768, "N": 512, "O": 1, "rep": 1, "ttft_ms": 285.5950220255181, "decode_ms": 0.0, "e2e_ms": 285.5950220255181}, {"C": 32768, "N": 512, "O": 1, "rep": 2, "ttft_ms": 5249.9970899662, "decode_ms": 0.0, "e2e_ms": 5249.9970899662}, {"C": 32768, "N": 512, "O": 32, "rep": 0, "ttft_ms": 288.1336290156469, "decode_ms": 194.8392489575781, "e2e_ms": 482.97287797322497}, {"C": 32768, "N": 512, "O": 32, "rep": 1, "ttft_ms": 5258.001476002391, "decode_ms": 188.89945500995964, "e2e_ms": 5446.900931012351}, {"C": 32768, "N": 512, "O": 32, "rep": 2, "ttft_ms": 285.77856201445684, "decode_ms": 195.73098694672808, "e2e_ms": 481.5095489611849}, {"C": 32768, "N": 8192, "O": 128, "rep": 0, "ttft_ms": 7284.454459033441, "decode_ms": 886.0723180114292, "e2e_ms": 8170.52677704487}, {"C": 32768, "N": 8192, "O": 128, "rep": 1, "ttft_ms": 2252.070823975373, "decode_ms": 885.6825350085273, "e2e_ms": 3137.7533589839004}, {"C": 32768, "N": 8192, "O": 128, "rep": 2, "ttft_ms": 7287.232631002553, "decode_ms": 885.5364889604971, "e2e_ms": 8172.76911996305}, {"C": 32768, "N": 8192, "O": 1, "rep": 0, "ttft_ms": 7340.854128007777, "decode_ms": 0.0, "e2e_ms": 7340.854128007777}, {"C": 32768, "N": 8192, "O": 1, "rep": 1, "ttft_ms": 2244.4935280364007, "decode_ms": 0.0, "e2e_ms": 2244.4935280364007}, {"C": 32768, "N": 8192, "O": 1, "rep": 2, "ttft_ms": 7313.673258002382, "decode_ms": 0.0, "e2e_ms": 7313.673258002382}, {"C": 32768, "N": 8192, "O": 32, "rep": 0, "ttft_ms": 2244.318378972821, "decode_ms": 205.39685402764007, "e2e_ms": 2449.715233000461}, {"C": 32768, "N": 8192, "O": 32, "rep": 1, "ttft_ms": 7289.380786009133, "decode_ms": 205.53624304011464, "e2e_ms": 7494.9170290492475}, {"C": 32768, "N": 8192, "O": 32, "rep": 2, "ttft_ms": 2244.3198550026864, "decode_ms": 205.5884290020913, "e2e_ms": 2449.9082840047777}, {"C": 4096, "N": 2048, "O": 128, "rep": 0, "ttft_ms": 3991.63863400463, "decode_ms": 633.001334965229, "e2e_ms": 4624.639968969859}, {"C": 4096, "N": 2048, "O": 128, "rep": 1, "ttft_ms": 6423.19184797816, "decode_ms": 635.6502959970385, "e2e_ms": 7058.842143975198}, {"C": 4096, "N": 2048, "O": 128, "rep": 2, "ttft_ms": 6404.474611976184, "decode_ms": 633.7045449763536, "e2e_ms": 7038.179156952538}, {"C": 4096, "N": 2048, "O": 1, "rep": 0, "ttft_ms": 5024.260417965706, "decode_ms": 0.0, "e2e_ms": 5024.260417965706}, {"C": 4096, "N": 2048, "O": 1, "rep": 1, "ttft_ms": 218.7655169982463, "decode_ms": 0.0, "e2e_ms": 218.7655169982463}, {"C": 4096, "N": 2048, "O": 1, "rep": 2, "ttft_ms": 4964.461475028656, "decode_ms": 0.0, "e2e_ms": 4964.461475028656}, {"C": 4096, "N": 2048, "O": 32, "rep": 0, "ttft_ms": 450.62972395680845, "decode_ms": 152.63368899468333, "e2e_ms": 603.2634129514918}, {"C": 4096, "N": 2048, "O": 32, "rep": 1, "ttft_ms": 220.793966029305, "decode_ms": 152.18362800078467, "e2e_ms": 372.9775940300897}, {"C": 4096, "N": 2048, "O": 32, "rep": 2, "ttft_ms": 457.47345697600394, "decode_ms": 148.38339103152975, "e2e_ms": 605.8568480075337}, {"C": 4096, "N": 32768, "O": 128, "rep": 0, "ttft_ms": 5227.104032994248, "decode_ms": 834.0455970028415, "e2e_ms": 6061.1496299970895}, {"C": 4096, "N": 32768, "O": 128, "rep": 1, "ttft_ms": 5735.778502014, "decode_ms": 839.3324179924093, "e2e_ms": 6575.110920006409}, {"C": 4096, "N": 32768, "O": 128, "rep": 2, "ttft_ms": 5430.421528988518, "decode_ms": 839.2051489790902, "e2e_ms": 6269.626677967608}, {"C": 4096, "N": 32768, "O": 1, "rep": 0, "ttft_ms": 19767.440686002374, "decode_ms": 0.0, "e2e_ms": 19767.440686002374}, {"C": 4096, "N": 32768, "O": 1, "rep": 1, "ttft_ms": 19000.393452995922, "decode_ms": 0.0, "e2e_ms": 19000.393452995922}, {"C": 4096, "N": 32768, "O": 1, "rep": 2, "ttft_ms": 18874.21447498491, "decode_ms": 0.0, "e2e_ms": 18874.21447498491}, {"C": 4096, "N": 32768, "O": 32, "rep": 0, "ttft_ms": 16880.265624029562, "decode_ms": 194.37245797598734, "e2e_ms": 17074.63808200555}, {"C": 4096, "N": 32768, "O": 32, "rep": 1, "ttft_ms": 18671.995759010315, "decode_ms": 187.84850998781621, "e2e_ms": 18859.84426899813}, {"C": 4096, "N": 32768, "O": 32, "rep": 2, "ttft_ms": 18827.935320034157, "decode_ms": 192.57517997175455, "e2e_ms": 19020.510500005912}, {"C": 4096, "N": 512, "O": 128, "rep": 0, "ttft_ms": 5161.038128018845, "decode_ms": 629.8650890239514, "e2e_ms": 5790.903217042796}, {"C": 4096, "N": 512, "O": 128, "rep": 1, "ttft_ms": 4914.044548990205, "decode_ms": 628.3650430268608, "e2e_ms": 5542.409592017066}, {"C": 4096, "N": 512, "O": 128, "rep": 2, "ttft_ms": 4910.116966988426, "decode_ms": 629.2002300033346, "e2e_ms": 5539.31719699176}, {"C": 4096, "N": 512, "O": 1, "rep": 0, "ttft_ms": 112.64649598160759, "decode_ms": 0.0, "e2e_ms": 112.64649598160759}, {"C": 4096, "N": 512, "O": 1, "rep": 1, "ttft_ms": 334.4383900403045, "decode_ms": 0.0, "e2e_ms": 334.4383900403045}, {"C": 4096, "N": 512, "O": 1, "rep": 2, "ttft_ms": 102.44947602041066, "decode_ms": 0.0, "e2e_ms": 102.44947602041066}, {"C": 4096, "N": 512, "O": 32, "rep": 0, "ttft_ms": 2651.748332020361, "decode_ms": 151.33654902456328, "e2e_ms": 2803.0848810449243}, {"C": 4096, "N": 512, "O": 32, "rep": 1, "ttft_ms": 5405.860565020703, "decode_ms": 154.49790301499888, "e2e_ms": 5560.358468035702}, {"C": 4096, "N": 512, "O": 32, "rep": 2, "ttft_ms": 808.8750389870256, "decode_ms": 151.434927014634, "e2e_ms": 960.3099660016596}, {"C": 4096, "N": 8192, "O": 128, "rep": 0, "ttft_ms": 15969.269191962667, "decode_ms": 678.461742005311, "e2e_ms": 16647.730933967978}, {"C": 4096, "N": 8192, "O": 128, "rep": 1, "ttft_ms": 15008.873330953065, "decode_ms": 695.1191920088604, "e2e_ms": 15703.992522961926}, {"C": 4096, "N": 8192, "O": 128, "rep": 2, "ttft_ms": 15012.583939009346, "decode_ms": 678.5469150054269, "e2e_ms": 15691.130854014773}, {"C": 4096, "N": 8192, "O": 1, "rep": 0, "ttft_ms": 7057.054870994762, "decode_ms": 0.0, "e2e_ms": 7057.054870994762}, {"C": 4096, "N": 8192, "O": 1, "rep": 1, "ttft_ms": 7253.246881009545, "decode_ms": 0.0, "e2e_ms": 7253.246881009545}, {"C": 4096, "N": 8192, "O": 1, "rep": 2, "ttft_ms": 7289.37086701626, "decode_ms": 0.0, "e2e_ms": 7289.37086701626}, {"C": 4096, "N": 8192, "O": 32, "rep": 0, "ttft_ms": 7315.68243104266, "decode_ms": 193.3563009952195, "e2e_ms": 7509.0387320378795}, {"C": 4096, "N": 8192, "O": 32, "rep": 1, "ttft_ms": 7780.287707981188, "decode_ms": 200.99342102184892, "e2e_ms": 7981.281129003037}, {"C": 4096, "N": 8192, "O": 32, "rep": 2, "ttft_ms": 7812.988903024234, "decode_ms": 200.84698597202078, "e2e_ms": 8013.835888996255}] diff --git a/microbench/lifecycle/results/server_breakdown.csv b/microbench/lifecycle/results/server_breakdown.csv new file mode 100644 index 0000000..aed0c8b --- /dev/null +++ b/microbench/lifecycle/results/server_breakdown.csv @@ -0,0 +1,94 @@ +D_promote_ms,build_params_ms,completion_sig_ms,d_to_p_dispatch_ms,delta_to_pull,events_seen,full_overhead_ms,n_events,num_local_cached,num_prompt_tokens_P,num_send_blocks,prefill_compute_ms,prompt_tokens,rdma_bandwidth_gbps,rdma_bytes,rdma_num_ops,rdma_transfer_ms,remote_total,t_D_get_num_matched,t_D_recv_complete,t_D_request_promoted,t_P_prefill_done,t_P_rdma_end,t_P_rdma_start,t_P_zmq_received,transfer_id +1.572544,128.810689,0.429406,157.586296,11,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",180.077196,7,0,11,1,-128.19752,11,0.6330776134029652,1572864,96,19.875781,11,343433675745977,343433854250629,343433855823173,343433705134753,343433853821223,343433833945442,343433833332273,xfer-1f4a9d22-d840-45c1-9643-e93b1456a9e2 +2.191308,0.903295,0.506658,1.640978,978,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",77.893983,7,0,978,62,64.728703,978,98.46478694228644,97517568,96,7.923041,978,343528336446320,343528412148995,343528414340303,343528402816001,343528411642337,343528403719296,343528338087298,xfer-464cc62e-38aa-45ee-affc-01c3763aeece +2.093855,0.913908,0.396394,2.31242,994,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",80.174358,7,0,994,63,67.058527,994,107.13559177722512,99090432,96,7.399254,994,343529586703278,343529664783781,343529666877636,343529656074225,343529664387387,343529656988133,343529589015698,xfer-f1f3be4e-2eff-429d-811f-c3638c668fad +1.938306,1.154961,0.442667,2.36916,967,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",131.651798,7,0,967,61,118.149768,967,101.03515838490675,95944704,96,7.596936,967,343530839741058,343530969454550,343530971392856,343530960259986,343530969011883,343530961414947,343530842110218,xfer-fcc5b5ec-1deb-4656-bb5e-23ef9cd0ac6b +1.824815,1.547935,0.503381,1.881943,3799,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",307.631595,7,0,3799,238,273.494352,3799,105.52574869264141,374341632,96,28.379169,3799,343534160883920,343534466690700,343534468515515,343534436260215,343534466187319,343534437808150,343534162765863,xfer-29788e04-6a5f-4a8e-8978-398a6daaa92b +2.073684,1.602135,0.438767,1.752684,3818,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",261.321543,7,0,3818,239,227.201904,3818,106.44473629804281,375914496,96,28.252369,3818,343535656022234,343535915270093,343535917343777,343535884976822,343535914831326,343535886578957,343535657774918,xfer-db2d7198-6d26-477d-ac10-871ec5ea5148 +2.324107,1.562191,0.509916,1.838758,3802,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",259.489254,7,0,3802,238,226.118274,3802,110.36011840798396,374341632,96,27.136008,3802,343537102377332,343537359542479,343537361866586,343537330334364,343537359032563,343537331896555,343537104216090,xfer-f19a4010-772a-43b2-90de-6c715413b021 +2.148607,1.898994,0.719288,2.363097,15447,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1490.131939,7,0,15447,966,1368.83197,15447,106.46487520279301,1519386624,96,114.169983,15447,343540566337482,343542054320814,343542056469421,343541937532549,343542053601526,343541939431543,343540568700579,xfer-ec05665e-ac9b-4832-becc-dca0db14483c +1.8382,1.614592,0.637042,2.790011,15476,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1489.352525,7,0,15476,968,1369.766518,15476,108.07092176557302,1522532352,96,112.706162,15476,343543280564385,343544768078710,343544769916910,343544653120914,343544767441668,343544654735506,343543283354396,xfer-3f66e703-8daf-4ddc-ba56-4109b68da614 +1.651487,1.756148,0.616415,2.184321,15445,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1485.680928,7,0,15445,966,1365.595974,15445,106.73917913395768,1519386624,96,113.876583,15445,343545994724766,343547478754207,343547480405694,343547362505061,343547478137792,343547364261209,343545996909087,xfer-7ae5e4c6-b064-4c57-8ac4-32393a61e587 +4.486239,2.118211,0.759601,2.145119,4292,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",303.914144,7,0,4292,269,263.51647,4292,109.58132928677931,423100416,96,30.888504,4292,343550691814399,343550991242304,343550995728543,343550957475988,343550990482703,343550959594199,343550693959518,xfer-92dd2241-80e7-4702-85ef-7912f7295b88 +1.663587,1.230762,0.400916,2.194673,993,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",107.269862,7,4272,5265,330,94.334755,5265,106.47487733320762,99090432,96,7.445169,5265,343553031975478,343553137581753,343553139245340,343553128504906,343553137180837,343553129735668,343553034170151,xfer-c72bb028-34b1-4360-8090-75271a6865b9 +2.671227,1.545351,0.613908,2.21666,966,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",336.952311,7,4288,5254,329,322.664443,5254,106.00567622952518,95944704,96,7.240722,5254,343554329552947,343554663834031,343554666505258,343554654434050,343554663220123,343554655979401,343554331769607,xfer-1c34ca70-07de-4cbc-830b-545e04a367ec +1.692747,1.320752,0.393379,1.902381,973,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",104.54372,7,4288,5261,329,91.983782,5261,105.86010386061776,95944704,96,7.250679,5261,343555856846157,343555959697130,343555961389877,343555950732320,343555959303751,343555952053072,343555858748538,xfer-0e598b68-c64a-48ae-a05f-4fce97806bda +1.965025,1.466853,0.52114,2.64554,3797,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",584.692369,7,4288,8085,506,550.780198,8085,109.64250888375697,374341632,96,27.313613,8085,343559156048349,343559738775693,343559740740718,343559709474087,343559738254553,343559710940940,343559158693889,xfer-9eb86222-d272-42f9-a52f-e88c05919600 +1.923668,1.717304,0.47073,2.98248,3803,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",353.426929,7,4288,8091,506,319.055549,8091,109.78888139463592,374341632,96,27.277198,8091,343560936583031,343561288086292,343561290009960,343561258621060,343561287615562,343561260338364,343560939565511,xfer-decfe301-4967-4e45-9ecc-e415b15b2ac7 +2.89904,1.858012,0.797347,2.92545,3804,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",582.360418,7,4288,8092,506,546.83155,8092,110.71503391675684,374341632,96,27.049019,8092,343562488895366,343563068356744,343563071255784,343563038652366,343563067559397,343563040510378,343562491820816,xfer-066515a0-7a07-482d-b30f-f34a5da32cb7 +3.116643,1.557379,0.724347,2.912104,15438,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1858.749822,7,4288,19726,1233,1739.911126,19726,109.85890979175518,1517813760,96,110.528223,19726,343566288890759,343568144523938,343568147640581,343568031713989,343568143799591,343568033271368,343566291802863,xfer-ae972fb5-5a36-4f29-8340-7db5b6dbb9a4 +3.217173,2.021348,0.720628,2.820507,15446,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2165.022861,7,4288,19734,1234,2045.068935,19734,109.33368837951441,1519386624,96,111.17427,19734,343569386870590,343571548676278,343571551893451,343571434760032,343571547955650,343571436781380,343569389691097,xfer-b184470f-70cc-42b5-9da4-8d3d708c1057 +3.291156,1.326134,1.574012,2.990072,15403,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1855.046099,7,4288,19691,1231,1735.169482,19691,109.46580835456497,1514668032,96,110.695243,19691,343572790365501,343574642120444,343574645411600,343574528525055,343574640546432,343574529851189,343572793355573,xfer-3bcf9d3c-ca14-4c77-a6ed-fcbab5dc6eba +2.516234,1.866632,0.728605,2.676584,13115,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1771.14403,7,4272,17387,1087,1668.710164,17387,109.01684639798798,1289748480,96,94.645811,17387,343577884306931,343579652934727,343579655450961,343579555693679,343579652206122,343579557560311,343577886983515,xfer-024c8a47-9da6-41d2-80ba-e481953320a4 +3.022996,2.496474,0.437547,3.427936,966,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",198.121311,7,17376,18342,1147,181.654195,18342,108.37898421710993,95944704,96,7.082163,18342,343581716140593,343581911238908,343581914261904,343581901222724,343581910801361,343581903719198,343581719568529,xfer-4300630c-f889-4514-b34c-fef12a8925c2 +2.374258,1.515796,0.537708,2.937961,966,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1866.282319,7,17392,18358,1148,1851.699694,18358,106.35555699661711,95944704,96,7.216902,18358,343583151547938,343585015455999,343585017830257,343585006185593,343585014918291,343585007701389,343583154485899,xfer-4f994371-8c35-4c72-984d-ac4018a001b3 +2.958061,2.137306,0.433389,2.643298,958,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",197.54015,7,17392,18350,1147,182.146298,18350,104.54110181425735,94371840,96,7.221798,18350,343586258882017,343586453464106,343586456422167,343586443671613,343586453030717,343586445808919,343586261525315,xfer-cbef70fc-5e11-44fb-9f8b-3cbf4314f9ef +2.650836,1.466464,0.881933,2.929782,3789,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2265.525265,7,17392,21181,1324,2229.561205,21181,106.37222604779124,372768768,96,28.035045,21181,343589699430922,343591962305351,343591964956187,343591931921909,343591961423418,343591933388373,343589702360704,xfer-947e1adb-7842-46d9-b865-70a07d6f909a +3.017333,2.621991,0.471187,3.57172,3799,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",649.59573,7,17392,21191,1325,612.62619,21191,109.74820038135677,374341632,96,27.287309,21191,343593213139077,343593859717474,343593862734807,343593829336987,343593859246287,343593831958978,343593216710797,xfer-00759ac2-addc-4716-9983-3d484f37fe85 +2.83588,1.611923,0.642583,3.288654,3827,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2269.97943,7,17392,21219,1327,2234.057575,21219,109.6437992993817,377487360,96,27.542815,21219,343595111474468,343597378618018,343597381453898,343597348820697,343597377975435,343597350432620,343595114763122,xfer-ac31cb90-7b9f-4bfb-8a39-b83668c9c229 +2.598281,2.064127,0.607766,3.3877,15416,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",3011.682064,7,17392,32808,2051,2892.258285,32808,109.50957488227085,1516240896,96,110.765905,32808,343600650677233,343603659761016,343603662359297,343603546323218,343603659153250,343603548387345,343600654064933,xfer-aada3659-fde4-4458-a5bc-94c10ca07899 +2.688431,1.357478,0.584424,4.345204,15433,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",4668.338106,7,17392,32825,2052,4548.741312,32825,109.76651693625213,1517813760,96,110.621257,32825,343604950470092,343609616119767,343609618808198,343609503556608,343609615535343,343609504914086,343604954815296,xfer-b71c9bcd-2122-4bcb-b1d3-756106b9b20a +2.675303,14.913805,0.747011,3.301697,15479,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",3074.489807,7,17392,32871,2055,2893.557117,32871,76.46359553289831,1522532352,55392,159.294874,32871,343610909483629,343613981298133,343613983973436,343613806342443,343613980551122,343613821256248,343610912785326,xfer-43467105-6488-4bc9-a37b-2f650259524c +2.87329,3.545183,0.429664,2.861884,976,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",84.420309,7,0,976,61,63.928877,976,71.1926882297688,95944704,5856,10.781411,976,343923141873975,343923223420994,343923226294284,343923208664736,343923222991330,343923212209919,343923144735859,xfer-7e279c04-512f-4f08-8960-7ad2b6e33fcf +3.138747,2.183392,0.409532,2.725953,965,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",84.64734,7,0,965,61,65.379252,965,71.00135868358657,95944704,5856,10.810464,965,343924400841889,343924482350482,343924485489229,343924468947094,343924481940950,343924471130486,343924403567842,xfer-f2343b70-d024-4c83-96ff-590fc1a8a9a7 +2.406195,2.445786,0.436976,2.704908,972,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",84.823867,7,0,972,61,65.885681,972,70.13296046415304,95944704,5856,10.944321,972,343925661522710,343925743940382,343925746346577,343925730113299,343925743503406,343925732559085,343925664227618,xfer-bb2b31e5-4ff7-409c-976a-f76eea44b515 +3.595002,2.322323,1.033232,2.746885,982,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",87.151933,7,0,982,62,66.350372,982,70.25686089999576,97517568,5952,11.104119,982,343926922550555,343927006107486,343927009702488,343926991647812,343927005074254,343926993970135,343926925297440,xfer-1c4d0cd5-3371-48c3-9d43-fb19272b9346 +3.594882,2.939953,0.441969,2.742435,972,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",85.059198,7,0,972,61,64.269469,972,69.33366382156527,95944704,5856,11.07049,972,343928186677060,343928268141376,343928271736258,343928253688964,343928267699407,343928256628917,343928189419495,xfer-82f41e4a-ebce-435d-ae64-9d085385a474 +4.232759,6.040593,1.062792,2.993056,3839,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",281.649207,7,0,3839,240,224.455213,3839,70.45172968753798,377487360,23040,42.864794,3839,343931451915366,343931729331814,343931733564573,343931679363635,343931728269022,343931685404228,343931454908422,xfer-14c09ca0-184a-430c-848e-0bee7a90a832 +3.615952,5.927463,0.697803,3.01182,3781,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",276.929258,7,0,3781,237,221.153959,3781,70.13150462530673,372768768,22752,42.522261,3781,343932919215085,343933192528391,343933196144343,343933143380864,343933191830588,343933149308327,343932922226905,xfer-3237e223-ba7e-437d-923b-4ec77495c7f7 +2.447002,5.858704,0.495866,2.810846,3811,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",279.094026,7,0,3811,239,224.652015,3811,70.21584277020796,375914496,22944,42.829593,3811,343934384634236,343934661281260,343934663728262,343934612097097,343934660785394,343934617955801,343934387445082,xfer-caee6ddc-a766-43bf-a77e-04052215a01f +3.64398,5.597882,0.822779,2.946601,3815,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",279.546476,7,0,3815,239,223.590559,3815,70.02768021879314,375914496,22944,42.944675,3815,343935849174273,343936125076769,343936128720749,343936075711433,343936124253990,343936081309315,343935852120874,xfer-f7a389fd-d54f-40fe-8127-9ba513e84e9d +3.158833,5.423762,0.480652,3.399984,3810,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",278.521197,7,0,3810,239,223.086016,3810,69.98323250399388,375914496,22944,42.97195,3810,343937317705345,343937593067709,343937596226542,343937544191345,343937592587057,343937549615107,343937321105329,xfer-dba542a7-c091-40c3-9256-9052733c5d24 +2.802117,23.002515,0.720612,3.127717,15409,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1574.36384,7,0,15409,964,1360.445676,15409,65.8286370433163,1516240896,92544,184.265203,15409,343940799169801,343942370731524,343942373533641,343942162743194,343942370010912,343942185745709,343940802297518,xfer-da6c5ecc-3e4b-43b1-9912-f3469c3d7cce +2.758942,21.13861,0.691324,3.957685,15409,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1573.549032,7,0,15409,964,1360.44069,15409,65.72285498263587,1516240896,92544,184.561781,15409,343943602871270,343945173661360,343945176420302,343944967269645,343945172970036,343944988408255,343943606828955,xfer-c84e0b7e-add7-46f0-b56e-324f69881210 +3.382336,20.296695,0.817298,4.003918,15406,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1561.557037,7,0,15406,963,1359.195631,15406,69.69552213786865,1514668032,92448,173.861159,15406,343946402149766,343947960324467,343947963706803,343947765349315,343947959507169,343947785646010,343946406153684,xfer-4b2cb6e7-14c2-464b-90f3-0fe2f69eb9f5 +4.027914,20.186346,0.851076,4.357565,15423,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1561.46888,7,0,15423,964,1360.537359,15423,70.7248834956517,1516240896,92544,171.50862,15423,343949189682339,343950747123305,343950751151219,343950554577263,343950746272229,343950574763609,343949194039904,xfer-8149fb3f-0181-45a9-96a1-71e3b5136cef +3.404981,19.958405,0.599572,4.462838,15407,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1556.477919,7,0,15407,963,1357.418939,15407,71.0139960583517,1514668032,92448,170.633184,15407,343951975310914,343953528383852,343953531788833,343953337192691,343953527784280,343953357151096,343951979773752,xfer-0d61490c-f4d1-41d8-a5c6-d3c3cb7458a2 +2.78986,2.343292,0.424066,4.00012,11,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",187.404757,7,2128,2139,134,177.496682,2139,35.87563330928873,1572864,96,0.350737,2139,343956737870164,343956922485061,343956925274921,343956919366966,343956922060995,343956921710258,343956741870284,xfer-d75ad3c4-ddd5-45e6-aede-e215396b93a0 +3.537035,2.412897,0.449823,3.840924,978,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",97.132421,7,2128,3106,195,75.942308,3106,71.24939462624278,97517568,5952,10.949434,3106,343958952635219,343959046230605,343959049767640,343959032418451,343959045780782,343959034831348,343958956476143,xfer-2b154013-682e-4689-a07c-a5b36b18117a +3.954325,2.724032,1.589472,4.043707,959,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",249.556472,7,2144,3103,194,226.668644,3103,71.38368721287195,94371840,5760,10.576292,3103,343960234489131,343960480091278,343960484045603,343960465201482,343960478501806,343960467925514,343960238532838,xfer-e517397a-fa5e-4c9f-9938-bbc0c04a8a05 +3.054987,2.706184,0.439188,3.920979,952,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",98.80282,7,2144,3096,194,77.537773,3096,67.74896221715768,94371840,5760,11.143709,3096,343961669217996,343961764965829,343961768020816,343961750676748,343961764526641,343961753382932,343961673138975,xfer-e45ed7f3-8a58-4b93-ad80-501bac02d42e +3.911436,2.397406,0.543541,3.83426,980,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",200.252808,7,2128,3108,195,178.553877,3108,70.84272986685419,97517568,5952,11.012288,3108,343962953041906,343963149383278,343963153294714,343963135430043,343963148839737,343963137827449,343962956876166,xfer-3fc542a4-c451-4af6-af54-dc2a36f24f2c +1.329255,3.026022,0.999154,3.960324,956,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",96.933447,7,2128,3084,193,76.607202,3084,68.56244886023599,94371840,5760,11.01149,3084,343964337590244,343964433194436,343964434523691,343964418157770,343964432195282,343964421183792,343964341550568,xfer-b2aca2e7-4875-427e-9f0b-d317aebaae0d +2.955891,5.995731,0.529785,3.861272,3786,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",427.15141,7,2144,5930,371,371.196088,5930,69.98275474253029,372768768,22752,42.612643,5930,343967625545250,343968049740769,343968052696660,343968000602610,343968049210984,343968006598341,343967629406522,xfer-c6998520-9685-4641-8bde-20d71a9eeb76 +3.94437,6.033872,1.209924,3.92171,3803,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",327.251599,7,2144,5947,372,269.706977,5947,70.57266363748236,374341632,22848,42.434746,5947,343969245405347,343969568712576,343969572656946,343969519034034,343969567502652,343969525067906,343969249327057,xfer-ab43d7a9-3560-4de7-8810-f85caad5105f +3.942834,5.737844,0.645133,3.916515,3799,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",426.730381,7,2144,5943,372,370.10648,5943,70.66120256267023,374341632,22848,42.381575,5943,343970764516949,343971187304496,343971191247330,343971138539944,343971186659363,343971144277788,343970768433464,xfer-96925457-781c-4da1-a02d-9964d3218248 +2.818408,5.958399,0.482084,3.919752,3771,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",321.743945,7,2144,5915,370,266.54489,5915,70.66963627105798,371195904,22656,42.020412,5915,343972388100818,343972707026355,343972709844763,343972658565460,343972706544271,343972664523859,343972392020570,xfer-9abc49fc-9fe8-44d3-9475-9ebfeb404f2e +2.815404,5.865107,0.536795,3.900765,3789,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",426.210635,7,2144,5933,371,370.298539,5933,69.68613361327895,372768768,22752,42.794025,5933,343973904232146,343974327627377,343974330442781,343974278431450,343974327090582,343974284296557,343973908132911,xfer-5b9bd505-a4eb-4f4c-9777-89004834d643 +2.811201,21.427328,0.77726,4.507936,15437,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1754.970166,7,2128,17565,1098,1547.29026,17565,68.1565467548948,1517813760,92640,178.156181,17565,343977546544054,343979298703019,343979301514220,343979098342250,343979297925759,343979119769578,343977551051990,xfer-1fde94a8-2b65-4ecf-aa50-6ce3ad65902a +3.296259,19.253188,0.795063,6.392683,15393,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1874.860712,7,2144,17537,1097,1673.955666,17537,70.79217296719845,1514668032,92448,171.167853,17537,343980534882389,343982406446842,343982409743101,343982215230738,343982405651779,343982234483926,343980541275072,xfer-d403b6b0-8765-409e-98bb-d709760a156a +3.934183,20.818748,1.699325,4.649118,15435,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1751.325849,7,2128,17563,1098,1545.890274,17563,69.65076278979821,1517813760,92640,174.334201,17563,343983647638965,343985395030631,343985398964814,343985198178357,343985393331306,343985218997105,343983652288083,xfer-7d521add-3226-4625-846c-09f2e099ea4b +3.941944,20.143961,1.882404,4.569059,15444,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1879.360201,7,2144,17588,1100,1676.502591,17588,70.5378129169526,1519386624,92736,172.320242,17588,343986638163124,343988513581381,343988517523325,343988319234774,343988511698977,343988339378735,343986642732183,xfer-abcde13a-0c68-47c7-9900-47d203989fa1 +3.204475,20.38466,0.600685,4.740413,15404,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1745.632218,7,2144,17548,1097,1545.117825,17548,70.62041307309487,1514668032,92448,171.58416,17548,343989752326392,343991494754135,343991497958610,343991302184630,343991494153450,343991322569290,343989757066805,xfer-4753edc9-b787-4fff-823e-0c5a2b43eb7c +4.049909,0.862976,1.757309,4.010888,16,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",631.17912,7,8624,8640,540,620.132294,8640,34.403604707117545,1572864,96,0.365744,8640,343994723546776,343995350675987,343995354725896,343995347689958,343995348918678,343995348552934,343994727557664,xfer-b72a0aee-2779-4405-91ed-600357c3af26 +3.257195,2.892717,0.413018,3.929762,991,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",142.99823,7,8624,9615,601,121.500199,9615,70.88746144030638,97517568,5952,11.005339,9615,343997397668131,343997537409166,343997540666361,343997523098092,343997536996148,343997525990809,343997401597893,xfer-5167f7bc-f5a6-4764-8aea-d41b821d3746 +4.005567,2.234935,0.817449,3.95562,972,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",784.81566,7,8640,9612,601,762.926825,9612,70.57829878888458,95944704,5856,10.875264,9612,343998749758108,343999530568201,343999534573768,343999516640553,343999529750752,343999518875488,343998753713728,xfer-3e0b7202-d03b-40b2-bad9-12ece5886c86 +3.998898,2.781587,1.154842,4.052568,954,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",142.964138,7,8640,9594,600,120.31907,9594,70.84193153287463,94371840,5760,10.657173,9594,344000750974619,344000889939859,344000893938757,344000875346257,344000888785017,344000878127844,344000755027187,xfer-3355bc7d-537a-4c50-9f47-29475ef20df3 +3.503411,2.430847,0.497237,3.941937,967,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",756.368633,7,8640,9607,601,735.281575,9607,71.64312362593205,95944704,5856,10.713626,9607,344002102827857,344002855693079,344002859196490,344002842051369,344002855195842,344002844482216,344002106769794,xfer-bb87cadd-1a12-4848-9105-e1e8fa07b45c +4.019339,3.110151,1.261111,4.112686,963,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",143.047517,7,8640,9603,601,119.738752,9603,71.03412102639051,95944704,5856,10.805478,9603,344004069169337,344004208197515,344004212216854,344004193020775,344004206936404,344004196130926,344004073282023,xfer-a16f34ad-e1d4-47ca-a310-64f98e42ba93 +3.4453,5.497828,0.697261,4.130356,3813,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1064.857818,7,8640,12453,779,1007.327189,12453,68.72312476879509,375914496,22944,43.759884,12453,344007425300610,344008486713128,344008490158428,344008436758155,344008486015867,344008442255983,344007429430966,xfer-03c4a7dc-fee5-494d-9291-059261244a55 +4.056958,6.556157,0.735644,4.325568,3816,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",474.809695,7,8640,12456,779,416.461503,12456,70.47207858955359,375914496,22944,42.673865,12456,344009709045447,344010179798184,344010183855142,344010129832518,344010179062540,344010136388675,344009713371015,xfer-66a3e89b-0ef6-47a3-bf1d-4d651b1467d7 +2.792053,5.769235,0.568306,4.276771,3795,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1062.91823,7,8640,12435,778,1007.108164,12435,70.62433196574045,374341632,22848,42.403701,12435,344011403523025,344012463649202,344012466441255,344012414907960,344012463080896,344012420677195,344011407799796,xfer-f6f81412-2410-45ff-a344-1e7dcab42dd3 +2.93636,6.721208,0.607545,4.532909,3820,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",475.312769,7,8640,12460,779,417.75525,12460,70.33094818678526,375914496,22944,42.759497,12460,344013684813214,344014157189623,344014160125983,344014107101373,344014156582078,344014113822581,344013689346123,xfer-2f217b73-f6a7-4364-8e22-9ea686cf03fc +3.983707,5.57057,0.871657,4.170471,3793,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1062.286824,7,8640,12433,778,1005.143341,12433,70.38633901016657,374341632,22848,42.547078,12433,344015377875151,344016436178268,344016440161975,344016387188963,344016435306611,344016392759533,344015382045622,xfer-afe23d6a-d173-4ddd-9f4f-5c667ad3256f +3.922147,21.524908,2.015128,4.809325,15407,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2357.084348,7,8640,24047,1503,2116.110056,24047,58.06029044634115,1514668032,92448,208.702784,24047,344019678368411,344022031530612,344022035452759,344021799287792,344022029515484,344021820812700,344019683177736,xfer-33003a8f-b840-4b7e-92e0-b86117e9c987 +3.856647,23.906271,0.719083,4.93606,15438,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2926.607498,7,8640,24078,1505,2718.446051,24078,69.48766621702066,1517813760,92640,174.743386,24078,344023293025231,344026215776082,344026219632729,344026016407342,344026215056999,344026040313613,344023297961291,xfer-8de0b399-c504-4f07-a966-d52231d9d9b8 +2.777104,21.427507,0.702439,4.719515,15396,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2317.351766,7,8640,24036,1503,2116.281928,24036,70.67844683529812,1514668032,92448,171.443273,24036,344027477037341,344029791612003,344029794389107,344029598038784,344029790909564,344029619466291,344027481756856,xfer-6bb9c369-7d98-476d-8c10-8a55a3b637be +3.430388,21.708904,0.676655,5.76684,15384,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2916.354688,7,8640,24024,1502,2712.008868,24024,70.06569133340001,1513095168,92352,172.763033,24024,344031054178050,344033967102350,344033970532738,344033771953758,344033966425695,344033793662662,344031059944890,xfer-9622617c-afc4-4f3d-acab-617802d71b42 +4.029216,20.945537,1.673896,5.401789,15458,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",2337.444843,7,8640,24098,1507,2121.993214,24098,66.34458499236246,1520959488,92832,183.401191,24098,344035231741558,344037565157185,344037569186401,344037359136561,344037563483289,344037380082098,344035237143347,xfer-4ee6ddf8-3538-41e0-ac9a-13e25dd6c781 +3.933837,,,5.631332,26286,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",5418.119478,5,8624,34910,2182,5023.187616,34910,,,,,34910,344040846080028,344046260265669,344046264199506,344045874898976,,,344040851711360,xfer-b95f41e4-627a-4d9e-aa65-b98afafb06c0 +4.062967,5.096194,1.244185,4.667851,988,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",330.333453,7,34896,35884,2243,304.252371,35884,70.85819188847113,97517568,5952,11.009885,35884,344048361285763,344048687556249,344048691619216,344048670205985,344048686312064,344048675302179,344048365953614,xfer-204c5e89-95b3-4a59-8bbb-c03a1eac864c +2.933318,,,6.931342,984,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",5330.989922,5,34912,35896,2244,5306.482294,35896,,,,,35896,344049993993743,344055322050347,344055324983665,344055307407379,,,344050000925085,xfer-a530e3ee-0c55-4a85-b988-110fd1cd3e5f +4.099607,4.522637,1.671787,4.717849,964,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",327.05328,7,34912,35876,2243,301.171991,35876,70.61631704170853,95944704,5856,10.869409,35876,344056625957769,344056948911442,344056953011049,344056931847609,344056947239655,344056936370246,344056630675618,xfer-972f5586-7436-4a56-b437-a504e6b94fc3 +3.841064,,,4.577476,952,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",5270.728238,5,34912,35864,2242,5247.707635,35864,,,,,35864,344058254091725,344063520978899,344063524819963,344063506376836,,,344058258669201,xfer-35222c64-1117-4742-8ff8-9cf890498f1d +4.324731,5.236853,0.604215,4.951784,975,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",327.583453,7,34912,35887,2243,301.618389,35887,70.75906673632338,95944704,5856,10.847481,35887,344064830066353,344065153325075,344065157649806,344065136636526,344065152720860,344065141873379,344064835018137,xfer-c979d8d1-17a5-4624-b46b-b19da335f930 +4.054432,,,5.409207,3816,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",6065.42777,5,34912,38728,2421,6003.743773,38728,,,,,38728,344068478934114,344074540307452,344074544361884,344074488087094,,,344068484343321,xfer-922060d3-5606-41bd-a728-cb9286104c5f +4.161682,11.759598,0.912837,4.801053,3787,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1067.077186,7,34912,38699,2419,1002.993495,38699,70.25333448013419,372768768,22752,42.448521,38699,344075859994221,344076922909725,344076927071407,344076867788769,344076921996888,344076879548367,344075864795274,xfer-989b23c9-0a4a-4f61-be7b-f47c2cd5c68c +4.462714,,,4.792675,3802,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",6058.89703,5,34912,38714,2420,5998.51813,38714,,,,,38714,344078241308449,344084295742765,344084300205479,344084244619254,,,344078246101124,xfer-6d52cb9b-7e69-498a-a14d-c4ef18466455 +3.990764,8.428795,0.813159,4.765448,3803,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",1065.965013,7,34912,38715,2420,1005.500559,38715,70.52024551804482,374341632,22848,42.466288,38715,344085614679887,344086676654136,344086680644900,344086624945894,344086675840977,344086633374689,344085619445335,xfer-2f329fc6-dce1-40e9-bd89-6afb67f09a63 +2.980913,,,4.953564,3799,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",6055.683733,5,34912,38711,2420,5996.9245,38711,,,,,38711,344087991204865,344094043907685,344094046888598,344093993082929,,,344087996158429,xfer-2d30d1c4-5c17-4da2-88a1-c098e973f146 +3.278995,21.052319,0.651839,5.371544,15414,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",4632.479244,7,34912,50326,3146,4431.768172,50326,71.20324770939743,1516240896,92544,170.356375,50326,344097383047854,344102012248103,344102015527098,344101820187570,344102011596264,344101841239889,344097388419398,xfer-3d9b6f40-000a-499b-9eeb-f2cd0158e3cc +4.210185,,,5.418244,15459,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",9666.724654,5,34912,50371,3149,9455.88659,50371,,,,,50371,344103365721735,344113028236204,344113032446389,344112827026569,,,344103371139979,xfer-6e5b9dfc-5791-483e-bd58-ca0a820f6f20 +3.171092,22.117254,0.897336,5.724271,15402,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",4630.020597,7,34912,50314,3145,4426.413397,50314,70.57389951045633,1514668032,92448,171.697247,50314,344114386617482,344119013466987,344119016638079,344118818755150,344119012569651,344118840872404,344114392341753,xfer-9194c65d-89ee-4cfe-9403-01c80df0690e +4.01791,,,5.373968,15504,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_zmq_received",9744.213969,5,34912,50416,3151,9537.277953,50416,,,,,50416,344120376076315,344130116272374,344130120290284,344129918728236,,,344120381450283,xfer-b40b0fbf-9f16-4040-bbb7-867c5e4960c7 +3.188845,20.508939,0.621964,5.709689,15456,"D_get_num_matched,D_recv_complete,D_request_promoted,P_prefill_done,P_rdma_end,P_rdma_start,P_zmq_received",4602.182752,7,34912,50368,3148,4399.785916,50368,70.51851488459253,1519386624,92736,172.367399,50368,344131502136745,344136101130652,344136104319497,344135907632350,344136100508688,344135928141289,344131507846434,xfer-1d314942-867e-4677-bd2c-f920c7aaf618 diff --git a/microbench/patches/analyze_events.py b/microbench/patches/analyze_events.py new file mode 100644 index 0000000..6e4e8ce --- /dev/null +++ b/microbench/patches/analyze_events.py @@ -0,0 +1,273 @@ +#!/usr/bin/env python3 +""" +Merge PD-sep event logs from P and D into per-request breakdown. + +Reads JSONL event logs produced by the patched mooncake_connector + +scheduler, joins events by request_id / transfer_id, and emits a +per-request CSV with the lifecycle phase durations: + + prefill_compute : P_prefill_done.t -

+ (we don't have explicit P start; use min of D_get_num_matched - 0 + or use prefill duration ≈ P_zmq_received - P_prefill_done? NO. + P_prefill_done = when prefill finished, blocks ready. + We approximate prefill_compute = P_prefill_done - D_get_num_matched + because D and P receive the request simultaneously from proxy.) + + zmq_handshake : P_rdma_start - P_zmq_received + (time from D's pull request reaching P to RDMA write start) + + rdma_transfer : P_rdma_end - P_rdma_start + (pure RDMA write duration on P side) + + completion_signal : D_recv_complete - P_rdma_end + (RDMA completion event back to D side) + + D_promote_delay : D_request_promoted - D_recv_complete + (D scheduler step delay to wake the blocked request) + + full_pdsep_overhead: D_request_promoted - D_get_num_matched + (total server-side overhead from request arrival to schedulable) + +Usage: + python analyze_events.py --events-dir LOGDIR --out breakdown.csv +""" + +import argparse +import json +from collections import defaultdict +from pathlib import Path + +import csv + + +def load_events(paths): + """Yield event dicts from multiple JSONL files.""" + for p in paths: + with open(p) as f: + for line in f: + line = line.strip() + if not line: + continue + try: + yield json.loads(line) + except json.JSONDecodeError: + continue + + +def group_events(events): + """Group events by transfer_id (preferred) or req_id.""" + by_key = defaultdict(dict) # key -> {event_name: event} + + # First pass: figure out req_id <-> transfer_id mapping + req_to_transfer = {} + for ev in events: + tid = ev.get("transfer_id", "") + rid = ev.get("req_id", "") + if tid and rid: + req_to_transfer[rid] = tid + + # Second pass: assign each event to its transfer_id key + # Need to re-iterate; load again + return req_to_transfer + + +def _merge_event(slot: dict, ev: dict) -> None: + """Add event to per-request slot. For repeating events: + - 'end'/'complete'/'promoted' → keep the LATEST + - everything else → keep the EARLIEST.""" + name = ev["event"] + existing = slot.get(name) + if existing is None: + slot[name] = ev + return + is_end_like = any(s in name for s in ("rdma_end", "recv_complete", "promoted", "prefill_done")) + if is_end_like: + if ev["t_ns"] > existing["t_ns"]: + slot[name] = ev + else: + if ev["t_ns"] < existing["t_ns"]: + slot[name] = ev + + +def build_per_request(event_files): + """Walk all events, group by transfer_id, compute breakdown.""" + + # Collect all events into memory (these logs are small enough) + all_events = list(load_events(event_files)) + + # Map req_id <-> transfer_id + req_to_transfer = {} + for ev in all_events: + tid = ev.get("transfer_id", "") + rid = ev.get("req_id", "") + if tid and rid: + req_to_transfer[rid] = tid + + # Pre-pass: assign transfer_ids to P_zmq_received events from their `data.transfer_ids` field + # Also collect P_zmq_received timestamps with their transfer_ids so we can link + # P_rdma_start/end events that happen nearby. + zmq_records = [] # list of (t_ns, [transfer_ids...]) + for ev in all_events: + if ev["event"] == "P_zmq_received": + tids = ev.get("data", {}).get("transfer_ids", []) or [] + if tids: + # Synthetically tag this event with the first transfer_id for primary key. + ev["transfer_id"] = tids[0] + ev["_tids_in_batch"] = tids + zmq_records.append((ev["t_ns"], tids)) + + # Sort zmq_records by time so we can binary-search later + zmq_records.sort() + + def find_zmq_batch(t_ns): + """Find the most recent ZMQ batch whose timestamp <= t_ns and within 5 seconds.""" + best = None + for ts, tids in zmq_records: + if ts <= t_ns and (t_ns - ts) < 5e9: + best = tids # take the latest qualifying + elif ts > t_ns: + break + return best + + # Tag P_rdma_start / P_rdma_end with the transfer_ids from the nearest preceding ZMQ batch + for ev in all_events: + if ev["event"] in ("P_rdma_start", "P_rdma_end") and not ev.get("transfer_id"): + tids = find_zmq_batch(ev["t_ns"]) + if tids: + ev["transfer_id"] = tids[0] + ev["_tids_in_batch"] = tids + + # Group events by transfer_id + by_xfer = defaultdict(dict) + orphans = [] + for ev in all_events: + tid = ev.get("transfer_id", "") + rid = ev.get("req_id", "") + # find key + if tid: + key = tid + elif rid in req_to_transfer: + key = req_to_transfer[rid] + else: + orphans.append(ev) + continue + # Also handle events that belong to multiple transfers in a single batch: + # we replicate the event under each transfer_id key for fan-out. + tids_in_batch = ev.get("_tids_in_batch", [tid] if tid else []) + if len(tids_in_batch) > 1: + for t in tids_in_batch: + _merge_event(by_xfer[t], ev) + else: + _merge_event(by_xfer[key], ev) + + print(f"Loaded {len(all_events)} events, grouped into {len(by_xfer)} requests, " + f"{len(orphans)} orphans") + + # Build per-request rows + rows = [] + for tid, evmap in by_xfer.items(): + def t(name): + e = evmap.get(name) + return e["t_ns"] if e else None + + def d(name, field, default=None): + e = evmap.get(name) + return e["data"].get(field, default) if e else default + + row = { + "transfer_id": tid, + "n_events": len(evmap), + "events_seen": ",".join(sorted(evmap.keys())), + # data fields + "num_local_cached": d("D_get_num_matched", "num_local_cached"), + "prompt_tokens": d("D_get_num_matched", "prompt_tokens"), + "remote_total": d("D_get_num_matched", "remote_total"), + "delta_to_pull": d("D_get_num_matched", "delta_to_pull"), + "num_send_blocks": d("P_prefill_done", "num_send_blocks"), + "num_prompt_tokens_P": d("P_prefill_done", "num_prompt_tokens"), + "rdma_num_ops": d("P_rdma_end", "num_ops"), + "rdma_bytes": d("P_rdma_end", "bytes_total"), + } + + # timestamps (ns → ms) + ts = { + "t_D_get_num_matched": t("D_get_num_matched"), + "t_P_prefill_done": t("P_prefill_done"), + "t_P_zmq_received": t("P_zmq_received"), + "t_P_rdma_start": t("P_rdma_start"), + "t_P_rdma_end": t("P_rdma_end"), + "t_D_recv_complete": t("D_recv_complete"), + "t_D_request_promoted": t("D_request_promoted"), + } + row.update(ts) + + # phase durations in ms + def dur(a, b): + ta, tb = ts.get(a), ts.get(b) + if ta is None or tb is None: + return None + return (tb - ta) / 1e6 + + row["d_to_p_dispatch_ms"] = dur("t_D_get_num_matched", "t_P_zmq_received") + row["prefill_compute_ms"] = dur("t_P_zmq_received", "t_P_prefill_done") + row["build_params_ms"] = dur("t_P_prefill_done", "t_P_rdma_start") + row["rdma_transfer_ms"] = dur("t_P_rdma_start", "t_P_rdma_end") + row["completion_sig_ms"] = dur("t_P_rdma_end", "t_D_recv_complete") + row["D_promote_ms"] = dur("t_D_recv_complete", "t_D_request_promoted") + row["full_overhead_ms"] = dur("t_D_get_num_matched", "t_D_request_promoted") + + # transfer bandwidth + rt = row["rdma_transfer_ms"] + bytes_ = row["rdma_bytes"] + if rt and bytes_ and rt > 0: + row["rdma_bandwidth_gbps"] = (bytes_ * 8 / (rt / 1000)) / 1e9 + else: + row["rdma_bandwidth_gbps"] = None + + rows.append(row) + + return rows + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--events", nargs="+", required=True, + help="One or more JSONL event log files") + ap.add_argument("--out", default="breakdown.csv") + args = ap.parse_args() + + paths = [Path(p) for p in args.events] + for p in paths: + if not p.exists(): + raise SystemExit(f"Not found: {p}") + + rows = build_per_request(paths) + if not rows: + print("No grouped requests found.") + return + + # Write CSV + fieldnames = sorted({k for r in rows for k in r.keys()}) + with open(args.out, "w", newline="") as f: + w = csv.DictWriter(f, fieldnames=fieldnames) + w.writeheader() + w.writerows(rows) + print(f"Wrote {len(rows)} request breakdowns → {args.out}") + + # Quick summary + complete = [r for r in rows if r.get("full_overhead_ms") is not None] + print(f"\nComplete-event requests: {len(complete)}/{len(rows)}") + if complete: + import statistics as st + for k in ("d_to_p_dispatch_ms", "prefill_compute_ms", "build_params_ms", + "rdma_transfer_ms", "completion_sig_ms", "D_promote_ms", + "full_overhead_ms", "rdma_bandwidth_gbps", + "delta_to_pull", "num_local_cached", "rdma_bytes"): + vals = [r[k] for r in complete if r.get(k) is not None] + if vals: + med = st.median(vals) + print(f" {k:<24} median={med:.1f} n={len(vals)}") + + +if __name__ == "__main__": + main() diff --git a/microbench/patches/apply_patches.py b/microbench/patches/apply_patches.py new file mode 100644 index 0000000..a2cf0b2 --- /dev/null +++ b/microbench/patches/apply_patches.py @@ -0,0 +1,285 @@ +#!/usr/bin/env python3 +""" +Apply (or revert) PD-sep profiling instrumentation to vLLM. + +Inserts time.perf_counter_ns() emit calls into mooncake_connector.py at: + - get_num_new_matched_tokens() [D: cache hit, delta] + - update_state_after_alloc() [D: blocks allocated] + - send_kv_to_decode() [P: zmq from D arrived] + - record_send_reqs() [P: prefill ready event set] + - _send_blocks() [P: RDMA start/end + bytes] + - process_pulling_result() [D: RDMA recv complete] + - request_finished() [common: request lifecycle end] + +And into scheduler.py at: + - _try_promote_blocked_waiting_request() [D: request promoted] + +Marker comment "# PD_PROFILE_PATCH" is added so revert can locate inserts. + +Usage: + python apply_patches.py [--apply | --revert] [--vllm-root PATH] + +The patches are idempotent: --apply on already-patched code is a no-op. +""" + +import argparse +import re +import sys +from pathlib import Path + +MARKER = "# PD_PROFILE_PATCH" + +# Default location: venv vLLM 0.18.1 on dash0 +DEFAULT_VLLM_ROOT = Path.home() / "agentic-kv/.venv/lib/python3.12/site-packages/vllm" + + +def _find_block(text: str, signature: str) -> tuple[int, int] | None: + """Find the start/end line numbers of a function or method definition.""" + lines = text.splitlines() + for i, line in enumerate(lines): + if signature in line: + # find indent + stripped = line.lstrip() + indent = len(line) - len(stripped) + # find function end: next line with <= indent and not blank + for j in range(i + 1, len(lines)): + next_line = lines[j] + if next_line.strip() == "": + continue + next_indent = len(next_line) - len(next_line.lstrip()) + if next_indent <= indent and not next_line.lstrip().startswith("#"): + return i, j + return i, len(lines) + return None + + +def _insert_after_line(text: str, line_no: int, snippet: str) -> str: + """Insert snippet after line_no (1-indexed). snippet should not include trailing newline.""" + lines = text.splitlines() + lines.insert(line_no, snippet) + return "\n".join(lines) + ("\n" if text.endswith("\n") else "") + + +def _already_patched(text: str) -> bool: + return MARKER in text + + +def _revert(text: str) -> str: + """Remove all lines containing the marker.""" + lines = text.splitlines() + out = [l for l in lines if MARKER not in l] + return "\n".join(out) + ("\n" if text.endswith("\n") else "") + + +# ─── Patch definitions ────────────────────────────────────────────────────── + +def patch_mooncake_connector(text: str) -> str: + """Apply patches to mooncake_connector.py.""" + if _already_patched(text): + print(" mooncake_connector.py already patched, skipping") + return text + + # 1. Add import at top (after first 'import' block) + import_snippet = ( + "from vllm.distributed.kv_transfer.kv_connector.v1.mooncake " + "import _pd_profile as _pdp " + MARKER + ) + # Insert after the last 'import' statement near the top + lines = text.splitlines() + last_import_line = 0 + for i, line in enumerate(lines[:80]): + if line.startswith("import ") or line.startswith("from "): + last_import_line = i + lines.insert(last_import_line + 1, import_snippet) + text = "\n".join(lines) + "\n" + + # 2. Patch get_num_new_matched_tokens (D side, scheduler) + # Inject right before "return count, True" and "return 0, False" + text = re.sub( + r"(\n if count > 0:\n return count, True\n)", + r"\n if count > 0:\n _pdp.emit('D_get_num_matched', " + r"req_id=request.request_id, role='kv_consumer', " + r"num_local_cached=num_computed_tokens, prompt_tokens=len(token_ids), " + r"remote_total=remote_total, delta_to_pull=count) " + MARKER + "\n" + r" return count, True\n", + text, count=1, + ) + + # 3. Patch update_state_after_alloc (D side) — add emit for blocks allocated + # The function is around line 348. Find "self._reqs_need_recv[" assignment. + text = re.sub( + r"(\n self\._reqs_need_recv\[request_id\] = PullReqMeta\()", + r"\n _pdp.emit('D_alloc_blocks', req_id=request_id, " + r"role='kv_consumer', num_local_blocks=len(local_block_ids), " + r"num_external_tokens=num_external_tokens) " + MARKER + + r"\n self._reqs_need_recv[request_id] = PullReqMeta(", + text, count=1, + ) + + # 4. Patch send_kv_to_decode entry (P side) — ZMQ message received + text = re.sub( + r"( async def send_kv_to_decode\(\n" + r" self, identity: bytes, sock: zmq\.asyncio\.Socket, meta: MooncakeXferMetadata\n" + r" \):\n)", + r"\1 _pdp.emit('P_zmq_received', role='kv_producer', " + r"num_reqs=len(meta.req_blocks), remote_host=meta.remote_hostname, " + r"transfer_ids=[tid for tid, _ in meta.req_blocks.values()]) " + MARKER + "\n", + text, count=1, + ) + + # 5. Patch _send_blocks (P side) — wrap RDMA write + # Inject before and after self.engine.batch_transfer_sync_write + text = re.sub( + r"( start_time = time\.perf_counter\(\)\n" + r" ret_value = self\.engine\.batch_transfer_sync_write\(\n" + r" remote_session, src_ptrs, dst_ptrs, lengths\n" + r" \))", + r" _pdp.emit('P_rdma_start', role='kv_producer', " + r"num_ops=len(src_ptrs), bytes_total=sum(lengths), remote=str(remote_session)) " + MARKER + "\n" + r"\1\n" + r" _pdp.emit('P_rdma_end', role='kv_producer', " + r"num_ops=len(src_ptrs), bytes_total=sum(lengths), ret=ret_value) " + MARKER, + text, count=1, + ) + + # 6. Patch process_pulling_result (D side) — RDMA recv complete (success path) + # Match the specific pattern inside `if pull_meta.pull_tasks_count == 0:` + text = re.sub( + r"(pull_meta\.pull_tasks_count -= 1\n" + r" if pull_meta\.pull_tasks_count == 0:\n" + r")( self\.finished_recving_reqs\.add\(pull_meta\.d_req_id\))", + r"\1 _pdp.emit('D_recv_complete', req_id=pull_meta.d_req_id, " + r"transfer_id=pull_meta.transfer_id, role='kv_consumer') " + MARKER + "\n" + r"\2", + text, count=1, + ) + + # 7. Patch request_finished (P side) — when prefill blocks are marked ready to send + # Find: self._reqs_need_send[request.request_id] = (request, send_block_ids) + text = re.sub( + r"(\n if delay_free_blocks:\n" + r" self\._reqs_need_send\[request\.request_id\] = \(request, send_block_ids\))", + r"\n if delay_free_blocks:\n" + r" _pdp.emit('P_prefill_done', req_id=request.request_id, " + r"transfer_id=params.get('transfer_id', ''), role='kv_producer', " + r"num_send_blocks=len(send_block_ids), num_prompt_tokens=request.num_prompt_tokens) " + + MARKER + "\n" + r" self._reqs_need_send[request.request_id] = (request, send_block_ids)", + text, count=1, + ) + + return text + + +def patch_scheduler(text: str) -> str: + """Patch v1/core/sched/scheduler.py for D-side request promotion.""" + if _already_patched(text): + print(" scheduler.py already patched, skipping") + return text + + # Add import at the top of the file + lines = text.splitlines() + last_import_line = 0 + for i, line in enumerate(lines[:100]): + if line.startswith("import ") or line.startswith("from "): + last_import_line = i + import_snippet = ( + "try:\n" + " from vllm.distributed.kv_transfer.kv_connector.v1.mooncake import _pd_profile as _pdp\n" + "except Exception:\n" + " class _pdp: # fallback no-op\n" + " @staticmethod\n" + " def emit(*a, **kw): pass\n" + " @staticmethod\n" + " def enabled(): return False\n" + f"{MARKER}" + ) + lines.insert(last_import_line + 1, import_snippet) + text = "\n".join(lines) + "\n" + + # Patch _update_waiting_for_remote_kv — match exact `request: Request` (no quotes) + text = re.sub( + r"( def _update_waiting_for_remote_kv\(self, request: Request\) -> None:\n)", + r"\1 _pdp.emit('D_request_promoted', req_id=request.request_id, " + r"role='kv_consumer', num_computed_tokens=request.num_computed_tokens) " + MARKER + "\n", + text, count=1, + ) + + return text + + +# ─── Driver ──────────────────────────────────────────────────────────────── + +def apply_to_file(path: Path, patcher) -> bool: + if not path.exists(): + print(f" SKIP {path} (not found)") + return False + original = path.read_text() + patched = patcher(original) + if patched == original: + print(f" unchanged: {path}") + return False + path.write_text(patched) + n_marks = patched.count(MARKER) + print(f" patched ({n_marks} marks): {path}") + return True + + +def revert_file(path: Path) -> bool: + if not path.exists(): + return False + original = path.read_text() + reverted = _revert(original) + if reverted == original: + print(f" no marks found: {path}") + return False + path.write_text(reverted) + print(f" reverted: {path}") + return True + + +def install_profile_module(vllm_root: Path) -> None: + """Copy pd_profile.py to mooncake/_pd_profile.py inside vLLM.""" + src = Path(__file__).parent / "pd_profile.py" + dst = vllm_root / "distributed/kv_transfer/kv_connector/v1/mooncake/_pd_profile.py" + dst.parent.mkdir(parents=True, exist_ok=True) + dst.write_text(src.read_text()) + print(f" installed: {dst}") + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--apply", action="store_true") + ap.add_argument("--revert", action="store_true") + ap.add_argument("--vllm-root", type=Path, default=DEFAULT_VLLM_ROOT) + args = ap.parse_args() + + if not (args.apply or args.revert) or (args.apply and args.revert): + ap.error("Specify exactly one of --apply or --revert") + + root = args.vllm_root + if not root.exists(): + print(f"ERROR: vLLM root not found: {root}") + sys.exit(1) + + mc_path = root / "distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_connector.py" + sched_path = root / "v1/core/sched/scheduler.py" + + if args.apply: + print(f"Applying PD-sep profile patches to {root}") + install_profile_module(root) + apply_to_file(mc_path, patch_mooncake_connector) + apply_to_file(sched_path, patch_scheduler) + else: + print(f"Reverting PD-sep profile patches from {root}") + revert_file(mc_path) + revert_file(sched_path) + # also remove the module + prof_module = root / "distributed/kv_transfer/kv_connector/v1/mooncake/_pd_profile.py" + if prof_module.exists(): + prof_module.unlink() + print(f" removed: {prof_module}") + + +if __name__ == "__main__": + main() diff --git a/microbench/patches/pd_profile.py b/microbench/patches/pd_profile.py new file mode 100644 index 0000000..cfa455b --- /dev/null +++ b/microbench/patches/pd_profile.py @@ -0,0 +1,57 @@ +""" +PD-Sep Lifecycle Profiler — patch for mooncake_connector.py + scheduler.py + +Activated by env var: VLLM_PD_PROFILE_LOG=/path/to/events.jsonl + +Each line is one event: + {"t_ns": , "event": "", "req_id": "", + "transfer_id": "", "role": "", + "data": {...event-specific fields...}} + +This module is imported by the patched mooncake_connector.py and scheduler.py +to centralize event emission. +""" + +import os +import json +import time +import threading +from typing import Any + +_LOG_FILE = os.environ.get("VLLM_PD_PROFILE_LOG", "") +_LOCK = threading.Lock() +_HANDLE = None +_ENABLED = bool(_LOG_FILE) + + +def _get_handle(): + global _HANDLE + if _HANDLE is None and _ENABLED: + _HANDLE = open(_LOG_FILE, "a", buffering=1) # line-buffered + return _HANDLE + + +def emit(event: str, req_id: str = "", transfer_id: str = "", + role: str = "", **data: Any) -> None: + """Record a profile event. No-op if VLLM_PD_PROFILE_LOG is not set.""" + if not _ENABLED: + return + record = { + "t_ns": time.perf_counter_ns(), + "event": event, + "req_id": str(req_id), + "transfer_id": str(transfer_id), + "role": role, + "data": data, + } + try: + h = _get_handle() + if h: + with _LOCK: + h.write(json.dumps(record, default=str) + "\n") + except Exception: + pass # never let profiling break vLLM + + +def enabled() -> bool: + return _ENABLED diff --git a/microbench/plot_breakdown.py b/microbench/plot_breakdown.py new file mode 100644 index 0000000..66e3580 --- /dev/null +++ b/microbench/plot_breakdown.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +""" +Stacked-bar breakdown of PD-sep request latency. + +Axes: + X : total input length (N_total), grouped by cache hit ratio + Stacks: prefill compute (red) | KV transfer RDMA (orange) | decode (steelblue) + +Measured constants (H20, Qwen3-Coder-30B-A3B, from microbench): + cold_prefill_ms(n) ≈ 0.072 * n (interference D=1 prefill_ttft, n=2k-16k) + kv_transfer_ms(n) = 35 + n * 96KB * 8 / 25Gbps (warm Mooncake RDMA) + decode_ms = output_tokens * 7.0ms/token +""" + +import numpy as np +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import matplotlib.patches as mpatches +from pathlib import Path + +HERE = Path(__file__).parent +OUT = HERE / "lifecycle/results/fig_breakdown.png" +OUT.parent.mkdir(parents=True, exist_ok=True) + +# ── measured constants ─────────────────────────────────────────────────────── +MS_PER_TOK_COLD = 0.072 # ms / new token (cold prefill, linear regime) +KV_BYTES_PER_TOK = 2*48*4*128*2 # 98304 B per token (Qwen3-30B-A3B) +RDMA_BW_GBPS = 25 # effective Mooncake bandwidth (measured) +RDMA_OVERHEAD_MS = 35 # warm-connection fixed overhead (measured) +DECODE_MS_PER_TOK = 7.0 # TPOT baseline p50 +OUTPUT_TOKENS = 128 # representative output length for decode bar + +def prefill_ms(n_new): + return MS_PER_TOK_COLD * max(1, n_new) + +def transfer_ms(n_new): + kv_bytes = KV_BYTES_PER_TOK * max(1, n_new) + bw_ms = kv_bytes * 8 / (RDMA_BW_GBPS * 1e9) * 1000 + return RDMA_OVERHEAD_MS + bw_ms + +# ── sweep parameters ───────────────────────────────────────────────────────── +N_TOTALS = [1024, 2048, 4096, 8192, 16384, 32768] +CACHE_RATIOS = [0.0, 0.25, 0.50, 0.75] +CR_LABELS = ["0%", "25%", "50%", "75%"] +CR_ALPHAS = [1.0, 0.75, 0.50, 0.28] +CR_HATCHES = [None, None, "///", "///"] + +C_PREFILL = "#d62728" +C_TRANSFER = "#ff7f0e" +C_DECODE = "#1f77b4" + +# ── compute matrices ───────────────────────────────────────────────────────── +nN, nC = len(N_TOTALS), len(CACHE_RATIOS) +pf_mat = np.zeros((nN, nC)) +tr_mat = np.zeros((nN, nC)) +dec_mat = np.zeros((nN, nC)) + +for i, N in enumerate(N_TOTALS): + for j, cr in enumerate(CACHE_RATIOS): + n_new = max(1, int(N * (1 - cr))) + pf_mat[i,j] = prefill_ms(n_new) + tr_mat[i,j] = transfer_ms(n_new) + dec_mat[i,j] = DECODE_MS_PER_TOK * OUTPUT_TOKENS + +# ── plot ───────────────────────────────────────────────────────────────────── +fig, ax = plt.subplots(figsize=(13, 6.5)) + +bar_w = 0.18 +group_gap = 1.0 +x_centers = np.arange(nN) * group_gap +offsets = np.linspace(-(nC-1)/2, (nC-1)/2, nC) * bar_w + +for j in range(nC): + xp = x_centers + offsets[j] + pf = pf_mat[:, j] + tr = tr_mat[:, j] + dc = dec_mat[:, j] + alpha = CR_ALPHAS[j] + hatch = CR_HATCHES[j] + kw = dict(width=bar_w, alpha=alpha, + edgecolor="white", linewidth=0.5) + if hatch: + kw["hatch"] = hatch + + ax.bar(xp, pf, color=C_PREFILL, **kw) + ax.bar(xp, tr, bottom=pf, color=C_TRANSFER, **kw) + ax.bar(xp, dc, bottom=pf+tr, color=C_DECODE, **kw) + + # value labels on top + for xpos, total in zip(xp, pf + tr + dc): + s = f"{total/1000:.1f}s" if total >= 1000 else f"{total:.0f}ms" + ax.text(xpos, total + ax.get_ylim()[1]*0.01, s, + ha="center", va="bottom", + fontsize=7.2, color="black", alpha=max(alpha, 0.5)) + +# recompute ylim-based offsets after first pass +ymax = (pf_mat + tr_mat + dec_mat).max() * 1.18 +ax.set_ylim(0, ymax) + +# re-draw labels with correct ylim +for j in range(nC): + xp = x_centers + offsets[j] + total = pf_mat[:,j] + tr_mat[:,j] + dec_mat[:,j] + alpha = CR_ALPHAS[j] + for xpos, t in zip(xp, total): + s = f"{t/1000:.1f}s" if t >= 1000 else f"{t:.0f}ms" + # already drawn above (approximate); skip redraw + +# cache-ratio sub-labels below bars +for j in range(nC): + for xi, x in enumerate(x_centers): + xp = x + offsets[j] + ax.text(xp, -ymax * 0.032, CR_LABELS[j], + ha="center", va="top", fontsize=7.8, + color="dimgrey", alpha=max(CR_ALPHAS[j], 0.4)) + +ax.text(x_centers[0] + offsets[0] - bar_w, + -ymax * 0.032, "cache\nhit:", + ha="right", va="top", fontsize=7.5, + color="dimgrey", style="italic") + +ax.set_xticks(x_centers) +ax.set_xticklabels([f"{N//1024}k" for N in N_TOTALS], fontsize=12) +ax.set_xlabel("Total input tokens (N)", fontsize=12) +ax.set_ylabel("Latency (ms)", fontsize=12) +ax.set_title( + "PD-Disaggregated Request Latency Breakdown\n" + "Qwen3-Coder-30B-A3B · H20 · Mooncake RDMA · output=128 tokens", + fontsize=13, fontweight="bold") +ax.yaxis.grid(True, linestyle="--", alpha=0.35) +ax.set_axisbelow(True) + +# ── legend ──────────────────────────────────────────────────────────────────── +phase_h = [ + mpatches.Patch(color=C_PREFILL, label="Prefill compute (P node)"), + mpatches.Patch(color=C_TRANSFER, label="KV transfer (Mooncake RDMA)"), + mpatches.Patch(color=C_DECODE, label="Decode generation (D node)"), +] +spacer = mpatches.Patch(color="none", label="") +cr_h = [ + mpatches.Patch(facecolor="grey", alpha=CR_ALPHAS[j], + hatch=(CR_HATCHES[j] or ""), + label=f"KV cache hit {CR_LABELS[j]}") + for j in range(nC) +] +ax.legend(handles=phase_h + [spacer] + cr_h, + loc="upper left", fontsize=9, framealpha=0.9, + ncol=2, columnspacing=1.2, handlelength=1.5) + +plt.tight_layout(rect=[0, 0.05, 1, 1]) +plt.savefig(OUT, dpi=160, bbox_inches="tight") +print(f"Saved: {OUT}") + +# ── print table ────────────────────────────────────────────────────────────── +print(f"\n{'N':>6} {'cache%':>7} | {'prefill':>8} {'transfer':>9} {'decode':>8} | {'E2E':>8}") +print("-" * 60) +for i, N in enumerate(N_TOTALS): + for j, cr in enumerate(CACHE_RATIOS): + pf = pf_mat[i,j]; tr = tr_mat[i,j]; dc = dec_mat[i,j] + print(f"{N:>6} {cr*100:>6.0f}% | {pf:>8.0f} {tr:>9.0f} {dc:>8.0f} | {pf+tr+dc:>8.0f}") + print() diff --git a/microbench/plot_breakdown_real.py b/microbench/plot_breakdown_real.py new file mode 100644 index 0000000..6af115c --- /dev/null +++ b/microbench/plot_breakdown_real.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +""" +Plot REAL server-side breakdown from instrumented vLLM events. + +Reads server_breakdown.csv (from analyze_events.py) and plots stacked bars: + - prefill_compute (P-side) + - rdma_transfer + - other server overhead (dispatch + build_params + completion + promote) + +Grouped by total prompt tokens, colored by cache hit ratio band. +""" + +import csv +import numpy as np +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import matplotlib.patches as mpatches +from pathlib import Path +from collections import defaultdict + +HERE = Path(__file__).parent +CSV = HERE / "lifecycle/results/server_breakdown.csv" +OUT = HERE / "lifecycle/results/fig_breakdown_real.png" + +# ── load ───────────────────────────────────────────────────────────────────── +rows = list(csv.DictReader(open(CSV))) +print(f"Loaded {len(rows)} request breakdowns") + +def f(r, k, default=0.0): + v = r.get(k, "") + try: + return float(v) if v not in ("", None) else default + except ValueError: + return default + +# Compute per-request fields +data = [] +for r in rows: + prompt = int(f(r, "prompt_tokens")) + cached = int(f(r, "num_local_cached")) + delta = int(f(r, "delta_to_pull")) + if prompt == 0 or delta < 0: + continue + ratio = cached / prompt if prompt > 0 else 0.0 + + # Some requests have negative prefill_compute (e.g., the trivial 11-token case + # where P_zmq_received fires before D_get_num_matched). Skip those. + pf = f(r, "prefill_compute_ms") + if pf < 0: + continue + + data.append({ + "prompt": prompt, + "cached": cached, + "delta": delta, + "ratio": ratio, + "prefill_ms": pf, + "rdma_ms": f(r, "rdma_transfer_ms"), + "dispatch_ms": f(r, "d_to_p_dispatch_ms"), + "build_params_ms":f(r, "build_params_ms"), + "completion_ms": f(r, "completion_sig_ms"), + "promote_ms": f(r, "D_promote_ms"), + "rdma_bytes": f(r, "rdma_bytes"), + "bandwidth_gbps": f(r, "rdma_bandwidth_gbps"), + }) + +print(f"Usable: {len(data)} requests") + +# ── bucket by (prompt size, cache band) ────────────────────────────────────── +# Total prompt size buckets +def bucket_N(n): + if n < 1500: return 1024 + if n < 6000: return 4096 + if n < 22000: return 16384 + return 32768 + +def cache_band(r): + if r < 0.1: return "0% (cold)" + if r < 0.4: return "~25%" + if r < 0.6: return "~50%" + return "~75% (hot)" + +agg = defaultdict(lambda: defaultdict(list)) +for d in data: + nb = bucket_N(d["prompt"]) + cb = cache_band(d["ratio"]) + for k in ("prefill_ms", "rdma_ms", "dispatch_ms", + "build_params_ms", "completion_ms", "promote_ms", + "rdma_bytes", "bandwidth_gbps"): + agg[(nb, cb)][k].append(d[k]) + +# Stat per cell +summary = {} +for k, v in agg.items(): + s = {kk: float(np.median(vv)) for kk, vv in v.items()} + s["n"] = len(v["prefill_ms"]) + summary[k] = s + +# ── plot ───────────────────────────────────────────────────────────────────── +N_BUCKETS = sorted({k[0] for k in summary}) +BANDS_ALL = ["0% (cold)", "~25%", "~50%", "~75% (hot)"] +BANDS = [b for b in BANDS_ALL if any(k[1] == b for k in summary)] + +C_PREFILL = "#d62728" +C_RDMA = "#ff7f0e" +C_OTHER = "#1f77b4" + +BAND_ALPHAS = [1.0, 0.75, 0.50, 0.28] +BAND_HATCHES = [None, None, "///", "///"] + +fig, ax = plt.subplots(figsize=(12, 6.5)) + +nN = len(N_BUCKETS) +nB = len(BANDS) +bar_w = 0.18 +x_centers = np.arange(nN) * 1.0 +offsets = np.linspace(-(nB-1)/2, (nB-1)/2, nB) * bar_w + +ymax_data = 0 +for j, band in enumerate(BANDS): + alpha = BAND_ALPHAS[j] + hatch = BAND_HATCHES[j] + xp = x_centers + offsets[j] + + pf = np.array([summary.get((N, band), {}).get("prefill_ms", 0) for N in N_BUCKETS]) + rd = np.array([summary.get((N, band), {}).get("rdma_ms", 0) for N in N_BUCKETS]) + ot = np.array([ + summary.get((N, band), {}).get("dispatch_ms", 0) + + summary.get((N, band), {}).get("build_params_ms",0) + + summary.get((N, band), {}).get("completion_ms", 0) + + summary.get((N, band), {}).get("promote_ms", 0) + for N in N_BUCKETS]) + + kw = dict(width=bar_w, alpha=alpha, edgecolor="white", linewidth=0.5) + if hatch: kw["hatch"] = hatch + + ax.bar(xp, pf, color=C_PREFILL, **kw) + ax.bar(xp, rd, bottom=pf, color=C_RDMA, **kw) + ax.bar(xp, ot, bottom=pf+rd, color=C_OTHER, **kw) + + total = pf + rd + ot + ymax_data = max(ymax_data, total.max() if len(total) > 0 else 0) + +ymax = ymax_data * 1.18 +ax.set_ylim(0, ymax) + +# Value labels +for j, band in enumerate(BANDS): + alpha = BAND_ALPHAS[j] + xp = x_centers + offsets[j] + for i, N in enumerate(N_BUCKETS): + s = summary.get((N, band)) + if s is None: continue + total = (s.get("prefill_ms",0) + s.get("rdma_ms",0) + + s.get("dispatch_ms",0) + s.get("build_params_ms",0) + + s.get("completion_ms",0) + s.get("promote_ms",0)) + if total <= 0: continue + lbl = f"{total/1000:.1f}s" if total >= 1000 else f"{total:.0f}ms" + ax.text(xp[i], total + ymax*0.01, lbl, + ha="center", va="bottom", fontsize=7.2, + color="black", alpha=max(alpha, 0.55)) + +# X axis +ax.set_xticks(x_centers) +ax.set_xticklabels([f"{N//1024}k" for N in N_BUCKETS], fontsize=12) +ax.set_xlabel("Total prompt tokens (bucket)", fontsize=12) +ax.set_ylabel("Server-side latency (ms)", fontsize=12) +ax.set_title( + "REAL Server-Side PD-Sep Latency Breakdown\n" + "Qwen3-Coder-30B-A3B · H20 · Mooncake · from instrumented vLLM events", + fontsize=13, fontweight="bold") +ax.yaxis.grid(True, linestyle="--", alpha=0.35) +ax.set_axisbelow(True) + +# Cache band sublabels +for j, band in enumerate(BANDS): + for x in x_centers: + xp = x + offsets[j] + short = band.split(" ")[0] + ax.text(xp, -ymax*0.035, short, + ha="center", va="top", fontsize=7, + color="dimgrey", alpha=max(BAND_ALPHAS[j], 0.5)) + +# Legend +phase = [ + mpatches.Patch(color=C_PREFILL, label="Prefill compute (P node)"), + mpatches.Patch(color=C_RDMA, label="KV transfer (RDMA)"), + mpatches.Patch(color=C_OTHER, label="Scheduling overhead (dispatch+params+signal+promote)"), +] +spacer = mpatches.Patch(color="none", label="") +band_handles = [ + mpatches.Patch(facecolor="grey", alpha=BAND_ALPHAS[j], + hatch=(BAND_HATCHES[j] or ""), + label=f"Cache hit {BANDS[j]}") + for j in range(nB) +] +ax.legend(handles=phase + [spacer] + band_handles, + loc="upper left", fontsize=8.5, framealpha=0.9, + ncol=2, columnspacing=1.0) + +plt.tight_layout(rect=[0, 0.04, 1, 1]) +plt.savefig(OUT, dpi=160, bbox_inches="tight") +print(f"Saved: {OUT}") + +# ── print summary ──────────────────────────────────────────────────────────── +print(f"\n{'N_bucket':>10} {'band':<15} {'n':>3} | {'prefill':>8} {'rdma':>7} {'other':>6} | {'total':>7}") +print("-" * 70) +for (N, band) in sorted(summary.keys()): + s = summary[(N, band)] + other = s["dispatch_ms"] + s["build_params_ms"] + s["completion_ms"] + s["promote_ms"] + total = s["prefill_ms"] + s["rdma_ms"] + other + print(f"{N:>10} {band:<15} {s['n']:>3} | {s['prefill_ms']:>8.0f} {s['rdma_ms']:>7.0f} {other:>6.1f} | {total:>7.0f}")