From d03c744698e670cd21892a34ed986993ead68b3f Mon Sep 17 00:00:00 2001 From: Kemi-Elizabeth <97071326+Kemi-Elizabeth@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:12:36 +0100 Subject: [PATCH 1/4] feat: added pressure metrics section Added pressure metrics section --- .../increase-observability/metrics/_index.md | 42 ++++++ .../images/metrics/pressure-example.png | Bin 0 -> 45498 bytes .../images/metrics/pressure-flowchart.svg | 129 ++++++++++++++++++ .../increase-observability/metrics/_index.md | 42 ++++++ .../images/observability/pressure-example.png | Bin 0 -> 45498 bytes .../observability/pressure-flowchart.svg | 129 ++++++++++++++++++ 6 files changed, 342 insertions(+) create mode 100644 sites/platform/static/images/metrics/pressure-example.png create mode 100644 sites/platform/static/images/metrics/pressure-flowchart.svg create mode 100644 sites/upsun/static/images/observability/pressure-example.png create mode 100644 sites/upsun/static/images/observability/pressure-flowchart.svg diff --git a/sites/platform/src/increase-observability/metrics/_index.md b/sites/platform/src/increase-observability/metrics/_index.md index a3a6fa43fa..59a694f1ea 100644 --- a/sites/platform/src/increase-observability/metrics/_index.md +++ b/sites/platform/src/increase-observability/metrics/_index.md @@ -90,6 +90,48 @@ and whether a given measurement is normal, something that occurs occasionally, o To see data over a given time frame, use the date picker to select the range to display. +## Pressure metrics + +CPU pressure is available in your metrics dashboard alongside existing resource metrics such as CPU, memory, and disk usage. This metric helps you spot hidden performance bottlenecks, especially in shared environments where multiple containers compete for resources. + +### What is Pressure? + +Pressure indicates the percentage of time your app’s tasks were delayed due to resource contention. This means they needed CPU, memory, or disk access but had to wait because those resources were fully occupied. For example, 6.8% pressure means that tasks were blocked from making progress for 6.8% of that period of time. + +### How to understand Pressure + +**High pressure** indicates performance bottlenecks, which means that your app's tasks are frequently waiting for access to resources, even if overall usage appears normal. + +**Low pressure with high resource usage** typically means your app is making efficient use of its allocated resources. It's fully utilizing them without significant delays. + +![How Pressure metrics work](/images/metrics/pressure-flowchart.svg "0.65") + +#### Understanding the values + +- **0% pressure:** No contention - tasks had immediate access to resources. +- **0–100% pressure:** During each second of measurement, the application experienced contention for that percentage of time. +- **>100% pressure:** The app is consistently demanding more resources than are available. + +For example, 200% CPU pressure with one CPU already at 100% utilization suggests the app would need roughly three CPUs in total to eliminate contention. + +{{< note theme="info" title="Pressure below 100%">}} + +Pressure below 100%, especially when it fluctuates, does not cause noticeable performance issues. + +{{< /note >}} + +### Pressure metrics case study + +![Pressure metrics case study](/images/metrics/pressure-example.png "0.65") + +This application shows high CPU pressure even though CPU usage hovers around 20%. In this scenario, the app's tasks are competing for CPU cycles with other containers on the same host. Although the app appears to use only a small portion of its allocated CPU, it's frequently waiting for access - a common situation in shared environments. + +**What this means:** +Traditional usage metrics might suggest the app has plenty of spare capacity, but the pressure metric reveals that it’s actually starved for compute time. This explains why performance might feel slow even when CPU usage looks low. + +**Key takeaway:** +Pressure metrics expose hidden contention at the infrastructure level. They help you distinguish between an app that’s truly idle and one that’s ready to run but waiting on resources. + ## Deployments Sometimes deployment activities (pushes, merges, syncs) can influence the underlying infrastructure. diff --git a/sites/platform/static/images/metrics/pressure-example.png b/sites/platform/static/images/metrics/pressure-example.png new file mode 100644 index 0000000000000000000000000000000000000000..124bfab76ea075bc009bf626f04a53f2cb1e0d4b GIT binary patch literal 45498 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 literal 0 HcmV?d00001 diff --git a/sites/platform/static/images/metrics/pressure-flowchart.svg b/sites/platform/static/images/metrics/pressure-flowchart.svg new file mode 100644 index 0000000000..44679a0099 --- /dev/null +++ b/sites/platform/static/images/metrics/pressure-flowchart.svg @@ -0,0 +1,129 @@ + + + + + + + + + + Pressure Metrics Decision Flowchart + + + + High Pressure Detected + + + + Pressure Type? + (CPU/Memory/IO) + + + + CPU Pressure + App or Service? + + + + CPU - Apps + 1. Check if app is doing + something inefficient + + + 2. Horizontal Scale + + + + CPU - Services + Vertical Scale + (More CPU cores) + + + + Memory Pressure + App or Service? + + + + Memory - Apps + 1. Check for memory leaks + + + 2. Horizontal Scale + + + + Memory - Services + Vertical Scale + (Odd but possible) + + + + IO Pressure + App or Service? + + + + IO - First Step + Look into buffering/batching + to reduce IO load + + + + IO - Apps: Horizontal Scale + + + + IO - Services + Vertical scale memory + or Sharding + + + + + + + + CPU + + + Memory + + + IO + + + + App + + + Service + + + + + + App + + + Service + + + + + + + + App + + + Service + \ No newline at end of file diff --git a/sites/upsun/src/increase-observability/metrics/_index.md b/sites/upsun/src/increase-observability/metrics/_index.md index 75ccd9ad15..3fad759e04 100644 --- a/sites/upsun/src/increase-observability/metrics/_index.md +++ b/sites/upsun/src/increase-observability/metrics/_index.md @@ -57,6 +57,48 @@ You can access historical data for up to 30 days. These data should help you und To see data over a given time frame, use the date picker to select the range to display. +## Pressure metrics + +CPU pressure is available in your metrics dashboard alongside existing resource metrics such as CPU, memory, and disk usage. This metric helps you spot hidden performance bottlenecks, especially in shared environments where multiple containers compete for resources. + +### What is Pressure? + +Pressure indicates the percentage of time your app’s tasks were delayed due to resource contention. This means they needed CPU, memory, or disk access but had to wait because those resources were fully occupied. For example, 6.8% pressure means that tasks were blocked from making progress for 6.8% of that period of time. + +### How to understand Pressure + +**High pressure** indicates performance bottlenecks, which means that your app's tasks are frequently waiting for access to resources, even if overall usage appears normal. + +**Low pressure with high resource usage** typically means your app is making efficient use of its allocated resources. It's fully utilizing them without significant delays. + +![How Pressure metrics work](/images/observability/pressure-flowchart.svg "0.65") + +#### Understanding the values + +- **0% pressure:** No contention - tasks had immediate access to resources. +- **0–100% pressure:** During each second of measurement, the application experienced contention for that percentage of time. +- **>100% pressure:** The app is consistently demanding more resources than are available. + +For example, 200% CPU pressure with one CPU already at 100% utilization suggests the app would need roughly three CPUs in total to eliminate contention. + +{{< note theme="info" title="Pressure below 100%">}} + +Pressure below 100%, especially when it fluctuates, does not cause noticeable performance issues. + +{{< /note >}} + +### Pressure metrics case study + +![Pressure metrics case study](/images/observability/pressure-example.png "0.65") + +This application shows high CPU pressure even though CPU usage hovers around 20%. In this scenario, the app's tasks are competing for CPU cycles with other containers on the same host. Although the app appears to use only a small portion of its allocated CPU, it's frequently waiting for access - a common situation in shared environments. + +**What this means:** +Traditional usage metrics might suggest the app has plenty of spare capacity, but the pressure metric reveals that it’s actually starved for compute time. This explains why performance might feel slow even when CPU usage looks low. + +**Key takeaway:** +Pressure metrics expose hidden contention at the infrastructure level. They help you distinguish between an app that’s truly idle and one that’s ready to run but waiting on resources. + ## Deployments Sometimes deployment activities (pushes, merges, syncs) can influence the underlying infrastructure. diff --git a/sites/upsun/static/images/observability/pressure-example.png b/sites/upsun/static/images/observability/pressure-example.png new file mode 100644 index 0000000000000000000000000000000000000000..124bfab76ea075bc009bf626f04a53f2cb1e0d4b GIT binary patch literal 45498 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 literal 0 HcmV?d00001 diff --git a/sites/upsun/static/images/observability/pressure-flowchart.svg b/sites/upsun/static/images/observability/pressure-flowchart.svg new file mode 100644 index 0000000000..44679a0099 --- /dev/null +++ b/sites/upsun/static/images/observability/pressure-flowchart.svg @@ -0,0 +1,129 @@ + + + + + + + + + + Pressure Metrics Decision Flowchart + + + + High Pressure Detected + + + + Pressure Type? + (CPU/Memory/IO) + + + + CPU Pressure + App or Service? + + + + CPU - Apps + 1. Check if app is doing + something inefficient + + + 2. Horizontal Scale + + + + CPU - Services + Vertical Scale + (More CPU cores) + + + + Memory Pressure + App or Service? + + + + Memory - Apps + 1. Check for memory leaks + + + 2. Horizontal Scale + + + + Memory - Services + Vertical Scale + (Odd but possible) + + + + IO Pressure + App or Service? + + + + IO - First Step + Look into buffering/batching + to reduce IO load + + + + IO - Apps: Horizontal Scale + + + + IO - Services + Vertical scale memory + or Sharding + + + + + + + + CPU + + + Memory + + + IO + + + + App + + + Service + + + + + + App + + + Service + + + + + + + + App + + + Service + \ No newline at end of file From ddef90ff8e52b750c50f359739408c19b5d850e7 Mon Sep 17 00:00:00 2001 From: Kemi-Elizabeth <97071326+Kemi-Elizabeth@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:58:54 +0100 Subject: [PATCH 2/4] feat: changed example changed example as suggested --- .../src/increase-observability/metrics/_index.md | 11 +++-------- .../src/increase-observability/metrics/_index.md | 11 +++-------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/sites/platform/src/increase-observability/metrics/_index.md b/sites/platform/src/increase-observability/metrics/_index.md index 59a694f1ea..eea1bd7b03 100644 --- a/sites/platform/src/increase-observability/metrics/_index.md +++ b/sites/platform/src/increase-observability/metrics/_index.md @@ -104,8 +104,6 @@ Pressure indicates the percentage of time your app’s tasks were delayed due to **Low pressure with high resource usage** typically means your app is making efficient use of its allocated resources. It's fully utilizing them without significant delays. -![How Pressure metrics work](/images/metrics/pressure-flowchart.svg "0.65") - #### Understanding the values - **0% pressure:** No contention - tasks had immediate access to resources. @@ -122,15 +120,12 @@ Pressure below 100%, especially when it fluctuates, does not cause noticeable pe ### Pressure metrics case study -![Pressure metrics case study](/images/metrics/pressure-example.png "0.65") - -This application shows high CPU pressure even though CPU usage hovers around 20%. In this scenario, the app's tasks are competing for CPU cycles with other containers on the same host. Although the app appears to use only a small portion of its allocated CPU, it's frequently waiting for access - a common situation in shared environments. +If a MariaDB instance shows memory usage above 100% in your metrics dashboard but the CPU pressure metric remains at 0%, this indicates there’s no contention or delay in accessing memory. -**What this means:** -Traditional usage metrics might suggest the app has plenty of spare capacity, but the pressure metric reveals that it’s actually starved for compute time. This explains why performance might feel slow even when CPU usage looks low. +Databases such as MariaDB are designed to fully utilize their allocated memory buffers to optimize performance through caching. In this example, the performance constraint is not in the database layer but in the application tier, where CPU pressure is observed instead. **Key takeaway:** -Pressure metrics expose hidden contention at the infrastructure level. They help you distinguish between an app that’s truly idle and one that’s ready to run but waiting on resources. +High resource usage without corresponding pressure typically reflects efficient resource utilization, not a performance issue. Pressure metrics add valuable context to traditional usage metrics, helping you distinguish between normal resource optimization and genuine bottlenecks. ## Deployments diff --git a/sites/upsun/src/increase-observability/metrics/_index.md b/sites/upsun/src/increase-observability/metrics/_index.md index 3fad759e04..2a0a1c314b 100644 --- a/sites/upsun/src/increase-observability/metrics/_index.md +++ b/sites/upsun/src/increase-observability/metrics/_index.md @@ -71,8 +71,6 @@ Pressure indicates the percentage of time your app’s tasks were delayed due to **Low pressure with high resource usage** typically means your app is making efficient use of its allocated resources. It's fully utilizing them without significant delays. -![How Pressure metrics work](/images/observability/pressure-flowchart.svg "0.65") - #### Understanding the values - **0% pressure:** No contention - tasks had immediate access to resources. @@ -89,15 +87,12 @@ Pressure below 100%, especially when it fluctuates, does not cause noticeable pe ### Pressure metrics case study -![Pressure metrics case study](/images/observability/pressure-example.png "0.65") - -This application shows high CPU pressure even though CPU usage hovers around 20%. In this scenario, the app's tasks are competing for CPU cycles with other containers on the same host. Although the app appears to use only a small portion of its allocated CPU, it's frequently waiting for access - a common situation in shared environments. +If a MariaDB instance shows memory usage above 100% in your metrics dashboard but the CPU pressure metric remains at 0%, this indicates there’s no contention or delay in accessing memory. -**What this means:** -Traditional usage metrics might suggest the app has plenty of spare capacity, but the pressure metric reveals that it’s actually starved for compute time. This explains why performance might feel slow even when CPU usage looks low. +Databases such as MariaDB are designed to fully utilize their allocated memory buffers to optimize performance through caching. In this example, the performance constraint is not in the database layer but in the application tier, where CPU pressure is observed instead. **Key takeaway:** -Pressure metrics expose hidden contention at the infrastructure level. They help you distinguish between an app that’s truly idle and one that’s ready to run but waiting on resources. +High resource usage without corresponding pressure typically reflects efficient resource utilization, not a performance issue. Pressure metrics add valuable context to traditional usage metrics, helping you distinguish between normal resource optimization and genuine bottlenecks. ## Deployments From 01f0013fac6838cd4eedebad2a006c1a95df23d9 Mon Sep 17 00:00:00 2001 From: Kemi-Elizabeth <97071326+Kemi-Elizabeth@users.noreply.github.com> Date: Wed, 15 Oct 2025 19:16:33 +0100 Subject: [PATCH 3/4] feat: removed images images have been removed from docs page --- .../images/metrics/pressure-example.png | Bin 45498 -> 0 bytes .../images/metrics/pressure-flowchart.svg | 129 ------------------ .../images/observability/pressure-example.png | Bin 45498 -> 0 bytes .../observability/pressure-flowchart.svg | 129 ------------------ 4 files changed, 258 deletions(-) delete mode 100644 sites/platform/static/images/metrics/pressure-example.png delete mode 100644 sites/platform/static/images/metrics/pressure-flowchart.svg delete mode 100644 sites/upsun/static/images/observability/pressure-example.png delete mode 100644 sites/upsun/static/images/observability/pressure-flowchart.svg diff --git a/sites/platform/static/images/metrics/pressure-example.png b/sites/platform/static/images/metrics/pressure-example.png deleted file mode 100644 index 124bfab76ea075bc009bf626f04a53f2cb1e0d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45498 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 diff --git a/sites/platform/static/images/metrics/pressure-flowchart.svg b/sites/platform/static/images/metrics/pressure-flowchart.svg deleted file mode 100644 index 44679a0099..0000000000 --- a/sites/platform/static/images/metrics/pressure-flowchart.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - Pressure Metrics Decision Flowchart - - - - High Pressure Detected - - - - Pressure Type? - (CPU/Memory/IO) - - - - CPU Pressure - App or Service? - - - - CPU - Apps - 1. Check if app is doing - something inefficient - - - 2. Horizontal Scale - - - - CPU - Services - Vertical Scale - (More CPU cores) - - - - Memory Pressure - App or Service? - - - - Memory - Apps - 1. Check for memory leaks - - - 2. Horizontal Scale - - - - Memory - Services - Vertical Scale - (Odd but possible) - - - - IO Pressure - App or Service? - - - - IO - First Step - Look into buffering/batching - to reduce IO load - - - - IO - Apps: Horizontal Scale - - - - IO - Services - Vertical scale memory - or Sharding - - - - - - - - CPU - - - Memory - - - IO - - - - App - - - Service - - - - - - App - - - Service - - - - - - - - App - - - Service - \ No newline at end of file diff --git a/sites/upsun/static/images/observability/pressure-example.png b/sites/upsun/static/images/observability/pressure-example.png deleted file mode 100644 index 124bfab76ea075bc009bf626f04a53f2cb1e0d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45498 zcmce*cRZZm);>I8h!zYIWe^Oaw=hcdGKL_8L{0SQz4z#&3`TUKhe)DE7g3}4-s>Qu zNA&g^`JVGU=X~Dh@Atob-+S+MuX3$xt-bFEbv4C%1T+Ky0N|byT>d!#0OSP#?quL$ zVcxh`(LDeF$^(_;WwbnJwr7>B4frXfHFg4iur$IL)i~M%NKJ^EY@LYHic$@Sz+eDi z>3#<;0O0uyiP`-~69NDkuO11ExeSMzt(z@hS?nhJ#MUT`1Cjn zhwMPx+x11`;wKJOj1UW&3)uYo7a;!0NW|`SXLpS$2&Bsb$A}U)m6|^g;&dqy($*Tk zCV3&G-B%?r%7+gC(7u^VVnT^-q`A1AgzsM0-%n*#!faq(t)}qm^HM^Q;B=d+$zX&( zqBay)0AhAzSkJvc_;E=OLTi-phKL{|Zn-N%xqB+$z)bZSUQ(5JTI%xon?cn8D9AA9U> z^G)IOKS(m&v3|Ls8JQ0L0QVBiqXIZqrB*x-VZe9}P(q|>5Sc;FeCt7gdUmLd{EPVz zMOq#j=G;%Tv6y#&AN;)qh^#E8!{ByujFJH9z&>Yovc_cgo9rszI5VbCsK0^;Odf0o zQsu!N2a2rg9Y6ibAjjt?`@5b$sR)&A{r=?j2+P6iFNc8_dbd(U`0Mbot2Ar%$s_Bk9=X}-jui0?RiQ4Nc;O?XOEy(f*(rM;UV*jNsW*og z{aYu(4s$+#_7z5bMa6xg6J6ciC*tVI!G}#FOQW5GXFI_cgPjk3T>l)6_tu<6dF+Y% z)m%Gz*JA(x0KDP9cs+XFyD)voObRqU`##Y>BmMuiv^38eAbn;&2f3OdJKfh%2%9N~YR?8xl#bXR16%Ynf`&94vlDOFc>6vzOR#aH?eC51Z zWkvF=AZ*w_RIc{ng`<@Bi^hq#d?X&zOuu}m_tT%@!KkI+0%_;O2@EnTc-Q%pp3o%# z3cD33iG{&eg@Y$%3=F@_*5^Sw-AVV{m67^y$ zw7q!}7biP9)mGl_iP~BM@~w%ZHu|`LS#QL?2@=7{;vAVJ_>Tay@?E6PL}_WDphP9C z?hO#fask|O&n>l1AeuEPE4UOniTBh0w&MGq@De^RyZ-hZgX z^Blc@s zr5hfWq0n9wUb$Gd{G$s&|NQyq{5<@cZR<5Mx>G93pj%)In$){i^La10C3WG$&pg(1 z{C|}3DDQl;90Tk6zl(WOR&gW$mdb|MGc(VFm~wtphr8=0Uvp0trL=6UE1cl~>_9QEM*waEJoN z4#5|`ojBcm6RI9{3#Mr$`V(#!;pV!tB{wr)(s{1gZkO=A@KwZ7%G9LkD7U+qZIpap znzgZYHSBujlD6)NjCkl2-Rl_{suRUZ-NF8WqV(1b<>z({!9mO$m0YWWM_1~?cI_Q! z&QJVaOQ|Ktj(TN1rCk-sG+~_Ruu|)-cynvzhoWk11r2ltglAn;!Q#(g&dz!LCcT?a zX?n^jsIxY@P$#8HSw0d&*%6<1bV}#zg_V@qgG@6DjH9VfQdg*w4=4z?78q~89jRrv zxLnmMT58i*&(&m+{FV3);O)qZ*&6RFg%C{AkZ9Op{2Xvw0HnKb>(;*7Z9l;Bw^w*_ z+XN*1Z4mZu=hXjp1>bJx{$p`7@A39~mJ$Y{=KW_q1>N^6R3|tXDK(jk85`qZaE3T( zBPEoqd>J{{7vPhp;1&haVVJps?!;@HQXkih))%zE`!eEfhx_+8`c$O85sChlu6(P+ z|4+j?J<}XIz!LEZg657i65xpGf|dd?T6_cnO0r=9&!sWE6SUb$zU4!YmyvlN)G|&% z0jnl}9u=h78ylZTYM&da0kY~4Gp4Z4VUvxX2>m;3+(Pk49fno%cQ?4ReHCXlJu?b8*6(7KGW{-f6M5 zIYUD&R`B6|qvrt`PnE|YBQ|z;Z7rAC(O_0nUk_JR#c!<_{6~k#-JSOYe^#%r6!V#@ z0^u4hU2PJTr5-b}52fBlPL|9QQGD~idSKw=aYB*Z6~NS-8T@F%b|Lu1uk+%I#}B?p z`W(;{jBOrjzbsi44VVsle-Y~!dN1v}*NO4gZktPTiD9GDaK2VhIo_h&hd2A zB+sj_nC#Lt{O*5owLvoEh^JTKy|p0sNXqXTtNIVUI{Ik##Brxn%@7#5w8$AWeULIL zo*Woxd@?6txsvAthqVmhG-DCy#CX*z^6J%k?=3*i&fMaDfBN&_jVtPyYKtmb*=6-8{zBNpua(j+d=}iminRzjBxOaAb~H0;!y8jh0cK^ zkljc?naBDw4LUEtjg)&$&wTNWnax-I#CFeiQ_YTf&ybJIgh?eeB^}6N%OPeq8VC8_ z7fL})%JLKn(s57k)X4xf&FkdwvtnSIk;)eFHVm3eGA;Z z{&V8#q8;n+BX;CneRv}n1?Q^2>0heY3x56jyGRqwg?r}Q=APE)^DI+bh~z#EP4{@sVj3*Kmf@w~ z@7N-jVY7V0t)D;Rjb~?{Fp{q8{JP|c(hx*iIxz#obpr4DV)^K>Z@wAMRp@Qb|FHJG zu#;mQtwg>t^{dV4J{_B_Q)0XrA&|JH_NXFsps!D}v-6K2$fML>+977U%c?(t@;__R{-Ox54Mfc?R zX16Aw!LOlDBq$ej{?z6ATjJvaAL4M>5~(GSmEW+QDnLkLql43mS&UINRkMfFMkaKi zWOseyuGTLaefa<}@m*(Y;>4MH);~3ooL_K3G~EpvT>V?2EP`2*eo!C{qf=5Uj4xWt zu!Q<3eerPgc!Ad>~!hd0opOq4&5cPmNMqVwO^_jDUTD2TR zXSkoM#eRDGPkLI~Y8-4zk0b-8mK9@$YBi5IA1iWMv;0zZ^!;0$8v$}QJnH=Xe9Uq{ z74lmn7B?iNB*hZ#UMFZ{v!xgZGXhs%YiKx)5D^jOOpoTlNCS35H1Zbas>e@y?@0#u znLbzWN<8>t)}3pw#@&$W&Gw1kH4YKr2k_gnmeM;%hkU1fIbr?b4)EI zX6i96J9+9WUHR)j@{^7kc_O6cO)v4l&)4~lr)#`t5Kd;~(%$R?WqVlDRaFgIB-O3^y*;ebKy zuuY*(VC$ga^QT;j5wu4w{u~Iy6h6+adYW)K8Nm!)J(VEd@@TnQV$Sm9$(VSu$rDw9 zS!p&l!=g#6fGSHTw!lu=a@)u6rgBgN1K|N#+x7*ZwY6T{lx|h`;l~BMMp9v0%KrYS z7cC)7Xe0L_Zr;-BUwvXs!NNjS&Y244mm)Qtu>l=n&)&loR>@q}lw2(kN3x+RouoHBU(K^DCsCnhZ1Vw@nr1 z2h96KiM9DE+swIwqX>T2{O?6>`If+Uc(hn?>N%D)!zr#Y?5YKW<`_)Lx{`BF%WQ)CiX9UfAlOfZ{@0gAt8Z_<5QVmjgCPeER9B=fiz-1 zOKR`2s4H5NlO|BCOZyl#Yw{}r`vN;m1>*9CSHISgJF0T2U*b~lm0q6=gu)Bm#d-9A zTd#8J0hRQdoSj*cil!ZfvFZ*aFk3`a~;Cf~_;Q;jsMXfVr53g)GG+SX#RN zy=u_gBZ_`{7+>);9=(p}*LdY!vq0kP(I( z0~Li7Aaiz`>_#14%W+mA(PkCSyGpp3 zTgODHt~V?Zwh{)lsl_mwtC}@#XusQkJJ^~$HGf6EaOd}Z&TU5j=LYN_52;zE;?cI3 zA^v>B^m#kaRi`Gwl&gf@Qt{74_6EbRWVi3ucPW6MFPHGjamjS^NU(;5gR+DKHzg$cTO3{4*HOITu;02}B(^HO z!OSYHh3=PGS8V0V8YlZYRg1jM^M0ak(7PrM$@Z?Nzdp~GMYczqe3R`q8PpC_q^`t1 z6v+oo_wT<+`1;TcD`|h&bB2hmHH-EscX=`-WkK6gUa{O}Sb&y)7RJoWdD(p9Fh37_ zg9||-PAG5;G~O$$Hk>^9+;UL8viaO#rtzXn8j7wEJ`#7} zqDMC=!{J^#&rJRNNb>snxfw38@s=%r#RgERh8fyI_@kW6KRvVT5sxE`^IDPrNJnG*F~F}P{^>1O0=p`1d96| z6KylTq<0};r6`Fv=p{z-shJrN7`p z?j8;Gw&s3S@%oaq{f@Utrk+_wveQ1(n-?zygLrGtadWUX<=#9_qkV@eRj?OniXmtQ zFd|NHw8tmfEuyk~b$`o-3+5W6y}-S+(i`49+lkB#x@_=4i%lA-0`$#lt!e_`ffgJ<@tR!lLG>F@;U6i63;>- zn^X*Hjf7BtxYQoZwg$_vxr^y|S<65k4Zsk%wgsj~H3NjT8cx7=d@FhC(gL4ZfL>jXFHg-oIO%<^NHEkd5gjs2MOC!tWS2 zO>~!@c&~pDjEdIpDtRBizo&ONz1}i{P*;V+Lj>_XN!MGl6rt_gORs`qI*_8-T+j>2 zGtW>eCQO0))t#78P_9Nz>7SYWL5$Ejg%Bv)+!$$O{2?|vdV@r|4yL~Jfa~T`(k8zoeOUW}Nay;2;qRvWQve+Aq zNO|ID=?;g$6@4CsOMI2oYju|8V}sgf?wAj+gp6pPv`R+)8Q(;JxCgkuh#ikM2Xnsk z{${f~SA%MU;HbE{Eto67^O93|_~xs}F&hf#MBBJ-Z(Y0W z{q_}f=8h^*0f>z)*A_9>o`)Bds%ZJ}GMlZS{%QV;o@EI!s#&KD>hc1^tELA6ReDpu zJ`2;3E5SKl@oIi%gvRS8u?#ZCRE}1$;?G?wJQs_%_gcJ(u_SK+4z&=6XYBP z)B(*BMIrv$w&&X^VBPpq&)KMlZyHeh{%1VUDy=vqI6zkcu!CF!WEUEa9 z!>f6}87hMKZ9~TTfofa9Zf`!p*@Y%hKP_KTx17DN7fCZ&GpkqX$CO9^-sgc&dZVCB zOiZh-gDGFW;d6#+Y|IdNTx*mp5~)#5@jTM)@+B2~^ANQ2usAeLF!- zd%N;>WcA;x&2Voga25Y8jOIU9qqL8=&4uk4h}!nA7BwL(K)eKsG$0l}PkVcW=;_;M zo^Ob1<+v3RjWiSlE0+8oz`q(D7GG=Q0%$RJg8=0i%r8=P2;i**<~}qVjkzKOVD3mo z-eTS+&|*fI`$B*Z=B;$M2Ii6!^OMZ+cAiZXGrHY=e7iM153>lfed%^y-5E2w-M*az z+qatCaX+NI>O*ZrliaQhfFYMOJsgwFmCc{`Xel!aeaPB6O6xr(?3jFVLv0vga$|C3 zTO+l)%KXpQ8Z>KbgEbjfMDT-#j{G_g|CBb3mGY^*l)p2l4edqu9BnoUn`tRz(l@zBB%Lm4!4k9rgWc*Ll>+rWR`En?d#0+KehDg%K^D;O5K$ zS07jU`lE>*^Q!BePu?0uug4u|YIedq17qT+Tk-RBl#6cSSK;hTi6eBij`QVbGh0$Z zv+tD~oivIzuXsNnd4C=MzW0l3Sasz>CXL{``f>usI{<66?|pVAG>^g;kA~TYV>HDL z3wf*cx=CwZJc-WYr8nZ=zFR>9T>q$wzvs5Aq_a=9VA6+1tU%D~7@v?%`76uKV8wuM&R0JK$fgy`BrSdJ4wbIvIX8aYqp)0$1EvU0jZ$ zBV*>vMgpn&(6yipU!V+FMpD1HnbYjW&b^Ws%&3C12)I4gC39wuX_3l@mm4@Tqi(*k z0VmzzqGN8@>$F`C8rajH3?^91C8?-EFzCqO1+TQ(~h-y5+pP9`F9W)*Em!ge% zw2SLq@8SuIb3=kWgt=6D#`VNi*&~&G_vKbBIJ%X@(sNyq?z4WfvEUWn?4bBB(w&fZ zroW1h)4K20>S3ob|8O>MKTHdQB7ne36oZpK0|5nYE=D1OAlrB(Rl$+7@a5(B@CZzx zE_UCUN!iC?@Y%rX{(#IWmaRPLheBQw0v3C|mF1U>;}S6jt*>gU#r%T4NU$<S6n2VZr%&)Cc5`3VHr=j-2=x!O*opL_pK3nis?YZq|0M5u2Tvm z^;k78RW`myXqL{A3QW?=7znUq=EFFMuC`N}0tZ_oF8jdE2STCArJep1eCGsiu1h62 z+xTeqg70)~TFrqkti_z;?kiBqf@C9HjfKV4ks$JSXA8T`M2SIxRfJ~5=kZa&uenTR z_rvb-6J5$;9mjK*v7gl3%jVxFOaA(VcGNjx`pf8^rb-|sFe~!y-PS(2Vgh_mczjP1 z#|vX7ny`pQc4hzu55fA_8a%612rO}gG(|xfk^Hb5k-SV$+hi3e`?(Fb9dqSPiI$b; z-AaFdGUtrXiu$GBAo`(9C+DhWB4o`vGxK+7*Md6m+L8hY8v{LP4fgDPprv3_z6J zAtt|x^l76z(h3Y;4p_& zz%VGIT23{l4cDDVSs1wrC)al=fdT2RZ8dS4#~|qwnz@KCHI5QDCMh0 zA8tgA0}~-x`|G||kOg6^wVaRE&>Q}w0jHx~NAdS6LZ?!g)h0N3u5B=|%(Xs)@RS|K2-Y%e30}h&qE`OyRBA=*1>MC zZRz0f)oaq_H)6ftB`yHLXKrcjOqUklCbq*M{Ivy^NhZomH#akg$2aMXF0)o(MDEX< z8(Cgn?oV0@R&3UR)#~cK3IrjJ`1rtJ^7J?W0jUeWLt860C?eQghALv&Ru^S=Hoh?J zGN3!E3Te~`p>;k1KZE$^)ddVij^Kq?S;>D+htb1F5P^b0=Oc)ue2^$JQe0!K&t)}0 zDh6F4RbYAb0!2GH7=7h+!cKU{oPkt<&_41t@gbOdCb&)u#ad|2cHqRI{GBx8(H)JC zS!f)@Z)fQQJqcU{vJ8Ch+pT7VKPO5!P)=H3 zT}B{j!9iAAJfAj*@A)LHp@Y?8Q$JBK-aAqv6J{1UKSkjqj_jgn=yFco9IO9EK=^rW z_<*`mJv8xSiHS7DRaixr0!Rl;`nFTeF|e-ob#RV6oI_b~N;%T%E!$~THCfW(59KgR z7R63KX^I##24(#(@@9bxL%ZR}A5dnkrSy~<%6Lud_)YM^UwF&fW=%x-sLLMQF7jXW zS_5@v5!UYhXInpccfTZmc48oSBu|<0J7#NBu(g5`=oNX$71v^$&pJ4utxlWxv8L~J z$xBTv4R;$iXq~eG`&W{jzJ*Po{e0W|i(I^>;6Sz=^4zF|X@v>+NEheJmECZ?ii@1H zd6I_sc@hN&**De@?PVd*%GCx}zi#tlDl?1Z`M0q`|@v-q!$n4DV z%?*xWmgM}S_bEB1(Gd}v(JmP>>s~Mz=#Ih<{tF+Y!mS^;yF+PLdMH8?<}idf4* z>ZJQ1)q`^A(pOtxY@MAjNCE^Zdp3xS9&Q4yow6#e_sw0BL&7X1WbS@9` z6A+ufXDrEa0vgKojd48Gc9Mt6xA=0?3gZ^oR#CF#+RG=gn#?!`;aM}&-ljccylr;K%6?w-b56xfPW zxo>5Jx(V=MNAk=7>vzMD~eqLnbXJlFARrjZMpLm$Mdw=b>YwGsY|Lat_<1f(3lS%5VAt&jsOpz}wD zv2E{P{Q1}5DMdIm7whoO0(Kg$e`GGk3!`xRO5V!+*QFP2D0RUwtBEOvvKCEoi+ks7$!dr}@g!xO+;RxTzR}Hk7`?2Pf+ARn zF58~@!;tmv2~93g_Q~xp+OCI5&C~B`AcBTq2{=wT5g@^P6lPRLFy0_#msV^><-8Bb zd}Bz27K|;#OD=)r@u4k3;9D5mQz@F<+D43yQG`%=#$VE4jR!Lb_DYbfCB!c*UZ=te z;#6fDa!(^H+)IvPaD9;`H=}})K;zyFqGAZ9l7l3b1#eEm$k@k_?PPalMd__E`GgP7 zg@=uhvh;_s$y?!CLQX$%mFyUm&mP1QrW$}0)q5K*?e?bAi_Si%`W891Z{nL!?x4$& z99xrn8%CFvpcw?#5DdYJv3}T-pbiBW=cWk7XrPEeq-z|;#9u^1upktA>eThD_Sb=8 z=FJ(t;x>=e%Vvp^v4ZuNWvo2kHFy{NJ3hVO?I=9pdR=Yq@>p0Ftbsj)Hw?UI$4vID z6(&2JuTBS*r)Gl5QH(`uO_PSQ^#knCvoWS_qdYYM0Y^CoMaGG95{0F1IZ44;49j?; zEj$@OVZdwEzSn|0RuD|&vXP{!L!GeSKSpLIzQ2UFstdT1Dw{;0@#XL}((cUQwVSRS zGTG8^ZW~^EhKJ^|O8P0Z0-wG3^ytP*lF zb1)(`wLyPB$-p|D$A*)P^a6|b@Ie8~_vD4$Gd!(LCsX?$s_}jq{U7C6q47QF4@h+6 z4|PFe@Byx=EH;&LAI1{`D^R9%+3Y**+bbPCVXE#!=X_s761vVOBnLJ-dKXj%7*S-; z%$rK=!%f-0r9fLrP24OY^5lZ$p!Ct2vWoFaR4WPi0Lb(o@|>N9n_aog6qcwQ$)?*V z3j#BnexjoW^m0RmsT3L;#>kkTEvRxYvCrViA;vLKR2^!8#myS(Eh3&wW}O9yO2tZxw7CKBwt80$G?P$y$eU05q@w7J9!4( zTJTS1{MQoZOxR&!Tb}7uS70S-Fv>mI@ZV9e#6&nO4iyTO6_mLPKEN?;xL9~zhXq!$ zaJg0o)`487$!MC@O>pf(NN4cuLKw}={%tI-(^;$Hn)N75K-Zzn3bIe0bBBlpb31~U zgB-$y4EEp_@pQIkHiP#gS$jKGF%)Ii7|3U9*0~G16^XI%Um~?`MXE2rz7v+$TRkiI zn)pkp7bZ{!8bjL7&i!8&^~`pyt&RUGD0cMJDt_Mzi{FecOaxEQn3~#F8A@Jk^*G!J0&Y;d)wSS%b-jP9>zW;~xY7thNts-DbckW+ zT3?x|t{S@V|0^=TF#)-+4Yl>~SR5SSF@hXu&8*$awKwzY?F(@ud=BhL;}Q{&OQ zc%0dIeQIqo0ghhj>hD)Q?7AhN{_|cFvvUmh&?IYP0zry%o7WgutQ19O zB)Iu6#6eg7KwTj46uf&zZ2ZAc*)GH^oGH=o;P}w$iVHPxeeS!myGzVHYxq4~^e+QF zcv;;Pa1%p0rnYs(J>IJD5df?^jrr_9 zD%Z(wo@Hf~l$4^@VOT&#$pGDV8-K=Rh@T13B*&3&wM}7|^lyoXUhr>R zri!`;w#;d8QSs{}#y9(?m0u2d*>!e`x4+tc4W@_%Fk6 zk>~}Ub~z0~0iljAJK@OMtB+t^gT?#*0%9Df2IQ(Bk7Z`DcyYX%ycv4r4wjib#t_|I zFb0$G^jg1V;dh50=~MM*_QO|nEF%9W;}dF7{jV&<6B9qgmSMQPZts{;__v##;=i*2 z!%4@q3m+zmAzIPm0T*ZcKRwsC#M-eHfB%TjXka_SE6Ax8xvArh!^}i%%J&U)S zR_ySE*ja(PHy=5r53MMx=e`935yq8JX_Mc>oEU`?IrzQ%@cP%XSL@v2WS@l%>EJ+voE7V$B=uV0wu8%INI`JPZ5;k- z0B%`H<1Z`OVTc1Q?D48&cV$M6fp#_&>HAtf{lWj0!Bw~Qbv8rN)WfT7q7rrW#@@`@ zUg7^1iXTR<=Fl~zpbrmVt2gy%fk_VV5Z9!O2Xa}(mXnz<9Zm`jJ z4`8dXvzh6-JA((R1ew_VvZOi{`Aatlp}!n93)|)iV9pe9pR76YYr%7dd;|x^{Y_nr zRIa|vHeskFH$7&2TOZkO^U->?tGXX4>u%~{I=Oi-WKE?Q)2aNM^9X}~blyCHveRRd z;&un??GA$3uKD@-^-NBEHfqJ{V*~pDJZKQv@d2h3VRRr2E-GxgJWvzI(CaPiHEs(X zY!qhi;4nDATc+04Bp%fYBaV%k)nu_ZBz1%6*oM@Bn1FU6Iw|9-Gw{2&ER=Z5LR6~Y zy83#U+xpJ@`%}t{_pgk~QPw+SA{AfvTC}*)u=ONp3YbwAHo03mdv0n`dw4(O=6G;UyhU`s@F_dQnsr7*L z{Zo0kZfj>N-VDY~9#dUbSKo#m5`K)~q>pa=31MK)z1Q%>$m2|1ILMq71+M%4{eP7> zTT`9tT74SxPYHf-i$3E&wm=>yLa=C)<&wr996{{&r^s_R?C?jHw|OALOM`~-pr9Ib ze`|MpYoG5GF1YCZSg7bfs8F~?g{KMlY(X{!OX+Q-k$~&s$>sjnE@VRN=M_mc2g^ZB zk{B(6(6F>R%5mer=;I>t#%_gijFbPDGcu=O`EixJ_#@LIpPlea)c2h9q_#@C9rDZ} zor!6+v9k|R(4d!1T}T5#8dwNjm^~1$+b*g}f-t$Z zF|^P(9NDaVZr$x>?{fO7s=hXsm+D;|sDbnC9NdL9smKR8F8C%G^7kvi&t$7xvCoJBw-SEcJ^l7CC7V|kIc@Xs{_$}U;10S5uskfRRFMP z*Zu!i$bKG=4AP;(oky26EcvjGux_67QK8!u+~ODHG#OJ%jL|UbN52AEsQ)%fgonp% zlvD6u47~q^o_8BCd7t^Nd$wqQd*F{P*k{fzys)3|XS&&K(ce}r+J+OpfDb}Vx{zAd zh5zfIH_r6Xc)0n0>(isc%}`@*4+QV*ltqt^@|L0DhN0^p4He&eTfAnWecC+-=ZlxO z&wpNw|8D^F^?E!m1J!kW#`MXz4dy>EvIe(Uenkz;;Zb1uo7kRcTfQzCivw?d5shFa z&PPf=jl=Lcrh$aYe(9My6|`lhP$l@Ud~Bb?Qy!n)f}uewqpdP+Ftx3#sjgwC`xy41 zaLUpVfY>o7iA&q(W8m^XiX2KwwZJZOYWe=fKz}()PS*iA!8k9s4s#r`{D_0i?+#A( zn}Kisq=Jr2(}|!4y6aJ9V#3#$I|)ljd#kvQ1kP=D-AenngKW>erPXLzd-+`~+cs(7 zsYe~kq{!CgH2<*jop@LGT$fDs+c~_~tXkoJ8>w=>rpAmAq(~#r^=41*B)YM#rR+ye3In);)*keZeFg-%a^r|8%v#u!{T1zhrKz(8B^d z{cX|HBL40!lPv#bcUxLfsNxhJ{a>jYjmOpBrZ#zngP4v=65ofepeiv$Pf-W@rb0yW zr%iXhl0V_&J-d*UcW?`13d=G^Z{UfO8K&2rW&E2nU#MjH*3QStAgnH4>q6_&LZp z#RwK+BZ>pFg4ojPN>t*#^uMSpH^D0xy@KB`>JcLUy7{HOd=La9`(7RC#nl|%w-2$i zNcw>MEivW_d-V1tRvpMo%2_A-$;Qe|Nox+~K-HBeZ^BNcAei|;A_({A2rOyB<8O*0 z?#tncgKzvGa!i6@w`4B@4I0Lpt*~#m+?=(COiuRKgU)Q9wQEuv@=drQ-BWMN0D~|l z!!gc2`f-7&V*gSc9~NJ`LZG0TtLXT2E!jd9tgAEqAXWx*PSfEH@l7+d^AnDjHN7px znG3Le%a4dY}a&AoRyd0$BzwcqQ9J}IX1wq2F|GGZ*Mm+1Z;@byDHVlS; zvt6sxY8$k`W&hx@mUYc_U5*rZ5-HdM8L{P-4v4{c%>9AXO*O*(PQgyxC8h1-=7$Fr zj5L(FPCPt(1MRx6GTujy>e*;16f=D?*I)NF3-c1?YR}qKXN+^Z_qk0L~6=B?Emg$p8yp&bbFPO z8-tu1B{Q8fzMT5r5Sme0DSzJW*88kPBbbdF2RmtmhFe2a$|kbMt8tU#NK-?~s!n<9 zAm5y;YPFzJD^`B(;~IB3Q>vKChZtoXjh?8sZ*1_uZiIneKT1hR4v&>W@~qUp1D=1A zqzr~6|+dd=})Y)tF4McbZwr?97V#*%P z19cv$0EL5fDbcXj;RGr&_3{bxcHtSs-vqZ002X42MEpc4AIZ;j6`lzlutiRH1ve|v z(~s!yigoV9I@v_0SNlHgwT?z{(wfX0)FNrMlOtoj8>wYYy2nOutj`ut#4L{aXnqgQD)Ezr8S~b_8Iq z+RSa4{nSV1U@@`jF8qJ5AcCO+c=zu(&#DurUe(%6Bj%Ep@X@dm5Ro@Csgiudc*xk` zKn@eM@b1^9I56sKT^QE&`0oPNzfn!XRnqc(wkCb!#1A;0zw=ErL;g>fMjgjZ*~w_s z3Z_}@L+bRxd|UFhKK5qls*tiwZ)h= zdM#i``od6j_)f_qBZzzQ?T44lbHP=k^;CSdgOP`Q;i=|-1J2d&^cjlXxVNuUniX}Y ztYPm*I_6X|45?-AAo=cjaW+VD_&>HLP1s^UgxLChZ1ZRMG8>m)8wqWd0ee-<;b{Ry zNg=`};@q*>_CTwU03FUC-0#k_tFf-HEa>(YD?v5S)?wdTKK^9L>@$Kw>m4Fwu=Zr< zyDkQ!DnV5k?x8_H+?RMYTe+H{{zUXXw$bdm{VP{5`B*do%cY$I>jvgNaf#v_uFW%p z=K^`~6*VrQG8(Uq_7seXZA>4|kH@s)7)^eq>In!tU!0`sc@)nfj3Mg|QA}|L<;)(h zzB`KPlhPTydesJ_wa@B9O6$>caQrZ{=ZD9AXmLnA{gVjIg;s)|zU#h!Ad$Ekwca0d zr>uOdJ>6la?&4zBk=To0(l3tNsKHU^0g23QF!V5ILQuYsYoO)I`Dph1|l0O>dc z!yQ|$p{vCU$*&vM5Dv1N!Ye5ZWq)pE1i|Zeo?OOf((-uUj{~0exF|<{1Lm*gL}8n$ zWg1DI&&C>BLagP$<$@8e4;D2u*!FcewA%qXvooFP0kcjBdYSW@adn%u>2&r=()Maw zn+43N+XeEn9MtzicDQTmv~Of4^UM3@k^`=hgpp^k!`1W6#K)P^h`*jmOV#^G+k#8a zAE5O10&23*(=kLe1s6{gni(@Y44)U%y*&gUnEE(-7uh^a4^6b2F2ZfnBOjsWgceAGB( zCv^UIm!-df)Fdngyqt{`H?~I;$1@y)->(GLqhOsaC7NZJBav%d6XuZZ$tc!5#yf== zC2xjubT!~Q(B1?Tr}JI}6Ya1ibY|>nlYjk}DuVURCxUKqouWBj!KMJN;=L8yuNB7R z5@a?nYW;MlTNlGLb-#W$@8zKng0{{fUf2RvE6si&%A=Sg!lL5fnA;buN)Yi(mnIsv zd(A71`CY@ktNG+i5jtXN&MzqWHjLHmMK)ByksqK!(cxR0f_H;K8K({<`0n5-QdF4;@QRv%4*;+bdz7c>jb8 z^|C0bN#cb`Z8&dAyco|pwqG+%isYJEqt%lpS zuiZ0QJ-kfopZ)>6esWB&@Yy8_jQvXU%g8TUF{q^KUyl4R?Q;3iu+#K6!y|7@zqL%r z6Sbm}Vz|(r-llY(u5fHO%V^&5g&32wxBkc%rQDislm&gnvxcLgtd@-T5k&YSK|RSa zUArATymleM(BJZI5a%LN@m83ah4rhH8ASP)oIWH2D(EB-NlT~wuo7fQ3LZ6_a4H%W zUHvSi@i_86F7C`e!KAQrG2mb9vYxpWE37&G?hWhXByrM4QoPOsO_5+@uti~bz0*?1 z-Pd8xLc@)Rg$pPr4z}k;U;#qh?%IF= zFj?JH$AxRA>>WGI^+WFzUIo*La6N`-jT%9D!xNVNCKwIL3iG=Y0jqzKp78T*%C)P% z|L|CZqwF87^XSz=$7PPF_Imey?5uTdb7#3fh)1M9Nb0XZ;<-bVu_WA)CU)Q!1L4ay z^xOLG1%!yq>g$2a5mqc9=C-y)>iRMS!0>%_x&d>)i0rtJA&N?n7yh++HSlXS1GAL% zQ!R(jEaWo8HLT0>IAB!SnMR)V#jjHdAME_v^3g+! z5|7awY|fHYxFyX8DLrU~yA#zQc>u-Xyi~+Rj$vow%-9@3K`rCQ=*IW3blEu} z#khmhJbfq$hVH9Cm4mG}v2=;dt6d>o*LqQ(eWomnVJ6`IXWNfTV2if9O1H=$GAl^> zsVB^21I3WCK#79^GKdiL}EJ^%0f zwKvYpojG&v+@{FDK<6;Ci^J&a|MM&v&y#DEZyNw|E)UPoghr2f@80Oj%2o)e5-4jE zW0h&xF-FQU;%ZAzYzo7_UeU6QM+%3@gTs5>wazJ<`)liAzPv@z|JI>keVD2C5psCbHI_MbhV{Wm* z@9r4fs6H<$;J$+(c?Hvq z>f5)8+=_mML&~bcO(NodoPe7qw_D?Ufen?>B&h?G#4(>(1hz>0X>p>QLPTi5L6%mI zA25TC2-OfDeL+790A)N|66{9|zvQ#=VO&5UzW{g|W^!Z-EL)WV^^mnt)e*(qRVJY_ zz4w0sv#NjdCX^92T=SwK`)=?XwR?k=K;v6B4h^NhOPsQxA5LKqUx(wc!6ITDI^8Uy z4ieCE;_-4s37fWJus|sHn&!MD6#wgk%rVVbByW`|B*=wyfxtA7N)Yot6GFj&LJUD8 z{syQIePIF(sSBYI^$VmYKRF2u)GT&5I*W8DrXRZW^#1&{NUsx7ZpU8uUesfUi0=K{ zw+mtU#WnV z@vv{78EDs1^J7>fzXR<0{!s*`kUo3%`VN#r~Ra7sMF+w0?MvCVtVw zgxpsV97%M;h4^nKpCafeGaWt0*1^*q8U1ecXL4A?C$cLn7_+9(nICmI#(B=9EV%Od zZ`yb2hU0S;Nno>0)ZFhtdr=TI36G!_aa8|pCTF=0pJBjTT&SECEXiPPo=89Z;LdEF47>f4i}1$y1!}V zJXfjMy+7+fJ*mp*d#M}E7|C$XOW&dJ)S7QbQo3$ z4Vl0Utq>^cpH&APM-RNECPv`+e2juP6Mu*7W&!IePBO|wJZVPeW&t;1(IPUdfdz2D zO9hZDjp5Q27lAlYG8220`}FqS4dy==zTWZnhNJL2R~~{Fhr!D_HlDYf@_K>L#MBuo_udxKng6ol48lf|XO`qzpRVEAh)`Oi z1uMl3tVJ3N5zoL7HU6g|K-EY|(S?rNA4vcGmOTB8#HoZa`UsCeBfMBNMW1%coWAN; zj>vTBhGSp07jHVcgi9hl{5M=jy?xWqu8Ky1-W140@}9!K&`gU-n~9#h)S(lQ-mi9tJyY+ zdY7`weX_oN|BHcQZz#5FO3~#t@DzvGRz_ajvG{O?4qF30)Tm9tui#e2$ z@d5I`Qn7%37Lfs3^}t%c%59>En8{$~c$(JMn?X?iJCN(daiuw1x6sCry> zhq?YXMDb$)BtT?*3Ws@+t!BHTgkGt-GxihF;lTp=aZSBHfr5-gcW%fd`Xn`s6#1WV zQhcEde&s}=Sa(Fz(C6l7j6`ze$Nka_cu$<{+~rZKQiNOR0diO@T#Akw&T<7o?SR+V z6SzLeZb3R6zuTV9-YND>MeIVtP+&tJ3YaJ~>}6U>*A!Xu2Ca>#GlH)eMe4VqedG!t zi2%01pXoY~-W41x_dgFK_$+LQ{6JpinU8%GUOz5_{gE6 zE(4t8D$~T!oGkXgiUHY?kf)WNB>1ObW$D(oiKY3OPTVdo8vN6GPexDv6_LDWc1+ec zqO7b(S>i+y96_#*X%^Pt`d5GbTaF#w4<5(@2xcgkS>5>Y6YQdm;V%?G*;JHxU{_ei z&>8af8nbR?Uxlq5b;{jKhVq#Ip+rl;v2as458w)70#CaZh%h5?gh4p=WoQSVMZrOf z&vmEkvZSds>(*98=VGP9)p1jK3Y2MiKetG(;$Ei}z_*;iTL7H*mjc$$NO6t$?37zR zjB$RkY+Y8`cetF<&|;9Ol)h5b`GV`4{Ucc*flyKu{CyQL;!CJ7`mAtFEu-S)m+W?dESU@nGVEVBKW59YYuY6X~4!)5{g`iJkF4fVOTE85-}{-BY5xK#NA1%-=Ih&+ay@8)QLwguKsSCH^19_@d#S@ni}Sb zaZWB%#35Ig;8p5IHznzL#N|lKfNPmn*wV1KZ%}o%+IIYZ>ti63n#kjR^HP>RVeY`N zE@fIk4Em1Civ|gC-dKn?mZD+|iagr_hYZNS#nsJrvE+jURU%bj+bS`PzCH3gLFKi6 z&HCbd76GBm%ql^C1|DSsR7}Un$6sR~X#zn^_k&W)Q;KFXK~oJcRAM1mZ|O7K-VQ+i zuv99rCxt!v#KnlzM1?TROw8y-arS6qO3BQPTksM9Y7J6d( z=G+1EC)xv{jpch4^0 z#6s?fhx%=xR#Q_$8`y^Mu?tHs=EM_ExW`>}FsrOIy=8w&Ye&d@Ji{h~8@)v|zjY@C8sdWPmV!?@ zq5A%Jr&epa@%t&8t<3yessr4LC8FD(u^ND((25pn*adT8t+?PZ)Cwo)gT&kU=f@5a zIn><)y0?EdeZ)y>Ilh)xo_}tQh7zQkRt;a&zeKUY_n@Eb=M+BZIIGplBCGMnVtgZg z-@jae;5ZRnYUEjR!m)Z@+z)$r^}iVi(_?*@yugRW|3QZ(y_HB2KW7?^zZfIOWJB}8 z_=i_Bl3rWQ&-UyU;>D8yJhAeA&^C!fE*rM zW;sv@L)lN_-mf4bbUk3gqKKxzD`v%)*s99(fe>C?|OpuF#{C`&9Ahn_bM!VT3f?X&d zEcj}Up}VMJTmL8km_b}AnZb;pD@LF<8;&_%ftabROBWex;80V1?vLJBk9^0W|^Grg=l>%64=loCB=GG-!UE z)V!Fqqr-i)Pb08lth4w3^XfOyzJR`s0zg4Dh0Vrg`56_#d>84z=Od zV?OgWkTPf^wZ}0+KevbQ*R`f1yDZ^B*%(mwWiWx|2d_C4tVB>H!=Mb6c)_o4*hxnU zi@T4>gJ2dxnrISRUhD9mjO-tL*PA4?s0n6xOI`a-k5^U+RHV*BYyP+DURM53TjSYz zfNB4Z&uQj%YN58zTb}Oq5u6EPMb1xR-d_+y%>)L?d2spvn+dCk7A?#d8>TTr78QKP zA?DLu7675wmtwW1ma4;O6X7=tEx{Yn&&!sYQt6FN4p%=U0oXi`Ws3p#6%6}GgY36P z|G$g8$=r(U9msA~Yg)y7aV2FF-#{Z1KL%sKPW&wty59yip?z+kx#C?`o>gMte!7P4 zZZR`TFpK}3X4_#jW9x^8@Z+r(QHw;~sxi zRdYQ_4sbt7=_tIU#=FFL6`v990iI5c=jll*fCmyriR)4~IqafR(3GRI(y34xR()?2 zAjP=aeIOHctuI?yP(@X=j&2#%-`@PadnQ$w5cQXRWy?!`pZvk2xig+$iR~}?aPD{c zSE1C3-ftRU_z==>Op7e<^1!nMU%*?f@N($(*7&9jh@-&X6(`x%LqF2s!Q&MTG7{zm zHOCMG%XBK`)u({4j$s6jv7QtNYKshliRpKSx1qIs_i%3+c^WQ+?nkB(OF6zLAG)cb zU)RQ8NO`h~$|w~;!L-v6wI?x`+gGnqpKw1) zv9n}_ucRC;{xx}fEXL?y*4OUY-zbMwNuW|&y_R7?b;i)lg2`<$E?+{^&z1)#H7}JW zr#BMeMqy#@zwPd99ms>y0LEe`vyYh zd#06F!{7KgX7qYkzkU1ct@F2zWPyD5?Q+f)wfJDpYrJ3Xt~giDfBdhVum1r#mpW4> z-eTS_w4ef|(_JpR!@D~aeU}(V4^v|y!ib@Tx7!e8280jH(?o@J5i*F#m|#FdWTL5o zdD$GZB*iyn!SjHOR0-ED-%bRMJScv6Z8II*tosI4s zSRtc*k8@vqV+Kx+kA_Qw&}bRZ8D!}F*{c8yM59K&!}No;DRGqBi+xnb>me;Q=zPB~ zjXW_2JZa~1Ldn&8+;aPSPmAa!rO6?bq^={bB80If`D|zw{C5 z*}in%wg2wNzS2SDs2cKdw`Z&bmt+~wcrt|!=`>v15`LIvCNlbdK`FU(r5 zdPRDBZqLo`Ne*wPpUw|OQ%3G>Tb9*3v<8=(?w9{bEIc(?R;uJ!h!7xfK2Nk%`{w?Q z=6y6uu~EQ->7euF!vElVtVC1J=*xnT3gAK~DNqcS45^MsMP+{M_uQZ}u|WbUt}8;i zVl$|mW#!At-TdIMLKi{e-~ zMkF_$w3}hH3AWnC?1VCzZd6Y!s`zd|LtYvKky>M&;uV)(!ibNwq`h%KYF|HLD+MKZ z`nZ;-@LAf6KdB%iXTv$!TkGg!wj>R9`R(+?f-gn;xJ&sS=^IfZpZE=%I}aBP($OnN7;k(}M>!ADoVWf2{nBvorCM@3@c|hVm4pM076 z5w_X3EJ*1HZ=M^~ciI*SLcH?AU*=^zb+N-cr%uZ@wxB}6zkcCVq8d#SpW3;^K9a~} zQ~K<7FPX`sl-MT2qKNge2+1qRfgYwo;gA8DL59Yz;RdM8#MPw#UpJ4~&l$dUNUtxB zMG4b+QA`$%g{sH#Xnv`*Q@y=W*YLbj_iUCK9QmD#YD{B6F{|x`;Hy$ripQa|Rx{|f zflX&ulJjCh-Ngn2-E%e46~--vich12M_hjR$S0#4RdBl9lWZ)`V?i4AHgfi>SMoMb zt8y>#)pi|*-RJMjQ~KuF4;_cKcr6AYY|aMyjQv{Q8#V9nl%!%=FO|_tK5MhRjDYQJgOTB_1dq)m1rTJNrQ}=&89<6zKy~bwtL666h?)6BlG0J#0 zhH_H^E!KYQLah+8p;{5%*v5&Jq!#%Zf7Fd84$8$2x0gmc7&{r{y1g;(T-E6F%WApa zdNK_}Fm>*jmx7G$NW*Y_iJv|S@_MWE-q9eE9HsF81ouo0;pD>|gbLu5-<^-)r)%yE zD>5b-?Pz;WC{%6EMJ!Fze+DXNm2=>~o1-C%tZ&$Xu_x^mv;6R%;J_I?*!!7w$5mw9 zR>y2{!r3JG^t=GDekTDL;dlhUA9TnxY&p1Z>M;#?Efkw)95K) zFk={x%3=b4`we}?V!8`hAT3b96P}8*WPo*7=E`GrfnY1GlA#%eeliT*HZ;{eVL!Ot zoiua35WetT8lV7aHGAIqz8fR?z@){)x2&5Qx}x{(U6G%UD-ToME`t54k~PiRGU$K! zk{E*Z?O$%@b+gsw%3lYZF+i>~*i&B`{b6B0-tYBhHmzLds5;6Yck$v*q{@4d{$KRC z#ec?s(+c2V13M03>Jkx&=>kzb3X#*wPFWc$3L(TBBwY{CQ0Ma+?h9xCIuD46UwjKn z_?icZR(<+i z6E0Ig@6Wh4H1i2B*%r-#*4iQ)Nn1UJ$52|3nL$6Re14c;HKbOF%BIEF=#~M?h5s6( zdIO~72KSV@wol z=1@|tB@4LAeckDc4uSI^7Hrs~Wr>%Z#x=7*A4V$v0`Ts#;8BF6!IMt+Y#L zcSQov!{TIWD7D7F&>X#hpA4#*{!V{9u@$*bQ^Kuq1@$wT#u%&tHMJ1$AUjQ0-XUEQLy}a=Y%7idx+Lg;~n8Rm^ zFUSbAAOg}H2pKqlfZlwj`6o?ok*s49V(^m{Z{RK&5XrIo11Q~CO%&Y{m`3#J>Xb3V6kN7!Y3|@@Yp~4edngbTPxWDU$>Y5bc|roe7~yZO5feEL z*2k-)0(15pC(W=zYq)OtmbHp13v%nwU@Mtf$N*Av#KHAe=0#oG;Z z)L{z^0n6+2Y6r&i3*o01I)^$mS}S!F7BK+<`G~YQtQT)K6VHB8rWZ2bTG`u7AX8}U zPEYG7{ncxeecPdkT!6K3d4Egi6B>-qI*sH9g9sYX>&k)#tfi2V#p6G@d8(mOig*C~ zCf^;cQTAQ%i^yOCudZsn2PVy|4PG^y4&_jJK@>pfuL_NyiS~OO6J3~GG6#NL({0z% z0{d(3V|y{8wVACOtBQ8WUZ83VaQMAkW=y8s(S84UY{5?4_v~TN>?K*&q!q*<0cY`4 z(DUgva91pS36A=23=3omlt6Ewqd=JIqioww3fS|$LiPt-y34q=Duk}rfR&ZYI%nIcKN@*B_ z=XKd+FfoNFrq9Yjr5Gv*9J*)gcM7VH8)=6{{4Sz`VZXdxcK&Q*@eU!WAIw?jfv0CTA=Lo`qYF}n%w@bDaOOSd_w?5O>f~j79c56`EEu#RMlC@yz&r$wNk|Y7XOjE05C|@S^DqA4NaW!NJNbmD@$`*H{mE_g3#Pbsb=ld zV-7k4o^(>!?@eTidPDN1jVZFBxnZ##1{s1O9z&i&$zFyo%TPxexq&h=giIB9Ie)`M zoJe0fyl3jHV8^!BneHt15pIC9u(Bv5F&4`8x*^GhV&>Je8X=SIWVeJJ^-o{~&gqv@ z+FSsLAft~UAml^eW3s~7^+Et-%xtOf$4`Mjo|ktHsYLsRD7Z`L1QrK4?(!lC#Xc%{ z6B}T{17t6O9p48J9w z8R=~Nz>J@kYlwhl9;VvyZF=Ay294bE>tIsCjSzpXNI;@$QmImMJy(I&03L*{d?!Ur z&)%f+>f(WMAAlSSZ4Z@vL`HPpPw7rdN4?)+4)S0vve?oLMiH;!7VHudAVVv_T!{vX zp*x<_!0-ZFUpUMRwm;^mIR+=R32}Lv9@kK>J$LA&9@{|%$!*;w1{IwfltbfbabcA! zTut&m(ecZ-)-*7D8)wYsiu1522+0@vCyaM&9K_il2s*9=vROHxO#aX();_0u^$2x~ zGGc4sZ?=rksYLtr#eL7Ul_^D$siBpvGb~`b3EsHH_bHrqGUGY~aLK{~9r475tD^siHBah&a)Zjv+extT*Pbp- zqsROLkB%PSNLLQkV#+Y`FF2`-0Vx~J_Xue^dYB2u*v?CQ8dNF)H9wTNth2*LrXM~I zeqHWSROZgVAd}!3_>ht8Z&c5jZL-zJiL^*cSQiyP%5t1WmiIW+$~X*S{~HF4u%X?} z^OwF9PwWeeeO>pSM{DfWla4EGh6LNH;h9gf)e8rjtfyY&Pdvhk+n9)&f|4|CXq8Fje(rqU1pN|=(}$M+_8)OUVb+7YzFzN@7=$P zS^Szn*HEwkTWl|+-`?j<#QXQC+JxmE!?^S!tj(LHP#%!UoO!%9nRJIhmtLi$cT`k$ z(K~wA#T<=WPC+-+?p|sT3ZVc6|M(BHE1DMWoK8<%bf%;i;fJxIv9!IS!;?sR}>l|VYl)2(Na5-Dq`SfrAwW>waeed-pL^${& zRDeTIqF9#S3O(33sp- zzZ~V52g9`uxo7ji!ht?t03TSZLbNRpj>^tkM(Aw^wp(|&b7;9gOlnNy1O8wb^K{0& zz=U-e_*05w3Ek8k-R(c-u76ie=DkmF{TvHn>Uuu7Y&UR7jD4s%Ubj=ZZFvc1426nj zbbf8$tXu3CFae8Dj_e7|l8AYY!uqs@H7vaOHnhcF_$V){5YjH`j|6c^Q(OiJZ?wWu z@x5M#T?JoYG7{OlIee_mE76{KWny!{9n~!-qVQFu7k{Osk=NqOB8M84+OjJQ4ybzBZqrE^KTXMY|j5cfn;IH+Qj>=_9cM) zWZ&(tJ-v{%E4hX^Qh5ykDq3F2?wc50zmGDYgo9MIf6Jo_0_3)aUN>NO>XE3UVF9Mg zJiup1C{wdsrSTlzp=>O%NfL39U7YD|LG^)bat`T=^@-eI>N6Ig3MW4-7jZ*s4iB?cmb0+fY8zr9l-67z95N&^$a z5~F(@Stqd1c14fZ%t$NadTkRDi+*n7iD`}=Gc7}K`uCR^hoB(XLX^_7^Fmcx*Fw(K z@Pp!@za|NXa`_2KI6MMYnSmHO^F#7`B(rj;9OX(jAFH)_!~{6O&vMET%Ri8GY)ncS z;ok3A!d!s%cVdLAf2K}`rxfSn13A0U>$5xwEtX$!Vv5S}AB}#uX#l;D#Qb3QW5k{Pjl)Ng*iGaThPU~?5@6bc zV#<$07Z8TXqBTvpKB7poB@G8>$$}&#YLqmRK*G}+ZtVO zby~?Ub!^8fF4o?E0b4Gy`pA;;86fHQR}YH0fId||_;4PaA33o50z!Kn75AX5<>hS4 z;V=EglgJZAbI*RW1vIJQ-gJIHAA;0)3YGRo?vE`6=M~d5Mk6bRrJx*1ZJtZtzhsf{ zwOjz__;erZ+jRS!v@b_dlsLE{=;_!Nr3^PIuZ{0CMqz2U^oP%^))SF`lUJ9JzSk**W=aEKM5fJGrZ%#Y%WO)O#^ zU9!?S=G9&6q3&QT>Hl&G_MiWfo3o&b%L? zeWi;=&|W2Zc?B|{3Hwp;d%4PzJMiaCCkkMsf~H4>(N5GK|0SQJi{l0Qd*!QC{9$&N z>lv?)O879j4ZtQc+Crl-{hH*o{!{lHXUoNboMY*&om-$Rl)lGUx*}49(al!>MUS6} zPU_E($mh7G6tQo}z>H`sKhovDzovq2Pmp%N^S#Q}bj$?-qg=%ZMZXSG;2#l-L2C)R zss^$9Pp`ZJWT^v8tzEap>PHQv*n#QB9dzPY0x{M)A&|zOKR=qRWwjoK_SYg5 z-Uv0M$$~0Fq|6e_lLMo^^=UxjT5-~5Nd>}Y*s&7t=Gj`|U231f0?@$RS8jO8^3%w) z%}$a5r_b)BHe<(l-s~r?1J+Na4!Ci!@Fc2AtvfB$zpiBon&IJ&z%hwzOI*V+ipm90 zeGY)ozV*WcGKl0?p0Z?Y@;njaS%8w=o@c<2@L zY+4&TQRT-YA9m+>Tz7Wd%??2^!oYn!?~p#lNd!*V4zbJz8BxNL6l|PF97XE00XO6! ztt?b4xli#2OSH%YiDLXY7615_f_hH45!&js(BHRO{9@|wfOC!l)~x)~e5h#er!I&v z^7tMYSh|{wk)^&@>~6mw`l(g`d0JAvH`f#B=~gSB^!_#R>>u27#3*vEC8>Q&2hwD@lng%~Nk8X zdZzs(QEYz8jAQlB4JcD2Z5|*wt)X-qH`A&f4_|V-aH>`FuIS^JJom&CLLrPXqlv_e z*d2%}H2PZ%$Lz-}cF+5#;3{~-h<~)z)7|0L+#9xJp=L8af}Kr5#YuCuN!SIa`-_#V z>`6ndr{>OlR{H4|Z2`y{()QFNb7HkkZJVcm@<97FT}2*%La(@sMRCUKq^t;oBFG{H zfy1}`=GmJ}{O+&e?Oi8y`*i2uj1oV}-Sy9WifVUS8SlhS}ZT|$=RPcj)Z=0O4aRC9)Z zCDVzZ|J)DDJ*OzcHVLsReb)%U^^HiG$TjLt+DGqPfe?^N|OgRBc(+Up34kXGGkWOz2 zvqHb6N+X0U$gYutuZ$e~FnpUmq9AOdxj8uK)TcuUlfMLywxNZw*=d}uJ+H%xs@{ZV znk?YMl7g*nn%|iY@~ow4OIbKE&Ah`=xdvV92u;$dMP47Qe0t9NfXt&wfL_^3JAAoT zVVV2B1N^g}N3AJUiGlsokKx33pC}poa>TyKHw~H)?ofIPff?=FQBFFaWo`bbNvKb- zTKT+&RvYAig4(Svhja?YnSas8-SL19zID2T@clon`)w~gvPyx@k=hVi9S<#C=4!9l zNHs4jR_2I~1dz3}g@wz|S^d*TW<#7(=o#Yoyg94?!>MgcNba7-){ju6yaAb+n+&*@ zx#hWUKbuzmh?>G7d&q@TeX;TUe5h^*E!UDwG~#}FFbV5QZ7bzr;?^qRr6g#8gU4J8 zk8NK7TSeaZ-wv#9XtI}EvwOTq?IijA5dw}`!2mE!DT-o-c>TAyoYry zX%w}W8F`543}7Lm@?z(f+$1kHK079@8ncJkuULn@5P0kPDfbq(V{)ZfY=UI83JC*= zDyo^yog;!cJL}De`ooXh0wtW(j{Yxc;HdzsW&aSLy(9Rc09rRj z!?iKX1%{R9Nuq#*Iv_ES;@wxsy!@SG2(|l^R5SjscFTkQrn|70&AX(qq4lm2MGpK6 zY&w|1uySXWCO#}Cf>8fh_NKMxv1qj2Dy*C56ZgU0qDme+n)%EEW+09l_8 z&4VF5R4^k_*-eEORMtp$i5M}^jcvNr&xIQh(0~O*C9s`BEWYQjL~O>7SUO^1Guv7n z%7T{tqagUurT7YOz^r-rPvdhFTt7Sn4$93@XhnB{eQX6#$hmJf1yENs__HlC4P82PV?|jTD;yh}=XoB&ilrsmabC!qOEZLRdIyYoOLN66ybw?>X*Nv&5n`xB-ONDj_c~YNP?j1Tum26;d#%1><%Kh;K|YvESL@M#hI9CU3o8Hmc&*OB};m^2TWwOI{Z4 z68`FwWbKH4tQfCoo)rwd7r9>Iu9{2{FNi`$?VfJnX%TSGB*PoGJw|*^-5TrJImU~g zv%wtylzm4>^$GrIixvjldTcReR*u^(nyWWa}97M zb=DEn>o!7>L;@*$2V#Jufqg3Sf|9d1B4+mGO9t`*_m{~=Tr?wSCl|X)z zjAI|Ta7HU?#7K1+Jvio1Y?KUI!d!Wc8v6vS&yFDWql%)82mAQj4J70JjyUxeAR!`9 zn-~3#++pf2IMKm1C! zXOiEUAcY*{KzKA=K?sPI<%&+Cw~_57L#6Gu3mii1u71Y4$!MokXFd8x+bzaMXDK;_ zvmqy1H}a1~6nffzboz*{zJ=}gr!%2c&U?buST{_Ym##KMp{pz%w~{af@9f~N{B3Gp zC~kGGUf*{{eA|;p?Ts(vUZ5;Y(P6V+lfT)Ai`#Xt;j2?)U&6}+P0IecP*o#}2X9Xo z7}P%ElLMDK%4&PDbeqO%)( zmcn?A;)T`+4UCRU_Hg~)y&_Wef}g%SU;AC0W9ZR4$gONQe7d$WE~q37V)KVQE>;~Q zPB~sc9>o4!z9}^3ZJN1W{>c(y^wIryW9E5dk6KDvcD25mR*l%N3&Rg0pE{=3CNgd+ zYK1}y;KWn@V8$RJJG`(d1ib8^*vVdClR5MAtGhA;n2p)IVR#>NKu2 zV+3YGmM_Hwg7-U|$`DC2h?;v-vsCDPU}I)=CC=QY9^;YWc$sH^5b|JcdwcXBn@Snv02w?awe;VWRqN_w@5JHv4 z>_uNsm&Ffz5`wYGIQT%{o|Tr!D$)e56z`-P39yl;Pl>1H{4Z@qu;7kr#z}4l1w9gK zAfRSUPABp;T+0V34u;|@rK{oA_zLs#=S-}T%uf&n2n_ouh>^J=GYgaSK2Vf|BCigu%)L>r(v|_%b?@F zwB_yx{RlXfF37O>m zK@lu{RT_&Ii!4g+W}YPCA0$Dm)dMlmPyj+GtEGG$0}#&XdL2he8&|ijo}_Bx%EV zK7F6D*V4OR@a7z2EB6*Coxugx;RP~+iF0g^d~(mXnWCG@!({t@RPwxggj%h`PiuE% znS;m*H>3VxwqrNF8@W-g(QVIadS_f>)!rn#ThA{l6Y+AqA}hwRLPvF_nDx_J`(MHk z7WT=ssDwH^1<<1c2qBN5%sv)B0J4gS@0<9cu%DgAVbP!iQX%TUQ<$p}ydStCC~{>^ zK}2>W2k`F{&nK(efEwO*`t^ziKK63snh^X9oFTCe1S8*(hWkygstTNa*x|J^2))!9 zWSGnF0l8)6RiLV9b8Yir^_or4CD$H4AWP+1{O%>rRj&wGlrlBw(u{{I1BdIo6Y?e6 zPv`}-{prfFi05uIdPDEK3mn1I3E`|@G%lqXdMVN>>}Am0m8+ zr8%mX=gI!lW0~~qZX;IOi~63gqrN~REakX!xUT5xIOOcG9v;So634-Nrtqk+1^$ll95F|`>$|Yqc@rt`-TL*{l;UN)8S9I6+o=_1Jd)Pr1lb6$6IBvK#E}9= zSQ@JVCsy3o9f%CEjp!LRVHiepl!VMPFggTWUxwZKGjF{gfk5C;CL~R>u0;&2lcqW5 zCy^l{kPo;K#$XexcTdk_6qfx zpx2B}(#tUm^qgh(ekwcqM4fd-(QBBJM&XGvbwhvI{YS zg{M&+gFml5BRv-ZQ0h5jM&iayR0%*Sp-6HL$oO4=z_h=8-jjD9Zw#(e8z~dY23fD zY#xv%h{WBjpj@rg^X(~r$83j&iy>1eyrdaIGFu?g0A+dDeGvB|=wHQDmdb#)Ddd5#ENVcvA>p?#_IBB?#+t1b> zqSPWgI9bp6{vx^8fp{z2;LWazxpP0ydn)23Pd5FYDQcJjjc+JwA`L$T^g`wOFFr}n zVOo}hqhD`jT>-LMnydtB6L90a%usHr6Ziw&;fq;In^)LZXRn@L`=pXG(z7I1y~<*8 zir%E4{4R_;#t!L)X<%GjRR#yW9Rht3?+73iTj*+9HbJ<_86WS@MnL-~v^1S3lQj2k zd-6X2`Y5E4&%>L`fY3yRrBSTVUWfkcA05-d_`C6$S^M@%4hqM%h#jXpcc54~Uq{xx z-8a(Y-xiQDo(BH#{CuH%k+pA~1N5o4>ZZYoef*J^J7*9!3fSw>WR{ zcTX3(YyDs!CgLH-!e9au8OmBejHcFf7}0P~TFWhYUTla=BQF}5<6X())vErranoYw z9B)Wetf$KX=EE6PFkqz|_%0SK-Z79@$A@~PRE7MTLUJE$Ul&4-ih8FMzXWl1cs-ih zLmVf)=Q%&5%~&ktOO#a8cQAjEXeg3~Cml_Bh32&e?di5OWa0Y%<@=&Dm}QLvYyO|R zY-4?-#^=A~6(uP1jbee%T!$Rc|5O-J<%^EfcUrR#D4M#8T~+ubXMGg$k{2al5J?R{ zRo@GMds>&E_(?rCl|JWvTEFz~O2_$T8OGOj%5@E2fKZ_2nUmANG# zr1?W4g?_b}_@uzoxbwqZ`4jM$N0G-y^$R5>f3U4HLH#xyF zO=KoqBCIni@5RK|y^0el>MEjeS=s#Ja)iG!;=mNk(K-P*&U3|7O1C=+xaBS_Law}k zNhaFIil_wy&b?+;(qCBf!N#w-Ucd|a-B$$w4+iR@JSTM9A#YPER~xOS>bzP>>Tf7W zysWQ(xtT@EvXe-==ZcW$C`}n5A!pG+%4h@S`AG9Z)1ddyMpE=&G)dlPi^64->bsVH zYZG7H>2|(B4Aw>Uo5DEdb}QHWrxc&3BCI3~>Cw|ZcJtoHig1l&edj8d%}$rfi-=lq z*z(=kBpFa$ZXm684Z%BCDkXZ&Dquy9*^h{@BcZx4;$&9(vuLoSsTs*Kr8Yh6q|5+4 zd>G!vsj71?DdZT{X5S%hBY)k7vl#%fp@!)YlRaS zje!JE$zwrY(+f9&9tRpCN%3$nHl(S*LGRvdV1S9$^J@c<{*psOJ?E!LI}wLGhfCtf zmtrgsyKe6qZK_rw=07ro;=wBmXy0clF5;PBcP-H`XrDy6f{f6KWsrT|AY~onI)Ah- zMNMqVMzK}icc=AIe0CWqmavP|;b|{TwuWr4PJ26+4$Aw)`>%{^Bd-JagDqInRNJHK z+1PxCa6Ag$uZ+ze_8;%IZ^tWrnMf#k8i;GSgaU^*L$XUJd4_ zqBLd6`TKn7)sAdhWb{A)`+v=Sg;!h86E74m?hu>+MT=`G5+DR9PH}fA?o!+xg1Zzi zQXGoAySo%AR^097`+M(?c<1CKIl1?4W@qQ_-JSW&XHbR1y9{#>iW8Di9mY$XYARYh zVfC?#A{wmmHjnHs=Ab{52`|2{m{?~hQ8q!MhB&X~C zR~5$}T#eeMOcy+Enm8Yn)^9OF9e>|_mTHd_XCw(M_@#jr5q8e_;ih{}st~%Ne&qg1 z0;nsoegv8^@**`8qfX3^os;WZDEYyOK&bw8@|%$KsPBkC00{ui7JQ^QIpIUD4j&`7 z0w44D?#PERZaP`nI|FSxL-QxIMPGuxlntqlZ834?ZA$s-VYszq#dS`oU6LXMa29i{_?4o?UH5?lGac>qM1}E%a|7kpu6P5p`b$83PD<8nh{Hq zT8+2f9&)rfS6*lX{GPNjG%aaCGT zvR^}6xjf;>TP5bCF}>kJ^G>e`1kSH z5uxi{g!vTsl12!5=-#CqH^uGB4%JnXI8yH7O}~*tBeFyfmIxr39i$EnuGco=myb2$1SY&(>%O_ViU|FXK025EU z>LBv1SeQAi1Z8?|;XmlXh6DyOroma9RP3Z|e}*?MTV$=@l+K_M=ZOM((@b6Usi#R2sX+?d~y z$U@7M(l{3b;&7l>QGn_bJ$Q#MQc zpo{Q(!^8eWvWl;I{Wm-E_ljyycw#4*51@qww>*xwno*HGV}DY)AoZW98gIg1S~1+D zyuRf;qcI!E!4fq?m6ovJg;R}f+i;Nl|7 zK0U1v%C=6J;i@Ew7XKhS_)KWppRuM2>QK$b-+IVmywjl z&C6?I8j@_Uh+g0jzIX_z6Hm3nw3F}^nNh0Q2+HCN8hjgY_>sV8tkfD`wdh@_sN)&e z=XzEDl|J_hb1Gck$N%<6BaVXmG^(^k?cg*l?HQ4;|En*PPwvh$Pp9zx#4^KcV+&s& z^^TAgnw1zTvjztkMLKNMsFO(p{gXu|1I&o++M=8}I#AB$J>8+Av-!Q5(UUFAqvE&A%jQI9_W zO}#+ULqk8+MESyZs-zB@$4N4l9BK?t#o+k4D6>sl zUi*QAvTX?MX+QzNV=RJJexhp|&30g{$H#{p(U&5oo=i3Uxn4`u8T0u)H{HmmLur)K z9|=fU3BNK;6N7t$qzQibgJp}QksHy=J_YlSvGu*b#`Mt4=urxgR~Tf#(31wH47rI{ zDohQXmT3WzYIv$!X3XLj)JZuwq+|EZv{^42Oi7~!TJqC<7j{2Vst^35y6BHjJdW`s z2s(uOi;D__{Y)n-Wi%X|dw3!Xszna5epBZM!iCDf!-d8p$DZ_1@{!W?v&FQD6Bx&- z{W=U*r(tM!rN7(Xx5~5+y6_Ur#R`kQErnl#v$s?$UN0FLx|G`QqfmFxn~v7^U4h z&Kyci+IIK)*AIqyf-IBFeJtcRqTWFE1JnU(B+J!Xrt|q$^AB(Be&9MYZ8wwCd#Hhc zKjZkyHEvcTq7{JqhMFWRbGMv0^Rjx#^7n*|&Y1sH#oqQjx~j5r~3f8=D` zYT%YEW*gpW4DA^i(A02p_qrWj6xEC%lbC?dKHR;P!NoSxRmz@3)0r1x^%Jow1r(|S z6tdPQY9*d|QP75n9VK6bE7U_oV$X>>p;J`p{1(@eY zDxj~^sQTnoHdFTcJlctJ)_aiaZJb}=zkv$&2i&eiqgzB|=MQm8BdSO!>1u3?+^Wf~&nxLgzp*bdYJbQc1^s8_;{o|_6&kdtKb zQU_26`E&6jk|%F*Sfhn}G}Y3^5_MTz7^p3lR{ULJ7gso*#r&?LT?dtQ9hXAe(oNab z1sWY}owbM1=G)eeIAY-nv@`xUY5oB|+|K_T@ZO{nAoe@<^H+30T;RDlFx2m|L0 z)#Zj1&1;%LY__Hp;1VU9lp+XD2mqyfZj742rs1%%Wnviz;ljb&drjX4MLsvtwGDb` z=mK_qns{jslpF_j-EiP zv-nQq@v;!`LFlMGuUbinqeayTe1NcBI2IR9!HsDeD>TG;kWQiq-5<_GRh zykdZRG?>R?dDnf>co<)TDUd1@qd`8Q_Y1m+jHg=JY1EzhheM4JST|R&YV7Ws#X`ur zQTK4niT}yH@=A&ui=W|5_7%U8dN+Ji9rBMh(yC&C7pN{@Y7V4F#1h7QBKbMs3x!n&`}InRJAp5$@<)p(&SIzpk|=pgY+Ogpn46{zNY$ zS5M^Dw3M9XHb(bQlLDGa=04=8;xK-?nmY@0!%)NfKBL^cSp@4%hdX^2#(I#TO8UiU z@{3`)2rpW|dO#qKLR3bJhWy-QYwUlRl*%;O=@5zpBlq+w#HpTUVa^@Ktck5W<_H;A z-QC6MI_gZC1cT(r?TyOvLxO##UCmk;4x}5;)4Ny5kY0=FLc&358zs{ArvGOGsTm`M zu{O&KSHu6JT7@-_e@PjHVF^2rTOYUhi^Lb?L^-R)E!EtmIRE-~O>g4M-WqWdbVeLeG_;{pZU)OFgCAoVUqMp(;K|9z*j8n)B1uO) zK#ba6sK-fi8+XDQQ?~rTBn^xSgi2ZejQnW$gnMeyW16keFdYyd4PWHm^3d&m*8U`C zk~TeL;OBEdgW7D7g7iM2_)BxErd4v;Pjwkma3T7kU!i5+52~8xXG3$}8U`NPer{)U z$93+w9vJ6EmLA$44KWxO$O8N`e37C&r#gp(CjH<}7Xl(fRhzsA>$!fY+0bDv%feOF z(#QBy)l3J5IIXy1)$}S!2~RBCAo65A-X@aCh%2X@FRo#f$Q6VE{2gEs_96Jd0Bct` zD|Kfx_|M>1LOcr2A`=gGPy`;j`gY1Nw$gAhR8WR56}$LWs-)w~>)&{LsXutSJ6nqpwmT>Dx_M-qPv;5jFLj}T z`PPQQQ7jQh%QL3JYqoJaXA&2u!=?ZH-!87x~uH)9Al_5!f8N>sA>; zB&i;C4H##n4Fq;islWP1kKN--vDR0Dn6R9`v(F|o^2-f$2|PLp&Y#cN10j5boGVfrkul<=J?s5 zGEhV2#CtI(7y>FA`9N{}tKAb-DRiS)+#2kwl1*L`BaYs}-fF@$^gy%9>1pi{r*}O z4#gqmZ&2aS%AgK^UoHC+vo!h)){H`o)Ap37q;;J*jki3k~Z98oMuap zqY$xZ2r-vHcM#0&=z8U55ICEbhvuEhyQoy$bs&)pYfZvBOyT?>M z`NTDG{bsTpEE3c|8V0PQ#0(RD-^*^?dVfWX3mh`ccPdGDbxeA;Z5?9FA z#%0QwZVsV%RNQ&Aox&@qjI-v(9Y$^;#wWfTJtVMOg8vJ8G4#9 z_NU^JZ{NZ?@QLzj&uL0O)!Y&vSTFoc4f}XBKSxX7BaxVn2c?-X#{SRjZ(vFAHBvp( zkh7pe;mE8gVV=JhnRCGIztmKqx1V;}-#7nO12~)3lQ}N=2-J3eUHm;nzkPdm+}n-y zepNt`P+iL^OJyorKk3>shXI;xJYkSqoef`aNq0i^GjV4-G4`JJ$2ayMuzp1+hR!EC zx~{w8QJr@fwDD=B{^E8dpSn#-3&1>}7$SFecWMpfF+r~W3FA1}bHVaIB0)A7J)IX7 zj%d;vgr&ByUWcGSwa$_<-q>noHWLw>py+SHr!!f#=|a6d*Lbx((IxoW9brti^W=&gPRmUkH1)V5L&kJ|L*qw(93M1<=iGm@g{v&bZ`#U$& z$>oh>j$AY3e2UT;zO$CN1%GUv zN#?L0-w^S8g!2c6GF%l0VAgDn=uVjIbS^NEo zqS4KND({ywnqy_;Qtw^DUfWmq`>O*B9qi>vq@6AnXhy4kXJrBlZDlB@=81Jq}vq_x9Y zpTlUqwHKuR_Qkv9rQ|!X|t563T{11!fe2f?^L#p{$mxflGQ)FZ8NFRAlcK0pH2VF|L8YL zqN_Jt$gp||=44|^ympR}jhOnfMcJP^{N=~IXk z4AZCJ*_nqK?=O)U^>$nN(=~DYQj%`@=vFg}uxR)|4 zhDyC)&7}Bqf94f$pBX_3esnZPW4QT;brYW;ceWN+l2Qos!}sFr(Ij;7w1NQwB8--(*6Ad5CoFdcP~L~jBMxt17Hkf zLL0=>GhLxvh&kF=auJ)5;fbQ=xR@xV-M@2G`OZF_gcs=zB)*1o96QmbIFTq@TUG)Uwm&C*2%{ZgD7T>E%%K3>)e%sx^M;tZ8ccv>)7c_ zW2Pa|v_}}k`BZ6dJD4H$$nEl_Npm`|Y7m!%GA||-GYdsHJ2eCJEzP?7qa*#ty=Ti9 z0bz)kPG+%Cdqy%Qxd&I04DLSS0kAQ;2{3_!&zR${A<$B%$XzPqWSb;HEu|f|$GJbL zarM;E;NkB*`e4I&wj>vK=e2)((i|vX#r7jHe@?qcU6X-lTf2^Z{rW?$Vb-U#2&&$E zs*3ElxY=m|is*s7$@|CDc9w6lyOBMe0-ou@3}0o6R6H}nY?1*KG%j@!;RTkuaQx(4 zLA?yr)I$YgbwdhuE_d_>&X^KBQbi1$;wP#G*+M=~4()6{QBOC5CH5kdgzq&)jcs{P zE+smg!xX$fPXAoo%Z2`&6FoU-R7x91&w}N-G&yp!*QV$SeOk^@uz*cFPWuO|q@XKfZp{5X1sA;&4{k&3=oPGA5a{@%=W5desd^rNOqb7Lzb#lc|MALdXF4 zLulUN%?DDOh;iZsyrQ;uOdW3?+9_^%2UfIp<;_y)9=zxGtXe;8VqAIIr?RZ~x(Zv> zMi-^g#F^Yb-=`dQA;PYY+*`51Qtal2-=q+BBY=wE49>rVmZz-%UNCj#W1E2`V2y^X0N*xqr9K_C7ZwMfdYopXVW zaq-ZwB*dXI2`)|^$7ElTYngchM(y z&{J2d-Y*OCP%U;g?wuxs@XhZEG>7x5aA6;Ihu`j1%z@kI(Q#L0-jp?7$pcA?TzA5= zzME#d#unc;hXKzOM9$mVgJQYg8shjT{^a_0{9K-@d5R8L;fuKdKDuyvwFtkop0Py% zNUR%hg}O$9{05Hv#UJ-DhPvlp(35s8$Wc7;(gLS1_HwA7*T+2hU2 zD=mBTIcf7b*w`yqZ*}t~xcBX^%;56U6Et-BtzTp?XR>_qFei|@;Q2BCz>JG9qJN!I z^q+&8*z_sT(IhCBD#r`7U(K>GS$g2n`eG>X%E5$%H6KGfhmWyI6}i6f`WxJ7>=R(M z$MM|7#hUFh4XNK=-Afquu0m@3;=)IHasEn42i8o-Q zPtuNO^^c=S#PUVf=UhHAWl3Bq0%g1Y|gm5(CLPTc3 ze|1;=2`{pB*2_*?Nw#l@uS3$QsAc>a`=w-b1UB<s(L?_1>Qzot-t{J1FU1Dw)z~g84u~)u>sM~{ESpD(I%KzOAa6C+c()bm zRP(Qv*}&guEVkg0JA^Ye+N}4MFl=8)XMLa~xsK5cI5%sb23sS`HY%}Ri{MCk)4B$o zuttqX`092(Nbk|=Es61I1W($$9uR&3837|13&Lq5$Eu!DY!F9Nkzzc(>mz&IFqe?t zeK(P5jpdzvXOf?PV@Mafb0d+8@(oDP%*{a7YLkgtjxUB|TFcoCBm=rl6F=hP-gp-l z^kU;E*vIuAR_fQSkFF8awty<9EBSv<%?lY+UNrG`sGN?`f7~JcmEZy6;qA@zrc)uM zd)a?aXn&4(*SU(HA?%&ZbTqcwe1(v|+xS9&C2jwm_=1(kMv}6p1_Mi?2BXdf0anh` za?|zqw1+S)^2x|T!fKp?p=v3{!qC}C_OYs}G;GDxu~Md8-9ELVeq6+@eT-rKGF8_2 z^{LFQxZ!jzR+~VYm7Wm?HI=%_0sEcP2Qg|+G5>f(q2!6I*OlxXK^%utZczB7{cW$) z60q3@>ND~5@9Gvs)h}^|nQGHVNqrQXS7R+1bDzl9C1%p^!=}8S)TnbZx04MmAhvHz zulGm7b(VF51y30+O)$>kXp}lok>N+0cWq@iYg9>Hl1QN>AWj>XjxJ!$T_e+|6ju_J zumT0)j~ay$Rj6wmhO%jR?R+Gqpt4j z7MsEYSxchQ^eub^{^*V$9s&g@F~8EA7YUWr`D`6}MVgM8t2+ zZl@E|z}$c9&eu`sn^?*+hP=!y#{%9K5d;G7vl2Cer$236?Z3B^Vm0}$td*4#)U|}T zD9E_H{;7VX-Pkr`<+s3jmv#}ABC8UW|Dvy5M`lnCDR=Mx#4iN%0kUY%os5nRf8x5~ zji0UyD6g?s4#dq+F0Wjq8D-V6x_E!qr_wlYla7(JF!7LgIGMr2$`R39se6JbOq|Kf zziKp5poY+Lb36OKnV9NWS>04Eiq?}qJKQW*RN#vk=&%yK9S-Vf+2@KqX)(3k>^mZB z8Vh=q7^VZVJXAKe|=VKs8>+dJ!sFTh&J-gHRizAbuPRbHm7eFGUrWp~=fyu$M$ z`mc?EZ6AMrlnr{X$1qP&0w*`?f4T=*oBoiYt1-l;ma^dmg;3|1%{V4|l+8$GE4$IC z(MWmoJhjHKVT5wHIFuH~GEv-;nr$G<3H&{!SZTS6MHKePQKO@!@if`pDwW-!AvkCumXfGa*?+Ev z!BkopF_(4}evjf=&xh5VsB#%c6|MQF1;>rPTm^DY-Iv%(u#E>vz>=XXw@GLb7$!F) z#s*7)my1eK#fD{augqgHgoeQ`>JcKZhE_0P;0*vNkwA@au3kV&Q|$H5bH z;aI(9H+amUM$2ApdLNH}X6i$Z5qgrKs>-dKm6KCbZEE3{?%nEdOGQJF`jZuqO@SSX zA3@hkKqgaEHLQr0f4JH91UIYF<5h9cTE#^SJP ze3^Cd2i!5!fw5oz-5jW83FF;m;HA&IgkDF07euiWVfzvQ%~PN}nxc>`FDOG@+_8v$ zK?x|yZMV^E@pyH0LAH41_D_H$?!$QU@bDp__3qeVRB1v-NB(JbyJBgdZW2H%4j}Fu zPtd38IbxXJOvR*gJGAF*mRsGx{h!)&VmR~&0DmxPOw2X^n+1aBhW24*$`v)#N=*sM z<*D4c)b_>*TWJA(AWx@NT{E>-PK;8B>Ri>+vOq&YKnQqwicJ^sR1XQEw6G@nZEWcf z+>w4ou`2qDyFuWfOUtdgDZj)*%-ZyGz58wL^H|?&R^nua>3W7x2l|^`Uc{g2u%WrJ zn>Env2j3nqh4w|fV^v@hVQ0=UEpL>F=>UdY%n;6A%aU;@?-qQ%pXomn=--&RWF*gNb9f!uJY5r)Q&T1x z+{P}wA!K%!I$fcwx8KvY+%EnKsqD$4WeqQk;Y35Qf)e4Oi;|q;fN?_XLmU!bachZ+)P>J z-7&gNqP?^%Z#oF9iOqJm8}sT#_ORNsWXxaBJJ&HfMM=xcpFBTvJGXLJwk%Gj$TS{p zcB~3KQhQ(8FfBS%?S2oYIGsIkJZc+?ak7ItO?P z#FA!7eg-hcQGL$MYL2gly2y2lCE;U8Dg)u3BLIg&2+F@jaf*_h_Acw|a1oTjhSZS& zc*A(Wp}_x+NX5W9&WxZuhYH8bJ7bGn;Nk~6ffL6}61kuh7mnGw@EAk#@Kr2HMV8Vs zE7uQpc>trI*?*1X6@!0Ih$YpKghLS$uZQP~j*$?QL%DIJV&FKUVTVUyZCWGx?o{n0yQz930#Kzh9r;cx&sQyK7lT|Mxo19bHC+gHs|~tiy!~&if7y c&SjBZ{ke9&es;ed_6wYhl!9ax$T0B#06ORn8UO$Q diff --git a/sites/upsun/static/images/observability/pressure-flowchart.svg b/sites/upsun/static/images/observability/pressure-flowchart.svg deleted file mode 100644 index 44679a0099..0000000000 --- a/sites/upsun/static/images/observability/pressure-flowchart.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - Pressure Metrics Decision Flowchart - - - - High Pressure Detected - - - - Pressure Type? - (CPU/Memory/IO) - - - - CPU Pressure - App or Service? - - - - CPU - Apps - 1. Check if app is doing - something inefficient - - - 2. Horizontal Scale - - - - CPU - Services - Vertical Scale - (More CPU cores) - - - - Memory Pressure - App or Service? - - - - Memory - Apps - 1. Check for memory leaks - - - 2. Horizontal Scale - - - - Memory - Services - Vertical Scale - (Odd but possible) - - - - IO Pressure - App or Service? - - - - IO - First Step - Look into buffering/batching - to reduce IO load - - - - IO - Apps: Horizontal Scale - - - - IO - Services - Vertical scale memory - or Sharding - - - - - - - - CPU - - - Memory - - - IO - - - - App - - - Service - - - - - - App - - - Service - - - - - - - - App - - - Service - \ No newline at end of file From edfaf4dd0389fb03d8c097d504eb0998ee617814 Mon Sep 17 00:00:00 2001 From: Kemi-Elizabeth <97071326+Kemi-Elizabeth@users.noreply.github.com> Date: Wed, 15 Oct 2025 19:20:39 +0100 Subject: [PATCH 4/4] feat: removed case study The example does not offer much to the page without the screenshot so have removed it for now --- .../src/increase-observability/metrics/_index.md | 9 --------- sites/upsun/src/increase-observability/metrics/_index.md | 9 --------- 2 files changed, 18 deletions(-) diff --git a/sites/platform/src/increase-observability/metrics/_index.md b/sites/platform/src/increase-observability/metrics/_index.md index eea1bd7b03..7d176c2980 100644 --- a/sites/platform/src/increase-observability/metrics/_index.md +++ b/sites/platform/src/increase-observability/metrics/_index.md @@ -118,15 +118,6 @@ Pressure below 100%, especially when it fluctuates, does not cause noticeable pe {{< /note >}} -### Pressure metrics case study - -If a MariaDB instance shows memory usage above 100% in your metrics dashboard but the CPU pressure metric remains at 0%, this indicates there’s no contention or delay in accessing memory. - -Databases such as MariaDB are designed to fully utilize their allocated memory buffers to optimize performance through caching. In this example, the performance constraint is not in the database layer but in the application tier, where CPU pressure is observed instead. - -**Key takeaway:** -High resource usage without corresponding pressure typically reflects efficient resource utilization, not a performance issue. Pressure metrics add valuable context to traditional usage metrics, helping you distinguish between normal resource optimization and genuine bottlenecks. - ## Deployments Sometimes deployment activities (pushes, merges, syncs) can influence the underlying infrastructure. diff --git a/sites/upsun/src/increase-observability/metrics/_index.md b/sites/upsun/src/increase-observability/metrics/_index.md index 2a0a1c314b..9ee7a6c637 100644 --- a/sites/upsun/src/increase-observability/metrics/_index.md +++ b/sites/upsun/src/increase-observability/metrics/_index.md @@ -85,15 +85,6 @@ Pressure below 100%, especially when it fluctuates, does not cause noticeable pe {{< /note >}} -### Pressure metrics case study - -If a MariaDB instance shows memory usage above 100% in your metrics dashboard but the CPU pressure metric remains at 0%, this indicates there’s no contention or delay in accessing memory. - -Databases such as MariaDB are designed to fully utilize their allocated memory buffers to optimize performance through caching. In this example, the performance constraint is not in the database layer but in the application tier, where CPU pressure is observed instead. - -**Key takeaway:** -High resource usage without corresponding pressure typically reflects efficient resource utilization, not a performance issue. Pressure metrics add valuable context to traditional usage metrics, helping you distinguish between normal resource optimization and genuine bottlenecks. - ## Deployments Sometimes deployment activities (pushes, merges, syncs) can influence the underlying infrastructure.