From 8491eb2bf3b002d75def267ab876f1641bb014c7 Mon Sep 17 00:00:00 2001 From: wangamber Date: Thu, 20 Nov 2025 12:34:12 -0800 Subject: [PATCH 1/6] fix multipartform --- .../transcription/_operations/_operations.py | 2 +- .../ai/transcription/_operations/_patch.py | 2 +- .../aio/_operations/_operations.py | 2 +- .../transcription/aio/_operations/_patch.py | 2 +- .../azure/ai/transcription/models/_models.py | 22 ++++++++---------- .../generated_tests/test_transcription.py | 2 +- .../test_transcription_async.py | 2 +- .../samples/assets/profanity.wav | Bin 0 -> 629842 bytes .../sample_transcribe_audio_file_async.py | 2 +- .../sample_transcribe_from_url_async.py | 3 ++- ...ple_transcribe_multiple_languages_async.py | 2 +- ...ample_transcribe_with_diarization_async.py | 2 +- ...ple_transcribe_with_enhanced_mode_async.py | 2 +- ...ample_transcribe_with_phrase_list_async.py | 2 +- ..._transcribe_with_profanity_filter_async.py | 6 ++--- .../samples/sample_transcribe_audio_file.py | 2 +- .../samples/sample_transcribe_from_url.py | 4 ++-- .../sample_transcribe_multiple_languages.py | 2 +- .../sample_transcribe_with_diarization.py | 2 +- .../sample_transcribe_with_enhanced_mode.py | 2 +- .../sample_transcribe_with_phrase_list.py | 2 +- ...sample_transcribe_with_profanity_filter.py | 6 ++--- 22 files changed, 36 insertions(+), 37 deletions(-) create mode 100644 sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py index d27c4861763f..7baa39bdacf9 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py @@ -109,7 +109,7 @@ def transcribe(self, body: Union[_models.TranscriptionContent, JSON], **kwargs: _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["audio"] - _data_fields: list[str] = ["options"] + _data_fields: list[str] = ["definition"] _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_transcription_transcribe_request( diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py index 566e04dc7148..078a4b7d08ce 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py @@ -57,7 +57,7 @@ def transcribe_from_url( options.audio_url = audio_url # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(options=options, audio=None) + body = _models.TranscriptionContent(definition=options, audio=None) # Call the underlying protocol method return super().transcribe(body, **kwargs) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py index 55365191b6fc..0b1835a4223e 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py @@ -89,7 +89,7 @@ async def transcribe( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["audio"] - _data_fields: list[str] = ["options"] + _data_fields: list[str] = ["definition"] _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_transcription_transcribe_request( diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py index 904aad284a65..155d18ee0e17 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py @@ -57,7 +57,7 @@ async def transcribe_from_url( options.audio_url = audio_url # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(options=options, audio=None) + body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") # Call the underlying protocol method return await super().transcribe(body, **kwargs) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py index 810ec6ad1803..f407bb295d4f 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py @@ -247,33 +247,31 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: class TranscriptionContent(_Model): """Request model for transcription operation. - :ivar options: Metadata for a transcription request. This field contains a JSON-serialized - object of type ``TranscriptionOptions``. - :vartype options: ~azure.ai.transcription.models.TranscriptionOptions + :ivar definition: Metadata for a transcription request. This field contains a JSON-serialized + object of type ``TranscriptionOptions``. Required. + :vartype definition: ~azure.ai.transcription.models.TranscriptionOptions :ivar audio: The content of the audio file to be transcribed. The audio file must be shorter than 2 hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is - provided in the definition. + provided in the definition. Required. :vartype audio: ~azure.ai.transcription._utils.utils.FileType """ - options: Optional["_models.TranscriptionOptions"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) + definition: "_models.TranscriptionOptions" = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Metadata for a transcription request. This field contains a JSON-serialized object of type - ``TranscriptionOptions``.""" - audio: Optional[FileType] = rest_field( + ``TranscriptionOptions``. Required.""" + audio: FileType = rest_field( visibility=["read", "create", "update", "delete", "query"], is_multipart_file_input=True ) """The content of the audio file to be transcribed. The audio file must be shorter than 2 hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is provided in the - definition.""" + definition. Required.""" @overload def __init__( self, *, - options: Optional["_models.TranscriptionOptions"] = None, - audio: Optional[FileType] = None, + definition: "_models.TranscriptionOptions", + audio: FileType, ) -> None: ... @overload diff --git a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py index 2a6b1ccbbf8a..c4d1566e4f74 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py +++ b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py @@ -19,7 +19,7 @@ def test_transcribe(self, transcription_endpoint): response = client.transcribe( body={ "audio": "filetype", - "options": { + "definition": { "audioUrl": "str", "channels": [0], "diarization": {"enabled": bool, "maxSpeakers": 0}, diff --git a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py index ee6efaf9e133..8995fa03e924 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py @@ -20,7 +20,7 @@ async def test_transcribe(self, transcription_endpoint): response = await client.transcribe( body={ "audio": "filetype", - "options": { + "definition": { "audioUrl": "str", "channels": [0], "diarization": {"enabled": bool, "maxSpeakers": 0}, diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav b/sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav new file mode 100644 index 0000000000000000000000000000000000000000..32a90083dbd927df333560db59e233ff29b3ff22 GIT binary patch literal 629842 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
R(#_8qD+Le4)!`tKXZXfsF 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�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
R(#_8qD+Le4)!`tKXZXfsF zF7M{8VUwRbzsrGnT&YL(nN*+V!+dgP+`RUvhWGz=Sq|>v4MRK>_twM4tM0{SOnmg> zUaaig;alwaTE4qxD`_l@cXk`o*B(sVKT|fYa(c$#zL<;ESYn;|m27>Ge%HCShHY`j zUwpYYZa&+0y2XCi$H!f-Hac_nTZO01(!V=bFTH!QhpXb}FI-{b|H07X)BWO1e`}%ZvtIT-`^CC;>_L0d z-z$>yJvMIQyjnOpDmJ*axWt)#hPR}Bx8t~4>HW1miRU{pe<$aA)7EO3_;)S0@D@X{ z8YgG0Y|(#B*vQ_4k@x3!=gRZ;cWaE%sea0>G4|jo&c*mZ^7h%bwyoJ1#p-_TJXm;q zW|s{()S5a{Kl{DT{hsmF%2}!-&{4gef4-g z8>~BPso2gsG5$eX>+7v4|Lx~`ypnj{KF+OY3twkWjU_v`*XG5dvFZHT9K)i$C|n=m zE`IBu*|YW$!P~#1vy+YbwH4meE+59Msh#Wh{#@@qKiLQ$Ug6Z}@O7RK#V(thGiw>Q9}V&u!rqXlb6m@c_eq|L3zA8 zhr*?ghwazziLHFXQ!}=CtVYaleN_{u?y2WKoyC&g)@kwaQ_Ckk(wz0-XMZKmmz#XI z=2@K0hnX$1_V+sd?3r_|i6Q*1jjet<=C&EHWw)5B-(oA*;v>y(O}Ag_x29X)y6Pyt zia*<{|M2+sy|LIg#;(PKi}GDAja!!=`r7j0`epF=NGH45ZolMX*SF^Ev$1RG#DB3F zE2s7OZ7-jDIK6r{gu*5caV}rU=5{%zzp^!PmzUP+o6k01o9lGxnd>a<+;zWevZoKf zy1J_^wqf1eZv5GzCq6Bn@3;zgHq*s#`Y%T2WAhk?##W5qacXRFy*Rl(#{A1=KIoq! zws?xiGv3o~*cLCH>aF_bJm2XS3mp6;S5g&_RKd| zi;H^WY~&|=dOlAq#_^npHN9*Y+xfLcXGQGApm)!nH4i4={uaCIT*pa$YxuTb+H1YH zY;XUq^j>03dySni)E8HM<9hx{c*0wr#i!X%YAo6P6$iVvb!X11n{@T3ud^nqi+p!3 zpX1Hfn|BU-m+JSe-jh3*&97v$^Lcx?a3Qu8W83KMy0|i~xrebhTx)FNLq4j9$0_>$ z-xlIf{;HX+f%417YxPw9R6DKP{#kvLKUm;?3E=uD?!6Zuj&UCE&v%#h(A| zt6_cP)z;aUKepGdwe1Hsif!X+O*Zt~?(E^ToXW}Ot9@B6<>j?!ZML%4y3_9FG2J_z za;&$e`*>XLme=CmoE3X(@Pa$}mizr)qb|(V+7s_R_7uV+*k9!!Z=@Tov=NdTq43plyak|7ktZANh_addB#z zEr#^!`CVyTZ(RK)>7~OL2@gN`!*M(tD~5P+eCE_cRGSzmmYBesY}=d97{Z}nf4 zZ$64?edpKM+U{BO_?G|pp5M7xJ=H%>%*UrOcGx>@8$ajh(6z3;_uBpwL#>$0i~N;K zef2}XnEAse-D*QUxUL4wCE2T1&RSAa)zfJQuJWgchrMh#=j@xLb5H-QR>M($+G;;` zHn%TN+b34I*yPum)>}t+d7zU$*VdVjv+dg})o{7f-<0Uf(CSn}`qr@3zFWJid#Arx z*sA8M%d@YB>E@G-XYtWFML^cq+-Ix$fVKLh#|O?g4|v9LF%{`EZvCZe=wnn3? zxi&^8$?js!MzsPXDgV{T_HlJ*ce#Q=Ge$Qb*=EOhxa#R^k4WCu)M>l{3i^Di*y#8)J8{5-g-R#i`Lw)N`AH~17i0c9XFJ3BjazF;7>ixMv2{&XQ=@9%v(_`--@`p`J%7#7%a&_g81H;)Pi(ET z8y5afU%S`h)|#_r$m$eA%T}J?uL3gbn`FE4S!^tIpA5aa`!vr<6GY2HJ8X2~y%>${ny%B8@4Ng|2WzJ_^zG@Mldg^BOMmL5tM?4ve=oPsSv9gJ zPBp{cO8EF9a288??(d|S?zl*wPLhu}FZXh(x!09hA*Pj9i%&3}HXsfYK+ z=gz%0-9&wjC3o3Co&?BllH z{Nsdr`)SO4*zPcei~lecyLmexZ*Bu z;-L7OkJFtGbGYwn@PX_tHkiY`ac3j_`g9h%Yvba@i&*=ev*&2#dFF@|^Fr&tA2>d)L^VFLuMrPGT&f6YloNxi9F# zQ|&FLjVXWh^R<0G&z?^9tA(EV=N>w1YwKk>TfckFcQJ?kW#IZaai#lAzj6HItoQlz z-5sy(?d{{c^XRT;xAk&-*Q$$byN4}a@j{A+jn=UJOxV+`v;O2>Zsf_H+I{A_y>|Bd zzSrJ8{|zr4d-Kfwv)VA;oOSth-M&ueuIHy%s=NBdQ2obee9*l+OZeLJq&jTbbS*IjJ^Jn{0(A{Mj*=go&N=J1-xLG5`5; zpPW4K#V=0riSP1qmsexv=`Uy5Sw41NjH{Ese4cd`j%Pi6b+dcNwXte$ZL-5xd4ffA z4~zM&H{&ql3y+(>YQX&2*es9r#%jjyIBFb5`0az>E$>%|Fo`t4gBq*GjXT=5ZC z@q>$Gb3^Y=@22^D;L(grcbv$Vy&_Dvo_l+t8a~#o%WIauz94z)?&y{ zSm@N~CasCprx3)Frty`b1$-aKqx!$?+I)2+Hn>V`6mosDHJaM>R3D;sNU+JZ@e)3<;){wRH zLFU*_?riKB|C$)p*UDpOy#0Gf^%sWINB3fM9do!MX_#jQZ z*1^LTyIWTDeVc>Gz|4C+gkXnq=d)zL@!|7PFflIVO!~Yy0Y>^VI!0pYOZ5 zYODIPHhgD&ElxV&6U$2L$^o7=I>mAqBj1bl?i${{=k)vC^38t2$BJ>7;eaumaDEN? z?;3XEgWvVteLRJ&@p|hMV>SHj8am;wZ=F7SYoqn_i?5mzD{+6uY^->#eOJu+l!Nk9 zzU1|p&`-p>&G@;_n6`1jRxJ9(9d=`l<4Vid%gvkn_37GNyjLUanOGo?MB+*v7$c_Tg}Cj1K*{YV9Kf_c=Iiuido`WB9VC&tG}b^S{1b%ZWVMH|-ty z(yY;38>9C)3E%z}UT&LPJH|9N_^vh9cynyA-}%Z`Ho`5|;x(qdIC=AtO>-;xcvIuk6~uh96xHHI(SwC)d3!?CEDUD=kSCh zo$^7aoV=@Fd)BYb7w7X4rtM*c8;2X$VrSERy31GV+Ap4^?~;A5agOvp>AX4LahB6N z|6!>{HU|31#z^Ni$yTw^t=7a@tm@$|)@r4CX-(^_=^Ql1{>EV}o#lhxVk!n>@lchuIpFV*vYZ`Q%=6Ku{O(vxolQPu$hf= zi1T96*IX|SYu&HT&hwppHctC=ll-mTsbBo?tAmxs+N1W-Ytmk|?&PJh@bjDR_-yR# zi|6d)sF?I}m2CdZ;UT`WwKmLarw(0XcS1kE&-}G6pWB-|ZG3&sf<1Toec702TC&f- z^I3VYS9}I@QWup4m_j=~Pdh`_;{!L$B2jpUdg9I-++ct$hjR`gkq= z({_9mPcfbQ#ynl?%W?irZqo~^HP*AaT*VWgD{&Pz>)9&Kvxh^>>Qy~>UiHkXKB|kb zuDvsk2}q zFa9$}-LLUJ_R8I}wp!epi|buy{qEQJ zT?}2{VO)K7Prv0#{_b)prnq*!`KGTezs~tRqpfY;IMJ*-{lUV%W=+qGa%D`Tlh8GG z`bgJ&ewN>OC_npdy=NTG;w{~B(p>Xwy5=X|<%B-_{T)Q_{?1M|tFt&3qb6>)&C}JF z!#FA4Ft|?|JJ+=KgY+loxL%&uwsDPJ7^+phd*hne*df))*_+c|7QFd*8Mr>qwbf4V z=)Gt4uGM?UIbN;toy~m0E4GaxKI3;|3a1!bCtu0haou?RIsfdQzFMfxJg=)Y*FCq@ zCmZmHEspdW?D>F~o^f2zIVFz7NjHAtgssH|)BaZ0K5O4p`)9vM|6JiC8ftAX;qHu4>o;)J_c_3r6tt#|z{tm$O09F!;h=4yTB7bbrAJ!{(iDR|&_ zW66ebE!=RCbN02MTdU&*dXDnZ#+N7*AF{thJU&>*T&49^&GaIRi0D(tO~QSp8NXM z5nD0DH*Cwp`fmT6`-c80>=buAG$y`sFK=DHtAAwk?Ymz0<(OU9>{Jige@%zJwc%Ym z<}`D6aWpQUxQwH6x_N%BmO7K}@>b61EcbiPKM7jco^iE}yVI_&!V)SuYHxX&Zse|jESR~}q1k8HtHe&}iW(7z14`EbAO zoD08RYo3qz={(wfhO5)}+6bey*0sl+ov!!ZUTeP@SL<8f<)^)8j)aH)+T$Y|iV#}{4*yvEiqJ>w^r zR zI_)*b=W^`Y*y`u+{7$#n?sRq@PQ0AIqpZ!fL3g>0Q#$Ozw|sS7EM@+TN8Bq9W*+Ze zcQwdPe5AYF#Ce$b+ZwZ$KTYr6{MK-1K{Xln?)lSBU&S20^C%hcUax z*-hLxX5IRF<|iE6@4L|MeKz^xBOcT-Y9wzWs!Q&%1NQ+*{4}UoCz! z>z_|!+1{956t53DVbmL^4@dtE%hp^Rg~@sxl%s0F{YteMSL?HDzQe1}Hk<9e-FI=n zc~OUSyvIEI9?6z@;+j6J?7_0lefG_-&yD5Tn(Fs1{_LK$l-;%I`owbTHE*0~@map; zh~X|b#TVvy-!pZ;ljF}BdCnWhsr4(yo=JN02itNI=df=pmUOo-mN=@e)vvR&XLh`p zuf^Hcy1Dfi#>KYyvQ@vhjq#Bm7)bu~cevITU*-8Pr)Otz!@0J_hu8MivwcVpC;J>Q zmTi5u;;tGku5_}qH35V5#k&6JZQZONbLW0H#>d)Y-`M&zuWfENFXmuAC5+prV@=H% zofB{Iz+}EgKi&8+rp2M_#_q=NFok31&TBe+RJVHe>BXaa-`!JBXW;%BSI=GoZEMmY)pavwMO zp(D5D&vkh^apn__;=Jo|+jnQ8|_)FrizVZ6<6L#Y;wrBKV zH2zHJ(6z_B8~Yu?|6Ux~e>c*1kM^SbmB#hP`+Z}7ljzyD9Ci&~Tozk=K3IIzsIg)` z`?!p=*X)&}a@<#;jVKi_hbF6^$g@W8a(-1)JFl;;-%*9ToKTjGdwHjQiaTU(z^ zeVmG;eb9MZZ(MBFvl&Nv&3LvpSL^5Q`t;pCs9$dHuG0&r-dMV>?KgYz?)z^0^==Pa zx58E&lml^Z4E)kb!r`7CeeH#`Hy_>07e1fW1a)*vkYxxbE zI5xJsYdT@Y<}fD-uJeK>GhFV^c-^OW z&NtWk57M7DaQZGgaaI2KVMlKaN6s$s$IIPwsJOFdUA(5h{H$I%pr2T?`N+3<`nA^5 zPgaM|VhiJPX{_-({%}|=?z>;L7{_={;*VXvSK!$ewlIa~#FWjoRj!&_f4koN>ZBKr zxOBgG=xOHhOx&++7*>xi9d^Qpm-csD?lag}JZ8`OZS2;Om{uZ zIE$-n8MnT73~^-7b?+qJOURyE>8-zKH6w<*c#9bx*kHV~VLjdU)49&tmCY4J9+=WA{^fqTJFl0AN5#MWd{$R4&aRK*ESAo@&Yd$R z>tKzyx1PT4Zy2iw^VW|#s)o#oVQslTZfP zIpVii!n3`(^2kn7uFraT&F&qCxWdWFQ}^<8{zh(W_cz`2%Wr$AJe!Yuz4hkWW2e35 z>5%60l|A@zP=53{SWeByp+3&zqr5M->72PRp5#NFy##lCxVDC$#ZMddt%z= z-rU-R)p~0eE8Sb!*@*4g#p1rp&e;c3ceDQaRHP&i4-P+$h)Bm1_I;O{W{`BtUMU5xbH{0g4@|Mo_ zt8b0=SoL<@>hSq2?($dcFcSLlw)XS$;`Gf&dik+7f7!dUdD^fB?=Y!__GtBQEWFi5 zxUE|s9~AR5tZcE#{`$=C=`RjWd-PToV|kX_o{g@{{q}TEe#JJL!1@U8Am+6 zHeY<{;;R-<+w+0%_SS1Xy_457AE&*|rM1l)-#HlB3jZDdjm6iqd=-2C!fZSnuC;WQ z>z9c)ALeU@U}S^uGoPE=4|-kx!@R!Z)))-So$D~~oc#5UsP{hEv)BLDxo7YB+!fF1 ze{->OCl~3(>-N^Qc4H~VY!!=osQwl^{42dn)3ugue%pU>8kTZp&-UIVKX>~wo%21- zJDK;ibN%`}ueVOko%Q1W#JZeq-s1>o#_6%2-P2Zc;_R%_SC_@vJ7?eB^v_~lzQSF8 z;i?`_e5bDYt($n-d|9*D%U8BqQ*Zo~=IVFe7=PivtIx$*UQT`MwBp}$?b&*M!*t@v z7JGLsn~RqozwP^TU+_`v)nNIrrtwQhd|LIkInC$x^fzzC6}N1`$4=+HG3)4tr@B1* zv#ytac4}dY+pX1;<9x@7HP*w}`4d*yweXi;V|-i3-ZL?Owy;_gURah3*KpI(_^Y|k zul09pjTJW?a);44y=*LRYs1=bukW>OT#KvD@cm6g3@=J=J~k#kV2OunbkE$ybmDf; z2Ak!n9wt(Qwb-pA#Zq6)*;5KHudxU+d$vA)d|Y@|KV7 zi#aanCvmg-@48-Y=*IPlBfWIO;l8=zjW==MHS^Z2uVUD~`Z}K}`PLWT9ftfY=Edt8 zXY8xpq~|aHCl7oYqvQG8e!xpp@mc<8Wi{rTK?&mPQd#DVyW*BCqI zPd|<4gP&94n=X!Oe8gou%5VFp+BOyzdZ(PZqJP)2YhOB>yc2sj{>CHjy>mLl+V^lI zY`_9T+=_2wc3;e!pZGJj()jkvRk+u8Ifg?!<87?9V(DBKU;j?5-dOL~+gr!RU9Mgn zUmq}pXX_`9aG}Q3T2d`nlZ|gJ;$ZE%kE7=JDF5~0S^d_%)@PHQ_={Kfagd)=hpsU# zUHBJ=>+aP6Znkz@;~-voKgW+bYpjpw;^&ipxk}XRnfJa=mE+zWt9SZj>z%!A*{?Up z|2AXI*BjGTuj`Yq;xljk;>pIjCT{idLO1{Vb1l7e%d30-)k^!+_1evMKAR7>c`g6> zW!sw5uCe?*PLFqgZmqPR)Xvt^*3mv&?yk@8fDphWCh-(Yd=^t&(2Ea!Ts#Gt{*`qm|#a5fAXLRA=Ef#|B&3 z@BgRHIc=byt+b`8SoAI^&jn(LA)>vDNeC9XXj}zi?Mp(n97{nZhXCI#@7jaPC z?0neX)$@PaxwE&i(@)}mdvo+PF=}yx9~|K06ytGkEj#R>7)9AQ|D#u^t-IcCT8=ApP+lU@Dh$F;GIch|Z;eet)AZ&I%68&4Ns+l)VpAEvN} zjV_yO!##X-i_0}m&DC6ot3JM3s}4O!{P!jP|G|iBW9oG=J;TOdzSvK~ZeH%yz_a@3 ze5`hQ&-edn-21+<>Z)^g=gu*6#`Zj{X8Ciybt#6|L>!u2=;_91^@FcdmbdaMSMhZA z%UiyT?Vc&`_2=30T8+a;-`TV8tK}QU1oq-_Z5-Ycqx>dYtH$omi_R(Yahc7{L2>iD zJmP{Fhc6zU^>nO{@v%)QpCL+jfY^u-hZFeV$va!@|? zjq4lFRym0u_iXaVZ+P0b;!$7D;%|D%H@igdzB5@Ju5`ZQAQ2ne{P0&iCr0C26Ru%Q zcCHxI*4CwZG*)c!@r=8j4-YPOpA}#E-M(C_5$n$w!nwUT5;(1aPrh)ZZ9b|G9GY7{ z?5vIAWYc(lUh83tM_dy3B;3aAckc=R_a$F-iQc_&^XcB%;vXj1&w48^@o#;^Nqp$7 zE&k%m@Al7liJyA5P6-1WY{tVK&vdPSmb>;+Iow|DoVC=RF}{26n}6t=f9Rtx`K#ZE z>%Z!fkGkZ1*ExOUM;)_CzxSu!m3od;>v|ZfZ#mNBK$8cuXAB-r?(kRc>1r>A-h8;v z&fWTIsqafYZ;Y3haxFinw71yiN8?&NujM8V=@9xWY_KJ!aNpHbV{kkZI@J%1?1@8s z#ohigo=tr=U0b(yTz3zzII1tb7{#=4u#se+PaMZHpLZAf}ER z=IGtURcz(37}>PGv&?U6y~E(z+#MEvPE4y8)^c{9lbx0RKbZGBR=Ko3Sza64e&=1A zgDrkv!Z~gk}8dphc*oIMT_LX?6AN`(ZkLq}QRzKDxcv@*( zZ+vZ6pV?;>Z?KRWeu`ggN!-LAee2|f9r3JePIlb2IqS6bw?5dW2dCJJt$4*Imblx$ z2Z%K;=_Tpwjj_po_`(buT=1xk@~J;-h2BdbZ(?bUy!Y;@WB_shx<4(1`BNJLa&vp_&a;+=+G6EU{=eQx@7m(WNwHfm_Sb5$oZ;Uy&3lmV-RF01??}Bf_Ux+;%T;x>HBx=x zXIph=O+t71!3U1wY4={-#@X`Jnsd&5W4lLi02>_qn>(eLU@WE+H=X9#R4?iWU%2aC z6PJlG;=TOjxA)6>w%Qw8Z(m(#!Yd;k>JC4 zJQ&9V%&>19cl$~Xtch2>`w!Y$TMj$x;VplzcV8`M?G-w%mq+((@S)z-{>C8A{Nv!1 zyO`KfBYXC_*G?|u!d&Y*uUg+3#RhSI>ZH4U>)0h4&iNFx*zGTZlej3xxYZjgXD^1{ z*ovEYaG$K7<^0(-|J5KH{1mUaw$`@h%!zel{Ghc(k1tryxVK*7$QWJN_=JhL*4PlA zbF4ks+1>fooPF6|>^Vo*d3c_K<%j<}!QBd-@>Xt&(Remo8^^(G?OdBLxNu{?6`y5cUrNBlHTX5Nq!esT%Ud1@_9-em&2|9 z-sQpr2b_0tg#|C=qrB%s9?PY%6N`J}r=-Wn8Qb3DBL6V#UOjUewzzS>T%Ol2hTp`t z@xh8ayy@MuMdv&pKFGcb&$C$J%J$Z5XAiD$Tt1iYlUMiY!e0z*bNN z`kgnnIN;%*&bIPl3?{KV$9m82xrOsE>xnV?bga?4H?Fa{_Fo3yd^877SaE9)B=H9O z@_Eje6Z+;nWAyH=!vi114nj3lu8U*OuFhuq@an~FyqM3p>G8uSTrd#VVUdS&7A|X+ ztNi6NzQe6IrqOL}e6q_A9Qu5kKXvZr*{i)cdGpcO*_#gAa#KCf=a;XoOWc&R^0r(p z{#|RGGqdl7)*5?M%G=M=R=)528Y8j- z4$5(7L3uUj+Pu0^L!QAskM-^wZ>}+Gte4B`qud)`Sqvu*Yqm!45T~#47^i1V@kRLG z8svjKtKp5~jE9}I#W#%jE?@fa;y-+wbFsbF*xcCJ%Vu-U=X-0S{L`tyqJ<~E;zMt2 zai+g~;fLS>xAJJuRu}ztQr~YVdbOmEtYM>lT}-g@8Mfu0K7U(7?&-kHhPdxyKe_5m z*5l25e)$ep+||>m@kx(=Tr4ivTPJJp#8Ta~&)e(b2v<4ddpW|%=@%!4imhO z2p^wvyZL0#`qj;UF!kia+>ec=c#L6gDY_#4>%<5HFJ7#%Re57>+a=B zUhGf%)PD6_i{I2&&fh`fwp?eI|C8tP7d}1z*0RHYwd$TNYih-3Jb%`wQ=IgSg<<_} zyxFL)?(@qY?&WiHYD^yG-1q%{vvzOXe0gzhTPy#5E9m!c|DM*r;oE=L=kE=E52u$M zwi329@xTagdr6P8r1AFu@>-nnZqE5#&dc$6R`U%5JYrf7{Qj}On% zxwjWxmy6=4E~|C+?$%kGbk3-u_P2fMTdkWOU$3=AD`iAf8bTzIFR3JWoyLv zoh;96#G9U75{GB*!_i*Ynt@ZRw(-z;y}#`idt;s9&h5mRZampD{$oD$5NE!5c5sI4 za=5wPe9`HQ)Vtr@TPFr_%DH_J*Xpra)4Rtdj@7STKIr4E`eSd~V%zHzr*mipPK{l- zzCF9)J#o>q7AM(Ae|_eM-pT2%E2jJx)8@`K9AeePTOF(4 zvxeisndJ)tcq?tV?Um?>c^4Z(OTh^Hq+_(K)dhTcM}%r=2*mXYQf-wicGt z_={Wo@0o>bI@Rj>VQ2GNURFO}#@Lo;=j|z-#d>ovyyiO`*>4~4)3rHz;*UFg7^k;2 zWKH_kWS1Ts)vVrq5?^Or@Uy>m*>oS*Y`AXk!ltEXKKtcFpD$ePyW(ZO<&{ zc!qJMa}aKlj(Eg%{-%K|eDwZJzq}Qbm^XLj&)5pR@Ug+acG@{PG;f`8w()ZE)qR}t zyLPN+r{i=su3fRjY0nNd+H>IK?u;v+a3p8WJ0qKit@A)nA4a&g z@kKN^&$hU$5jtTkPGjQO{k*a6eiXMk&H6Kcd!B7g@3na8iMP5cukw%>OR72g$ypEa zvGEn-&UI~Wg$yS2qspDlLch%U@9hVzWa_{J1o_0>66{dHd9h~C=F4qJ(_ z)d`DvjgR=&Z)+Te_J%VT24|}0hTlZ|Uea$RJxli4w9hB&NYA9l6YlZ9wZ<;#Y^iTN zU444{4Cs3IdGW<#Ht8DEstcUNRe6>_vNe^?=COHWi7}FmJ3DNpvo)yhl4@!9Pd==N zTMRG3Tp#kfF;xp^Z*7vjyFPs9ehII0q5a|-Ub@zu_VO1N_t|g%WS5;dIDHtW7bmz4 zpLHvAcRj4(vq7`ACGj3CA|3yxBJGz&JQV$`o?$e4s&|endj?S9fdJ`^iJJ) zuiv=s_s35Ey3ax5oey}?aCCP@*kkr+d)!`azp>ME)%fn|uG`!6@|iDVYrpek``+v5 zYOsoPMf~!KtHeDH&C$(goNQkV=Xt_cwyPI5?}VNv#_ZwAb$l;hop0OcUw^JGH*o-i zShq&2)9SLmT5OM5v$a%g^=!wRnD7@5d~PkqcjJpE|N3fu^TLn&Y%~|Y&4rbou~Whe z>zU_jP7K*i|E!_rv(I1g#GSEnT`uBhIfF$r#%?j{^KYIF&9%0ex@Kdg@%+Ne?&c*Q zbk5eg;$>T_cGchAe%`$wuMhNZ_a&S0r_YCL_|&3vu-^up-&-H?L>K4g_S~$F=w*Mo zIsKc1(LOA$&Ln%Ry-DXao{EWm{L!yj$Ir&!o#{zi8G zJ=;C;Z)5(?H{!oTHKyjQEtcX~{$2AM*LP($lihGXY1Q zndh_5xY}KR%eQ%QJ}=@`zdlY~b1V5V#-<#42Ji1wcfYrY2|u`!r>z}aR4dts%bK`x zZEpAJzIVXj9{%{Srp8{j_1kuQuf@n#wfkW5>wd=VGrKT|U9C8;)LH+2qP~AS(cg7@ zZ|!VzZ=LzpsM-Flml{^jf8mK#>-zq?>w0^ke>=nnpK!h=FnT7p7@4Ay>wQ!&$e&xR)gYb58vsD@02~~T9e&Vckk)Y$5-P1Ztd!d zC$Y{P%&?cE@?m_XGqK(rOxX|r_F==NR$f&;-Zv-Zp*>Lk@AQnF!sf0mpXJm(g#nf` zc6DlBv{&My@%GEJy+t2y@z}c4X58Wp2Ceh&>z)Sh=SaMCHZIrXu|wYfNf*ENg8ky( zoA|xu{LQ7`|Igk!>+gK#DJ-2=F9BU2?H#os)~%W9Mf}yQT3Vg0yXu~z9)S1x*1$-~wxos+LPJGotd1|J?U*XyMr08Eah3a_5+wyYHIbi_|FHN5wt9&+H!F zwb{@c_dH^s9ll*Q69_}gy(7GABWgZ2&`)nUB9{hswyeZUY7wNkwN z7nAF|7C!4*TP%1HKfZ8`TRBxra;z45r>Tbe4W#<1cGO07vF9GU?4LZt8aBQA@RT#- zVih~y@X`KqZQT61w)J=Ql#gmkyw&mIbba!%@$FuVFZ1abTWPM|-15{u+C0#egZAcf zoNYS0FSD6FaTJ%>wdM8XwEBEh+}qDRyW~Las&O^DHC)Y~-?!;lQ{JjaeO~erhOJka z)h%6i`d-hUd*ju0y7^Ee=C-*{jK2``hMUIqnmwkb#_{8tFLv37wc3Qg?=?MN z+#9D?OCLP{`r(69Ey^T7>L;1%a?WRCBO+6+CFYzR)rIqluKB<2l5cy-Uw?^pAA5=aEmY6)u(zM~ z4BQ%QkE$o}&}(hyn>p8PB|B#xC*qS!xt15Tu=&~gab3Rjax0(yrt#` z=K1cu6$i%EM70BlYd(#4X2B1uKC$1#`7m_u=*6yPYVMnF&bo3z@8nNh z?KS!B+8VhLzkF(HSMK|L-9F$i{^_-*nBvwPJ-BejmYUJK*Z9u{J1`hC2RD8G?NPP& zEiS44>^VAc@?#CV#^F`3boI^zIb=)ko=yMFs+_XJcXilVDIevge5xaLO1BvKhrgPz zAOH7D{*OzlJ?nes(JRL%Kk#>UxmJT>KXM|%NreYlQ;dOGywlkJ{2@~VdP z{5rGkq5tiT*h}t>i^)3rY*de(tL*b9PTb(iIpA6E9YC+{ap^2---yc^T&jQE61?L| zJo1Cb>MDIYd=b}#9kt0WuH?GsRQcXK<0hW;?g^c{x%khn{NZ9b$sZj)tCC~Ud+WnP$69lp&-B^NcAUx;JbaULKf}ph`>`{l zeQ=(?xFYIkb<`Fv<13!+TQ&*&#`%PUz@#lU@seLsAjW6KP=@|Oy#81;?9+w28qYVqxNKkI&{}itm$=cF zE7+3!>KoH{4+B5)CC1JJanchLOw|vr8r-{pY_ThEUj+*Q}L0wu03qHiB zj~}@3-`Ql2E}zzEu8r|yeH`)4rDhBV zPt+Z8R+^V%{@HeIj4r{gIXJ{xy~#&8kr(6mfK!u;_AnmcV#7R6#A=+tON@nKb7@ZO z`qsE-OCAW@=EdDw_KdgZ;in4=J9yigfa}5F+jmoXT7K(a2Colz`NUhbXuq7i<5IqG zVl6+_gg9V@g$=?UyDNN&vD$#weCLC8=Edl_>I{^V>Q3+89Kj2IirKZb#;a|6kFGv_ z+{0TA?8oMe<3A4S?Je*0zLWorm-tTZ{T?S84E%TYxMv^VV#J#oR=1w-_NjYw*1@O- z<=DM-I3yZgij!UUdR*cKe!{Rl&@lgfeq_hONU?n zaj72C*|Rqce2K|DfmNLBrO!UQV#A4i78~2<_~DPh#ZK$lg<0P5s%I+>t#wc6;jy}O zPfug7oH=jc!V#Y^>De+y*odpf{5Ki1<* zyztS3gOnq4oh5S3K0j=*35T=MJFM@6bggF}ZoPFl5^w$5=cByH#nz(r*3f@s;E@9{ zYH-*a_;&7CYfUj&iywQBj=f38S~k>1^N%ORNB{r(6y7)yt9;@wp4rgi-#M6VYhlhm zZ1yn>IFv{EA@sxzqgeQ{9+&2EgF`yjiqCwtXPj?q;d4(vj$mRNZg{P;|KyGieL94F zjh^vphJEW{Gj1LZ{E6|bOJg`Y8?N|?kKPSoH*TK9HNRqV&la2f!f9Mw))|v4e4Tq3 z7jTl+(>D&c+P4nhazRgwaA@wuL#(mZczDV+K4Ear&)Tr2F+BR6#xsJrHm1=bHS72< z2IFvvpMARg@hhidDYy23b*-_EJ>&HH-q7ANr^QS5#AS_I!9n$dGkdo>vQ`Z6(uavy zqwyaGV{~ATQ~vYKrd(`&szr9JgH68l@K}cnHi`p3>IS#O`Z%KxCtaB6nXmrY3M2b) z!gA(@9dmR}5j$>iP2AJxZ)+E4@hY}r2?H*y7pr-g;Z^r%OxB3eoW0S$kN4*JcNVEV zdknAe!>iYf)3G=C(TwBBT;s5N2K+CVeB=_p3yU>f>u?0WdeK`0C%f%!{L&+?Nx8PC zJzvx;K5%3`EMn96)8CC(6Xv(kwLUv+lvBQ8(99Fp@ZqUv@aeJvi+J z*s7(@3~TT}=!=~X0#7mF&9$CQnEU;mZ}G9oH++0H&o^Gxu6HDQ{K=*F0UWW*H@$GP zYpprs?Mr-^YhU7M`C-RBJ1g+JhcBLBp)1e*jwo;9QJa3FwBI!I{;ud9$r`^~{*RZ~ z>zZ8no+B^tn)`1r`JXPqCr+%@o9{PJdq~46-?*_i{_G|H^Cj%d8!p65*r10SP0is^ zU76FY!CAbC2?z2jPwhSP^!ZkgY>1EFKl4Uh8#5E>*c^&G4iW7 zjssktzum!r8+OB`ZgHUI`ddBw)x@88?@zqD5{+s5}fdFJz)#?)lOU) zhl4#nVZ(>@_*Dn+(PIy8Ho_sV;#0$FgDtU(!EY~Yi4FhNuw1Dvwah*a@C&DXMh`yz zt%Y0TTi%W7`Ic{WNnC5`SR?1=!f%cBFwzsZc^KN`{KEyanC)ZYTC48t8#w8kXG0GM ztoS6>;HCGc>VX}6<3o&iwg(AJFu+LQHqVE7e#B-SJA_Xd&D-bvxrb5C_@XCfe2AAH zak9e?8}9kygPv}z%Dg$aaKyG;b-t(<`#`Oz zd-czL&xFo=>pffae2W>!dYr;*PHZsahaWiLi5oqC*1)gPp)arYBXQ48cB=vUI5m$C zvEfNi-&pJ9O8tw;`pv!Tc(xW#VwF?4VU9C(#;m;K3iHehClU2E}PO&6n> z;umH*Y91Gw*qxO)b`7g@$TPX;GCsw~mc|CWY7jPS_^=*kc&Y_!-CN6sc*Ma5%*L$2 z6&>?xGN1AeUwgMYvQA#`s~)X4*L${cw%F0*NnX^Gz2dqY;EIIRxOmttf5ij4+U4Io zJ-Bgj@-Mz}4qyCO%U-$SmmN8`N7Pv$_zons>Icfh#)di-^%!HtY#@a3W@0 z(uYwqp0wxSln=dlG=4QY?FIa@&EKhGEj?o1y0h_XPA$SI59&_rY{NiYd*0wpPam$Z z-~k`z=<-cqlM{T=l?(5_c*c`)dHu*GY8_VG$g7;eM+Y80_*Ap<;l08>gdcA29Pshu zeDUrjw_=8kANxHY*2;lciW^ow+dpcu+LBMU;gds6tbF1Of4Gt-cJ06TePrS7zwgG4 zIeP5jqFCdR4vgOA>sA4)gqJ#_*sn zId z@GUMjtmUVeV5Y~XT-nDkh=<+2%h9n0&uqzGYx#~>@mNR107vgM*2%A!%<%)SxY)JN z)Ug`m&;I&Tm-xLWzVlR!bnt=`HPY`o#$dpy7{m;}-{98ecb)_y~;fD>JsVVWm!xw(lPR|f|#F6@!J9f6#=;9r3 z)f5isTgM;nV8NZ5<)bsEJzn0#+UDG~Da?VpE)Q zW{q5Y{3YHiU9*o%&mel$7JsqFdhY2vuf@c^d;Ez_!HW}m?;r}hAQ-Wk+BE@Ap_F8O1Z$QvH{MXARr@!KPN!gx~J|o=fm0ug0vC7d6oN z%a=OAkD9Q*^>S#;9B$N?IQfIw7<+OUZuMncyu`Krh%51l-F3Cq{w_DpG|vlr!FsuX zr?W;4^gAHiVz5@jN4bz&`%j#F!6m17(z8eKs!rH+F70`WOS$yD5w~!&$p$X*p)UBu z3IFow%<#S_PpuaxPWiKr{>NP+w_;+?yz^V08lNzUM?S=iGgvjX zt(MiBdc}=!+?0Wf-M=|0` z&aJg)#pu~YRV) ziZjw#s@~y~XLjA=9tUjj2MfIF&%SqN$^Un_#B;&5T4&FGA$YjtORV!Z9DeNw&uX>)cU>Y6<~)zoDBJwo z1N^HEzU0VSoLc*RE^)?thN=~HE*8%$^(aoZ)D8RcV-Kr?fAWp+FP`6V$-i~UmtF#+ z`c?z{sqx=?$sfFgF8}tIT9Q-qUw(<4iR+)gmI#0lEEAm;Ag-e&{7Q|LyPn_V<4ACBOL+@v#3rFTpV^VuJBAF8OJf@M|7lzv7ag zdx_jQ)9e9fhx)KLoC#_GzwC<1UJ{c$ipl;HpJ%hZSFKuyS9PgQ;!6F|*Te6OvES@_ z`{%b@0@ts?}^9xYA<@u;rbuHRRpa*2mt11Mdd~a{m;CFO{EL@-?@O$K(|UEqr}K(`;<*hI?!~Vj)UO5y z{_H`$_^p>$dtTh?>APRTH+#<0Uv~*^|IJI(ba6n-}~J6e&Z$fw)&NC zwet5};;dq)T;R~T=gf1Cdj>e?Jdfb^?&_@J*E0i8&ILKg@uyt!Ph0|%_g&-8n_qj0 zGaV1k0{f-EWy6G5xYRBzp3VQxB|rZXJxtCdHKoVDvy&db_MLOeIq8{=bG833U*fD1 zyM1ks%8#1${IKVp&FtBac>WJBf!Dbr4{FPK;|!E1`SA>p4>iJ$GpqM8T*-rdEuWqz zJzLcsedi0CcvR^i@r?O?m&m#O?D_2Z;~ZsIjXC?}^|LSe8z6856K zq<;UEOX#Sf?|F$@`6ZV)=RI@bv-iZ~*&%K`8*}FUxJ!P}B|rHR^@1mLBDci(1*=>+ zx1D3o4(A9C$`wGrdH(0Gv=3F@@p>nrI&o(CGy+* zqx^V=h{3gUQ2f0=sWoeU#U;P$lAnLc55B~+K~31hY6NC>otXEF(RUr^yl2j*T=HEn`2m-x5zlXR#a`dJaOT|e zEd5EBeC8#eamkOl#B&VSpL@v{U-G*z`OTN$^JiT0BQE(zFM<0Xyu@?KGsKySQ)fia z6?*o(eEjH3>_eQ3k=P5y%sB(S57{f;!_=kk#r8Ws?J3Vk9RJcwaG_r97tc$W|Jh5N zN1uNQJL<|ird-O?&$-0e_^U3FM>X%c<2$Bz6z_iO$FoXo>euta86$VjSe$*~CC*;& zRi0s<6P~&9ZOk)_UGHAr!Px$|>)GdwQs2Mm5;*^*OPqzca2BZzb>f}QJDMEZM>us} z;2ADwi9C3xb_V@3mzeWi0&mW1IlzbaHD~qDy~NpN|2db`pt`}E{eW|84Q`ya;Co2i02Bycavi>~VVHmv8&iJ$s(F^u;U3aEsHqgJ0*WcK~}tzU0?)QN5{4 z?{R9$8ScB9G2hj3=r;!EIx$X+i63_F6ZW$l`RtRb_EGEEhM#@-XMpd=>cjg9J!A5vws5RA@hmpio*Cwx({dx%&N=75JtyC6szEi5Q#^@NO{;AJ zyEw!|S1(R{S?Bw(e5>cq7%_`Uta7MMmlM9cn;5f~opZ3rkGeL_wzcrUptlBwYO6h| zF1=^l8|n%+dFi_ej^)Q%99qwpXMWi2anA*!&dk}D?N4<_7d|n2p5g@;nzPR}oOn|k z{K_#L&Oz@YKlG9xbBX7ZbK1Gsv(7u5bH^UQ9p3B}X9?T(`qs307{lqe0s@Ozy+7*d z;j-G(XBZBg^&fW$F3Y`|Py_DUL-x9OjLVA{)S?{Q*Q9(qx1A@QvvO@8*duDlo^jSW zZ@vF@HsMB`VwVddFF3#nKGX@0#VLPc^qx*!`~D&(&zHo#=ao5P+&L}ByKmT*4>>a~ zRyndy0IB>7w9bN*jTEmBP#GY_o;obAVb3={c)-w_R zYE50Kw@A9l7MyJHEf!~reW%9cOpe4Y2l&UWbKURRzE^lg5YKbxyKCRiy-)Rg_8W-zQ}39* zhx}`o_^v@d{}T7)U%f<6$M+JpJS%#ZIBz{`2n?P-@OVDUsTzS5Zgp3y2IZ|YtLGbjdcRahc*Q5drF-uyawdOr zY@Kt+*^U=`NKBrczT^6C_C=TchD(0SCBOBO-*L(Bz2uKv@~1EP%1i#=OTOlk4`1z@ zT=H!$`Hq)-+9jWL$>&`1{V(~xmwfL_KI0Por(g0ZmwbmyKK7F9sQU0%edwz`^k*+& z`%hisH@iP{$?v)3H(la;uJ5<(K?{ zOZfVj4}Z*uztbh(>yppBaYFkul=%1{*6mM_mb~-$@jSAlP>v| zmwdxZzUD7|&0qR|F8S(9{^BLy;A_9Z*M8GWzS$+;_>#Z!k`G^^|ENno_L5Jy>XN^B$v1lM8@>0@ zmwfCc-};hod&wtU^6fA2o5iPJ;&+Q5af#nnoOk^#&lzCvsyDUgJGS?3zlZovPw0Np zCBD}?L*3)ZS?RYBzZv|5OZGyEY;oX1E%)aCG8=f`2 z&**zka<&tD*%%+rXXmxE$8*$~;J16fi}}sP`>nnC<1hKim-zdR-+KJU>Gw0gSNIL# z*Ix3am;A;z@+BYol9w7)r^bKVCBOfYKYYm_zvNH85!Zk8l0SIK@4AFOn|=#{!S5~3 zKl{o%xM#U%j5D^g*0ZPQjkC+y>YeHTBkjJ!ZL7+2fuCK@L8TKrC|HOhHZ;Y8g4jTV z5;dTLf-%98Vz@DO1ynE=NGwrN5sac@iw!kF1eIVf6a@luARrJ$1VrSVUCw=f>zwy- z+;unJKkj~?XV1B28FP%Uyx%vzIoDkN?KC}7E?+1Ga ze-|7VoEH37aBZ*<+-mk#vv&w~2_6>g6FfCID0qJG^5EFu1Hs3F4+U=xUK$)6JY^G} zHT$gDzYSg&yf^qla8B^^;O5|l;DX?j!K;EN1@{TI3H0OY;GE#p;9rB+1Zq<@Vwwb0lz;zI6T-rSXf+GJTo{xc=IM4w|Ly*CxfpB zX9pJtmk0k7{4!Vd;8`GLy^2CoX<9-I_>A^1*kX>e0; z>kYTwutV^`VDG?v4K>bVgLejekT3FAzWFzSS|8tiS@7DxG4dvHUX0?8a#p@_S|G>b z!#KdP?rEvhIv-vgs2#e_5rO*Zvx0qs)=+WMA8&&72L<~4fZ%??F2P-ct%K$K-4OgT zFvc|-)@-yZ?nV+#|s)YX0&N@k?$m7m)klBD`tdfD`3TauDN_N66Pa2jDpY z+^)W^?u*ZXeB`~3Q6F+V$OYwuWpVuksJJPrrS8{LOf>op!czh{77#U^uj+tnOA=lOd~_{RQZVcNALX}zTy9d+PnMq{L!4pnAkO)$?bhs3zLtN z0UhCdw%vK1c&c73=W_4TeG~EO=)gTA@})P=-H2yu*tI?57mMY};)qymDQ{+*#;IM$ zyN(>)c;)Ekpz0oM#66AHY}M5H(pQ7E0iU_;%xx#RpFHo`!Ha^I1b-hK8ayeGo6ZGt z(USu?p8F(prhQ{;eV;FVG!RR-nb~G$zu+ywe*|K~xxv?ij|XoLUKRXB;QIFrmRBuL z{P)~d=T2<%s#RA_Y}Ha+bT5}JvNyhlgXCk^E?>L+iQomnF2Qw6*DakI934C{*djP* z@tnnv1pgcy8@wm@RB%=xZrpn5)=Li!{w8=&@WtTk!G8wd4%P;@TE5ltqk^CA1)uQ0b{U-*H)$miG}JC)SRr zHXF7JelOTEm=8=cEpHo$F>+yXQ5;a`GRI_-@*DRG*&!}*?~NUkg$a-2_)lvtDFA!72me&OQ4&UQ`^Qcn-JSWF9pOf#I z$9ygLWZ+!&RK6q+Rga-B{Uh({6;F2#jn{CaIV$+hrHJi&eJ&|mG)e9?SOdvaVcQJyR} zJ}o#iAQ$oxd-0XNh?nHA57u8D=ocB|GhCxh{lit_y*$`lTO2S?;V+G(x zPY+%nd?NU6ur~Nq92Ge4&U1I3dtq>Du=)Jv^G^@n z9h?^YM{rE=sNkx(tLEMw>>F$soIiX1>^}z&3oe|waOM>OE|kO2IlFN0Mm{DleMYdb zw6OGv;5h+q`|#q27atIOZsBtaj|?taf6@A5gZ+aC20LuRZtHhje@Jjrun;_B;Ta2` z4^}U(UVK9Ey5I}JRl%K??!2^L@W$ZGz&soGy)O7hu=$3~H#{LYGQd}So{gCUv2C%O zZOG%;k6h!*K;B`F#hyHigUk32?vwYL>w1O+Z{aW7%#j;&ajf_)zcTN3+!F)y@x6k_ z29FEa%l!lVq}G7fP7gj8d_GWnI5)T|SQl)zVY3Oxnd{4iohL7rCtnMY%#ONq&{U{26qZpkSlLk zwP7-^z#ZywKM2GKoG4FLlOrdw#yERV+_l6CI#%ys4>(IM`PP8lK09EiY?Qr;u`@v~ z8B5%3!h2%#9|UZhjfvl$lTr&(cVheEu6dwmVjdrO_D+m9Z}c3HTD>`@`Y4&QC$(6d zY>q=8eNGJjlZm;MdgT2#)dinA^VFFa1V;xa2WJQP^WL-fo;@J=$Kc48N1uqC55!^2L)y%JE&I{y)Ck5{g-nI$vnAwQ8&b)P!JHBb=O_Mzzp84?1 zS-~~I*0WpB{(f-3;2yzN!3{GvO!CW5&3tO+s9^uVyoYamKadxw=bAehyL`z#33KCb zFMoSddr)8e$kIn9Ipa->H!XfNcy4fy;Od2|7d{;v9vm3#6FecX{tv-Bf-eO>4R&1I zaq$JgX~8y2+blgZcxRyQaC4yU@Zta;(KX$vjk=G5-^{7l@ty&DH8+*_h-v!HzWEQX z5bybr`xNGqo)tPFaKAx5XwD@E=sbd6aC9IaetDqIDhL0I;5orT!2!Yk!6AWTJ`nsc;MkrOWxMhKd9J!VA9oMH zoCx>uFFwZy`6Qh_B-lN8P_R?5Wx$7VVdINBy?oCzNAgd(qqz~AH@9-H3>T|SsB6k0 z_=j~q3vxU6M%*98b7GY_kG|m$@!4~K>UL@ia>uiS3xm$BafEr3x`zD79ME%y@^?In zoA{#`Q2xjJ^r|oJq3Vl%;5~B+u|gh-^E&5b7tI~T3Ar}gkwcmvyRLj$y#T~s+r$%f z1bs4>a~_VDx2wJ42eOlok|T~IQ#qb7$rp`Lt>wJH*e?piqDuq%aE|~k5AY~|Br7^1 z8}nf?LVxMU_}HtwN51D7PtX0~L;QGUo--EDe-MbrmgffIv^k5oy>oyMapfBV^Ahz5 zF-I=$eu;6gF=G((xd(m;^des=rW2Lyi* zsKNeT@avghPx$ZCGoKD)zG>#*;DLc;f?mvN%pb&H^D=SPJqvTU3zsikeoL@V;J(VY zmcBK~`{aN33^oh!;nl(U!B>J025$|H3EmgT8-Ens5Nx@$< zO>oD+y`DV-+<-$)489zkADCO4bE;#~eQS>5<}(8G*XIN;32=w!kbWGv_s?IvBhJvXg@YHp9-=FRx$zQSim!UxRl9#{|a)?+#85)Bx13@!7Y6 zQ-gmCJ{kObaCUHguubkGi8JzL_i&C0%=6_t=4A31Ii7q)p2&~+pXW_S|K+#lU*@~) z)*O}JsD<%UdX*2Eo3eBKfy2}*-9HukaSX^!7zh3X`IMMrF3Q*Cd#=H5)Qr>#I0IimbhzFC-4yHDz#sd<+Xt`W~%$NU<<;4Hjj8xE33f_3va^NGT? z)}FM5zy2=pjHx`+XI!E^^)h_FQy~AAE8<%GN#w-u7;&C|HmP4GBbkfS=I>#!|+u5PNn%C?M4|J0J*gHl_U2ksWA z(aEXs3Ql}>fUEvAz+sOH+{+f5|2TMP@QA?n#|HTA3BeOL!RNh#hXr`*UV&JC=RmDm zE`bHSu;6LF0a06e&l`uJ63-sS2m6xSdPdTXG!R`)rh2s?Uy5Gne0~ zh4CS9|G=D&-sM`JmzQ4vzmR9jsU0UDYt5X$^AG%kbJW`H<1hFaH}YHa33W5REEfX# zAil#B_)hL6XTs579hX42n^()ddQH~?*EcsaXK_4^!$ExYh`=?}+wh23pfBS+H2fqt z#ltuXtlQT65BmPr;4Oi+)Jx@wxD+oKuj}JeebGl8QXU~Iasm7F8`o3^Wam8X=s%fg z-#GA|8moO|V~M-vr1q;H=##POWBX~YEqBA2`r%qQjxH_5PBEqW$K&PG+76CavtSpF z*N*FJSNr5amU!O$UM)n;0Jr1wJ`3c&qS$Atrfi=$pzfu=;{LD=9`OS)fgf1%iTX(W#6B@YOp`~OGspqdRLuSOn`g?*Gx?->pSpw^ z8=vOq>iBAJeBZqTwMXCY+AWY*-y!gPjC=RL4DeMs1+NsB<{kpB!ZQ~I7X-Kr*Quv{ zGf+#!Vdj>2NX~_maGPW0R`xj_oNJ%9uL;!d+=p;qLe1`uL2G#GDr$7<$L5-HNp-;| z1@cL?MtPyRw>(l^W+iyuMvQR(UGC<-ru({;$YAquuib&x7+poW{oFRCtVUme1^K z?!{NEJC+~tb$Qh^SJ`I%z~|Yo_T*yDDG#u1`GvOlU+3IvVr-Zn;^A_&>za!>euO@k z1GNXP<9f{lJ0^XxAO93R$7g*qCOn2SaEv?@kK-9RwEWckh~MLHu#V%++wI4>j>TVi zOpOy?;59r(KCWdPe3~EgUA`$d7uVz;{8HW~9|w7ydJY>fpO=TS102Q2)zisOjKf!K zfep~R_=fXbj~?lsZt34=$2m`1YLc$)nsWb?874NU=F-04i{GT~YX0q69W|M+ZhCIg zGaYJ4Y`1Y*Kk*IQm3tbOHvE}W$V=tejw1*9X9sLtjw)A`j~l-{w(}DAbIf6Ims*H6 z9i!&q9J#yWmonFJ-@)^||Fh{{kp3H!vAVW#ldC@K6aRCpyu%pXyHE==zAo{kdI8_{ z9G$$yb9H=LEy4X+&pDj9>DfKs@mD`ne{-DNQvE_*&NIc9+L9M(3+J{SZMuhoE96Dx zW!I2jdG^P50y{^QtD38-1)EQL<_M2@=E!mQ46NJUX9)3~b@deYZ9K!I-?-mBIsJBT zMPIH^0S3R1G7W4`}vne{}3-ne! zi(^24bjg1#eKs#*Lt?r-kdLuN{=**W-O_P~oCsT}vO>>Nrnj^TuMle94%b%cy7BZrsLW+?AW9^Niho zOP^Pg=O{17_F80%hxjipg612xgFM9cay&oBS>o83w~V<<&uvcAeLi;^of@w(n!}G{ zoE`%i*=EUp=+m5-Ou;(2+Fp>cZ9wilo-V4lNf9l4iBoLDm3Ye1XWQw}anpac*@t%= z&mL+Y?U$u(+SHz7S2}*Qx7wBK;YyrlUaRH<{0)EFULGCyTOW_9AF4BJk3Rxi9qrUu zi;lVDu6;Y7Pvha0uCJzz6XZf8evxNq)bD;i1>3qE&*K!&65t@uQsN%-dAx*!a5o;p z-{Kd}GS~F{C4N;aG#7MtX|X_MVg+j?z}&FPcA z(Y^k%3pz9oc2(Vt`m5gP$U2>h$+t9iHsx>h6`x(#zS^E8Thfo(6I-r5Yri%<_RG4y zI*#l|x!0b1{n0<`+s%dkf0lf?Xgk_3x@}xKo-Wt{J&pPwbyvP>e5g*H$BxPk{L?te zksisT@**GWK#ov(l?yEE!)&0k9QCLD>dp2M)!(SQUY~vF!!&F!?9;DayZxe1ZM!ZT z!bjvvet5h5N*1`av7CHx{1{)!ura`P$2w0Njpx%#@^vk`<1-@6Y z8I$oEJDJti$$QiXTW0GxPb`;{;II+RW#j_ToCYs8{#%Zp`I7k+-(d%}3HDKa(<_~_ zC4Fq1>#};D_9^TEo& z$6MO&xRq>5ziqFc^|L-Y>YF^tb|v4ee~x!t+@lEZON7`5YtxeR=>)R{Yg!amRV_(RH?tmUQYILJc>5uNnlAK4GvV-c^dVR0U z?sv>|`}H~f8OLax#xU)Jd}12)OFmPc9GCSax|`-pa^vHpFS(}Aw%cEnOGn+3B^k0K zI-Q1?0>%l|H~CJ3Y{+Vqb7gH?Tmlc$UG-J|tB=uxF&KZx&feHyxsEIg z{DL>+=xRmsbnuLlyjYx>=9J2xT=~YROLBI-+W5#Z^ito_M%(GJJ-7SnH*^mA57xV{ z$M%|*wvFTEqt3B?B^#-&)F$Yk9Pvy!=9Y9zA1iU;Mn>HDzj+OP(=}LkUO9_Ct@ks% zR;Lp}$iMQ{sNZr^ZQdB_XVpuOu^fG2^aY+0A**@oMv+`QW#x`o|x4I(xg6`;r z9@@5L+aKGW)tXRcLl(}&u(z8X7Q##1;-?giHS z84q=iGtEo2Ys-=A#&&RAZNJ>trE8OY^;g-Ae$;){ZS_(4vk~K(jzzWC#vQgyKDEJ7 zR^(NT$I%BFlRuf`O}sb_T#7SsCl1A>Y7E85tvI(iyz`pZJHP1uUZ;8DwEjmQ)6e=? z{kCJW9LKei4EQ08oHA{vJ*La?*yb?wK{wS8+qVtsFXOfz&wp0Ztz+w3_5Ja<@mkvQ z#~%DyAFtc}5@pFCDn8}gdG|r6nV7-1xFJsK2m(kwH%{BDH`1m3_A9IKL z$hfSZHfPvab=sIO)HmzD)A@#WMt}9$_4t}=PlGR3-oMK)^__mIQ!@8Q{`E-EwrcCzFW0#?yC@&)|MYlniTBB&$9HMlO2@Bs?DTaUL(Y|d znA+Yf!QUM`qk+NYnRzN-7N z|2=OU$JobS+w~pOcFCtcH@4er+HZUJ>4$yJFDlO-JGR&3M_cSQYfs~Hv<*IjpTPP` zD0i_B=T5gZ+Q{^JZDt&s{*L2dOJkcp*RC8peY}0zv)!2Kg}hfnb>R5%I=zPNPSkZuF;#^KClDc5b!cce#bFR^Sk~Q zqYTD%$1d+l;u+ZgjvH8%OEZQ66Jei_e7z(3^?vZ+3&(B9Qk!@Cv&MR+g%X;~;?bxoZu`g_~e#RD7vWJaV-T2>_*{$Qs>6YVpwV%qs znXcm)wp`n_-t+XKu&o%cG3^Jn<#9Rs{J1_I)9YKd%`RZ+|S?zNOFYqcL=R)lX$QF3FrefsRI-uHJ1cXZ4uT zW=A_@k3O@<+Ffm~cHmmBJN9E-*I)WrNe><0sM~2>`RrV6jAQRuJBHDg9b3B?&#O(2 zGV1xp!^Vwo+8^temgO+~)VZo<=d0y1998a|=Bu99bEdhja<492Q@f7qvD%*I!*QQB zM!nJBG#{1!jJx*HW#vicWJyQ0L)&U&)3#JOvMI8Ja+URwuX?QO`}0|QwWr!n_38R6 zLEqR?eW`ZEcBbvA`#KhFkEo4Jk8iXYvT5Iqr(-qF%9-x!JLU4}@pr7_INO(U*VxY< zXPa^05B$=4qxJF%4jISVcBb2{pV$xe#ql#4mY-a6GQwv9UGXVdvk{de>~=hMHx z>b*SKKHFD+>G8F%F30_jv3=TaMmg1PyR5v)tFpT#9cj0Ea(-n$_Sg0OInMU#rTXd^ z$E9}KpXnvp_|s;`{Qp{3Ce>M&(=ybiw#PB``lFq6o8|QOaeU(#Ym4=p(H^JUs2nR3 z=N7j8F8Q=?j#;TMw)c9|KH#&z%661nZF;oX%CY;(X(O*`qjH@zehcllEz9bq=Z*R> zCiYlPFNc+vEX(O*zT`OjD)&)7wiV=D8TT0bT(i2fZd-NI{kC^s+o+963{n-bjPTJS@&*!nN9^2#eMSsbI zoT|6R;xUii7>!r{Pk+Vl(qr{UW*vL`I=!^taqV06Ygt{cw5+}zS6l0NYG-2`wUyB( zMtzPtt#5WY>T;#^$sjlV>wX{UneOOR{E-W;6o>4u-;T#NH*Fs2{FR_h=Z(BjyC!da zF&1Mqe)_5WR+4SERTp$!j56(U)62@bcHo*t{k6+(@3Pyw?Dmab_uKxvX8Y%Qjx)xU z{>Wh3_k6x3RAzKJ+Q8U$_pzbEv7`Qby!QP0>==DrssGxs-*VKI z_D#3Z{asGW)_5!X+7h{tA*Xnd+&3CPRr`o$Je1{tPjtuX_@O~Wct?*u*zJJ2f zdx`bmyTW|e+IO{mcY1B$JrdwqXZH>KxsPQG-i2fw-u2?0E|%VN;=PCV>6`Ztc-KJR zE6{f#`Q9{H;2*N_UJBnACp+Wto=ANlZ~OY4@_wJ(cglUo+wZ-oE%JGMD)y;a>tmns z@?4ki9(u>ZP60d7C+|b>E~mb`#rto(2giF3e8*8ce1+b%%f|E>2jLJhr(bd!`^R^E zAD#b>@SS(>ZRu|d`u;k9ByWE2xpA^kAD!kPaSnI+6SvKY^smpiu>pP4*T$a4e8<~v zEa0;-;Au8Vudd5S$JeJ{!M3Z8pDT1KPK}@s+%6>v8(mXAL^m%9Tuj9f>Jy z(>~CKKl|G^@@}pr&iiXDa;$L}8+-EJAv_``crOsU;|sn++wXvpLDxOkO+Iwx`uxwk z4ZN$yyI*h(ct?!)*5Eq+O&h~@VfWHX&dkipY=W`e8j)`Ev~^sVvu)#inrR-zW02J$$qEE zd*8exukY5f%{%tIgUWlO=!{-*DmnVS7QZdvH@U=Dzuo0Mvfg)gLGbCoZ!vhkw%<(K zA?Q1GAG`e6$$PlpoOg74FXSnK_v(Uo)SeOiAhP)-*o?RNl<()@H=K(jTw5Q= z+WR~Do*j9bcjxq7S>CB5zR5Sd>x;dKf8^vnY3#J`8WRH>|Ez1n`@hJ84z=xFU~NN@m*2AVP8UnDjehWu_izE(+s22)M6phc$3Nn?m?Dmd=Y2PfB|W(=zQ%ue)sipJ z86EZ=GtRdz2Fn%fYtA5tuw5R}e5T*ivfP;6TsFxg>~}6$$9ZC+Yl;PIqx^?w=xSP? zK6?igz0_vtfzE7WPxjM^b$Yi>-{ddOjWK{NHYU2hxQ1hKabq`mh{485PtBW*PyhLn z<2&DE=j@&Ri`(L$d5f_b6I-h-S?aq!>tEk@!-s9F-STHL(hs)ay=3B)_o<0VVBP!6 z*n>QiPkN^rzx9qwd8zlInd`uzfp?|7GVs3mzQ@r!-3sT5fnr+yyZWv?=${hm z*uR)Y?(~LB$pOdUH8zdw`kq1ZG(P=zEwZ+*J!1vyiDNL*zVc*7$HB->=_m$9VLGFVH`oX;**ccl=ULX}>(3oaOJvhKK3MdHUptH{F{0pTtIbme=D->vZE?XL21mj`u=}ul$C7jY%HD z9>jWW+TPe|olR9|^u!ix=W;9U^M5r0zXN>KCg5Aw#OK=4HaYTVIU#=Yj#+-qhj0X) zvnBTHeQb^6#!HrTBc|XvvXgI{50IVr-fLG*&mZU*cZ((L)!5mtcG(%7S+WT>&VI;) z?%5eXF<$mXcg9V>owu6Who^AJwARnfKp%=dHM5oaFBM;uhbRGqVqR6%)yZ z-I9%CaUd=^J-}7Q=dU~^7n3)8$Fkaxcgf=d{pM@r%J0}W8Hg8n0uPGE-d~DW#2h~6 z7;!;9WG-OdK-b=}u0B|Qp(}0bC*F{2&=J|ugK@}J^aID!CHaeY#%|s5{F9&K3FFiU zW7cmn>~B(tw>Sd-8av%Mo{ix~@#vpHEPyUP={nEMG5ZlBj$MIeI(GFd)5k5vHWJ6}+D&OH#-lxpJ_^LnGWKZ}7*NN3^ zl-%S4?9w0Ga9wjXd~F`1e`>|%75GJ*bUm`?SN_<)_KXi_k=+Ra`=c+q7jKQraq<#z zllWwcdz`WEO?i$_jo(swdvDbhurm@ES!sTjJIZs7hB{(8439a7T=_X4P{S0H==tzKuKvQnyOD7aUQ+*8=V3==!hYoy+M{R3 zsNuM_@%c>leZM~YHU9cJJ+N6eL{|F9Z^c^i2jqt06n}S2IU66~49Alz@LjSaCwxVR z@-3X{e6kRW_yXSWdnK(~d0)BhY|q%(4air>wSDDRe8#xMJ;(49^A~kFbqYR%>)Ec@ zrk1DnqkiXilGv3v4E(}8TRwyr*r7P!wH;(f50!;pS~Ik9%FNAG{%9u)rr*f)Y$0P@s5*Mu)QwvRP!r(Brh?55Ag?F#vhDL z%wm_06Z4FbJZvW)x-Zw*CN3F=JOv-~MPq5d9nWsrJ)7hM?3cXpIv&Rp<`?1(-a8~9 zL-$zJ3FSBVj=j^D`6wGVM*bp}_}vl58IShOW%+`8EA*?cI3J&|Bk#*62R3GW{8(Oy zgZKx&Vvq7L_w3AVoiDfS{W{C$n{0sX;{ZD7c;!RvoKKL6_(|5}CchNZ=$DW28NNUt z&L>CmU{}Vd9_l*sGIk(;slIU$+rkTMo9*ihf95}UiC@qGIm#1^Nj#EQ;RS7YxB9CC zoX<|h57*$|;u6llM{J8<8yl{WyOAyV(@XPglTGtOuSkW9m3u&$YDayw(-<4}Y;w z;~^{8Gj?)x4qIX4#z;2C#%Jh({m9|WCDd5ND7u$R(~(?BEF>G}>J#6SBePApnfs^s zPTiNR#0j~vyh)yHK1?P!gPh2SozS`VT#p{hapWWx;l2X{zoYud03Yd}@rc1>%P#bh zZL(iu;~#89UdA@qE*q6knwR5Y=g3KR3fgCS6}$9D4VjMc6)v;H8|;!z(kHGo1~wtb z5GTlmeUX9M3mM2=#QVf&2RilpCUnde**=|EXCq=Vt`r+ON25<|sRi*p=eiDCVq^H04*h0^--dI~ z*%)!HTAlcFdLZud9eI!#Dc6^eImS5IAw6kRU&vGa*KvN^K(6EWUg+KLBj6wLU%c{L zY<}B^-QiXFtQtBy!^w_gr*tRB(tmyc>>2;lFS*&KA9O39YM;rMAM$H)Svz8&d9U%X zA93CND!(OyQ;o~m`5<02Hs`%Jkn_mljLjT@&1+vD<(_2VkAB1yb2j=SSI6^3evBK9 z*SN)D_S*bKTX>ADaEy7Fm@W4)Hhsh~@>P%{vN3HshV98y#hv~(l~_e4;-L6qEZW48 z=Jet@E;0tPAtU|ZPdI^nlau3dJ->D=xv*{WXRF#|W4KN~#B^h?oaCPPgP!>nzawA% zFLvQ;JW4KnPy6ySzxm^LGR-sCGrPvwY{Hnu3;xRo`41iF4}KO~#c2Ft{J2r<(ogo~ zTI8rtl<8!Rgx9Kf2Q=oW+Oq7grgFe&Ay5`Xej0EN>FK#Z)%UZ;e;~$=N+C z^8vQycSMYnO|xD0iL=?Z_(#s>Phuim{3l`mcZFj~CcBIrBsD5;wbN>o*eFw!8}Okqw=&O@C}1ha0zifgbp`*oMQ! z3UPyti-CBKT-k`aliZY^`2;!P6`bIAn17IawtkoJngFL6H~%6NHe}v`Tj-X4@D%>V zjbb!?yDu+?#qIJ^b3ryu@6P4>e5tu?a}He4ynwycU&JJ}1-dpa?TEqZIeuS8-}O^o zqP~D1oNJwIJZtpLz`c0CO-IITgI}1>(v#oR^ILIZDBc$z$)3-Vso1Gq_Q&?wh4cJw zoSK61cz)_(!CnDdW3yy#{A7dA*$th^#XTe7IW@Z04}EnlcEAVRJ6auFlHXzU+wJTN z4|>MH^HrY@)XwBH#)?zKXgX(8{FNN}1zpn}?#0#mMGyA#ak(wdlCP1oB@V|o_**Vb zPtDO>r<_sUo6E6tK46@DSZ>tcHe+{mj!$qU{uJBU55ijUwbx+YURB+k&W@sb^T6esZ_zQ+}= zBY*a+2ic49^oNhwjQl_?M4m{_+NN*k@^L;RN0RetUvB5xI7%!bA2P=8mimsTDd?37K4FXnmnJC>aBspmiBF>)Vs-r1Si$!|kHJio8%_r=-0 zIAZ?7mdycA2-vZuJe=Q)Z{i0ZAQ#V?$P3sv{YdHZj2Y$=$_$mbIm>rC{H^g z;GcY+KJX*GvI(|`2jp_>gDk`czpYH)YW?g^yRPr~5zmKc(>eUv{KKI&k*%>UTpw7PcY1&`U4zW|vAF8D5apiaWIrB~_u?f>er(Q6CgvPsxjYV! z={H-()pUbv*{Zm}rudW`2gmy?mXSOCYlF`itD2Gaa6Fsklb+$jJDtmr1>U3={33RW zg>26Cx|9pK2Ck(CbuY35ejs1dAAF2g$b-+bSz}cbqBl7gz2QYQEIv;cY)u>$1LOi? zwe#`I>6>IMb~=X5InF*YSRBPkc!r(HKh2lr<=Qny_U}H8*uz%k>-flZ^qJ29-sPYA zB&TA_p4( zkoTxfh?O`^oPT`ql;H3H$Iuo_d6sB%dZJePa*&O?!Q!=4v^&EY@e*fJh_1y;J$&Hxw#NsnWvj`$rISAxX*soTjcp{0N?OQ{nc;! zVmqDBkf(7puCY^NB2zYRU2bi^{>w|%qQo!vQ0W2x@&o7MFmcI#b4R{uu8GI-2$_o$ zbgq`>d0O^ME@Z-|jSJtfUvh9BdlJj!Mr=uYbfSNFh)&s8YnN@_E2H|7lTGvA5v zJIjv=*<=#XtN?eA5?v<9xm#_c70qqsyDfhaJe9>0fR}|CWAdnJ?oh94kkVuee_A znxEltI>OuRj=k|=d`BMaksUgpoW(Ntb;NV=32&OGu`#~E_Spq)VW;GVdyU_C^ufH< zweTVP;ccpC)tJg==$1}PszRAt0FJwks0o> zbl}eP4wjfF7lavYihlc*=+8eD>_=w09VGoIjkVwyQGza%?$YkYFS zJp+0&F82oMOHL$~kb^jd?@kVU_kx_{gz^gC*E1K8|B4%QChy^A{8Zn}f#mb<6C56} zZDVyE$CHUXg^vCZY_K360A?TGK;yv|HV-Zuy-?4n0 zZ>p{11Ad@3BVHJ*xd*!!CmhRW|0D?%VMXPiEq>=8=Lqoy=jwPJOiO^ ze8#r%nEm*beqI{zC9-CZV#7%R|HXYc#klm@91SPcM)~3ifi~2)#Rm3IjyRJ14hf9K zb@4r!vFYkczRI3)A-iH5#>ocRGftJi>ZADq|HX}R5VDe^kt;dqE4#o)ViYdtH`>El ze4c%1gYL=FSj>mX1TXVV$I4@U*M{uznf#6ah^68x`KdjSJzI93*o<4)9IjxmVux$U zt?-p~vcL+upSpVa>dAMP)oay-*f-sp z1Dgl2J>$Y(;*R`;&ubSa7`wh1pX0OMbXey%P`0Imw#u;3?e1uh=o$!RbD;DS3iES;wz@i{HvC)GFjfY@H7~ zj@{yN9OxLa1&97yAV%(io*4;~e%tr)19tEX6c+wmSyC zZ-*cC9iOmwv6bDiWqrace2jhSv;BO5tXzkz_z0P((U>RVOENZ}qzCm~#~ZIci~l$s zCppIb5iv*3B!)E})79w#IU7HFz!hwYP3kY*(t%vKJ|Nc68TrYL_<=ajHsr(R4dr}e z$%8 z1mc&xTmI=f#^G2t#OKM0-02;M>j#|~GhgJhIGca6A-WI)`fR4Q#A-Hg{;ywTD)u=J zXNny@)3=!4_AT|nbzGYbxR$sh7T6}fkd?UX+GJu$-#7-Ri#2=@ud^jSF5dBbu)b#? z9@>wmUCVXwZ0|?Qo7f$B^MBlld+AZ0!`HMyo@`G(WS+|xI$pZtKl&$Di^c4nA8CV* z$(Y>nBA+KiV-UyX;QU5j=bp9maWFlYQ|LQ=>7Rb8S*Z26H=vGatc~4jWyUD?F&5k@ z52btlYR;+d?zu+wM|n73b`6~Fy5c2&pXC-UGG4f;iJf4*c;U^$l^6UZO|h*l7o8}bZS5O(Gj`IGtBqtQk(oj{gEHx4A;VSxY#w=DP8h4xwvtv zm$46@?GrosmANr{m50a$*cw~FiER4dK(4O_AUATXJes_~@$7}J&6g~V#k`Ka@E_O3 z3FN44``Mz;@@ILG8lHQtp7~Jk6ffjnaw>Ag$@EPI?3RqRkHcM84xm=ZFWDM9Gge&4 zC(M!R8}z8p)> z$OGxb*x1&nAM;Yj=%@SwXOXFM*fafzad?yu8Z&#sv+RvM&;@SggT^m!z^m+6U)egF zlk4cG+y&3#0&*gQJp;8eIVPT$H|ZN)8VecdAD`g|Y@R>69*#2akz4a``X*oFW!K~? zwuwn{YU99Zcz}(N2c3$~{E&|6%eDBqeK=K&WRHAO|BR1qJD*YseIqln!xwBxj4Suki(`$~pZX0y zAP03Z{UKB9g;y~C`aSF@?tiRv&l#M{8?M9e@QZrK$1^HpurAH9*6W5`ci+GQu&aZUTQ=UT?!yudZ}&H38aH~p&3iJ?C0 zlQ!&Um)fB({=tv%r0e1+$KfdL0X_P24tu2&_R3bPCprRL%qMNPq&N1YZPzw#HYg_X zG5LhpU^|;88=sqx(F^?mex=7g^CizwAHp$orY-$7R(8kdjE~LYcK&aPSMY)D<^XI; zoVB#wF&z(^vyY6(-1wd2Ty49Ke)BcC6wbpb=J@zdzvVl%IqPiIc5xc_;2dC!#@jZu zqYX>;NG9bTcEiufs&9YS#!6>=t?`-+jIpw)4>lIFKkcv| zZIG2*hR(%BwMMzQ_COpj_f~e~s$KgnwXH3-LdJCA81@7Di4*n7vD$MUxPJF*ABWXH z@ERH5Hs|T1c#3au5FRrZ$3d31+h%E-x`yNB=H_eiC448o7_+gmbDwdXrEU78zxrb= zV0^|#Zv0am9~y3pSJvoKRBUnXmf1^zKs{>T34nm&CtZgRx^c+fcTRw3r#64$^XctZR#Ho2v` zqkP|U3SSP+39b&7gKcNFow-|Z-{22}M+A=#{xo=c@Qh%;!1j9tw+_4?^wPky59*X> z1>Q|(e&HUcS{A6syZ7wA_iqB{?;ji!oDp0dYzXFO=VupY7AEgdy=3N+nI8w|2Imd< z(aeu#E)3Rgg8iQljtm|ZEUsFd%x&b*WY1>!p!;eM4ct??aQVW?J62z_{F>!Q2Q$If zm%hIA_Tc5g{|a6f93H%O6OLRua_M!!(ZL%6`~Eg~dhpm_&)`pj7X-%!rvw)UzX`Tm z-fsE6!D9mNX?<4UovzlOvg!S<+;rz zjo%#LguuE!x8HL5&R6A&IF78u4!n==aVC!7!*T+BGdBXh?|zG=c@Iu74|U(reNFRF z_jykY)XLnWumnEf9*uVldiNmTI6d%AUC)1bHvXdEvf#giOM)KcBKpM7&B<^mZjrmO0rLwnMI2CXz~6L4pJb*!L4I_I>m5Tz%dXB>>n=@19uLif)2BH%$ei5#vuhrG?Ye#`6Fq9y&~HcOw`hg^oOXlKuW zJ>hRl?c+Q-J^Lva%B{v+N}Uv%+v^{>>91?yW;Q2}7H|0j8L}1YayRfrpydijf@T%Y?fo=a7oEUs9 zxITE$+=J$h4z37xpWl7{mBHJBR|Ss_elz!*xsL_U4elBIZ1!ifp9!?NUvS@G^8mNM zGuSn7-$FcdukG%^xy$D+|4ZrV(?8yp*aG5C3K*M++-JR$h|;61?^!P?-u;8(#fgByY^7PnY@Oz^JY<^Z36EVw4v zX?dsRKM7tO92fk1aDMQcz`Mi`4)CCOP4?;?_`p47bs5j_vO9LjzH8^~(;U-%9=yQ! ze;HgF@OApbHRdSVFc(#qlxwhcby?eOlUwi`IV+n|Blomy5fmm~8@T*|E4ckrPrTf61nNX9YBehD;3A#tYRz0U8w)*Uzjd{KNlE0|s zGzQ@w{Oj6{5qw3zaWDC~AL2eI+x46r*~lIG3^cj07kS1F!Ok-~&m0*1Q*c@!C%7)S zHn=!AJvcEqI{1g+uY$h_oU?E6kl-$XoI!3PFVY8dLUSX&YaH@${w^283C3hTAfLyZ zlRSNF9|Ja-?;eIEB2#b5IS zeQ-_J2D!hy*nABivJc-oC94aA`I-5d-w*ixV*)uFU;DklSg#4L46X`(5&SCfy(A!4 z@8Mq?crUOR<2$76kw)hk{rX_ zQ7pG^j%3Vg#c~TV%6x;}n#Yt+)imS+v|qgXJ{17oU@vKYR)N7N=I0 z#>L0Pd-v86|Cz=a@4b zzv}o&yY9v6zdv(Mb3S$^7JJTt@5sH#LmZ)dI&nSMl1sV&sGq){y2Z>EGkXPW{w2Zd zf_Df19{e=8H~s9gFS+4=C7GQBG@|k z#M~$54i0t+W`c`nFP{BW@OQzE!KpK+&g>I-&$4@jVwL!|xV$*YbMLc!pXIZb&RRM& z*djP(@s!1bg2jc!g?9$K1sANpVEuc7R|YQ&-WYr^_-b%fu>HdJ3kL-s3@!^+FRos^ zb#T+dO$$E>&I|r0xa;Cw7he#3IoN7xt4Yp&{L=ADmjpX5@3?$W@Xp}d!9uXhhFvDl z-;2-Y$Z{RJ#p#|E@s4QsA&v;ltBeny9}?K+zRFL6EoZiz{FcI#XP!KBK=3EQeFHv- z-`o?$<#G--$j9Z&c!qxE9(+SCfMall@4)FFuJPRf+`+eShkHlz2!7|Y{hr~$>)#E& z5_~K8pWt>IZa3i~u|mGVuJ~{3a%>D=%Mtmjc;Q|L?q-YnB@f~II0@IwMffP&Wy5UQ zvk1Q9gHP_9?|nTkcy{od;3)wP-ago{YQw6Z1#;kv1N=lzJIw4bvqx}HfWMy~JT-W5 zuuWhNdO;vh_Dqx*fy4QP`mK5y9uRx=Rlmi__Xoyfet>htC;mqEaxEOI?!|8LyyLxV z*Y`Vp$7=6D?DV}g&*pnJK;Eb3BBr^Pe7SXt3Gr;=9`iH2BoE#*5XbqkdphE|IE@0Tql=OcW?cjZpq2Kz%k9S%t7c|eBxX7gIJ+G?V2As&M{(# z`&MFxIjR`v8tz+}Q0!vl=$ zfV{8&J4@eLdQx!q;@OK&3ckDW-Gyfag6Ee5x%ZyI_3N%*cYN@)VAtT@!Q+Eh1g8Wy z29I3-$o2mc{3h6cVgH2>1m6oT4sf`f{4R@kSv)lOYH;_ZyDuFPTpaAay!-M8gUvT= zzTqzebA7(aF4cI{1LR8dBksx@<%)jaM%{^@$bs$y0R$r$j3c5%7; z2;v)V!uPco@?byqsf(y_<0Em-GXdn>IgY$mUaBp5qj`(Ilbyccaygu5)ja3UkJM|< z2+S|c@yO?H!7c&0t_kGfa_#;W1v~SMgB(LHCkMsVatm`zIiC837$QdDQ@TAN@NAE~ z#oW)l&GYpK2Tu#+3Z8lMop^JR`vq+30fFyu`kq|#3E%kyxrO}QGue9t&h{_N7%{n#fI@k~_$^*rL4I z`#HokeCb?1Zogbg?k%>8CBDOEuHiX9F{X1*aZ8_l2hTn++gyO1hzwfZx`{%iJMb764T&F;F{U4kptT(RcZ;K9K~t1nu8RB-R$Yx7^5KPXrooHcjW z+`EHAgKdH%XOEoZ*}i|MM&x%_j#@ry^5cB3UV8P?FBX5X_~hVo3!huKU-0$yUtj;% z!FIt(>rPs?OK{4~r`-I4;Gp2x;L6}}>mIl6UBQLHoz~xJ{qurv1iLKkvhcFtL&0Z) zF9kmic39kD@h!o2OWQ3S7i_b<&GJhEJSSK6Jhyxj-{8&O`{Bp@My_UFWd7|P68ylk ztmd=os&YEE!tUwVvnO&q`JVe1_<6VBUV+Jox+?!s3zN5t^KuVOVLL2dY!6LCN#f zn#n?aNuF%dD`&h@aPL4};K1P3!TW+wZNhtJ-aGS(;AsK5sv(M>e4+WJd5{{o=X=b3 zaIKutcyOzH*)vjVLdLEJPxiP1C#iqn8+?Rg%nkXg?>gYF!voLsI^MZrySB&i8@JrP z+>7(&hw?S?!JJ%vC@z?%nSaZL*&03t-z&hkasYLA^%Hrtx;&`K$+yi-*cuspH|TdM z&E452u3(e+jXj%-<2^jB4{Q)OiZS8}ZWf=(!FwD09^qDj8)5P;_j>$(lJ6~hcZYmn zHjpRm5cn=2{>ANLyxI!*u7|lIxw#J6(?y@(mmjF>vp>ElpT*T|3U`XHw&6pu%^XE- z{9%FkrcS3uV$K5Qua@S(_?=DQX`F7p;(lYl>)^hCxsiCw-^{)0hvtl~OIEHW7olI= z%&DmMb9&;7t)LTLQMVR;EBOs25$+z5o|ZR-RyG%HHs^PTg}~S?he6@ z!Tp1MgCm3Q1iQ}fI{&Z1eOKRi^_ju5);w#?<-uN??X}qpgZ+c8gAcCx;F@~|?_d4? z)prWsHUF;p?SqfbeRS?o!R51;PwMLGAt$B|>5q@H?Jq5VY1xg}1D6h5I&1N)#YY6E zE}XisS8(3?^VYv4*g3d(-NozP9^mBlH?P0>KZ3V!!f7|3cJmhNwpjPl;D+F^^@pv$ zHu&>}KVSG}aHqvPEj}f9ad1@d_TZDjrNM4XyQKnh{L&rsD_rXB?9E(G9w9dr2iXL9 zi;Hp%^)b1Xdrh5-iiLg)^XmaWGEX(16!+;;e#dSO3FJh$oqwq_synI+(4V;O*(=xa z90x8`cktb8_H3@{8FsPTyjvdP*?l}Mm;OS4pUn?&^hbh^1-SZif!h67g0BT<2LBo0 z^&bU43;30qiuW$yA2mqxSMzv2!4~m}{`oBbQ}a+SkgJjr`G_}sUT*6i6)wWf=6r0L zZOd12ru&~b0|()2_xsFMUXYkm-dr{P$$VM)V$Hgfz$sAX{ z#8%8B$N*n}{7-z6$CDSEA}6vS19l>&<7ROS@TZu9OF#@)+xFg3GLj?uK9qTcd!(So zh^uk58un6vL^+uGoV<;#k*z#iJGh@s>IWUE0T=^0v41hR^{?ady)U^xJ5*a!`;jx_ zVfB8n?!G+P;dA%rE!nB1I7f!+a@z2n4DY!0eK_}3$khE;^GQ&5!;f+mb2rDxS1rX< z$D9AEq3CDx2Dt*RBy%+jerTNHll)5kh|l6nxdGpkE0Kq}1^>n0axeDCx5YqyYOZXX z``YFta(Xt6BV5mYPB{r1Fh}MKe1I+ZELPAbd-vToI=nnsJ+pe|j{^DhslifkzuEiE zK0eqtu-qfqJ$OuTVBlWmS;5Y8JI{S6c=-Io=hp_WS^b*TtJkbv^OwQ9gZBmh5Zo*H z%IdGI-Ybw(?;Wh2TRZp0V6Q;pcxSqS-AAV)wD+`APtAe+!f7|+d1>axy{dNBw92UGNI4byTpa!z<`hC}bDY);#eJA%O z)jW1x+;wsva-YS07WWSRH2ACF-NCuR?U!!9^z7gh0m4z2`DAc&pvGW+C!bIo;G^a_ zV!j+#Y;})v19>r@QESJ&^6aYuIkS6bw%-u^cW`bX&;DU>Y2e-L`1wDGn1huqrSPz^+`t>(lqyzh*yx4!K;5BC7@wf5;kY+-!l z=U#x?q4}vksx6sEx#x<*@q(JOx~v$a4vFXct`W5ZHD12vI|aDa+=-6WI{B>o8jQ(v zg!s8NZ`V~zB0ISn*^y7{Blw0a^^Lsck0skn%%0gL%4VU@i+d9J><7 z*pxZ8oWOl6^L{zHywP|(mnS!nI~k+rbi`EgMl9BEeK2RzXZ_Vjxr{usa}Ti&hpOq| za`}Y0h}dV2W&o6w{bl_ z={|~k#<*LKL9X%)KB{Ky-lnC`=8EKOEcBq3uC^i%kzdFk)Iv@S@VK~$pVd;>E8i4L z>7EV9*~H810`%skcAMXA{`BCFR{zoJV*>f~#lgA3Nx@TtE9S45e_?Rb+)Z=u z2@VK;KTz{NB{(>^Y38O$?ju&P4RVsh;E!hp7c5<{^ul24zD6UaZ+c=4G!h+%4;j+5CF?(odUL4o}4!GYYx927Up z{oLbX-)h*01afY+?HNkXi#T4r>0W`)?lsD7@DqP?|3IAsuiydmcJnu5agz1@)I1R z9;q~k_s4-8N4<^y%wPL`O0icQ7USg6YN_svk+-p_<@7lc zoJ%hF7k6sQ^OJINIi7f?E`;0UrDCglTH?6ag!}Fln4g2WmRK&w!kJ>Yyjeay#^;_( zcKGz*z?@yIFgFwP#VIvu^E9%tT|OYD$Rj<=@SH$A!R=%tPjb&iPOlI0J#ogIU#u~= z2V+tHW7Bw!eVAjhP4^Ax=7J_j2S$2|{&FLARaUUr`OBA>#oI9BZmpUack zqug5CI9DBxkKtGMHtB>u)#Laf+j3t-U&%}D2H)Ubu~wW@L(v!Quwiiltg~14ZGNZ? zvQ`h0Uz4Hv2On1FW{>7H>T2wd%*|EI?d~72;}->Q3f>>MH~87$i^1u^w*${Z|17}Q zv-w*c_(Ood2^NAaX1AEVfAHMkV}WAQv*(^Y_x0dj^Y@y6eelD;$+r#soj-s6{5t}< z^18WobDs>J8{8@Q{_OW>UmH9)SexgrjtJyE@(s3)H_pj(%=-s7F5S3va`4xIy2JI0 z*DroNcusJ;;M)t|p78FY7aqN^ZSd>$8*$r(+b--I92fj7c*x>I7GEAX_dCHw!6kv^ ze+4+%-_A=rFC7rPIrviWU%@Yf#bADUe)(3x7J)jo`iEyxo)Ek;P$!V<<3M#aHA(li z)go~wn6vSDc_hBZt>!r9t9Zk+x#F<77T+TbC4}X6k?>6T*zv%Na@;UW<94uF1Bl4Cb0`*w$ z<8psT4aocuUzw}ux7wd;%H{a99GEWDEX{sP^}zi_ZzT|9CfeP9#%sQ~SW< zc(BicdS*>N%MNhyivsTg5XW&c-c{EjKY5+lB#zl;-O}?OVxV)}C((v}szb}0<;=#c zri+hy|D{XZ#s9cW&d-n*`Z0JBd78mtbEEQ+g<^ zKwfnH!GJ8?e=;vKKXcDy%go{K89X?6WMIB`K=AzFWx;C$wSvQgmj^G|1p8hZ{C)5@ z!3zTQyu$*=y((~z#qmDN!SVVv!EUp=O>%0r>I;G!f`#D5;G)1Y)h`d!L)HXx^=}4W z3DgST8@QJF)fu_>EGCOZ=8*D|8<%ff{&Mh+0O$Qxa8U5*;0}RY`q;qtS~d@^Uc7q3 zv6n4gw)m@H%cU)s?icJA92UGOcvtW*!5f2D1}_O-6&w@%Yw)??wBW13e+J(U&JKPY z{3!Td@b$nkX9gDq3V6E)2Lwk3>bu_y)CtrN)Bw!6md{&)@w+zp>=YQMKJlgcs{B)J3Fojm ze1?aN52qPF?pI&z68Dk?PLmUfogWYQBRSzV+~-~O=B{!iOZk%T#PC_i@nJPg_k_e9 zaRhhEgVi+UxMCkpbpMKe^w%?QxIip4Z*nXiHGc;8Qr$NcFXhtWfH-eXtv%a~&o%AS zj{A+;##400hS&$NL!ZGqTO9dU?kPrz8RX5j)T7w2#qj!x(l z&&z%I7a0M0$um4VZ~j6qwvnG}&`s-@=3(+6xjz5rC+6nz4D$)T_`bkAMQ&zk9%9ZR zpOP2g43JZ)H_ET%S&otG@j;x0qt!Fbd(5RhNAI}=bt?A^z?@Re%KXUEKDnyrf7KY& zpWIi*3;57|Vfh(2u5)_%q`@KI5-VyJbxwp|YFSo~(3+HemVr-Su=W;3os4j>=K zm+T3z>W8Imj&q*�Z=^4cmJ?ZEMrH+Ufj(Ed3cjp5zB|DDzGJJMFu;TrS3U~MI+s%I+ukXg8@6*?BUmH8SUw?2Hd6FXz z!>LfdHOGeP&OXOEo({+zwDG&(80Tq+J;-7B6#rStcgzJx$g}HD{E+{SK3l)VpY`MB zRQ#X4v;AqXUv|%y`Hp2#Ut;g|1NP5HoTDx67W}}rjh?pgzt5w;>5IA{&bQ9@9NBAG z`fPiTbF6j87d{vE1OLM<^6-rr<;G{WY#YzF?s(hrB3K7)K-+XI-!4z+7wCuMT!*~r z!(VxFlGhs$+4f9E-n!ec8_T zYBRN`+Gp+3=V>^H9ab-NsvqJF-{2Set-pM3{F~O#N`6Nc1wSMs$B~!(hU_fCwy}*K z*JFE}bBb>3(spwjux`6{svFA@`qX~84%=c=;!Qcr(&yGh@z7|0cn9~5X zew|;`t{qbwu6>t7*)!C3wB2j6EA};VO+T}}@`&YVi_Yu0jxV$`@{jZSxqgHf$NU5r zHy`0o{KtNN!ap2e?!{jt=eeGK6+Y{i@sfkT%FWW}m1N~uAj8VBGNKpo**@*mhv>nd zcKg@QuA@!o=?~o&+N=EZot(&Lj0!kP}JVBZ{JKEeR^! zh`9W!>Qae&6;Zd+qDkvi1wHiOh^TD0Xj64f&>mvD)}ihph|3N_Ta6&1`?l8F=lOqY zKQ;Sy?dbRXe(U|#dzo|0F`hBznDc$#`O$Uz!^UV_o1$@CAD}GdvS+!V{_;WWB6s!P zd|BIJEel)wJMMFyIH&!MXQQ5!S%@Vgx_`QDyupd;W#pmnbOmC<7;{`RwySZg`^Fe8 zri*dxrVU!BZDQ@%X5YuSJk3>cq`7Fh)otem@OIl?_+E}VE}kn>>{Zv;KhSAG&gyoI z%Q)nNXM73hjc?Hnec_c@#}jd(9Ks{tajY?~e(HR_?ppBOv0gu3H}&h9|?jiZn7lWA;dd$koO zn=|7r{^K%Ui_h|0Ij`8;*t|BvT^r-t=a}3?mMlKIuD(%!v9J5ZWc4&B;w!*k>$7}^ zZ1oc|vlV+(|JqyKu0@fb^>g%G9?~cM;tw9lZyRs*@683|&hmif&+Ye}yDx~%jn~uM znT_zWajx;Lw&L&Xqg~?lT9&$&r#3D)4(06BcI~s+uxJdg?y9%)Sb21aCyhDtz_T~@ zjQyN*oKNrS9_3ViG0NWW#OV z@9Ujw-+CYW)mfjZ49;c$kqfHwSm|0iRX>@khqkY6BY!!}PDT9*=kN>4#nDej+tNwv8OwFP^G5r(Zz3OkxXv}s zArFjkc`6TXkN$&mfbZaYeQM0?s>r^>?BwzJ#%vUAi`l-u;7U1ZgEx~*;7zHvKp zeza}Bvw!W|zQ0@;`#R^he`90ij`ggu?&tq?&DamL%$7GTp}9kC#Xj2K*hFum&gco~ z*Opz_r1__qRD0N8)Qy=T|R^{VZf9rB>xv;NoIilXyxn6y(cVA_Xa*}N-U-?g0 zzLQ&7Q+p0CBmwN5_ZT{v*@=uk-fe_cVW4%OcivuFd2oEB)axyRz|myudkJ z9D%QRD)z`hj{%1E_Wy6twjnh4! zT^mzJU&TS^jIm2QfecfKZ|i-=I6wMfW9T#{RNhhMefdjsFfxu9`vq-+?i^L>9oGx^ISXDUwu>#`gDBFLw|NJ$njBUuB+VBYt%WS zzOLNbs~k}7_))HU=o!!OZH#%ii0Ak$&yXh=(~a|Y<{`{ejQ7^JCD$NO z=hm}V+cdVNGPU1uOdIf~vG~8U9s305ugANVJ;vctzrL%x$Gf$!`ePeytB&Z&hu-W5 z-+kr>@@M|ff8$TjS7ys~nKJQvYOivBtgqLO*N;^@cZwb#>mOrrTTxeOg zEw9_@F*3Tg*E_ymTib5BhjL|KF+(|Ho!YD1mQ%jdUtwR%@A1)=Epyawb=s9&6=(DaF^);2# zu^!h>x~iUPd)uqhS^Lk%p!V7LC{8!GX}oQ0cb)IfbFAaZ=04>!8*{<5x6N&f{-^zt@9l@itv;!3 zZvUsO>Ph+ZKSI4eb0PA__t9>?J67)cZr^A}-^X&Ciyw51W7=9SjXcu!o>LyuaY1M7 zQhh0-wi@?0J}A5OId4Q|==Ed#_uc;KIqDx}8SOWo-}=k{`bPCI^=EQU;aca>fBnRk zt_ylD*XtYmvTeCkpWqib;e6$^Om+0!meu2AsqJg4%H6iwKOUot+F)ugHXA{oK+hw( zzc#kDk1hDtI4<))|8%``dX2itN;Y=TmbTeey9@0t?DHvqmDBnwYhy4uI)69bqZ|ES z3>f3UDC5Y_k(bWtdFmgzQQ67MZsh~pt%t@EJSfVY^^WzN##`}ZUoqvX>g)B5+5QLR zw|>`?UptCvdwN`Z*+%<)_QlKcvm9hQ+^8Shj$CmZMq9Xc${ls@OXt;N`=07cTeVT! z$}iuwsThy7{GQWe<*99twOqQu4{gB9Dc`iWd^MLb-p}rs&Unx<=hB0=SAYKJL;4oa z%6p%{yPDq5w1%bk1hS@rcVxT^({*sI%Vo{3?`QpxbAsOtych0W z#7_lR1jnr&x4I>;n3(r!th?piY;w|@`_a~e@E*7KyS<~fG+Ua#BkKLmR|IDSj|y%Y z_&px)^Ll5>`xxE<@JyR~)aJ7Jx^b^}R;&|Zy$$Pzcz@5jV%`JyUJe=P-8&rKv&yo9 z^WS***z9AoLl+KR*c?0{xOMQu*$?OI2HZElcd~!*x&1yjf8Wm9I^MU?mwQgYdph3Z z{^sg8=j)fy#d}uXGk>4+1^LahHwK>zyg+!P)f=teJ$P7PomcOX{(W$1K&Rd}@(#2) zdGBC(f6uxG)@QpUuqO8#0&CKEA4EI6x8)rz?}hl^`yYJF`#h%w-fy(l$Pt0HNBoY8 z_l~>+?)iG>dMCs?GJW^byCrzy9X{(USS#gPS^xXC!LJ8?8{?M(YcN|sgl)X1=)D#1 z!g-IzdoJFA@y-Ta;k9Qzy~AY<0Pj0l+sC_4-j~`Ec=yON{GPq=jD>qAVl)o(8_z3v z$AkX8hwl9tdh&jZ_h`Ip1A@C=7%?Yy7qy(I6Vd6&$4P2R8SJ7eC}^6r)Q z(a7i>0y6MDAG~Qy)E>`Kde_AJMD*p|JUa7!qxT%iXU#`Er(gG2#FP5JvYPwZuaDF3 zn5)tLzPCUI``O9)bkJw#+(*WLAXC4q%QGNH1$__7`!U`J@?41gQ+Z;JvOCWz_ig;K zU!TZl$<$|g`>dikM90bzH=EOnrSzrWYwQxQ#Umg7?|f}>jku)!$`Q9*)4ZJST_{kU~6FA1Mex?dSBT)ZFu87 zIs9}!-|-9)y|57-dDg-`KYF9TF&_JZg3av%-`N@;`pl2m zEjF^VeXhd``ldr$TR2N1P)+{?!M4 z*JfL7&`y1^b~NX}DO}b*x@jCxpK|GL1ih-)`waTIzPms!=aZp2CVTT!{PZ1PTMykj zpS(W!48GfkC(6`Db@B~1uaDqH?d&@)bRXL(LwoU53}Cb75%$vwy=k9v@W^%eO4j-k z+lmM5p&k4U=*~XJ_(p9gZ@~?*#(6%w|SS^yVuqX(l7D@K5lJVYxjS5^}F-DHx(5co7Ffr|dNzx}_gB8Z^4Z`$ z!8ySjf_DYhTd?-c1A@N_z8Av+k02_VLK? zJXpW%-TB?sdj^-TTsmLN;^dW+SMC@b5$qrQbor!ke3=RvdTWcLCc>uY@YB`19Ua-EP zHQKD@V4XEb%P^=g9B@jyeq&_ImZ<8*)t8JYK`6OP6O=6Xp#s8Z7sDo}B z-y0hp7t6&<{Q%$e9=Np=k3+b5SOiaf8D_U*5q~!@4;Hi>}UNFenF3TFMi<{{u>i`&mT{%xnR5`*OBA!4Ynqu zce1UEA@{{SHq$?|N zVT@6%?_eD*Ynaj*UOL}edF&&9krT>Mm;a$9~4{d^Z+RE>7c~e%S}NaGYKArMCDfAJBiYi}qX3LktkN^&|X1-(alL@e_UNEBGN; z`^7cZN!5=T-_Rqj;xB(P?zBda^#_a_t+SxtYtCuQzV?^*uG2r^i@6B=;5RtMkD5>U zAH+>Lid;h*<&AV^tw6dm-ltQ#r&IoKOJ|N*BLu8t;T*XP(mR*5({ zqT>R7p&r|=b)nzqBOR}@Q{zO(GGc~2i;eg=4vOLQ)STT`>;o}_Z&=&F7?M5djty-6 z&zJC;|Inv%jgQ%%E##gZ3*bGU1a$)4%N^x-KKLXD)DAhDF_j!uk|h@e@eTSvF6xtv zdGrUkFCSEvyjtwk9`$Q4dyePRoAGYnjg$NPE@xvO@rP~bf7Cml;TP=5ZfwPN_PLfU zbk1MYsg30qUWw=88GCdLAvbP3qStbij+EhCI;qdmleWrj%{8b~P6qzRS@svt)nN>w zP9HkdkK;YPsH4!Iu)lRY_#MBsmXP@$eW&%+n=_gZ(r58e>wk!?Wanf2PTaKyu6F5* z*q4sF{;IxHtdV<}7olgdNW2o)tVtu@Sue+WI{I62&>W63jFHWi=&RX;|Cw8Ht#WOx z+00)ZQ#L#D$DSv?`u!T~a*4BIvHIB)AMiu|gbU_z05^;$*aJV?598WVfw>O$lSj&b zteGO7iG$XvGVf^JD{D20eRL=eTKl=jjX$hqD6bMn_1F45^FHdq7dA8AYF|g!?4Zw+ zdpJfude@hWH`;-te8v9G6O@biAwKX`{ipcaxT~LJWA*#sA05fZ#5eY%H=ysXhiT0+ zeZINCqXW5~|E-T{Eh7C{*N9|e`KcVk+W6Kjl2cow2}ks8`X6m4hc?nbpTcQ+p(A>? zCKjF2rQaR1M%d{AUF(D7+xlvAyX-*UpbwH0$_eC!`ZC|yfj?M-lKten)`qhl{Obba z1bH62vZ?+~KWC1REXvYnu@T*hlYC9=we`Ok%8vYpzUiMYikEDp{qhEDGFdy*R{UXG zIYr}wT!3Bpi9X$2F>dRR^kM8ppM1|8Ilq!q@VA03tjj0o;~(-gekBJtme>;LJ@&&LPKQWyWyr|=_f1O2b9 zJdbSZ(I5HP&rafC`*XU}kJD9Sdi7?%7^lB)E+;;*p;)9WdakbV03Vzy#<96Pkq?1* zC&y+BGKu$ePcC)wTX~H-e8)BWov&T`Ue~aXoR*DnnV#^~_@9sP55CZ~`1q4K5%zN} z{j(XK;EaAtOx2(1`T~7|{FX0> zS;n?}%Ul!AfH;DuWYlisSN$qk*_!U~7N5u`7U`$OR9qJq`Jg;NK1puvH$M+}M1S;y@fEtnTRL%^eYAxvd_cW&H8SEVneYRj=*OIg zYslz&e!>UjdgPU7`=3v$Q~QBVl*b3et=eDCfCv1?F}C3cJ$UWXk2^k57v1p(eKvc^ zU*x0Y(;m8We)|$O!b^40h1}0}^bPR^N1a1Y+M!R9Ul=2?qjFr!C;0}@8+~b4$1CEJ zTtc6O^L)%0UVo!cF{anYSSw2z&ciwFcCE3GwkcDL;j{Qi$Ho=pF$Tm#{W(r(D~{?9 zF@C|*UCFn# zP5Yfkeq;X5tFW84;1xZ{@x(1#eJP#NN#`ikBR=X6^d-i&%D@Xg=X~*BOxH)6w*vl8 z7CPbE6DKd$1v*ac+Adpcw*yrn08hqru|UHF*TO)hziw$hJyLdRl|xJ3qb zRvteix3c)7*eGskH(fhU|9Fr8`Wv=3{$)e<#0B~koAr&jFD}ua@vm#NLz^3yjhD?M z%Q5wf=0D_u&F5XKZQ9iF5dN`?SlD|B+Mr%JnOs>P&WHKGI>iw3$OpwNu?8Q-ak;Dd z_`3K=|MCNQoP5AMlRS`bYCB$Awn`ieS)@;i|+Y0pC*&o2>2&= zU`uV_=gtuW*__Xv##&pKm#%IQIViTL1FTfT0mc!z? zff|UY-KC{N~e6)Geg$= zHQv>4I#=8iUzMZHd^IHCDZhcE z4tf#u%xU2eJ&Q5=4P0esA3nqf*hFrKYkbLm|BD^QapHwG(;a@eo==EjWT7vdaGkN2 z{8K)GYwGh|tfM2)kKl{)n)}haHq)2>Le8cxaj0|KVxahl*UlGXfKBMl_57Tk@KhT* z4yA9tMaTS5yro~f({G6h;v@UuDX!`N^?TwDpI~zw!Zot1ODu2fmZR`fGSY*#u>(Dl z1z%i4AAFI#_^e&V5V$1%v`#XxhrUVO+NxgVlezh&cHy2f-D{^~d?K^hsvdIECm!k} zwNrl0X7q_8%E1};Bl#fzX6Mrbb6@<4KO6sA7aZr@N<1)EVa}Rt+QiAUY>6F~cC5x^8 z*m0REVF23U$<7_r(AADvj^Hp+SzK7FfrxP(q|AL3?#3#f`<9^?j$(CXp z9pNH-;Iz8+i~OD5_1Des^lSW+AJCg~+IP|c4v8bm#!WmjCevTgnR@627wH~HfUnbu z_@!Uq*Y#<(==hJF#ap};$M_ss=vPcpF8ygEhyy;#W)r>-^i6*I>C-vv!6(FcZLt+c z)uDbL=i&f(e$767 znm+Y2I4mxaOIze1>cw5A^r?S~WzliJd zV)kSsdA$27ay{|avHp&jHt<7nPd~|joAa=VviYhQM=pA&8*Rfi$Jv)Ysz0*fd}EMn zag#mRobJh?&GxIGEtS#Oj3@T_7~`o=+tiQ4uH{2w9UbUP=$ilFmN?wG6LzuRIFjuC zR|Xl#Lr-|i_w|2rUA{_gWjV&D8e93k@tF3g_pHEu9X`pf^u@=;7yK7kg~fbr zz$N?;d&y6CWTIQ~$T2)okM^@Y&MHF;=Zj?98aT%_bcgqRQoZ6nu86h#WXwI-Nx8-o zWY=DH#$#Kt2Y2aT+3Z6$<-3-R_#Hdg`rk1!h?i_iudXL6{~?puhih!7eB5Kt_K~jX z_`flkJYovFX^VErMa5oRB|n>p(PU{E>JgjSp1yGk2bxFPuRMBptym-GhztJL79Z`^ z-;t3F+DC8X)IP^uhj;kr95!H6F^Eijl&@-wvgwkJ)ZOxNP#ulc^eLW^*SYjXe%I3( zdHIm*9m6;Ek{RE~;g}dlPV#6o{b&Q5u`_OHpYzq}IK6d#neCKM$9%r+XHUn-ho9Of zek+%6=`+kRh&9@&e9$JG;9t&Dwl-D2%2O^Mz+e8SA99U$us7R~nLg=3d+k@AcG9o% z$ix?&Z$DY+Nt^i+f5t(!+#2Xtokzdo0bh1b<4v!p3;hpYqz~87hgis8*g^c_V{{I< zU_Vzo$0_nGAd*2&-fU<(+&90QSHz6+R*;BxsJ9v zUrg{JH~rJCYw6N4+$uj^iyQRnT5T(b^pWyE+@&`%(KkQVKa-P>RG)OiujRJ#82{sW zZHc37NH;$0%<4*@|88UO%S{_EIM~=*;a9iPk>DzH-X*a*H)fQZEz4BeJjjq!M$M{TR1zUl(;0B%Iy7st^ZrMOQVSiArYZ{BR zmrcy40J-RvkKmXx)GMyynfmERyR@0z`49f9U;Ln7W!SPA{;)Ou;PtkEeelnRjOuAF zp=`%or>)wfJibS6Wzdbb>YG}xwy=}ywb6CjMmGJw*r+c4&6cghvE~T)P@5`CIdo5N zbVD9(Y8%O=T|VSxhxWVp!KQ2>p3s%@*|&1L#`XLS)UEuf59y--x0R!9$|oCpkW-r~ z5B=~7_NZ@YJI=XQJLm?)03YR$*ZJD252jmsa~=I^x9iJA?Ii=BBm;t3;k(_vXrlW z$JvtK(7o^KXE*x9ZSk5e>78Bpyt3&Dr`S%p+F%?nR_m9Q&p*UPIfnMovlylC#R2Vi zJr1xPy*G}@lbuf%{B;i7(YZK4U)rP&aan#qCUW37S=dOdktewxm$apJ_Z@H9ovrCr zUxwT2p(orWr#2~<4xGmyv`yLMrXTkv<^HZGtK;fbhxQt?x}NRmmAv%r7_ zJM?W1!~B-9FPq``QGs&Fr5_?2PP<;6^dYX(AI{+xJIl@FRs7KT$};ySKQb?ZOU`3Q zx}-Dum4_=2m-wIh@P&TpKyJlO_~knGqm#B(js@DS4dm88k^z6Tl`P_+I_QFp@t1z- zQ`>xSqeEd;1Jv*okjLDqwv$h}#!BW5 z=^RJ+fE-=jw}j)kL@)HiCfciSEx-8|y*P(%*cjKeUp#EQs9s&m zKDb6+_ERodTrU=key0bSv= zIV!m$p5g_58UJW6ez_OzUKAO{PWS8FXE4`5R(`7tWs4>5$1B6RKJ2J|wjz%hES5M< zR&7&;y0ja2-6O_z=X+kve5&Vy^r7bHJO||Y8)d26GwYs@zyrC1=X2aQWM{H_m%($a z#-!#pdY_h#aLxR@`stJ(icxIJhGIM)zy~rr?mDt~PL6N!zv{+)262|}xsPBz!}W3t zdh`4M{o}23Mg*LSxr7vaIr`1bV=hLC<`91sd zJ3gv?>H<9FH*_P;us7b+KH|P}Z0U&|_&iyB#Kzv=$7eRe0rRQ)Y_UKLb>D$5*vq{R zeJ`E!dCzlszLXxd-@R6PVl(ov5xe=H{@H;X_TvKi_!j=Dmu&iJ_epSHJ^WssVj0_t z8LlTEee0W)OIP-@2m8_`-KkGm+QOb}N7v+4K7YnL`lc803$N*%ugTT$O&iIl9r{Fm z!3V@E$F!Gyl#7dOC-TW7@UMLj-OCxo7G<^1AUoah6W{3t*T_uI`V;L1W#K$ucAoR; zj&JFgJmcg!J@=~FnA~KdL;CO>iWrXL?2j*v5A-KivYmKKp7vpQpf0fAb^O>z?9gv2 z-6`SSY$UGI3*E7cGVqdYVz*o!=iPhclQ`pEwfmWT zhJBRJmfGOj#%6NTo4$ul*^Iq`?%0T)=wF=W_stn_S>LDMR0hAsUmv_Do9pOZee!wj z)6V)JJCmt-5$^K?TRK%A&_7w}%K7x~9A)zzI(43$S!`B^SU@(u%(ul0{AF|85tHbj zzWEGY@e%QgKJZZ+>5g96Qk((TYA^jLn{LG=Ws?i1v`O5c1OK~@jM_)H>S%oAt8!Xx zAsboQg1-2;oWb~OTY%SMi7^4av!~<1+ald5qb_Qd@OI;EcSVC)O9%G86oeh(*5yyjzQZ$9%!d`RDZbo!&U2F;E4C4XZg^Pm}4E4 zg9ADetF8HQZXgy|Tf}vq#nZ0u1Pil;nRO_{9&6@VZv>y^<7^@}X@B3Nl|Ori`=5d{ z0)9;A*7fsjzh^V7!DBr?{G#t;18aDQtJcpuFR<7`% z!g~Yn%<=8ZzRL@`CJSC@>k|UJ z#$ox8+yc+oNgt*@`}r|`icMQ{FVyqgxa)aIJQbHc-{o5Vq3-4ld|f+F54^v~=fp;G z%MZkCJn?+1wPyH~I3<43n>fS=#Y%C-6Jv#Gmw={9L~wrf9P^8MEmVl-F?^d74Y;Q`%S3nKp~z&czdT zh`stTxruc>J>`XMDo`+KD4_337IfsNWKM$blQ+JAEmi4vbOoRv$}lGWh8K zqZ&zelT_S?1Jdjj0lPk8tIw*v3{ zn`=-XJsOh$f8vWi{>MYlSKcc4^6HmYUl#mc@TA~>2Nwp`w-SrQ{L=z4=23yQPQBxy z9pVjcD$lrxjXf*M-rA>4bdRHaORnGqe&JVs8{5bew@QvXA1=gaqK9s)2dS`tHLO+Eo`WpS*mxBXm2hP_(wU(8bf(QIm zU#XAQHZk1T24{^^=vhuAKl84MTtFY7uRJL@InZ}{Cq*7WU!D_Z8*5{T!|V^f>q8xL zuKr7`wKfMGioM2Ad;%B51AO(tU$&G>)2}>>efggA#BOc&e5Y6|9_tUqM|psGC!FmaSr@?nI zjJ(>z5BRCAc4;#olV{Nb-Sa!`6fc~|7v-|fk#lt})^&{^Vv@d}AF`*u#C!v;io=fc zhsq!yq-SzhUNVZy;*8iM&hT@5q7O00K7FF`B0ce2I-;w_P(IE!+OI!gXKRA7J+AOG zxs(04C=O|(_@i$Wx7l5+ecv)K@C6@7J&c8O#H)pT3FAY)vLMCcoIp_TsdD zkABSMkWt&Uo9~KsVyn2#r(MGi^rvqT=Um5U%(t=|J5+bZS7IH0;fDI0<2pG4zY<5p zEpb|XbV^QqlAH4nYjLi;VQrF>l+=W^!qeTNuxX!Rm9Zw&E|lv906yD6f}WxlX>L{rrN? zwOx*6{sO1iKpevXdev9xr|^J2_<;KGmTvS7`lWM%3--eMsOFya{d`q84D>Gt z%nq2Z%_u)No{$@n!Mrh_cP)M57dgz|(5cu+Cb|`q^p9lGX1vlyF%I8xT}J=#9U#2R~#R{MA>Hlz3Ou>7$FkTh+#58`wkGBO|19<^IkvroA8QD}^ zkYkH=ayGdQyOZ@V1N^o&jyWsyTevFE6YIqpe38pJCXbfWG%s`xo!QSfnnQ^zVm^N) zFMEoKVk*9y`!RRJCgKbo(Fgr%4}FMJwytA;`*EH%AC|mvl`j{~J$Cms zJV$xn>$NtO98aFeXXJo#Nn>nl0mvccM9Sy?KnCx@l2Q5kaCxe6CjV2ucG|~x_#J!G zW9>ojxFe?!GxP`I7Bn9gC)lES4;#|4eSC(_3$|m2=0E1Z#6NLHEY*MT&A$I@+qfdv z;itBIf-K^hxTdd>V~D-powas;*A6phWRAsgaaRruU9-UX;IXHwO5WU=7=Y9JU(pRRo-GQiC^<+^DuqyoIg8X%;~#sbV|p~ z-Nh~O%9j55d+QJzjC~r1j77x}bBNZfwU({1>lXs+I$nQv{rT^poH{#o_P>I2g7*X; z4E#>XKL)lR4Xj1|;lOumdS4s}!gmYK4h~*Cc<}|n_k&w5-E!$Z!EXe&2o{3REPiJ3 zFN6C8OTot%KECjV;H==>;DTUl@Vek(!S31a*-L|)2FA+9f$}DHG-q)2;DXf)R-Yam z6MQMZ3GR8gX5QvUw&b5VQ~1$;VZuryfXMea8dBB;Jd-)!P4r|>aoGe!7GE01m6vI z1^e&Wf6ujp8wA!(Hdk!U_kn>JBcGG2iQncMz7_1B--Nklke|5O@6zCt0XzO(V2x?( z63d0HfxQ~g*?odj_QH4jTyGx2`t^QmMHygz;%xzb$e+zEyHAd1d`ylmE|X1e#fSKo z7$&ypi}@iRFxJqAh_k;OaMG^_{}g;G_)73E!M_KNne$)G=cmCx2Nwk&3;rQ^Z$Nin z4V-_-ojm;T$F zqjeNJM@FaPcjwDJO>$89`f(-E8A zAKZNZoA3Y7;Kbmd;M`5;Zn|Z#W#g8Od$P#>ZwDV(`oPkO!NI|X;J{$};`YVY2g?h~ z^WPk}?(DiVHgvz|IjhfE-MX@MWii;iym|So-DmCIKX~P?SMIt)aPiKIcRnfj*B$@5 z<9C8>+qZ3he(>Pn;lYc8Zv>lnY~JzF;BGtbw(}jqY}ahpF~Kc@!-BHtl&Gr zV|PDx_x9iw%dc3z^U9r9wgt~#efH{40{1w~^IBux94D@`6aL73^|$U_eJ|LM-}pE> zI6in(@SNcJ!5;6#Ou_$KpK}9~t~cupu~a;k<>%1~(0M%y!Ja6ud9^ z+rV!*yf?Tg`1fGb!lnh=_XiITtg9^VH~tb^<;CV#anu~G`Pp9x`1nhLdjvaIcCMTs zJU4h~@SDLCf>#9p7+e_~vUz^yH1ZtE+-L9>JAxy1`-FZ_=< zDsDa?cwF%0;4#5{gJXjY!MA7Mo_#Wqf57h&x5B14-Ld^ zecUwyzUBU>`5^tHx#UL%<{69&#W_A|tfC(S{g!!G&kM*0^&@Pdj}aplf^V&UYu+Ed zCBL2Vn&8af^})M?&j$Ln<$%8Y=7)Q(cMHUDV--0jd;6IGFfZbsv%bl_0QXDi&OPBP zf{mH+m!sV&cu?@PKp!JdJ8v&uKYRV`kAsr}e)`?~ejT3c$K{*m%jN9GfaV0W-S|VB z_2XilxOl%nf9)Q!d)Eg9euqQfd`0l>;Pb(U0_}Zk@VCL=1@8*B29AF(pacAsM!T}3M1h)$A6+9t$aqy-m_`&ucY~Q$JGR@Yvusfx+t+g0}=O z3B>o)g4YC}3a-9-_4)5Wy>#`Z8SPwk$K@}sesNybt5#n%9|Jvf^`WZ|4xSpE z6MR45&*nJfC&s+SwDK%@iTuPIGCvaw&C7`o=Jn)f?q$-s=Vi=C$?=RU&Fz|_qKnG| z{ixXU%;4q0xq<$UaZ5bcce$S>|0S<+kv#WD zt3R5LzlM=W&cB#CLgOd1Agr-z=8nJ|8gFcJJLieBAu4;KjiQ zf-3@f;KPHz2+j{a6?`f9a&U3*{otC5*Ic}R@Xp|NOSfCPIC$-b*KT;q#;0t&)22IZ z+7@iyfAjv24Q?NNV$&x!-8ML5;~5*jy5XxEekpj_(#w{v7QAWkO^c5S?iSoQkfZ)- zAZL<4$TRfGA6@zA%4N%!E&pv;0}R&{e8i`cHC>nPlLDaeCy6rcAc_oVfR8xN?F0N%f~L?Gq_i9pWu|>%wT6A zj$MEC`l}xgj62z1?DiY4ay9w)?E*QQn5@tAOoiWD`cNQV`%SM5jpsStw=x&Pm&9Ms zmxx2=wmf%c4&w*GU1xWly*iLH8cY3RaLMeFxvh?w9W&!|WYAaRp1cUpa1YPq2jYsk zd&iB_%`tms@BG#CS05kTA-F+sWN`Fe9G2ho^LxBMS^3Gz*Mg4(Zx7xa*nU0`%O4f+ zLB9)UjBc(1M|&?&-l0Bo&gP-bL7N9Kmc@7Tey0SUM-iiq$HhbWkU1kV^CA9Y%w`_) zq~O%RvyF5Go;i~j?)8)OZN7pYjg3wVUKYG0kbjEh=At}XNay+pIjnh2a**wz z0sWDQKKU$}%oFi3_t)f7?mrsui<$0$iDB-ei7Up<&ei{$do?E^&(fyj1O5N$fwuHF zyX1b_#Bbf3(QdxX#>QIu05Q}3BXiH4V>W**mvb+KT>45e6xwf^s}a}DK`PU|W#xO8 z#Qhy(3wgFV5_zWFRDY@8#J86R#{PdD`27$%6JyMk8&Bzr<-P8Kh@Wy#_Y#a7{?#0$zL#yt0p=#<>~b5Nkps}Hd39p}xtlq@y9dTf?+m^Y7?X<+w+$W{ zoE3aEICSyQ#rp=&3*HiZGdODLsHHy$E)AZv;Yk|~+IY~$_XSVf^u$e@_TRMs9|ms^ z-WdE=aM7lVHr+aS#>QuCeA|Y%ZMbadvZcEOZ(n@-;=O}S!G#MK&ijkQ^ZS@jo;`W~ z46t0{_g8;^^(iY)S$VCr#KLqS`n?T*}VLT|{&v=AiWHYA4SNE6X2A-b~OZW`m zFjhY)&=-l(8-fFaLj%8)e%rurrQbJj-aUg~362SVDL65BVeqxUSQZz>C->ytU*-Ga zvfPp^a%(Y-uZVTH?_QW#sLkSl*y))+^X{(-Joj>PU~DU<81uMiB*vc=(3$a%>ug=8 zpY&UVbnd(IE)3}Xdb8`z?huIA^xFA3F-Kly9@gBmF`T*Qy99m{7kn4T-`RNPWF zI7f~qhx=yWKDJnE?5F=Xe}aQ@2G5^+F5cKoA7#vu;oW==Uaqk@cwq2=;Map&2GA0pq=x0o|D$7SwFtfnvhsrVwN6-UioxF>Oqz_{Tjfn3|1$<9Fje9b`qaQ(pi zin)B_Liu**is;3>rC5(&;+uS0pCmW9BoG(P*&D0ri}a`ZwPOPFB4lJ&V)fxNERwY0J|7!SffN zzj)o?GYg+tcy(Z|^16XJdikaM6*t^-!##e>`P7wDS3a=(f#qWY^BTV#d~(+(cReF8 zkA3;h%ja|3r|vv;=P|)$J1(2gd2ijZb;oytTkpK}&a;D??z-u&4+f9e{fOOH2G3l6 z=JJ<=*!HFm|HVG5!cP>$s^=-y5XJ$E1Epa^pR7aO85#*ltT8?(6rA|Macy37Ko+v#!MrvDkQspQ=|(l?(Zh#~4R$E&p}D zRlm&-jKzQt+dd+|b@`Vu37wi}y7}zp^SP%pW@pUa9eg#AC!4bt2X7q6m+u*PPUGpp zi-NO*cLtvbt_W_wc>Byczh?2sr6ZTl4>oVuyy4@)ksFWPc(34u;C}=cZn$v6Q-kHD z<)uFkB#WGM{fxBAnSpU&q@4_i5G z<^9X=U;f?T@Zht%KfC+1;AX+6c71Bs(}SA@J9h5a`TZa%>HMDMi+8f8mr-@80&g58IO&PjZMuX zs+YdZ-^mHdXzXXq&X4%0KFc%Pa)0-L{nor^1HAj@*$DHs#*FeRxfI`NY~nj&6zC7> z&RD~}d*gb(!*4*`(kF;B<|B+@$*oQHJ1#$!KkFCWk28MpjA!Rd93T6aK5MEE)#tds zp-%s+Uk)c%*T3pVJs($@ZT(MX_shgSF`hlNN5AK|{7-x6U5;;V!g%EUf%xj)i8&zS zHTO33Pv-08)gRmoeLZ+aU+nE~qT{4FCbrk#vZ4C*v*M#U0)8v*$uB%hq`&rjedjmu z&%MZd1;(DX@?vuz{DtksM!q7SVM}G1FA!7Jp>NNlT>tSLFn#G;$zz^DUL*$v-_7U9 z4dlK2h7ReSGDY$N64)584d+FC- zxcy7XpYPl*X0Db zAy&J`;l72K(feoeOJjZU0yo7Vc{2XGFRxtvytxE^%V%-7+!8Ov1-ZVml_M8Zmv>`u zTs$(5(7e@o_Ti~M0H?)2`H1*w-q{#iKO?rwh2)@~`!IIhorfUl;L`!!d?@&2@XcUX zU|f4#;C_=iOR-u0qkQupe972S9FuFB?=UB7-oltdF6X%@^AqxFTRDlbyx5};k%PJy zXxu24@+qdhOuw@=&XHA4V!jvu^gsBj4EHR+cl#V8zqq3RCqMXZ zpJRMMnfgOqCl6ha%{gMYK2RJdw>-#Pojy{#@$!XM-_AorGA z*x!2;?k9rt?UV0=KFEGPjQ4bHOdxM^f6~_2+A)2gYxG_67UL87m_Cv3crM5MlJSb1 zhfj81&3Mjzeem6!kzCAib8z}d^Jf1uFqSZ;kT2*g{?AXpBG1;mEPbBgZp- z0pIQ8%N@_qOLfw=(~o_0M`yO?KJ$##>?* zj+URsm^dm%HveI7d=cXS5A4HXTxNe9H`g(RvI}*oS3H;d8gt2o$*v9j2XELId}mwm zT?{wJ!Oq5h#04fn!#`^1%&;ap|4+-|4ko0FAKiBIxkxv&@^4w#>Gj0|K_cjp@U ztUj(eE5GHla>wSlY{$;F@>zP|(`+jjrV}y3SVx~qKO@9K^=PLyijUe!2Jqd!j+2}t zuXBy^l&u~z85@uT|8Pm{)Q9W;*$Q{TcYV11;JdhkPla;|$JRrSkK3N7TpYy@a^MKr z=#37mNBZI;jzM+kc;hP@&=VbLyRHB2*M2%)i^gkfR{OvE=%#j4cXh-+$wW_lYxFrj z=2P8y22D&B2lxPA(pT{#<274;Vjswt_>TOOFYzfch>uOdEWgJ$yqf|?@v?nD`vLo>JmnMRD4mgs z&T*2y$;&RI@AbR=?8s&v7rGwTl}T>$s*?=z60t-~5og35aaQ~WG131;{}tG%7?0b>j<~#@jz--$r`+|OzFb3h;JbZ2kM7mw z!$83ANc?v(0s~AJ6LtSIc zFDJ;X4O1V*kH&@au5E3**$0>Sh4a}EeDC$$FP`Hv&e?X(r{^^`w2YQBazcIT9&KBj z(DkTy`+LlOcBy@wTU*q=Y+TsKMk7aD(=wDZqFkt6_!wCW{}=YrCyvuyV~MT*!Lg|i zs6+jgz4BM)Zr2#Q_P0C}U&S|lmsqFozz_WxKH(3Z>CePkd9eHte7DcBjupzy=9tYb z@pa@XE|!mSY4xhV&)bkotRj1DrG3R{H@c-mdcg@C5^u%WF`mlN#yqR}f_zCF5|0XT zYDD+jI#+(t+)5o{x_E`VIM0^sGWvRDw=Ddzr3O& zb|D+t`BP)S+6ZiI4EEoN1&sl&QwDt~SNXLCdrWOYmfDYQ8tdr1`o<^ajeVv%#0}gh zpZc4}mg7fdbX|_)^OWC?m)q-&5%n$nNge9L5i%6GQrJhv_VJau|4+Hm{(^3_zxlfF z)kFE?T>I#bzMLyQuqPhL>&D#9d9Lvx7rCo1+k*c1uJ+a5zE9(KW3^*qip_H3JRpfR;Eo;f^Q{~PZa>lrJG z*>afXFUpX^$WxTLEl|GrTz?@$WALc!`VX7oHrulQw9VB+V~YRjho0yUSF1zgMEMK; z;jQu4z96S@PPy8gr`O>!^m^w{(POqPt8*f?>2%vZp6uGtc#m6jFelpHKkVF(UG#*D zbcVa5tsCFR7%%?oo7rDX1mD4aaL(8l;0}9@So4TAPN@e*AHh8`LH(*eMMmH2lhdts zfHJ`Kpe%k0E!T19wv5(67VXxKeYLrLVP)68wrgyQy7^T58hU4g#!Nh%aYqJ}#;umG?AmQwxB8~BSY6G>J3bV* zwguvtyrHm99^NrtEuC6qTKv^x`w>xju+1@+h{Jhw7K*xVFu=#VilGvytKHdZx`#-Q{OH}?bC0Nr#>~t0^ix0PgeJMg$q63acyk8^1oxsR8RY+(H};h zlWhcDw9l%1&9`io*LI9Cto$q=$wAioLEC^&ID$LuRX(yKPBun4<~;4zKIQqe?dq;g zr*e$vjCyE4Fx3ft)Xu(FANH{yo3bTdu(RXzS$))gWYkW)tKawzjfL99zqEI3Grz;< zF<-&)`bu*EeLr8}6WjKp<5b7$AN6NG4gPN#ogZmF-tjBB$k+Hw?)uM^Q{@3J6xDD4 zA9YV(^hSTp&8KsR%y_56#j>{mvw zudM27UxL4*|N3s* z#_}2y1cYXOW+M>RJ zlSN}}60oStWk1CCXWmfQ1{MfS?yYsw+VwV6I@Tly7G zYhSj)eH<1a8}G*WXFr}pV`%w4_FIk9Eq}BvPN^Hee9Bd_0S@{&<{WT7H0~?ccc1lm z-m+}V@AWuAU)5FhTOG4sZ7k;a-#M;P7P-|=zWPb|Up=m;L;H$Rx8pvx;1~3!Y<18{ z+sc+~TC7?AXY=Od#F4f^JN!TLaLTEk+xR-o8N}4i;W*|zWvYt~i?Lkwtq0eDb9T+z?LG``fHuBq-C*XVGH@}Dd~ULW$;x3qsm+uf~W+6}&sysV8{ZriTj z@|AskuPmc~u6O-hz~N7I+^s|8@5ld+Xsz*tId`<*Xv5JC z+BoWYlx^Hkc6uzT>(M6FIX;$~<^ITfvACG_y*Wb)baFtIo*%09Jud0~I! zo$q7&dX9Fl*LKJ4ZyAl>VnI=#ZynQf{9oCoW$6P7<@MakSnkq)eUz?!s@HLg2XsoG zBQJfokABOSa(ldfz3-#mM_V|z^(nV#`Hojk=Q&P}%Hq7~In!&kwcHxZQeLke_q%?S z!~f$x$NWFNzGch{-TTMBwzqQNU407o>sRA;J)dxWuN%+x-T6h2u{E$e4ix@(jRI`Gr1D&N0sEnTP0Hg#C{1tAA9Uy3{eY+y77< zjK`{n%IBDNj5=uB*|_{K*J}52!T$APb#p|y2+04$V{y9i*Vg}2jK`H-O!ups9JLMm zRCfDe(q?el~9WnPz@A#vJuhAE;dFQ!k91biC)5 zXWFD~Q*Qac`{-z2{AeFvj^UQ?_|<;iwd?7*b|FLknT+gT{Z?OmRi84=RhzSRj_|6s z&UL+V+Ak>=+Rv@Gt(~UG@k?N~_>HnjzYG?UVoBDsmdOk7gqkN;6^-!+SUv+3- zVc*CD-+ON3PkooX{b;8)@tMX5-?i7LZE$UUsJa+^XXIbM*XCE{PqqIvuc*C78)>UH zX;1ZB9XdvDqkq^}pYz=@J_^2%<+YsZO!?YQ2V>0eogRGX#K-sQrpH{{_E%o}*8BAO z@(s5}lykP#y=~>PzvugIzk1Z)*wnVuD<5g!sDJFZkPp=lyWe@vr!)G}mZ@G^e`D{o z4{403jOE(CVv88#m_DuJ?#`D^x8_efcRK9{#VN9=Zv=VB%vSWYo^RH6q3S zH@H{6)!xeec{XROf;{C9PE0>!RUTAkb&-u+Y};7c_&MECe2fd8CaZUN*s-9CF30LOwF8}lGTP=fCjaNZt;2OKqg(q%+u=v!VYy;E z#v?j&j?aItY3;wUzLr1A*W;u7V>vxO%3IyweYs>?Kd8>|03YyX^sV-V_VGtPYwJ8* zQciWO-lF;)9oHC|RNApK=uv@uC zMzWHfezkAZDZSA{{jTw8%>&osQ*}6Q>DqO!pT=w)qdyk)zkMW+oaV?B9Wgs%_OQVEmDU&rYs8-rST~-G)_n3lytON=b>Y2E&tKB3=d7*Q z;CBfACBG$eR&Yu{-UkHF3alk|QLsI*9?i7^>p)uz?U=yYs@7b!j*Imv_=CDm39Ln8 zT~O=%`OQ&lfRo8OPJWwU!)(Ls*x+7)-yeYc26qf@5F8u`B7Vc(Zx&c1(3(bcq7HWS z?vAxTtw-T^*^UctA6Q4mZ@<`QjXmp~Srfr?DP-(@dVCc_yaVSM^sXb}S#y5sJnzL? zOThX9*1(}t>$!X|u#WK6vgYCe!B6)4$^17K{07760UcPEz`M4dWA&W2_ZIq|t>;zw zu(dF(qhTE?a{HY=>$A2Uemm@z!HojCw>G6}u^BI>9M9JKt)oElh$3efZ5Ahz0cdoS$ANstrcNDFsgfrF? z!gK5TSmVrZ4*=b>1KZGvxWEq9cd`yXU3L9X5QroooyFek;F&d13Iy;F92q!1`Q% zlkA4UtpjT%iod@dJTdt5z*=GAwBH@!bAFH4`Zai9eH^^Bwg4Z(TkluYZ>+C|Yu047 zmbNwD#W%l^z+QlR{%`!VMw7MKthZ!cC2O`>x5PRn)>yJ0lXG!enf+ZU{60Ofh9CP| zi^@8TVvjYe{LYKD&uy(=r7yEal=Jw3@7A)i#+7rdInCc4*N(Yu6Cezv8waj&rz$KR8IIVv^Wv?q0mL?yog^t((Y) zekJH{mimo>uE}RTRlfDyz`Eb!p0(htCu!|ParAM4bs6;y))5kK@K=n{2k8IE%{Q!7 zX6-C%n~Q_=X$>xGaaos(UablCkwA>}yDZl1(uY~2%ei=LZ9-hIt}oxyN70`(!K{6V z7y3fKUBO=+tA6O5F2p|XInbST*TgUDi&^VRzaf5zBYn5qbC_})&)?vvyg?k+pUETW z)0#~W3dFVJ0{x=34y}bO-|)LlV%?9jj`-&SYt-?NzYBc-Oz>|3UpXSs4_SZBx_g(e zUOr!w?UL0?<~f4n%4HY7`QSHjtTSb6y*KetU+jN&VRyVBvoQv4^&P0b-=xoKUtnD| zz9qiP!>n(~x5P^E5BJ1Q=UMm78fRjqxT(*ucB%E#^cU7ZwqCh4(QMn#v5&Rb8&~ipsUMKDddJNgT=;AqJZn>0 zV@o`;?xeNy+Fw~q%X+ES%DYow{X_8Gnxjt)tc_@mRNNQO=-WE4bk7$0KhNdTIX~}w zo2{ILPgrXS2lbt}hr{%%ZTLvf+Tk}<#Rcm;`7Tb3>o94r+{romyrTkrJHB>|+4_w$ z$zy9?klt{BKi~izib?v&u1z?uTgqQRUt&E}>)ipl@qz5@XzM((;g$Z3F2p7F5U>;4=Np%}-oEKLsWDi2ay945*Iefs z<%^ZxvFv-A+V8vgL%u#AF5Y+_)4LSLsK$}>ic8{F*Yg_JmXVY30q<^khL)biWHQKA z#X5YjpG?M(Vx;!kl3725N4DBSUb1;ll-&9jI?;Cab**#o-!tj{*M8TR`*>>2F>+f^ z0{_HS=a50puI=g&ztpEJHX)}u0&P&P*hVjMsjY$a?ZiDC@_*lRm1o)K_YEAkpH8(& zOe6=c@&kHd8+B@*zLhT2OBc3mX&)}rpEyL{+N5pPSTi2vw|vtWg&kbSe%`4C-*JII zs@pnUasYm)9M_9wd|!EvlUJSOI+lmhAA8ZS z_Th|nu#@xI1s|Lvf6*t_#;(O#y6!rHa#{Q8d+MM|_9CwsrH$eZ|0fT9(=}VWuJ0tv zDdbH!=7XM;5Wv zelm8fp-g(^_l@!TegD&;V?OxLwyp#6D#w0h_@C{_s|~>BUE2nSw9mN0^?Zf@Y8$Qq zj*IWw#!mRfSJ)291;=nry{>5tQ7(SiZ%b$DP#2xhM|}Wi`3~N)6&;G*H%;vBlD-tbIZqA&VY7hBMYx}8f`_G=%xaL&As-%rtB>AS=vdLs)t`LRBmPm>q# zlxMERxCnf=k8Sxpf7C9vv`-wIJ4F7F4R^?i5BxzLatm`@)(jR8aMiVR$cNcf|3W|P z-Pmf2cl5!J$z$%uHEc-cj;+KS_M>n0ib3*j`MEmzgg%MQ$ws$qNAKdXv7q(+=${<) zNT>KjXXY*FVp~8TbjXLz5|E?8>taD2r*21I**W#}7tffGYI83MF7`e5}+J@wjpK34Pq&xYa zTv(oEjDs_sSEoZ<(7xto;~M+wrvvuXMzMwsK#@c}w#%sm^#u7LqUo|#s|6?EC@C|$+ zw=t$TPCjwt_<)VYT)xU4^w?NM_dq`JNZXW$zpgVcpl{S);%@z%jQn1I+&IGLwb%Tm z{K1wy;yHb)L%np#*0_Z``XpQb(=UGmT*cwWY}YG~Zs}ZX!3REz&vZ*BzKM^@;FIFa zmcaVu zZKiMkvjttVKig~z$WMRl;XL+cdwq}k*o977rmgy2%a^qUPw}W6J2)qo zVIONkYpeJmZ>MXzYTrVJ##T9>V|2@YTLV78X5`ieeBoC(V?Wy~SInb3?a>x;v$@T|2zM#zc8LAv;IbV%*BgA`YQgZPBG9}O1WY>UzTU`b#;pGjdShuaTgzr4f(yX zt+wMFyRZ-6=Wk@^%gPs9jMvoXJa*+v;CyxA7`=%J^djbpH#o*0wcYi`gvRXVNc3m8 zp{?QwTZ(_`lEbnW|6pq}G)^lQPt{2u+NVCY!DsD|!{7wH85yXp z?gN`?Cmw2-{vO})o?gj`)6TU) z_`dlC{>Kj5L@&nU<_~dA9U%VDC4TZJHqd^&WgGU;R&CU8)3f}84){}b%-0$t=uf^*MF@`Sj zn2zw2kI;h{X`lEl7LbiRt`(=)h`s6K{}Xl};JQ`ioxtyR+6CLlBbrg8Tpc50K@?GN z6ue?@#1e5trRd0rgBgt#qk?UeB#t0PA{H1cc2P&LUd4z7RDwnaQLi8%NyLJ*d)m$a zch3DkuKDJg`QGO_`}_9ZYpu8Z-?G*&hm888Be|0eTifFa2H=YxefTL^tV@xVU$BLC zbVWDt(0Z5ukps@*)%)(*3+CtrZ){5caLID5{1g7!o9@()Y>7X-up1fa zR;;rwMt;ZXPF^BExy1lFrYHJ0HtevIz8yEN58Ty9oi7H79lqlc?riCXy!gN;o6$Ah z;0eEQ4j0C(@7UrAKk9yc(U-Y}e#p)L)rAPopie$zJo=zNnA#NIksJH}9?cKv3jg8(eUGpSVjOWqY~urTfFC~E_0HyF zyc?gN!7<+TCGU_AU(PX>7{%`T=G*iJH*zT7^PyXIqG$d~CUz2&$Rmc}Sv;f{bwG7X zUvSO8=m%!#pX{(sKDyIi>vLP}5dP@7F^DhmJMoPk`H+u3jiEpMB0g##8_G%a!3Xh4 zZ*-)8ZSmlI?b(S=$j)wXCrBG`eG}XFjnIg zKZPf`&zNkDXF4#x9D#qi)j9OqKHwcs_?E8_`@>-`C5Oy?*yLlpbmG0G5cxFy4_u_$nz@XR)$Kn^c=)}i&HH7sa z{Tqirs_n%Wc7YA;=mkFM5l>{*54?+QbV>%cfCsq{pLlRgPUE}u#7_7X`}N7b^aEG) z#SZ$=7yl3|jcdH-Y5dctG2uX;>_%?5Wf%5_b#3toGx)|2Y|$?~!Y&-Z7CvCzm}(~d zz;Qq1#Wz0Hx#~y#vZ**O{=%KOqt>ceERkFN1TzUqa)@qhaEAsfBo zRexmGPwNZ5EPlb3x?FuhM#pPII)xW@)<0~rt+x1}Z+deceX3dEgs$Nf-pq~Zh7GhQ z0~;92K5+qV*pR-B$M$@P&ddwo6ej7a_TZEF5Ql8x5nkX!U*@dl`SJ@NA;13dDi*>U z|G_hv*oMx;G=wkw@@IOpk8Sj;PL=N*hgsv}mG8g>9PkP22J(lT#n&r8KIoop^@9(# zf7Y<4LA8I~2lOv49S7D(w6g!cX4bAb$LqGDP_ONK5cD8g&c0R)Itow*n#+3u; zhR)%b-i%2e{EFR`Lk^Sc`6@l*LyQx%$l198+|ju?fi)4w`4Jh6&#&}}AGU-m_M>lD zfD61hhfe5|{*3`Y;*sO}WH)wh%%^L8*=IcV!z&%=8#awYw`w2b>xUlLh(7t1`i~zN z+j-hHPOzV~E^^^R{-kHR(TBc`$qx7@AGwX~)4tYzWnVv4X@&@I9@!G5yo9FP*2hc`S_){=DU9R2b+=! zZpnvVekX?D$#H%sE^iKL4>$P0D?2y;k&TSTR#(w8{^%9%{DVYrk{Z5cc>yorz^+Br7}fWpcU}!N0{GImmoX zT=5%z8&C1bc5IJl;~5*?^oK8FYbWPxOPBo6xpXTIkkNRy+LOt6>KpyQlJ@)u-u-r- ze(05+_%t5)y*xvw@aLFu*}O4DpX?wf^!`2l(yMtUJJ1_D(>;8UiLbH&dDs;n}=} z_O|#YhxYX0yLR-B;DLa!JF~qbN17xhlFL-AQ z=i@{FFak^P;W(MugD%*_*kT&KkPo}kx8Lj_&hvTx2dioZed3W1!IgLgi>{NZ$LNIp zt-H#tj?1_1*>_K)cm_|fr4MltrmUmNLE6IyKS6wr&VBGDHo>wjJ<}sxibr&*Klbv` z7d?mp`ozy^A=m2E#q_~`>KpnXC*2~tqzn7$pUi3#wT6D+hz-OW7!yP3fu7*7{?7jR z)t-OyZ8019&R%S!FLp9EJF~Zb$UfqaT(B)qTcd+U}n zPpqOReA~i+@%bJb>5ty&Nd2Tn;Ky{$Hf#-(+KGdWOLXZN9}r8(0Ox9Gdf>BsSKJ~y z`@jW%qi;C%agKgqaZ89k>4|K3f=Tvg1Gv^V9pRZT8(;2HUz433v~8Sa2eHMPmU%D? z%A4YtvDljq8=vI89b8)*mBD47AJU&5}bPA(BRw*=hQb8-waT+r-#iUc&Hx40=R?= zc4iafva2?>#@E(<@|s(kbNenHyKmQ;sd_;Dc3jA_0Io5!^AREE&?}vpmpUc};K#Kl z{>iqkwOWIr514gdzWYMpsAH3xz2zghn{MfqENtssL}%KF*K#hM(H}d)C|T*5{BTIW z`s5#c%AAcn{9P>4#=5WZoWpMH)wpL%CVCe`wbc*b#)CC&_dkfA#U!1*9Y9uIbQgxF~vE2ix02^Gh&Yz0T+A$4z-o9@kKB6BRBOqMln}>ls{mf zPGQ+S*=k65w*HJ4xYD=rwWCWpN1Sfoc+}PyVyLmz+x&^0I=?0>pD_1?0esrmdd&H* zbHSWAPj@im*&K6TIfG8M7e}^+@J<$O>7V_5XMfk&JtHN?(7itSk^h6uZepl-!Pf94 zhTw_K*+kzk!SCr_&QKq~s~96zh(YuZlkCOk+{fU4clQwKU;c%^`aB)kr%(DZE**=t z^des94^MDY{PG1jBcqruC*u|;imh-> zCfI@ne6qhBg&+1}3-%#D?0VM3|15_Y@f*J3fj-1q^7BjBX#8d;cI4-52OHvpd?KHz zsqG^#pAgIO!*A$>4#lk28m)tD>Cag7MW@EXD}C9@Gwcf|Fy?s@&-vMUhDwZ3V;B=| zc`se*hp)1IV?BJ~$@MSmnsSdABZl%N1WWuD{=^IT z)t`9J7Jk#eSfFn@um*=$xFA35!7F)uCoh}Bm)OCE_+?-C<5yw=`}n}7^VE!Fm4C?E z+^Zk9<4^onJ9ft>+Zm7E=nHRn6rcDotl7^Va;p0oJ=X)L{EdEKLm%)X-_k2z5nJGu zedROrV$Tr48+&RG^ZZPFY5gmn%NP1`&l*3aPr5f29@#)&YJGh1$ybG*7xL@~z2Zk+ z6+g%!*0ZVj;8_>^unk?RIp~ef;1a&+0IrN_Z2IamQ)I*^d^#r2u#dP;S6f4H=^VC` z%YFEuYr=mO5*x_v{vyw)ip~5*uBCf558mOGKj}}r;P0>sD`Guf@J4^lHJ!W2?{KC+ zJc=jcJiYKwdSZLLkkc4^K~5Gw&F|U5d2)$0A-+VHFzS5#7KiM@R&0X5#vXcv2Y3;) z*k0V^Klo@4hhg^6Ki>84TzaJkafA)oiQeH%TqPGi#XNl?bs<}7BPO^;WUZ7h=v#c@ z>#&K}t{sSLe$zSZtFN@9M}F))7=|zQV72i^vH6Sjc*4b?6aK?BF|n;R!ZsQ+g41^o>t`#_z>N zcq9w#S?~7UhmPxmbPO}%fZ71>c{Y+ zJ)U8ReYAx?`k%4bAJG9P*6&aUpS8eP}-UsSvrn&q6MP6Bu!SDSxE{zHd(C zei-BPCD=1p6eGlDxe$KU(B|&y4n72v_=Hm*`IWB3UipK5jA2d5dn#@onuNR?2Bx%= zTVTWc3fRdy75&mR`|%I;lKGft$Hj2|$={s=Gi1Yy+-3#ag+Q{nQC!pgF9u_$^;EHXiKfe{8Hj zwlxN9!2y54kMH7`@#qB>#Jkojax5RvR^H)vY%Olnr98_H-ao}B;8a|29{tJ#YzN1- zY63pSURy(5$D((!2w!Rtyou}dYh3Zx2TthJ{L}iTxDC6`BO5;TMRtBJmKu-Vyi3Nr zgJ2I<@FsV$^BE!UFOjccRZYu&Y<_HrZmreG>H2IQkXy|s#YQ~B5`CJdz!84LIOk}C zoXdaMpAXQB^L_ZbJmVbu#BuzpFJM5vQ3t@A`m#Ax9WREmAAhhFBlM@9gjIQf-uRby zGRXgIi9fXuKXg93id$m6Tp(BR5B4&jlq={KX5fR5c()H+lh-(OWgK;narB8NJhK=5 z!Ur9ZQ(mGQ804qqfgyDZ{K16h5v>t<2bx^t**D|k4d&D+{1WEX+H`CE3&zRjJo4fX z5BitO;YA)1TiAea(J{S=33#Fhywi_kV!POgZ&+6I_$_{VCzTji{^T<;9*)Frv6=n& zI{D!fcJM>jcoI{^SFsOuZipv#<=-%=HsyQjOxPp?KjLTn2NwAc8R=IY04M4T{&QN$ zJXq`{8~L4IyqJ5bkJt__@vMFpAIT|C$rW@hpR0TLI=$O(?Ze!H4ap#usm-i6$z7+1 zytB-EpFAfe#_1dJSv96>Q{tsQ)!mM%4cT6t!lPU#?vV?hauge}i#ieRVbYfT?CL!E zo8II}ImcW>4x$rSVtaZKhxxYr$NwD{8@%U7{4+NYo7j{5ax>klQRq%?u$71Sh&V@< zuFvuX7=SG}GQUwDhz-7*YpI>sUoM7mwM6BBU$`YRJn4g9+Xth5%VYY23mCzlI3z#f zR~=`|cf=ok^A%gN8JjND4B`X1c4c>K!t@MFut3j^5n>qoH7<$+WNjP2#SeO7H@rKS z4z(4p=m#|>!a9ADRX(OGafZC&FdeZ4ed1XkYAN51tsY`i7_}e9@rZmkj@;2a%9rHG zKEuKn)jiH5cVmzBXCw}hpN#yE9^nZ7edj;0Bp%j>@I!a-sh#{JCde)Pk$&jLmi^#I zoDtU%|ACR_9POOre07c3PB;2$J9=*3f;j~L&X<$e19tVp9Dsl@;;r?8yn-TaaG=9 zTQQ+NNQd=dy5o2H5Rci##~AeJc=fCwc!e>186S^giMI6Pw|3gVsdz=VbZK0D7>^Iq znOI6!+8PtT`gV>u#1F_up86SmHSfWiT&{)_>+E-&Khg!?p%*sOhppeWpYsq~IUm6( zyuzeD*@eGoj~_ZGBR;$3m+VA8wU=YavD$!6;0}qAjg52zpY)~=ZP>izxAEwQUf2sS z$ai>fyyNJb?qM4K5g)1@jMMlnUeGargk>ad*yqE(wy?oowVB`Drwtv#G~FTCrc3+9 z0$W7KYyjghpnp7+U;~ce0aaEQDL?knL-9gC^v1vGkv^M)=s>(w|B92o!=!Vx(TD!@ zO=hu^{Pa+Y5ynv4h`s7hq%B?Omk!Ab^Y~#K`PH_u4UcTh z|DB6pdb0J~e)>Sw*{DzZ9E07G{@TX2F$EvRwXNUAw}rpJB+`*j1dYw6|xxaUytErCIaqYtODRVdXB6zo^_gt2&>zRXEV=@oz`~0rujm?=bwBIh=E!P2d7DkynlHhiSfc*4u5Eq)xR7^k9uhhzWh4xJf#Z|Ky}TSK;f+yBMTS9j2s)h(-^4gK%Xr*@FddwZlIOd5^01N$(wcK*+k{p&@Ip)=JI2tYKJRFkdqtRy(Vqtp!+XR#WpQ ze#Cd^LcD}YwV?Txd89Q%_GMGV#@4f4zkmq@6SmgxV9C0X`WjjHhkZUFzN#<8B4hGV z#P|8S`KdL1bElVvyqn$oX`j1;td*NndLR0$L$43HM&nu#nO)~`UB^0`wNGU3?>(E= z{@B(!wKbQ{+r<+xgiq0dSReLiMuxnlAW{`od`nTRjr`8IP+T8rux{X*PCdos5TP~8n z)b(nd)?;Fwm?y5wMdBc$dofe2L5|z!SmSwPwAd_mx2~3ZTZ=R=!;?9Txx9IwwF5Y_ zHNUa8ppE!G=JeL~_Tvve*uqDRqQ)Q>ImKG_T(@dQF}7>K)=B8pJF)4%G0eRtNIVm} zyeHUk?_@qb}Ph+ zS7yI5`-#xALzm86IDnjEz>DkfuA^ET<)7@%ceaHdm;b--1iXv+n2_)OM}}+Cu3vc<_tQd0>>$Uye_mU$QJhpS zs4c_=Yk=ewkH}~}v1@^3w+<;5c@MSslrM(%p6oq&atOYk6?#nQE+N>zYQt4)In_JN zU9004{>O=T`McKXJ?Qeet@qr!ZeZ=%8oWHqzxb4M*hNnNa>zAq=kq()K*dfuflsrG z7+W6~*W@3uPF^8{>))_1E|OaeCaZqbGW1~%DGrK%bR_Ucf&d<#pHB_^J2T`=1;CE_BW6HEaLJ;d85>TdTv~w)(cUn(PCsA6Toi z{$ceW)@rzGSFc@rfBmNIo7U<*^@g=>zDqVZfph+Ile&|O#Vy7Gn4 z=GD!s9}4{@wEOnm*XriIw(qt5;E);m zX(2u$PpcdGhM0g4*OlPQJs19OkNc4x5t574v})GoM*O*!sD85Mt-ca}_@4TXPpN7A zKM(VxZ-va4`hR-dFXTEuQgePVWKMN;=+={4PySQrPeV@%Jt`zG%!kB&*PY~3{%G!` z_VitxNBmQ5%0IZasP)on|Xk1F0NO(<|#hVqgdhEN^5;oG*G6Gcjo}_Q z{~yKw=kUK&%(2WL>ACl5;?ep7EXzZ#o0#9RvpJ8v4`cop3ZK0!-u%1ZxL=n-jU_X^ldDHKu$6A9AL-g}fx!v90PG~u_*UVls zPY<0K`bKDBc478Wp?8Gl=jP}BXK4TV{pW88oxO1O!eJW^+jv1}c9+>*uG@Is#!rVH z9XfB}yoCpb&YVAU{%)bO=FXaXTIjZ+U(Ehu_M@REg)W@AaOMsnwJg;lSkEmV*2c4cCugS@jK|jlLt@s3Eep)*54|$YY5}&{FrLP9VT~}JTdf|(7Qr^ z8#*d<+YrpDL)ByO!B^Dy@a}&FsR@w#uI?Q2Kcg;7_WwlaxX|IDCx)I9dUoj8&>KS5 zao!X9cu0(grB8;=2z5V<`TuwRw-5}f-}s3209x4yRUB_gYVsuhgD$ zy4Y#{0(-Xhi8o@d+DM%(?u)DM52;JGhQzB&LVWGBAvL)FJ>$L|@xN;i<^ufGx|{fB zJ{b8_JmZrrCP2B~Gu56uDpbIAPCT>r?B97ksN%aGN% z*2(BV+%|uF{0`Dqtd}3mZ{-rPl5XWt^9S+VJjYx~ep0ijd12FB%A5v{yT%2h;xW6j zrTLllDsoyYln2K373(l?Y94PbMm?Y%T*EwDsL9N?jH|BcwHos__VTfQy`oBnYX|4mmVh2Ct1M-mjM&&GZ z!7oGb@Ql#MLMf3aYW`P*&J6uLbgS80&HicVO`#u$4wyS&?(ERP^9Rpg7kc}`+ZXP* z@s1l`96BK+AIyYaxA3}!>*ueZe@5s#bKjYJXh^O9!qB}#8$##KoICU1L%*8*YI0CW zZNV4h`acRCy>j%*H3OP^XgD0JE4Ws4_=9vNEMwzBPGp=X5D`xaGJZdkct zk8OKwJ0kS?(A^gAw)p^v92^8;j}IQ{YleT9_zDzdvkpCKHrBA*UtF3{NehXwGVR~xj+tgEtBuNW?&6lexX}2p!YP2 z0q*s8@4EQ!`bXFD#5(sB^}ZVNm`~sfPQ+w7=kwwhUCWd7!}rB-bv(VnE__)hvX#r7 zFUD)bCgwQus_RcM4*Tj{IwiYx5xTWbVvULY#T;=~tx4zNoIJ&c)DiS4Png57f%??^ zP!2RdFb9$g)Ld$K|LfJfRgH7kklM%p^RuStf5XW!VyF5{->#2}t8^>BTURnqR=2^h z>y>P$?)Zz4IL@EVm&gl8V&pj?c$5SEA4#OHP@BM+x*rbd!kkfFv3@51kk{J3YcY5- zw=wUK@A;GKH*!5W#p_-ZvVQ8C7uj9^Qh%Al9Jqu0&quk_`PQAyo5)G$=CZEG@Js)r z)SAOh@_(N93aPJO5IQmR{?OT>Z-uP)Gt!+xj}E;s^uEv)q0L$MKP&X`xrfhP5_4@Ip${*8csp$guWR1R_N-`eOB(Xazg0R(0;4? zt*w20KXa%}SuZpHh9~uvH4j+At2)qiR&@eB!-$$moz6%24J^QxI#d3Kf4!mBJE35w}B+j20lB-@3`m50C zAvL```rDB8{r(SYbHm+2_W8fQ)`a}OS$Gl))eQXD993KuM`0eH`~dIbs`)JJi|68q z_%Ggw_15jJgYq-$qiTKe-yB)|flvL?pZw>yXIkV%>pq_8(x4DDlFRs>J=4I*)^UYpA6^H3ajy5M^D{_#Hf07GU$!UHKJ8F~8XYF^cHrBf62=RM* zw%#2GxA-I*!vKFZzuSGX`&vEvh{+=+hlgBmJRx*yNFMk|=%b-eggzg- zD74$mZZk)Pz8`wr?BixH2t8!(A#X~hb~;Y zaOtg~XNMjedQ|AYgscf&9&&Bq|$Q#S}Tn61Nk2Q5G-2rWqWmwcw=jQK`jI~ zd`|5vcEX)`r?%R_xBEO`-`wB)xVWGzaoYbbcFk6ue_7Ug=+8Q!>l3zq|2#CaeP%6J zcm~osAfHk%sI&NB<6q~^>Lh$v-++JlO|15eqxh_L6g$+1WKjEwfBeCmz6o#+oA{MU6dc|`n-zVy!e*uT>n#t zlUux$3;3`YF8;e0KuxcH^_(ahS;uyrkDb+cVu9=D=KjuA6T1eZy;!TpRae($a-VsW zI$d6sr}1npNBoy(KN3=Fn0w0YoyV$uOYESIfl)e;f8|uQ3te^nOzg9!(RmE~So0G9 z=$^c;tD67F5r{vCgZ8=ZD*wWwJRrtf;}RFu#kQVz;t$q%%-7scA)Xpb9#m6p3aNdq z&B1_r1Fql_M#XJ*u~sLhi~VA!xDV&n9p$~|b9KD=lRn(z1#4nGZ1Ht-3HEd^kr+l6 zISKi0p2#+G6keTY-bg35_Q4|g%|osA%L}fP$Qyh^E`v!qS$!iHyKZ2f!p3T6wUT*= zH3e%9cL`ZHu=f0fka)je$o%;hA#2mtoL#@L?r%L6!SnSYb8T&03;0ZEG4$Y>2haRX z=o_J5hOQ3%B=nik8$ySM?iJcK^s~v&CZ7$xE%e&Z%R+w)P%Uv}R%5djHVPLO)&k>B@&fFAqH}^!U)Bp%;Ws3Vl5E&Ct(6SBFv-uUPQB zcIDc&edn&6yK-jejL;`Se*YqL)76`<-Y4|b(5ph$y}uN?Af&FoDDcsae!2$am{Bt_#DhI7?RR0qR5cRhO#s+1{Mj{MB<++N%kSp$@b*Di4?w zstFylCO~J0h2#e@#9Yxi)(ejd=}%q7x6C`6htz8@3!Cs*KQdPrXRTqFhp4gPtZORP zWz?2po%nx5h<~_GPkb{sf_?W~sBf%KySC@MIfZ=5*6tUgFZvPBT#IvDZK%Cit!9!h z)l>2Xe^dMLcWcdjadU{zig{xVBwpjY*95HnoDh;<_>Xwz8Ux?AwU%csL*7w8TNe=< zt({w!lE?U-+$L7|uC3p2EY^!R)_lYUxy?E_A7@|rhtHdzi`DFID}L~G$HWIjZZ^?g z40R42=+nnKw(AOAzm{K`2VI{Qx6E0@JawvTG=7U^Vu|Y#?&UUrHCMqeom!t3+tkbS zN+#{~V?ED4abMmQU&nPG{fWEU;>R(+)v5BkvBYQV;qu0K4(wPXlt=KuFVs%tHs6-3 z`HgrAxAIAK3AfJmk$;en-?s1qm)67hr5_6^-OrXBW3gF`R>PYs93K+%-Rs(x?&D|LR0}$n`Mm1IKcir+qbQ=e)!HJW=ate44GWS58VFQ3VQ)^qV< z-XRa*$(&XnY99B!najIp#C0+;fe*r@noR8po9a3H_$JKqzs4Q&0=}tshjo60%-!2g zEk{Q2%`x%+_>g?zdV+PQ(?iz0#sB6FbufSOn@{jPZTOkG-@2FDU!Qn2o^cu{AO zcJh1cYlsYviLK5fxBcR(Jm#}`M;`{V}tMr4+2=$6fF?Nd)^i(j#hEcmWYnh)5q zdLeuBhrCq$iP7-uT)ITsIA1P-Te^T%xD|Js$=u5|XTIo~67pTWYU{prb1re&`lEBTQBNZMn7{bW zm#uLc#~fEYx2|f9L=Km~kzC&SlDVAqLVW4hxN1RhLLLw|khL=LQoOM)E{3Qtor}Nn zZS6$;iKnhZ8Ve8RoOp5{M(?fabtnCHJnN9+r)|epqau8WtH^h4ruot*eq56wAKj}1 z)pu&U+Djdy-b3PPkI9AXX`dR>Jks?e^*g=NFEV!|kNxCxPW7yfF}2sfG2ub&=>zxh zq&5*N;0xAU5Ah?|6F*A)(LV8^e#SSo8A(6&JuwCGL-DEOILElovmg0xU-^&&U?2G| z2DD$i^Hct+uH(NY`_vTT9Qm|qpJGF69x+z@;CJG5<13%;I=DK_+LRoL#CU53;=Ec- z&gB1Mp%}-H#RsvRFN?kOg?Bm-YsR$_^FjW~Z_NeRo~>Yk-Q;ZZ2R>{oPr?O!INuzp z{%+mHnpdg6%^%pk^C+6oBdy(S{l**WG5oH9Hh+BYIr5f%*u62kcq=~0XB;2b#?2#b(e%eT<)!C~ zwbu1VGUq5cu1}w_z26o{Lj*mny$whz=a<9F;%P8S5fg>T&&&fqdno81uViA0MwQ{DW`MAFT2XajhhG*;n%0 zF*bq^@pGE&cief}=~w@-#ShqrZt#IGJc}jGA7moC{L#E+>$m;IHTz7-17g%0se1)*Os+w4WTc6qSl1Q8{+`%;s;LY0)O;h zeXvP!184RlA2N}xpFb2@#D zbzEadb!%&%{`iP-j6D)vRY!bSZg zDkkv&m-xXK{-%j-`AYH1{s?A^+saGU);0XbNBi|}>wo?Bsn1Q1=Qlf!I;vmcyS%e^ zX=id6gWmCkUomewu8V&qv5p;Er;CBj4URdl`C*KQqb{lsy85?l&OgLTF&mB>-(h@= zo3-b3taE;`&&Qgh^-EXuGTN0s>6Ok|Vax~kuYb@HA0gi~+3&b>$yr;&23;G&n8wEw z{$QEEPRj+G;<>t{eqY}oYZc#}=X`q6mp<$J#-KyE9_IqndVp>GjZ}TmiSN$AKYVFV z2L0AX#-;bsKf4cKd<;1Uf90!v;B}<(%yy&A@It42ioW4aoQKVk#O5(?i&G;tMve1U z-^H|%nlH2!`^TE7`G4B>JHt00q&ITW0h_}u+lg81$i`cD%=gATAQ#w=oa0<=^+Ct_ zq$jp9PGc3^(G_1CF%6@12g7`p9P~vt@^&8Ac{hDjPrl2U$ai|IZs@0^ujv?Jyyk$$ zLA)V+`i!+iamnVeSq$=Dvcd(Ol6}NuaSvl7&Wb6%P=C-4>7#z3-?4A!YTNeJwHS;y zd{@V8UlIf0bUhQS|MlB`=g>jpLw!u2rOLlEzwDU$={Su!c=2KXe#Y~gkIKvR`OY2j zA_kU5?9}&mHpg?GHam-jqpa{+d$Q?BY``{bSf7!vN52_kWc{M~T%2hPYW!(^WPjtN z{@Ivajfn?5HE)i&qBbFePyMSHwvWBoP^ zk^kacZ|$o%#y=j)C%$&(TlSHGy^Gs%Ta30XU5xgsY{tb0AHf&>R`-7>FW5iILkHy0 zr*Y^S|Hk%#%j&!Q!aR(@+gQK0HgCNmE{RuS+NO{i)>f@A-tCMU=WM5AqPREC16wDx z4#LYA>qb9km+FwLsF>^i#x;7aP3;@0?chwGa7S141dn5Eprg@;&68TsG=KTseXVaC zbFQ{y+*prhzwfhs+izU*vfVUZ$T!LeGw=cn@IBUd&5NUtw+^ar@D={iI$wKv5w75` zKGN6?U)3i*@Hgs>?tF@O7#w|m#NzsyzsKaL@9Jud^)QRrrbJIWBYnd>9X6iewJ~Y5 zcYUL6{KluYZC^Pm%ZQVam-gX!`!Ign`>xL(AJ6GA{(77) z{v2EP?)CbmF?`(i-1@pc|9{kYP+OPZ+Hla|95RQ`VGFF(^xbuL-W9T z#kBsn@=tHaevMy$q|*^Y#g8pJ@hdT>>pkLC>ydGuI$ejhR%x6b<6Pt47y~<}wQVdE z6;Gej!wiW^$4Od`<+v4YwLS|!{yF!j4!dL@m>z1BQ!17 zn6v)ScXHE_w#{da@8rYB$Xod%Z+&Cbhx467Hux!4R`b_-;pQF9->^%EMvae)+b#^+n3*sowj~E zRvv8iXl-H4$ z+MUhoXT~xveX<)H`iwChu175Pd+}JD!#7-a?Pof!J6>x1DxTYy-^dsvzKb(kcrW?w zgXiMDGT7(iH~Hw9-sy3q+I`&iIQ^9DtKI0V_UbSW(y*Soq z@m_oAzj&R-aod%L^3!pg&llmjajN4vr{|6PYR?|yBc<`Y9=EUiwXF>Gm(k9(b?YJe zru*ujeH}x^!)S}zpnVp<#;V>s?ud8$O2vQsuq`GXb6))chUt{7jTNH}>@PW9U5~k% zZfYOf_SJKz?b36!8};5k@bhm`+m|orl7n1i9d%FtBhmHFh%Kh`sJ?1X$7-8t9gcXe zf8eEdsP0EwjD?!30EABV|%Nuiw2%;$1=X`ByC=ka2>n5piouj+DoyEA#6L$B4N zExnff9~1ZpVJx&!|shi%&%t-Epj zX+1jD@ofFZ3wg*gjgiV+zQ=8k+1gLe+R1nQ+VA+ZuIaecW1~(-y>^@)*RFUSeZTvr z`<>>G%*8bwjF_XZX>5)99NV>Rbxh{UP4<#~&hcR@wyRC2W4jp7uk0_?&&K-8zLGXQ z*80pbV;B$r#o;tB&gnS5<4qg9;@SD54XaDCIfiO;TWxkm(>kBlUHfpJWB9-q*&0{I z`G9?7t(?wppLqA39M!Yq_8W&hBj%>@RUG{x430STeOf1#g&r!mv8O-fulB1rp1h{2q^wvKI$Eu7BfH-`#fnaob}% z({=eA`?t@zY}S|{4(JE(<-77Y-!W~Fv8T`5nQR@?*7>76V;}Ix4(tP?wP}5}cIz=V zW&e`j({|P$40UWWpxUOoANAdHY|Cq9CV$(v?I@G;oTJ@zKlXLMHf>-1&~wSY@>E{C z)dxG7tC@>+O}5w8y1p~|q;u_eK2k3_URxWhe9#vks2v(F>KBeTR?u(vYfolvLWhPP7}_`F{Rsz#9uuJ@@0ePwzwUE;R3{^iB=$p7&00`}{vJ&rN$))N`Yr5%sPu z?;P>$kmrRwe*{;qb9?^Hb8Vgv_TCfZy(gYSJ1yjYws?;M89kHNXYoAC=Gh0=L14>$ z3Z9Mi{F3+c(2sW`cn;ha4}Eum=b60Ez;EYy78VXXzvvlT&n~%^2CID7HFnqE-H+z} zH20so58Zv~p0)7oA33&!JbP!Kd(~aPckKqY`2s!a*L`E|t#D5UOl%5yW{5pKXJmZu z5wPvEM$UtA_j6eDm2deO9{I@_SNIUW7l&ZkJpto&BKsT@7kv0UKen#Sm-sXL;91}J z7sI+{rSHa&#z-*-R(fv>xvhcQ-xy>(-^HcID8KP;EMppbynZ9bkd?3Vd;X87#&2!$ zM;i+4?sw+p(KxVLgX@M9BLwymP}l z32fmEjyxOZIpOh{IL|qIF3$72o*`pTveE;dJpbuAaWTicLA(dR)-&XM!@EO#=jWc4 z_r5~!J@IZU?@02#XwTVuF4Mb5_=)%Yc_!2|pPn)8^QwG@PUwNoBKX{e3d?6-aVGRr`pzUu^9e6r|6kN z`r{My#)n`Q2H3uM;;X&Z#)fo@eD8jEgEc;64EF5viuku5*7V&vfDZT?dpT}={-Pf~ zA&xa3cqYs9E8?a=={a-Hb&A*Q1GD^x4B`SjvnBq?!ro+~M?B)2U%-YKhWy4GS?Pt`w)9TM zts!xd4~aE=2X=}VvedrDwV#Z(emf2~^gqhW*7jH5^e;xy0omz?4ESMZyx`MTEMj+< zAeVh|1-$!>d}q7Hbn%^yw4o2WLSh`5j8TlilQEF*bfb+A{LncP)A$eF>!USU6op=9&wPZ8V~hr99!c!hUlny0e!z0xh))46kugYU{uM#uPrwsZ;WVmW^Bh7ad!OLlGORl5>hvz@V!{`5tE`Wx-k z{rW*YX20)rZ+yfabe&W3zY-^TRY`E2SOA3A3{x}r-u z@w@w~kNSsx@!me!PMcx_&-lkvV*okJ9~mk~n>d7Te3H?Y{CuQ7S^qFTavq%; z$1y}+dar-cnRD=pKR6M?@PbEe>bJh*&DPlZ(Vl+E4nN|3@9AY1{23oF^oH(14dEcmm}abwj_oIA$rVg|q3 z_>E`0Xv5aVt*#w6KAHGA-1Z$4t)JMBTx?1oc<`~+AA8dqd}^;I@=h6fUkxDd%cFGF zvFX6azT%^~Q=e=@-)vbOz#u)sW8+8p(L{ zOegfpXB#WUTIV1&6CR95zjR9nh(5?h271OD+&Qn9Zycb1zmwuaPJWRzd@RlMSpy!_HU*WAVP(E2d0 z^NK6Kjbl9eH@0KO)W7)xTRkR79^yP1 z*jy}tD>Vo?^$S}tJ;q>m=S%QxDE2DAv zi+M6Xg?D4{Pj+Upj$($BdZF)HhqgV;wFMEK1TQWbFMbVgEjg$rcYxLy^w*9@dBglT3gafa~~VwO@DNT2Xcu~ zbVdezXm1RBzz|u<)Az^lYxcrB8zQ=w1B}bQ;tPG?2Y%EB$an4N+}aL1!Lsql?wEG` zTYr2C|8S&V=a)b7urZ91!!hS*LwDk2-<@Xt%y+SX?DU2Q{$t&V4%kjE7B}gLjQWMO z+Qyh$L(X9fKIlDH-VN$qcKXt{ew+*2#_+yB?@Xl^{n9Djid}p`T%-rQHILxI82Y0} zwh>FbPs@8(*^6Gh56K$1{~O`GbMVHt^k6LC#YcVcA7lAAkFRRaHgsnUID&KQj;?c9 zdm;;r)i!w2FD&yZIMpBjr5m!br?Kc(pX>-b@&|wP-MDb3f4M}CqhEIA_iPOZ+R~Y0 ze1qKV()`LF_y`{GBA$y`bm|yA;)#BpL&xwze&6xI7H~{Y^hW-^FOQ7)fLUY01)l56 z#R-1-Y1jK47gNM>af?py$Cr%jT*v9wm~<^yTZ5$!dd3qUrxSjt_9ai{hp`^hHyq2~ zaAHdbWX2Ocsu{e?ZF7iS^tUBM7j$GiF-_jbFW;mSa|qW!Ttk!Z*@r#YoDK0K7Qi!| zH-_;Aafm(Wtno)IFa}KXBl63A|10DjhH@6&h|T6MbniF$U{#FZmp=TRK4HW;>PLA~ z8@hru*z#RFIENwif%S0LwD2V+c>kn#bCQSM#SB||#;bGWJT;Ja9lGx1H$Qg`%=$kZ zs8!WSauC_XHvZ3+VisQDhEM8K8$9qiH3C_j?^*$#=m1XmCOzVxU6AkaPY;gi3*N|Y zJja@gj7t{$_^`k6=$_7D5@zUG4B_Y6_>Et7=P&w`BO6bRCnm9J&v6W<>WlUxHWEwV zldXJr4*bHn{>iF8dUZ_@&-j2RdCb;%d>#JyFL~jV?fD$Nz&<4%TdwQA_g~J71|7pP9I>nT4wL+io;QW`g+Kk{ukX)m9bla1R`|x3 zSgv3EuoL@vr>z*m&Uj!CeB*)Nt5L*%wkJDV)P~xS3zqDsLwt$P#={doCKLOzA->f2 z&h?w@`r-Snm9%AJu^guDhb?)+7H-88b{4bY$hpR8txqrXgFo^+4;c^s_^&yt@Af;N zZpa8v`lfsSC1&79%=W$gvbX;50%z>RHu%N2JVckaVopDDBh0ghWAF&CVk>G*sh<(U z#$!9W#D^G4cKh(mSBf*SijLWaUGa=hGH(vK_6CPA#!luWc-1Gr(`RcbvN%_b=N-v% z3hc9)G4VhK=karTgnvE*kFY^5wqt*N)2A5dT>Rn9Ik4q?7!Zq`Lr2>1Prgi7Y(|gb zfpN8A3%14!d-5kai|nw59J62FY{0(wQk(E)ex`phPVBd(N7(E2N-+}#?H4DIzJ2J! zc=}~8^1>LxJ52RFHp34a&^4La)tKbf2m9GJ7Lt3!wDaJB-xi}}ryFhQgKqEzgJW*m z6s*DndGLl8HH$SJendZPLq7I_NBr04^@$&PARnJnhslwC8=GzFPxi?*u;fGD`W#;Q zkUkJB7)yN!Q;m&c68_{Uvg2E=!iF&4d`wQ?eOjx-w-`}OijQhJI^bvcEH>Z+Z`GyT zBet=7eU#1V2gVRt@vPpE56H^?#@8=@;1~2tcjUFENM7H4*p2_c`ov1Z`7e$`Ok_kCK3 zTy#SY`t+U5t)uZt7y9twOX7}rk59a_yU*6-8SNb72e2-7h#TUMSjBhfTHEFYIS$Ws zMMq?SJ8NaerAsl`eK0Uim*Ois!4e+m-k9Q`V{GF$OsF~77+-Wo&&J@J{GUCXO9%Fo z86U8rt#<6d&*6jp@edDKNzLQZ~Hj}5!i~OG?Hf4LVk;m9%G8P-Rt$ynNWPusFhI=}J74b!1Yy*Gdh^Bt#0_8=!8$0H2tM;~~l8z1NMT{0V!Ud5`;NsOz0YfOR#n1K~CdcVH+)Wal< z_Ww8F2|pc=j?{E;L04-kX82|H7Zgd`d zn_pPh;R|dff8d85U{5R{zj4*9bf~R;+K8(#15a!ZhjIa3Xs=KD(Vjioj6aI`^lUtO z@V^|aVX*`I^N;2_Jn(UKtC-IQFu~{KD0ZU@anhZXzq$lm;v zEcn3(%#nkyIqtjj=?kXIt9T>k!j7@|g|Xod`K~WM%~$CT&+J2P@kU?tLU*la;LDi! zBZJ@c1uOi(oLH>jE5?8ed^A?+*ZKIPQ+WWU*xtRfY}tCvIIyHGp6Cw-%%iP|$i4ca zfA{pM=kP!#a+4YVb2z16mk(V=7F ziDUNBkyr&kWMcQ~W*U$B@?mehYmfZKCx3=BKB(3a+v$ZrxenJjDo(XhtI$xKf#9> zNf&HQf3QKbDY9@*??YdX-c@f?R~=kqtm zeE2z^)~B}YuRm>!&0oY+zNj7hvJ*Urv0^zL=tE!5;Y-GXZGFlkzT4**9l|z!s&#ya z7qu6B;hCIpK^N=}M~GZ>hF|S{@Y;IcZ+sxKuseK=3F;{A#uq6(UE`k3wLw}CuD{7vJPRF;}0kOeWZYV>yg}>XVKfgFm{o)`}YFpbLCygCAq? z7eof*I*#yXY<-CXWLC3?$?7z|0T=X25BSFqd-8i&sUPxFw$l%6!>`&DPo4|#d;nhA z$N#hAZ~Eqg{=XAHhG*F2Z|vcidokp4zF|Mx!9QGxGxaC+D#Dv~Zw|RGf@jy6{9n{} zg^aCl`htDAiGPyOhYnz0&Xv>HRU7{=jK8uY-Qq`#ga>vrKT%(6D;_u(uk^$YwIdAC z3;y}FXPNvzL0e;M=l}ls|BLW1p2IQyYr`hw_CLS;PeT90&sr_M)JOOf$M`TiYRe{U z&tKRTUg+k%Aw0mlc#PNtk8r^jd`aFAFW{P-`jvBBPgajP2Y$`J;oteLNAowj=lg8v z|0=?_Sk-lO@q_;5K>CDNvU?WG^)E5Rc>JH<=?=lK{+=E3zYO`CeCydS&vm&zs4aW& zIl9#z#@O5(OZ?L>{}%iB6>NxO;v2v4zu^3jDRz+?J-_nY&}ktb^0OD5z>s$2QLnQf zJvA2Nmw)jAaoGQ17d!YiKjA;{3O{&)ZTe(iz9W~>kACrKpZI0{fc`fnuhM}y!CsDu z|N79M7$9EZ(e+Kw?(hTp^o*JRDJr(Yv;P(Oq>%F*_y0{jKSWM_!;fR^pkMw>M`99w zVL@zQXEMT)Slo8`Yb|Aq$L}>v?v`+B3bX1^kaUI)cy5Avv9{{hv9yWlM3s z|1TH@^$T-bLi!au@ali>(xu~k9X|LdY>JWglSMvfANEuuvM1d;Mh|q$cKk?fL1z5P zQ+yIeU`|cN_HatSW6IlrhmG|mup9SmR#D1Po3Anom{Ja@;_6L4aw{D zLl*wUZtM=H#up#uH1ZgSUfBYPv2v7Lj@Si>gY2LUy@^?LEzYvjrjVFqzt}^5J`V$I zK&SYTE1V18+8G0$=*@bwc@jO4vtyE#&c!PGedtwe6`RS=7RF;=eeq3r=i7K88@=H{ zfBN>(m)J=zI)P8e_$$59m^Ob!+A z(Eka&%Vs;kqwSmc3htx6ZN9T9_keskAUbCOr!N;_t zD=~$CHjau_unK>0#cpcr)-U28o4~De*qv_3f)Cha2m76?FZrndqnTdd4CY)5#SdS{ zgEdv-!zkVIUv}V|;slJ)J)O{{n5V{(Z(keozh~LbSpIMH?L(f8_x!Aw1qb|#F36;R zxDW$v#W`^t&dA2zcvs)>H#)+HIHeEsOMW2VSQCRUvcWGt=~m7Z1H}jWU{f|G3oIe_ zQd_bMU(uI-;oEcT{r~3bL^dId=YsveZ2ybhRJiOd5?`T_miIH^0 z$FyNjbMjtKpc6jGhsYx4lASH|qqc%adQuO{r{sr8n4?FSRlkTobji-z@)ujaMOVgx zFZG;ucu-5oxpFqW(GR=$us?sZA3yes@8ltu_IPrhG08^%d=EawO@68d=d0qdn9l#@ zB7E^({<1kFPV#fOG^Z59w0~ zY6P~_kDTnoR`8+^*x4FlQ##a-_-Kn4I)n-HGrnnTx-yrB2mR6^e8RWbAy2TYIiff( ze&GW)jm@|Dy15}th$D2v7xn2pHW3r_B_^^XoUjkR$kKdfKOW%Baj_85XYs`*&M}sF zU_1nK^eWb{vv&Ma9yBKq7mf+>C2xl7zL50x(v|6n6Ez#BuShTazX>yUk7=CPr-ggzVkVd%2Zk3)YS`asCJY^`6I zp=Y1*yi5YxQJtcOikF+N%jKZ}x`~`_Ka4jCN zv3SC7#3}aUm)6PnyN|rbFZkeVLvp}lLdS&EmDOXy3V`1GL{yf;pX-{j@5 z@(#PQz4MUvFeN_9LGpm(_8CX*VNKAxME)kEE}}d7q!%)fQB70hnEe~sDtlgy0|QeSEe`jU6e z3tDIJNwVq-ZuKpevK?P9(JOrVXaht1m+UYkW|jP=55B2JcO6qKLB7K_y=f0O^)q(R z*8B!e$PPDnW^?|=7q!C&naN2$c&BUnwbn|9KI~6tbi=plgRPOctsht=zvKENJ0dgP z@)cO%3ym-MuKzoa-i)C=eTrl3j(q2TbV;|yF}|2rJkgW$O?H_Ar~3c){S@c&Gz(S3~MX=A4bIrINcP2Yy60} zh(C$J;;CFL-q=Ua5<;ajp*B!z3E#_w6%{t=tX;<_Eo+6O-5Lv z8!?}r=#f5PmHtMV$c1P7=&JJ!c&8J6(J^`SSzmIV{`|HdKlmUkf-CZBXME?=FTELu z4cW>9Oi*|E-58?IvtNEeYGCKsZ`*pS*Gc_W2k;}<;=jg3@Qc`@ zx+ODx(G@I+W&B(0hadJLf9;MJHsZ_9 zqa(k4$WVOQ!i#;{+QJ__vOT-=ExI(PMD*e}3{LBq9@V(?jrbUy)3R=%u=W_r_CL788uk)_B3IJl(kpyc8GW1zz#T z=kV9smHy~V-}a&Up|QyTE42sAiV5n6ts$`jKG+u~_z`>C!iHmF2|p8GY_)?g}5*+cN`l9-cKRQRh+UQ4I)o=0I7;9W}H0PD@s*SkDC*^vv5cNB3vJrbVm%u4s z5tG=V_@g&=tBw2?huKFgXCuCh;84u7ZQN^p0Iy<`wzg~m&&H(p#y49$!3{rU2YjoI z8qdkc&k&u^4WAo{?Bpb){`sKsV1e!NA!fh{KeEqpdf<=rBc2&w4Ar->=$jqIgW`a_ zkT}}-%C_dF*1ODmU9WLH)0$S-w*0ns=eV_IHKiIICSXKgsCaQqpU8Ld$2i4N*DS;- zI4v$=f&R!u7i`JCY(nn(Bis7TKJ1403R^i=KXSg`aH221O>g|Xx}!HXpf`SGeEEQF zn`g@h8;C7@*&IzhZjHr#AJ)Ch&0N>D25D;^W{&8*%^}ye#RR#5|I3H$JIcoXViYW~ zBVSezv!QMM7?$7;7GPWM!H4x7?~^?#WW8of$U4riLbH?E$t^>73f&{LZ|J_E`-JWt zx@Tzb9kkD6pUHlq140i8Ju>v@knKZ54+`1;gwXRt?+slM+Gl2;nOB6ignk>k`RvVS zZxgb;X6BliZ-xFY^z6`sLU#%65xQOI)}dWOKcD=3^1;yIp}YAYb7R;=1@`ZNa+S+e6+bd{*d_q4$MO4jmV=PV1f< z`f>k_wQ#?!<$A}j?=UI{!LPp64}8%a+dX>LAFaV!>vBEB{XpK8YK`)#p~r_F8?rq- z^umy}5!ZLb0x<McVsX44i>C?PZeW4a$oHR6LUV#6xkJjm1nkN1SZ#lk?b=?wWh(Pz^8s(}TPt?`z-qZXCq!VmKbm z_1NE7BWpMOB;`nl`pei-^@=p&(Lg)W=DZ1$d^BWI4B zIdO90gx}CP8UAtgA6NGb9lLVu$`6-+xctb_c}wRlJw9~7;suMFLm%As!ELtC}U>pEZ8 zTKE0D@AKYS@a$X9zV$~JeE)(+9)INVzqsJ$?VGp%#|8J@x$n-GEckyGeB=`!`NXF# z_{;^LyWoo#`2A?HCy(UH*DX*Ze_+8sSl~0Bw=DR@1wXOC+&3(c^Z$CmC*Am@8{e_O ze)EC_FI-^%dCQHr-1zndU%bHnX8-x|`+ofNIf>6kd`G(P#Q)zHeAj}%y+9rIURMmN zhiaqxDbC0(UjBmx&t33-3w&4pudMI9|FH$HTJW+3pSs}pFZiSde{8{DS@6RP9$)Z# zpZL9}I!tdh+V@+lJ?ioAS@2#9ZY;1TzQ+QeGZ}y30^f5_2ER}D-z~7#XB&Q(&Hm#Z zp=Shj&oio;WbaUe{=xz_`|bsASn$RL|75}cz2GMo{Hp~wZ`@q}J>Ykr&H-O^&AQC_?-(rWWk3mcJ&>J6m8h_6l?|I{~`yM-ezGhGI z{|bI&fmmhRf40E*4=(V(0>qflTJg6}*;}0n?N9a|`_La>@YxH*om}zxs2KUg1!|YN zrdRhqWr5Er;i_Nq%6cGHd}q2EY3+*^ykLP^ss5qqY+x@GOU?n#Fk*>3;!4f+KMMN& z8ha->{e7%+hvx;g+8J97S1;9d&-TvJbhRhSIX3S1r`h6F3w&n+g6A&y&WFD9p$}j1 zwGV#ngYUcGJ0AFs2flE@A6oEn3m#eU6Zikb{l9+!`mb95E8{iyz2@|{C?E912R)(Q zeCzFRz5VFpk3Rm%3%>oSmPh}a1veLb{X4(@o&VW_k6G}a zE>QD-dBJBs`k9aZ{DRMY>~kM`+k(%y^%=LmXTiT-;Gc}#zu=(-AF$x13tqM0>9?PL z`%4$B)ir5tD9YS z7Nv`42WMcvgYA5+{`(wJZ8j$tJxkbU<=l5Hc+&zk?u83JWx;>4;A0m2t_6IdhJEV- zzhB08bnv{cu6w@4-*d0rcjnW3zv29;zIiv(XDXhzy-!o8)ojlNz*&$#6&Ie-8?@~CIh(&p4%>3V3;Carzq1LnMn-|z$J?nXfSKHJ?bwyryPvMN| zIfL)j*soZickb}FE@H>;G*V1Dqx3<^O5)zcbKLtE~s>w=p(S zFP*!bame7^l6Oq(p`O}r&3i`o%mm-wU|+BYi%ZW8_E%?jwVH3_nK<*TC-22e&#>NS zh&?grvtQ4#;)UHkH+r8)hTds=&hl)c7K<~v0?%`&XI?o&XTKZn?_!kS_^Zxg||I-%y=z`CG;PW4N!GkY&@B<(E zz=!TEP@`Y;^cOw-i|@jVpZ?;fKl-#spZ32jxVhl-9{Rk8Ui;u{AN=42f9rw2^}r`C zxUt}S?*E?qKW@P*ZocBCGpe(Nzgu|KIxGI@?H|4U@Pf~I{Bs_E{jJyE`sfAU_1Jek z_Q?z0`RF?z{gwrvvA}`p6$_rf;4SZX%R7E>!4EHZbit>+^V3e}bT$1$9{Z5TetN-| z-1?GRYBaiEx8OAkesaNM3qI=hN8SFC1wXamg?Ci+{NR-+9&kx_a+G z*td5dy~{usj(Pis&x_c=UMEKVA1?os>$j|DyboI7tp3P?-@ZVM-n#GBeZRWEdn4yJ zHCb&J>+H>E&UkFj-el+dYBW3f-9dj3pw2iaIDZ|O4^z4Ns9F!nX?LexO}EFZ9iJ;b@iyJzQ! zK2K1O;qXcOv3Yj14_n7??9MOZ+MXou=`EH&dx5{DlDq1)8ZLhA&-P`tSPa=G><8+t zeaGJq+L!$PXU`q}?#nsbnf%{d;2iGvCO>+?$1L#t0ap#TZ~3gk^POi2`#zs|UiJR( zvlgh||L=n5-+cb*J7rgDEw>|Xn3;yDIC-cS!-uS?C7kuOW-+2G0EO`F~ zzjX7LZoX>4a~Axm8-MDCz1-g}{J@{A(Bde+#_Re&K>Yu;3*N{`i8wvf%G8c<(#!eX4u^=*~Yn)h(at@U=SN z{HJ&3@?K6H$z%0Yjc^u!#RBhBoRj5+8tt8nGmRST_lCuc7!oUgcEK+#cbWRNTpHpl&$Fsxi(qAF$wO?)=Q1zq8vgtq*7AG7V#l+!GmLYTGma*2on_^+_Y`v8=Z)&L-_!3b<~-)v8>mU@wKIh}?#$*K z>^!G-c<13WYW0>*{_gT`EZ|@J`!_A{x6GbxJ)haP=@@%m`=|{* zlduo6f%+`|>;-gSFQ2)QquOLnZBozGa`v^~@sAkn^R0((oWZ%mbKzSTh|lj^;Byqd zQltKh1)g!#F7fWnM_+Nzmh7w6vY~xWt?_K&y~)Qe@H^e=lJ^AadG8HA_=yib)o^wE z!xngFqV8L-=J^c$O$)?=I1>-x_5$yw#JA7DonzH={!lyFf$sK3d%F57X6)A zU%TL+E_myLM;Ca9`>X}eTkw(vU$Nk47QFQSm)`&81uuW#!WXd z^#5A$&lcENK5fD47JTfjkG=Jy3;y8afAH~FFL;mJ?{WJR7JS}<|9-)rUGUczeD8vP zzTn|I58wI31z)w`A1`p8_@o8)M(^?X!h0)m`0NGFz2510uJaDg8BLBkLwT+$7d-=c zr|SKpdgFK4y=!;IlEdG>z`ILlZ_oT6x8MZ}K5&6Elh2!-$K{*97jTaE9zgE-8w2sA zE;;ByY|fz$%^i%ibH@`FrrN)D(;&fJ=JDD-#6K-=>)dGI2ScQ0~U zKC4gax_wLUcTLnS%^u2z_5lrjxvUO4ud7Mwr@E;Y$zNw(w9w%bHBtVl8$MrEGl1*H z&{jj$FgCWH9q8y>WY4mXdEac$_RRIo3;cghpR1C^xlX?Gx16_MsXzGR;N9PkBcFFW&O&Ow z^R~Ux=OlXi(1ZM*iNqJ#ou@mW$RlIyuV#BTmSgs7?;rGPr_Vs`(R%mJ^X9$70Pvje zFnhk!=K{JzQC{K6{}*&vx>7b-JCC+HR$Tu zg>Tu)XQ}K4&z`9FZjx?dS`Be#v3J;8!3tqjz=c_(v{elG_zTn4h{MhO5ztjbLp?L7S4$h3PT<{qS{Jw`^ z{ih55j|HE<;Moh_`1l(i|I!67Sa4&(FWmZtTR*+vEejrg{NcwxVZm1~ctzkGrGlpAWEy5s$W zGo5^Lwv|)<9@aTd?e@;XSx!wi?>V|U>OA4RF0aL~_z_ReJ@U!9-8(k?JZq{i&NAZC zvtnmpe((&TCU_npgSzE&6#I&Irk)c#S9sR+T(3r|eR4)^l3!$yuj;dS_P&%o)Nap~ z_70z&`aK<=oqDJBfeU=z<8SxuHSj&ZdsbBo{9QjEBYn2*{lq&KymNut zDBpbU0mnYAo?7pj%{ks4;C+SPBk|tVo~M31XMyJk%^v04>0N^TPp!7UscGsF969g3 zn*Gf>x~qM3R0p58K>bmBocEpUoc*0a?J?>z-F<#94%83Nm}rR&`1kpefpl6)UYBAgQ`HE*5XLWOM(evI!+>nty?PCF3k)K|4p(opCyWZoNBeNK6 zFTfi=x$Ye6Ie;8;*SVhz&K}M~aKxswgIt8ipY#;ld`v!kp0$Ag^lS{=JGW@!M_zh| zC?D;!KEsetoEfLq zUBn?>#GmIO??Qn+i!Io|8a`!TwA3=sg6LOI`ny|urgOCYlFVdMC;Wb&&sqGAhW8Yn zfjkeXx!!I0{8)YQ`$OJy`HbD~i2Q*C&b2;o2d<5og9FrV_l>>yi5H(}p^3H{?|ThA zt9s7zyK3Hfvsv}aKCc!#|L}#+a-7XT*FHy_e{bP^f_DV=3+E#`=eyn~&>s)}S6 zx2=&s*2{nKiKhC3K2TfK3-Jm^UWuXdT&;@vq*y>Pw)u8olkKQ#fq`d~de=*8P- zn|R69z&)AFkxxEZM|L#DBVKf?&e${MVxOIfU$HHg)mnAd^8`?Li*xzxa~b(9H`F9F z(Z&NWdg4oGH7H%w9l8MaB%?Vv&YWyuJz$f0PURau;x~Q%G7j1=`F002m`~3ZKmT2Y zvBo?5Rxim#K60x2?8*M(h>!Du7~p%Kt=Kc{FXGO7Prrj?FLBPd=ZH!Bj=j;D*Paj5 z2KRyc#>BF^2VBExKAhI+!^Z_hK0N&5<=Q&)_I!K4 zeAIUi@H~SSoa6|<_f_6m1)eQHbgYLD&_P#SebWNZ5}tXi?aYyk*>2Zs%85^W(FFDz zG|^UHJZq`pp0)fAbkMVz=P)=ulfi|fKH0aNT|N5%&qL0Z=HNub8W63X^`?IGW&`>; zx7fGrGh$8rdDd2!#Ah|3x+Dk1_xTiZ^;3=OTrgwaK717S&In>3AJ3O~UW$Km1#)77 zam_nS&y&tz&WYYb)2;Z@yARA?0`E%X8d~y>ZP3^7!jlaB-Y~g$@Hw2EmfQ4X%j)gk zvjseBMTHY_A$W?h0xG#U?^|Y&+z;4-W#)()dPQ=GiJfv?npySL9`dY^aauYob zA8}cn&{MpM58&Dy+~O3C3G9gW1Y;n)?3_Kt1^VR}-HSu^t+ukW*i#eLK(^iMpLb2_ zmtOrc&(8cZYpM181YGk0A6C!z{l}gqqQx><*-3oRi*4Du*ebqeY`QkCcBy5ZHPpD^ zkyQgbk94*wM%6Sn<#T*BGVqZ&As4%~x0b*3nXvD5@UrjBX|(tQeLkNt$Zup2JLKWl ze4O9aUm(_k#u`_{%6;|;8iz|R^6^FBenR83SD)Ies?F}_{?t5QyS6?% z;6H&ZQxEcrLAJ>z`JRum2fM)mYGlFwdygsqvjn)G>8VZirX$KV!W*BUV9k z)vaQq`fGe|^2R!}x~CqlM=L75ii*w|1mQIiFtXRt+&;tuQuqE#~nu4)A0bxIuQBxo9jrJd%+gkblOXcAF)#&ibH29;94x26JzbMXr43XYL8APHf0~Wh=F{OuhkcR%ddO= z&hK#cdO2$m8{@%0_yuhDRKZ#_@*!FAsD|$~TRa8nQ|wOJ#KDXOe&+jPYsOULtCTsmIlHy&5mRI&->) z)3arCQ3Lk8CR0#;@{#xi$Sz`f+GEDJT#%EVPl8K1 zTkh&R_tei^>Ws11f#^Hic^;ha+)3G|pWb8F<%Qt++hvoRud9D}}AJvR}EUx$nT|Dr_pC0y` z@@D3n+(`%TY0{&dYR^n``JSL z1NV)|6Lw(_HZ0cho_PC#Mq^3?VCq9b*VkCOg&e<$`6gTt) z$vA7V>ssU4FQ4TbyrxdBC;#xt!46`hn4NJmui2WN_xd_Zq9D4{MA4d>Q>qzAT>dFMicI^;ey$wyA4<9^yOzyjM2XXM%8C8w-r7e`uje{`Q09 z&Q95%o%oTT#7MbV-PX_AJ?m9*kgwPp{b|#=ueDc^%YIZ|%11K0@BCB`ul%IT^Z~zW z=};V#k<9x$bLZ~rx86Gx?_cJ-mp=bC-aD4+x;k$ksJ_oS-WjGmBTMz0t=UD~WE*;9 zn`sxic5c+OLw0J9V=rUuh=!O#x0tRzunphrIa;o_$I0>baJtcP*VP^dht4}#e-tNd zkv;Gv2YJX zHFL*Uww(UplS@zyWc!)#_{~~R#^Sbo-ut~C(w{wwJ$5T@r#|@Rcl-3*!}Du?s^`P$ ztKvdmoT1A;;uc?U&Wx+v;KK>|kL)|-zx1lE%l$o<_()@4@`zvZs_%O|?lC#f-rljy zGkkl2+HQQlgPHN04aiXJ&Uj)Iu|@|v=U@A9&m!v2+^b!yQT)E|du+ole9g}JxA=6A zU(o!F+45hnkzM0Qpcxk{dwk2)3G~12oL+ugGjn6+!-?U+53$iT+@kPpfQJ%5M=bIA>#e(BiSS^tfR`5-^*^C|vh zN#}Bu{@LAp{)B(jn%B=ZV<39QxQy&%n{v^wS}^xU*XqKw1$%(;eXE~yT{l-BUAmHG_hI&D`_jSnZvW}$p511A8w1tod{(^b z%SG23KawXqO@Fc(8_+}DQODFEd#(CpKMK@0SJ{^nGVz3yPwl-$Id?@zj+I&Xp(>>1UAtvZHb)DBUo~CWA$tLQ{gyx#ZqxjnGlzwbeT+LV!W0%eg&B<5m=_zjJ zKCt`BTy<7m0Pb6pPmQ59{jkfLZ}|l8>>J(L#{-`!Lq5l+>tvd-U!KYZEjoJbG&p`7 z)e3%?z(0J=ul78BK5O4&zW~i3R(O+v%beuMQDsi1%@wtv~Jf}^j9f}1q z!%dc%Khwuz3QQT@^ShW+yNb>rLugCAVvjtvs@LU1U@8$YiD1R&DcSpsQ_fh^1#NTH4 z8xr`&{a&fxpZ9z7uE|gCM;7=SGS4p>+xuNra>HQ*e^Y~=zw_`ei`?ELk_%tH5?^R| z2c~B)zG5q~@{wmHf1BfPRs5}pcVz6_{>y&(kZkNe{RNMm%1t(86EyIpi}!70CJ(*Y z%~^uq#Emr?8sswP`H8>iPF{Fyffu>avPPV+37qo@<@~@t`8?vcJMmme}e9Ss@)6y}!xo_@-Z~@0${woeK@;$p*Uks3+Zh#HN1)!5LcG~U1M)OP$PoAiK#wQpvUz{Ze8H%lVl9P;V z!*=3E%v=Jo1ZVDzY(HaV+SWDN;wzu98=K&peT?Oc=98D*0`gBEu)THh(YGF+b?4|g zp9|2$TZ`Z9ttYFPqEpbGZ`^gcX1@Ez*oK{gBYR~txyvrvNvQF|Sn`zP_`A-Y+142T z<-zoi@%SKLJhBDg1AX;XZi^579>=X^Tlm?xxYt`_4&D4ims-9e6G#{HG$YLD8XMgU{&OK>I_58wr@o&BU!eaXgRB75rHlL<6OPCneB7@c`b-w7w>@BT18 zZRTFfF0PHSV=-8aOFw!HgBMP5Gj!ho2qA6qxwMsNT5wYSN60 zY@hw6P0KH1*>u`9T=sPh*gKf>=;z;jda2JxWY)4tIyBCHY*~D{&ZgF6Q)5S99)0w( z!;y^HfesVWo4(aHc53vDpViNxeGe*e=j{Mg?z{gYP;v@aw1!xs3#YQ}i=%8V| z_4+-AlHE93+AhzLKavyfT*F`G55EHU#=}jA6SKQN(kEHd%RL$Sqd3*`tvNK~86Wq_ zhdf&8Z4F-L;Q` zeP_PvoZguHn)aVINxo_4_)S~Q`Q1L{0DNoVrUQ9v>2$9-^YPQ8c|?~U*TK#g|HfvY zTzkLUW|xV+*<#vY>L1N?N|#+9cx0lFSma}{`wbrYc;hMd#8Ej>o$q|6H&(7#mwf40 zZ=77kr#03)pLh=UEb95wbE$EBts$p4^Q_o=I@k7A@@wdlx0p}Pz3!SX52l>SMc;Il zJLp7tp!;j_Y(fO;qWIJur zE~ch$(atvP2;x8WPv;}tYzKeZ${P6iYV_r|&O3WwOr9h3$?u)urW60M6?;tEcNV*J z{)#?1_WU-s1Af-T_;9XZ;tuKXc>9 z7d+$UGj4v^f@d!9zl{E)1^zb=p1vQIazD7>TNb=_!P^!*>xpNbzTe(=V)=e7|3}I9 z1NXhbfBK0(efl0P-xKfMvhS$!9h|=7>R0dl>gl@>pMB@qcYgNv&)$CZg4Zqh&_kQa;DnD$&hc0;E1@|xTJ?H)}k^e{Oy9#|*w(m3c z|EqilpYIO$zv(_?{jY)lX~EAgc<#;T-u#ajeEfpnvEcPLUVr0{E#P3^Z|b}Hyi4b^ z89$y+eSZTx(a-mM`CkFPbJ4qYIY3V!rv3k3cJ^I|-+bqrPv2eq@pnG{^c}+fAJN}f z@Usj2AEpmk;CprbPXhm2?(KKpe)=x;cief$9pAg|`^$VEo9_|xPM@Ff{h|f_$ASNA zV4d$*^j(X-CmNpjD5Y?=bP*aQ+w1 zXD#r5*?cdX|9jwj#eH9zIO8|}e^JiJ2|2)KzGK_})$x6+KC{Bp`(K}Xu(|(p=lgek z=dK*_U2J;y{`V#S!1KKw>LT49S>W>z-!JCx`_u%w*$>2tda53<$GKAcJ15(yRbtL( zGd_Fi`;XAJmMzfsISrfm9x

7*|icf9>-)`=$MeOzMx?6fgB(@LQuUi(^f_;)lKu zgnh*}pTV&g%hPDn32(lY*FIOzxjSd-<#@t_WDj<{`S3nzOVQP z7pP~z_jL2KdcYrQ7+Ew1Rr?_wH=19p&OeBrZAc685{Ky0}Oa?n{%46_eA8?(k* z`6>7NEVIvG@nuIkh-tYdR?LfA=MVGZiEi|5k2XG=yrCbT&|jTmGq&SLWBd2#h+#S3 z-wnX=nJ61u2l#zT?t&xuLCIhylFOVS7F{ z$8Yk6Jow0Kc<{-9Ho3yh&wOY;x%iO{*a*0$FI%ZUc#0!2KpyvGj~^W8PcdemJYtUi zc%Z}fbe0cds+>hvOwxm#;!;fN-5WPgWp{b9qIdy|B zVwmpM>&Z$_y0AH00`ic-TKWREA)h(C&{tdWnqaJ&3MVLEvoTu+avl$TXZ`HTreYWH z8JRUcp*x_PakjB9i0kr0T~dqqoz39L7ki{!vPbs4n|{XuzIdrdq0P5)#2S0HT*bo} z`HD%hBscrw)AzBE%b3^@U)fe%^CS7t1Fq?V){MJ+!C&lD{^5%bT;QI4H1!F6;94VZ z_CrH_=;f7$Hyf~5kPnPc$fj&eUr_C@*3$z|GFU7A-~iWXvoZW+b=|#l2)WSE=m3wL zVj8%HpN{-SA9}HsSku#$t;~siz5DFIHvxRM<}0x;H^ldw?t*J$at96`)>_9`)`)+5 znVfg#aK7+8Z_aMM^G$DT)&u(xn$-ccfqQfKs&&?&ogC)mXMlfogxTYkXe3xHg6szw!qk zsx32b*kbCMzIbaV;nok=*+;C%FEsfYJ=ezBggw+3X8|C#vx{rzRr|jEUwv|(($6z( zIn;Sdy>XWB9N;XVUOBJzUA(jRtmNF_4ANQ7nWXPSc5ZZStTRUEKD^X5wTk?7Nq*OW zZ{;wbunpbI9epvDkJy;a*h?&mQTv56f!KHU1#&@t6w~5c&d3$>eeY}k`@+35gmpa& zqKSqz#&_CsMLx=pnOp5WVg$G+D;zl#*t_K6j$dq*|J76W0M%qMR_@q0K>1MJ5^Dkb z!Z#PVFK@DOdCM2<4_xCnX;_PPxj|0x3tW>^&IInsKkHyMh#mRyO?SbyecwK>cCi&3 zW=CUuUyVYC9kUr3$|>X1&f$=UUi4;zY@(-I;9l)e6U3?gft}^2*ljPXuZB6h+JDQz zo-fPe>X>z{F&C5{=JCM~T6{>o{+ zdvcO58KPlrP;G4veT`@{R*g;DTfgImgCD-x=|~5k3pmTk}@3t*#a6dHV2Oq84QM{J0_ zVkw$>bn!|jG@~DnU5C~mt!+L1LAFK<9lWe33!t|#bMU8++_#Q=#m9`1DJvT0wCo(8 zc;TJg(LwtC<`6q1&8w=+bBUTP*_oK7C${ z@qcwwJb-FebtV~4f{q{TmCU;h*dm{?MY(!Dai9M-tz6u5v^+Hr+y~`uy3-%8a#N3= z@nR(36Pn|IuGlCF?+QAxo2k2lJm?x}jp|oUqFQ*Ss7h>rvhpNA%+lali(2FK_72 zNBNx{Tw9axTx;?*+r$$O<3aYD^)uPY9Iz2P(x3h28N2f}`?52emM6vCq?1qJ1@L!V zc;?SpdbO|SD>{KGJ3h(UI(_u{z?$q(9I=P7BbdH2&$evM7km`B55y{;l{`Ylp7VrVuLHK9F}~+%_vMy+1nO;hD^G#@S%+IwA1!@jdiP`?=k#m3*Jp#> zhP#iZe~S6yoqw~N-aQ}WU$oF?XY;^yc;?~8W3Fq?m}_(=zx1f5D__yO9GJe!H+wEw zpIpgltQg4uvyU#ClP=nUad@+}PA{+U$sX)Pzrc8q?e@O;*5pgJ3XEL>IJ=$UqD!{f zrky4|yvdc#(g{wq_0gR=B>!ALd0uyY6x;c%b?zrLe#s~K$9%Z;bIpFeugg~Hnr+B3 z?IX73RA&)K9#$};J@o^emVVCMbQ z%Q&3uf%eoPdUO1)xKHZn3kNMW=9~O8?TwH7{Hli^|Kz;H4<9n^a=TCNDOmXEwT6uG zIapTVy#M8g{LOdHNP&yKqdCr-JOeXDuScJr*~%;z5T zELCl+F7n?|zL1fP(xLiA{%LPE&yU&J{A|X-#NBCU+x()(Yv=F&2$BmAwq?icRBvoT z@mQ>gmkG(c_Y-HohP&G#-SNq<$&?TIHz=p3U#tt#AsVxv^g3Vaiyye;m~v+8@}NCT zzwb@EPu$aw9kL_ZX!4Ww#lCxO;?v2x)=qmK$vFAXy|leHesj)VyU)Xe6CBA%CbnkN zzD|2b+T=y<=#yuMY&~rjJ#*Oy?Fp?*o=biqV{>w= zTr1Da&G|W=e#v&$_+8H|$&y`;;)9$)c=*OcJkXDQ^k}9VeAmXzPk*wlHrGu%b!{z( z2R~V-x7HjPip!l(@mDVtOmVAEP<_gTJ=xIdhl|kL;($RTp>Ls*B*#dy{*;J3$-Ia*>=zF_Eu!f6#I2 zPw#ivo^w6>m5bnrk*-i)`8RUA?nq;Cwm3_}rs* zI%wv@@}xdF$d~Q+c&1}^$u`xic{Vs({;GDc#U97vK3a3F@rm#HC`ZsMmd{o^|76Qz z#C0|;Ue8f_{yA+i*R{s{5e^$=Co%-a&?$e)DfFV>+M^zw>Kwh#5qn38(q;Ir_U_;7uCl@xqh;tCPimaq__l+}F&Lx_s0ZH|Dgd+dg;3 zIR1$Tp3|=R!d!f#87_R_ezxYb$@E2bzKYtbD|10MPmXw`LHvw2M?UsE%H^ZH&i3gQ z&H8xhvqALnaBUp^v|X~-r*p9*AA;g&#@eoP@*MTaNRDLG*R07#mwGti>*t#0qUk=r z>zkkJ=6t@Hc*)6rfiXDnTR+$Cb34wF{Ka1}b+4YkvOW59J^$oCKFfdlYH7W(-LLVE z&QWbhM||POFJ3#%m%aDeVLULGFY1r**%@8*laZXjeKN5hykwx8wy#aM zX|w3*vo+h=OMq+RY?;1#{EzHAal(Up9l)dG)FXY;i7lpWT~8f%zVY5=G=9X#7$66T z-gR>CbJk2fl9`XIlbvDm`=y?K8vTTOsk6hEA#j^2T#uLFobH->fnJg36 z+^&l>eT-Q`VBw7`rHJhR8-6+N*KOk2cXk6-xL^~Dw22F9#Urd<~F zr_9a6Zw(#tfgX-E=_}D=i6$z@fkxq zu6F_6x%fTGem}F`n7Q5;Oq#CoDhGO>5dWjOWZC84@29-x%6B#p)5U#uWkXP0Pakw` z&1}Zui#ztt*X&*_>fPs;-6zpY9`vsB=XJE>ku1eov1Xh+=~_Q!?K+w16rJLAr_q|m zi%s+=9qYj^=Nyklbz--9_L@DP)~Z{2e&6E&UTa-Xyct824t#RVTy$@}HRX+XE~dq< zYjbckYk-D+d2|WKnkk2SYol|ihcnmi>*oBl5jg<4rp)4e_XnC9TG}O9jKiCD!h>Gu z@;Cphxz*b0Z#7>Gi7Cxmb;7&IS#zp0=I|n~I4gFeL7tlHa=4h?^Do)#L;Wtdzf<%3 z$NtvO-v|0Tw)0=ZpZ`y$F>`)j8D8MNzisn3as7R;zcqZ*g88?()?4TIp8FkVcA*bl z|8Mf&bFrCP!!)ebh8wlK$!vkr!D4d@>I)=wJYz}vyx^auI1 zeB+uvbjkK=LvcLqKmQh?`jHLt-}E7zBba+=^XwZf^3;;Ee4uy0=D}`{v*oUSvI~FA zdY-MyML8{w%k6OUPx%TzyYj~l>>XT5aK17QpWJlP(p8_ndhD#dY>%mulqsw_~3CvvYDaf<4jNZ8&`xuY8crr|q&$dYjAc z*%?jq6S5Kf3E}Q^(Mtd1wl4f=N4MTMT3Y^^wlxPQ8IryG*~cqd=p4~XmYuJ4@w-6LF75nogzwf@Ec=I}1`sveX z9QAmdBjp?`(GV9C8n2%*k)HX0?&*g{@{pbC2MUOMRA z--~YcJEB{@pmUDa^Ur*ooXLTPysmciZp8h}_o+*K(aJ{k(QhvO@Za^bCOL~!KGfXT z+!x=)Z~3G*rcHgVow+p6OVQBpv4Vz%UOdAwrn$Fv&r$Va=W~h1nbP@Z^ve5aT;iMj z=E+Lt?5m%4=z7-)=hp5zPx@W&vKfy?bf$m#HQ(#`TFezkGd|{g@mp*(2Y=3`C*E3m z)+dW~c*>a>&y!ZXq8W|)Gl#1)N&MhjdmWG;zzrH}9KDk=%^*=Vlo{9YeF=L_H-ZEL4L({t)Tm+S;LeUf8epY3Nq?Nsbd9192>XrO1hMhf^-j{4Uqd(mq+;Z~{shjI;7T%7VZkPIK;HRC0zx(4faPTA9k_peF_4Fy0Mb2 zEl$`UG=uN-#eRa2fj|V)-#4b~>%#iNW-suh}`%VAn*EzTQ-CA^_WerAR z8{{wJ&9MvL^Y7ea^LOzi4xH0_Yt;K9NV@*)m(}`HcVi?9qE{;C*uYSbpUbw6ZNb$2)&Df23FXr8_$CjA#4uY(Lvr zGi?;D`XifVx83I1j{MiPbencfzvLnRq*Lq}2Y6}GntsWS_v+D%hxOXbAGtwB4J|fd z4?s?1(a=wR*U>FL^s^2}YwDH%^_scKYw`&fUO3ZU$!CoG`F7STbCV`oHN3S+yV%Jt z`eG-0p&!io_=`#LS$*gnUhcP-z{fBDXMZx0G2hL&$|kdiJM};(n@riKk0*Y($>P4T zbWTq=L37zc4=-H(rMcvqIIY{|NS@hGTd_rZniym+`oT}eNqeqkJMEG^(iJW1T3bw6 zr=6+1>(A*Y*BX3u(A?>x8^F6)n;hY`R&S0i*yJcT)2BXp@{K-Ugfr#Nw)vQiv-7@| zJjpj{O#0!R5dSTI&^epCj%T#@SjjHzH2nh~BVg zKzwFy;g9Z7EYCT*WTWhoowC8yJDt-jos4VIi)OU+liq$k?Mh}crrXqS=0?2X$9Lz4 zF1eL}c z$2A;{40I26nNCRS2RV1#*6cmJz#Lt(VXX2$LG1bXS-=5*XZRFGH2WPz?pVz zz4@TAonAWA;RwtJbH3PN3$`kT*=gF!oMwK)dGs8!XhbjD!=1K=5AR5Z)|#8PNq4r} z0Umsfyz$Z}fAa3Kx;Ho1xen0SbJ>_Rv+XqEjZVDljhUYizi{+N?WE-Tk)3AG2K>9* zt#~sJzc%r$0egH*`mL)shsF-cFy$z&%OSlnIOy!U(my+~KU-y!$v0l&W9CKIGe65$ zxY;Bbiz)Z?(UNKEi?=rABO6(bTZ_gXuf~FS)f=aWwb4gQOV{*_hWjIkMs!+lJTTTc z8swPr8VmQS%ukuD+vzu7pWb?7*0A-=0lFJEpKSS5pARQ3V-siM#fNNo@!!1w-n3J8 zA=^&Fy=G3EHprHHk6zH+TxX8lQ^)kcgZyHz{9r$0lRtV|vbjeW&1~r2IGlV?k6vr1 zKiF1oW$%2HPt$AiYEA1}bIEUWzUyqk4#DKrSiL!NXV=+h7djs4dotYi&FpY>!+`ip*0)3-@I)dedv}QvdiqJ5Af2+Qmh=EN6{w(JHP|3(LjGA3txmRCc90M9)#sw~Gt|zl`IBwRq258vJcq{zHT>|g4z1`J%dS%%;~+oIzPV(^ zs~C*du3xm~{KT2`;p}*D!*4zuI*CS+Xg1&YQQunq!@^VZ8}_@I-l(M#4#dL=VCCZvOYmk~{noOs3?Uvv1) zdd5zzIV~JNb~VS;Z(hQQPxhQW8Ob{1vpAjgX`VyWoof5UX&kNW;JO-ju2@%p+v^_P zey2pe>~rVdfkhLIz?k{g_Ua>yFj#>~&ZqsRXezvR5sqkE~%*n^YIlUF#+!_kb3`{J-1I8EOD z0jIca-q^%(9bWm{n(}k{${1R}b#c$Hd}%G3*(2JmY2C~jYtb>b!_LqAjJ2b+$-DP( z=UVaF`W-iU;!iJ)ZnbpFZq4&wFms7nT$`>9%qj~`FV2s7QLNjb`B3;jf`il zulAGE#DyR9(yW`1J=7Yt>F6`6DN{b2J=u0Sr!MC5cfL-KvsCXIkJG+8ZFBr_uNLju zw`TgYF}?Afcl^no9_>Z57tiL)<7uO=*(Leo6~E@(H`Y4+oS*vd`b9S%OnSy9tx0Fv zVYfxJF7ni&Gq&40o6mmQH+iD%9zAW^rR(yhc<-~_qqrx3I$3Y6hBh8} zO+CUjuendRaOpQ8x$CF?dwq=8y>y=WeG+*5NdKeSan|<9Kc}9_n2o1y$u#F&Ta!-J zKlkAs+3d*@T;(}6F3E3AvQAkp@i(6Q`iZyaaP%h5)Mfh9H9Tw5Bl_re9_>6ld1Vu^ zldexOruQ^Gf0$!)ImLJRXv&D@^f9{dcb`RL`n`D27Xy=4bkJ&jGEBaB29xH| zb$qNpf~i|J!xOFKna@`EqKVdAJJ(!?Z{5Vj1E7niIdu0};D3HL2WQ&#y6fF0)<(Nr z5cfNnE9OoCyMDM2k|mpxOS7(hL+`$rH18S>CN!cq?OTjnUpvCjwsZ`lv(uRC z!=3$HcM@>@z~?89 zy7Zj78V}fGHuq$iG@~We%20rzkxP1mhYmbs3sdz*UgI(MJWQ`fWR zSM-`oF1||F@;LdDDH`cRSMmqxKF3|d*T^@0W-OX}Z;l>&T%*ytvt_S7Ux-HXk$cKA zZ4D>Fa^W>a1POeLNRD9J>pQP(v zZ>Ij!e%W#MbM3rFBfBLdIbF|~aov16z%!n$(An*EiAFr=S^gDgI~_Oxt>7fgH9yeT zlJ%0$#fdo(u60OXC;N^wbzswM?7CQHr}RJ{4Q=v5Cz$wTnQL0t+9~Vw$8OV0{3o4k zJo^*#?ML%x?;Jn-o160FTjN?b*Sk*-YwiW{-TQr=`DCp(1~0#nE7`LD-ouX;S+yg1 z;ba^Q*S!B zhd1+~yg2INO@LDkb8Qa2X|wz}`|IpCZP|7CUk%8{(++qB^fITxopidMG?FcReC$2; z{CzKPKbk${r+f<9Lcc9N-;8Ry18FT&EZ5~cG zM2}p%4#{h7!o)j@xqFS#5sl(IzfXCS?Wy$E@eLp5zv3>R<+pekhbtyJCp!Ce{+sU| z;la0d$`dVPY`VjdU9&0OgK1l9&^ra%`Vmj#;k({_m|V#KXW}JmefW9}KRWI(ZCXxD zTg0y(&m%b}-*D0!ezNX#;ILWXKKic3l6X^-)#JS;7mL;H&dr^r;a9)IojEw|M7Cs4 zX7kf_uC?^dw&&5SpT@046RoLdI_@^fHhZ5;)&BVpPhmW##H6Xv%r~8zD>Py!nm^f1wveIG3bvjMFuG8(Pk4|=Dr%U??9DuKe{_dxA zW{U}p&z@bZM`v%zu4jk%SU>4@%^&4MIioK(dfwFcTzTX>KEh9bw4#?B=*))CZ07Q5H6kDCXMDKNuWTO}n_#^2>+Frgi|))ryeIJS%(p$>CcjHG z(Kkni;zM6N7K_zscx1B8t` z`F~if-EEyNY{$o!ns^W|JBX!XtG@V}F?4i|7F_WEk0>(Y0>Y?Q(p^>~*25Q)K{Al>UUG&LUOMjm)D!RPfDRMj&gQ;(*Yufoa1TEotu?N} z)r_M|Tb>=Id@BSvA zF?05g&OOx_G|(!h;*%VE-+aA!e#qwZpEk}%@LE$p*JcxQWFZsT$yYwly4INaAYbh9 zgU_WFzj&cF>7aEaPj;`a?tQlId^!7kaMZ(_dwc7SaPgQmJ^S$Wy#Ov7(lwyFF+H8x zO#XC6bj?rN^xhPIPEdV(Y(~M51RzpC4Jq`Ikd_jeDH+}XV$}Vb@p&3eY7SY zb2~Jzhp%NPyo0GH+~~BmEIHr;N!uJvoEB;*1c)=?uX5m&-_PlTHZWDF^_-bUu{|K^swykg6ni^VYqMdH~ zcx8`z_|~IIce!-^R0bct^P5vvu}P-q|-F zPBQIs%z1L=lPPm+=X`j4kq_8?+Bkh$m*1jI7T`XZ@?{fq=<=-= zW>&^d-xsmfq&c&Zm4`?d0n{zi0kmH@DY@ zOEyo2`s~Yo`7c|;$?{1%>1*-YbErJZHte^< zb+S!8$r+IEUJ!0Q{Bq+`-iRad6jXEPI`)BQ4xZY)gE~IXxUP-C+t;{{4;kq^ZR|Qb zq>J8|R-EbG?`y-^?HpabWS|{u1mb@&F4R|yEcYiv}d3GQ;zsfUi)?Y!i{IKHhH%; z9CNkg3uo`|#V3CC#p@n>#h>{J){y}pcA56bNBMj9&1EOa@b zIqUOhGLe18O!|A-Q%U!5naCDl~D^Tnll zldtnJe&owW*~VBhxz3K+Em_EkmS)U+c4R|f-!XOx%uj&FSMi$mn{wf|&vl=?8w+HYRdLEH7PHrcQ1;Y}IS1K&B02b-~}h98{CXQu_{sGSJh6#o9$9=Tp<35{BeWwoig%5Ym;YBxbnvC`K zID6mG?@ILh5q`fRfOl!HytJ3%6`#)SaHC@m&Ysultj{J#@zL1yWBIJ#{TjaBnz`w4!s>C83ZnGeSph-UcgJ8cX<-CCQB;ZA%s;nQtC>$ldt>%cwU>^g1i zzOm^O*Wu~+Iez5Ra#9Wi<>t}Z#u{s*xATZ@aWmuJTCF+P@X^@yFkVX+_RF97#F+IO zdRprmqmNv##^`4qaNXRjGvQPpvd2-Mo@WWJ?27MBC){05YqQP7Nq;sfhGrb*|7k~f z6Zgn&=q4{&teNupDqdZIL|jLTk56 zwn5L_1Y-aW+VSJZV2?kz6QVoy$X>>#F8o=&m_DC8cG}S=w-%pxOk2W9A2f@{_TpKC zcAHMVt|#9~H#;5SO!=m7@{eA8v~RVa8O!(d)24n$I+8CL<7=JkDeu&4`nOzTquu`S zvfcF8^jYh&*{hx`Q_gIuPycEd8-U`dx|9u~ zGkf&orH>ywSr_Dooi@B9d!eOehiqUBe)OZOH%7Kyo^YFIWA@AT?vp#++@oU-%+}cC z)AiJ)G5w^U9LAzemVj*d#pkF`p7bbIs@K)$bPP{!&a-`Kul0>UaOsS8qLVjRu?X1zSyfWz%U-W7;J;`6Rq-k-Y31-TYzhsGS(y{W1O0 zdVR8qeQ{ZBac=Bcsv1+y9rZ`KQhe64O?<+iJ-SEd)y^bSCb-tloSN6=vOd4$o8+N8 z8)QeO%D&lU$IW*6Y4*)cdi=uIwaFv=`h0ZPWv9Gvy?AS{D%RV>ipS=QUwFof)96q6 zraW}bR<5UgtRbhdBR{hJZtL(a`FyU4Up%u(eRiJym}AL3`*7>c;VEv4Vb|n?gI6|6 zPxwc;@TPCr_!7Wl=j@j}>1qy6&Hc1@_)|C6$qXOw{6FKv*bc?ZjHwwj#x->JHs#9x z({6J<^Sf} zi}rUG=EJcbp57QfWXKlez&Cuo22acHlUFh&&!s+^*4kHt_Q~P~9*E9Kfb9oa$jXj< zpjLaP^tX;+{%!E|muvgWrP_Yv8!@I$5!~aS?eb%I$v*piJ=|Jx%nxLs(=O|jnGV2Uf1OX{n$-okMyt4M(*Lw{MpyGe)<6p$R9_(i%0$R zk?Z2LT$%ZDggfIkne=eQG&55_pYyw& zc0Ju|mv}bE_Qh{8k?)Pqx@x|;>S6w?-~C9Bqn2FpkFNXT&AMWWECJr}pZw@V?`gB6 z>uD=%u4`mSR-ed9 zQr=IwrY!Me{|WG0180J9JkXBM-dFo(O|mZilbL=2-L%~w=h1ilX&pLfl8^kwaItFa ztjY0D>sS$; z@+VV0TJ$74`OBJ}PW29sHR-qalU~<*Tvp4A&wJ4<#-`2kwYlbvHI8@sxHitd;#w}t z@t{05pN%Ko>7yA>#gwsq94$Pj9B3NHzjI#CJoWpt+L65T?1-->KK6E+xch?+*(RSI z+0ERPIp4rV1G)5_yeECQ(Lrm6{8F4v9%Mu-NMPP9b%4J;I5G`903^0ePC6@oWtq!K6`al@DSskQ+13=sM#a zKMlRv(j|VE`fOe-PCx8()35icOVd_o39n>KHu5&7H*VdG+32)Jf1NI5OtwpPExn@S z-a7c+G50%DuGPqDxOw-TdEMhRW4m)hwRP6(Vm}<~qhT)FCs%#)&ORGOlN_LY(oZ0x z^=M|p^oG~^Ndu1w>8Up!y(2l}laI@Z8NYmPKHpAU_(5xm`#n~YaoT5ICtrN@mw3f< z_W0F|lS9sy-)P~-j>XFC^RwPKJTgxkB@aH6huja^C#wzZRr7qjm&Z?%y^#hL1wy6 z{mIYYGwya@veRtQ$zGRYxg1NLDGPeZUwrR;o3}pupb6g`IW)AUANHJv8%%xCWb5mE z)LgY>>Jm-z;0d>ys^>dAl1GnDx#JqW^iGFxrtgzu_Q{kU?wfZ#?~S`p99|16QZ^Em)4Ujo3$6U-(;s<_9;iU%NOngW7;`NuHvM4yRMIJ>u1iO8;?0Z z^Ff_am(;9kn`>heui7>1TJz=VQ6Ely@};YLbJcbCWX&e-&EZ=Ou0C3KU5idOn6@%^ zsU6YWaVL(sY(0H7`Gp^Du_;C-7@zBQzO9E7uZh3&2@j9*XwQRUe#+r`(oK%^G&dnx zru<~#zk9)yIsK0K7z-wEV;VZel6VDkABEStxyCx{&9TLv>*aTLGjFW?uZC6!s}s($ zV1G}$+xy5bcvYLsw7x%P`KCNw zPnjFr{V-`v{B)Z3N%mx`pE4HL*?G!+bPbQMg4V@%@}xtJeCE(>t^T_8$*Vt-Ioq1Y zOFYk57l(Vyi$ee}C^nOE>SAo_;W}F<)5K5z*-t&JeRpW?v?r~u@5L*g@TbhKjiq1p zK%d`c4=??rS>GJ|oems)(xtxmnlW%mo@nN~d|RF8OLJN>?6~1HKI>TLp5jGsKKj<6 zyX$Ej#CM;^6AiU+*2Cx?T4<>Db|wlsrFMBbnu$>V_qj`d$W7<>0i8E>eFGjMfYSO zHy`gUzt27$t=plwNsll2mEWiD(X>7}k~4dxpYe%vG~Zf%^Vu-_^^8+L?U_xp>+X*u zS(0h?^vMRGR^$*t-L*n|}R|dn-kwy@yWIt`xl?h z<&!hU)pLyX=HlhEv9QNLcC&VeV!)c9 zF}T_1#QZLQ^YK55x%llp8uZ9Fbenpi8_)cxp8y{i(yM>=``5>E;!(4WM zcj!*~Q$E+x#D{;2mEx(`D3)dnBxh@iy<+NU?RD{#PRT_7@UulYyX?hlc)fM>DAKA4&K6{U6I?)Sg@X$l|DAs1o&g!(bUcm5AY zZw$_C*(5!V`f_8&Z+y)i!Q|U~wB4JZ^o%9nu7~kxOgyqDe{0-lZ}E`5jmLlIvya2o z(Ai^a##sK;H(ox@J~_~u&HWB&Sv&U@_vw-EqT@c@cDoiUd(ZCqZ`vX|u;sL4dQSP% zdFH3FU7yw@x1Q`fp0RM6kMB;`ycRxL$xQy;26QcE;05p}?u^&2i_hJD?wixQm!sve zYvb7%pLiLYYr`QAow64>t%?lqp=WYVVm>5$#bHJ|O>YbWLJ{x}WX{jsk>bB7~Z4_18gp-ua=kg5KD@pflyn5&SO!yz)+89PK?l*j8hw z{I&ZzAL;q8eA|1qy>~$UuRQm?+kqdB`TlR7{^*_Xl&9-U{-j5K*?lr?F@2rg^GEe8 zzhrm4G4F)?JwDg)cib5V`8_)Mg5St`&d~Eu_dzk2U+64;ja!=^U58tKz|B^A4V^vy zFXh*1!QCINv-YXNl=(=GXyz}vWM8&)%}#6qXYzGVUvo3|CvNn!Rldh($4l2K=Uk5l zAOqZ)2Xl>_aQ>RV^ETgsiu>scwA{~H7;WQwo^@uLc?1V8d9_KiyhMNUop{FQ936{^ z^ky%x+uHo}O@3+J?2l;h1;5A@ImqvO?#Fj#S zN!A&st%VaGz44i!mu#DTvh%bJn&>1CoN3$r8V`+MXFM6pzj|%rggfJ|m=jCIT5F8; zyfI^b{+_4ta=;z{dhcbu*qnUl^^8k8P1~@=CCFz-{cbz=(Y+3T=KjoA*YwCv*+W0| z%y#ngWcY(0`KB0gA3PQP$xj!!)@k~=cGq#*(41ImZ6YQ^wBW$Cwz!}1nH+muX6JZb z!XvN7|Ln`QNA}E?NAjJ$`sDLGnsBH5$&xPRuH05DwOZV(Y{&cloGuE2fSBI?)*lt4O;nt(0#f!|@fF14yGq2$0gXBFC|F@uz z&bTp(+;lbYJRSD-I^nRSd)!*nd4_1L|4oekNWaqm;bcj?vH3CL%ggh z7oy|dGHc+IFa44=8%GCj_;B-|o03Sr&7Uptu0NA`$`ZZg+2wE_{^VIK#hZLP zz&`>!(WGZ~V>3QbE7bP=+-F|PKJ40By?e6KBc1fq3R8c$N06@8UXne!(TgYiX#@8= zE}nGIlE1jo(=%HXll$0=+3Yp5$y(R>pcuy!EUo zqsaz%B@dYzYG5Xia@<$z=Vd z7XR79-F1l`{n9c0$ly90Yin>d^!FUN&aQCF>G06dl3~(@%U{KvYh&51c`+phK=IX@ z+2{M&lLNi~zq5N?lB`+M`p#!D1A+m`FcbHGJ(%eOGGQD{Xh1@OOBmHJv;XR+eXp$U zA;K&@mWLl6KSZpo>e}z#QA~8%%O<^W^KE)wd&%H8+YbwSua7SGN1C#=PCX?ebOl55{{v7(;s-8kSf4fyJx?09Z2k1V~79dG@9@|iF8V3TL} zhVRVg{`{#v8%OI~ziQ0qr@8UN`U?8%qd2P7o-uOY<%BPo_=k1-h5dJSfBh_H*H8J_ z9+w-l-jt`NK7F6C=TCZJy7|iP6J4FKJbQR^*N2~N4H=S;zH9F9BKzIr zey1vTn@jg&->p`*yZi1Z!xsN=g!%SLdt2{vdTBYxM)8&x)Sj_%!*0Uaee!GP{CdY{ zZ~f#8@6L-ooY~nvR`>by=m7%(Xf_(@j3r{7i>L}ySWhG#u#Hdfb{$II<&mJGKVZjbGCr#(fG+P zeRs_BXPBc`>hjmFHNWC8Rfj&J@1~g z*;#~V&%I}(+KAy#=Iz^0bzi&bB%2@4<#ziFk4(K(zBU)%-2p4NIeYppDR-NvwfjoY z`Dniy@dY2e#RGp+pM09PulILA^&^Vkj9<^A@uKbNS3W-ZhgXh;D4x9wZq7?X@wSf| zYok8f9xFGnl$&^-@#}#w=Zp2zO3 zFuy>3eR%##l`;@Lq)ygOHKWv#EgXBet&{f3vWb$MyOI;1CGn@{{tv;4n1?Prg|QV%`VF+35++CB{7A#b0pYH3}(*6Q6muO;@lgRejyV!65OIeE00#B9pL4$pjrq5cUsdU3DpyW@VIsf~%8=lt?zjaNQV&()&b zw_pF3lWd`8@?qK>uHEWS2S53XadUIm<#l_qKHT0iOkzO;J?#V5PIth3Qxb>F_K zcbD2Pc75_`);}xH$Hx0Y9oD<8yWd`SPW!0+?w{U``#wpgv(2YC z)%w;^9(O#|<<@ZJt@`C2K{ii+l7KinXYvU8+o%YN9?f<7b@W}_A`m(;k4^KGwTOVZU zX1lzwYoz}v7WO{rye+(K@SorO(Zvtj#{G2OIv3(x8^y$a(|-BbGq>x`X6Lu_MbmhxYyTWr&CY%{qe~M9vt<5=cfLzpO@cWc8lYQhMk}A zZJcUTpQxRw=JkFx?)yi*98G6!Tz$HDWDPzyhvgNYOuo0*)@WThEojw_h#Pp*~8leSD+5mbVvkK6XEua$5}HkLII(C|>emV}reN zZJpiKTU~bV%;(0wxa#}OQ+eLK_VJqJ%zUIrcIV2IEym3~8Rx3+mTZwDBknt=1ivih zsbS;hjJ>tF%ISTgYj5q~)7e^GSvU+b`n~?|?4;XsXM)|Q7_w)7$Mw57*G@gKy;xq* z?JMiBJIn5c-bYLE?JxGl_Ovc;)CfPU#TX9`c(>2=jpwH4r`}tBI-LnNt=I0o@1O4c z&f4m-o&7LH>wWp%QC)7WHh#IOceY2$b$KNBG|FK>;>)`;!jjW8rDmRl!hy>rtUAw!4n%?*F$ z!`B@!!7YfBiA7_y5m*e_kSgr+qf|{|BB74E53W@!k#X%a5_S zkQ1Xkw%57e{b~@+7TMc(eV?lb?Pqgk_fEI=cRKsu%dy7G&h~b^Ydibfukq;c)8D-K z@A2e=d}pN?J=0B(?)6KiS&U2Dd!pq&e{xEWPm>+Pem#j+OS0>0*Y*rHI~#hWK4;T@ zxRTTF`dn|-+t$5n^wXY+TNuGE8BW)?b?36VXg1Wmw4r&T;Mn3 z-@WoB-eP8VXLmyJqIh&~j^(>rvX^e>^-}vLf8?tjoa{7;O*~<~)E+$p4#PTK6i*M; ze|m$=<|W@`Z~r~Xm*e~|27dNzJ)JLp7U$XtJKp9~&O9ee?$f-n@x^C(=pKRdVujaq zM|G#TPxgP4kxcq%Hov2v&j0O!@QZi*vYy$#k&ou~M>Q?>a*i5XXKQ0+@tUvAuaA8u zyS3sQK6R?+t68}0+jFKn+n%edIG*e{f1O2o-7(!M?5!QRHkR(A}q`n7y`ZsLWZ9CaQ&vwhE7 z_BMuWXOFI!iyytU$qpan^Lr`1^2&~S$+?=`KB|}Y9kuVCTf6)GR7?KNaKZW~gM8RG z4`Rt4JK{I2>C`*oY|>A!{XM5oxXV@d4L$Z7;roOoJml`Y82AqZe_@M%X_z)HJ{t0& zzv@%{T)%AJwch+K*0o1wM|)9w?A6QG277YU45z(x*Jt~vJk_uDnq1)7EBD!cqUD-S zxsBqEM&{&=C?fLlkN`uX85uhjgPJ$IV*2`zY+iXiGL@F#kKzNvyh&6s?{f-VOQO%#Y$3e1x_9p-*@= zu4394KIvyGo$`R<*@uDsov?j3tHGt>k_+({`<}7xWOA!pF5rPHY}KPY*{`39Klx}e zvALsoHkbKB`LbugXV6I=&E|Xe9RvQ>EzJ1lV&^Ac_`3&xvEBID3IF1|eJAHT>%%Dd z8&^2O`yC|nEr1zU4t*fn{&{N)2R)~+>P7~3oF zY$QYOj`Wt2Sv#BG#TdWZZ_YPf`+By%UAeIF-x-hM+2@CD_bKX`o#G^upU$u6#Y;Y! zH=3WHbau8wK0oEM+!TNDR4@4T18U$ezVB?_ypc_wjWE0ne|^A`j(zK7F3xQIDHT_f z?K{_3c+mCBSGi=14w+l;+ka%f8!K;p$CG_BVUr_ROt@fFf4z05JG{BQSH4j;HdbrA zWcX|1+2=32DBF0j*xy+WqxRS_#H!!C@A^4t|DChHov=ryyXuMR+48x$3j0#ID?V#` zJ3J?|`6$S1E^mi5y8FTflhqQ{ONs1LHY{*fwlc*)VT4_9@mHhAgg2hHYFUCKZI;kL$?Q#tJS zVRE=Rt1i{9J$BaT_6&^WGW?#6m9xfsXa48!9=cEDeSe1P`hWKDOqaiKm_@p7H=|Gh7>6G1=RFIjaue^>AmVdrR+I*Zb^jKk#w$xA$ss zZXD$;NvB43} z#YC12%<7{K>e{R>_Q*WxuI*x%8#>iKJDzv6ztn!Y&0e$^P`v!4gD;-V0emK&{FFD; zbM-~#aNj|m@yla4UXH&$dR`jF{PrA;kK#S)#$P|huzg~^{U9b2?xyFyhjiEC)hppx zeBx~`-eloYv-`7&IvZjthNt+lV~;#Nw(j?mey7y$ko4v4Az0X9Gt7LmOTK#>?JmRT z(`1hgI&9QCU07wdA` z9o>6t^HBV9#cqDfWxkh|m#Dq+9$tIpY;&-2f3o?`_OEx`?ceg7y>$2uPq`ACA--xH zUU6=$;m(e|YEy1JFAu-T2Ve54F7=yd!+x@8bw39!p{($X*n|O>rs5OerjiHEUyayWEY^I58-4P<{&wFwd&Trb#r-t%pB=i+ zdFRqInQ{=md}fo}cYU_@!h{?1g#jaO12dpJ;UwtMLN( z^|AF2^X4qy>}KQAwU^zOlOG=|AHHH?|GRl}<(YhVp8Vt^n*TqMO$XgPbe7gXd*UsJ z*6X9a?frUX`yOxmhK(>^9OYwk_T8Q2KHc|f_{)DW_Pp`)k!^PNzO&Y!Y?C3IjchK) z)@18<`sQMUkG}ZJ!{#76<$=9ycDMH~xN)b0riU)Sb@6OIc3pkY@D;!3@auu6QEbWS zA$_p-%y)NBd+sB5<@;aG-=FTxy`S`!kMaa(3&n zwb|NM*X@^EzwNF1_4Zgg;i_)Y@&o6_JT~Fr9yBOd}-oBB{`dAFD`73`9Iq%^Rhnh!@(9E@?_i>y@%Wz$!>1SKWd-u)1=ef z{dnc!iISmH4Ee&ZhVs2bE%mCt)T6gg>*Gr|e{5%;y&ZhDA7*%9lq-4jGvEF1;o-Z( z$rOj!=(58mKX5H>xcJOhvWtO@oypLnpUu8wZcg?*+xPDFer>Dt_QN4OE ziMjXNzQg*RN<8nZa_7H8*xdgfA=!OLvTgEp^9oD-1C!}lehir9$29QDtF`gkID6mK zYIBfJ6t>RaVuf+*wLY)!tua5z7DH4$e%JrIzx_rxJLvX~Uby{mYhO>pM}PfTc38<)HY|Po`X<#hA@x@Y5F}e8mkPc`|HN8+Bt3IvQm+AxW@_m2z{U_?ZZoi*jli#0H_gt~L z^ZMJpr!{$)HxKoSxaueI8t>?Te&THo=S|AbS`E{ z^+0{P{jhysZ;`_{!dQL73D?f<02H6x##+2=)>GE_~OO2{;HN_`aUQqtX-g8hM?VCn+ zzpH=ps{@C3fcv}q{^|FS^&MTgf)9l`|ET@qsGgU~Upc$|lPz%+i`b0i@xv~Cd0#u# za{Y#tp1FSHpqbB?z>kl7CxaU7Y%V<0m#gZUZ1(8kRa4Y+e(g8XS;~j}=2tFFu@*O4 zj_b*rqr0zPn=8u}fBb%$i_bcYFy&|K&A!QBYx~8(-_Gl|z3gYJ_vqSf53l`ba$yS# z{?nw_``G$PKfSvTE8Jo!N5$oN`(}Fwf2ZDf8Tj#0udK||I=y`Uj;@cD#b=8TecSYW zeUMFV`@Npuz9%a`x3ATv8a~yno`JDpovqG9x!*m#XF-{?Zw%?6Vj}n5tk!%q z*2Y~w*?h9W*6MnOzy8&ew^#f5Fxt<1ooD(6TZZ*hPB)Kl$+s+d1Ftx$?Ng50yHw7b z_UN*gO?&#__F+Gx)r0kXa`^4h&-TTZul$jF^7-^G;cNX_-=59B`Wf%6y+7sl=G-&6 zTkmwyr?K+8-nd{ZPu6k~F4Xgt*}RpTTd!)yhRB@7`b<38roZ;+#mnYWSa#aG`sH^i zyK6h0VtvZ_*2P+m$(KL&tPT5Ymlo}KS;%`}FSF^WQno zzUOrAdn$j?+i&^IR`h+Fyg%_4=h`av>hmc_>-VXzI~VnCb~mTj1{_cL!@BZUmW+M& z!>-Q8i}CPL?ZX6P6VE>V?t`ZutEaLhUO37rS`NrGlFuKSKQ^;V9>1CXQW(kC=h06# z*xKQFbKse-bLkxRyI4Q7JE!>0VdriAunSLvEwRbT*4DbIA8*g^`KX7JFSqqW`K@M) z!TJe9{(3KV-uixs;_=O2zM_0K@xqjBn5u8Gp2G>(6Sj?)z2c4^CN}BI_4cT>nuy)V z&->~9S$)Vg@sbatXZ)36&wexe%P;OIS%aPW6E#*Zn<(90K;VImjRT`Pkf)6TJ8^;O}0&6it3zvU29nSU3Mmfv|AI+PGmP=&KVePY zUi4zTS;4|0ccy3hdxx}MeRYfd9CcbfNTMtBUt?&1&_bLDN^VU9{{eG5A z^r<&)AJ)%edBP8KI@a5--|dmxkzP8Tnax*t@#>F@Yi)+>(v7LwELBf+@13TXZ$H<= z(d`SE%xu;l+0{$zIVaU;uoZ8<4*(Fc!$xr_3yK=+-%8Ofm>Kr*Qmtkd#KG_Bx zvh<#MXY+Zn*xUX5M3Z0I9*R$YG1Lc7JrqWF;L{mMmp$XgReVpBt|2eQg*I-S)x92B zx^*db@upMk)s&1qJy2iv-6y;D+TXowMzhUky<(03H0kk?{iR`fpODXg(^$UB)hm%- zAM#%fVEyv&4ONLFlYtJ)&bu6#>=ZDOWeBZpMo2^@` zaI9WB>*w0Pwcl9bH1YDA&5a=$nCc0X?8>o2roKdrBmCr>D_{Sj>Cw$z``w@S4!!pz zJs8u|uk7MwcVoeWXX6QHysaai__I;WYk&RV-@SP8`QKXdfmdz97cS57UW#8ItF!ju z+gx-{kg4X`%cgj@->sX@tGlxMcK=qPb>Bfc+hN=o%PHPsf5O1Gku3Q?8ElEMdU$51 z7}#Yend(tq@-F&C15fO7SN`gQdZD`Glld-ZyZ5^_2w~nBiw%Wc4xV!Jl#_JqUA=5{w!fofH}`8# zUfoZ=&-ESe{tRWmGx=2OYD8uy+dJ)j=WG3>mri#oO3uEx%C-35NIn_7jr~&|%V)CH ztv-9IzrFg;n#}fIYkZ@6@)3^K#i2(`vSC;sFGCL>`L5r$&+|{sI@$Vv&9#@Eer|uF zdxqA=uJgBa_jlbHDhJW}b^A>HJvTj9`+7tV?8I;4lc(SLs1{Lvw-(i}TJ1jUV)+#3 z@;A<6%jZ&i^+0)A-LU0588o@{`ByJ}@#!5%k9?TQ%lc{G-sWy)zQaTA%Cd=fV^6La z;M23+<;8L7?fshzcB+Tr@#!gja(m|XUOh<1+&Dbj-~Oy8^`DtNdVGh$b2hWv zemQx{wU~_J%3gI{e0Lq*jp@qt9G2|UEzXTATlSiG#gx4$yUlEtGy3U~q2qaHb}og} z=q&90Rj$gb{E_Pp|8!U0dva}7gKU?laKXQr_@KWwR+p?9MtcTcxmerf5Kn&OPF=eD z$|bpM7Wa+4Jm7y97eDoT{_-eN=Xi}An5mpF=PY4M?A49_RbPx9Lva@zgto_(5qSE!dS z-TK(eo_pNi`=IRZIS^B$7|Ln&7t_subxk*lPc|Eyf4om~^S0}i-}xEF@`xtCa-Y`euTEId)$?3ViYHmm<)%Hh z;n6F4tiIcR#5eL!XJvU6?K zhuy_}x9PY2+n@RFeqxL5;y@RNHD2>+Pu%4zdh504o(!FARhP~|c`4Q?{*&zQKAU`RZNs!ZvKXwlFRG6^Z;m}b&2rNjSbyayJXhxC?(T~P zw(!-v?5@pv55C0%OOtKmCGg|p#d!E2%YOLRUpDHwdPa}&Z=ZgC(e+&pLAZW4rfig> z_O4xWY_Yq2UjODN9G=4-=8J=@5mwZAF@Jo#7~gyl+Zf8F8aCrC6(>C-pYV{OS1))b zi{d$Jou&J3OLlW-oxc628O}@J9r^1gnf!!b4CU5-XTH06W3gWx_s$@1;)`u(ve{&3 zb9ga?nw$x9YkL=CGRcK8OnZN1CmlFUxt53WqOMQ9mCVv=hDT4&y0`b;px3*r+TT0A zKIfAhdHeTguk0+g?CzOikF41{1odohb#~o35{D6+@aVpPyk}`g8Z!J2g9Gx8}vNnCkOr{Z6KSD>ryMpK=wx^83l> zp0(DC;Zu&-V|&NOc-P^HrdywEPrjPxeAF-eig(ZP%~km*Z+tShJ zEpK69^Ui$IHQ>zm%|ASNFjY5n{S?!m=+={LG~-3_HwXE8XYJQdzVA#T+}T32MMunX zQ9k71ospmK0MGWxXLohk@VvhAK|X%5UJP`bD=!z$@}6tF?3Al`{IFB4trxEt#IpTZ z-SeOR=EJ%evxg?T{<0Hq_24sCm+fY<*|_%azGtH|;S5@DOxKsaazMU&z**k2&(02d zjm<|G?a_I%7tdX>_f2;WJ{kIKv-y-O@oo;b7N6q0F@!x^aBn`!Ul=+!TQ|P&^__Qi zKM$gw^=#*N;|L?$rf2(P>*dv3d3X)@)M@i*T@LF3a>h&P>!Th+8|{~q;<_;}&ZqOZ z=b3D?*yzYhe-pSlB3o?Xf~Wl0w+?rh>w|oGUKw&b{dX0A-Z5c~ z9}Q#s^x14=Kf9N*^T`HX^7iF>Yv+0O+Q0pl+~Q3(dzZ429rfK=FF#Q_^$Q=@PrNAE ze65}}``!)u$+U*!`lZjF_>Afw)fe4`?xF4?velw`kxd4rXOL}puGdh*UUjy{Tc3Mw z!-E%}ypjLTf8X!+{9nCKzOUTd!`p|w;^Xt$2uJUY-W}y;`K@7WCeKd8I!sZ#Cb@8I zUCJw-8rM_kp1Jn-Jl#IiJ9_9-U+KGM{a?S;+xFY*T##x1$>;9FTzp~fd>0eGAt&Vr zHExc`*1s>MA0L~y_1C&Q@hPVD%};)<*-E}U$8$5A(PYa-w$sgLd8{tgruyueFTd3% zy0)#exi;9h2iIa;9NEuau~nP(XRn;g&r?nEvosyK?F?*w!^a+eBm3zupZzex9{#6X zi*aXlFCKRHZt$G_;%65xjA1KI7{%wV=x*4%hRsI0bc!vzD}!g?mAmeuPqh3-!_ysw z!e`%jd-%({ySpqup6R-yo1X0(;@Dh-+n)8tidVj~?^%pS^6I0mYOsA;zvRzzbzfRv z)Em`1Ea{`w0fuHccK-$N$A^7m?eYKQcYTF-W83~L)_Sk_pJa-yxUWrjz}_=`m&iw0 z^O5}3aj!J5jc{fw`ebwcE@u3_2iM1Uam(eM)k~Sw^7dNivolez*MsQl#IG;fdpZ+) zHu7_+o?n}5FD!iNt9nJQZk+Ain#((0`9=ReGF#8@{ARy;N7Je2FV65Kzm#tEd!MfN z`O21@sB1Yx4f}Mn6}IK&7Z0Xv)gx?~o(=o#mUnAo<&zC7N*BNB+3?K%)1AlHpUm(S zSG9Vga#5_sP%ZGk+bfTkrg!P)^BwK`9uKd5>y2^u?tXjgCz+?cV!1x}t0v{XGq$x3 z^LLaT_MZGNHv7Mu?C@1jz+&LDwRtZ#eADypTPMSBF~0);@quTCD_fUd{dDqKpRLbq zklBg9{=T!3-^EFP?OA8DJ$SsU_T7YM-`Mo!vXsw0i(G z$k3r%PBx!U_VOKN<7MpYqZqqamiF%HU5Ca)FTWgR8~q*rVkn<#(eDrY|2Xt}vU0q= zOXqj*_wrHfQ8{SfmD5|3Vh~$XOmyjlzZ&4}V7pq~ejvBG^1SldTuh6Vy`AMoUYg76 zds+RC*1t>1$tzvHn|!gmcIYLaPqeyNXJ>0+-4xS~jd5d7=I)0td(rG}j-S@-u1)%$ zZ|(OCt~~#8BhJmipRVOf4x66ovI&b3mOW3c_2r&h&jyTPt53>jF}{rdu>Vr}@Imgz zytcAO=4mh+UX%=-da8c8x!B&Sm!ouHXl9F!zT7@0A?|EJ_Kh8Yca@m!4giLSr3|FljvUDP0( z@0-v3XD`f47r*uHwZ1aRu?qt%3v(hN&6;_|+h+blA-XJZ3obh5Do0yBEX7Nx#W{aV{R~@=CVYUW*SO5k~Gh}Mf&_VT-1`Yui1;7cq!!-!|U+Ef?&Vkx%bS{qmQsyEU+F0B0Hp$t$xnajFN9jlDu_1=v<>Jch^Sc9n-d)*D1~tQL zP3QK+r~Hzy7ApgPBcH{AzPz58s_kzo|7q$YtO#Pe!1SfrnC6AR&*9y@n+NB?(h91 z7oO=P4_o-sMKAx2`q$6o$-*TLc_P9Hxhe~m+vrmhTUk7-}(XdOrA`+*j$$j6klyRBi$4I z{S&%>uhN}^R@Z8QW-B|+8(uQ?M0XN9c-08a4*TneTz25z8hf_S*Sq81pPo&7>1Sj0 z|8&jI#kUyqmrt^6%e86EMzg*8Fd2G_nY=x6x9;5&)n1R*r}pYQ>w07RNS`#q5si=L zH~XkTcH^=xuGW`|rx?pwxhh7s`7I~c#;50UyL4sa^Vf`*9G^`*`|1(aOY7D8x-)}M zmY;l}`Hk)#e|*bBqk6=1zN@jCZcUbd_dJ{37rW1aoiY2 z?f+jU$A5W;<9B`;C|6Ou^7Mq~`r;!$TYK@Vp>wXjrZwK)Db;dm*sELEqMMU^Ub-^r zJyCLW`GleS!?V5efzl^i%u%vtc_3F!>9J#PWx|)eYoq-qx;o`8+u=X^iv7mrT#GFn<*wMu7ut9Ue|>Cz z?!DOk_#I7W@6+DJOYi%afB3{)zR{ZpGDdh&&rdNe-&$;o%X;&a&E=Ild4I}Zyn114 zy7=*TuX=YrvV&G*Ya?9Nc=gowUV822uU?CP`|Uf7zpF$2v-mb&>)W~810;XUBM3`1$!_etodl#4F!7$H}8Vt-R~AI`q=T zZ_)|7xHm`E+oSDu#`+$JI&=1mTYNkD2;*z<^|3tIyl1>8{9d5{E&2ZMCCJc~&uYXU zKiNV(Z|=)Kov`m6QCv?n`R)re-E!l3_gCiHOb0Dr@ETjc)~}7PkK(&>o{Jf!Cr`ci zIxq2-k5?ZoWh1-!#Un%KX|kKW^uzk3_sL(i>)id0Zk@?)jkhLSGkGURo_;YFa~SHI z_0jqXS9|oE@sh7^FTH)T`|T}e_Tg?m`O60V?PKS4e>WvJWMEu7p3|*wJzpGj#7RD% z$rN{#T-fW6`b8|)4n6Y5_7Re-#YyEHaB-a zJ1h5H?$_4S-Iw3&UMi0ADNb?gAyn*}*OlA6l#gu55nE)E+q@;mw*7qOx7;tkzHTqO z{50O)-k*4U^0hT8hWuvlldrY8>wKc|t=DIDtNv>7H0|pH^>Z#vYy7ZpKh!hX_ndxv z`5|-ddQP6N-V6Qiw*4#9`CU1(&GikhUaQvfvZFka`4l62Yg0^{D|>isu(!3SCTO*F zS9aI-o%8)Z@nAMM>hBT$X64;$#-+}*xFupJhsAqe{%}!(EF5j#Bq@UmNS1h+T?ir}>mTte$7b|-^%Hz__U1tY< z>dnsG-Cum0|EDuujnU%F?{_}eck-9gXLEhzCtvNCpUs6eemVK1OU_VxwYyVY>!oT; zmd^Uf*J6mbF~kd3v24DIYxP#HnkBb3cfGN}yhEINTQB=rb^kVY@00GD&WjuvY?srE z9j-gc!d8AZ{*5Ed^4s7K-dl@sWGnmWvDIF9ZcgRWd2{}HXYE;Ry=QXc-M+m&yLgI0 z90rWxBbRLXSz0_x)7^Nk9naOM_{;U`{mD9fi(%~-JD#!eR=etl;*nb$VT1?&PB9zV zW+z+alny)abWZ5$bv^FyHU5XM>6xs%h^#aIkH6->_?rLA*Zk*S(>YN8|Lbf1$FKQ+ ze@)NM!aw<%|I^p}r(e?TCY% zulav|&FuO+681g+A79h{|Nb@q%hwbmzyIuOl9Q+Y8?a)gCq}V}$#)$+%|D#~^2hv} zfABXiA9Tde4w=q4Kihxy;ep{le9eFRHDP979s9c%zT^q!|Ltp9C@eA4s3LGm38 zPX5Ti4FlP~{+ckuDrPlwfN6plRUX>@d1~*s*}3PW4%DW zI{`Ie{cm5BZIis(@~Nlf-C%<(9iv#pLr&fP(bp849y6`&!`MEo`s;uGn(D1L`H%yC zx3|SZ&y+*HVbnir@c(>Gyv~oD!~g$&O>+PBYkKZGvD}zyUQX!nnP2%g)W5TgC;up( za{*KNf!!V(;SGMI0&)D9`zdbo&+rBug>-X&O-{jNOlVVH{ zm3#WtK%V5T{K;2xWW-zU?1@WWH^=fpRt#{N@EiOa)_CosMscx`{b~jW{};p7a52IL zSAF0)SuwD?`}Pd^mB(@oS9alpTW;kPg`Hm5$QtD2JlU1sIKw19)APk%@4{@Bcd@CJ z`^R}U_rITQ&vSd^+*fPQIy>#vS7JBB#IODA(-U)X$^$vr_zep={Bn^TezwGnum7D5 zcLTd@k?DSwAAB`p&zkM(2_swNV6#`hyfgQHKgxf2*kT9Iv{tJ<>wD(dlauWeHO@x< zU^2tOcEcL~UGXdNx*%oVc=QU+&<6!?ZTVcxQ5A?7qM=$`|Sx|DJ`7@8;RF z{MV!EXDtuO7I*o&uegAI0_U$S%zc@QtT%`y3W;FmjcVl?UEvlV8( zR7<%a#R!2Cw@u08Cqp!Uehp=nJPrf}{adA`=4IQWDw%y`a} z_o!)&2a|!)kyq26xbiKwJ7J<1UV4j}e0>PtmEZSA`3Z*}@J@%-okBJ|WZ>%#MEMmj zAK`pC{P7_U`(h+ZKl#Nd7i5jKm43ChU)|~>^5oz{J+BO0_-w#ohJg)zL!NCiFeXFS ze&@0tE7p3zGkt!{^xUoPS=1fCPr6HCUVX9L$*w`xSoz(HFGlq(W^tM7pl7^?I``4u z-|udGe|GNcGx{bzJ$+zW({HxdJEiv`>K%hmhMjEk;n}pV7GelHs!oP{s!4UhlQ*$H z<)l6PX3zCTJ{Ct%_ZLj?>5*{S(+~AT?*w`~)72we>+ptMjP~oLl`Vcb zF+9_&Cs5D$Cfj0ZdN#7Xw3v!-alVwkKC;ONn_-5Lo_NJCC*`bj7B9Mak{jpN%zx)F zdhzgyxBGBzKH&>%IZ|Wm#ZME{o{ z3#)ZGtOq>f7c+ZJ_{&ce@6O~u;iXHaT<~eYhnF9eTsXt1-pSfu|7^=ic}MFhd~0{H zJJz&M2i9`KW_H3_EH^Jt{NjSsS?pXcbzZ-lWW~!ybK@^xFgN97NAbX8ZLqa=@a%6M zt;L03yz;R9TwXV~WS(Yqyt%5*={(7WBmD3dSJ>cP%y4f^)jh2IZO_~_TlD!^UyJt> zR=O*fuWZ6!4fMuNb!m{ZzOu={Rs3No2a7vAau61JWE$n_cXfEG1siK?F~hpO+nP>3 z;WKZ(J;!5Ho}8Dy4|G2A9|p4gk|)y{>%H1L(;gYJ;iSt>d4;Q(!-FSJPd!!smR1{f znt0tqeNS{J;nB6vzB7iO%zmG|-@nL*sk6yexrKkR@17h!4f(jE8s5C6FMs6nFI%NB-pouYOQd?<95hb3k?PUA24rb3(DIugRVq=qEP&+2i&M8IwFc z7|ZQqECw>!)nn}4x$jo%d?qi3epiT!kqoTiEl!kPb%d$9Sj%4nM!78hJqv7@`B+L$ zO!TS`o5jpG8TvQYwM!;jn@={&X?8s?FFsi{fW@q5k`;4<&hG}s8}`&z4%F6Ixne?9 zsGdfPH4OAjc6Z{HBYvM|_HQp-AM7^RWeb+_W{r1ocy2DXyC!q77T?OkaPz%+&KEiS zCLO%BWo@iIwdkzahhcG$kH5Jq_Ut7W9`yPP+okX{*fHpuYp*qYVcGk1*VPHFhvD~S+2AJLL-dBs2U6UUC#b&*|yX*DA{+;D-W5f%~ a##YW?NH4iC_kIo2) Date: Thu, 20 Nov 2025 15:27:34 -0800 Subject: [PATCH 3/6] update patch --- .../ai/transcription/_operations/_patch.py | 50 +++++++++++++++++-- .../transcription/aio/_operations/_patch.py | 48 ++++++++++++++++-- 2 files changed, 88 insertions(+), 10 deletions(-) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py index 11e67cb4e539..263038ad743f 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py @@ -10,11 +10,15 @@ """ from collections.abc import MutableMapping from typing import Any, Optional +import json from azure.core.tracing.decorator import distributed_trace +from azure.core.exceptions import map_error, HttpResponseError, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError, ResourceNotModifiedError from .. import models as _models +from .._utils.model_base import _deserialize, SdkJSONEncoder from ._operations import ( _TranscriptionClientOperationsMixin as _TranscriptionClientOperationsMixinGenerated, + build_transcription_transcribe_request, ) JSON = MutableMapping[str, Any] @@ -57,11 +61,47 @@ def transcribe_from_url( else: options.audio_url = audio_url - # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") # type: ignore[call-overload] # pyright: ignore[reportArgumentType] - - # Call the underlying protocol method - return super().transcribe(body, **kwargs) + # Send as multipart request with only definition (no audio file) + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + _params["api-version"] = self._config.api_version + _headers["Accept"] = "application/json" + + # Serialize definition as JSON string for multipart + definition_json = json.dumps(options.as_dict(), cls=SdkJSONEncoder, exclude_readonly=True) + + # Build multipart request - pass definition through files to ensure multipart encoding + # The definition needs to be in files list with explicit content-type to trigger multipart/form-data + _request = build_transcription_transcribe_request( + api_version=self._config.api_version, + files=[("definition", (None, definition_json, "application/json"))], + headers=_headers, + params=_params, + ) + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + pipeline_response = self._client._pipeline.run(_request, stream=False, **kwargs) # pylint: disable=protected-access + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + deserialized = _deserialize(_models.TranscriptionResult, response.json()) + return deserialized __all__: list[str] = [ diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py index 226755a24114..8641af408ea6 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py @@ -10,9 +10,13 @@ """ from collections.abc import MutableMapping from typing import Any, Optional +import json from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.exceptions import map_error, HttpResponseError, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError, ResourceNotModifiedError from ... import models as _models +from ..._utils.model_base import _deserialize, SdkJSONEncoder +from ..._operations._operations import build_transcription_transcribe_request from ._operations import ( _TranscriptionClientOperationsMixin as _TranscriptionClientOperationsMixinGenerated, ) @@ -57,11 +61,45 @@ async def transcribe_from_url( else: options.audio_url = audio_url - # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") # type: ignore[call-overload] # pyright: ignore[reportArgumentType] - - # Call the underlying protocol method - return await super().transcribe(body, **kwargs) + # Send as multipart request with only definition (no audio file) + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + _headers["Accept"] = "application/json" + + # Serialize definition as JSON string for multipart + definition_json = json.dumps(options.as_dict(), cls=SdkJSONEncoder, exclude_readonly=True) + + # Build multipart request - pass definition through files to ensure multipart encoding + # The definition needs to be in files list with explicit content-type to trigger multipart/form-data + _request = build_transcription_transcribe_request( + api_version=self._config.api_version, + files=[("definition", (None, definition_json, "application/json"))], + headers=_headers, + ) + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + pipeline_response = await self._client._pipeline.run(_request, stream=False, **kwargs) # pylint: disable=protected-access + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + deserialized = _deserialize(_models.TranscriptionResult, response.json()) + return deserialized __all__: list[str] = [ From cf8f75dcdaa0614b81a042f674a76eaa1042fc45 Mon Sep 17 00:00:00 2001 From: wangamber Date: Tue, 3 Feb 2026 17:02:30 -0800 Subject: [PATCH 4/6] fix enhancedmode bug --- .../azure-ai-transcription/CHANGELOG.md | 10 + .../azure-ai-transcription/_metadata.json | 4 +- .../azure/ai/transcription/_client.py | 2 +- .../azure/ai/transcription/_configuration.py | 2 +- .../transcription/_operations/_operations.py | 3 +- .../ai/transcription/_operations/_patch.py | 13 +- .../ai/transcription/_utils/model_base.py | 124 ++++++++- .../ai/transcription/_utils/serialization.py | 17 +- .../azure/ai/transcription/_utils/utils.py | 9 +- .../azure/ai/transcription/_version.py | 2 +- .../azure/ai/transcription/aio/_client.py | 2 +- .../ai/transcription/aio/_configuration.py | 2 +- .../aio/_operations/_operations.py | 3 +- .../transcription/aio/_operations/_patch.py | 13 +- .../azure/ai/transcription/models/_enums.py | 4 +- .../azure/ai/transcription/models/_models.py | 4 +- .../azure/ai/transcription/models/_patch.py | 47 +++- .../azure-ai-transcription/pyproject.toml | 2 +- .../assets/sample-howstheweather-cn.wav | Bin 0 -> 53652 bytes .../assets/sample-whatstheweatherlike-en.mp3 | Bin 0 -> 12276 bytes .../sample_transcribe_multiple_languages.py | 57 +++-- .../sample_transcribe_with_enhanced_mode.py | 237 ++++++++++++++++-- .../sample_transcribe_with_phrase_list.py | 34 +-- .../tests/assets/sample-howstheweather-cn.wav | Bin 0 -> 53652 bytes .../azure-ai-transcription/tests/conftest.py | 54 ++-- .../azure-ai-transcription/tests/preparer.py | 24 +- .../tests/test_transcription_basic.py | 33 ++- .../tests/test_transcription_basic_async.py | 39 ++- .../test_transcription_client_management.py | 8 +- ...t_transcription_client_management_async.py | 4 +- .../tests/test_transcription_diarization.py | 12 +- .../test_transcription_diarization_async.py | 14 +- .../tests/test_transcription_enhanced_mode.py | 13 +- .../tests/test_transcription_file.py | 15 +- .../tests/test_transcription_file_async.py | 15 +- .../tests/test_transcription_options.py | 62 ++--- .../tests/test_transcription_options_async.py | 40 ++- .../tests/test_transcription_url.py | 4 +- .../tests/test_transcription_url_async.py | 6 +- .../azure-ai-transcription/tsp-location.yaml | 2 +- 40 files changed, 632 insertions(+), 304 deletions(-) create mode 100644 sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-howstheweather-cn.wav create mode 100644 sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-whatstheweatherlike-en.mp3 create mode 100644 sdk/cognitiveservices/azure-ai-transcription/tests/assets/sample-howstheweather-cn.wav diff --git a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md index 850550c553c8..8ce7948ac381 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md +++ b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.0.0b3 (Unreleased) + +### Features Added + +- Enhanced Mode now automatically sets `enabled=True` when `task`, `target_language`, or `prompt` are specified + +### Bugs Fixed + +- Fixed Enhanced Mode not being activated when using `EnhancedModeProperties` without explicitly setting `enabled=True` + ## 1.0.0b2 (2025-12-19) ### Bugs Fixed diff --git a/sdk/cognitiveservices/azure-ai-transcription/_metadata.json b/sdk/cognitiveservices/azure-ai-transcription/_metadata.json index 730a12350326..d8f3922c3623 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/_metadata.json +++ b/sdk/cognitiveservices/azure-ai-transcription/_metadata.json @@ -1,5 +1,3 @@ { - "apiVersion": "2025-10-15", - "service_name": "Cognitive Services", - "msDocService": "cognitive-services" + "apiVersion": "2025-10-15" } \ No newline at end of file diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_client.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_client.py index 0db2bd87f0e2..dd0f743b3760 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_client.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_client.py @@ -27,7 +27,7 @@ class TranscriptionClient(_TranscriptionClientOperationsMixin): """TranscriptionClient. :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: - `https://westus.api.cognitive.microsoft.com `_. + `https://westus.api.cognitive.microsoft.com `_). Required. :type endpoint: str :param credential: Credential used to authenticate requests to the service. Is either a key diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_configuration.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_configuration.py index ac72b15700dd..7d2baf2d3db3 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_configuration.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_configuration.py @@ -24,7 +24,7 @@ class TranscriptionClientConfiguration: # pylint: disable=too-many-instance-att attributes. :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: - `https://westus.api.cognitive.microsoft.com `_. + `https://westus.api.cognitive.microsoft.com `_). Required. :type endpoint: str :param credential: Credential used to authenticate requests to the service. Is either a key diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py index 7baa39bdacf9..cd70f3c52e6c 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_operations.py @@ -110,12 +110,11 @@ def transcribe(self, body: Union[_models.TranscriptionContent, JSON], **kwargs: _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["audio"] _data_fields: list[str] = ["definition"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_transcription_transcribe_request( api_version=self._config.api_version, files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py index 263038ad743f..208cb7956f16 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py @@ -12,7 +12,14 @@ from typing import Any, Optional import json from azure.core.tracing.decorator import distributed_trace -from azure.core.exceptions import map_error, HttpResponseError, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError, ResourceNotModifiedError +from azure.core.exceptions import ( + map_error, + HttpResponseError, + ClientAuthenticationError, + ResourceNotFoundError, + ResourceExistsError, + ResourceNotModifiedError, +) from .. import models as _models from .._utils.model_base import _deserialize, SdkJSONEncoder @@ -93,7 +100,9 @@ def transcribe_from_url( } _request.url = self._client.format_url(_request.url, **path_format_arguments) - pipeline_response = self._client._pipeline.run(_request, stream=False, **kwargs) # pylint: disable=protected-access + pipeline_response = self._client._pipeline.run( + _request, stream=False, **kwargs + ) # pylint: disable=protected-access response = pipeline_response.http_response if response.status_code not in [200]: diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/model_base.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/model_base.py index 12926fa98dcf..c402af2afc63 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/model_base.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/model_base.py @@ -37,6 +37,7 @@ TZ_UTC = timezone.utc _T = typing.TypeVar("_T") +_NONE_TYPE = type(None) def _timedelta_as_isostr(td: timedelta) -> str: @@ -171,6 +172,21 @@ def default(self, o): # pylint: disable=too-many-return-statements r"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT" ) +_ARRAY_ENCODE_MAPPING = { + "pipeDelimited": "|", + "spaceDelimited": " ", + "commaDelimited": ",", + "newlineDelimited": "\n", +} + + +def _deserialize_array_encoded(delimit: str, attr): + if isinstance(attr, str): + if attr == "": + return [] + return attr.split(delimit) + return attr + def _deserialize_datetime(attr: typing.Union[str, datetime]) -> datetime: """Deserialize ISO-8601 formatted string into Datetime object. @@ -202,7 +218,7 @@ def _deserialize_datetime(attr: typing.Union[str, datetime]) -> datetime: test_utc = date_obj.utctimetuple() if test_utc.tm_year > 9999 or test_utc.tm_year < 1: raise OverflowError("Hit max or min date") - return date_obj + return date_obj # type: ignore[no-any-return] def _deserialize_datetime_rfc7231(attr: typing.Union[str, datetime]) -> datetime: @@ -256,7 +272,7 @@ def _deserialize_time(attr: typing.Union[str, time]) -> time: """ if isinstance(attr, time): return attr - return isodate.parse_time(attr) + return isodate.parse_time(attr) # type: ignore[no-any-return] def _deserialize_bytes(attr): @@ -315,6 +331,8 @@ def _deserialize_int_as_str(attr): def get_deserializer(annotation: typing.Any, rf: typing.Optional["_RestField"] = None): if annotation is int and rf and rf._format == "str": return _deserialize_int_as_str + if annotation is str and rf and rf._format in _ARRAY_ENCODE_MAPPING: + return functools.partial(_deserialize_array_encoded, _ARRAY_ENCODE_MAPPING[rf._format]) if rf and rf._format: return _DESERIALIZE_MAPPING_WITHFORMAT.get(rf._format) return _DESERIALIZE_MAPPING.get(annotation) # pyright: ignore @@ -353,9 +371,39 @@ def __contains__(self, key: typing.Any) -> bool: return key in self._data def __getitem__(self, key: str) -> typing.Any: + # If this key has been deserialized (for mutable types), we need to handle serialization + if hasattr(self, "_attr_to_rest_field"): + cache_attr = f"_deserialized_{key}" + if hasattr(self, cache_attr): + rf = _get_rest_field(getattr(self, "_attr_to_rest_field"), key) + if rf: + value = self._data.get(key) + if isinstance(value, (dict, list, set)): + # For mutable types, serialize and return + # But also update _data with serialized form and clear flag + # so mutations via this returned value affect _data + serialized = _serialize(value, rf._format) + # If serialized form is same type (no transformation needed), + # return _data directly so mutations work + if isinstance(serialized, type(value)) and serialized == value: + return self._data.get(key) + # Otherwise return serialized copy and clear flag + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass + # Store serialized form back + self._data[key] = serialized + return serialized return self._data.__getitem__(key) def __setitem__(self, key: str, value: typing.Any) -> None: + # Clear any cached deserialized value when setting through dictionary access + cache_attr = f"_deserialized_{key}" + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass self._data.__setitem__(key, value) def __delitem__(self, key: str) -> None: @@ -483,6 +531,8 @@ def _is_model(obj: typing.Any) -> bool: def _serialize(o, format: typing.Optional[str] = None): # pylint: disable=too-many-return-statements if isinstance(o, list): + if format in _ARRAY_ENCODE_MAPPING and all(isinstance(x, str) for x in o): + return _ARRAY_ENCODE_MAPPING[format].join(o) return [_serialize(x, format) for x in o] if isinstance(o, dict): return {k: _serialize(v, format) for k, v in o.items()} @@ -758,6 +808,14 @@ def _deserialize_multiple_sequence( return type(obj)(_deserialize(deserializer, entry, module) for entry, deserializer in zip(obj, entry_deserializers)) +def _is_array_encoded_deserializer(deserializer: functools.partial) -> bool: + return ( + isinstance(deserializer, functools.partial) + and isinstance(deserializer.args[0], functools.partial) + and deserializer.args[0].func == _deserialize_array_encoded # pylint: disable=comparison-with-callable + ) + + def _deserialize_sequence( deserializer: typing.Optional[typing.Callable], module: typing.Optional[str], @@ -767,6 +825,19 @@ def _deserialize_sequence( return obj if isinstance(obj, ET.Element): obj = list(obj) + + # encoded string may be deserialized to sequence + if isinstance(obj, str) and isinstance(deserializer, functools.partial): + # for list[str] + if _is_array_encoded_deserializer(deserializer): + return deserializer(obj) + + # for list[Union[...]] + if isinstance(deserializer.args[0], list): + for sub_deserializer in deserializer.args[0]: + if _is_array_encoded_deserializer(sub_deserializer): + return sub_deserializer(obj) + return type(obj)(_deserialize(deserializer, entry, module) for entry in obj) @@ -817,16 +888,16 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=too-many-retur # is it optional? try: - if any(a for a in annotation.__args__ if a == type(None)): # pyright: ignore + if any(a is _NONE_TYPE for a in annotation.__args__): # pyright: ignore if len(annotation.__args__) <= 2: # pyright: ignore if_obj_deserializer = _get_deserialize_callable_from_annotation( - next(a for a in annotation.__args__ if a != type(None)), module, rf # pyright: ignore + next(a for a in annotation.__args__ if a is not _NONE_TYPE), module, rf # pyright: ignore ) return functools.partial(_deserialize_with_optional, if_obj_deserializer) # the type is Optional[Union[...]], we need to remove the None type from the Union annotation_copy = copy.copy(annotation) - annotation_copy.__args__ = [a for a in annotation_copy.__args__ if a != type(None)] # pyright: ignore + annotation_copy.__args__ = [a for a in annotation_copy.__args__ if a is not _NONE_TYPE] # pyright: ignore return _get_deserialize_callable_from_annotation(annotation_copy, module, rf) except AttributeError: pass @@ -952,7 +1023,7 @@ def _failsafe_deserialize( ) -> typing.Any: try: return _deserialize(deserializer, response.json(), module, rf, format) - except DeserializationError: + except Exception: # pylint: disable=broad-except _LOGGER.warning( "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True ) @@ -965,7 +1036,7 @@ def _failsafe_deserialize_xml( ) -> typing.Any: try: return _deserialize_xml(deserializer, response.text()) - except DeserializationError: + except Exception: # pylint: disable=broad-except _LOGGER.warning( "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True ) @@ -998,7 +1069,11 @@ def __init__( @property def _class_type(self) -> typing.Any: - return getattr(self._type, "args", [None])[0] + result = getattr(self._type, "args", [None])[0] + # type may be wrapped by nested functools.partial so we need to check for that + if isinstance(result, functools.partial): + return getattr(result, "args", [None])[0] + return result @property def _rest_name(self) -> str: @@ -1009,14 +1084,37 @@ def _rest_name(self) -> str: def __get__(self, obj: Model, type=None): # pylint: disable=redefined-builtin # by this point, type and rest_name will have a value bc we default # them in __new__ of the Model class - item = obj.get(self._rest_name) + # Use _data.get() directly to avoid triggering __getitem__ which clears the cache + item = obj._data.get(self._rest_name) if item is None: return item if self._is_model: return item - return _deserialize(self._type, _serialize(item, self._format), rf=self) + + # For mutable types, we want mutations to directly affect _data + # Check if we've already deserialized this value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + # Return the value from _data directly (it's been deserialized in place) + return obj._data.get(self._rest_name) + + deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) + + # For mutable types, store the deserialized value back in _data + # so mutations directly affect _data + if isinstance(deserialized, (dict, list, set)): + obj._data[self._rest_name] = deserialized + object.__setattr__(obj, cache_attr, True) # Mark as deserialized + return deserialized + + return deserialized def __set__(self, obj: Model, value) -> None: + # Clear the cached deserialized object when setting a new value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + object.__delattr__(obj, cache_attr) + if value is None: # we want to wipe out entries if users set attr to None try: @@ -1184,7 +1282,7 @@ def _get_wrapped_element( _get_element(v, exclude_readonly, meta, wrapped_element) else: wrapped_element.text = _get_primitive_type_value(v) - return wrapped_element + return wrapped_element # type: ignore[no-any-return] def _get_primitive_type_value(v) -> str: @@ -1197,7 +1295,9 @@ def _get_primitive_type_value(v) -> str: return str(v) -def _create_xml_element(tag, prefix=None, ns=None): +def _create_xml_element( + tag: typing.Any, prefix: typing.Optional[str] = None, ns: typing.Optional[str] = None +) -> ET.Element: if prefix and ns: ET.register_namespace(prefix, ns) if ns: diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/serialization.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/serialization.py index 45a3e44e45cb..81ec1de5922b 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/serialization.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/serialization.py @@ -821,13 +821,20 @@ def serialize_basic(cls, data, data_type, **kwargs): :param str data_type: Type of object in the iterable. :rtype: str, int, float, bool :return: serialized object + :raises TypeError: raise if data_type is not one of str, int, float, bool. """ custom_serializer = cls._get_custom_serializers(data_type, **kwargs) if custom_serializer: return custom_serializer(data) if data_type == "str": return cls.serialize_unicode(data) - return eval(data_type)(data) # nosec # pylint: disable=eval-used + if data_type == "int": + return int(data) + if data_type == "float": + return float(data) + if data_type == "bool": + return bool(data) + raise TypeError("Unknown basic data type: {}".format(data_type)) @classmethod def serialize_unicode(cls, data): @@ -1757,7 +1764,7 @@ def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return :param str data_type: deserialization data type. :return: Deserialized basic type. :rtype: str, int, float or bool - :raises TypeError: if string format is not valid. + :raises TypeError: if string format is not valid or data_type is not one of str, int, float, bool. """ # If we're here, data is supposed to be a basic type. # If it's still an XML node, take the text @@ -1783,7 +1790,11 @@ def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return if data_type == "str": return self.deserialize_unicode(attr) - return eval(data_type)(attr) # nosec # pylint: disable=eval-used + if data_type == "int": + return int(attr) + if data_type == "float": + return float(attr) + raise TypeError("Unknown basic data type: {}".format(data_type)) @staticmethod def deserialize_unicode(data): diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/utils.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/utils.py index 4c029bd3dfa5..54fdb84a9191 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/utils.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_utils/utils.py @@ -49,9 +49,8 @@ def serialize_multipart_data_entry(data_entry: Any) -> Any: def prepare_multipart_form_data( body: Mapping[str, Any], multipart_fields: list[str], data_fields: list[str] -) -> tuple[list[FileType], dict[str, Any]]: +) -> list[FileType]: files: list[FileType] = [] - data: dict[str, Any] = {} for multipart_field in multipart_fields: multipart_entry = body.get(multipart_field) if isinstance(multipart_entry, list): @@ -59,9 +58,11 @@ def prepare_multipart_form_data( elif multipart_entry: files.append((multipart_field, multipart_entry)) + # if files is empty, sdk core library can't handle multipart/form-data correctly, so + # we put data fields into files with filename as None to avoid that scenario. for data_field in data_fields: data_entry = body.get(data_field) if data_entry: - data[data_field] = serialize_multipart_data_entry(data_entry) + files.append((data_field, str(serialize_multipart_data_entry(data_entry)))) - return files, data + return files diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_version.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_version.py index bbcd28b4aa67..c43fdbc2e239 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_version.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0b2" +VERSION = "1.0.0b3" diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_client.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_client.py index ea92bf364d24..3c0b1e71b730 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_client.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_client.py @@ -27,7 +27,7 @@ class TranscriptionClient(_TranscriptionClientOperationsMixin): """TranscriptionClient. :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: - `https://westus.api.cognitive.microsoft.com `_. + `https://westus.api.cognitive.microsoft.com `_). Required. :type endpoint: str :param credential: Credential used to authenticate requests to the service. Is either a key diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_configuration.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_configuration.py index cf21f43beb9c..3d430e678ca3 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_configuration.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_configuration.py @@ -24,7 +24,7 @@ class TranscriptionClientConfiguration: # pylint: disable=too-many-instance-att attributes. :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: - `https://westus.api.cognitive.microsoft.com `_. + `https://westus.api.cognitive.microsoft.com `_). Required. :type endpoint: str :param credential: Credential used to authenticate requests to the service. Is either a key diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py index 0b1835a4223e..20a77b8ae4bd 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_operations.py @@ -90,12 +90,11 @@ async def transcribe( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["audio"] _data_fields: list[str] = ["definition"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_transcription_transcribe_request( api_version=self._config.api_version, files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py index 8641af408ea6..4547bff9eeaf 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py @@ -12,7 +12,14 @@ from typing import Any, Optional import json from azure.core.tracing.decorator_async import distributed_trace_async -from azure.core.exceptions import map_error, HttpResponseError, ClientAuthenticationError, ResourceNotFoundError, ResourceExistsError, ResourceNotModifiedError +from azure.core.exceptions import ( + map_error, + HttpResponseError, + ClientAuthenticationError, + ResourceNotFoundError, + ResourceExistsError, + ResourceNotModifiedError, +) from ... import models as _models from ..._utils.model_base import _deserialize, SdkJSONEncoder @@ -91,7 +98,9 @@ async def transcribe_from_url( } _request.url = self._client.format_url(_request.url, **path_format_arguments) - pipeline_response = await self._client._pipeline.run(_request, stream=False, **kwargs) # pylint: disable=protected-access + pipeline_response = await self._client._pipeline.run( + _request, stream=False, **kwargs + ) # pylint: disable=protected-access response = pipeline_response.http_response if response.status_code not in [200]: diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_enums.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_enums.py index c6fa0da4254d..e341385368ac 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_enums.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_enums.py @@ -18,6 +18,6 @@ class ProfanityFilterMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): REMOVED = "Removed" """Remove profanity.""" TAGS = "Tags" - """Add "profanity" XML tags""" + """Add "profanity" XML tags.""" MASKED = "Masked" - """Mask the profanity with * except of the first letter, e.g., f***""" + """Mask the profanity with * except of the first letter, e.g., f***.""" diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py index ba3dd5af6cd6..0ca8d9922af9 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py @@ -100,7 +100,7 @@ class PhraseListProperties(_Model): :ivar phrases: List of phrases for recognition. :vartype phrases: list[str] - :ivar biasing_weight: Biasing weight for phrase list (1.0 to 20.0). + :ivar biasing_weight: Biasing weight for phrase list (0.0-2.0). :vartype biasing_weight: float """ @@ -109,7 +109,7 @@ class PhraseListProperties(_Model): biasing_weight: Optional[float] = rest_field( name="biasingWeight", visibility=["read", "create", "update", "delete", "query"] ) - """Biasing weight for phrase list (1.0 to 20.0).""" + """Biasing weight for phrase list (0.0-2.0).""" @overload def __init__( diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_patch.py index 87676c65a8f0..1f20b6224737 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_patch.py @@ -7,9 +7,54 @@ Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ +from typing import Any, Optional +from ._models import EnhancedModeProperties as _EnhancedModeProperties -__all__: list[str] = [] # Add all objects you want publicly available to users at this package level + +class EnhancedModeProperties(_EnhancedModeProperties): + """Enhanced mode properties for transcription. + + :ivar task: Task type for enhanced mode. + :vartype task: str + :ivar target_language: Target language for enhanced mode. + :vartype target_language: str + :ivar prompt: A list of user prompts. + :vartype prompt: list[str] + """ + + def __init__( + self, + *, + task: Optional[str] = None, + target_language: Optional[str] = None, + prompt: Optional[list[str]] = None, + **kwargs: Any, + ) -> None: + super().__init__(task=task, target_language=target_language, prompt=prompt, **kwargs) + # Automatically set enabled=True if any enhanced mode properties are specified + # This is hidden from public API but sent to the server + self._enabled: Optional[bool] = None + if task is not None or target_language is not None or prompt is not None: + self._enabled = True + + def as_dict(self, *, exclude_readonly: bool = False) -> dict[str, Any]: + """Return a dict that can be turned into json using json.dump. + + :keyword bool exclude_readonly: Whether to remove the readonly properties. + :returns: A dict JSON compatible object + :rtype: dict + """ + result = super().as_dict(exclude_readonly=exclude_readonly) + # Always include enabled in the request if it's set + if self._enabled is not None: + result["enabled"] = self._enabled + return result + + +__all__: list[str] = [ + "EnhancedModeProperties" +] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/cognitiveservices/azure-ai-transcription/pyproject.toml b/sdk/cognitiveservices/azure-ai-transcription/pyproject.toml index 95d02d2172c1..96a3aebb064b 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/pyproject.toml +++ b/sdk/cognitiveservices/azure-ai-transcription/pyproject.toml @@ -32,7 +32,7 @@ keywords = ["azure", "azure sdk"] dependencies = [ "isodate>=0.6.1", - "azure-core>=1.35.0", + "azure-core>=1.37.0", "typing-extensions>=4.6.0", ] dynamic = [ diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-howstheweather-cn.wav b/sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-howstheweather-cn.wav new file mode 100644 index 0000000000000000000000000000000000000000..65d23513004ba6be2eca6c2bbb10438753795911 GIT binary patch literal 53652 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 G;C}#px^@@< literal 0 HcmV?d00001 diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-whatstheweatherlike-en.mp3 b/sdk/cognitiveservices/azure-ai-transcription/samples/assets/sample-whatstheweatherlike-en.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e342abca6fb89dbf8cbc16b19b82f543a2ff05fc GIT binary patch literal 12276 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 literal 0 HcmV?d00001 diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py index 46af6dcdd09e..66855a79dce6 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py @@ -9,9 +9,21 @@ FILE: sample_transcribe_multiple_languages.py DESCRIPTION: - This sample demonstrates how to transcribe an audio file with multiple language - detection using the Azure AI Transcription client. This is useful for - multilingual content. + This sample demonstrates how to transcribe audio with multilingual content + using the Azure AI Transcription client. + + When your audio contains multilingual content that switches between different + languages, use the multilingual transcription model by NOT specifying any + locales. The service will automatically detect and transcribe each language + segment. + + Supported locales: + de-DE, en-AU, en-CA, en-GB, en-IN, en-US, es-ES, es-MX, fr-CA, fr-FR, + it-IT, ja-JP, ko-KR, zh-CN + + Note: This feature is currently in preview. The multilingual model outputs + the "major locale" for each language (e.g., always "en-US" for English + regardless of accent). USAGE: python sample_transcribe_multiple_languages.py @@ -19,13 +31,23 @@ Set the environment variables with your own values before running the sample: 1) AZURE_SPEECH_ENDPOINT - the endpoint to your Speech resource. 2) AZURE_SPEECH_API_KEY - your Speech API key. + +RELATED RESOURCES: + - Fast transcription - Multilingual transcription: + https://learn.microsoft.com/azure/ai-services/speech-service/fast-transcription-create?tabs=multilingual-transcription-on """ import os +import pathlib + +def sample_transcribe_multilingual(): + """Transcribe audio with multilingual content (Preview). -def sample_transcribe_multiple_languages(): - # [START transcribe_multiple_languages] + For multilingual content, do not specify any locales. The service will + automatically detect and transcribe each language segment. + """ + # [START transcribe_multilingual] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription import TranscriptionClient from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions @@ -37,16 +59,14 @@ def sample_transcribe_multiple_languages(): # Create the transcription client client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) - # Path to your audio file with multiple languages - import pathlib - + # Path to your audio file with multilingual content audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create transcription options with multiple language candidates - # The service will detect which language is being spoken - options = TranscriptionOptions(locales=["en-US", "es-ES", "fr-FR", "de-DE"]) # Multiple language candidates + # For multilingual content, do NOT specify any locales + # The service will automatically detect and transcribe each language + options = TranscriptionOptions() # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -55,15 +75,12 @@ def sample_transcribe_multiple_languages(): result = client.transcribe(request_content) # Print the transcription result with locale information - print("Transcription with language detection:\n") - if result.phrases: - for phrase in result.phrases: - locale = phrase.locale if hasattr(phrase, "locale") and phrase.locale else "detected" - print(f"[{locale}] {phrase.text}") - else: - print(f"Full transcription: {result.combined_phrases[0].text}") - # [END transcribe_multiple_languages] + print("Multilingual Transcription:\n") + for phrase in result.phrases: + locale = phrase.locale if phrase.locale else "auto-detected" + print(f"[{locale}] {phrase.text}") + # [END transcribe_multilingual] if __name__ == "__main__": - sample_transcribe_multiple_languages() + sample_transcribe_multilingual() diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py index 5eed28c6b5df..907baa80c6d4 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py @@ -9,9 +9,29 @@ FILE: sample_transcribe_with_enhanced_mode.py DESCRIPTION: - This sample demonstrates how to transcribe an audio file with enhanced mode enabled. - Enhanced mode provides advanced capabilities such as translation or summarization - during transcription using the Azure AI Transcription client. + This sample demonstrates how to use LLM-powered Enhanced Mode for transcription + and translation using the Azure AI Transcription client. Enhanced Mode uses + LLM-powered speech recognition to provide improved transcription accuracy, + real-time translation, prompt-based customization, and multilingual support + with GPU acceleration. + + Supported Tasks: + +-------------+--------------------------------------------------------------+ + | Task | Description | + +-------------+--------------------------------------------------------------+ + | transcribe | Transcribe audio in the input language (auto-detected or | + | | specified) | + | translate | Translate audio to a specified target language | + +-------------+--------------------------------------------------------------+ + + Limitations: + - `confidence` is not available and always returns 0 + - Word-level timing (offset_milliseconds, duration_milliseconds) is not + supported for the `translate` task + - Diarization is not supported for the `translate` task (only speaker1 + label is returned) + - `locales` and `phrase_lists` options are not required or applicable + with Enhanced Mode USAGE: python sample_transcribe_with_enhanced_mode.py @@ -19,12 +39,24 @@ Set the environment variables with your own values before running the sample: 1) AZURE_SPEECH_ENDPOINT - the endpoint to your Speech resource. 2) AZURE_SPEECH_API_KEY - your Speech API key. + +RELATED RESOURCES: + - LLM speech for speech transcription and translation (preview): + https://learn.microsoft.com/azure/ai-services/speech-service/llm-speech + - Fast transcription: + https://learn.microsoft.com/azure/ai-services/speech-service/fast-transcription-create """ import os +import pathlib def sample_transcribe_with_enhanced_mode(): + """Transcribe audio using Enhanced Mode for improved quality. + + Use Enhanced Mode for improved transcription quality with LLM-powered + speech recognition. + """ # [START transcribe_with_enhanced_mode] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription import TranscriptionClient @@ -42,25 +74,112 @@ def sample_transcribe_with_enhanced_mode(): client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) # Path to your audio file - import pathlib - audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create enhanced mode properties - # Enable enhanced mode for advanced processing capabilities + # Enhanced mode is automatically enabled when task is specified + enhanced_mode = EnhancedModeProperties(task="transcribe") + + # Create transcription options with enhanced mode + options = TranscriptionOptions(enhanced_mode=enhanced_mode) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe the audio with enhanced mode + result = client.transcribe(request_content) + + # Print the transcription result + print(result.combined_phrases[0].text) + # [END transcribe_with_enhanced_mode] + + +def sample_translate_with_enhanced_mode(): + """Translate speech to another language using Enhanced Mode. + + Translate speech to a target language during transcription. Specify the + target language using the language code (e.g., `en` for English, `ko` for + Korean, `es` for Spanish). + """ + # [START translate_with_enhanced_mode] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # Create the transcription client + client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + + # Path to your audio file (e.g., Chinese audio) + audio_file_path = pathlib.Path(__file__).parent / "assets" / "sample-howstheweather-cn.wav" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Translate Chinese speech to Korean + enhanced_mode = EnhancedModeProperties( + task="translate", + target_language="ko", # Translate to Korean + ) + + # Create transcription options with enhanced mode + options = TranscriptionOptions(enhanced_mode=enhanced_mode) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe and translate the audio + result = client.transcribe(request_content) + + # Print the translated result + print("Translated to Korean:") + print(result.combined_phrases[0].text) + # [END translate_with_enhanced_mode] + + +def sample_enhanced_mode_with_prompts(): + """Use prompts to guide output format and improve recognition. + + Provide prompts to improve recognition or control output format. Prompts + are optional text that guides the output style for `transcribe` or + `translate` tasks. + """ + # [START enhanced_mode_with_prompts] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # Create the transcription client + client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + + # Path to your audio file + audio_file_path = pathlib.Path(__file__).parent / "assets" / "sample-whatstheweatherlike-en.mp3" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Guide output formatting using prompts enhanced_mode = EnhancedModeProperties( - task="translation", # Specify the task type (e.g., "translation", "summarization") - target_language="es-ES", # Target language for translation - prompt=[ - "Translate the following audio to Spanish", - "Focus on technical terminology", - ], # Optional prompts to guide the enhanced mode + task="transcribe", + prompt=["Output must be in lexical format."], ) # Create transcription options with enhanced mode - options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode) + options = TranscriptionOptions(enhanced_mode=enhanced_mode) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -69,16 +188,88 @@ def sample_transcribe_with_enhanced_mode(): result = client.transcribe(request_content) # Print the transcription result - print("Transcription with enhanced mode:") - print(f"{result.combined_phrases[0].text}") - - # Print individual phrases if available - if result.phrases: - print("\nDetailed phrases:") - for phrase in result.phrases: - print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}") - # [END transcribe_with_enhanced_mode] + print(result.combined_phrases[0].text) + # [END enhanced_mode_with_prompts] + + +def sample_enhanced_mode_with_diarization(): + """Combine Enhanced Mode with diarization and profanity filtering. + + Enhanced Mode can be combined with other transcription options like + `diarization`, `profanity_filter_mode`, and `channels` for comprehensive + transcription scenarios such as meeting transcription. + + Note: Diarization is only supported for the `transcribe` task, not for + `translate`. + """ + # [START enhanced_mode_with_diarization] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + TranscriptionDiarizationOptions, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # Create the transcription client + client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + + # Path to your audio file (e.g., a meeting recording) + audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Configure enhanced mode with prompts + enhanced_mode = EnhancedModeProperties( + task="transcribe", + prompt=["Output must be in lexical format."], + ) + + # Configure diarization to identify different speakers + diarization_options = TranscriptionDiarizationOptions(max_speakers=2) + + # Create transcription options with enhanced mode, diarization, and profanity filter + options = TranscriptionOptions( + enhanced_mode=enhanced_mode, + profanity_filter_mode="Masked", + diarization_options=diarization_options, + ) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe the audio with enhanced mode + result = client.transcribe(request_content) + + # Print transcription with speaker information + for phrase in result.phrases: + speaker = phrase.speaker if phrase.speaker is not None else "Unknown" + print(f"[Speaker {speaker}] {phrase.text}") + # [END enhanced_mode_with_diarization] if __name__ == "__main__": + print("=" * 60) + print("Sample 1: Transcribe with Enhanced Mode") + print("=" * 60) sample_transcribe_with_enhanced_mode() + + print("\n" + "=" * 60) + print("Sample 2: Translate with Enhanced Mode") + print("=" * 60) + sample_translate_with_enhanced_mode() + + print("\n" + "=" * 60) + print("Sample 3: Enhanced Mode with Prompt Tuning") + print("=" * 60) + sample_enhanced_mode_with_prompts() + + print("\n" + "=" * 60) + print("Sample 4: Combine Enhanced Mode with Other Options") + print("=" * 60) + sample_enhanced_mode_with_diarization() diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py index d76ed0b72646..072a7f519a83 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py @@ -9,8 +9,17 @@ FILE: sample_transcribe_with_phrase_list.py DESCRIPTION: - This sample demonstrates how to transcribe an audio file with a custom phrase list - to improve recognition accuracy for domain-specific terminology using the Azure AI Transcription client. + This sample demonstrates how to use custom phrase lists to improve transcription + accuracy with the Azure AI Transcription client. + + A phrase list allows you to provide domain-specific terms, product names, + technical jargon, or other words that may not be well-recognized by the + default speech model. This improves accuracy for specialized content. + + For example, without a phrase list: + - "Jessie" might be recognized as "Jesse" + - "Rehaan" might be recognized as "everyone" + - "Contoso" might be recognized as "can't do so" USAGE: python sample_transcribe_with_phrase_list.py @@ -21,9 +30,11 @@ """ import os +import pathlib def sample_transcribe_with_phrase_list(): + """Transcribe audio with a custom phrase list to improve recognition accuracy.""" # [START transcribe_with_phrase_list] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription import TranscriptionClient @@ -41,21 +52,18 @@ def sample_transcribe_with_phrase_list(): client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) # Path to your audio file with domain-specific terminology - import pathlib - audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create a phrase list with custom terminology - # This helps improve recognition accuracy for specific words + # Add custom phrases to improve recognition of names and domain-specific terms + # For example, "Jessie" might be recognized as "Jesse", or "Contoso" as "can't do so" phrase_list = PhraseListProperties( - phrases=["Azure", "Cognitive Services", "Speech SDK", "TranscriptionClient", "Kubernetes", "microservices"], - biasing_weight=5.0, # Weight between 1.0 and 20.0 (higher = more bias) + phrases=["Contoso", "Jessie", "Rehaan"] ) # Create transcription options with phrase list - options = TranscriptionOptions(locales=["en-US"], phrase_list=phrase_list) + options = TranscriptionOptions(phrase_list=phrase_list) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -65,13 +73,7 @@ def sample_transcribe_with_phrase_list(): # Print the transcription result print("Transcription with custom phrase list:") - print(f"{result.combined_phrases[0].text}") - - # Print individual phrases if available - if result.phrases: - print("\nDetailed phrases:") - for phrase in result.phrases: - print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}") + print(result.combined_phrases[0].text) # [END transcribe_with_phrase_list] diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/assets/sample-howstheweather-cn.wav b/sdk/cognitiveservices/azure-ai-transcription/tests/assets/sample-howstheweather-cn.wav new file mode 100644 index 0000000000000000000000000000000000000000..65d23513004ba6be2eca6c2bbb10438753795911 GIT binary patch literal 53652 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 G;C}#px^@@< literal 0 HcmV?d00001 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/conftest.py b/sdk/cognitiveservices/azure-ai-transcription/tests/conftest.py index 2062175edbe0..bff6314d9826 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/conftest.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/conftest.py @@ -23,10 +23,7 @@ @pytest.fixture(scope="session") def transcription_endpoint(): """Fixture providing the transcription endpoint.""" - return os.environ.get( - "TRANSCRIPTION_ENDPOINT", - "https://fakeendpoint.cognitiveservices.azure.com" - ) + return os.environ.get("TRANSCRIPTION_ENDPOINT", "https://fakeendpoint.cognitiveservices.azure.com") @pytest.fixture(scope="session") @@ -38,10 +35,7 @@ def transcription_api_key(): @pytest.fixture(scope="session") def transcription_test_audio_url(): """Fixture providing a test audio URL.""" - return os.environ.get( - "TRANSCRIPTION_TEST_AUDIO_URL", - "https://example.com/test-audio.wav" - ) + return os.environ.get("TRANSCRIPTION_TEST_AUDIO_URL", "https://example.com/test-audio.wav") # autouse=True will trigger this fixture on each pytest run, even if it's not explicitly used by a test method @@ -58,38 +52,26 @@ def add_sanitizers(test_proxy): # This allows recordings made with API key auth to work with AAD auth in CI set_custom_default_matcher( excluded_headers="Authorization,Ocp-Apim-Subscription-Key", - ignored_headers="Authorization,Ocp-Apim-Subscription-Key" + ignored_headers="Authorization,Ocp-Apim-Subscription-Key", ) - + # Sanitize subscription and tenant IDs if they exist # Only sanitize if the values are actually set (not default fake values) transcription_subscription_id = os.environ.get("TRANSCRIPTION_SUBSCRIPTION_ID", "") if transcription_subscription_id and transcription_subscription_id != "00000000-0000-0000-0000-000000000000": - add_general_regex_sanitizer( - regex=transcription_subscription_id, - value="00000000-0000-0000-0000-000000000000" - ) - + add_general_regex_sanitizer(regex=transcription_subscription_id, value="00000000-0000-0000-0000-000000000000") + transcription_tenant_id = os.environ.get("TRANSCRIPTION_TENANT_ID", "") if transcription_tenant_id and transcription_tenant_id != "00000000-0000-0000-0000-000000000000": - add_general_regex_sanitizer( - regex=transcription_tenant_id, - value="00000000-0000-0000-0000-000000000000" - ) - + add_general_regex_sanitizer(regex=transcription_tenant_id, value="00000000-0000-0000-0000-000000000000") + transcription_client_id = os.environ.get("TRANSCRIPTION_CLIENT_ID", "") if transcription_client_id and transcription_client_id != "00000000-0000-0000-0000-000000000000": - add_general_regex_sanitizer( - regex=transcription_client_id, - value="00000000-0000-0000-0000-000000000000" - ) - + add_general_regex_sanitizer(regex=transcription_client_id, value="00000000-0000-0000-0000-000000000000") + transcription_client_secret = os.environ.get("TRANSCRIPTION_CLIENT_SECRET", "") if transcription_client_secret and transcription_client_secret != "00000000-0000-0000-0000-000000000000": - add_general_regex_sanitizer( - regex=transcription_client_secret, - value="00000000-0000-0000-0000-000000000000" - ) + add_general_regex_sanitizer(regex=transcription_client_secret, value="00000000-0000-0000-0000-000000000000") # Sanitize endpoint URLs transcription_endpoint = os.environ.get( @@ -97,8 +79,7 @@ def add_sanitizers(test_proxy): ) if transcription_endpoint and "fake" not in transcription_endpoint.lower(): add_general_string_sanitizer( - target=transcription_endpoint, - value="https://fake-transcription-endpoint.cognitiveservices.azure.com/" + target=transcription_endpoint, value="https://fake-transcription-endpoint.cognitiveservices.azure.com/" ) # Sanitize API keys in headers @@ -115,17 +96,18 @@ def add_sanitizers(test_proxy): # Sanitize audio URLs in request/response bodies add_body_key_sanitizer(json_path="$..audioUrl", value="https://fake-audio-url.blob.core.windows.net/audio/test.wav") - add_body_key_sanitizer(json_path="$..audio_url", value="https://fake-audio-url.blob.core.windows.net/audio/test.wav") + add_body_key_sanitizer( + json_path="$..audio_url", value="https://fake-audio-url.blob.core.windows.net/audio/test.wav" + ) # Sanitize storage account names and blob URLs add_uri_regex_sanitizer( - regex=r"https://[a-z0-9]+\.blob\.core\.windows\.net", - value="https://fakeaccount.blob.core.windows.net" + regex=r"https://[a-z0-9]+\.blob\.core\.windows\.net", value="https://fakeaccount.blob.core.windows.net" ) - + # Sanitize cognitive services hostnames to handle different endpoint formats # This handles both api.cognitive.microsoft.com and cognitiveservices.azure.com add_uri_regex_sanitizer( regex=r"https://[^/]+\.(api\.cognitive\.microsoft\.com|cognitiveservices\.azure\.com)", - value="https://Sanitized.cognitiveservices.azure.com" + value="https://Sanitized.cognitiveservices.azure.com", ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/preparer.py b/sdk/cognitiveservices/azure-ai-transcription/tests/preparer.py index 44c2ce052593..c710153e9f90 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/preparer.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/preparer.py @@ -17,39 +17,33 @@ class TranscriptionClientTestBase(AzureRecordedTestCase): def create_client(self, endpoint, **kwargs): """Create a synchronous TranscriptionClient for testing.""" # Try to get API key from environment or kwargs - api_key = kwargs.pop('transcription_api_key', os.environ.get('TRANSCRIPTION_API_KEY')) - + api_key = kwargs.pop("transcription_api_key", os.environ.get("TRANSCRIPTION_API_KEY")) + if api_key: # Use API key authentication credential = AzureKeyCredential(api_key) else: # Fall back to default credential credential = self.get_credential(TranscriptionClient) - + return self.create_client_from_credential( - TranscriptionClient, - credential=credential, - endpoint=endpoint, - **kwargs + TranscriptionClient, credential=credential, endpoint=endpoint, **kwargs ) def create_async_client(self, endpoint, **kwargs): """Create an asynchronous TranscriptionClient for testing.""" # Try to get API key from environment or kwargs - api_key = kwargs.pop('transcription_api_key', os.environ.get('TRANSCRIPTION_API_KEY')) - + api_key = kwargs.pop("transcription_api_key", os.environ.get("TRANSCRIPTION_API_KEY")) + if api_key: # Use API key authentication credential = AzureKeyCredential(api_key) else: # Fall back to default credential credential = self.get_credential(AsyncTranscriptionClient, is_async=True) - + return self.create_client_from_credential( - AsyncTranscriptionClient, - credential=credential, - endpoint=endpoint, - **kwargs + AsyncTranscriptionClient, credential=credential, endpoint=endpoint, **kwargs ) @@ -59,5 +53,5 @@ def create_async_client(self, endpoint, **kwargs): "transcription", transcription_endpoint="https://fakeendpoint.cognitiveservices.azure.com", transcription_api_key="fake-api-key", - transcription_test_audio_url="https://example.com/test-audio.wav" + transcription_test_audio_url="https://example.com/test-audio.wav", ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic.py index a6c8f8d51c60..e7975722d09d 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic.py @@ -17,10 +17,10 @@ class TestTranscriptionBasic(TranscriptionClientTestBase): def test_transcribe_url_basic(self, transcription_endpoint, transcription_test_audio_url): """Test basic transcription from a URL.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url result = client.transcribe_from_url(audio_url) - + # Verify response structure assert result is not None assert result.combined_phrases is not None @@ -32,15 +32,12 @@ def test_transcribe_url_basic(self, transcription_endpoint, transcription_test_a def test_transcribe_with_custom_locale(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with a specific locale.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"] - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"]) + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -50,22 +47,22 @@ def test_transcribe_with_custom_locale(self, transcription_endpoint, transcripti def test_transcribe_result_structure(self, transcription_endpoint, transcription_test_audio_url): """Test that the transcription result has the expected structure.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url result = client.transcribe_from_url(audio_url) - + # Verify result structure assert result is not None - assert hasattr(result, 'combined_phrases') - assert hasattr(result, 'phrases') - assert hasattr(result, 'duration_milliseconds') - + assert hasattr(result, "combined_phrases") + assert hasattr(result, "phrases") + assert hasattr(result, "duration_milliseconds") + # Verify combined_phrases structure assert len(result.combined_phrases) > 0 - assert hasattr(result.combined_phrases[0], 'text') + assert hasattr(result.combined_phrases[0], "text") assert result.combined_phrases[0].text is not None - + # If phrases exist, verify their structure if result.phrases: phrase = result.phrases[0] - assert hasattr(phrase, 'text') + assert hasattr(phrase, "text") diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic_async.py index 2cbf4edba578..f18bd9cbc002 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_basic_async.py @@ -17,12 +17,12 @@ class TestTranscriptionBasicAsync(TranscriptionClientTestBase): async def test_transcribe_url_basic_async(self, transcription_endpoint, transcription_test_audio_url): """Test basic async transcription from a URL.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - + result = await client.transcribe_from_url(audio_url) - + # Verify response structure assert result is not None assert result.combined_phrases is not None @@ -34,18 +34,15 @@ async def test_transcribe_url_basic_async(self, transcription_endpoint, transcri async def test_transcribe_with_custom_locale_async(self, transcription_endpoint, transcription_test_audio_url): """Test async transcription from URL with custom locale.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - + # Create transcription options - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"] - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"]) + result = await client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -56,24 +53,24 @@ async def test_transcribe_with_custom_locale_async(self, transcription_endpoint, async def test_transcribe_result_structure_async(self, transcription_endpoint, transcription_test_audio_url): """Test that async transcription result has expected structure.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - + result = await client.transcribe_from_url(audio_url) - + # Verify result structure assert result is not None - assert hasattr(result, 'combined_phrases') - assert hasattr(result, 'phrases') - assert hasattr(result, 'duration_milliseconds') - + assert hasattr(result, "combined_phrases") + assert hasattr(result, "phrases") + assert hasattr(result, "duration_milliseconds") + # Verify combined_phrases structure assert len(result.combined_phrases) > 0 - assert hasattr(result.combined_phrases[0], 'text') + assert hasattr(result.combined_phrases[0], "text") assert result.combined_phrases[0].text is not None - + # If phrases exist, verify their structure if result.phrases: phrase = result.phrases[0] - assert hasattr(phrase, 'text') + assert hasattr(phrase, "text") diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management.py index d2227b0eb6f6..049ffc40ac3e 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management.py @@ -18,7 +18,7 @@ def test_client_context_manager(self, transcription_endpoint, transcription_test with self.create_client(endpoint=transcription_endpoint) as client: audio_url = transcription_test_audio_url result = client.transcribe_from_url(audio_url) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -28,11 +28,11 @@ def test_client_context_manager(self, transcription_endpoint, transcription_test def test_client_close(self, transcription_endpoint, transcription_test_audio_url): """Test explicit client close.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url result = client.transcribe_from_url(audio_url) - + assert result is not None - + # Explicitly close the client client.close() diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management_async.py index 56556f4d7e14..f27755e8cc29 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_client_management_async.py @@ -18,8 +18,8 @@ async def test_client_context_manager_async(self, transcription_endpoint, transc # Test creating and using client with context manager async with self.create_async_client(endpoint=transcription_endpoint) as client: audio_url = transcription_test_audio_url - + result = await client.transcribe_from_url(audio_url) - + assert result is not None assert result.combined_phrases is not None diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization.py index 5db09bdcbf18..0820a9cbea36 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization.py @@ -17,18 +17,16 @@ class TestTranscriptionDiarization(TranscriptionClientTestBase): def test_transcribe_with_diarization_enabled(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with speaker diarization enabled.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - + # Enable diarization options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"], - diarization_options=TranscriptionDiarizationOptions(max_speakers=2) + audio_url=audio_url, locales=["en-US"], diarization_options=TranscriptionDiarizationOptions(max_speakers=2) ) - + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert result.phrases is not None diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization_async.py index 65ac87621ac5..fe862b88d34a 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_diarization_async.py @@ -14,23 +14,25 @@ class TestTranscriptionDiarizationAsync(TranscriptionClientTestBase): @TranscriptionPreparer() @recorded_by_proxy_async - async def test_transcribe_with_diarization_enabled_async(self, transcription_endpoint, transcription_test_audio_url): + async def test_transcribe_with_diarization_enabled_async( + self, transcription_endpoint, transcription_test_audio_url + ): """Test async transcription with speaker diarization enabled.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: # For diarization, ideally use multi-speaker audio, but single-speaker works for testing audio_url = transcription_test_audio_url - + # Enable diarization options = TranscriptionOptions( audio_url=audio_url, locales=["en-US"], - diarization_options=TranscriptionDiarizationOptions(max_speakers=2) + diarization_options=TranscriptionDiarizationOptions(max_speakers=2), ) - + result = await client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert result.phrases is not None diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_enhanced_mode.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_enhanced_mode.py index ca0e72489ccc..391eac7a2d10 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_enhanced_mode.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_enhanced_mode.py @@ -17,21 +17,20 @@ class TestTranscriptionEnhancedMode(TranscriptionClientTestBase): def test_transcribe_enhanced_mode_with_prompt(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with enhanced mode and prompt.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - + # Use enhanced mode with prompts options = TranscriptionOptions( audio_url=audio_url, locales=["en-US"], enhanced_mode=EnhancedModeProperties( - prompt=["This is a technical discussion about Azure services"], - task="transcribe" - ) + prompt=["This is a technical discussion about Azure services"], task="transcribe" + ), ) - + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file.py index d5065bacdfd9..3974dfdf95f8 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file.py @@ -18,23 +18,20 @@ class TestTranscriptionFile(TranscriptionClientTestBase): def test_transcribe_wav_file(self, transcription_endpoint): """Test transcription from a local WAV file.""" client = self.create_client(endpoint=transcription_endpoint) - + # Path to test audio file test_audio_path = os.path.join(os.path.dirname(__file__), "assets", "audio.wav") - + # Skip test if audio file doesn't exist if not os.path.exists(test_audio_path): pytest.skip(f"Test audio file not found: {test_audio_path}") - + with open(test_audio_path, "rb") as audio_file: # Create transcription content with audio file and options - content = TranscriptionContent( - definition=TranscriptionOptions(locales=["en-US"]), - audio=audio_file - ) - + content = TranscriptionContent(definition=TranscriptionOptions(locales=["en-US"]), audio=audio_file) + result = client.transcribe(body=content) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file_async.py index 259bde4f9d24..cb31674c9f24 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_file_async.py @@ -18,24 +18,21 @@ class TestTranscriptionFileAsync(TranscriptionClientTestBase): async def test_transcribe_wav_file_async(self, transcription_endpoint): """Test async transcription with a local WAV audio file.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: # Path to test audio file test_audio_path = os.path.join(os.path.dirname(__file__), "assets", "audio.wav") - + # Skip test if audio file doesn't exist (for initial setup) if not os.path.exists(test_audio_path): pytest.skip(f"Test audio file not found: {test_audio_path}") - + with open(test_audio_path, "rb") as audio_file: # Create transcription content with audio file and options - content = TranscriptionContent( - definition=TranscriptionOptions(locales=["en-US"]), - audio=audio_file - ) - + content = TranscriptionContent(definition=TranscriptionOptions(locales=["en-US"]), audio=audio_file) + result = await client.transcribe(body=content) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options.py index 42fba23dda07..4eabfeefe920 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options.py @@ -17,16 +17,12 @@ class TestTranscriptionOptions(TranscriptionClientTestBase): def test_transcribe_profanity_filter_raw(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with no profanity filtering.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"], - profanity_filter_mode="None" - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"], profanity_filter_mode="None") + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -36,16 +32,12 @@ def test_transcribe_profanity_filter_raw(self, transcription_endpoint, transcrip def test_transcribe_profanity_filter_masked(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with profanity masking.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"], - profanity_filter_mode="Masked" - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"], profanity_filter_mode="Masked") + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert result.combined_phrases[0].text is not None @@ -55,16 +47,12 @@ def test_transcribe_profanity_filter_masked(self, transcription_endpoint, transc def test_transcribe_profanity_filter_removed(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with profanity filter set to Removed.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"], - profanity_filter_mode="Removed" - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"], profanity_filter_mode="Removed") + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None @@ -73,21 +61,18 @@ def test_transcribe_profanity_filter_removed(self, transcription_endpoint, trans def test_transcribe_with_phrase_list(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with a custom phrase list for better recognition.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - + # Add custom phrases for better recognition options = TranscriptionOptions( audio_url=audio_url, locales=["en-US"], - phrase_list=PhraseListProperties( - phrases=["Azure", "Cognitive Services", "Speech SDK"], - biasing_weight=1.0 - ) + phrase_list=PhraseListProperties(phrases=["Azure", "Cognitive Services", "Speech SDK"], biasing_weight=1.0), ) - + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -98,17 +83,14 @@ def test_transcribe_with_phrase_list(self, transcription_endpoint, transcription def test_transcribe_multiple_locales(self, transcription_endpoint, transcription_test_audio_url): """Test transcription with multiple locales specified.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url - + # Specify multiple locales for auto-detection - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US", "es-ES", "fr-FR"] - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US", "es-ES", "fr-FR"]) + result = client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options_async.py index e15d5691149a..3b83268da4b1 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_options_async.py @@ -17,18 +17,14 @@ class TestTranscriptionOptionsAsync(TranscriptionClientTestBase): async def test_transcribe_profanity_filter_masked_async(self, transcription_endpoint, transcription_test_audio_url): """Test async transcription with masked profanity filter.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US"], - profanity_filter_mode="Masked" - ) - + + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US"], profanity_filter_mode="Masked") + result = await client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -38,22 +34,21 @@ async def test_transcribe_profanity_filter_masked_async(self, transcription_endp async def test_transcribe_with_phrase_list_async(self, transcription_endpoint, transcription_test_audio_url): """Test async transcription with custom phrase list.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - + # Add custom phrases for better recognition options = TranscriptionOptions( audio_url=audio_url, locales=["en-US"], phrase_list=PhraseListProperties( - phrases=["Azure", "Cognitive Services", "Speech SDK"], - biasing_weight=1.0 - ) + phrases=["Azure", "Cognitive Services", "Speech SDK"], biasing_weight=1.0 + ), ) - + result = await client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 @@ -64,19 +59,16 @@ async def test_transcribe_with_phrase_list_async(self, transcription_endpoint, t async def test_transcribe_multiple_locales_async(self, transcription_endpoint, transcription_test_audio_url): """Test async transcription with multiple language locales.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: # For multi-locale, ideally use multilingual audio, but single language works for testing audio_url = transcription_test_audio_url - + # Specify multiple locales for auto-detection - options = TranscriptionOptions( - audio_url=audio_url, - locales=["en-US", "es-ES", "fr-FR"] - ) - + options = TranscriptionOptions(audio_url=audio_url, locales=["en-US", "es-ES", "fr-FR"]) + result = await client.transcribe_from_url(audio_url, options=options) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url.py index 971767fc39be..bccd243bb905 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url.py @@ -16,10 +16,10 @@ class TestTranscriptionUrl(TranscriptionClientTestBase): def test_transcribe_from_public_url(self, transcription_endpoint, transcription_test_audio_url): """Test transcription from a publicly accessible URL.""" client = self.create_client(endpoint=transcription_endpoint) - + audio_url = transcription_test_audio_url result = client.transcribe_from_url(audio_url) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url_async.py b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url_async.py index d46e53b47aee..ecdda3468b2b 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/tests/test_transcription_url_async.py @@ -16,12 +16,12 @@ class TestTranscriptionUrlAsync(TranscriptionClientTestBase): async def test_transcribe_from_public_url_async(self, transcription_endpoint, transcription_test_audio_url): """Test async transcription from a public URL.""" client = self.create_async_client(endpoint=transcription_endpoint) - + async with client: audio_url = transcription_test_audio_url - + result = await client.transcribe_from_url(audio_url) - + assert result is not None assert result.combined_phrases is not None assert len(result.combined_phrases) > 0 diff --git a/sdk/cognitiveservices/azure-ai-transcription/tsp-location.yaml b/sdk/cognitiveservices/azure-ai-transcription/tsp-location.yaml index 845205d658bc..bb0f9e351615 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/tsp-location.yaml +++ b/sdk/cognitiveservices/azure-ai-transcription/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/cognitiveservices/Speech.Transcription -commit: 5f88489f000c7471e9517b5f1f27f2fb61aacc50 +commit: 6bd84f27b7a056fc6e916e2e9fefa9fdba1d72d2 repo: Azure/azure-rest-api-specs additionalDirectories: From bfedb1f5ca083a774146ca2a12fef33b6957d08b Mon Sep 17 00:00:00 2001 From: wangamber Date: Tue, 3 Feb 2026 17:41:31 -0800 Subject: [PATCH 5/6] update samples and record tests --- .../azure-ai-transcription/CHANGELOG.md | 2 +- .../azure-ai-transcription/README.md | 25 +++---------------- .../azure-ai-transcription/assets.json | 2 +- .../ai/transcription/_operations/_patch.py | 4 +-- .../transcription/aio/_operations/_patch.py | 4 +-- .../azure-ai-transcription/cspell.json | 3 ++- 6 files changed, 12 insertions(+), 28 deletions(-) diff --git a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md index 8ce7948ac381..b049de7732b3 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md +++ b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md @@ -1,6 +1,6 @@ # Release History -## 1.0.0b3 (Unreleased) +## 1.0.0b3 (2026-02-03) ### Features Added diff --git a/sdk/cognitiveservices/azure-ai-transcription/README.md b/sdk/cognitiveservices/azure-ai-transcription/README.md index 4a96edf3c0fd..17bfb10053a0 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/README.md +++ b/sdk/cognitiveservices/azure-ai-transcription/README.md @@ -244,25 +244,15 @@ api_key = os.environ["AZURE_SPEECH_API_KEY"] client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) # Path to your audio file -import pathlib - audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create enhanced mode properties - # Enable enhanced mode for advanced processing capabilities - enhanced_mode = EnhancedModeProperties( - task="translation", # Specify the task type (e.g., "translation", "summarization") - target_language="es-ES", # Target language for translation - prompt=[ - "Translate the following audio to Spanish", - "Focus on technical terminology", - ], # Optional prompts to guide the enhanced mode - ) + # Enhanced mode is automatically enabled when task is specified + enhanced_mode = EnhancedModeProperties(task="transcribe") # Create transcription options with enhanced mode - options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode) + options = TranscriptionOptions(enhanced_mode=enhanced_mode) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -271,14 +261,7 @@ with open(audio_file_path, "rb") as audio_file: result = client.transcribe(request_content) # Print the transcription result - print("Transcription with enhanced mode:") - print(f"{result.combined_phrases[0].text}") - - # Print individual phrases if available - if result.phrases: - print("\nDetailed phrases:") - for phrase in result.phrases: - print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}") + print(result.combined_phrases[0].text) ``` diff --git a/sdk/cognitiveservices/azure-ai-transcription/assets.json b/sdk/cognitiveservices/azure-ai-transcription/assets.json index 3054fe8cf8d1..83197718b3ae 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/assets.json +++ b/sdk/cognitiveservices/azure-ai-transcription/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "python", "TagPrefix": "python/cognitiveservices/azure-ai-transcription", - "Tag": "python/cognitiveservices/azure-ai-transcription_5f9f60e291" + "Tag": "python/cognitiveservices/azure-ai-transcription_807296d8e0" } diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py index 208cb7956f16..af6dc07b7584 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py @@ -100,9 +100,9 @@ def transcribe_from_url( } _request.url = self._client.format_url(_request.url, **path_format_arguments) - pipeline_response = self._client._pipeline.run( + pipeline_response = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=False, **kwargs - ) # pylint: disable=protected-access + ) response = pipeline_response.http_response if response.status_code not in [200]: diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py index 4547bff9eeaf..53b64e11014f 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py @@ -98,9 +98,9 @@ async def transcribe_from_url( } _request.url = self._client.format_url(_request.url, **path_format_arguments) - pipeline_response = await self._client._pipeline.run( + pipeline_response = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=False, **kwargs - ) # pylint: disable=protected-access + ) response = pipeline_response.http_response if response.status_code not in [200]: diff --git a/sdk/cognitiveservices/azure-ai-transcription/cspell.json b/sdk/cognitiveservices/azure-ai-transcription/cspell.json index 26702324f058..f08faafb5cf8 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/cspell.json +++ b/sdk/cognitiveservices/azure-ai-transcription/cspell.json @@ -7,6 +7,7 @@ "words": [ "diarization", "pclp", - "pcsp" + "pcsp", + "Rehaan" ] } From ba0348fbfe211549a0307385ad7a57a00b77f887 Mon Sep 17 00:00:00 2001 From: wangamber Date: Wed, 4 Feb 2026 10:44:58 -0800 Subject: [PATCH 6/6] update samples --- .../azure-ai-transcription/CHANGELOG.md | 2 +- .../azure-ai-transcription/README.md | 48 ++- .../sample_transcribe_audio_file_async.py | 12 +- .../sample_transcribe_from_url_async.py | 12 +- ...ple_transcribe_multiple_languages_async.py | 69 +++-- ...ample_transcribe_with_diarization_async.py | 12 +- ...ple_transcribe_with_enhanced_mode_async.py | 276 ++++++++++++++++-- ...ample_transcribe_with_phrase_list_async.py | 54 ++-- ..._transcribe_with_profanity_filter_async.py | 12 +- .../samples/sample_transcribe_audio_file.py | 12 +- .../samples/sample_transcribe_from_url.py | 12 +- .../sample_transcribe_multiple_languages.py | 12 +- .../sample_transcribe_with_diarization.py | 12 +- .../sample_transcribe_with_enhanced_mode.py | 48 ++- .../sample_transcribe_with_phrase_list.py | 12 +- ...sample_transcribe_with_profanity_filter.py | 12 +- 16 files changed, 506 insertions(+), 111 deletions(-) diff --git a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md index b049de7732b3..8cfa85875e9e 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md +++ b/sdk/cognitiveservices/azure-ai-transcription/CHANGELOG.md @@ -1,6 +1,6 @@ # Release History -## 1.0.0b3 (2026-02-03) +## 1.0.0b3 (2026-02-04) ### Features Added diff --git a/sdk/cognitiveservices/azure-ai-transcription/README.md b/sdk/cognitiveservices/azure-ai-transcription/README.md index 17bfb10053a0..18e31f3c2d97 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/README.md +++ b/sdk/cognitiveservices/azure-ai-transcription/README.md @@ -149,10 +149,18 @@ from azure.ai.transcription.models import TranscriptionContent, TranscriptionOpt # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] -api_key = os.environ["AZURE_SPEECH_API_KEY"] + +# We recommend using role-based access control (RBAC) for production scenarios +api_key = os.environ.get("AZURE_SPEECH_API_KEY") +if api_key: + credential = AzureKeyCredential(api_key) +else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client -client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) +client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file import pathlib @@ -197,10 +205,18 @@ from azure.ai.transcription.models import TranscriptionOptions # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] -api_key = os.environ["AZURE_SPEECH_API_KEY"] + +# We recommend using role-based access control (RBAC) for production scenarios +api_key = os.environ.get("AZURE_SPEECH_API_KEY") +if api_key: + credential = AzureKeyCredential(api_key) +else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client -client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) +client = TranscriptionClient(endpoint=endpoint, credential=credential) # URL to your audio file (must be publicly accessible) audio_url = "https://example.com/path/to/audio.wav" @@ -238,10 +254,18 @@ from azure.ai.transcription.models import ( # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] -api_key = os.environ["AZURE_SPEECH_API_KEY"] + +# We recommend using role-based access control (RBAC) for production scenarios +api_key = os.environ.get("AZURE_SPEECH_API_KEY") +if api_key: + credential = AzureKeyCredential(api_key) +else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client -client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) +client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" @@ -279,10 +303,18 @@ from azure.ai.transcription.models import TranscriptionContent, TranscriptionOpt # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] -api_key = os.environ["AZURE_SPEECH_API_KEY"] + +# We recommend using role-based access control (RBAC) for production scenarios +api_key = os.environ.get("AZURE_SPEECH_API_KEY") +if api_key: + credential = AzureKeyCredential(api_key) +else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client -async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: +async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_audio_file_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_audio_file_async.py index 8e73f72d5a64..72b750c213a0 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_audio_file_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_audio_file_async.py @@ -32,10 +32,18 @@ async def sample_transcribe_audio_file_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_from_url_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_from_url_async.py index d4f8fbbc83b6..ce71ae7d4a67 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_from_url_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_from_url_async.py @@ -32,10 +32,18 @@ async def sample_transcribe_from_url_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # URL to your audio file (must be publicly accessible) audio_url = "https://example.com/path/to/audio.wav" diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_multiple_languages_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_multiple_languages_async.py index 431398c6c2fd..7d5d384ef465 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_multiple_languages_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_multiple_languages_async.py @@ -9,9 +9,21 @@ FILE: sample_transcribe_multiple_languages_async.py DESCRIPTION: - This sample demonstrates how to asynchronously transcribe an audio file with - multiple language detection using the Azure AI Transcription client. - This is useful for multilingual content. + This sample demonstrates how to transcribe audio with multilingual content + using the asynchronous Azure AI Transcription client. + + When your audio contains multilingual content that switches between different + languages, use the multilingual transcription model by NOT specifying any + locales. The service will automatically detect and transcribe each language + segment. + + Supported locales: + de-DE, en-AU, en-CA, en-GB, en-IN, en-US, es-ES, es-MX, fr-CA, fr-FR, + it-IT, ja-JP, ko-KR, zh-CN + + Note: This feature is currently in preview. The multilingual model outputs + the "major locale" for each language (e.g., always "en-US" for English + regardless of accent). USAGE: python sample_transcribe_multiple_languages_async.py @@ -19,34 +31,50 @@ Set the environment variables with your own values before running the sample: 1) AZURE_SPEECH_ENDPOINT - the endpoint to your Speech resource. 2) AZURE_SPEECH_API_KEY - your Speech API key. + +RELATED RESOURCES: + - Fast transcription - Multilingual transcription: + https://learn.microsoft.com/azure/ai-services/speech-service/fast-transcription-create?tabs=multilingual-transcription-on """ import asyncio import os +import pathlib -async def sample_transcribe_multiple_languages_async(): - # [START transcribe_multiple_languages_async] +async def sample_transcribe_multilingual_async(): + """Transcribe audio with multilingual content (Preview). + + For multilingual content, do not specify any locales. The service will + automatically detect and transcribe each language segment. + """ + # [START transcribe_multilingual_async] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription.aio import TranscriptionClient from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] - # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: - # Path to your audio file with multiple languages - import pathlib + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + credential = DefaultAzureCredential() + + # Create the transcription client + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: + # Path to your audio file with multilingual content audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create transcription options with multiple language candidates - # The service will detect which language is being spoken - options = TranscriptionOptions(locales=["en-US", "es-ES", "fr-FR", "de-DE"]) # Multiple candidates + # For multilingual content, do NOT specify any locales + # The service will automatically detect and transcribe each language + options = TranscriptionOptions() # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -55,15 +83,12 @@ async def sample_transcribe_multiple_languages_async(): result = await client.transcribe(request_content) # Print the transcription result with locale information - print("Transcription with language detection:\n") - if result.phrases: - for phrase in result.phrases: - locale = phrase.locale if hasattr(phrase, "locale") and phrase.locale else "detected" - print(f"[{locale}] {phrase.text}") - else: - print(f"Full transcription: {result.combined_phrases[0].text}") - # [END transcribe_multiple_languages_async] + print("Multilingual Transcription:\n") + for phrase in result.phrases: + locale = phrase.locale if phrase.locale else "auto-detected" + print(f"[{locale}] {phrase.text}") + # [END transcribe_multilingual_async] if __name__ == "__main__": - asyncio.run(sample_transcribe_multiple_languages_async()) + asyncio.run(sample_transcribe_multilingual_async()) diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_diarization_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_diarization_async.py index 447d70ba3f77..0f791a858567 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_diarization_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_diarization_async.py @@ -37,10 +37,18 @@ async def sample_transcribe_with_diarization_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file with multiple speakers import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_enhanced_mode_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_enhanced_mode_async.py index 4fc51688bf13..5ae02b13ac5e 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_enhanced_mode_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_enhanced_mode_async.py @@ -9,9 +9,29 @@ FILE: sample_transcribe_with_enhanced_mode_async.py DESCRIPTION: - This sample demonstrates how to transcribe an audio file with enhanced mode enabled - using the asynchronous Azure AI Transcription client. Enhanced mode provides - advanced capabilities such as translation or summarization during transcription. + This sample demonstrates how to use LLM-powered Enhanced Mode for transcription + and translation using the asynchronous Azure AI Transcription client. Enhanced + Mode uses LLM-powered speech recognition to provide improved transcription + accuracy, real-time translation, prompt-based customization, and multilingual + support with GPU acceleration. + + Supported Tasks: + +-------------+--------------------------------------------------------------+ + | Task | Description | + +-------------+--------------------------------------------------------------+ + | transcribe | Transcribe audio in the input language (auto-detected or | + | | specified) | + | translate | Translate audio to a specified target language | + +-------------+--------------------------------------------------------------+ + + Limitations: + - `confidence` is not available and always returns 0 + - Word-level timing (offset_milliseconds, duration_milliseconds) is not + supported for the `translate` task + - Diarization is not supported for the `translate` task (only speaker1 + label is returned) + - `locales` and `phrase_lists` options are not required or applicable + with Enhanced Mode USAGE: python sample_transcribe_with_enhanced_mode_async.py @@ -19,13 +39,25 @@ Set the environment variables with your own values before running the sample: 1) AZURE_SPEECH_ENDPOINT - the endpoint to your Speech resource. 2) AZURE_SPEECH_API_KEY - your Speech API key. + +RELATED RESOURCES: + - LLM speech for speech transcription and translation (preview): + https://learn.microsoft.com/azure/ai-services/speech-service/llm-speech + - Fast transcription: + https://learn.microsoft.com/azure/ai-services/speech-service/fast-transcription-create """ import asyncio import os +import pathlib async def sample_transcribe_with_enhanced_mode_async(): + """Transcribe audio using Enhanced Mode for improved quality. + + Use Enhanced Mode for improved transcription quality with LLM-powered + speech recognition. + """ # [START transcribe_with_enhanced_mode_async] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription.aio import TranscriptionClient @@ -37,30 +69,139 @@ async def sample_transcribe_with_enhanced_mode_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file - import pathlib - audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create enhanced mode properties - # Enable enhanced mode for advanced processing capabilities + # Enhanced mode is automatically enabled when task is specified + enhanced_mode = EnhancedModeProperties(task="transcribe") + + # Create transcription options with enhanced mode + options = TranscriptionOptions(enhanced_mode=enhanced_mode) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe the audio with enhanced mode + result = await client.transcribe(request_content) + + # Print the transcription result + print(result.combined_phrases[0].text) + # [END transcribe_with_enhanced_mode_async] + + +async def sample_translate_with_enhanced_mode_async(): + """Translate speech to another language using Enhanced Mode. + + Translate speech to a target language during transcription. Specify the + target language using the language code (e.g., `en` for English, `ko` for + Korean, `es` for Spanish). + """ + # [START translate_with_enhanced_mode_async] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription.aio import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() + + # Create the transcription client + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: + # Path to your audio file (e.g., Chinese audio) + audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "sample-howstheweather-cn.wav" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Translate Chinese speech to Korean enhanced_mode = EnhancedModeProperties( - task="translation", # Specify the task type (e.g., "translation", "summarization") - target_language="es-ES", # Target language for translation - prompt=[ - "Translate the following audio to Spanish", - "Focus on technical terminology", - ], # Optional prompts to guide the enhanced mode + task="translate", + target_language="ko", # Translate to Korean ) # Create transcription options with enhanced mode - options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode) + options = TranscriptionOptions(enhanced_mode=enhanced_mode) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe and translate the audio + result = await client.transcribe(request_content) + + # Print the translated result + print("Translated to Korean:") + print(result.combined_phrases[0].text) + # [END translate_with_enhanced_mode_async] + + +async def sample_enhanced_mode_with_prompts_async(): + """Use prompts to guide output format and improve recognition. + + Provide prompts to improve recognition or control output format. Prompts + are optional text that guides the output style for `transcribe` or + `translate` tasks. + """ + # [START enhanced_mode_with_prompts_async] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription.aio import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() + + # Create the transcription client + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: + # Path to your audio file + audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "sample-whatstheweatherlike-en.mp3" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Guide output formatting using prompts + enhanced_mode = EnhancedModeProperties( + task="transcribe", + prompt=["Output must be in lexical format."], + ) + + # Create transcription options with enhanced mode + options = TranscriptionOptions(enhanced_mode=enhanced_mode) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -69,16 +210,99 @@ async def sample_transcribe_with_enhanced_mode_async(): result = await client.transcribe(request_content) # Print the transcription result - print("Transcription with enhanced mode:") - print(f"{result.combined_phrases[0].text}") - - # Print individual phrases if available - if result.phrases: - print("\nDetailed phrases:") - for phrase in result.phrases: - print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}") - # [END transcribe_with_enhanced_mode_async] + print(result.combined_phrases[0].text) + # [END enhanced_mode_with_prompts_async] + + +async def sample_enhanced_mode_with_diarization_async(): + """Combine Enhanced Mode with diarization and profanity filtering. + + Enhanced Mode can be combined with other transcription options like + `diarization`, `profanity_filter_mode`, and `channels` for comprehensive + transcription scenarios such as meeting transcription. + + Note: Diarization is only supported for the `transcribe` task, not for + `translate`. + """ + # [START enhanced_mode_with_diarization_async] + from azure.core.credentials import AzureKeyCredential + from azure.ai.transcription.aio import TranscriptionClient + from azure.ai.transcription.models import ( + TranscriptionContent, + TranscriptionOptions, + EnhancedModeProperties, + TranscriptionDiarizationOptions, + ) + + # Get configuration from environment variables + endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() + + # Create the transcription client + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: + # Path to your audio file (e.g., a meeting recording) + audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "audio.wav" + + # Open and read the audio file + with open(audio_file_path, "rb") as audio_file: + # Configure enhanced mode with prompts + enhanced_mode = EnhancedModeProperties( + task="transcribe", + prompt=["Output must be in lexical format."], + ) + + # Configure diarization to identify different speakers + diarization_options = TranscriptionDiarizationOptions(max_speakers=2) + + # Create transcription options with enhanced mode, diarization, and profanity filter + options = TranscriptionOptions( + enhanced_mode=enhanced_mode, + profanity_filter_mode="Masked", + diarization_options=diarization_options, + ) + + # Create the request content + request_content = TranscriptionContent(definition=options, audio=audio_file) + + # Transcribe the audio with enhanced mode + result = await client.transcribe(request_content) + + # Print transcription with speaker information + for phrase in result.phrases: + speaker = phrase.speaker if phrase.speaker is not None else "Unknown" + print(f"[Speaker {speaker}] {phrase.text}") + # [END enhanced_mode_with_diarization_async] + + +async def main(): + print("=" * 60) + print("Sample 1: Transcribe with Enhanced Mode (Async)") + print("=" * 60) + await sample_transcribe_with_enhanced_mode_async() + + print("\n" + "=" * 60) + print("Sample 2: Translate with Enhanced Mode (Async)") + print("=" * 60) + await sample_translate_with_enhanced_mode_async() + + print("\n" + "=" * 60) + print("Sample 3: Enhanced Mode with Prompt Tuning (Async)") + print("=" * 60) + await sample_enhanced_mode_with_prompts_async() + + print("\n" + "=" * 60) + print("Sample 4: Combine Enhanced Mode with Other Options (Async)") + print("=" * 60) + await sample_enhanced_mode_with_diarization_async() if __name__ == "__main__": - asyncio.run(sample_transcribe_with_enhanced_mode_async()) + asyncio.run(main()) diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_phrase_list_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_phrase_list_async.py index bf04baf2c8c4..fdbc989ae325 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_phrase_list_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_phrase_list_async.py @@ -9,9 +9,17 @@ FILE: sample_transcribe_with_phrase_list_async.py DESCRIPTION: - This sample demonstrates how to asynchronously transcribe an audio file with a - custom phrase list to improve recognition accuracy for domain-specific terminology - using the Azure AI Transcription client. + This sample demonstrates how to use custom phrase lists to improve transcription + accuracy with the asynchronous Azure AI Transcription client. + + A phrase list allows you to provide domain-specific terms, product names, + technical jargon, or other words that may not be well-recognized by the + default speech model. This improves accuracy for specialized content. + + For example, without a phrase list: + - "Jessie" might be recognized as "Jesse" + - "Rehaan" might be recognized as "everyone" + - "Contoso" might be recognized as "can't do so" USAGE: python sample_transcribe_with_phrase_list_async.py @@ -23,9 +31,11 @@ import asyncio import os +import pathlib async def sample_transcribe_with_phrase_list_async(): + """Transcribe audio with a custom phrase list to improve recognition accuracy.""" # [START transcribe_with_phrase_list_async] from azure.core.credentials import AzureKeyCredential from azure.ai.transcription.aio import TranscriptionClient @@ -37,33 +47,31 @@ async def sample_transcribe_with_phrase_list_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file with domain-specific terminology - import pathlib - audio_file_path = pathlib.Path(__file__).parent.parent / "assets" / "audio.wav" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: - # Create a phrase list with custom terminology - # This helps improve recognition accuracy for specific words + # Add custom phrases to improve recognition of names and domain-specific terms + # For example, "Jessie" might be recognized as "Jesse", or "Contoso" as "can't do so" phrase_list = PhraseListProperties( - phrases=[ - "Azure", - "Cognitive Services", - "Speech SDK", - "TranscriptionClient", - "Kubernetes", - "microservices", - ], - biasing_weight=5.0, # Weight between 1.0 and 20.0 (higher = more bias) + phrases=["Contoso", "Jessie", "Rehaan"] ) # Create transcription options with phrase list - options = TranscriptionOptions(locales=["en-US"], phrase_list=phrase_list) + options = TranscriptionOptions(phrase_list=phrase_list) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) @@ -73,13 +81,7 @@ async def sample_transcribe_with_phrase_list_async(): # Print the transcription result print("Transcription with custom phrase list:") - print(f"{result.combined_phrases[0].text}") - - # Print individual phrases if available - if result.phrases: - print("\nDetailed phrases:") - for phrase in result.phrases: - print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}") + print(result.combined_phrases[0].text) # [END transcribe_with_phrase_list_async] diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_profanity_filter_async.py b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_profanity_filter_async.py index 2b7a953d5d65..bd34e984e21c 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_profanity_filter_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/async_samples/sample_transcribe_with_profanity_filter_async.py @@ -33,10 +33,18 @@ async def sample_transcribe_with_profanity_filter_async(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity.aio import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) as client: + async with TranscriptionClient(endpoint=endpoint, credential=credential) as client: # Path to your audio file import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_audio_file.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_audio_file.py index 78c037ddc011..1156c2fc7acc 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_audio_file.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_audio_file.py @@ -31,10 +31,18 @@ def sample_transcribe_audio_file(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_from_url.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_from_url.py index 4bb8c18479f9..5832739a4063 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_from_url.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_from_url.py @@ -31,10 +31,18 @@ def sample_transcribe_from_url(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # URL to your audio file (must be publicly accessible) audio_url = "https://example.com/path/to/audio.wav" diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py index 66855a79dce6..d83580877c5c 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_multiple_languages.py @@ -54,10 +54,18 @@ def sample_transcribe_multilingual(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file with multilingual content audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_diarization.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_diarization.py index 8cf35504bb61..4ffe2c28d133 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_diarization.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_diarization.py @@ -36,10 +36,18 @@ def sample_transcribe_with_diarization(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file with multiple speakers import pathlib diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py index 907baa80c6d4..1d6b2899580a 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_enhanced_mode.py @@ -68,10 +68,18 @@ def sample_transcribe_with_enhanced_mode(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" @@ -113,10 +121,18 @@ def sample_translate_with_enhanced_mode(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file (e.g., Chinese audio) audio_file_path = pathlib.Path(__file__).parent / "assets" / "sample-howstheweather-cn.wav" @@ -162,10 +178,18 @@ def sample_enhanced_mode_with_prompts(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file audio_file_path = pathlib.Path(__file__).parent / "assets" / "sample-whatstheweatherlike-en.mp3" @@ -214,10 +238,18 @@ def sample_enhanced_mode_with_diarization(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file (e.g., a meeting recording) audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py index 072a7f519a83..f0dc94d06684 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_phrase_list.py @@ -46,10 +46,18 @@ def sample_transcribe_with_phrase_list(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file with domain-specific terminology audio_file_path = pathlib.Path(__file__).parent / "assets" / "audio.wav" diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_profanity_filter.py b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_profanity_filter.py index 6826139d7061..0018551e6abf 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_profanity_filter.py +++ b/sdk/cognitiveservices/azure-ai-transcription/samples/sample_transcribe_with_profanity_filter.py @@ -32,10 +32,18 @@ def sample_transcribe_with_profanity_filter(): # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] - api_key = os.environ["AZURE_SPEECH_API_KEY"] + + # We recommend using role-based access control (RBAC) for production scenarios + api_key = os.environ.get("AZURE_SPEECH_API_KEY") + if api_key: + credential = AzureKeyCredential(api_key) + else: + from azure.identity import DefaultAzureCredential + + credential = DefaultAzureCredential() # Create the transcription client - client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key)) + client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file import pathlib

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 a##YW?NH4iC_kIo2) tags ) - request_content = TranscriptionContent(options=options, audio=audio_file) + request_content = TranscriptionContent(definition=options, audio=audio_file) result = client.transcribe(request_content) print(f"\nTranscription (with profanity tagged): {result.combined_phrases[0].text}") From 0e88ba11562ce59c68dcaa1c8b9181e086ba7dd8 Mon Sep 17 00:00:00 2001 From: wangamber Date: Thu, 20 Nov 2025 13:31:05 -0800 Subject: [PATCH 2/6] fix pylint --- .../azure-ai-transcription/README.md | 7 +++---- .../ai/transcription/_operations/_patch.py | 3 ++- .../ai/transcription/aio/_operations/_patch.py | 3 ++- .../azure/ai/transcription/models/_models.py | 8 ++++---- .../generated_tests/test_transcription.py | 2 +- .../test_transcription_async.py | 2 +- .../samples/assets/profanity.wav | Bin 629842 -> 0 bytes .../sample_transcribe_from_url_async.py | 3 +-- .../samples/sample_transcribe_from_url.py | 3 +-- .../azure-ai-transcription/tsp-location.yaml | 2 +- 10 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav diff --git a/sdk/cognitiveservices/azure-ai-transcription/README.md b/sdk/cognitiveservices/azure-ai-transcription/README.md index b8a89dd6b98e..c68c4639e885 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/README.md +++ b/sdk/cognitiveservices/azure-ai-transcription/README.md @@ -165,7 +165,7 @@ with open(audio_file_path, "rb") as audio_file: options = TranscriptionOptions(locales=["en-US"]) # Specify the language # Create the request content - request_content = TranscriptionContent(options=options, audio=audio_file) + request_content = TranscriptionContent(definition=options, audio=audio_file) # Transcribe the audio result = client.transcribe(request_content) @@ -204,7 +204,6 @@ client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(ap # URL to your audio file (must be publicly accessible) audio_url = "https://example.com/path/to/audio.wav" - # Configure transcription options options = TranscriptionOptions(locales=["en-US"]) @@ -266,7 +265,7 @@ with open(audio_file_path, "rb") as audio_file: options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode) # Create the request content - request_content = TranscriptionContent(options=options, audio=audio_file) + request_content = TranscriptionContent(definition=options, audio=audio_file) # Transcribe the audio with enhanced mode result = client.transcribe(request_content) @@ -312,7 +311,7 @@ async with TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential( options = TranscriptionOptions(locales=["en-US"]) # Specify the language # Create the request content - request_content = TranscriptionContent(options=options, audio=audio_file) + request_content = TranscriptionContent(definition=options, audio=audio_file) # Transcribe the audio result = await client.transcribe(request_content) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py index 078a4b7d08ce..11e67cb4e539 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/_operations/_patch.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -57,7 +58,7 @@ def transcribe_from_url( options.audio_url = audio_url # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(definition=options, audio=None) + body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") # type: ignore[call-overload] # pyright: ignore[reportArgumentType] # Call the underlying protocol method return super().transcribe(body, **kwargs) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py index 155d18ee0e17..226755a24114 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/aio/_operations/_patch.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -57,7 +58,7 @@ async def transcribe_from_url( options.audio_url = audio_url # Create request content without audio file (service will fetch from URL) - body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") + body = _models.TranscriptionContent(definition=options, audio=b"\x00\x00") # type: ignore[call-overload] # pyright: ignore[reportArgumentType] # Call the underlying protocol method return await super().transcribe(body, **kwargs) diff --git a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py index f407bb295d4f..ba3dd5af6cd6 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py +++ b/sdk/cognitiveservices/azure-ai-transcription/azure/ai/transcription/models/_models.py @@ -252,26 +252,26 @@ class TranscriptionContent(_Model): :vartype definition: ~azure.ai.transcription.models.TranscriptionOptions :ivar audio: The content of the audio file to be transcribed. The audio file must be shorter than 2 hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is - provided in the definition. Required. + provided in the definition. :vartype audio: ~azure.ai.transcription._utils.utils.FileType """ definition: "_models.TranscriptionOptions" = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Metadata for a transcription request. This field contains a JSON-serialized object of type ``TranscriptionOptions``. Required.""" - audio: FileType = rest_field( + audio: Optional[FileType] = rest_field( visibility=["read", "create", "update", "delete", "query"], is_multipart_file_input=True ) """The content of the audio file to be transcribed. The audio file must be shorter than 2 hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is provided in the - definition. Required.""" + definition.""" @overload def __init__( self, *, definition: "_models.TranscriptionOptions", - audio: FileType, + audio: Optional[FileType] = None, ) -> None: ... @overload diff --git a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py index c4d1566e4f74..80d504e4403c 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py +++ b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription.py @@ -18,7 +18,6 @@ def test_transcribe(self, transcription_endpoint): client = self.create_client(endpoint=transcription_endpoint) response = client.transcribe( body={ - "audio": "filetype", "definition": { "audioUrl": "str", "channels": [0], @@ -29,6 +28,7 @@ def test_transcribe(self, transcription_endpoint): "phraseList": {"biasingWeight": 0.0, "phrases": ["str"]}, "profanityFilterMode": "str", }, + "audio": "filetype", }, ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py index 8995fa03e924..5ea02317c192 100644 --- a/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py +++ b/sdk/cognitiveservices/azure-ai-transcription/generated_tests/test_transcription_async.py @@ -19,7 +19,6 @@ async def test_transcribe(self, transcription_endpoint): client = self.create_async_client(endpoint=transcription_endpoint) response = await client.transcribe( body={ - "audio": "filetype", "definition": { "audioUrl": "str", "channels": [0], @@ -30,6 +29,7 @@ async def test_transcribe(self, transcription_endpoint): "phraseList": {"biasingWeight": 0.0, "phrases": ["str"]}, "profanityFilterMode": "str", }, + "audio": "filetype", }, ) diff --git a/sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav b/sdk/cognitiveservices/azure-ai-transcription/samples/assets/profanity.wav deleted file mode 100644 index 32a90083dbd927df333560db59e233ff29b3ff22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629842 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