From b47c80cccd23af5d2ad375ef535a38f57362b8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Mon, 9 Oct 2023 14:30:46 +0200 Subject: [PATCH] feat(domain-events-infra): add express instrumentation --- .pnp.cjs | 27 ++++++++++++++++++ ...press-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip | Bin 0 -> 36873 bytes packages/domain-events-infra/package.json | 1 + .../Infra/OpenTelemetry/OpenTelemetrySDK.ts | 10 ++++++- yarn.lock | 17 ++++++++++- 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 .yarn/cache/@opentelemetry-instrumentation-express-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip diff --git a/.pnp.cjs b/.pnp.cjs index f5b8e8515..510391648 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -5159,6 +5159,32 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@opentelemetry/instrumentation-express", [\ + ["npm:0.33.1", {\ + "packageLocation": "./.yarn/cache/@opentelemetry-instrumentation-express-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip/node_modules/@opentelemetry/instrumentation-express/",\ + "packageDependencies": [\ + ["@opentelemetry/instrumentation-express", "npm:0.33.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.33.1", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-express-virtual-cc1a078a68/0/cache/@opentelemetry-instrumentation-express-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip/node_modules/@opentelemetry/instrumentation-express/",\ + "packageDependencies": [\ + ["@opentelemetry/instrumentation-express", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.33.1"],\ + ["@opentelemetry/api", "npm:1.6.0"],\ + ["@opentelemetry/core", "virtual:d3c7bbf6a7f97a974e49c3267814e8607d9d8d839b4f62268d716ea7e832f7e3ded30c86e636fa7c95d6294ec5dc6ec07c16da5ffc14b141208d01acef9f1658#npm:1.17.0"],\ + ["@opentelemetry/instrumentation", "virtual:615937aa81839b05262fb17b9798d2b03176d47c4f8dad05d5bcb050f95f724786e9efd2e9f8e96aeb0f4f2bd3253509727df5e270ef87443598047e1192e3e9#npm:0.41.2"],\ + ["@opentelemetry/semantic-conventions", "npm:1.17.0"],\ + ["@types/express", "npm:4.17.17"],\ + ["@types/opentelemetry__api", null]\ + ],\ + "packagePeers": [\ + "@opentelemetry/api",\ + "@types/opentelemetry__api"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@opentelemetry/instrumentation-http", [\ ["npm:0.43.0", {\ "packageLocation": "./.yarn/cache/@opentelemetry-instrumentation-http-npm-0.43.0-8e95b53fde-04f8be1648.zip/node_modules/@opentelemetry/instrumentation-http/",\ @@ -6793,6 +6819,7 @@ const RAW_RUNTIME_STATE = ["@opentelemetry/exporter-trace-otlp-grpc", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.43.0"],\ ["@opentelemetry/id-generator-aws-xray", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:1.2.1"],\ ["@opentelemetry/instrumentation-aws-sdk", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.36.0"],\ + ["@opentelemetry/instrumentation-express", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.33.1"],\ ["@opentelemetry/instrumentation-http", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.43.0"],\ ["@opentelemetry/instrumentation-ioredis", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.35.1"],\ ["@opentelemetry/instrumentation-winston", "virtual:685a6222c3349423674bb7f0684ba34e2ab20912010f352e04dcf707a156e13183fc382e2417cb37a60f3e7b52fd0178c53181674890e1773eb83e190dc13378#npm:0.32.1"],\ diff --git a/.yarn/cache/@opentelemetry-instrumentation-express-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip b/.yarn/cache/@opentelemetry-instrumentation-express-npm-0.33.1-e22c0dd0d4-17dfb5ba50.zip new file mode 100644 index 0000000000000000000000000000000000000000..19a1c28d2aba7d4df461da18962e45d980095930 GIT binary patch literal 36873 zcmb@tQ>A@qY4Bz#u39|9J7&tU&z7m;dty`}fn<&e%lH#?IKq+Qf-o{{MO@&c9yDZ)a~} z>uh3eVq@a$=<(m&$^8Fwr-iMPv!jd6-(UvL7IwC@Chqo*CQkqLEIm1c9? z?{6kJZ8+~N-y4wpQnm@Mbh|v??l;BIt3P}{-iM>MZP`-1rbb-4>e+|*k6 zW`~ELirt-@d^kEYx3y=7H#4>F9DG$GHY?#<+0yWL=T=eqTsSg!w`Y7m#dmMPcBO}l zEuBlfAWlnW1DTWT3nT2U)>{k})*bc*k@}K~frC1N6+WC+S z&CP>qc#;}VcM4PHfpKHE{BkFNC`)+|6Uy&qu^}x|xf7ZcRCC6DcRfp0SIwLraW*Ku z&09P7y?VI=mmStJ(ulp%Zw13kYR-Vcvtfqplzyd>%{q7LUAj!J*5`$$PC)2*_^A=L z6Q(tA_N2Q!@H2!}uTRLt z@7JJkmI3Y8r0k4T#$@CI-vHPjzy(XOK>q6(*I3+~uPJcA%;T};6ZUFR z2%;|5u$-3W3WXIzj-QRX5xzx4?8c?GjH9whuoazcxGE@+{4;5K&F*<;&dW3D#hbBi z9DImEn*1*euP%kP5kC3hSGz~cx=*gDg$f{ETeP2GYMdy#&h8($6AaDRxRDH4->TJy zprv2@d#KrkGJT7Orw(O5$537 zUZBs%qpno6w zjeYF%;8mVcu%ZtS*j8V-0D>{7#^LynHT}_Tq#TdR&p;p-6c`*Cky|7B-5y<1hiSrb zyhmB(6EP?~DG*@dSLC$GsBc(1<0x-hl+^%V7mN(ajZv4a3#ylo%v%LSM6S%v-Wl6q6Bb%u3?Ocd zYpqk=5sf|=2!Dv(SD3mWg=3p1omR3yuxx5Hsh1uld7U3ME-9^c^4T!)niLXKxzP{`9w1-X*KK+QeO=QJZA zqKj0Nmb~PpYEhMN$kxu2<)I{m*bFX8aeRi8vHL(~E@Q44b%a%lWGxg1riVbj%>p*N zEf4$5z4t-r9pl`XT(mm}OL^d*HN-SK0E(PbEQ zVvKq{IZr~Lr6a75l)}g#XGfd?@J~)1F3~-7O1X0Wfzj#yd_!0RG^lToi873FLT3+I zIKk3ymOejC&KB0WR=HJS_o&+k{zpqHUm{JB(H@D_xGBjg@LcVn+8i3wNCs*J4MM3% zL4iO55JsjbBV7Q;aIL_78x{Cz;TPb?=E-cbn)&o=4y~R2k;gj@^*9}cedFhbtCv~q z%3Fz`we8Fd|4)j{u=hB)=w&ojf{~V^Q8DqfeQz$BIyBATLR&3JF}YoS(_BkjKjd%` zjn))qK7(IL$A!ppMNT7Vc6oegVDAKw&Oh)~PN622n@axqM`y$$f&Me-!l#B8H=643 z&bXP?$K8gh=%5Fj8_ckG+$4a@K)zpo0Td(8I}DKEKnieG@dji&(aL)^C~_&AHd4nW z=laeoj0S25)wachl!1PI{QHX4g0-b?3@s z;r@IKi9>%p*7pP53HA0vt)cID#<8K%W7iTW4QnzZHH4n!n&W{L6XeJXA3cvn;;AM0 zn8rc|zG%p+hN`O_t~scqYZNjAUXy-cCZ*;lvay}z)NGa~$N|l1pmI6-0jYRF?X!@( z_UMu~JaRd)&G2hcuj&m-B5k-)vAqn7r0X$Y6Of=|aEu6#MO2R)fkP-X=-(rq6Y6O1 zOq_d)bS_0*4i<#^Ta_FtCuZi7<95b;L|cSVfZ+a&*@(J7f=n7EA=nHV0Q1Lwg=4^e z+bN3TrA_mO@C6#H(1oZIt~awvdQh{OZ~xAoy+Q2M<&$z*Ztpz@kkd-&BFU*`(^rk5 zMlw%XVp9owJUuH&d>Aw!y#p?tcRwj$Uu3goOex`v{NuK}RDUE$fj^gjVfb_wc?fxs zD7BcQ+)=BJIdQ|p+fFCjQX%HAlE8*e%B=<-e|GCQ+<)G8iGV7iJ`<~QdmX9oP#(^v z0-COme&y5_()orq1nB`s=rXm%?K#4u-d1cN7)2wrO5*Y!-smH%ozRc3>s-}z%n_j4 z;79Q}wv=>{*}0xs2^n~kZ|0-47Qz(nh<=(pufpFKA$3Gt*l41c9^x4#aprV(t52>WkG>M#r1qJ5vQ6!l>N~KMM)I1 zv8FLpRQEV1c|QzkN=#ODd{45h4DS*`yE|zpBO3V- z8u5znQl^{*un)j{Yq4kPiiN0&Nurn`6^%ascp{+5wa%i8e7x z#^xjD`W3`Up8h>2tDB**F*~KHNNFd*45~1h!Qq4N1jVAunPT~aud}m)%rsE;4Aqzh zd&BJ|DN`yLUuMh6BFW=CBn-?WE;`o%lD^f7bkL6S*EPZ@PSy<1K7r5vEFWBc6?p3F%x}ZtElWidKrw*&i7TG;_2l4fg2W0i{)wEZ+C0GljVV=I;H^ z28JGr!a5xX4>5~i5hvgUK+nMm_&^F6sHET^?#^3SMe|=N!qiL7m#-fPgxU!P#!Bc2 zvwfK;hVwUdzBSJ3UcnlDxd0&v{_KInfnxNq#AY{?Zod$ThQk6fO6eV<17xeIF<@P~ zleI@UgbQmO5z>KS3` zP}|+db?T_FX@+_x3vv>wmYCUT6edf{eK;7eIi8vU-jbr)e@~Mij7Gg#{dJ9v3H_^@?mKu_&Q)qhTFMeq3``eo|q1zwx;0s7`$mrb(GM^jH0$Yc~iIXJD{WV<0a9*%2#Y3$Tn z3)z{uuBkowehP@H8x4!n!ni#Ah|;>-KfDUdd`p>a@zq>gFb2H0b0|A02bMGSR$+HV zSD(qCC1bb+>#+yEDG*!xVLU+lQrxu>K6D*ymJGJK!dTBPccDt+DGTGEb~Bn3xN!J& z;d4W;@EOOJVo!2Qn!&W#&&F|NdbA0QySDBib9gmpeI&T?~M8htx*8;=YY{{~w zRy|Y6d{rY_y|wiAR?wU4QNYjhrAq&MuHK&dk62N=2zNs%8v>5psN86n*sQ{PUWqib zM&;Yy9HRc>1Z>AqAs%maY%R!98t|6tymj|)UgA7{>o1A`i0GU11%5hfEW`{?+xX0l z<(1hf%BWIp8KuKP!L()$l4#6NwlgVrBeXV6SD2ZctO&94vyJLIxK2i}>VcL^+ycaf z%qvyJw0QP@{y;Vi1(+2x;-~R0Q;8#bXwH>j(7bOP;C0PPm;iKXtddC8~z=Oq%vJZA`_^=SU*i9nn z>eZ1~Itn*Vu|e1C_P|z_$U6}EQKX3))o&!NT`<_QR3-N9 z@>5#62$u*CPlae(VF#p3Y8x>lJQNH&`#itBJdr~qD~cFa%<3I_@O$SMnunQ59IhGA z_Q`BtGyItcDJCbS$>kIn3r=Mf_QCSWrCE|}xp|fPKHSZ=nI+gTzzekRsQaSR$Td$F zY%wB;+GRDT_PNzFOHJ~fV5CJ=WQQy43RFjZ4u^T;W4!ZuEC?=`6W(<8V?b@B8{ENr z2Dog-Dob^P4tME!z59q8{kq7I9a{myJK$^SlWVW%?Pw7$Lslt9wu8kh zVGBkIU~Y`m3MW#yGwiMw@>jKq*Lcq8%_YnC(v$T3GLMKtIFSiAuL_xdRfJa5mKBvA zTrN2KiQhn@{K8`U*>2yn%$`&R_XLy!7?yJk{*x!ZIc%M3ID8dw3U7fhA<~Twz#b4% zT?m-s$N4Bh9Qn|=W4C8Ar0%mm%bngdN^+8 z{uVM6e0a_r2cHq;w7QftE(2$A!6H-D&2(gNP+P0pwA5=XygI3v1*5 zMuFh{U&VEDH2QC13;(ZUo7lS8{Hxj_s5$9F4FmwN3k(3D@^AVD0cU4N3qu!Y6IlZr z6DK-LCm$slyG(wB?gwhoM?*0>VV;qR0M44ojJ>h=5(O0vD~wywIw?1B5?wZ@#rWKo7))&i4o@{XHk>rHnh#xtd`xxQSPhVI@juN_493qA+ z_DwL>nlhnuYALCZRfb5}DO9+GaKFZ~(9xrXrooY+#g+(!Q?v7K4->Sbhrx;4*~(1L zp3p&)juldJf7C9Fwex$Q#9zHI$*^tcyeR&OGF!#>0cCC)~O|t;6AAI)P{s*6^#Gduk=mmI2$NWYWd7N#aTND*k zR8#q_&E5=5D)FT`#61SImK|k*6csT$NY2CnMB#N3_0bf(49& zAUDPGqO*P5*7AB$1(oyJ{lJ$R+xr|C%Y@uAr!x?b1779w7o^zoCPBh&{@r_^S<|>b zg~0gxiemzIIwk~_2&zb%Fjm%cWq^S*%7PYw8b^tzYnC*5R?y1&5P0ILi+0}W{c_3~ zQE0qgW(@TJZr+X&NW~b!;IPA$AH~ zzX21?l)>YCTAACQkfVY;C=aNiirEzxkeqbyvx=HKW3Lcg4dW_EMfj6e?QK3PBJ>Rw zm%8>t(+8LNI;;tI*O@>|2ie@nOjb`=;mAtkl-%vD8)a|&+9Au~kzd%RYbrrJip}|U zLUqNWh8amp2Z+1&MHC8cMmq^5UX5@|)=#LyDIeQmSn!(Hl}Xxom%K7$ch-vCRxj@m z$$r-R!%8V_f^Yot9L|+vSDAH=o;WphvkJPou2`hMLI0Uu@Jr{JxxefdfC2!B{;%1! zur)Su|BGs|@{QFd1HxBM@4+8|`Y5wFZ)pf(8z!_=GGYleNlKCW*;p*C1(J4K^N-$} zqqbhQHFXA%x9gqmmuur%Mu-v19QE4W2zX9=05L@ymf2ObRIA{0!TKQ}sU}b8!HJq; z*5ngLa&7?wh7if3vVO&P`TF4R4RHuQd2BjR=R&!?PLNty4}o0)YZFk?&A@mx9Q4i; zFh*U1J)6J@AoTb#MbxYako*(Z?MDj*qA-UY!?6^T2 zRhJ>GiG(E&?aM?NZcO}`lBjvHg6-7oNT3+N7(VJ6iF-?EX~gQ_>Tv6R%XlpHngl~t z&W+}i)F^HcVkRx77&x-ynJX0&z4mAE#HLXLJYjZ+=ME6!ISTk)DjSpp8C!1=7DhWjcc>xK z*A$o`khAWB3&OhfID~0zWuTNmAst5})5{3`OZ_NaN2%*4%Un7&3R~?4ST!|BF;fSG z=;cCKZN&u3A0N|4g=}{K*EjvS)iuBB=jniQ`)8>V+EjaB@?i{wV>4-H`*xiT z7%-T*8R-~c`?>>UddJQ8UF&Z&6R|p7`Uk(Cu&(ZOL%zfyY-Wx7<7a0Xfg@bf5#h8*e>!@>fxm|Lstvv|`yx$0(Bm`tu z-yo!H&N7-)P_7Y+;vpKU81R61t!frEH7(epidvbPHoG%ZOR6ip(z-)XLF~XibEtQ) zN1VI)-h3z(h)GUGNLK>!u!Ui(Dqlfh1?fROZCagqDNKRtU|^-MRp+8}PkuWkU^hgF zbyEK_&{~p8e4}p`+SFa7q@MrODQ>)%vBdGqyAdiz=FXpm=O2u3czR6}nXHB3ftP{v%=R*#7PQls!9>A(sq>MA2T3 z^^4Ya5*i0#ZJ|5yt0CpM^Z1y{)Bq*)TBJlhVURK%aRLCQqON^h2;_qV*1I$Ud-ZbBzKh5`pju60KUDHv)!IHq5JW`a0MXOget5#`LW40t{+x*Dn z+fnlu`^(1eP<7LFF9v;y!4S`06QDG2zCz|Ob=;ot`oJAz2?WlB7?0x+2DPAR+}i9U z5hso^phB#FtHy3=14%OsNmaKvfMX${1w5HCvqe%ac+&ik02#jMqTA|C>CvD*H=eeP z*dSy(UefBSnw{w4{1a+dH)&91+>u^kB^#Up0n_g=o)I8500xeUq&G=-;8oS5lQrDngVb#L3PB4boD!srwjmo{B;oTVbYWe3p*Wlg;p1zp9qhIr}eC` zOHtuI5nCF6RLFGpBA(3pBgXqh|7P6#5bikw6CNUwi7~Y3VT2B$?pOr~M@coBrN%_3 zdjyBvtS2oz{dj%gz-ixL)52esUr?qnCZ-cQB>conN6aVS<@tQ%tO#^xp%Ld~HB*PK z8oz52ZBwZ5`Qk-~)trYD-{(y-ysfD`>ez%?PMG067gfroon%KR8M!I^p=@SI45+ar zuc!B(06XSE;2bBwve3X#eo53ZVoi~RTifMp+?4+rR@hETlEz9xP6bpEsoW)(L%b3IXC$wy zN59$NvB)@iNU}Y4z~M*_@rTkE?#-zQ%n}e0e<|WFhIGiJ;%c>>bxFqpgM*Jx4G;^= zphu??HKxQbI2Wf;^P6~w*;!;4W) z2%enbNasn*B@48870iV|QCqav6V7ZZ0#%@4l(3}2c7ZA%h$Sh|bIMUCEmB0WwH8`3 zq@C$RQXd;SpIsQ%hA|A_&?IO>hUAHN_vEJo5E?xmC?^sB<{48t^?GKhNK-zN)?IRK zC?1n2aI=xC8JqLBeMl7C+i6X^+8R+zrwVO-!Q-dPhjzBnvzPiIXz%x_1+M;=-sY~t zX3AoV#&I#zp`X$&(^W{6Cq0W#^S4eMSbz$l{g|E&>X9h8E^}N@H2>b&14tp#1szHy zFK>R2!rE#VF9H z$QCc|>|L39dN5;4@oy}RxX~@E7`A|_=@q#DyntQ@+lGDK3f+AbDdCfKcF1A0WaIK;~%oB3;b>L5ZZE7w~O6lQ!b3jEfP>dT8xn9z|>cR?{(7Wxe zv;{W8{tSrMmQpQX^tLK;#;#K87~c2ck|IdDqt{0GpY=W2vO9A)%5{T6K1IOcZ=mEg zl`PVxqsC!Q*n#OU^;$*N8LuqPRhT4tD!f#NM5${-X6)6IgX;MDPWpH z1YQeWM|>cV%?4#{`=ew@?wS3Vm*AGTl~=&(%n2Zar{kOgnsq`p1MwV&B9tB5(+bVc!sF@8N?A@g4=`NmDd3XUuKAM6+q9M^zGaT+Xc_ zh`(`;J;n&Lx#a;RjDPZ8+jU~Q- zOS2;D7!L}Gt3tasP}~E4@gpAa2b4P$=v-C5X7$BD`!rI7Caajf^~r)*Wd!5WBApzr zGDk)bhE&p=T*G{pA66hk=}RTaoY9J)h*|)7f!F+qw^e|+M$=3>fy&P#g7B@CMX|cm zTI4$9RKMEa^(Xa*`lnQwcC|M-J-D|*Y-xj&DTp!A&?ze0bQ5p5Oktj^t2->DATePU z+?RD!HnJ6IT~zC$xOq8==k#fS=)vSPi?zl)v6^5^gSIYohbTtR403p%2Y>_u0b5fN z)p!cq{2f?Ilr>1qY8*aUUrloJS*fa1hmzMzoN?&o~S2B8ww_b7?c7?_m80FkR|#haeDpHe2eYdRVDUeFYRa znHU>WN<~siYQZ_b8yM0~*Qk~r2(mD{oh~*ei9BVdNKIyJl&N#Z@W2p0eo{*8(iNsNfOin=%tu;gDx+^`s~$RHump7M*m zR~`i64DqqOJ`l~la*HiCqeO~$TCGwp_?L?s&kWh8i(Caf++NIB-QZ!pY!eFOnQ+1~ zO+{-68nl{qa6>bM+n|$8TBU)Eorvz8u+{cs48?}cY%*=~SK^75eDDO@!2!mJLaF4p zgCw)}h(X>nk-6w`px!xEs!1LRGEVAMdj`LL;!)QPWq*8w$3G!`$4~G@{fjV<`|X+! zp~6cHdFrDNj>FMWT3SkvtdcD&Nm5K*W7Y^SF9EajBlASnC}(>-iPRaRRa2mdh6??b zh9ed#hfk;{80Z`-Vd%0+ljpV(XfFcs1sZe=8Qpy&!4?UV}1BAaH8U zl1k61^iGEjS#;>tqK=(axcj--!MJCI!)z&m+BFy6`YVuh9o)o-p|2TsRj?~HZbn{0 zRR(x+nHQn~1_r^}b@Oo}8;F(0GfM=8P8gEawvwpa%V@{@WBA3lMu1%Z_?rS$VBsoH zw^j(kD?jikSJ1FHYQ1h!%=XUD5-(?71Z?UAcU69TTx?EukeuV^rD13`;I>DsMbdAz zpADj8AwLu1nU)3?xG?K#3YlOd*J7%$&djr1K@jG8l+cl2!4D>YrY__aVGCFp1}WCT zjP5NI#1X7KZL3yXp%L2;?S}xdLCup=%|o9ZX}M!KaFR*0RUqvb^^$XzxZ(kSjwHH*&KrQ6U>((6A2lV6 zF4N`HitbmnvtFkSc|du_1F@NFq&g=dEzaUo{oqAQ-KktN=n^}SOdfbq_9WKaG~W;) zS*w-!$uT9{R~xr0owEB*X_Vpvsty^oO zo(tQ@!s75A_-uSg;#<@#DfH5o(XCWe#3Z;IQX|Uu{bw|#><8qZlfJ*(O>Y4~B!6?n)`{A^mNF2KtJtP_;?8GtweR~teQ74N%T zJMxqY?F5^%c0Dfy8Qg*7r6eM&nU9XZX>}~F4iy)WfAI2~%B*ngg&m=dk)K99QbCV( zC6@58e>(@kg&(J*ChA>C!0^p`m@s=w@(zd~2wx~XesikRmGBIq< zqr=r5;@v*o)KR$NWq9_yDg%GS!}-ogJ{&6r4K|^nl!f66$BYJ^=Qv_w1oU!^Ouja} zEh*MuhhdF@vdJa$T-@LjpZV78>xP6?P!-S>xh1W+-)SW*(pI%NcZrVg4GJ=z544Wl3o z{IRtp9W2`L6;{sh_bt?z420jSnZ%;o*3l8kj^kal1NSB0qTxJw94}_b*S{zpLAk}W z$bT!t7UI7H6c=X;>wgr5VRaiPEH;F{I!AqRHU{^r_y=NKrs4;ufh92L*3#jfz5_Y` zIH3+HZm`7XZfB*}{48n0AE86>*shgqU377*5MT%@#Liq!>mkW@v_1 z=m`w?(5sCCD~Ku6!nKA5cBXA<(HrT!Jg>rKso@#@y$P zu(|fVH#m)`CSWG+`JIv|+jgbsBe@5WvxX@`A9xc`MVq$NHlpx$U1%W( z7I6lW-{MsvCMzsF8t5`h99T2E_kEs(dJyAcnuL+tED5O#D^2;oG98?%2S^TLSiSvW zqmXt$E0N*iC{m~9kWV77+OFw~3)r)ScIuB-p0u4N1x+=|C)Jx=vWY{1IKyI)2)nqs zpyF#m`CMX{eqS5%ejv&;h_hkqhD{pVaJo<{+H>}pHO9lPWn>N(RPr5)a7D{r~U>%j4 z7r9$UuqZ5Wf~CDRQ+B<^+3cXZbC)eCbla?cYbioF!xd&8S}Uaegms<~_r5simV%0s zTlT$emrL$I!G>aq#c<=6$cQ~9A(+PRCOBlPX%9P^O(N1j&w{{mf48

mvWOCI_L*GU)V&1?wYe+^YwMP*&d^y)1itnquy|*`oMF))q-aMphU%6AXvN$;Q2($W^-Au?$ ze6(}{gl<<^bIB-R7Zr<}0*nTcc76}B@-SOu?9XTnU;2#h3s{<3E@lbUJdJwJreN(} zJ|3Uu=G}wA=QE>nACfo}D? zJ>2ZJ8s$RkRupV$N6T+CDXlG*WO&NAw1!eCPif7)9VFWkHRU@~NeT@_ps)6f|xcyg!R*-df-W@bx+*jCqpJm_4(3*I{cZs#@{h&?H=XR>hg4?d0`Kqmi@; zWDyc{>f?z7;WG}EBqe_HVm%L#wAA5uhJiQm=rn5e z^i7(BLcwZr;M^h0qQR61GAMg00vq%z+qn7Lhp+(a`2rJkZn>1$ROhGC*M#~C%w}z> z9bv(dw%DTk+fE{OZN6^ARKJy2;&;!L5lA%EpaRL&LQ13<`E_m0bg9bS2AQYU*2yR4 zm$oQ}aEb8w1k20W1sc+9SI&!}-MC@K^Fm7H^5adNL@o9!1=0{9-uBKgAA(^DNRCFv zdzU%$oH|^WFP3Ys;~a-|$@essz#az&a|j@bw|$3eM0{|CYw={7f;|N%K@!XwRst3; zBZMNe{FHs9e!%HcSgFIRW|G7Uo9zvl7{@a@f{2ffh|JOr_tBIr2-vbqY3y+QBe{NF$(V)aL z6Ya6K3UkPhswm)=MQ2l#n!_4(Azs?LnaNaD{Oo9CN=9e~2d8>GoOHJ$dxY(cO=J{g zN_hSXfc|aaRM)VLSmg>)EYLgv=SAY>KeZ^UHCpGdJ%*Js2-ame2lR`Zso-Q*Jz^iQ zI!Uwt)EMd%5Fw`c>`*3;-5kD~{qL$?0Q#yZsQMD&wpmn&0ClN@EgPjm6ocd{)=4y# z#GX3_$5SY9KM)%xx5X}iz#PTL+f{f(r}UfwCW2j3w#jDk8pQRSD0e!_(s#UJw59pa z97o;jqSRz68#qF!$+F>~A=fYe76Q#EZDL$wc-2H@8yHzT3j{P^8DgOgY`Gi7|5(+7 z+S>{WB&)=$A$pHjbVUM>8}+=a)~Mb7rcKkRpEyNLminDCtkW|w87QYmNS(9irMork zpM^QwuVxekoJuK_vxYNRiLfiN_9uzNtS(hcqmgCVbDpTlGfuUhn8DoZe4v{XZ4D$t z_Bjy**YE3)8b*@*_yp8S5^GB`gs;jJjWer}#%6pNfrqcKb2a9MA#xx6QsndwYs@ov zw~L0D!Q(eQH7jIm-D*PsWvz{;Cbn+~`F4RIwVsFWR+C<*;F zUz6G5(I2WeXS8s>+hY%{L!Mn0EvTg>y|Kqy(uMIw8WPPXkU&s(4{~ikZ zAA)9YU}R-r_K!uqoo%+Njnx)A!gr1yVauFgnTeNP!)6Eit|sh+04yxK(^PT8j5BQH z@1*L9Jpt@G*XNbZt$=!pM^jK88uRriP<7iPSA{1w&QEd1=;cM5&gNqcO_Z{KGc=s*y4RB0Bw^!q-%%~JwQD>9gugTLqvbF1o~QlAc{SHqG)G`=`I{Bdb|zD zBP<2UD`>gvL|4CX90eBU(})l=>jZN$Ffo*J31rJd@?Mydzaf}BphrJeAn-4D@i=>u z-LsULB78Q4RLx*9)SJB`viY(~<{7Tz+~1J`51XqsA6_-}z&*O`n~&H_3EQo@rcsTZ z{Uq9Re8?UU z9;LsIgYV%Wu6{>cQ!0*;R%PZee8*&d2gW|Ee0Je4e%#!F>ZBGH$YDXiD!rn7wBEp> zQqo2%a$6oY9UXg)uwsv>Ve3XtTe{vI z9`OBhxv&JSlacvbElShB*(v*4}A4J;PdI@|`vt6nFG$(2A zDe+=CoxPv2)G8p0x5H`5#v$=0`3#QxT&%t#$ zy*}wX+Q7t;>5)T6C?&^tTrs3x8k~1{U-W37&RVT#k6C)vVmOR`QNNea& zyRmchUl`W=Q=8-VmtmH_UNWtJ6T|->Ub6qB*v2lC0pXjPyvMn+tFC&1mt+H6NL^}^ z)G}|fqPPObk+7z(qy^JN<>v!#?7cx#{PjA=>vJpnYwt_+ukUc@HQYl>BaiL5;A0}M z`LsYJsRcFGwtAGi(kf|R&`KA2ES7z8A9cdK9lpV>(QhbkJfC1U zT>axKBkG&4A~OpY*kW@53-D%CY+~GPcraBv9b%YgZfuL}go}-C%U!;|V5b3C z=E*N{=J01#aYMKxkyo8+jGT{uGKP@q(Y(^c6oQ;UL!35RWQ{yvYV7*Y*6h*b$Y2t% z#KjKmE4nF~tg3Ip=tv{zjj#O?NUdf_(n?qGp{f;$jkof&i<}6AlA*L=GnOJ^S}{q5OsFID7lb{%uBo!FWo43Ve3j#i=mFEHqq((`7g@SMLsMH#b4gn|Ndu7{;zre zFaOy;@b*!fx6Ncg`AVVgb*{uv-qyN5TBs6<3P(AsusjbEvJGdelOVQ$%bOlh&noESTM*@1AlSaN{ zTR`kd-ClVBw!-|Ce8k=)FG*W8{ob~?dcBa%@Qz&2L>`y=*Egf zV`-;xPH|(`Zy$n(+8DPAfz!T&I9W|BA0B{gwB~RY4qIXPjleQm#p#QAFT3K>#pu5C z>YI?^yvBqXt@i6r32(nFMW9g-D0zy=SoC;QYB05~u}F%uEwkgRgPLHk9_{fI!j(oYk2k_Ud<5fh05HYR&#`;4PW0lzc1Jhi?0Cz*9%9oa`eo0#sk%#gQ zWER2d^9MC%G>oQd=R-m+#&$@~80%tm-mVX`wmOvtMQRb&rl+A@&FujV=^x#CO z(38emOuZX+f)PiZ^^y^JMWvWkaNcG$i#)F*a0z?B0e-hXT@7uEo$AO2v{G z{igZ(QdMbPf*|lH@yvwh(l^= zBV^nILzvjLO3M+A$vDl`!yw7Hfv86=tGDSv(PPBt39XP*8|NzN~;=SnacpSJG~HDr#iD*rR238Gg58o zi_3vOU?9+PCS(sZSygSl9qbtkP}IX7J7Ic|Z4OuK-V0v~-3hcyrV54`L>r*<4p zYd*2F_Ja`Nm-|n=NZSFJIkh^3fOmx>{t&l8X>GedC~EzHww@#>zc+i&IC*9-BE-Df z_PzQpAh9E>SG=w0i+KJ(M2>(lHB;QAMuDKWo#9qnJ6!cLlLkpqe^gHy8BihdegKgv<)s>`MOo}XezuW>V6AT!TP?z^^~@1K_?pGi9>fR zgp=$Kv7_ubGg-}E2?c5&*wmISn07h^_;+|Cs7lrgvJcR#1yMWK zX^74F%t8?@bj~T(Y!)WISrfteb*Ey%K@$WmQ$-1)q%!Rph*0&WqCL%dT&y?Jjf+yL zw?JD+WIfx zJf}UE<9D^X*>Unl8fo01rn6CKHW>k(84o4MRTqRPUcMzSJ2U9ih-65IX z9E1AQbYO=R(OiS-)B-{u2}@e&K|=_);*ALzd=BC~FgFdRDfg1VS-)*bH&77r+y!^l zF8D#6uam{v99$XR(*w&Zo+ChubS?#~Q0GnMUF$|_6 zW>9i()vSaJ!($LtXqzo0gddXQnUR(Hb8x7~qN~g(7`hm1jlr)q|3Nia%v_QW@z_*B zLY0AnDYCe;(MU!(>?=c8 zF3pz7=t`c{qWG@JK}J!yNxpf8MA*79a0$@-|FrfNP<3=kyD$*k2@u>}gS&fhcXxLu zxCIOD?iSoNxVw9BcXxg=^XFz>=Ka3A?qm+D;heQN{Z#GVySjJDQ-ad1V3Swf38hZK z7cKcVl1jxfWB0kdh44-G)<2t~VQL4tq(m)gnWI z38vR`j5;vLtIY0xL^8a$*`=-Oi?c^v&_Gs|!WX~Fm$Jej#yaVAGr1520unQ5{t6nI zWFO8&P$Wl~Pw1S8T~Ifv;;c+2MY*^Tv?UNeZ>KWlnY9q3iV({;dQPz=LSBHiY6iWS z5CgVb;%wt=+`nP9$1(RVc>=Fc4bwb08m+-Ms{|>N11{TSlyHWx6x!axQU4}@v z6VGT9YJgfU0tyLdcgV0+8Mu{&>88s{v2Q8;iR%Gat84Zai4E+>^3!g`gL##qG+OS& zmArB5n5qo~BR4s0oD16YQ;rsc6-pc;lYk53W5=l-n;tOp4{*){w#us#om`Iu=`4pR zXFXvp_DU-6NK&Z!jf}*GnPeIy49(xKRI>EXQ*Q7O51_WD>OJO-=Cg+A&PWkY+936~ zk8I0uWt9+O#eYc=!SCPU@VmqNme8@B%N6bK($Dr3cK$iZqFVLhZV4vHhWS%qNku|h zO|6?pxf{|qfQzk;@UsLXG_ku`l^CDhbSt#xZC|1_qg7|j5tXP)>jYcpIFh~xjxbwi znB8*9hM^sufuIpwpSr;D9Tm$qC2L6VT||I38qnQlf*E!;HC?Qe0;f&*RH>GYl9uq^ z!)Pbx-6QN9AA(w^zQ>kj%ai)LIw+@;ggUnlu1m)z*bM+|^KPp=GEu;9Lg17*;7H*t z%yaePz-sd`H`#*)aOd5fDlD7k32jYNs9m~pX_8scu_=Jj@3QE>5=S~yBq{i3m#7+@ zsX)7tn2fYm;ElrFJYl5;`qIE*fim~j$&DP(86=6%osUAy>1fXB6sPBWZYU`koh*mz znGrT??Z;}P25t_|(>dIF-(`+aVU2E5ZM$@h237T*ph9E?tqD~3n^7wmXnbR+w$t4u zJhZ=&%g0u6QP`yqmU3d|?9E$+cukAzXXa5ghY&scvO^l5pVU>%xR?}yE(K)0)3*RV zh8+do^#Q8oB(Km&j;$gesbGgm=za$d6xOz1z`X0xNC(+B`e2v}uPZowYe~1t-mlHH zt>J;zjqr86ne-vXXYmYh*Wg(3iB5{}Qy>gU zG`&*WVd)y6Y7YXeP%$o2Qg0kGLv9a!2C!je^Oso?uP?U#2w}}`f+2Mi-yj^`M~VL+YcM?aZ?y9&Y+v2yo&i<-wCSv z00cDm=#0)Vyg}OhE*`Ws!?;-cds?WwnC9!6@|2<2(s(mWzL;G{2q{52IRt}D&<#Gc zj4Cy!H{lvEgktdU1_N#| zEE(>Q%t_3JOH9vhlBUV2u$8t^HQNM%ovJ+K?veKEz0)M@O3Z*Bc?z59q5Ylb?6QKB z!<{;Yx%d}j9>qjf@uh*RtbV2+NF2f3p%2Gio@p=`FQ>Q^KV*IQobc`9o1P!ztw2+o zJi(_zxas8MqC$@IA@t8A3{Te}Zv+L5&f-}TdsRCk;9!DF;x;={HYTv|yLO`(2j*tR zl;P!)CFE8*z8Rij#_e8U)rva}<{3NPhbcE%=Ms=;+x7rLiiH_o$VBnt-LN!huSe(j z+}-p8Kc1RHS6GAWlTh|6;^u5o&~(g?BB4E)FbpeoRq1c)Xv6}q=R)chvi2{mj0hg)ZT)X8Exk&Ho^XEK6Flc?vJVw=!`6YC)+2IASJ0#aw*%{liINf zu4LIyJFWvhvVlVB6*nCD8vz|M;kAdhA8u^GXq)_B#3y&z{Dd6~D3B-tYM}}w-sf6u z_W7`w5n6xwnt{1kZp{@7o@Q2R_Aw6)#lB#?8O~|3fDE_$)#<6j<_Gbh11ZSGF%%4} zUVfejEM2EQ?8=j)OTD*V>+Qw{4RMeJFV>@6CyKO03HP8SIi1VCeFhJ^PjT4Ypy(o9 zQY=&XJ+mdl0_3rAJaiDKQGmZM;9F{GT67uJhBqrVbyeNgX@D(HjWUWLpVWGMr_=fV zaS&+0a!7ANd>Yj=6>&hRUAlMsMX=7ae%?#cYJ z;1vn!=}tW7<_H5D$I4d1U;RPvivHLP(0ejCX|v8XiM4^FEtgw;Yu(=DB%N*S@q~eZjnj zIe?0AVby+u|HqB4$$M&4A^;tb{2hs93w7rZ0L?`JtZ;bd`x`L(v>CdG1FfqEqrvTg zV!~jIL3z&wN`C_*>rP8rt0ZBcNmKgqWj3yr?<{^_-K|^kaww2)0!n=7p}d(R1Yv$O zLDC@3m-%xZeX!IKxoH!%I3AArQmoH54MOwKV|jY;tYd9&Z}Yhlr@$l@ICOareQCnP zvsYWy?2cJ~&YHh`z|7JSZET>X+e)LIb62931XsEwyS%oIDpch0Vbl}9e!HD-nMd2J zRLvfu%ppKWKsl`5d<2ignWRITNz_o!84%dYOu%eubIv@OS+wBH6W&e)P?FK0k663P zwVKkPHqz0_b@|v4;Kb8MlzDYrb3-!PWFyVd3t8eYR1{x-STN!Ji*u3<@4+seg2Q6q zmX+tyamPK4LME~=n!I$p`kEfWCpF_d{6mXX|LJ*Dl!ZC?q?!*|%V>H|J*hevSA}X2 zG6VoRV%?v}SE>9Q#1St0445*e5%Z}@8Lp)Ddj#klLU2knjzq_5qc%fwr|;{S6q^dY zAx1Ha6jhh|>Mej(nIfa-Fdp*Xv+!2|pk@O=Y=-VdtJAeF`DB*3m1b`H z)kIm#Qz~W>vx|;Yd)%K{P7$|?C4O27MhO1C_jDq)7k=q%E_Q&eMk?)pJbYT2DHBu9F6kyTC6ogAprOxfi>dwxpUmBj7`r@G0^aH|XrS$R3L_1RLlxF5Fu0_TseABF%Hc8-#yvfUv`E$tARYbc;*9EDQ>M9kz#8(csY(^Pg00v zf(9(QtIR!uc3fluA!}0eQK$JmvuO=DSJ8aI-54krz zo*#$+nxOwjQERa}iqXw!?1WlRJRz6Wz>ididm@QBv@BMYbyf$Y-bv;3lU{7Riz*aY zMIRT61%ZbN#k#h^kmHoyfrM{c&`IJh5lM$Wj$Rz~iimNa{+PI1etA>w{YBN86Y8~G zcJQ?XQ0~9rB6^c5{nJB~tLSOnP_O0*$U1DR%Q3=>)bz(xr zkSY@WQ#V58=Nqg~{WYn&s5As$$j*+>mYZ-c^{m51?Z|wN4``InF?}uD{CSC#JxurC zJM1LGcJK^}60yWhM6_S4fGsa(Oa|>r6%(>qGqBY|y=#Xw5+3x4B|<^t1bO9aX=xe7 zl?1&+?#1D*&u{mdK}qlA?xWMU8S3E0EF0~VvUwzH&L}Bo3*XpZDm&t?Jo&zN1FK_$ zA`%_WRVVFh?S2eUa&QwtO(=*L8b;|#i+Bn|t*=6nRst=q1fKoA8_AAxtN?v|;9Jhb z%*edvIk0~Z5_x165I?L<|NDDWN50!h3fMBX?`;)~2_VBOlq`F!F{+Bv<>-D4(k6tc zrR|1br+DoX0IwCjSwpOd5FG)@vFt_ddn^&jpaRs;1a3muM4VJkRNjeH4mT=ja{HD@ z7EH;oc3teU1~SLP4)(0gyIK%n|lQ#?V$D7CmftczaqZFK(C zMmbxpGE35Uei>U6<_Ua((Y6*yTJnZct#M>z#BZZWkkb3eE%S09hzkE{(`#B#M}jM*gtUo7YgnXUPx~)lsWLLaJ5| zP3IAw#YaZrLord#Y0PAAI9xI<@K8oh-Ih0uKT%jslnF&ER_TGlVTf5g)QxqiXWv%1ByLB# zPqf|wELmQ3oXfZ~s^+MS^Nwwi2@Rd1nkR`iX?#~%yW^Wsi3_<5J8I$Q{@l+E0$@iG zOA+3BUz@W0GYGd*_h$)7HoJG>qrPr6j2Z>>c&OCJ?Kr8@Soc?GX3|IEm+A1+`>N0I zSuTk=d4-vACnAMJay_Z_jap$pUv(ZQR%Pa=~D zFlsZdJ{AzQ!jBT$V_K(2QJ>ms1wT@^v7^&js5*m~?<3Do6ewCA0Sc#q;!DCDp|4-W zJKgv4K1w>t7rgoCg#8>F%s!7J0zYhX^D(&_Hqae1u!j44sMY;O|7SX^u!oC-v)xAS zv=!-ToZ+2`At%+|8^?{q0O3j6BVZS(aC@MoXVmlKI_kM`^2$YaK3AXg#qmkEfJS^5 zCRhxaU<>TwgS#7oXfLA?bBzE%voB9;x+&HxSX|=sHyg%-vEQ z;7aRo#;Y>gmnYwZN0)(2huB|3qs_00I)5H6`jxT%)8vLJoczP&D#0!UE_hqOEHa~M z6g8MoP*wrHW`K9y@rcC?3E?wF1?xHA{cz%t`RYkH2mP+LZ=Ss2y|8~7m zY_WT>fA<5bmrTPl-7o|RVvlKs*YrHyXv(KV>FnZriUU+Ptg8_IpY2R^%Ge~c98hV>$FNeJeiUU2Zvg%qY7RsDdH zk{%OTTuUi;A-{>={j5J;?!%uc-S&RbC+R>G)u|seWC%PTDYkrQVnNU@hFrZrwrfdL z&6+KMbLcftNy))qssM8GIr5|@u#J<_bTbp`HbXkKR?eu;)aHG%2w{04jUPF0;ZBzG zK{*Qy7ht0aRD%I~X?*DntR9l>ygV@noOQm^`vY$KcqCbqXOgPI>=(}ZV!`9*_B<$# zFi%%b=8ni8dz}wIv`ggs6A!gA?mnlL3v5H;-H1^1zmL!QIz&rFjwBN(PGO*AVn2>~ z%&kReUoBP9{85xsyC|&_K7q+K7l}j+ylkl&KoqavrW}v|DFQB|oXTzW{mf8x2N#zp zUBB~4(uB`Or*A?YacrZB9iCAg2w9QtaH^YrbuStOx`@#jo@6+<=BKRNwtmrCBCYm( zp*&zy=Aks)4VEfO-)hP=g4~~Nsxu?Xd zieNCKE*xcI`zoW@7mcmLbcK2YmjqWcm1Pe$BX`}(jB_l&v2d^^s(a_qYsNq9=Z`Y% zfhL@F>$$ySp1z#hcJkR3nllqv#obHE-5E%Mm$MO`@>Yp59c6qUSq*9xT!_=2{XP+K z>kMmne@1PN0FemIYDXT+!l*NRer(~GF1GdC@(tU|$1&vOD{w8kOgsOz5UP}fuG2sW zDs(qxJa4?#kJw`n!zx26>zPg!>5nJft)^;wH!r>uv&*5}YX|J~R?f>S;aPR*C>Y$( zII_eH5=l77ypfxr+iYxCB~1@!YF>mec3;I-Y=REVx9=xhIGS0{lMZ&fT#Y3cfnZf_ zQNrc+mM(2+Y+lS4KC?de@7!t?Sumn5algEYXuEz%H`#op73V%+&0jKw3&uj&br8|5rkit9k6?EXDU&!TNDxgOWWjEdX&={SuQ) zF7HkHLAU^Lyfk*j4mA6^!aEeLdX0x4d8%DY&Vt zC-*wO3%F`fl|{|ej6*IHS#;X&^;F=DtQFP_u36PxJGHgEyIo&mW$@Uydp_a%R-$#^ zGkRK{6&TohRydlfM9eW)CQ-75xf-XJV(p>poZ{94xC0gd@-Yl>r_f{$*8+15w&YZA z7LZ}lx()pp6M5Zto7{i2Ys%~%*XABK!)cQME#KliqYF0#4YXg&TI@Q^Ze$ed``6R0 zR23i7euTP}ct@x3`YZOv6FzxO_Z-jK05r3_ z?hJRk^fKSSd*3zm-z^O_)U8Ofh(RwvN?e{1l%}>(-u|$f(BkqLcLHf)XG164t0%NX zf!=<6)c??~VeOHrBtU568wEErD-izygy$nomPWkVjeB(xt)y&@UxDD)l>|W#*fq2Q zXQpqV*&OAwGdCcH^$~b2=fTr}su#SY%n*CC&vn4mEGVeA9hRW5^Sww+9psByt0nsR z4Qdoe%uk>eeSK%#Bss^Zd!L{4QnERr-HoVrR2I-Pcf9=+iQttnXV{E&45(tf1&Gu6 z1yMABE$r1TZIy+#nsWbMas7BKdm?v<@F9$AddcQjv26$j$l$=x}0b`~;d%7t+2V6qUa3fQEL&YcVhCu$u;t`b(!!)Ze-xLLI3^zo@ zher)r!Bk`l1PZJ%_gm{B=b;P*&$2Ifpt^gY+CeM8d-37LGB*h}3RMN@cv+)3uQ?Hj zbq6M_$qD5$+Vp09%glSVPp<5HJdT@n7fG$B2d+z1k2LsPLS<|1aa2&r;)sE?AN|${ zd%Ju|bh{rTT*m2OKQmtftKFIM=Fz3VdaLW>jtey4p7;nsOH~yS+9|BDJyFF3M{CwK zsg|%&v#tbfHe(o{<+vRxU+?vKK#ZUS@95x0`F%PgyCU-Aa?z(D_6cSO41ed;jo-i2 zfK;B3f9X!-4x*RS9%Y=TSc>FFe}zc&^r^`7aw`q!odO{47>qX?m+r`JQMY!bjS%SC zXX~Co-wWD@wm^OlHpfE*4Cq8gmLqmOBWp;hhtPD*a)O;|D;mH}Z?ZFZu}~oOt4L+q zY09sD1r4+z)oPz8IXt)B;I&w!mK(G$z_*X#J9H}|#JJlDNme&wtbsiDD3r#VYF7K? zZ^)Y=+Z_p!A3B68Fl=M}lgmk%qQ|2wo<8v26*fOMS{_;*DORVrpnkGhCl^U!NGS2O z1wwKy_#nRIBp+k)LG z39(~wea)Su=-E@ty6*Jo*J}4=a9Cf{cYm?Yd>b^#*bKY}G@5;_a72FSQ99*QfnXsd z?nXoP=0d2>v%i3*8~S{oQ{NG`?~jE0VZ>CwR}a1heE_!3MaG>8M!jMo^rus^aT?}+ z(uQVBrwB)wAj34%Zkz1^0i<3)WC%mvAh05+ax!-txPIN+Ce#NE*zsm5_UTYFjiz9E ziZ8fQyNm%}WXCc=6@ZY5Fl~zcPxi7ke5r6lgW&Phgvja{mgOn!G7ID-{cQ6~Z7b9x z@cDL2Zj{!9WEhonn)0I+g=WlBM7r4MA}H`8YfK52U?crp7PGb^)dXqx4r9AzY80CF z4=X*??GL#}0b2$&KzRTy3vXlMoUNFEuq|$0XUE;uzr+Wr?lw5+{-4o zH4alKppYX1YRY1)r|}f!IXiXF6}{Bm&aYrwzlQRmNCyG>p0Q;Qop!E`Kil<5J@k6^ zOD-Gs$OMWyhc7dk=yBH8)FigNaMH#EoZzl??eU+|h|G=le!t9zXO^TjDA2D%)4#~6 z_|Wn21qB2KcW%?}1>2Q9X{mh`w8p0wU`2OY&ewGb1{pDxl^q9rgD2h~gFFEBHhr5a zMZvTQjhfv=)w_zY$wpgN#IRLlgl_y0zJGW}LkhtVpymFSH@}ZC7zof;^-8-91Fd-^ zHG_EE*lbuPwqJtzfhzvYWRZV2Gl8Ex9q@n$ukZ-7WZ7?VbD0u`GbJVM!irv%xab3& zYK8PS)VLTb1H!sGTUDJR|9JwKXoemFOi(qB%JIOG>pBIAm4GiICKHQTbH^>uF4(Th6to+S>?k%3vCir3EKdLvx*nH9nr(Uq4C z83Ne~BRAO}awOw6-M_*YBsEDPLz^z%UUO}L|TU}2J^-XW&c zSys^|4bGF~$g%z;tn$VK4z`inL6@2bd^ctY{1bvW!2We50_?+znXAe4zh+|{pa=v0 zb}CQ;U_ljkXPK7P)y&1xEJ$U+D9vSO-s+YlNj<2YqK-%Tf6wFOli z*Cnr(aiSzIGvi@&PIwfNe9;xyMDXLAs8zequsE(fc(4t8pPSJe56z*%7Q8EfEqE-m z-(6w@amDX~S9?z|mCg*rfT!jiSx;w5aWJ@WFjP>;hAOGAu`DzT`eZ5XcP_kdpb?EK zJ^Cq4mrcz1 zG`Ahbvr~L-|W zskZABGB@hG=b0+_ORGF9!wdoiwvK1w*lI@|WJ;A_NCXE|y>!7S5&4seM;!(Zhnw~* z8jlrgT5-Eyhs^s;mZ7%rf*u+V6jW!RiGH2K8+p&G~F(u9_NK2)?O zry{ST2$P9%MSimHM(TrPks1k%y9Z}M>cC}&kC>y_1~ce^QY|WU2LDktcHDqGKg$lf z;{)t)ZG?NUeoj%!Dz=<~V5e)6XybYw@XWg$P37ji&uq{D7P7YN?I90jN~s z{yjfawPL=k>|lJqo@7t6nc7N5gE*Bo-PD`@spdn5E+3Lb8MS)#mlKOj5Fe3vcD@mL zrIvB#ezPAKM`aV$)vd&33M$r_4zKwxg{k8TJ(8T2TbP3zip58&PY0}=?(XCeHqVDv z4EGxMw{--~SErdVRv3QDQX0IHD4+)Z`OzUEvoYRFcJT6RRPpUenmc4I^0P^wHyEfa zCVP|x4n!+F^wdW0{X7?_LgDnG-l4;`%%;?do!cq6(CiHOWX^aqOQcYB(_+Es^cypv zQ*eu|ZpRL_w-sYZU~xOGU|C1B3L)xv<(5xkPq@&BvkCINn}IRDJdoPkxU3i(!wAPE z>3`xu++XlVS&UeaY+lSly^bRd${JIVkll$XRt1R{ar>+F2S|GxWOCWaH*WkW6w;()%l_Wvi9iQ0Vi`jF_AKt=3N%e(jFPINXdMU?8?g%_L*Ph>XH!qPI&1P+K zU+|m0(k4GjMu07se||^NpDp1*JM{uHnBX|XSeaVK#hxSj(UGMJY$1-+LZd6BU*mb- zUAzE8-;*a^nFt+LiL43AqjCXEoOFs#-vSKQ55lamv#I6j+0?DB3aDFwyTKn&)@{ct zQ0$2}){bZW#(om;u@B<=yh4Z}WNKiFHr72m5S=+AxO7S1Xg%bHDLU>t_*}N>YDc<5 zUcFW(W`pvFgx4BbRb{86hVD#r!+}p`gWve8igULISs~?CiX?(Oy=H=Y#AH2G4Csw0 z7PTK~S(C>3Sh3xuuTwP88|dVga#E!B8ZHs{vIguR%2q;`{>%E|15z&&>FTqk7qgW{$KBi!E0&R1<5`Otk6orNOH3kgst9hhX(zfIH;#Qg$Dnh}9G+`iq=Ac< z6bk!@W@Y}1E>4+sQi0r)nnAS4YQB(eZp}8pp5eKR{@<)P7O-9kuZ6_7=SlMqdK5T7 zNC6>Nlt%%<*Bzz^(JP`bN;shgg*%>2u-uj}@&*WvTRweWfE%c^p3-Bi$hz)T)6|p^ zGuUJ`L%bxKwv9O}815<%6E$L+G;YEsXpke4R(PDux7d=zv+Ob?OwEy2$=hK>!6Mu7 z!T|TxmQxTDd9A|aA%;6%pSC9?mqeG(*5?mlMTIePCuX0N>x0!FD`eWI9+;ucuI=B5 zjVcu4%tN>dEupF|0&3cg?2wd*a}Ah=m7;uFu5Zu;S9;%zmxjd3z6z+Wz(PCxlHXZ(tIWzszp#>@J5qU2X z)6qM-a*93Sj*2@ZWLCN0%`FGg>$0ssMqHjJxLRli!G?#K|}o%zT7#Wb2`_mJOiGA5J!!3 z_Aupa%bx|HqI@3ylr~{f>hgFj_8>mCos3_0Z7Ng>S##9VAsxQqnYR%{6v14o^t1JvwRzFXxS z=9mT}Gf7l#b3&ae|491fg;~xcMk9;8Dm(CgAwN#MI>-bAh_t19*490TgBU0!P<4UE z7sHc!QOX6y_ZE)Z%ODuzn|wrdFBLnDGrKs>li`>78Uy&od8Rnho1r7ocY0*4Lh**wGY_;4LfogD!=_WvDYXQx3JpOQ4RbzZWrr7`|{dB$RvGth2`LMSP zHqiNT3v%a9NEGv%-eNR^o)l&TG|~A}=}32zI-|ESA1ASRNbIM;z`*qR#5Amzr{S}^ z?xyJcva}W!E;S`AF$sk8X^t5+g+AfnFZIXUNCd78$!6C8iyWgOjqgZpTRFrer3!!_c4ByD%N6GN7TB$f?R;PDF z?NOyar03IZxHC@bnSW?UnFl>#TNb7lb*n7k%+x3oO6sDtTY^M3LE3#U; ztF5nQIa!Zu2N#3u9}i!Kw`zX4xAs|_)4!_fOZw4L8hO&#sQ$ECxlIC@8%?~4&2haU z6<(L{bh~+nb*Q|!`6i%b)u3JB@cIy!@Ou2WxZB^E_a^W1#yjw~he z@b=}eCC~b>P?+P2lo`~!3__XvqB+}qcZPjjUD4rl!A=8|hnXp}b(M(R1TV8{w%YdN zzCCwc9Yn|6fof4;D+{9+0{ygXsWK--FWNR1MveQM1dj6(qfoooQK)!5{+w3gpEYMc6?Yhl*rp%kdhl-NB_O7@-E0)D%Ihzzp(0TNl4FLtB;;jEX7zfu$xfa|xZyS?a z4$eVm=QMm6E1cS-VSpK^S~$1h0(k&@8;z7X5zQGjURiafDGV0fXSbW|AT@&;mvbJ_ zbh`$7U4`yk&VuWv&R^FzTPNfr5l-(kMP+N}j*GgsC2ap$s75$>freMc3@t|0`Gb+( zwCw3Ndpbu}I#9!R`=fiv#fAea4;}GB{mU#ZP~ykvz=2O(p4 zHX~X(T?D?*duho>S|8etRG$XmC%EX{$;mlnA8&iuu{XaYH^Do+-m#!R4~hnUHSr+s zC+@F&XDzQ51efCNdolm?Y3C}(WnV)T;sWNcQ(>3#k>&Z-b29nL+9mT}mk2hsw@}Bw_5tC)D3a*(A0dkaIgJloj<_0Qm-Z5_8MHMwJpuEHCUa z&o(MfcA#&cu1(!q*8203uU@@`AE2C}SS-+Yk#IbH{I7Bg_!n5T zieq|~N^;^d143VrqT9Cz07J)xAiD98WUa+aua<+0ZW9#w-kT%pf)lk91K%|6Z*UfD zeGLA_tXZ3zfs9#?Yyz1`p5w$mRWO#ctW7C|Azf@~2a36#MO|W+mGgzOK+ICvuM|+i z`dgnfe76s#4W%N*c^h^wO9Ve}6AUY0iE|2ipOA2h-;fSo2SbTa4eHv|Wt>#rU&P&AVArq%eq?Cx+#5;1VQ>~5?E*;KS)1ZkUB_BsR&=&;uwhOTN10qq z?l-1QTM8A9USwzSeb&u9)ZM|n41558#xJP*-T*VQS_t--+ycw-f?jDp-0R4MbDg%P zXBXBCk!GDtLl3RK)s7>n5{_->(J+QS_|fh9Vm4D~dO)g3l8Md^4twUM`4lELtjFbo z?(%qNzrr|56Vk@84ni(UNO?ttSts`Wz(9PY=48F(fitF%{tNAW`%Kgm(Z=GHr2*GB zDoWmdU#K-VJOU?w`L?Q&u&sdcwb%riy3LopaP}CDz&u7MxC6izl`pf75+C%c=M;U8 zzzCNfGMb5#GJRLyp(^ZtDWx5qzqhk>Aig~{3)&;;)dxLmOX3Z<)B5XTBZ}2Yt9o5* zU9XGn&u=LI%u4x(wUw8!TBLz)*-?Vu&HOap){|A){*oidybQ@WVDgR8`h%o+rOFLYc z?UP3?!zW=z#?2veUaDFRlnJ&;rbBN@QkQIfvbbK|?$QgUksal3s?t7=TRyihDtwg| z=5+R}+NDciC^56fq}O%Iq6WJdjm`M)P}(5;)jPB--TL7l^*G|@q!(JmSJx5sMW_92 zZBZ)+m(FSm9+P;<;u7d%wcRbxMmaRy#A)qrvwQCxGU zq3u&aMdLjat{x~tf0nh-s44Wk9B?#zZh82#5)oUQ0eFfJV z)yx<$2yjqSC|-`1>*{;CJ6AOc*Mm{UfNq|(h=g5q#gmC3C^Ly8<(wdOnrPAO+{3!9 z8lWk&4P3;L6F3*98#hNApwmPCMZpouXt5cnT4QTzku`&|<43}Z6ldjpKkw;r!uyL% zP%EHMvz)?ave~4)tzis(JD6XC45KLCE z@@-)(PS(GYrZ9Yp>rk*@8dQkBC7@YW_fAcwc``sW`VtjTD8{foT2IJ+ibj~`NOF+# zu;Qjv5!=7XPY0Jy?dm`X<+fQa7?4FNK6?cb-XNS4FhHMadH{) z>Xv~U5=~wwuy2hCljpi_)AptL65?=%u|eGF>tLQwP1NJA3)a)#(hm_2oI@2YshhgN zGp#HbNO8%wqM6O1;F*-mou?!JlgW|b#HuRLt2fV_*7N0i>aPof>@{8X&lko&b0K~% z40ri<%YQ5k3h=`*Dv{`>kW#E*Ovq}UamRc-9<<~j|NbbUaTDLt7cSASav#<9`SIsA z34XZch$C`9HFxmy+(`HhS0V?Wf>K<=q^RHXNcPF{cPyfT+SxMExlcS2(R4c>Wmzv8 z;|8A{4>ZN9oZ#ir&w~cP^f$Fron?Dqc14*bv#>+6#Bq4D$5iI+r+L&M835>4TR0j^ zJ?vMVIRooC!;bZ|VWTT8QUf#b^@HTQV9jWyKFwWldx;B^~gKOBnSG)KRZql*-$* zc}}cpAtkl?^oD+QSpft-_C9tsc?^Aj?Z;5c_2!v5D<2oeZao)@YCzVn2Ltr- zTx4i1D{u~MWS;ra=PNFibiBE}@dksBk;!>g2aSlLEto|m1ldjMk9O|jj;5MOI6p)J zJwCS7`AK4>xXVIP#oLGA856}GHY4k8R40k1FrhyGgBk2Kv-|bMQ#u2_{^gWk^7Z}C z@&5eq zmyN;y_EpTke3jzuSKsU@{fHLXLOce~2LdiC<7sPVg7d&vX8q2mf+zfS-LCf4z=)!{OhI=bJ(KpH%tP zrSX5hZa@1p{(2qp?)(wXKf5;m&sYM#fL{L|@$$biVEko{{6FdRn?38-DE_)!Z~Hj@ z0?qNx{VyTD@x7SZy%phYv%cRV@V~B}|Ax~4<`nsNA>MXf`z^%Fhd&kK7YEK;#ou;5RxL(VwILWq11T;BR@(e}g}g{wesc9P+mczopFn zjY;%sM*nQMe{(5`(Pn3Qu#^0Ecf4$NFGO2F~w0;ZX`I?;YXM+4P zC4YzemMG~rE*#IF_t?*HFTr3GmCT z{2lJw4D;W(GU|Vd`^&Wa9q!v~tlzk)ug`OTrtfd_@^{E@Q*M4E(;5F~$p0q+=k2U| z8xZ;p^MXEHvdHZpLf^4QE|Nf6!n)y`R5peyt-xq0PtRauwS=})30X-0Qmm^zm=z% literal 0 HcmV?d00001 diff --git a/packages/domain-events-infra/package.json b/packages/domain-events-infra/package.json index 32b438f37..825fc288f 100644 --- a/packages/domain-events-infra/package.json +++ b/packages/domain-events-infra/package.json @@ -31,6 +31,7 @@ "@opentelemetry/exporter-trace-otlp-grpc": "^0.43.0", "@opentelemetry/id-generator-aws-xray": "^1.2.1", "@opentelemetry/instrumentation-aws-sdk": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.33.1", "@opentelemetry/instrumentation-http": "^0.43.0", "@opentelemetry/instrumentation-ioredis": "^0.35.1", "@opentelemetry/instrumentation-winston": "^0.32.1", diff --git a/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts b/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts index e58882a06..dca1ad6a3 100644 --- a/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts +++ b/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts @@ -12,6 +12,7 @@ import { WinstonInstrumentation } from '@opentelemetry/instrumentation-winston' import { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis' import { OpenTelemetrySDKInterface } from './OpenTelemetrySDKInterface' +import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express' export class OpenTelemetrySDK implements OpenTelemetrySDKInterface { private declare sdk: OpenTelemetrySDKNode.NodeSDK @@ -44,7 +45,14 @@ export class OpenTelemetrySDK implements OpenTelemetrySDKInterface { sampler: new OpenTelemetrySDKNode.tracing.TraceIdRatioBasedSampler(0.01), textMapPropagator: new AWSXRayPropagator(), instrumentations: [ - new HttpInstrumentation(), + new HttpInstrumentation({ + ignoreIncomingRequestHook: (request) => { + const isHealthCheckUrl = !!request.url?.match(/\/healthcheck/) + + return isHealthCheckUrl + }, + }), + new ExpressInstrumentation(), new AwsInstrumentation({ suppressInternalInstrumentation: true, }), diff --git a/yarn.lock b/yarn.lock index d5fd4c54c..67166385a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4355,6 +4355,20 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-express@npm:^0.33.1": + version: 0.33.1 + resolution: "@opentelemetry/instrumentation-express@npm:0.33.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.41.2" + "@opentelemetry/semantic-conventions": "npm:^1.0.0" + "@types/express": "npm:4.17.17" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 17dfb5ba508380a855a136553b5cc1f0abbe0220b272e358b6753870cd979bad5e1b7c45dad36b2d3b6e04247687f3d54cb295d3fb8e62b1f82c6947e70f4caf + languageName: node + linkType: hard + "@opentelemetry/instrumentation-http@npm:^0.43.0": version: 0.43.0 resolution: "@opentelemetry/instrumentation-http@npm:0.43.0" @@ -6023,6 +6037,7 @@ __metadata: "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.43.0" "@opentelemetry/id-generator-aws-xray": "npm:^1.2.1" "@opentelemetry/instrumentation-aws-sdk": "npm:^0.36.0" + "@opentelemetry/instrumentation-express": "npm:^0.33.1" "@opentelemetry/instrumentation-http": "npm:^0.43.0" "@opentelemetry/instrumentation-ioredis": "npm:^0.35.1" "@opentelemetry/instrumentation-winston": "npm:^0.32.1" @@ -6807,7 +6822,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.14": +"@types/express@npm:*, @types/express@npm:4.17.17, @types/express@npm:^4.17.14": version: 4.17.17 resolution: "@types/express@npm:4.17.17" dependencies: