Skip to content

Commit 0bb281d

Browse files
committed
Adding ability to check C# coding style using StyleCop in Visual Studio 2015
1 parent f692ab2 commit 0bb281d

File tree

11 files changed

+453
-9
lines changed

11 files changed

+453
-9
lines changed

dotnet/src/support/WebDriver.Support.csproj

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<ErrorReport>prompt</ErrorReport>
4343
<WarningLevel>4</WarningLevel>
4444
<DocumentationFile>..\..\..\build\cli\Debug\WebDriver.Support.xml</DocumentationFile>
45-
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
45+
<CodeAnalysisRuleSet>WebDriver.Support.ruleset</CodeAnalysisRuleSet>
4646
</PropertyGroup>
4747
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
4848
<DebugType>pdbonly</DebugType>
@@ -52,7 +52,7 @@
5252
<ErrorReport>prompt</ErrorReport>
5353
<WarningLevel>4</WarningLevel>
5454
<DocumentationFile>..\..\..\build\cli\Release\WebDriver.Support.xml</DocumentationFile>
55-
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
55+
<CodeAnalysisRuleSet>WebDriver.Support.ruleset</CodeAnalysisRuleSet>
5656
</PropertyGroup>
5757
<PropertyGroup>
5858
<SignAssembly>false</SignAssembly>
@@ -99,18 +99,18 @@
9999
<Compile Include="PageObjects\WebElementListProxy.cs" />
100100
<Compile Include="PageObjects\WebElementProxy.cs" />
101101
<Compile Include="Properties\AssemblyInfo.cs" />
102-
<Compile Include="UI\DefaultWait.cs" />
102+
<Compile Include="UI\DefaultWait{T}.cs" />
103103
<Compile Include="UI\ExpectedConditions.cs">
104104
<SubType>Code</SubType>
105105
</Compile>
106106
<Compile Include="UI\IClock.cs" />
107107
<Compile Include="UI\ILoadableComponent.cs" />
108-
<Compile Include="UI\IWait.cs" />
109-
<Compile Include="UI\LoadableComponent.cs" />
108+
<Compile Include="UI\IWait{T}.cs" />
109+
<Compile Include="UI\LoadableComponent{T}.cs" />
110110
<Compile Include="UI\LoadableComponentException.cs" />
111111
<Compile Include="UI\PopupWindowFinder.cs" />
112112
<Compile Include="UI\SelectElement.cs" />
113-
<Compile Include="UI\SlowLoadableComponent.cs" />
113+
<Compile Include="UI\SlowLoadableComponent{T}.cs" />
114114
<Compile Include="UI\SystemClock.cs" />
115115
<Compile Include="UI\UnexpectedTagNameException.cs" />
116116
<Compile Include="UI\WebDriverWait.cs" />
@@ -151,4 +151,12 @@
151151
<Install>true</Install>
152152
</BootstrapperPackage>
153153
</ItemGroup>
154+
<ItemGroup>
155+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\Newtonsoft.Json.dll" />
156+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll" />
157+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\StyleCop.Analyzers.dll" />
158+
</ItemGroup>
159+
<ItemGroup>
160+
<None Include="WebDriver.Support.ruleset" />
161+
</ItemGroup>
154162
</Project>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RuleSet Name="Rules for WebDriver.Support" Description="Code analysis rules for WebDriver.Support.csproj." ToolsVersion="14.0">
3+
<IncludeAll Action="Warning" />
4+
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
5+
<Rule Id="SA1200" Action="None" />
6+
<Rule Id="SA1636" Action="None" />
7+
</Rules>
8+
</RuleSet>

dotnet/src/webdriver/WebDriver.csproj

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<ErrorReport>prompt</ErrorReport>
4343
<WarningLevel>4</WarningLevel>
4444
<DocumentationFile>..\..\..\build\cli\Debug\WebDriver.xml</DocumentationFile>
45-
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
45+
<CodeAnalysisRuleSet>WebDriver.ruleset</CodeAnalysisRuleSet>
4646
</PropertyGroup>
4747
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
4848
<DebugType>pdbonly</DebugType>
@@ -52,7 +52,7 @@
5252
<ErrorReport>prompt</ErrorReport>
5353
<WarningLevel>4</WarningLevel>
5454
<DocumentationFile>..\..\..\build\cli\Release\WebDriver.xml</DocumentationFile>
55-
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
55+
<CodeAnalysisRuleSet>WebDriver.ruleset</CodeAnalysisRuleSet>
5656
</PropertyGroup>
5757
<PropertyGroup>
5858
<SignAssembly>false</SignAssembly>
@@ -321,7 +321,14 @@
321321
<Install>true</Install>
322322
</BootstrapperPackage>
323323
</ItemGroup>
324-
<ItemGroup />
324+
<ItemGroup>
325+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\Newtonsoft.Json.dll" />
326+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll" />
327+
<Analyzer Include="..\..\..\third_party\dotnet\stylecop\StyleCop.Analyzers.1.0.0-beta015\analyzers\dotnet\cs\StyleCop.Analyzers.dll" />
328+
</ItemGroup>
329+
<ItemGroup>
330+
<None Include="WebDriver.ruleset" />
331+
</ItemGroup>
325332
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
326333
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
327334
Other similar extension points exist, see Microsoft.Common.targets.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RuleSet Name="Rules for WebDriver" Description="Code analysis rules for WebDriver.csproj." ToolsVersion="14.0">
3+
<IncludeAll Action="Warning" />
4+
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
5+
<Rule Id="SA1200" Action="None" />
6+
<Rule Id="SA1305" Action="Warning" />
7+
<Rule Id="SA1627" Action="Warning" />
8+
<Rule Id="SA1629" Action="Warning" />
9+
<Rule Id="SA1636" Action="None" />
10+
<Rule Id="SA1640" Action="None" />
11+
<Rule Id="SA1644" Action="Warning" />
12+
</Rules>
13+
</RuleSet>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
4+
<Target Name="InjectStyleCopSettings"
5+
BeforeTargets="CoreCompile">
6+
<ItemGroup>
7+
<StyleCopSettings Include="@(None)"
8+
Condition="'%(Filename)%(Extension)' == 'stylecop.json'"/>
9+
<AdditionalFiles Include="%(StyleCopSettings.Identity)" />
10+
</ItemGroup>
11+
</Target>
12+
13+
</Project>
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
param($installPath, $toolsPath, $package, $project)
2+
3+
$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers" ) * -Resolve
4+
5+
foreach($analyzersPath in $analyzersPaths)
6+
{
7+
# Install the language agnostic analyzers.
8+
if (Test-Path $analyzersPath)
9+
{
10+
foreach ($analyzerFilePath in Get-ChildItem $analyzersPath -Filter *.dll)
11+
{
12+
if($project.Object.AnalyzerReferences)
13+
{
14+
$project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
15+
}
16+
}
17+
}
18+
}
19+
20+
# $project.Type gives the language name like (C# or VB.NET)
21+
$languageFolder = ""
22+
if($project.Type -eq "C#")
23+
{
24+
$languageFolder = "cs"
25+
}
26+
if($project.Type -eq "VB.NET")
27+
{
28+
$languageFolder = "vb"
29+
}
30+
if($languageFolder -eq "")
31+
{
32+
return
33+
}
34+
35+
foreach($analyzersPath in $analyzersPaths)
36+
{
37+
# Install language specific analyzers.
38+
$languageAnalyzersPath = join-path $analyzersPath $languageFolder
39+
if (Test-Path $languageAnalyzersPath)
40+
{
41+
foreach ($analyzerFilePath in Get-ChildItem $languageAnalyzersPath -Filter *.dll)
42+
{
43+
if($project.Object.AnalyzerReferences)
44+
{
45+
$project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
46+
}
47+
}
48+
}
49+
}
50+
# SIG # Begin signature block
51+
# MIIaoQYJKoZIhvcNAQcCoIIakjCCGo4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
52+
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
53+
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU2Q/XtUMgeda05ZRH6iWmJDPu
54+
# oTCgghWCMIIEwzCCA6ugAwIBAgITMwAAAHPGWcJSl4OjOgAAAAAAczANBgkqhkiG
55+
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
56+
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
57+
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTUwMzIwMTczMjA0
58+
# WhcNMTYwNjIwMTczMjA0WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
59+
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
60+
# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO
61+
# OkJCRUMtMzBDQS0yREJFMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
62+
# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp0QvcscV762c
63+
# vJQkN4+yFC55LDaPb7KevwD6jHhhG5S5Uij0cT8HGE/y6Je/f3Ow4zVsoSviUbYn
64+
# qqI1ASnzKaVQ3natkrIUuQ8Mllkya3MeSL9Q877ogSskJFB0fOph5o8RAe6yfSD1
65+
# CkMqVGVAxRwMNFDik+TCDS7gUJlQaAZ9h3v2jQWOR+Xt0ELjY93j7iXPqVCjT4K7
66+
# x5WFfasB4FBCFeBZg8lR4D2gKOh/gnzSuRoCHqhzdFfIf7gJs7pF4EfCdNSp2BLX
67+
# Lxuc1K567c/CWXMh3LDjZMMd5i8EvFv9ssV+Nua6VnlcHRWrsaB9FygH8+OpkVg8
68+
# tkWf1jVh3QIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFDUsc4HZ7HD5Sj2P/0fAfApo
69+
# obgbMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw
70+
# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
71+
# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG
72+
# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv
73+
# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
74+
# hvcNAQEFBQADggEBABhW2Lwu5/R0+yuB1kWyYWp9G8CaWAHqZhnXuCn1jzz09iI2
75+
# d1FUmQud9f7Fg9U7F18kV7sSywfz8omzn+eIMTZc0N0QbbGdHG5zeUCA26QRbUwQ
76+
# 6BCVoUNlxEgptx5suXvzd7dgvF0jpzSnWPUVzaasjBvdqMfy/L2f24Jaiu9s8vsu
77+
# w79c0Y2DVhPd4x2T7ReueUVSCxzhK8AzUN271fiW2JRLQ0tRCF8tnA5TKJe7RuvG
78+
# emKndxIklRnPRf1Y2R0getwBvO8Lg3pDeZDUR+AIteZ96oBsSHnsJwxb8T45Ur6a
79+
# lIw5sEMholc7XInenHZH5DEg0aJpQ86Btpv5rzgwggTsMIID1KADAgECAhMzAAAB
80+
# Cix5rtd5e6asAAEAAAEKMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw
81+
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
82+
# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp
83+
# Z25pbmcgUENBMB4XDTE1MDYwNDE3NDI0NVoXDTE2MDkwNDE3NDI0NVowgYMxCzAJ
84+
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
85+
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx
86+
# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
87+
# BQADggEPADCCAQoCggEBAJL8bza74QO5KNZG0aJhuqVG+2MWPi75R9LH7O3HmbEm
88+
# UXW92swPBhQRpGwZnsBfTVSJ5E1Q2I3NoWGldxOaHKftDXT3p1Z56Cj3U9KxemPg
89+
# 9ZSXt+zZR/hsPfMliLO8CsUEp458hUh2HGFGqhnEemKLwcI1qvtYb8VjC5NJMIEb
90+
# e99/fE+0R21feByvtveWE1LvudFNOeVz3khOPBSqlw05zItR4VzRO/COZ+owYKlN
91+
# Wp1DvdsjusAP10sQnZxN8FGihKrknKc91qPvChhIqPqxTqWYDku/8BTzAMiwSNZb
92+
# /jjXiREtBbpDAk8iAJYlrX01boRoqyAYOCj+HKIQsaUCAwEAAaOCAWAwggFcMBMG
93+
# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSJ/gox6ibN5m3HkZG5lIyiGGE3
94+
# NDBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr
95+
# MDQwNzkzNTAtMTZmYS00YzYwLWI2YmYtOWQyYjFjZDA1OTg0MB8GA1UdIwQYMBaA
96+
# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j
97+
# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w
98+
# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
99+
# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx
100+
# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQCmqFOR3zsB/mFdBlrrZvAM2PfZ
101+
# hNMAUQ4Q0aTRFyjnjDM4K9hDxgOLdeszkvSp4mf9AtulHU5DRV0bSePgTxbwfo/w
102+
# iBHKgq2k+6apX/WXYMh7xL98m2ntH4LB8c2OeEti9dcNHNdTEtaWUu81vRmOoECT
103+
# oQqlLRacwkZ0COvb9NilSTZUEhFVA7N7FvtH/vto/MBFXOI/Enkzou+Cxd5AGQfu
104+
# FcUKm1kFQanQl56BngNb/ErjGi4FrFBHL4z6edgeIPgF+ylrGBT6cgS3C6eaZOwR
105+
# XU9FSY0pGi370LYJU180lOAWxLnqczXoV+/h6xbDGMcGszvPYYTitkSJlKOGMIIF
106+
# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm
107+
# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD
108+
# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx
109+
# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
110+
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
111+
# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
112+
# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC
113+
# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw
114+
# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy
115+
# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ
116+
# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP
117+
# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf
118+
# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS
119+
# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB
120+
# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3
121+
# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk
122+
# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
123+
# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE
124+
# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
125+
# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+
126+
# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6
127+
# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW
128+
# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb
129+
# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu
130+
# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ
131+
# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB
132+
# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord
133+
# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t
134+
# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh
135+
# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I
136+
# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0
137+
# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX
138+
# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290
139+
# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx
140+
# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
141+
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
142+
# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB
143+
# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn
144+
# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0
145+
# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n
146+
# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR
147+
# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54
148+
# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G
149+
# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG
150+
# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg
151+
# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
152+
# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg
153+
# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ
154+
# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
155+
# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
156+
# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z
157+
# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB
158+
# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i
159+
# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r
160+
# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct
161+
# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F
162+
# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo
163+
# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0
164+
# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp
165+
# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J
166+
# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0
167+
# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng
168+
# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBIkwggSF
169+
# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
170+
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh
171+
# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAABCix5rtd5e6as
172+
# AAEAAAEKMAkGBSsOAwIaBQCggaIwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
173+
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFNWy
174+
# JYWiXrB52VhT/lC+8pUKXim8MEIGCisGAQQBgjcCAQwxNDAyoBiAFgBpAG4AcwB0
175+
# AGEAbABsAC4AcABzADGhFoAUaHR0cDovL21pY3Jvc29mdC5jb20wDQYJKoZIhvcN
176+
# AQEBBQAEggEAPijsy7fqbQghv6HRRRSMUi3S6UmVRRL/NIehIU4uTM0SniruHlUf
177+
# YBFAp5PhTCjaj2dNnFL6J4zIcaugqI3Shk6kuopA3Vd8YIiqMOc/9CJ3lRxJ3/nI
178+
# BBAAWpEYXo4xs2500Bco5TpoMUJORWUN15onwqGp+YIc/aWYX1Jtfqvb5oaiTcvI
179+
# 2OWx1dyFfpWxc56hX4eyo3Lj5l2454Z5bB40kzLX07qCgvY+MRYSd89P1uNUtBEB
180+
# qkaymzrmVkTMZaUn4YdyAHR7CfJ7sgMmiOyQ+YySDBDD6HPycGwLpdip93Bmjjfz
181+
# Yj/4ERbiVOPRRpa2GtCAsNXtPiw0SSaQJaGCAigwggIkBgkqhkiG9w0BCQYxggIV
182+
# MIICEQIBATCBjjB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
183+
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
184+
# MSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0ECEzMAAABzxlnCUpeD
185+
# ozoAAAAAAHMwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEw
186+
# HAYJKoZIhvcNAQkFMQ8XDTE1MDYxOTAyNTk0OFowIwYJKoZIhvcNAQkEMRYEFGZQ
187+
# e8ojPYUl1DjvBan3KNtqFEJdMA0GCSqGSIb3DQEBBQUABIIBAJHjS6vTvsLIuzBU
188+
# xQdQopG+qV3hJzqh7u1uPdsknaqMLWjn9zF7Qy6q7gk17eCQ+uStUXdqMCYWqX6J
189+
# GkpaBZGZpmmQ2uEau2G6TuxdN4nVFAmlO5W+RbfLBTizjTH3/VRJsLiIHNu0JpmM
190+
# SjbuKpROk3wKYiUIsbWrHU0rpWmU6lX/xGv/zIZrMskzJ0Xas7+78S1zHeHlsoWS
191+
# TMNtcy+MJfhAfAg6AX1x9Ga7T4J2uT+zo16rMqkIgH/VGmS3+/1ZIMY92ev6BOps
192+
# smrx6ksElucvRtwE41kulKtPbziSPaIhCQyoIvvalwdjO+F0nd3lip/k4dJpUpzj
193+
# d2EmeyI=
194+
# SIG # End signature block

0 commit comments

Comments
 (0)