diff --git a/.sonarqube/conf/SonarQubeAnalysisConfig.xml b/.sonarqube/conf/SonarQubeAnalysisConfig.xml
new file mode 100644
index 000000000..0685cc301
--- /dev/null
+++ b/.sonarqube/conf/SonarQubeAnalysisConfig.xml
@@ -0,0 +1,204 @@
+
+
+ C:\Git\btcpayserver\.sonarqube\conf
+ C:\Git\btcpayserver\.sonarqube\out
+ C:\Git\btcpayserver\.sonarqube\bin
+ C:\Git\btcpayserver
+ true
+ https://sonarcloud.io
+ 7.8.0.23906
+ Kukks_btcpayserver
+
+
+
+
+
+
+ 7.13.0.8313
+ 7.7.0.4011
+ true
+ true
+ .c,.h
+ .ts,.tsx
+ ibm-enterprise-cobol
+ SonarQube
+ false
+ oracle.jdbc.OracleDriver
+ **/vendor/**
+ false
+ 60
+ .cc,.cpp,.cxx,.c++,.hh,.hpp,.hxx,.h++,.ipp
+ 7.7.0.4011
+ SonarAnalyzer.CSharp
+ false
+ .css,.less,.scss
+ false
+ true
+ 100
+ target/jacoco.exec, target/jacoco-it.exec
+ .html,.xhtml,.cshtml,.vbhtml,.aspx,.ascx,.rhtml,.erb,.shtm,.shtml
+ false
+ true
+ SonarAnalyzer.Security
+ 30
+ .scala
+ false
+ 30
+ true
+ .cls,.trigger
+ SonarAnalyzer.VisualBasic
+ true
+ true
+ 30
+ 4
+ https://secure.gravatar.com/avatar/{EMAIL_MD5}.jpg?s={SIZE}&d=identicon
+ fixed
+ 600
+ .jsp,.jspf,.jspx
+ amd, applescript, atomtest, browser, commonjs, couch, embertest, flow, greasemonkey, jasmine, jest, jquery, meteor, mocha, mongo, nashorn, node, phantomjs, prototypejs, protractor, qunit, rhino, serviceworker, shared-node-browser, shelljs, webextensions, worker, wsh, yui
+ false
+ **/node_modules/**,**/bower_components/**
+ .vb
+ false
+ .abap,.ab4,.flow,.asprog
+ true
+ 30
+ py
+ .cs
+ sql,tab,pkb
+ SonarAnalyzer.Security
+ 8
+ SonarAnalyzer-7.13.0.8313.zip
+ .java,.jav
+ .kt
+ php,php3,php4,php5,phtml,inc
+ .xml,.xsd,.xsl
+ 480
+ true
+ coverage-reports/*coverage-*.xml
+ $, jQuery
+ 7.13.0.8313
+ .go
+ 30
+ true
+ 104
+ .swift
+ false
+ false
+ as
+ .rb
+ xunit-reports/xunit-result-*.xml
+ angular,goog,google,OpenLayers,d3,dojo,dojox,dijit,Backbone,moment,casper
+ 24
+ true
+ **/node_modules/**,**/bower_components/**
+ SonarAnalyzer.VisualBasic
+ noreply@sonarcloud.io
+ 7.13.0.8313
+ SonarAnalyzer.Security
+ node
+ 1
+ SonarAnalyzer.VisualBasic
+ [SonarCloud]
+ false
+ c11
+ csharp
+ 100
+ securitycsharpfrontend
+ true
+ (branch|release)-.*
+ .m
+ coverage/.resultset.json
+ SonarAnalyzer-7.13.0.8313.zip
+ true
+ SonarAnalyzer.CSharp
+ false
+ SonarAnalyzer.CSharp
+ true
+ 0.05,0.1,0.2,0.5
+ true
+ 7.13.0.8313
+ SonarAnalyzer.Security-7.7.0.4011.zip
+ .js,.jsx,.vue
+ 20
+ vbnet
+ true
+ https://update.sonarsource.org/update-center.properties
+ .tsql
+ c++11
+ https://sonarcloud.io
+ 105
+ <div class="boxed-group" style="border: none; border-radius: 3px;">
+ <div class="boxed-group-inner clearfix" style="padding: 30px; border-radius: 3px; border: #e6e6e6 1px solid; background: #f3f3f3;">
+ <div style="overflow: hidden; line-height: 1.5; font-size: 16px;">
+ <p>
+Analyze your open source and private projects on SonarCloud.
+Select your <a href="https://about.sonarcloud.io">plan</a> and start improving.
+ </p>
+ </div>
+ </div>
+</div>
+ BD367519-AWHW8ct9-T_TB3XqouNu
+ 18/04/2019 09:51:11
+
+
+ https://sonarcloud.io
+ kukks-github
+
+
+
+ cs
+ C:\Git\btcpayserver\.sonarqube\conf\SonarQubeRoslyn-cs.ruleset
+ C:\Git\btcpayserver\.sonarqube\conf\SonarQubeRoslyn-cs-test.ruleset
+
+
+
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\Google.Protobuf.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\SonarAnalyzer.CSharp.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\SonarAnalyzer.dll
+
+
+
+
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\Google.Protobuf.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\SonarAnalyzer.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\SonarAnalyzer.VisualBasic.dll
+
+
+
+
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\2\analyzers\dotnet\cs\Google.Protobuf.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\2\analyzers\dotnet\cs\SonarAnalyzer.Security.dll
+
+
+
+
+ C:\Git\btcpayserver\.sonarqube\conf\cs\SonarLint.xml
+
+
+
+ vbnet
+ C:\Git\btcpayserver\.sonarqube\conf\SonarQubeRoslyn-vbnet.ruleset
+ C:\Git\btcpayserver\.sonarqube\conf\SonarQubeRoslyn-vbnet-test.ruleset
+
+
+
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\Google.Protobuf.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\SonarAnalyzer.CSharp.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\0\SonarAnalyzer.dll
+
+
+
+
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\Google.Protobuf.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\SonarAnalyzer.dll
+ C:\Users\Andrew\AppData\Local\Temp\.sonarqube\resources\1\SonarAnalyzer.VisualBasic.dll
+
+
+
+
+ C:\Git\btcpayserver\.sonarqube\conf\vbnet\SonarLint.xml
+
+
+
+
\ No newline at end of file
diff --git a/.sonarqube/conf/SonarQubeRoslyn-cs-test.ruleset b/.sonarqube/conf/SonarQubeRoslyn-cs-test.ruleset
new file mode 100644
index 000000000..c1e6d435d
--- /dev/null
+++ b/.sonarqube/conf/SonarQubeRoslyn-cs-test.ruleset
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.sonarqube/conf/SonarQubeRoslyn-cs.ruleset b/.sonarqube/conf/SonarQubeRoslyn-cs.ruleset
new file mode 100644
index 000000000..763fbb498
--- /dev/null
+++ b/.sonarqube/conf/SonarQubeRoslyn-cs.ruleset
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.sonarqube/conf/SonarQubeRoslyn-vbnet-test.ruleset b/.sonarqube/conf/SonarQubeRoslyn-vbnet-test.ruleset
new file mode 100644
index 000000000..69a21bdb3
--- /dev/null
+++ b/.sonarqube/conf/SonarQubeRoslyn-vbnet-test.ruleset
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.sonarqube/conf/SonarQubeRoslyn-vbnet.ruleset b/.sonarqube/conf/SonarQubeRoslyn-vbnet.ruleset
new file mode 100644
index 000000000..3181ccf3d
--- /dev/null
+++ b/.sonarqube/conf/SonarQubeRoslyn-vbnet.ruleset
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.sonarqube/conf/cs/SonarLint.xml b/.sonarqube/conf/cs/SonarLint.xml
new file mode 100644
index 000000000..8a744b5fa
--- /dev/null
+++ b/.sonarqube/conf/cs/SonarLint.xml
@@ -0,0 +1,789 @@
+
+
+
+
+ sonar.cs.ignoreHeaderComments
+ true
+
+
+ sonar.cs.file.suffixes
+ .cs
+
+
+ sonar.cs.roslyn.ignoreIssues
+ false
+
+
+
+
+ S3440
+
+
+ S1905
+
+
+ S2933
+
+
+ S101
+
+
+ S2551
+
+
+ S4529
+
+
+ S1144
+
+
+ S4507
+
+
+ S5042
+
+
+ S3927
+
+
+ S4787
+
+
+ S2365
+
+
+ S2486
+
+
+ S4784
+
+
+ S2255
+
+
+ S4790
+
+
+ S4792
+
+
+ S2183
+
+
+ S2077
+
+
+ S1751
+
+
+ S2737
+
+
+ S4721
+
+
+ S2436
+
+
+ max
+ 2
+
+
+ maxMethod
+ 3
+
+
+
+
+ S3984
+
+
+ S4797
+
+
+ S4817
+
+
+ S4818
+
+
+ S3011
+
+
+ S1523
+
+
+ S4829
+
+
+ S4823
+
+
+ S4825
+
+
+ S4834
+
+
+ S2327
+
+
+ S4143
+
+
+ S3433
+
+
+ S2245
+
+
+ S2187
+
+
+ S3603
+
+
+ S1313
+
+
+ S4260
+
+
+ S1006
+
+
+ S1048
+
+
+ S1066
+
+
+ S107
+
+
+ max
+ 7
+
+
+
+
+ S1075
+
+
+ S108
+
+
+ S110
+
+
+ max
+ 5
+
+
+
+
+ S1104
+
+
+ S1110
+
+
+ S1116
+
+
+ S1117
+
+
+ S1118
+
+
+ S112
+
+
+ S1121
+
+
+ S1123
+
+
+ S1125
+
+
+ S1134
+
+
+ S1135
+
+
+ S1155
+
+
+ S1163
+
+
+ S1168
+
+
+ S1172
+
+
+ S1185
+
+
+ S1186
+
+
+ S1206
+
+
+ S1210
+
+
+ S1215
+
+
+ S125
+
+
+ S1264
+
+
+ S1450
+
+
+ S1479
+
+
+ maximum
+ 30
+
+
+
+
+ S1481
+
+
+ S1607
+
+
+ S1643
+
+
+ S1656
+
+
+ S1699
+
+
+ S1764
+
+
+ S1848
+
+
+ S1854
+
+
+ S1862
+
+
+ S1871
+
+
+ S1939
+
+
+ S1940
+
+
+ S1944
+
+
+ S2068
+
+
+ credentialWords
+ password, passwd, pwd
+
+
+
+
+ S2092
+
+
+ S2114
+
+
+ S2123
+
+
+ S2178
+
+
+ S2184
+
+
+ S2190
+
+
+ S2201
+
+
+ S2219
+
+
+ S2223
+
+
+ S2225
+
+
+ S2234
+
+
+ S2259
+
+
+ S2275
+
+
+ S2278
+
+
+ S2290
+
+
+ S2291
+
+
+ S2292
+
+
+ S2306
+
+
+ S2326
+
+
+ S2328
+
+
+ S2342
+
+
+ format
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+ flagsAttributeFormat
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?s$
+
+
+
+
+ S2344
+
+
+ S2345
+
+
+ S2346
+
+
+ S2368
+
+
+ S2372
+
+
+ S2376
+
+
+ S2386
+
+
+ S2437
+
+
+ S2583
+
+
+ S2589
+
+
+ S2681
+
+
+ S2688
+
+
+ S2692
+
+
+ S2696
+
+
+ S2743
+
+
+ S2757
+
+
+ S2758
+
+
+ S2761
+
+
+ S2930
+
+
+ S2934
+
+
+ S2953
+
+
+ S2971
+
+
+ S2995
+
+
+ S2996
+
+
+ S2997
+
+
+ S3005
+
+
+ S3010
+
+
+ S3060
+
+
+ S3168
+
+
+ S3169
+
+
+ S3172
+
+
+ S3217
+
+
+ S3218
+
+
+ S3220
+
+
+ S3236
+
+
+ S3237
+
+
+ S3241
+
+
+ S3244
+
+
+ S3246
+
+
+ S3247
+
+
+ S3249
+
+
+ S3251
+
+
+ S3256
+
+
+ S3261
+
+
+ S3262
+
+
+ S3263
+
+
+ S3264
+
+
+ S3265
+
+
+ S3330
+
+
+ S3343
+
+
+ S3346
+
+
+ S3358
+
+
+ S3376
+
+
+ S3397
+
+
+ S3400
+
+
+ S3415
+
+
+ S3427
+
+
+ S3442
+
+
+ S3443
+
+
+ S3444
+
+
+ S3445
+
+
+ S3447
+
+
+ S3449
+
+
+ S3450
+
+
+ S3451
+
+
+ S3453
+
+
+ S3456
+
+
+ S3457
+
+
+ S3458
+
+
+ S3459
+
+
+ S3464
+
+
+ S3466
+
+
+ S3597
+
+
+ S3598
+
+
+ S3600
+
+
+ S3604
+
+
+ S3610
+
+
+ S3626
+
+
+ S3655
+
+
+ S3693
+
+
+ S3776
+
+
+ threshold
+ 15
+
+
+ propertyThreshold
+ 3
+
+
+
+
+ S3869
+
+
+ S3871
+
+
+ S3875
+
+
+ S3877
+
+
+ S3881
+
+
+ S3884
+
+
+ S3885
+
+
+ S3887
+
+
+ S3889
+
+
+ S3897
+
+
+ S3903
+
+
+ S3904
+
+
+ S3923
+
+
+ S3925
+
+
+ S3926
+
+
+ S3928
+
+
+ S3963
+
+
+ S3966
+
+
+ S3971
+
+
+ S3972
+
+
+ S3973
+
+
+ S3981
+
+
+ S3998
+
+
+ S4015
+
+
+ S4016
+
+
+ S4019
+
+
+ S4035
+
+
+ S4061
+
+
+ S4070
+
+
+ S4144
+
+
+ S4158
+
+
+ S4159
+
+
+ S4200
+
+
+ S4210
+
+
+ S4211
+
+
+ S4214
+
+
+ S4220
+
+
+ S4275
+
+
+ S4277
+
+
+ S4426
+
+
+ S4428
+
+
+ S4433
+
+
+ S4456
+
+
+ S4457
+
+
+ S4524
+
+
+ S4581
+
+
+ S4586
+
+
+ S818
+
+
+ S907
+
+
+ S927
+
+
+
+
+
diff --git a/.sonarqube/conf/vbnet/SonarLint.xml b/.sonarqube/conf/vbnet/SonarLint.xml
new file mode 100644
index 000000000..567994bf4
--- /dev/null
+++ b/.sonarqube/conf/vbnet/SonarLint.xml
@@ -0,0 +1,404 @@
+
+
+
+
+ sonar.vbnet.ignoreHeaderComments
+ true
+
+
+ sonar.vbnet.file.suffixes
+ .vb
+
+
+ sonar.vbnet.roslyn.ignoreIssues
+ false
+
+
+
+
+ S2551
+
+
+ S1135
+
+
+ S1134
+
+
+ S107
+
+
+ max
+ 7
+
+
+
+
+ S108
+
+
+ S2234
+
+
+ S1110
+
+
+ S1125
+
+
+ S1172
+
+
+ S1066
+
+
+ S4787
+
+
+ S4529
+
+
+ S2077
+
+
+ S4818
+
+
+ S1751
+
+
+ S4586
+
+
+ S4507
+
+
+ S2737
+
+
+ S5042
+
+
+ S4721
+
+
+ S4784
+
+
+ S4790
+
+
+ S4792
+
+
+ S2068
+
+
+ credentialWords
+ password, passwd, pwd
+
+
+
+
+ S112
+
+
+ S4817
+
+
+ S3011
+
+
+ S1523
+
+
+ S1313
+
+
+ S4829
+
+
+ S4823
+
+
+ S4825
+
+
+ S4797
+
+
+ S2255
+
+
+ S4834
+
+
+ S1940
+
+
+ S2757
+
+
+ S3449
+
+
+ S3603
+
+
+ S3776
+
+
+ threshold
+ 15
+
+
+ propertyThreshold
+ 3
+
+
+
+
+ S1479
+
+
+ maximum
+ 30
+
+
+
+
+ S1481
+
+
+ S3358
+
+
+ S3598
+
+
+ S4210
+
+
+ S1186
+
+
+ S3927
+
+
+ S3926
+
+
+ S3923
+
+
+ S3889
+
+
+ S3453
+
+
+ S2761
+
+
+ S3693
+
+
+ S4428
+
+
+ S4143
+
+
+ S4260
+
+
+ S4159
+
+
+ S1048
+
+
+ S3466
+
+
+ S3464
+
+
+ S4277
+
+
+ S3903
+
+
+ S3869
+
+
+ S4275
+
+
+ S101
+
+
+ format
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S1075
+
+
+ S114
+
+
+ format
+ ^I([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S117
+
+
+ format
+ ^[a-z][a-z0-9]*([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S1197
+
+
+ S1542
+
+
+ format
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S1643
+
+
+ S1645
+
+
+ S1654
+
+
+ format
+ ^[a-z][a-z0-9]*([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S1656
+
+
+ S1764
+
+
+ S1862
+
+
+ S1871
+
+
+ S2178
+
+
+ S2304
+
+
+ format
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?(\.([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?)*$
+
+
+
+
+ S2340
+
+
+ S2342
+
+
+ format
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+ flagsAttributeFormat
+ ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?s$
+
+
+
+
+ S2344
+
+
+ S2345
+
+
+ S2346
+
+
+ S2347
+
+
+ format
+ ^(([a-z][a-z0-9]*)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?_)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
+
+
+
+
+ S2349
+
+
+ S2352
+
+
+ S2355
+
+
+ S2358
+
+
+ S2359
+
+
+ S2365
+
+
+ S2368
+
+
+ S2372
+
+
+ S2375
+
+
+ minimumSeriesLength
+ 6
+
+
+
+
+ S2376
+
+
+ S2951
+
+
+ S3385
+
+
+ S3981
+
+
+ S4144
+
+
+
+
+