From ec5918b86478aed39e1dea397a55c3d6b26cd7ec Mon Sep 17 00:00:00 2001 From: ili101 Date: Wed, 12 May 2021 15:09:44 +0300 Subject: [PATCH 1/2] Build (no code changes) --- Internal/Start-SeChromeDriver.ps1 | 22 ++++++++++---------- Internal/Start-SeEdgeDriver.ps1 | 10 ++++----- Internal/Start-SeFirefoxDriver.ps1 | 4 ++-- Internal/Start-SeInternetExplorerDriver.ps1 | 10 ++++----- Output/Selenium/ChangeLog.md | 2 +- Output/Selenium/Selenium.psm1 | Bin 248526 -> 121028 bytes Public/Start-SeDriver.ps1 | 22 ++++++++++---------- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Internal/Start-SeChromeDriver.ps1 b/Internal/Start-SeChromeDriver.ps1 index 9daa6a5..219c1a8 100644 --- a/Internal/Start-SeChromeDriver.ps1 +++ b/Internal/Start-SeChromeDriver.ps1 @@ -16,20 +16,20 @@ function Start-SeChromeDriver { [OpenQA.Selenium.LogLevel]$LogLevel, $UserAgent, [Switch]$AcceptInsecureCertificates - + # [System.IO.FileInfo]$ProfilePath, # $BinaryPath, - + # "user-data-dir=$ProfilePath" - + ) process { - #Additional Switches + #Additional Switches $EnablePDFViewer = Get-OptionsSwitchValue -Switches $Switches -Name 'EnablePDFViewer' $DisableAutomationExtension = Get-OptionsSwitchValue -Switches $Switches -Name 'DisableAutomationExtension' @@ -72,7 +72,7 @@ function Start-SeChromeDriver { Write-Warning "LogLevel parameter is not implemented for $($Options.SeParams.Browser)" } - + switch ($State) { { $_ -eq [SeWindowState]::Headless } { $Options.AddArguments('headless') } @@ -80,28 +80,28 @@ function Start-SeChromeDriver { { $_ -eq [SeWindowState]::Maximized } { $Options.AddArguments('start-maximized') } { $_ -eq [SeWindowState]::Fullscreen } { $Options.AddArguments('start-fullscreen') } } - + if ($PrivateBrowsing) { $Options.AddArguments('Incognito') } # $Location = @('--window-position=1921,0', '--window-size=1919,1080') - if ($PSBoundParameters.ContainsKey('Size')) { + if ($PSBoundParameters.ContainsKey('Size')) { $Options.AddArguments("--window-size=$($Size.Width),$($Size.Height)") } if ($PSBoundParameters.ContainsKey('Position')) { $Options.AddArguments("--window-position=$($Position.X),$($Position.Y)") } - - + + if (-not $PSBoundParameters.ContainsKey('Service')) { $ServiceParams = @{} if ($WebDriverPath) { $ServiceParams.Add('WebDriverPath', $WebDriverPath) } $service = New-SeDriverService -Browser Chrome @ServiceParams } - - + + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options) if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID diff --git a/Internal/Start-SeEdgeDriver.ps1 b/Internal/Start-SeEdgeDriver.ps1 index 1f25ab5..d47b71f 100644 --- a/Internal/Start-SeEdgeDriver.ps1 +++ b/Internal/Start-SeEdgeDriver.ps1 @@ -23,7 +23,7 @@ function Start-SeEdgeDriver { Write-Verbose "AcceptInsecureCertificates capability set to: $($AcceptInsecureCertificates.IsPresent)" $Options.AddAdditionalCapability([OpenQA.Selenium.Remote.CapabilityType]::AcceptInsecureCertificates, $true, $true) } - + #region check / set paths for browser and web driver and edge options if ($PSBoundParameters['BinaryPath'] -and -not (Test-Path -Path $BinaryPath)) { throw "Could not find $BinaryPath"; return @@ -53,13 +53,13 @@ function Start-SeEdgeDriver { $WebDriverPath = "$PSScriptRoot\Assemblies\" Write-Verbose -Message "Using Web driver from the default location" } - + if (-not $PSBoundParameters.ContainsKey('Service')) { $ServiceParams = @{} if ($WebDriverPath) { $ServiceParams.Add('WebDriverPath', $WebDriverPath) } $service = New-SeDriverService -Browser Edge @ServiceParams } - + #The command line args may now be --inprivate --headless but msedge driver V81 does not pass them if ($PrivateBrowsing) { $options.AddArguments('InPrivate') } if ($State -eq [SeWindowState]::Headless) { $options.AddArguments('headless') } @@ -88,7 +88,7 @@ function Start-SeEdgeDriver { Write-Verbose "Web Driver version $driverversion" Write-Verbose ("Browser: {0,9} {1}" -f $Driver.Capabilities.ToDictionary().browserName, $Driver.Capabilities.ToDictionary().browserVersion) - + $browserCmdline = (Get-CimInstance -Verbose:$false -Query ( "Select * From win32_process " + "Where parentprocessid = $($service.ProcessId) " + @@ -111,7 +111,7 @@ function Start-SeEdgeDriver { { $_ -eq [SeWindowState]::Fullscreen } { $Driver.Manage().Window.FullScreen() } } - + #endregion return $Driver diff --git a/Internal/Start-SeFirefoxDriver.ps1 b/Internal/Start-SeFirefoxDriver.ps1 index 29efb52..e410cf2 100644 --- a/Internal/Start-SeFirefoxDriver.ps1 +++ b/Internal/Start-SeFirefoxDriver.ps1 @@ -16,7 +16,7 @@ function Start-SeFirefoxDriver { [OpenQA.Selenium.LogLevel]$LogLevel, [String]$UserAgent, [Switch]$AcceptInsecureCertificates - + ) process { @@ -71,7 +71,7 @@ function Start-SeFirefoxDriver { { $_ -eq [SeWindowState]::Maximized } { $Driver.Manage().Window.Maximize() ; break } { $_ -eq [SeWindowState]::Fullscreen } { $Driver.Manage().Window.FullScreen() ; break } } - + if ($StartURL) { $Driver.Navigate().GoToUrl($StartURL) } #endregion diff --git a/Internal/Start-SeInternetExplorerDriver.ps1 b/Internal/Start-SeInternetExplorerDriver.ps1 index e1be142..6feedd4 100644 --- a/Internal/Start-SeInternetExplorerDriver.ps1 +++ b/Internal/Start-SeInternetExplorerDriver.ps1 @@ -15,23 +15,23 @@ function Start-SeInternetExplorerDriver { [OpenQA.Selenium.LogLevel]$LogLevel ) - + #region IE set-up options if ($state -eq [SeWindowState]::Headless -or $PrivateBrowsing) { Write-Warning 'The Internet explorer driver does not support headless or Inprivate operation; these switches are ignored' } - $IgnoreProtectedModeSettings = Get-OptionsSwitchValue -Switches $Switches -Name 'IgnoreProtectedModeSettings' + $IgnoreProtectedModeSettings = Get-OptionsSwitchValue -Switches $Switches -Name 'IgnoreProtectedModeSettings' if ($IgnoreProtectedModeSettings) { $Options.IntroduceInstabilityByIgnoringProtectedModeSettings = $true } if ($StartURL) { $Options.InitialBrowserUrl = $StartURL } - + if (-not $PSBoundParameters.ContainsKey('Service')) { $ServiceParams = @{} if ($WebDriverPath) { $ServiceParams.Add('WebDriverPath', $WebDriverPath) } $service = New-SeDriverService -Browser InternetExplorer @ServiceParams } - + #endregion $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options) @@ -46,7 +46,7 @@ function Start-SeInternetExplorerDriver { if ($PSBoundParameters.ContainsKey('Position')) { $Driver.Manage().Window.Position = $Position } $Driver.Manage().Timeouts().ImplicitWait = [TimeSpan]::FromMilliseconds($ImplicitWait * 1000) - + switch ($State) { { $_ -eq [SeWindowState]::Minimized } { $Driver.Manage().Window.Minimize(); } { $_ -eq [SeWindowState]::Maximized } { $Driver.Manage().Window.Maximize() } diff --git a/Output/Selenium/ChangeLog.md b/Output/Selenium/ChangeLog.md index 2fb00b4..011923f 100644 --- a/Output/Selenium/ChangeLog.md +++ b/Output/Selenium/ChangeLog.md @@ -1,5 +1,5 @@ -# 4.0.0-preview3 (Planned) +# 4.0.0-preview3 ## Added / Modified - Get-SeElementAttribute now return a hashtable instead of a pscustom object when multiple attributes are queried diff --git a/Output/Selenium/Selenium.psm1 b/Output/Selenium/Selenium.psm1 index 6c563b75c0624dd6500e2a689550823cb9a6ae6c..06d86092c1bc7770c08496a81582e4cee7b5cc5b 100644 GIT binary patch literal 121028 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 bkWj-F2sU9pNq>FzsBzc7)UmZ@tkwSyGQ&?+ literal 248526 zcmeFa`*#&blJBdZ&sz6?&>+nc-93^YJu~-S_v092d72($Jcb^39}UY52xG=z7=(=( zxBvBXZhY#iP)1~BR@L6xGT7IP1)E*FDl;y|nMo?f;Lr4z{jtJ=uC>f9~6_&+WM<_RNW0{};RRmHmBY*Y0io zUt9mn*$T3;VOZ_1!S~w*8MkyIa={#%uQcH#YXYVMIZ8F#M8dJTMsU4RAiSk>9hm z@XVJs$94PP@z&SF>JGMU*m$1|tA1kRf{EYR-|y@%tMj?bCm49XwQr-}-+F%-pQoPL zoqw~xH|@74wu*#m+26;8 z(W3$1`UbSXciGl0T0n^>cIBnP%UXBs`!k#QzTy0~eY<7<`_``ggZ*}7-(K2!?hn8G zyN&Q@xYMt44^KR?KacF0hjy=?yJ>I(?LDJ0qu#Jz9Ck)2V`+@TfgW(>S9Tv1`7fL4 zp+R=v)?GuoZLmg+a@TXa|Cv1v)Z##Rp0z%<+3#-sr`-c?Z*RR@ah6lpSMJ~IPhrdN ziu3!OWmS$L|3#k~VSHC>tc=w>4&NM_i2K$!%P>2AR~%P7TR3+&N!mMuWFTW;|NhpM z#LvL|uJK|VZ;HqF&$w~hv;y*W$28cLK^FLitnJyD`+=Vd=8**W4xaiqdkUR!f8evP zjI+KrzBn*_@~K_BYkCQ7=lpkj&_B!`u?q|z+g;C0*C9cVZH3zg(YA4@AlpBcvHjr+ z&}|Pe@(gn4virGxhcEdReY$Ob5 z&x@<#FZ1MBC+->^uw#!p*mfx4Qt{BX@tjMh^O*lKhb=IUjraQ>8F!*zx6P`;r7s4m z#PRRhRpbP_h0lQ{!i!j!i+w%tZN?2cV3VBNw^nVwcF5MpbS?j~o?qCiBFEM=cy7Pq zZJ;|oA7}y2v4ZG}`tBBm^StZR2JQq3c;fz`N!oHS$Fq5y9zO3H-#@oM(gbkU`S}uT zfwSdUk`IDLZrQ+pH9X)`%Tmu9M zx9~v}aAb5Tklr?n1=d?s{Ln^;u?Ai=R-LtPW?t5byuPrt7LMAnHQYBWy2k*$;Bq21 zG_Y%Lal%iE?q6N$R0c%C^43WPYf13824B4%wuHczw_jd-F3^>#ys0Y{2<%*g+cdp;BBH% zt?tplY3#GN+SfVH+CYE&g?Z{F<%4(6kjHU$HxCZYVQLUfXlNVJjRz`^Er2UdFd3 zcLgqVJ@aJP3UB=|ust@Iv3DnDu*r`GvN}HAHUEFSzGb-ik0x#+KAd~kk)-oWa^~;M zCGeZ<+OEYqCqe$lG}JbrbncFnG%wX!^1G95fcr#Fn=Uku}7i-@`&4u1GE;{Y`L{PPd&IaWsw zC_XKl`+;45W;zhQ`eI}kv*i1VvJBMniB#_!SA+k-XVxAmY0_O|}%)E`y;D~>OUjGy?w2VGz5 z5TDsU;~M`ktPVSO$vii=r!Eg#@0hb4@&ohUMQ$^nrdaOpfT9y+!^C4Y%Meb4Sdx4;$8%qu7v zLwPaSt2$SQe&Q)`;OAnwPK;h7d6 zr-mr{E_jZt6mJCm2Das)kc-%Jti+SpJ9F{X{R}Ev>PVunED|Pki;Ed-~FUU25+ZL78aoIdPSB;X-?2jnu zF^^~I;5h$_pEK5oG4FIT(ul0<@gT)WqSmE3GWQW9Vu7dy?N(Cb{si9Au8rk)G9r2* z|Ng>eB!5T7Ezhn@Ks`DZPL-owlfOIWXOSZ%GRq?Yn3sVv}H??=BMVzqHpnDkRbS) zSQwuMtw|j5OS?Lyfq!ZD^dte@jz-77mG-zu8TCB0WRX*~XQ!V9lYV`yfojcy1|$C{@Aa8cw&stlL*$dI)1&yfZjC*6O>TeOTLM%c z*?e@0)VeHt6rOF#)QPjyF&HDZ`e@+TO?fcz#E%nSHBE^-rZ84hXI)DJ#)#T;x6swW z=SB9!2Umvg@JyY_I5KbUvH5lQ$aF^$N2yBtV5maePSI`g66x@2N$}BW{{?Xh(X~g5 z_&`^Tf9NqoiafejWbRoE{INV^(F{DDeO-_1%hUhRfvLdl{^sQ&51+Xonmj-Ad!;LZ z8r*<8!CW-h2X+-d{A0r!m5~yK%4)=Jsur%08y~v|`ANuy&^?7lCFZ9(LasHAo1?Aw z3?kJ%YMK|E#>|Y?OKhh)Ma`k`^P$bjnx74{EY!GZ*rDbap((RmGaNlNh#w9fATfYj zqBqkM(wzRB@(=I}>+P+fcqVZzXyqIU`KbO0ZRmT$;4|+72&oLC4XO0vUy;?k zV^U47GIti$u=#hWSGq-~ByD=FWN(Rb$u&ub#{}EtioZL}80c44Kkq+b3y}+; zF805+G1-?=9qoL+6syiY%F^!b7FFl9W3LBx*DOEl_Y6+f3t1x(T?$*?TkGEo&FQu; zUEs1L@7q&oQpYoNl@82vL;3v2*UINKRnh9|(#HxvIrWa2(P5pY>G}QR9fKXJ#?GAs zTQ~kPvHs`wKj1lNdL>Ky`Fmb8w29qL@+X1CaR_Eb&v=Er;LD+7z&oDa?f6%$BU1;v zOl7I3lkeH;(c$Hfp13+(kGz9t($?!#v>c}zM`Qf?4A<@FVj~r!>(Cf$Qc=nR^9-b>wYpL-YZB~Fz~ft9BV^* zG+F(&?G<{b`Am(KeXHLpYE!Pd%zWEMDZRGpSs&limdkzfs=v0i6Ymn6$xorG!z$Uo z;=idv>2(lU=_eg&$0zWJ3!1U-lPVvR|EFe;4k) zWY4OfTWekq|8IBjzdvXWa+v+u@xlt{f-z*o>mAfZ(LQ()d;)KwQ~C9`hOJ^f&=tS8 zJNLs%(L=ut-+yo4FLiML%d`2YV4(HzFt?48a2z^Lyh{z5U!4kNmCng7VLJv-i>tHO zFlS+WH1wT3gI*@a?;PuVmwMPdTK8J;dfJ`D7wrezBUF91`QSOSL}DoW+X?$w-%f} zSMl_nHuA=&o*6$|<8}EMK9=?yYOP2zdp~|I}lxI{}V$KX1! z?^RYrm<7vjUB0sn)c3ZoY%#twynky)hT!awG|9=VCG^;hU2K_I-h5`Iylo8s$Fm zsmX{Ufp`jvoJ-`YD!T6V*xvQj{?;GOU&B|t&x*AJQBl?-h zlW0mFG|;q0Rg^++{wCFWIEP{tiQ*?etflop+R_WE-Sjd#QD8(jZ2 zKtoNA(cv<|xXKJZ<8G1@x7tNs=#QitLJf+X-3LZ9_QVq>Az=@bZwe(?J+Umkx@Z>s ziMlIAPyVYtjkZ;e5N;;IqCSGGV-3OlI;-;4<#qV}JG5BT5%PFyxTkHg&rpB1wS9e8 z{hgJgv(CHTG4|KN-g;|*XQM4~{kwn0VTIS=*SPx?+LtT=*1)wqa_7&hDvqA*I-x z=vm1-JV<`dy4;&bmc`E3G#fs7)UDEqw^!sP_t+vgx!x*ywsC|6AAV=+J+xfvXZG($ zW|0rg1`|P`LH6v|@9YZx3_T^^55Gu@jd>KlB}M?Rtf|br4);Pm_pFe?L*t@Y(J6Cj zPGs-1L{It>SCh*6`H0UEO2y^m|8_N4xa`l_%3jbjXu|;L)_$F3x#YT)fh>@VOD-CEa4?4tk6>=o) zB-!#6pV)m+n|+TFMmkB+tKZwdnUf30%J#$_`l4HXcDz6Aj3O`T&CSC?9wb8Fk}%+2 zdOhAJeG{+L`+p==ao4QlXq?^CNuNdQa1P-#AN4)pqHW}PwBd>tueAsBH-?wHhCSsB zdeQb?r2+6B@Hy9;Gi#Hj5M(WIp84q*_x)^k;^A2K%BU^04iuehwh$BJ8u#sFW6 zndyn+%o&|a`HSH+u_btI>4%G3Tb2`6L=}sw7Jg?fN4{fkZZ-05qKuU2&*dUw?}piR z-zzNs=JXx(DD?|+G#b(6D2|+c4D~TlUGvjgkj6Soi*~$-9rg~Na>=>MacnF3#$fTB z(|FBsRX!3GBQ%+JR8T3A-M)O57s+>kSNax_MZBGF%&UTn^IhB_Pd(nleLO)Ov-JdH zAKD#2G~P|49#FDGNC`OR|E!nOnY}~PSLUCEGcts%RMiIh^;Aidw9#20i5Sl@=DhXi zVQ&ZXwCLiaPWArltV8-lw@&-s;D)$&hCE%Q1hIKb=KzsTO&**q%(;fLvTWSSAW(EPL-HN>05d3uI0;j0!zlG zc@s}3YOzR>IZ1L3zGP!WPB^i(7YV#%$x=8=i)!=t{)?p_OY+N#Z@_#7zM5q zr;fRF%!zl5Q@t*ic~0l^z@@A4-n2a;!llEu$a{{*$NH=AApBJ%g6vtbb2^8jXvznJ zbh!p=%RsBP4L3$BH8tnFc5Hit(eh1uUUO1}^yvhp-9e7r*3Cah95W>`Q#Gma&PQRb zHD1 zJ43xDMVv$ylyk)H81?=76@%cVaRqz$@Kews^gsX6?!wB%_-AV8cE)D53scZVY-Jw9 zdcMlN&6)eMw^ehCThf|GqdsWm^D@@RCa^z~9-qjY1)C9D89uUo*w^vSw;dbphIvaj z?AMy(@H)``c%8nB4J&_W*JIs~s37KA>)*+;bE=$Y^Ekf_E3Dmg+9NY9ne~WM(wO1B zY-@{kgt?4>=Nj`e|9x|Scj=#g3S0ZmXKOUL=+DJwa$wUE=~H*t#R_r~`sBUtvI_41!%jwCnT(*17@wC(4f$-DZyd)oBI z1H(aaticL?=FWxa?Fnw-tF{h3 ztkyLU)v9`T3#TO;&N%>ZgwDymVR$|?JhPwp1A}w{y=aEp6=6J_^w07&% zV}4=q)EU!jw#sj8tz?IfhkfvHjdDF$|3ljWOtz`sAMc&1my81V2xRcS9>&27pz?!P zT;BEa*E35cZ;NQ|#&u}=eUNIjrB&T$(XHPwuJ3hwXLe2-aoI^Zl)HL``LJ@z$}<@+I-l%e!`Xw)K4PdRgh+hMXuj z^45avuER$L6b}S$kpJmfc;!%p)rST%aKAa!dUovz>ac%V;HTqcbN6>7=qLyy7c(#Y1oAilc#IxMRS`(RS1nh2GGdRBM&w?}Qgu249 zoHy%{{W}yc95UzYx6i9s!bv`#f3`S_ed^NMS}pQWx~BH*SFC6|v+v{9pKaZ<-d*!& z%e-gurKrdy5B(YWY?}Vl(7Jv>=Z*E>JaqNBVEEeP#Ny6zYA39MGu?|8)0*5mI~?&2 z*K_UlwbvEx%@hw6DFCt~)0nqSGJh!TQEQE&4__~xQLyB?0!vxv_?OtRS~_Hnq%|*I zLqzXOb8b>Ev^mjNJpHTl{krlOwFCdpp5`i&(~_3<$!EggzU}aC`(}k}fGB#qNSNCf z{!exYA7n|~;+1x3ka#wI&P<@s=e?P!mA!AiOnK|ccu!DW7s&Iou9%}{effI}(`_!< zIqjoR3`yLsO7|m+CpobXACTz9&kpkQu*jL~PVVSM%+8@Ldf{IX;Mcbxxb-Ry=aZux^}TWdA>qU{f#+& z@0V*qpyHYpV_~3__etEvib^2!?t5lK4+D3c1OI~vt<_tyY%~QvM z?*k!q!{!y!Jj4amv_3ZqdPf5L4wy0b88}CvZ}7LH9;SxtZ-%|p zsVcZ$$=wfbO{XX~KV#W3;XQJkvdh}o$w5Xau5Y^P(e_nybcP-+`_^h5npfENklXYE z3oT3(+(j?Ncfdv1=4~^QhAl07W00&%MpN|+em&R)?R+TF0B08b$?owt8`ICl{pxDL zMw5-ZZ{N!^>N(`e(m#OSigl=eIL)q=6Pim!)Srve)OxzlAJdeManhmjul80+v(`No z)R}9K4&MZf;IDYpgmugNaqt=r&NQ*rDy58gnBVf zT%|Cfe^=@IAA4st#eRr=ImLE)PJJ`|z5RVXb5(?1f9}#=+;La&`Q9-k-%(o6yUaf_ z-o&CtKFIm>C4H`OzmfF)-k@LbROxubYNLzsf7t6nUl`h$-!Bg~fi6VeyTTpnEdx%! z`dhn7o*Biv^(?BgI30L=`7G4tvJI`7!4?paxi)ObQP7xpC|6YQNvZbX-S9rv(#1|qC4MLW zR_l!{rw*fkW;-a!BL2_(;dlGz)aqLq8*xm@*YvSlP8*%avqQ6c>ZRyx1$0A=gM+i| zYOMpnprD(^lh0K+B+8y!bYku0aQm2<2J{I!zOPiaq&d!mHq4om;4R8v$C!1?a%sg`oXe9iV@{?Up^c8;pxckb8p*w*w{BZ_Md$hN8aOI z{LmwN3NMy=u%OjAf|<^rCxZ{9{CdI5<+JBxrzLfLZ4h{*-iPk zV`zU|9&e4Ui}iMEJM*)z>)gvH=eFE5EvX%k?DUR%MX)n zAwaj!$7U@r_}UOTa_$(p4dNr$M)OcOMB}{+wPp4wtHpN?!KzVK!5F!9^#N@v%5s=w zhvNFCG@s*R%GaIqlUL)t7BubIo%4Fu%wb=Ja)nd+aPUj~RnY0*Y0sD}te-5CeTE~; zbClCy>vLi1d@J43exi$bEW%Uod_a<}88_jVjI-@4mVDLUR7;1TYJtMeUW}H&q{R6XB})Z@u~Kii5kMo#hB+Au7)ijjYG{y1^zP18D@ zzD%sReAalU;L^WbpVlhS%io?}+r+EECcZb&g5A**r(c}vo!_Z9F8KbpJ+oSO2DCcb} zV*g*cqRz203cDugX~w?!Q|zHqACO<+>;mlH7iagxGgtgBFh(cVivjL(k|OpPJU=;m znk!(vz(Fnoi^VDD#eU(HfT41Y_uf9XvC4h$c3B_azD>VsN0^TQCziXhhW8EkE`v1> z6k6lC_~}XLV7J4)eA?7`NBw8&IkcAE{nKZA^`5FBQ&ymVcY(?4*<;PtKQ*exTk+M9 zsVGitE{r|)u_A^${wyn9B+5Xp!c3#m$|CDpu=Az_PXwkye zk{$$gHH;&yty{2^@sz_*hlBfL%lWoX+4gQ5pSLY9#Ut@m_@{F&yG}kdyNCVj zOT;fs7ewvnqxh$fw(Nw3S`OS&E#v)qPO?Ti<$qP&wRY9)nO;%+TA+c4db+Yrm4gAF z$AeE5$D5OgHWe>=#oDWk_sa=_oc(|=zNz*1N1wxnbJeCP{LP@(=_c9K8uN&~brorB z$BW= zl*0;>x$?Yj@k+gqhU}L1zx~zL%xQfs?Rsz~m3cImtuh)=dOtpN=+UB_>(lDR;?w6vJh0aQk zj?>u_fA{w|Cp*`P?N8n|ocA)~&Og^pw&QNa_}%>#PJGV&4A7f+5EP{k7u;?d3ySOc}wxQg9wPmXP4vul&9eI+liM;-i^NX7MHi*8L}Pf zK%3p205|kbrLUoP&YS0f^Hv4gd7Ox^tV77-u*a$$Yfx1-qc2s_2 zo@UuwFPJ@PQm74Ml%*DYc`Z|SFn`$t1#RAJ!r>#*RaCT^^LU@0ZR*wZ%)Jd?nVhi8 ziDx6{JP9-N+n85?=No(ak?G`iwXLk9jO?puNvT#_I-m0D=c(=UZCXMj)ij68sZ(=` z>JF8EMtP5;X|?B<`8cMi*o(xMQP1J_&suZ3*7|6$+K&cKQkEdf+d<;4xToEFyXY<{ zeA3G3?V5E*9_H86w&%VA|7^><|LUJvYJWB8=(i^2c6!{bljge{m)aAuOdih^Ev;3+ zuX}?>u(V4jQn^qCNkDSjCzUzI{IlD=Qa&Z?1qW^0;rF*`ud8SY z|J%M_CuGWRX?qdW#fc<&-${8tNjZUosyzD-;WDyGrRM+8X!pRb_~{5Ib_d*0ylBp4 zpf7+J#P7m3#1l_+ro%g1f3+F@Y9rzw;9(I_;;WE*E;j36ur1~J`rLfsMgLAmoPVYOioPjlZ4>+;q6RW0_cl~mw zb^tSmPNBGK7^Y6fSlahNZyfjOG}MC;wRwZdp+R-kM!#k--m-sh7`(3%N~o=!+fMV0 z3r;zT@UcSf7k|N3c&WVc9A6-wYvb=l5l-kkX<_8h-lBKKqQQ?1--l_Y=;?_5we+k{ zQD1A$5UfvEc<$Cf+lVWjbcB@9yY3R`nI$j+_8k^*8u=6XEw}?VoheLDsp@3+>=XR! z+-;rZMBJ@6RQtG*OR)kGLV9wXqC9!oI$w#LzO-&lWiyfZXU6IHU+M$8V|1h|7dc>l zorA@D81RSCDM*%g2zgY_HENS!oR#^xMG=~h2Rw1M9`;8xAM?yDn-z>QvY)Wb*!f+^ ztaQ7(8qO==?3kkc;9laymjg|p6?h?z1X}2amkeCqi5%f`eZI5x`-I=k_LuG$1ko!7 zW?{ePox)X4U18nzTI4JF;^m2~>7*O7oJ5+Hm9HW_{*-^V^KAW$7oA^F3;T9EVcbU~ z&%jFHY3P-d$>W?+pA$m0zBMG%P!~pIV+QuZ1%#=;eXSRoT*h zv-y)8vFY)wf>mclKChV0pz}`e35@u6`pD|Hzs<$md8M4_jdu`dS?*bUYJ7y=l24WW zi}j^9a~W@3*z8-B73;g-H^1{CWBaM$3m%ehS9?`XlN!qrQ-3hp7Hz*A^VjSts^eeU z+|u&ARf`JCm!{h`h5ZPRuja^P1WTrThkTaa8(_7s;SUDmBYTR9QSo6FyU<<2ReD4F zS_&zMXWSruG=rNF$Euys^cd)Bebpgj!xrfIuNK|)hCgFXJni=?s5L8 zy!f%i&%wkF5wDw*!D~Z9M_IA5j=i!@fSM4~v$s~7B{`P8o6tun34_s`e8xHkuWBJL7)-?YyjPP5&lH${Ea zw}!a#>qH6Zut=L%ug4tAySBps$Pb6L6Q#<^DOz9Baf3t^-#NY=D36JJBPa5M)Xfv? zn!Hi|rO{M+E!yP+gRY!>h@3qb?$eHeh*w`#vHDqN_HBLtWl-#yMR#ra+14M8w{&W* z_m0FIc?&;%f5Rc@okTdEncM>N#uxzp*dDn5*=ZdH%HTh1WxBtvzVR!*I&V^mZ*r%r zzl9}-RX*?6remeS{DjxmGui&-Z_9QFMa+!f4e_x-Ue+vHqhli-+nrWXB2}%5&&*S- zri`k9*^)ZO>d#WA1=hT$2Hx$RWp&9YpDkNCz3tu^hoU1d4bfChaaNUSP($Y5b4Cm( zk?kyh(p~s(*rR7=VZpyTH;}nQyN18>>@-s~Kl?On@7pY;tDyE;9P;{8d1P7rJ0pv@ zq=t{SVtw&xvgVOr{LMUM;9m^uja1EEX$_%&FIs5RdUT$f9R~lLmbx2*8;H_!}edM>FOnUf_vn9Bd0vl;eqoYvey(}7+%ir7_OH6y(g{T`#yG^^+UeOQoyUOJpzJ9T zup$=TTlQ$Gc&2P%<`49!7I=Yelac>lz(D#z(c0#v0t!j@n@~Q4` zV>jYecj(_bN3F9ka{lCxrvJaOzp>}P_DR;yV@1eZ%d~T~n~clhn%hkaM7BgV5_}3OTO)GvYCOVXr=>&OEs+8rm7U-#OuV$IeFo z=dFLT|HU=>y4i2_7vs(zmWbC?XPWESt8;0N>3N^B^r7IbAt}TW)UWV;{46Bzoxlrd ztt4ZqtS`#ABK}^~RP!oOXum-lI~k5V|KXq`k#k+wzrdYmdBC}_)9-bDK zmT1bd^6Ym`YsVbzjWvlXf~Dg|y*Bx&agO-uAQR-GGya{g+B&w^8?Joy>KeGOWnX>v zv!BBp(_qOt`c&Fi*ZJ_NBBDd16`d_FlLbOs+)ffyD2N@1=Que3^{iCP1Yy~T`Ou2b z23`AXuq(Z1H<=UWt-yZrMQ^?uR%k+vq@PE2yu5mQ=a59*I|@ZVuUK5(`k!`| zD)kPkXQ~LP{`z~aLc~k12;+6cfTdyC~js<4x#J4AMvycIHY&t`E8U;BLdJx}db?pjTlXrc{K z!5sA&^*cPb`>Al!HN%+>&=kGRN?WUKc`b2=0hT>eY>B7h*j61w-U*gi@475+!vey> zYrvV`fC;r*P&*f}dr`dsWal+o^rThucm687#oB$j1(G&3eAW_~d9EIh%)5mPMDv&$ zkJzI(9v|@}5~B4mCmCX{-Y6OPTwb3jwXBQxDLL{LE?fW9 zNbM2YSLd|b5?L7YCwh6@E!2WJUds?J?JUVTbog_gI_*sFIu(!zzf&-JG|D{v@YRo9 zvp&xT`&nmj9LoB$Xw;UsD7}TAI~?q-XZlr7kZ&2Y-YvZJXKZuX>bkOJN$CbEIy!68 zvZ}~MenK~%@C(!KmNd+==n z7w;LrlE1~WwX@?(xM~?a*0&#-Q_y{@(XW;DU%sv-cNR&G@mJyXT7u(UQHE>Y_3zUd z-W@91tJUQS#IL_5*aWAyxaM_|@J+1ory|XTF6Wb6m!A5wEluOAEy*u(Q)*i-=Or4Y zJC+#v)m6!Auc5Y@TCM(Fl7A(-`g(}Uqc*NRo#||Booy?5RD8A;wwIlqTX*3`2=R+^ z*X|G5dmABHr{lJr!He%uXy4J!Kr1gyFUivG+nQo7NlX0wWqq=d>e9x8tcv;|>o!jgSxnX|B=YtL?rz(Rt z_E7T9g{j|pK6^pxvx*s>j0^RZ*7-x}+PEs`$u=JHm~^Sqi$(Ty&!X0Uu#E8SDoY}r zIL2~2f)&1($V02s>Adl8y9dH~VAC;h#JbNM@hi?d->hZ4R{pkdaKHB>Lg~CwKUZey z^V9fQm#LWd{N}7?@b(a!=IW%6QGb#t&>2hUfHr5%cflzpE^B$)IGVRG>w1Lj$m;yq zy_P?PXYguzn#LYi#M7$r;>FGStrmf z)6%mAPp^WjT?@7>ng1rfp1Py;Tb2eNYfdWszV-CPtH9v=+A}7&-~ak*{k!fQ$H*U< z*ZZOoiNrnr)bFxKFnv;H9dF@Ra#n(Nos}-P*81js(5u5fLE_>2#`W=Ah8YiHy%`QI zlS~%_y>$BDrbgzxUh1BoTO9GNji0}7Y8G~2=sjuLl|Xg-xm}}ggiazLcs5jkJ(^?B zPQ+DB!II-RPlf|7qRK|+Ag5@mwyZN&ynF4$qBmti-ZL1fqnr%T0wG>5eJmMP=k#^< z9A6wPtq!sAHS)RRGh^pE_k6{>7OzGe_4u8Po_B%ioPt~Sot}h~ffL!UcE#?|UH;CE zslGB<7SAJaP70?9tv1FO8@;{oZ%xpg+=s7Cz1ZGMqjN@jIH`Mi#~C(udauH-@oWO+ zP?5e@$+hc2MBfNF1o|HKayJzxNJ*EGEhY{`zd?=6$zB&l2XUqi96+yAZRh>|1Xy`@UCZi_?VuZ&Qc(GZkQ)?>fcs@pzcm>L$Z5%dO*xvPSX-i1#EPZzMQ3d z)K|XC;pTwn(xKRfEa%z$*;>|n@9z?aadH*aTCUV+)ulqRo{GOIu_3aDleyNwCrv>#@2HA=@K_m6Ew%75~d{vChaBg{>%eJ4S(JzAwCZ*CysP&HdO~z~at$j7`x#seitPhjNv~jl_H1^2T zV-1~TH>JTN4yIyFM%S)2ECSkty!g9=|Cni6=EmEgx0QAF)|%tP{)*?RkVl$}JeN@d z%{die3f{<#PDB4(kE7O$Z|gNJhl^O6QyUaH|1bL_`%vt<%O8W<2Gkhkf`D4f! zMlUMEzkc>`TGL*{jLY=lMa(?bJ5#en?yJ50B9}jB7}2xyc_Sk3Ebrvc>T7WIMQ0eN z@&TFVe2Z6hEGoHTt35F&u`zVD(9gs=(Ch5^BU}E^G@L99|5IN+@!Wyw;uGr%h-2;! zqeV@mj*gahtUXfY-ZF3hnK)O8htww)x!=d~_-$^k{s{6Ay}niEoWk7FS*OORz0$by z_2Y^-iu*y)&z|=h3kI^z9%CH7D%4%t4S-t>1j9N1M(JM?}r zr?!8#F_wLedAwb;e0vtTcbIhJ|D7BA+ZlY)4{;;3mvB4_1lnc?>HnC^<>P}%pxx66?l(%*{8ia&rKa67H_ z>Def~2zfluWvd}VpXbJdtm%bSw%0$ue%UHMHX4%!Czc~>8?VGAXIz7fXJM%SBI4Yi zt3P+oGW&kg1baZ{y+J<(KWYf|oiBg(@KowllO<|j1~EIVmA7*)=R9ZaeqAy`Ylk)* zE9s0FaXVXlKY!~2*h0Gej@F4Rp3_DvQOQ7iurt12v#6<4=A|n{YxWsy`Ssay#4CT} zmT|DEVw@Fn&3H?BSTfXTLRPP=wDcBykCxLn*H^&cxnppp_tCu^I9B)|HuHQfSN6Bi zqrxk1ih!Rl4H%fB)Au9!b-ZYjk%ymozJm0V6nx^Jf*{^QV1hZaV!9-EwlL#?bg zVoOhqueEhl=J!=(dwGAsTwjIDZH9%8fP5v=C(Gq~hO5`+5J~7me7q z`^x^cVfWKITTd=I1;JP3pXXUwwp`2BHIFyWb$DujsCSZMCH|vkg=eHaqwM$_M?d$u;0-9PpD<}~aQ7+XA^XU*RZ zO`@sr`w6~|?>G+s*HhE+Q;yqm+_dg_3cWaI6W!<0PufIJJl%-(8vwJp-jL$#W_W!vo*4~5kSWlbL`~K8MVQe2M>#^0|^-ZTA`8&NG2hO=`SM-)iWdc1W zCDW()6>dQy$=K*EB*cm2qloRwJHe4i?|d4+=h)w@!(8Kc7oYbH;HyLXxk&*XbITwm zFDbjkeu0R=+|N{SNUuP_%?rahm@Tu7-|9wIfPS%@dChMvYGJPbrtmTMAQ4e2&1s%YOUmzim8Q z_aCRXR4kri2=XYrH42-;&YvhF*Nrze`_61;@spt3f<>!%9+;%xl;6Npi87i!yeOgW z1LnA6&JN4sZO#(o>mz4m*NRoh@BAwEBiq)oyie;o*UR`4zPno8$}f{6;4dQykUPH82?~H zWdCI0-mv>#-8v($I2AM1b@i)B$ry7&&0p{caTq%ziznE^^3PsQ%b)w%%NbivagW=t zovq&|9^Gt4Ysa+Qty6uSwVdnWT08pnJC-ewCoV4+D~J73RkN+nYR!~a>ML%ay@?k< z4Ztm%vLSl+(_H0A_wJd8?$P}1gwrzfCh~h&EXPHA9?ud)o0NUf?AHkXYldCcFYo02 zVGd4?B!(deacKV|+GVG9JX2FX$kVi9_ZH(j)0g^a^d+maL(x=udwho4b0%?>j%j+V z=m=WJOBFWQRRC{Kefg2)}^9kI+6=W{M_epHSt-r@9O)pRi9e_`v&%Cl9i@!;N>Jj}86 z)bFhs$9l1yXImZ-O#A-iNYwX6PL2J78rdjvA0Df#ItKmsqVXC-kCC)ZJmTPD1SvRgpLM1p-zq#g?MKtUFZ?OkSEN=(#9eCQx9S3UM@Wg)hR4wI*;p`)9%T`D$jhWR&XJ6xX zqxE`MRe?F@p*UR!53+wcsr<~o=4q{kvq$CgelYl>eB-=MXx{q8vuvB3i(RiDoA2B| zF?DRqmcQM8*&eaO!DA<_SN#Yc8_VqpO119B6(SZ)v+~?lb`pth!1);=Dhn9oSOdm^WK&ors35rD~_|? z=Q_A-*`V9Q%uDvLQ0p4+Q(Ovn&X)96HI0K>>&-*`k?Bi+pG9l+bI`A|+h=}G>Vo8` z+~VQo)mPe>XkTq<(6;x)spN`#*}uZMCBT8VUHlvQoGt$&=LQ9f{%ytA?C&DZAtFAu zz5beaT(yZOK;Avg<0&`De)aXD>ipErhEK6xY(4gcR1@<|y7Vc0I);Ea@w#DQx_-2M zT0!bp*5w0j=8c!*^(;R%E^{my(bsW>(U12N;Gr3OUn=seR@BCL+Y}#^egFN~WIX%D zQEdr4S1gzQz~tQZ8MT1ePyNg^jCA$#H>|ug?NO*iwtoH$#5y{V##cXsLr``NvuEOB z;fcIQRLA>7J%(d-d>^lpi0scnAEVt{8opiY9rH$;GcQ7VS9voF`RWo+Z+?B$UFpLi zo?NP#`Vtr85wF8*^i}c^OKC$?d$I8687^WCw+8w`gNwj_8T}$)R|m{Rz^#!l0_Iia zx#)FuthD@%Ut8ts_66vkRe1YV!dbX%o)=yvoJ;xjyfBXKD?Ki}Uz^jNIMIO5cXOQ)%`8b86aD4l#BF;8)zTzj)>A zzWuE3LaE31m>^=~^|0wn_~9RaBs$=t;9Nxqcn{!I40lm*F4Y0&g%RET(By?Kw!NX> zp(Ur0*EgXLHX-*wPT$Q7%eClqLA-D9;n{|swcFh)F}G~@=Ka-H#-In!WrznZVr?AmB#YkXvn z-Bd@#_Gw0)YJ|;uVLd>4SIBky4Sr*XF_{MJ+3_GXV@Q8#kiKQG@+ZUSdD7isBrM)7 z`^))Df@Rk-N-u|V9=@>|;(pQt+hGb{a|$OG4oD9N7%tm+b-O0Lb+1u4_%bz_;UB#Y9ftTQAvMHs1kuy_#R|);M z@YXZqE$2cq-tDt;d^Z0abHKMY8vFYl4|&Ypfh*#g+L4Tp@1NA!z=ifEk$FZYh|PuV z4{UX!=<(piwJ79c`RBSAyE-6W=pSjKgtTumsdVMHjc40LL%9HEQ zu2qzgR;N9gl=A%gkSIs88V1zCzOHn6_Lp9Tv23@c3!A&@8r%9^S6e!7$0UL-(Y(A3=|%MVn{kwffQZrCrz_|6iLH>EW7COAvq-jdD7^9$`SPs zBzynV_vpPX(tF0@&fxRy2dP(1z6?0z?}Go@HuG!bLil*!{7f|H-v+PXZzH|@x9|k_ zWKRCuFbDYZ-(2JT&AhYcb`@R#Evq$7X>$>M6kprQ z%E^etm2@XVQT*5zhsEyYoSBEa7@_vPuNrpXtyq<2M+y71(EmhmoCfuwePR*G0o+XI z4BoCHfNat8>e`)nj!XY+^$g~nW3i7OezW4;-wV5oldrrlgosbF zgOtD*oN*`lB4-R{IBQ;+ExtkN_iWIu69S@k)9{mHmYsErl;>g zhi|cFSNEoIgw1Pfg0OO@+EsvR1g@$0~1E23bRQi;vNnoEQ-MROWTr zDz=Wg%>4d#*CzhCYdXmNzUZ6K_lkYj3CFh#Zk^nK52sAz+)iwt!9Ux!xV)We%4Yc( zZEfej`sea}wf=;EUW~={(U(C_{*lu%@TXR%XVLhX*WkhutK2!Y0y+U_&PpB*wo`t# zd`uz}MQGv$;yKljO6=yp=>0)^#{JmTJ41CvSxwF)FA?Oit(%jEAK5)GjmM4$i#XSB zz6`h1nEzpXo+FJdAPk2H3HrMEFN=~hRnm%K1rub2juM3tg z8xM^$(>)&_p2U+?rhQ%CzQ8nfW|;GH;OE#*_Bkij`(_EaWyiz$k8x2Li0S%13zG+;6y(@Ljd7JI4-L+Wwrp3Ul zQB_XQWV~z9Yw2uOm-BCIzJIqnADJE{R#eV}C)z9YS^TqT5PT=9Vyfy3Ue+>(=E(GK zzI)FyB0hKiWhorR3t>)Q2{{=*^Y3uLC=inI;B1{SWJon!PZYXr{n_R(v1|0T>unmj zg3EbTWCFa_2nGeilm>G;?AV%0+$pLkZ-Z7mwl(h!tInAhs^{>TV+C#~&ms-+44>(2 zkFu<;9e@T)taH|~Ts;{0lGRh$lfSWKjm~RD-$H5Uw7C9W+|8Rh3NGaFkh{W5pmz~} z0^etM_@sBjY2bM7eJ+*!`uTXmO8v&xOGB@LJYo4inOc_(W+3z|HEX!EC_m*;Ol3b0 zOe=7%G`a~aFQL%1%(Q>aSMxXJaC+L*`GGxgtG-VUNhc%DJ1O5EII)}vbJMOx`>s8A zOY8;ml2_oEcK*0Xm|YUGv`xd)!>z;JvQ(_nEfv4x#~xQ%S8?XDY-#K*Q}$00;1{Q| zy@c}|UM!0|Dx_I^Z}Csa#9y<&$~Mc&spHE1uQr~1-1?K9gLT}nY{v0(J)WuO^zZC- zB~nvI9i2E!R+^t#ea>4pPNpvjMpL<(>S$np> ztT7w=s*VS%y$qK(?f(BZ{^bph{^aTy{ez9byNx)7e${#7v#Za{3AntE7rQ?+ zEDZI}Q>~n@PdYD7^M~K%e)yc<>-YQT6795mTDgE8V35eN#-Os&<9^AEN5$;p?xuoM z#n-O~Zrhm8SM^Q*j{AAB@SdlkzsAq#uBminy!6=cie7(i{x4AoxZ+ea>O!|ul&bnT z=a;v8e*34Lw>x&n_ZR!Q^a-+Z&~EAd?43c*S!3^+_lGgrapJpNIHiWZ1NMl#v`9rA z6HzPWcz($an^>h&uI`$_MAkbv_kc?Yl;DPu_WXo+Sh8Z2ti*z=eDyeL`obap)c(DaT_o{s~31#M37Usv_(ZkY}C z{)4??U#9w0iS_B3Q8z2PvGl3R+bTNTeXzTyBXKv+5=WD-r-~N4&J~sVQ+UN?tm9zk zy>nLY0Q42spKW}!uP((-#LA@sD?q6}VQP`Q$0$Pmp?MZB?Fu~@?klMw^Y_}So{_iy4Wk?*C4fNT?#rH|P$A7O!}bbgTC z#|Ous!GCAG{Ql{Cc7?1fwK9Ik^Ni6^yU*C+j&n}0A8CpB`7z)Fm`j|H_=GMQ{@ptq>Tz;hC z$I0=HFWheO`q61ln+l1dUgZ`z1Lc}QOP?Rv zD)juPb_bt+9uf1?A3-&V?2TW)VwT|LU`ymPkSF79fq%5S(0cJ~g#LL(^=T5fY)tkE zE0&&yuEjIGvqf6?nmX?fPwk>l=ZHLYQMm)xxLUE16+> z?}$3-rO`XiT_-8prdJbv{>XmCFDo?>-T;i2=L{TbVUBk!JXW<(na;izMx1iFUuxIz zu6UyLOwqlqUw4MSK_rMg!nXzmT`BbRl40kRE9A&K*pYgd-{RqOHR@xHpzckLLJt$G zM#hM9J#s#2u5#R6#SHVABlS*wW^;I_ocMRFt2hU_tmAuoBHIwhbN#t{cGmo-Mt{zp zXRVx&1TRQ?I4yueda3k=jGrQo!vmG|=b4DfDEWOksiAbanSyp6oAszsrszX|l5~Mq zAG?>Mrig25^}u9}z|7te)8g40GXK5=!s&Zr_szDQ60mI^w|52arycQd3{?y|qYEeP z8&Bv&lw9Fh+E3ssaSHz3Fh^hKiHdoy9&M&quGL1GK?C}YpA8brDRQf>;sfImG!=S} z3>CWn8~a4t%)z`me>(2gwOMiPQO}Jn78;S26w2#LIky4m{m&{KTy(WR-TGX17k2w( z(BaE;o6q#a;m`MQw6M1XYfJDjHO}<&Q%}0=BO~g`p0YGi`^nbmjE;3YtC~y8*nK{A zJj0dDzqyskddY9t^vcTEOIOxfSEh0Prv6*$rnZcb2lkrFCEI6%-XhDxHR>ir?f1<0 zLdy}+GM3H~LB~C?D~y02g(SM4=s8f{6#ebsU-?~%!+k%E@A!OY>#sJ$Ur)6r*ud(5 zb@wJU;(>Wt${{E##95jVCtAJ!osP8sWb-{Ts54f6yS0BC%{ZTDJJ!*6>YZb9d zN90OQ4-0#5;1m2v;litF_>`F`5AEF|S1g|V*z%Ew32L;KcilK|?b&Q}8$Y#q z-!Z7)Fo^kcVB=GVV&Hy8q8&}k$LgCRRYu^O??2jmXnsbs^L+8SJWj$JrbwEqn;L2Pd z6}84x^!eS(ME1aBmX}RnB1_rQ_13)ET5WG_dB)XOh^D?Z=)cHww@xjTW3JX8Z&WMn zc4R8nh9k*Fu#X+f?D2;1SYUJA7W;pZHu(Y4;qVIM$!6>PFjiFSVeU{KE|f=GiZ?vUM`rQ*8R%Hs7JuCucx3%| zjVO{RRY-iXYi7^KJA(R9#oQiwYeA+gca& zUFR89Mr`L~j!gd&b)f;Uzf@4jqyBDqHsU!~{c5kA`xyzFw27S$!k6;74^QEFbL%(u zzg?SyD8NrzE>QcgzuNlML?tKcJ&nKmISItOId9?C#y|Ilj1BhHsS>+A4u&1$C0b?= zEcf(z1BCY%$_yQ>a%ALR5K$*p4HnkDiUL`_ehxpMH^#%A`cgyY15bdr~X9A%=hw( zuJFHB4o+TfTTU}qPwy;4@;2|U)A>M@qIb1>ClT-ancElS9T8E|=rp;VVvwgM8S2Jq z?|<7Fy1B`)d1tzxu1B^qceS@`%SYzXZoZpG+(gtywQRnFW))i@KVtdYgja=S%<0Q5 zXXdggPvU&Dl$Vmx|=tIde)T7Bw%Z))# zI%()qxMBZ(U|1#NhHr<3cR#V{eL7`d*sq>bhOe-Gy;-9F#b|Vx}|m*+vCmY(V1V|sRC1R%jfC&KY> zt3Xi48Er^*jpwLAMe8|DOY|SGA@45@wrRSz^$pJ|p9kMPGi;IbtaE%3rdm4_N%ga4 zv0ozl0j|a8{fam{@I4#qT+~J3-+ZNw+w;YyasJg-kKLh9wP(RrTYH|HwdX4rv-ap? z_HA*tvPVW4(FQs8vjVA=M!&gm02&o7gvRk_YYWwTS{jVKbkdY_asbY#bpD%piD;MH zp}`wcs7rom*Qqc+8rD%?>#d{q`989-kS29*-moH@Bymn#A~+dcGTEC4s3TXZ zp8d>LMAiXqwOl{7DKfp1KI}_*AVW^TcrK9Uxcj|9bPJs`|2;?Kot|G$WK!wW!v#>fs~yCDMV{ygp4{LVHG^8Xsi+ z>=k3?rS8M&WpEeuD|P^JRsFa;%l=Wtx~h-V(UaNzL%p50H)kgR-;W1ULg^N7seH0uTI_>5!Q#K~yTU-L8O$=1Kx_%AI}Lp;yABEO@V zlog_yM4v+|z8*iPdUlK=@bHQk#4Ox%XrJ80oUsOh=6YiI>SYWzwc>Snav4t68Tq2H zro4%B%d)dpb^`Yx9g<~osC8ZlAJ=wsdRH+*k4{OmRt`FCu^PW>CEgQ&~{ z>lB=shaKwn)g6QCaOm-aFR3WY4#0gaz2D-#$a(5x)1DMRTbrsGTGXwJI2)d;`I`G) z+MT6C4F3mBo3*~L3FzTQ{4Okq_MP&r;MMc6Uz=q>Ci#whA&Z#;?2sUfjCNHAgiEq` zR&W7#JZ-B*2{>eoKl1w7+7_9+Vl&6xe`KBDn7zsp_*Lf>|IU2zB<7xE<`eVKF14ir zrrQ3r))=Gsi>#vL%!OA|S`ax`_-EEJuH!y33cqMnsB$E;#J((pVTqsNx?-=2r$pU) z9cV}9o|?Zc?T#5vX;#h!?;@{U7@iv2M{ymzOds}rDLm8?Q5Top;=rOc@ILj_Dkp|JHvH2mq#Zs>II%~i zb?l@=QGYI@h|7e}j5cghxrMnxO@DgMX4WwJ_h~uuyZm$6-MVWDPt}sYE=SiA?i$45 z?tLz`7J2*@MY5G)?Mv3bV>GXQ-Ke?H>39?JRQRSimPm;nGomm&5_#Inrw~o4pR`zY z{DCJnQj9X&-4ZpXfbh!TwbUa-$UJ*cBIJCAlDvHNvres-j#S3N)8QQyF|u~QhE8|( zd?>Ch*l`%znSy#@(#@zqz?kJnmSvUP3O>U8Kl@?~_$zYNi&JbK?T z-gD~!{+y|`eSaF;k-^o@XT09_84_#JRWP)+GD;z*>TrgSael%AJ|y*YOzZ3T|4K2 zt_2sdX4=Z+bFRP#HZ~O>u**J?c;bt?)C&KcCpx%f-2R!-p-BCakX@a}!m2%& zhlXK%!c`#jXD%K(dPk6Xxc%FeV9ZZmJfzo#3?+F8vhmLcdqE8f`Qhp+_?;W;;#YIs z?3q(}70Bar7X@Wo9~V93ehL{lXn`e-u*}PDd#pLDtZ}F9wmgRjjl2Oeuc}X88|)L> zs%1&s-o!JX{(aytA~y2etopirGNN|gVT*|&@a)iJK!`@oP+YaUu}i%B0qaR5%P0qS zCDs<*Vzb)S#vyyn{@PM|#0pUj#dFECXibh2KOtZWBRhi!M$9aI@zC_e_E3?~nq^VR z@5`!?gV*`QZe!xi;!r1M>?`=fu=JD&ZWvGi^admNCr$Hu`>%e&1r+MY#GbTr&I%MBM5ilSB9 zn#}R4_)ya9qXVB{jnzJ7oO6bZ@nh`|Ow48DB+p~KPy5HK!r6;_+7S2dhT79Qa#gr$ zkMD5cExb2sk9v!3#_05kcGGm+?{Znz%&yO!0}6ljIEyDr)GOW)_n`}rPi)K>+oiS~ zEyMUp#s^oWPSUz3uR>OC?kQzCrX_Vg>K5H=3pbrXA##xBrbpuDsXb841Jn^C8NdCw zwY83M1fnbD`uuJiV5Q$m`ZRYby^7s7C7NyTh8e%zDXu`&!e+ynz5X`x?{tb0#p~^? zbh%O4#Yf=jV~e-i9!zgcIw2*%l#y(>C=^a(isb?#ucR;M(!T#$m zhNpYTZyI#G5#p!Q!5*b^tao;eDKt@w9wS=WH@EFHiqmw-|-&_rA&W z7xwJqLHd>diImA6lIOgXjZ)7DJ6Vw&MR`l`eQ??v<=K0l%+#L71HDzMB`>4Ik&XYQ z;RZV7^<*2l9*;$i8}GhwiqNrwMT~dXns`N)JwVj3~xd3>%{v zct|=^bjA1f@0klW1#`Ve=RC02WBD4!*YjF3N4Icv%dmj1puUV(EzI>gMqMWSshbu- z5uuB(i4BNzuiKdP?~yB~`;MM#P9}rn`y=_O7*^uc^|Lk2`$-Eg(j6J#x5hL=-jFKHGD4r z^A@_j!#iTe#~S0^f5|p_e$POCmVB$)LT-T_C2{{G`U$>PM`_u=@Go|STprr!o>|%t z2hM*!?C!gnYBcO&BA3G5Sbz+9mfal1&Fz0Ue@9sEAuQUeMGMD#riruz*zi8~I!?Pf zWaE%0V))j`W9jp`T6Y)CaQ-YaHVXaaQ8~VgR#YPKdlY`+~;0Ov|2>7 zb8$HH92#suH{LCRt`$D%5^x)ebw`4?PkF3`J;&_0+LmDl6S0=v_h5ZQ|9so#&k?cz z())~_%92d_Ra-rNt$Q3mzglA0GBLY)XRMTfbO$kx+m zro1rPBioSr`T9FKeLT1?o03=GowZT@tAFQwcWfD!RJJbjPLz@Si?~Yia~}SlhI9JY zc}w7ZLF4?DFwmms^qk}8^8JSkEK&{@nhl)MOV1QNeke=5UH;syV3@2%ed-T^5k+Q&tvb^plXk_Z+PH@ zJ}Td;3{waC4|^xxu2qDf?VkOKn3C3rS6bd1XVpJ8D}rbE+-R|Y-+zeGFsvQ^0#r`*frs6dS{Ry|5kE&WNx*efc#&MLLEB)%vQ{= z`ls*boTHH6zX`6HqEj2%e03~CnSa`{ibp`rzV-xLcf$j}w7Y>cLW{JQd}*GQ`wC=B z`~o5u@7K-pv2Her9Dan?sn$O2rf+w!DOlcBtb19FG~YP42?hFZ#8u@to^tZ4Rw8Yy zn0)L%6`V%RO`S15C$HjFt>6>W4^*^Qf!?2qFlWt@`CVH2nrSz>+gdr&>AZ*H%{beR z>C79Z6K@!w6mDwwYALecw!7H@@8_Jrw{&+gHeFZ66UT$$T?6Vu_AV6dcvq&#$Dn^4 z&xh`=|CyvI!iV=%PGxaukf@hK=aPHH;-YPPlL;P|s8XNOqSIM8_aB}9&~_^*^E389 zw=MSwRzDnOXDxXi-rC@EWZD(`H{bI-bjY4tup^%3L@S)sx$gH9ESG7kE< zd_(hQZSNK;u7C=dFe_`l4g^tJ%lyj9%t7E-UVnBfq~*ju&-!Ui5e7lB#G1rvS#8bN zwI`dkCPbo~X@^IolP03{XMRN{rcVyKXl;~v;Hhz3$t~CTb(@f3!n0`ce#8LWAHTy< z>=e0SIsmQuk$qCLh?o*&J)6&Wp?P**wOvRHk;B7xY%CiaJ51BnQPT>8* zs;a2+;NC9vMx6v;q(KlQDBMv8j2{fGWX8DMednC8~29s z)&Y1qJL z-WxJRP#oJ>IT(^J7+Xm1~}=J;|QdhVDP%Q>%{ zh$Nf$AnALDH2bqyj>0jmmHBg7hd8yb*!oUvUOJ(H7cW>+Ca(LV$rhSt$tw0OU&Y=^ zP8}?3+cU3Mry%87-WcX{omO*}L+ziD`>`7ABz|>}KOS^16+B7NG~UNj^r~0ThdN8N zV?VAh-w}V=9V`P@K5|gqe<4lo{1I*bt$`1pp79PIFyqHL#@wI%0%^VYgs-8sceHh% z-@j`%SAB9sfp9jyA2B1@cJG)b0wg~Rhm+?<_KAjxgg7m3|FkcU`xMbBrX0TklS+}# zaBTl8Z!+Zxtev{z4oo|gcVyC?jm0eQ%KXqILvQ-KWwpIeOpEbG&MOA>;lQot35rstF&MG-o@qAe2JgstcP1a~lqfb!SHSU}!QRH# zXF;$0^VUDwol`LS9P+08n_Jxe9MS+9zg?v$W9ffc3(U{(!m#z#*01e+^yw93d8}uh zT035;(?sy>CO$8}!e6p8Q{%OMYh7~~E%2e%rBUqdqDpMgA|-vme{9M4GJK&&Xu0<*s{!=Jc3>yT@Jw`9tE0 zX(*@pN-$CZB;tu&g@?8}jXirg<>yRuWyIS42usnQ^LohYP(s;#!yaBE`xU;j_47%u zuv_>!Uv1xH0_#TQw9N^vt8J~fH^>*%CMNW=4O-8;4vJK*d+L3kDfaSf(>wHRmD5iC zVzZE27uU4r=)rhs9P+@P=GmNwaj5)rQ_%T%{@I2MI+kqY>j9e})xYEXClu?|9WrKf z?vwraMNaWEZztZv`%zV{m-}3j-x{A~uM98x!KLJ6@TYQSZ0a=oafWD|p&|c*T(U-_ zFUG**uBjGG2ZP4?)}SOVtFhx;)UGG?Dt=_G@Up-=T0;37_dC4S*qaN_L^}`)?s{1) zG>_L*pBqp2JD1)Xa%t;Bb#&TgU-mm{|FGw4$DHN3+YSBs?R9XT0e<&AqvPlHSM@3C zL+}o92Yp zCu2Ch{;cblRxtXw!dK!H6zv!uW2W94RO1_ep+vW=KYwp=vu6`~xKalXyYh=Re9z(u zYBhS>@|-n8OWto%0)DJ>7$2D2ePv^>w=)J!$U83Bhobl46zaBCpDF14>=n`TuI$F3 zW%}>E$-d8l?Yp{W(V)CbWe~Jayyk2wH0+XT(F~ustT}58UtfFGt+!#h7a(mkPm}hF z#``>d+`QW-^DDHZLWK;Xlj-co#_1U<%5!_^YWc`J=;+OE@q}Zk^_%xUWDm%n@XuJS zSN*Ym%b2epnzPe~2%S6Ik}?M=UU}@Aa*N+uL7VpKIwjVd|QUYsu7H$P5%>Gs<9ZszOrs}n`^@0=fgXe%ezuMA<0foV@X z#~@=*4&EF0l;;_#%iK-^?>*RaSv*Pd0RVl~*WVC2rfzAH?^7{EY@Qf+2 z{0*@m4))i5{q_0*z4qUNoh%s=<`(+?@IB_Xg>$UXpU?6UZEt%Oe|c%tfNdD#ug$?V zu4)c0S{r{f_WBn)s+F~5xwpDHPHMweOV{}#xq18S`!({sbPeSzJxVT*&GUGQ#g!Mp z+Tqc>n)rMPT+3qgmiN`en>cBmSaux2)LiNO>!0V1ZkNZUQ691{_3FFJ92+^#%+w#_ zc1ffu&FC7Eh&kKjT9$|^$20Y#)A7B9;_av6@5(;s98Ilz)W4DURm^MCch7PF?QDMA z|B($L3((Kzf-&l%CFUtBD(A;xi@ei`6=l4)HB4)qebe&yZ9Xz^Eg6QZBWGui`E`%- zYv^4Leva;h3HCER8Tbube`l!PJTOjxyUO{9$gJ;On&-{PEspQjwUTQ&Uypd^{L(Ac zn$zJabGO#t@9psC{j(RNy07@Eavm8c*%~?Q{+T7(ulnbG)8{8f{W`kx-|NpG2S)HL zTiUK@$aQem#^h2A{_VL|FaL~FXq?Wu$;(Eo8xBiUvo`~4oX$T z>9VE{h!_0A{2=~M)l=_W=6x*eqVp;#b@k8f8aobR2c>3z-~6eY7UO(kqkn9xrVsU_ z00Zv_Z@(EvI}&&guf`^~3k(nJ3ehr9&>zm{J^O_-o>U3&nh5vO$5e8?`E9k{?Ss$H z${B;)3>kMaT&%3r+*prm#2Ql(PrPA|9Bg^R9ubB5(uLP}H}kOqU#HHer_%Fh^FOZ} z&gdhJb3;e^LEo{n4t{U{Yjci#u1w)gR}CXnc_wyzW?qVG?s1ap?KL0iJqBFObpoe7 z^*nwhcNA+uj>&7rZy#GN8(Q$b!%byepe( zF3{(OZ4$CV9mSV}5Sn%4q^<{W9o$I=D-g;;2y1DtaTLM{iJwIjRvs~3y zUV0XN=lT};)>U>Cpm)KKuX?%djjLZ>n&*0Q*6|WuN28C+%KY7d{`TL3RWuyue&C-- zGd>wKGQ4+2sC9eQsM?F7{^$OT zx*4Lzto8L~b+c>y@%%+gj%}>h0U|8gPvxi6>fFps)!ZNP-ryA-pZZ4Qe$rxjd#C;= zXEOC(nK2&Y6})=wfyH}b_sofTv3wFi;`xxpd1U%g*=eGJ{HC#6CfDi~F=p)mD+gtxU$Wer&#Oy3l&se}|>Q?*&H(cJ*8P%btes?eF|9L-3=w>~0Tr zx4C_Xd0pTva);#5qvE-|;u4&d6ASXpoF`nc<~=#u(F?93oeyk{`1GYtGe=|Y#bWZ* zQrtVvd+#rv##QYHPH__$=Wo$^-U;iTOR0WRWAUpe#@p;?d~TfmMezI8O;~OJ;3xzc|%rj{IJ( zwYl@i&VsvbQd25CrIx+~SLk4(ZsPuD_Q`wL)WIX|URNt}y^I-LXHefi8O9->D7~2@ zCM=;c2)qRoYgal3$|z+ebm%;>{1~|iPJAaXNLBzVzU+MG2w#~YLh-8sj`r?_V!6T4 z)l&?)MJT-6nq|Dto^zrz_8g+}xwrM#(_L*yS;nVB`WqYNu3;y*i zoAj$&{?>Z(Y=3XhylsD7GrT#x>86GW8op_Nv-PN9$UUhJOP+6fr1tnlleO06I;WP} zNPQnSQc&0Q@7O2hY4q?oMyzRj9zPU3NBxz(^9b!V^ONvgb63Mh_PjVKk5a?vl*;)M zaX4dUC|37MWb2Vyc7KvNjJ|wahf_ijwcv5z673#Gfk*3e%h%cA6rm}c6>X$Ew+vff zrfa^7Fvq#_%I_Q9@k4u*BBLsAb-b$v4H?f2^Iddg642(wpU68hE}3p6=S#+y%r+jn z;th6o$Gt{mZahn?h+Vnp?I8z4ruf)wQGJ%KR>+$Duk&5R1OLx=j-~IWNglSqR^ zN2ElIU%vG+1NnVEI!{K?*8RaklTTx$j2AjaU)Y?~?(W#k;E9Z0Z5B3N2bPQo)J12ND{Xk@`#j*tn-f1 ziZ_VjA*vFg>~^Fm)amtB$L#jUrhh-MxQ?Cc$`wi{xF3|IA871NV8f z4j1g1=LbdP1&kqSpQwbzcxbEh=dKuasC>uD4891K3NH42-T3|&zbfABwmNiLY2*Z# zlAS^RIB8H7Iq{mJW+=Rj6Ivq|?{k_89^urQ(cjkO8mE>5^ag!Cd@3``$&A#EI6Dzp zignOvmT~ev?AVrI`A@j4T;wKhNW?q@wTwIJNSw6>vJUMaQSBsK6&ua2e0$k zcq@DQ&<~op`Y z+-Z|%)tUCuUsbONJYP<~)tf=`lRZDTT|ID2^(eQR49cG`K6aEsC|}}@&ju@#S5st; z*nQcm4$Q_V3+(#;7el58eW1vSsPQwKnJh4~<|v@dS@K~n=`Akl^IG8_$64`|Hq9$O z16ta>G4X=`Qm(H@_pyXtG8?;ZxORW#&e_brGitTwT~%5O2G{Wz&x_-A=A^%4tYzs* zMYic}cw(^+Rs@b-X9hYSsJ9|1jEdjQ34kr$oRj6{R$@NV`NUwMiv?eZH${xG;CX!I zYSvl1DnV|4^SAYRtM(?81voGF)Y?4H(%0SjK94=trEhIj*NrdM$8IYY+B9xsE`gJD zO7zvobG&O^EXOg3nvs2vljJSxywU>C^h`@^3H=hB6{OrGaX*u!hj^E(+bYN}1E7EyAL^SrCdluq2!ZcLq7(aUgh8pR)sc6ZDdA>Y7xq{I}& zmK@9Q=;{pDlGSH<{=!HYzY!6z?}M_q#d zb>Md&m-;lG0Dgeu{yZz7LP5M6$DLY(Br9@M%MU4j9M-L$GoP2O)uiFtz&&I$RpWeO z5;A4U;yRpv!Dd^xzdJ}AJ}@07Uc1=0I74qPcT4a)>t_0Yt@g|*F>e|K_$_;b@0_0_ zfArr*N!`yg|6tF&x%K}HPqpEWm_3hO@LB=*5f$1QJ;%^0bWohoTdOp^&rdH29a7X` zeqrmce??C|GZSym9(dMV#Z~BCF4MSR!brt-1eS^He z+vs+EG2>!WyRMGTb}ew8GrhgyN8j^?SB(!w!~|8S#?Z$|#;DgVz*okTZ zvx%EymbsS;U$Vw}p4M23#gSWTMMp+8_I!fn#}@NIODHQ@6CV-_DPxO_Q1L!6$oX{M zB)WKMW7YL*DCm6ww+FAXz9ULDeFItVwRKvd=_>1ub`Bk*-L|ao*{O9?)$Ng8d0|&B zYVJClUt8GqYX~hKEVzm~Q)eMVV=7j3G!!dDSNY>1PJ}=43V;y$9}Lp|+_Z15N4(d> z=I$tCP(K$fbQ{}CWJ_8C&8`kEw`jG*Q)^+L%7as#fRPnOwlKpN@7HW)?ejf(hejzV6lq**MD)01zxRF!^)L|INb9oxYgPeZZ#`0c z_mo?}-0h|=?48+}qfKd^wID5(t91%gV?jXz2|?dU3%^HEa_-+T{!QfM>)z~9`wTJDG^^Ap4H~ao;-8p zE4?|QeSLlU?vO)rDauZ>nsq8^XvC-$#~x$xuhtpA?@z^8Xxsy_&Rnlo&9&w(_l$nJ zwN|&^k)P@~?4J2Rctl^CSNw+kMaqfFu$yE+@R+^!!(JeKAZdbf#tS`zckRC8!Fq9) z3z4jQ`b5Q8Y0eYq#dU?J=d)5r=9|U(9{!YaHMeb!5@D3sf605WTO)eLHR8{;DKiQi zRNC+!>)i@;sd}u_8hxB8i1QRb$Y(4#>Sv?YUH|2+`L_p8&x$WibX>ai$)!IYct!M& z+)?%*gX6wVS_R8+emaW4 zEmh}QM|?g=$>UkPN8Wb~k2Q9bqjv4*;`z8>F~aP+RP#rmTYBfol%Oi z?%A;?)Z0O(nq8&rf!E0j^g-OSZ_yU3_mO{*c6>kg_g>nS{LVtRb*s~AU0TqmgHY7MXmK9j`UntD@Hrqu3Z&tjIPHgN0XOcZ+d%jw_Hp6 zIeZc37H6DKALb0ibcK1U(yP2%zq0I*PsyPyHIkU2!rFOd!Q;t`t0>nw7_DsmO0wrq zmsgRqrit|5v3#;Pidss^q{C5YA$Sd3aS|`5>T$Y;x(;91r%u?UV~2a6+I^)L30dAB z#?F0s%F8kq@uIYXZ;5A!g9#^%zjNJl5@zcP?x}A&b!3s?y-lrjzhgk2=)Xb4vT!SbJ{KPa6 z{#@D7Db9ZVJlfv+T5F3Q+Blzv9*L*-=8@r8ycyLavE46EcPHfg+}qAtx?p!1S6()Y zS$2!8vb#0cuX_ButZp#HCCf&5UAbl%^cj~OdCh5%BlKJqnc;o>+!Bo zbadQBx9*O#jDuG76^;KJvjv;pd6xNqs!rs00Zk=`gjy*wKO14MV#GuKDOJkd0 z!{Pt%oDg35B!x7w#;Oc0_J)rK>qBu~=Kac6Bx?iL;@M-mZT(^2(C@g^%R9gI@cZ^X zwal}X6WA(7yh(Jk&Zj%)YKNB?G^`VBn|BYrwr|vnHLE#PK6+kNc4d9ej_L|vil{V4 ztfIyd37L_t*~7xN%_ERK5qspijgG2IoXnsu0J80W4aIV7J~DNZ9$op+IPK7|X#4h! zaPIqN8TYFz^msP+Ud})4%JFAhGv_BZrxB7QH6T zy`4Cxm2Oj<)wk-Vdc~3}@xq*G{l&0{|7@ogUJw7jX|IZqAc0E_wE3EpF;hR`-Ou2= z3^|*=%XRNtRarvEXv#VGeU@ktR+L>Hm1f854wszpYolr|T(ugAhsZ)Gm=&^}iUV@{eN*~+Mc#~k|Wob3`Ma%&r?{$Nm~ zuDGm|VblEL8lSOzJIv$iAb&r%f1wAvk=o0jn#}moayLlsuZ=%4Hgrt;`s!s_(Ao%f z^nu;ZIl|gXa9b%`HHwOGW>;Bmt@EM%`k{?dXGZle7L(g(~^kC8{xYGOw{ zw&${}uH_=D(wBavjjeZim0fo!YP|V*+y^!f&U{7Ov6Yo~ZO!0PtVn6^5>4%G_>t7uM(dx-C{0f4k&*r}Ji`tdU70y*PE-OLAWkpU>rZQHeKkV+Q`_f?_WWS_ zI?uG$Y{#bkmb$6h6ZL741(EIbW-oKyRB$syz<%hQC++(|eS}Q^+0{|Oyt^LQSi&k_ z(A&9^>KJ{|^7-_IN3U<4MhP#bimGeL(vK~DGMA-U&in6bD@IYy>&72{F)cTJcBEJT zWISH!J&t7qYHvij&^EJ+)!Lg$)@a_BUSp2)V*jh>ko~ICpC_`z?#j8lve)yi22~ZoXGHIZ?9hDs0l{x;bAVX#zbI@hfElS94G+Pp9`&83jD7&`a^H`X}0`dbwaNi9EV&-Ob#$ zsWk*LI$KH+Kbn&G>*>nUBi!rMs8g1=t#;p!2afNDdNv-xsz2||ZMCi8(Otab^TRpD zY~jhU@WBB&4pH;`c&VgQP>9S+$O33bg+~~RyS-m%gK^YN&`&3Lrp{D4mzI3^Zq>@!R`Q--j>lKSciXmF zqt3&GuCC*?y%jHG%5__=DcjFO;`x01_1em4LQh6+mf!F`H_IGghed^>v&eH`^MRV? zOtmQHBd%XJn?aec*lq@8TgoJmt2x^_corj9Gu=Fcg zIT;-P4IW%%a!O5*=O+s2-_=>2BiljP0ayUE&$&~uXW$t4G+PfIoAeQZHJGl)gI|>6 zur;N}kx2`$ zGQu4tFYH~3$I8DBd8=s2w%H53K%Iou$)i^PZ43$eIj6(L5tVt->a zqVBq@5b?#lvh7;O{AOty&q9GUx95SGId^ITDnZHXWf<~^7DN{LR!a(c48WMVP|`D zPpdC#3l9qh4Ypoo?_I5eW2}Sv>&L^qjnG+&6V|$FS7WZ@Y}<^zZp-J;eqPGgQeO6A zh7V0^URKO@)(-jq+3H>J)7a|LSD=i``;az|zSV8@(8#XEH;H$8bnmQVh2?(e$vK_# z#cLY7p_cEa;%#bmb%gD%`8#*aCjhIHt%3EUX-jqMvf}fCrM`?<>Lsq{5)wpi#J?{` zT+hc=TY4^`E-s!o$2;OC2jsFU!s*<&&=z}dWNfcO)SP&nZrABW-S(P$Aj%k=Tkqeb zxLS_BInA>*9kp^2`sV#ge}XYQy^xDGmgbVu(TUG6sKmdP_Lboaq+azi`~< zxQ|pv{>J-`C*cfiAnzr<(Jdu)Z*w9;nKtK#mV9^oeO8*<1^t_+NTF}jtniQ;IkC;ng&!e(3unOkzL4{46m-BT*1rgsl5MPdmwGu z={n` zsS3eV9Tln;lyq?IJ53*ccQoiNuZEDh!rRapcJhi}nf&%!guq{t&-3>@O-xMnnW&ji zkBEwB=)s?i^4!()g}r`ZE8x|%GzR#OOdD}NWkVIW6!zttVGrE5v8X=o_T1P&j(9GR`x%PmpD0tM^WDGwM1;UxdZdviPF~c#P#qdanCxgx_g{w zDVMhy>)RBgy+3G9v@E)`v{%tuqDmX1eQ3WsF`e7q*}U1Q!qR>|Hfa;}FLYl8CttzQ zU_m`9Y^Xp{j@1wY6DJJ~{^!TRMm`?2;aAqyW_Oc~N9nMEurgy@AxE<%P~ybkIDGw# zdqPi_BX<AYBsE6=>$wXu)3i$AvG z2umuDz<1aFsZExt8Dow+&_Nv{S+M`*6aCuWmASOGZ*0D(`S*df;d&dd7DOi=oY&6i zjRpM=B@fIO#Dhj(Fr#Cu!1-wK>%qsd?mpJuEPI~?#ktW%cOOlSq@{|aR+>2meCbmU@bz2Oi~1qrS@_>ihZ3`yOQ}9eqSDC1dt6FUjl^8ym8)Kc;xv z>3#N8DCZ6BBo%`K;B|?HgX|=OFn8?4BUmGTkz0FVoJPe4)oMW6x*y#3gPk5!@!P(f zI#?S2bgCbG4g7U_g~s%l|9V_6`V(dQ{tkZC|JSj|yt+oz?y1Lj-u6~IqRVJaA-NU{ zYOV#*{>E@S%&oyLD61av?akp^&JdIy3EzD* zd{&$_4u<+A$|sStUx7}A{ zXV2PiY9&p~bdD!=8R)c`XNAYp&VJ5(cI9uiy$9_ty9YMU_u~Agv;a{>k8{N=^}lHw zZat4IboQ9Vmq#*Ybxo~ImQ&2n+Ot*_btt&m-nT|`# zi;$9~m4G!uHY8>_wf=LY;yUx6*Q;|3mA@3{a}OY_zJn?o0D2ZbadqdWRLV9a`|=^v<0w{=R-rfeO#s862Q`U`usH(({i zjjSfTcw*5{tkCZ*2SpuaV)VMrm&hhLnKIi&CLA0TNKkxXxCb1t>S%s%-?+x%Q|=g! zd;Z!!0VcMR|9p+g|!4%h+<@_b8Pzq8!`0c8Gl;%O1w?xr8*hGJdCGHte>ZyKH!pAYu$=T&md04vHWUk9w0XjLd-@>^^P9b*k!IBY$a>REBj#mv5WlB zlVR0*8r$hK#Zyiv>XTCI=QpRbnX(h+w6{4$8He(*qO9KEH0nU%slKPF|I~H{yA`Vq z*-~l}r$haE&7M56-?5L`&D^cVul>F>WPwX2J)tO^vi8#hyk!RNL9?O;8 zfdwu33}*YUHaaX@+6cLV6%)TIHUKN5gXuPv2n)x}3Rc?fRO5xzPH8WKhID_7xgbS{MDT2&wak zb`k5Y5wbV2?3|Yr1E*E_Jy;IHJkh>dLpIQ|YkKbOVwY=oLrHNWt%NOm)jluzU=!MA z6wD_!iyy47Z&y;c|EpEBKC!kPaf1b-zI@)I)U!9(1+6pp6YplG4+rY8PU2SOr?7oj z@e*7YS`xk+<0n=W-UYXTg~uEmwdHo8YOFzJ=P=fpC$-{mBENb$@Dv<^{71fE4ePv{ z_#tMX@8MhQLNqp3Ja!l@p#g-udu*S@Ty{^{BWwRMP;)g6cQtp_FS}Tdl5EJ+R@etGt#x@Z=gTclledFXNSRM; zMc!Q+1$H#YgdW(OS6LVAIL9|*51>D{iwzx_Jy1r6dVQ33du{vj3(%L6{*wG482;Tp zA?AV>d1CLWBu7@0xCYS#`QvqK>sZp|Sk?1=YaKKZ9>=4>zbl`5*37uH)!f=VF0=-I zV*F9m_mt@e2A$o34}_s#Zl341Jf83SI!+^1t@BxBo^~Ij z-Zyi1q2FFt|9;o|j++wM{Xd&86cW#=>93pkSclf8$M?n&>G-6I9rjl4^$^+kdv~RM zY@ZG*dB;{8z1`kI-{%wmwZCQz$xGu+p_@JC!&!0ss8#rPZ_QsLbCz);j_GLIbj}_h z&4EcBA}46x+Q;%<>(_mojr@Q4lFaHX`O5uW#XMTM8T0P#;CA$-d~EdxT1@Aki430Q z%*rSZQIkN^4P`m&+^TKunQfcqa-zgfFKDbl1 zj<~F*Z|*~F>fb5L=)X)apd|yzUiQOxi(M3UV$0WyT~yl9V>ZZQ7inj^_Q<={_x!tT zvG^SI+Mj)v!XAg+oNr1=*6v)F{2wE+`X+lP=d!DI%L`JVK!mrY$~v zaQ9V@qyC&uo*J5_EOg`N)cB{w9Bv}-o@G&30UkW{;{)-ZyNuTywucK_cz%`X;MEhrw zwdZ$%Z7O>M(*{!LrTv}G`tIAhk=grhz&G{J0sqEU?B*!`30&2-com_asx$DFWeg+x+Ic_P#~89NMQ3%?D8{oPMO0K;bN|(O>(V=y>q*Ze3KCHaEv6J&J0j_|LcK=eALt;dpe9GkA`uB)`!>OIYrzx zTKN5jNyavdv^`%rHYCSski*m5b!--A#zl_HjT>hmH)Nqe8*~U~OhBed1`%tjB?!3< zk3mVt?1qv@)@SfwaNIqM*Ol^^o7RK|-6d@=P9}4@QS>J-gy$A?fYQRFhOC_!QN?k|a}m1(+0J~Rx@&Vu_RG9u6#Yd?a-Qs&SyW${O@~cbO0knv zhXy$Y?Wb34?k+m(wPG$Hs$PCFWn2@xq>PU5YPECcTEc&gZg@>OcSMB73S zd<;nq&IHTi7hQyp6Hg;eg6rk)W?BUjutxaQ(wpp6Sz}dEiNLjJ3=95w94orud={L~ zGqZfiHL#aj#NV{?#= z|M)b*_3iMB-iqydgrydwKG5p1O3$wzYd_D>L*SRA=w}0Vfx^FTYozF?5YK)8*zchr z^Kj#|_Cw8iq7(m~54I+(=64U%f4Ol(?qLQdsQe^LP@Z|0QStpsdFA>oR&q&?zP8?L z&dSy3spXX5=61+(N^r4~`}^+QvyyvOV$a6v%kEuRRm<5%&H&_-mYbbzEUn=C=BfO} z{1qzCDb^+A!)I51W%-ALuFvD%fxoss5U22_`@yCyk+|O4*z3N{-fM))bDHi!UfY4y z(I{uw=GVr0^v~s^siLf7>E`u)&$1hS+L?Ih{JsMx)!TVKGJlcMgl6y7NVd<6|9`e~-fiTW%6#r+fOd*j;nVsL&*pQr z5A73PYp2&)UO@8{uv=egSS zef1@FQPQLDLoKlj&wxI&=y28tzNhLl&+F8>Sz;GU?4rN#R>dx`nQ}Dxvgh-9JE!;A zCKmS+*8oRDO;ak2`zaQzmh-RKv`VL3?749Fv*zY^yjD`S{fL?P-yR3MUg&2;iSOjP z(W~i|`%s(u7wZ`d4{Pm#t^ePw<%ecV;XN!jeyCpLBcn}AlkFlecZ|MMw|P*n1pM&S zGw|PXY52jW>R*BYoJBukEj5$Da@HvV?Q#>96tJHurt_2utJ?(%m%y z61^|6r$$nrc@NCVyM5co7(I2j#|=ZMiLQFT-1Xr+q*r$Oa@WVyT_4V0M6TcVn?6cA zjX1ZW&Z=|YS|_*6KGai+w-LYJ4u@W&P1-(*#>o%u^I{B91S z>cn@KJK8SO9c{JU;uhJICFVLTA`Mt?*M~awe*W*kB-O9%kFdqqZgX1nmQ@>P&M&4d xHE)lchVq}K1oQ95Uay*dMh3sIUu!;$Y+f~%>5)x;yHxgBD*I%fyj+!i{vYsv0672v diff --git a/Public/Start-SeDriver.ps1 b/Public/Start-SeDriver.ps1 index 960e615..ce6489d 100644 --- a/Public/Start-SeDriver.ps1 +++ b/Public/Start-SeDriver.ps1 @@ -58,9 +58,9 @@ function Start-SeDriver { $ParametersToRemove = @('Arguments', 'Browser', 'Name', 'PassThru') $SelectedBrowser = $Browser switch ($PSCmdlet.ParameterSetName) { - 'Default' { + 'Default' { $Options = New-SeDriverOptions -Browser $Browser - $PSBoundParameters.Add('Options', $Options) + $PSBoundParameters.Add('Options', $Options) } 'DriverOptions' { @@ -73,10 +73,10 @@ function Start-SeDriver { } } - $Options = $PSBoundParameters.Item('Options') + $Options = $PSBoundParameters.Item('Options') $SelectedBrowser = $Options.SeParams.Browser - # Start-SeDrivers params overrides whatever is in the options. + # Start-SeDrivers params overrides whatever is in the options. # Any options parameter not specified by Start-SeDriver get added to the psboundparameters foreach ($Key in $Options.SeParams.Keys) { if (! $PSBoundParameters.ContainsKey($Key)) { @@ -93,17 +93,17 @@ function Start-SeDriver { } } - + $FriendlyName = $null - if ($PSBoundParameters.ContainsKey('Name')) { - $FriendlyName = $Name - + if ($PSBoundParameters.ContainsKey('Name')) { + $FriendlyName = $Name + $AlreadyExist = $Script:SeDrivers.Where( { $_.SeFriendlyName -eq $FriendlyName }, 'first').Count -gt 0 if ($AlreadyExist) { throw "A driver with the name $FriendlyName is already in the active list of started driver." } } - + #Remove params exclusive to this cmdlet before going further. $ParametersToRemove | ForEach-Object { if ($PSBoundParameters.ContainsKey("$_")) { [void]($PSBoundParameters.Remove("$_")) } } @@ -116,7 +116,7 @@ function Start-SeDriver { 'MSEdge' { $Driver = Start-SeMSEdgeDriver @PSBoundParameters; break } } if ($null -ne $Driver) { - if ($null -eq $FriendlyName) { $FriendlyName = $Driver.SessionId } + if ($null -eq $FriendlyName) { $FriendlyName = $Driver.SessionId } Write-Verbose -Message "Opened $($Driver.Capabilities.browsername) $($Driver.Capabilities.ToDictionary().browserVersion)" #Se prefix used to avoid clash with anything from Selenium in the future @@ -124,7 +124,7 @@ function Start-SeDriver { $Headless = if ($state -eq [SeWindowState]::Headless) { " (headless)" } else { "" } $mp = @{InputObject = $Driver ; MemberType = 'NoteProperty' } Add-Member @mp -Name 'SeBrowser' -Value "$SelectedBrowser$($Headless)" - Add-Member @mp -Name 'SeFriendlyName' -Value "$FriendlyName" + Add-Member @mp -Name 'SeFriendlyName' -Value "$FriendlyName" Add-Member @mp -Name 'SeSelectedElements' -Value $null Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeProcessId' -Value (Get-DriverProcessId -ServiceProcessId $Driver.SeServiceProcessId) From 9c1d41e626a534692c462910b911dd16456e12a1 Mon Sep 17 00:00:00 2001 From: ili101 Date: Wed, 12 May 2021 15:25:52 +0300 Subject: [PATCH 2/2] Add CommandTimeout --- Internal/Start-SeChromeDriver.ps1 | 11 ++++-- Internal/Start-SeEdgeDriver.ps1 | 10 ++++- Internal/Start-SeFirefoxDriver.ps1 | 10 ++++- Internal/Start-SeInternetExplorerDriver.ps1 | 10 ++++- Output/Selenium/Selenium.psm1 | 44 ++++++++++++++++----- Public/Start-SeDriver.ps1 | 3 +- 6 files changed, 68 insertions(+), 20 deletions(-) diff --git a/Internal/Start-SeChromeDriver.ps1 b/Internal/Start-SeChromeDriver.ps1 index 219c1a8..c92a81e 100644 --- a/Internal/Start-SeChromeDriver.ps1 +++ b/Internal/Start-SeChromeDriver.ps1 @@ -15,7 +15,8 @@ function Start-SeChromeDriver { [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, $UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout @@ -101,8 +102,12 @@ function Start-SeChromeDriver { } - - $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID #region post creation options diff --git a/Internal/Start-SeEdgeDriver.ps1 b/Internal/Start-SeEdgeDriver.ps1 index d47b71f..18f3be8 100644 --- a/Internal/Start-SeEdgeDriver.ps1 +++ b/Internal/Start-SeEdgeDriver.ps1 @@ -15,7 +15,8 @@ function Start-SeEdgeDriver { [OpenQA.Selenium.DriverOptions]$Options, [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout ) @@ -75,7 +76,12 @@ function Start-SeEdgeDriver { } #endregion - $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $options) + } #region post driver checks and option checks If we have a version know to have problems with passing arguments, generate a warning if we tried to send any. if (-not $Driver) { diff --git a/Internal/Start-SeFirefoxDriver.ps1 b/Internal/Start-SeFirefoxDriver.ps1 index e410cf2..3214043 100644 --- a/Internal/Start-SeFirefoxDriver.ps1 +++ b/Internal/Start-SeFirefoxDriver.ps1 @@ -15,7 +15,8 @@ function Start-SeFirefoxDriver { [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, [String]$UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout ) process { @@ -56,7 +57,12 @@ function Start-SeFirefoxDriver { } - $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID #region post creation options diff --git a/Internal/Start-SeInternetExplorerDriver.ps1 b/Internal/Start-SeInternetExplorerDriver.ps1 index 6feedd4..066a761 100644 --- a/Internal/Start-SeInternetExplorerDriver.ps1 +++ b/Internal/Start-SeInternetExplorerDriver.ps1 @@ -12,7 +12,8 @@ function Start-SeInternetExplorerDriver { [OpenQA.Selenium.DriverService]$service, [OpenQA.Selenium.DriverOptions]$Options, [String[]]$Switches, - [OpenQA.Selenium.LogLevel]$LogLevel + [OpenQA.Selenium.LogLevel]$LogLevel, + [Double]$CommandTimeout ) @@ -34,7 +35,12 @@ function Start-SeInternetExplorerDriver { #endregion - $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID if ($PSBoundParameters.ContainsKey('LogLevel')) { diff --git a/Output/Selenium/Selenium.psm1 b/Output/Selenium/Selenium.psm1 index 06d8609..296f863 100644 --- a/Output/Selenium/Selenium.psm1 +++ b/Output/Selenium/Selenium.psm1 @@ -1740,7 +1740,8 @@ function Start-SeDriver { [ValidateNotNull()] [ArgumentCompleter( [SeDriverUserAgentCompleter])] [String]$UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout # See ParametersToRemove to view parameters that should not be passed to browsers internal implementations. ) Begin { @@ -2277,7 +2278,8 @@ function Start-SeChromeDriver { [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, $UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout @@ -2363,8 +2365,12 @@ function Start-SeChromeDriver { } - - $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID #region post creation options @@ -2406,7 +2412,8 @@ function Start-SeEdgeDriver { [OpenQA.Selenium.DriverOptions]$Options, [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout ) @@ -2466,7 +2473,12 @@ function Start-SeEdgeDriver { } #endregion - $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $options) + } #region post driver checks and option checks If we have a version know to have problems with passing arguments, generate a warning if we tried to send any. if (-not $Driver) { @@ -2524,7 +2536,8 @@ function Start-SeFirefoxDriver { [String[]]$Switches, [OpenQA.Selenium.LogLevel]$LogLevel, [String]$UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout ) process { @@ -2565,7 +2578,12 @@ function Start-SeFirefoxDriver { } - $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID #region post creation options @@ -2601,7 +2619,8 @@ function Start-SeInternetExplorerDriver { [OpenQA.Selenium.DriverService]$service, [OpenQA.Selenium.DriverOptions]$Options, [String[]]$Switches, - [OpenQA.Selenium.LogLevel]$LogLevel + [OpenQA.Selenium.LogLevel]$LogLevel, + [Double]$CommandTimeout ) @@ -2623,7 +2642,12 @@ function Start-SeInternetExplorerDriver { #endregion - $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options) + if ($PSBoundParameters.ContainsKey('CommandTimeout')) { + $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options, [TimeSpan]::FromMilliseconds($CommandTimeout * 1000)) + } + else { + $Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $Options) + } if (-not $Driver) { Write-Warning "Web driver was not created"; return } Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID if ($PSBoundParameters.ContainsKey('LogLevel')) { diff --git a/Public/Start-SeDriver.ps1 b/Public/Start-SeDriver.ps1 index ce6489d..fdc8457 100644 --- a/Public/Start-SeDriver.ps1 +++ b/Public/Start-SeDriver.ps1 @@ -38,7 +38,8 @@ function Start-SeDriver { [ValidateNotNull()] [ArgumentCompleter( [SeDriverUserAgentCompleter])] [String]$UserAgent, - [Switch]$AcceptInsecureCertificates + [Switch]$AcceptInsecureCertificates, + [Double]$CommandTimeout # See ParametersToRemove to view parameters that should not be passed to browsers internal implementations. ) Begin {