Skip to content

Commit 59948f2

Browse files
committed
Fix some XML documentation and adjust .shfbproj for SHFB 2014.
1 parent 26b4048 commit 59948f2

7 files changed

Lines changed: 101 additions & 118 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ bin/
55
/packages/AvalonEdit
66
/packages/AvalonEdit.Sample
77
/packages/NUnit.2.6.3
8+
/Documentation/IntelliSense

Documentation/ICSharpCode.AvalonEdit.shfbproj

Lines changed: 77 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
99
<SchemaVersion>2.0</SchemaVersion>
1010
<ProjectGuid>{850b6602-0a7f-413a-864a-e816b98d7407}</ProjectGuid>
11-
<SHFBSchemaVersion>1.9.5.0</SHFBSchemaVersion>
11+
<SHFBSchemaVersion>1.9.9.0</SHFBSchemaVersion>
1212
<!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
1313
Studio adds them anyway -->
1414
<AssemblyName>Documentation</AssemblyName>
@@ -37,117 +37,90 @@
3737
<PresentationStyle>Prototype</PresentationStyle>
3838
<HelpFileVersion>4.4.0.0</HelpFileVersion>
3939
<ComponentConfigurations>
40-
<ComponentConfig id="Code Block Component" enabled="True">
41-
<component id="Code Block Component" type="SandcastleBuilder.Components.CodeBlockComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
42-
<!-- Base path for relative filenames in source attributes (optional) -->
43-
<basePath value="{@HtmlEncProjectFolder}" />
44-
<!-- Base output paths for the files (required). These should match the parent folder of the output path
45-
of the HTML files (see each of the SaveComponent instances in the configuration files). -->
46-
<outputPaths>
47-
{@HelpFormatOutputPaths}
48-
</outputPaths>
49-
<!-- Allow missing source files (Optional). If omitted, it will generate errors if referenced source files
50-
are missing. -->
51-
<allowMissingSource value="false" />
52-
<!-- Remove region markers from imported code blocks. If omitted, region markers in imported code blocks
53-
are left alone. -->
54-
<removeRegionMarkers value="false" />
55-
<!-- Code colorizer options (required).
56-
Attributes:
57-
Language syntax configuration file (required)
58-
XSLT stylesheet file (required)
59-
CSS stylesheet file (required)
60-
Script file (required)
61-
Disabled (optional, leading whitespace normalization only)
62-
Default language (optional)
63-
Enable line numbering (optional)
64-
Enable outlining (optional)
65-
Keep XML comment "see" tags within the code (optional)
66-
Tab size override (optional, 0 = Use syntax file setting)
67-
Use language name as default title (optional) -->
68-
<colorizer syntaxFile="{@SHFBFolder}Colorizer\highlight.xml" styleFile="{@SHFBFolder}Colorizer\highlight.xsl" stylesheet="{@SHFBFolder}Colorizer\highlight.css" scriptFile="{@SHFBFolder}Colorizer\highlight.js" disabled="{@DisableCodeBlockComponent}" language="cs" numberLines="false" outlining="false" keepSeeTags="false" tabSize="0" defaultTitle="true" />
69-
</component>
40+
<ComponentConfig id="Reflection Index Data (ESENT Cache)" enabled="True">
41+
<component id="Reflection Index Data (ESENT Cache)">
42+
<index name="reflection" value="/reflection/apis/api" key="@id" cache="15" localCacheSize="2500" frameworkCachePath="{@LocalDataFolder}Cache\ReflectionIndexCache" projectCachePath="">
43+
<data base="{@SHFBFolder}Data\Reflection" recurse="true" files="*.xml" duplicateWarning="false" groupId="ReflectionIndexCache">
44+
{@ReferenceLinkNamespaceFiles}
45+
</data>
46+
<data files="reflection.xml" groupId="Project_Ref_{@UniqueID}" />
47+
</index>
48+
<copy name="reflection" source="*" target="/document/reference" />
49+
</component>
7050
</ComponentConfig>
71-
<ComponentConfig id="IntelliSense Component" enabled="True">
72-
<component id="IntelliSense Component" type="SandcastleBuilder.Components.IntelliSenseComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
73-
<!-- Output options (optional)
74-
Attributes:
75-
Include Namespaces (false by default)
76-
Namespaces filename ("Namespaces" if not specified or empty)
77-
Directory (current folder if not specified or empty) -->
78-
<output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}" />
79-
</component>
80-
</ComponentConfig>
81-
<ComponentConfig id="Cached Framework Comments Index Data" enabled="True">
82-
<component id="Cached Framework Comments Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
83-
<index name="comments" value="/doc/members/member" key="@name" cache="100">
84-
{@CachedFrameworkCommentList}
85-
{@CommentFileList}
86-
</index>
87-
<copy name="comments" source="*" target="/document/comments" />
88-
</component>
89-
</ComponentConfig>
90-
<ComponentConfig id="Cached Reflection Index Data" enabled="True">
91-
<component id="Cached Reflection Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
92-
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
93-
<cache base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" cacheFile="{@LocalDataFolder}Cache\Reflection.cache" />
94-
<data files="reflection.xml" />
95-
</index>
96-
<copy name="reflection" source="*" target="/document/reference" />
97-
</component>
98-
</ComponentConfig>
99-
<ComponentConfig id="API Token Resolution" enabled="True">
100-
<component id="API Token Resolution" type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="{@SandcastlePath}ProductionTools\BuildComponents.dll">
101-
102-
{@TokenFiles}
103-
<replace elements="/*//token" item="string(.)" /></component>
104-
</ComponentConfig>
105-
<ComponentConfig id="Cached MSDN URL References" enabled="True">
106-
<component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll" locale="{@Locale}" linkTarget="{@SdkLinkTarget}">
107-
<helpOutput format="HtmlHelp1">
108-
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
109-
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@HtmlSdkLinkType}" />
110-
<targets files="reflection.xml" type="Local" />
111-
</helpOutput>
112-
<helpOutput format="MSHelp2">
113-
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
114-
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelp2SdkLinkType}" />
115-
<targets files="reflection.xml" type="Index" />
116-
</helpOutput>
117-
<helpOutput format="MSHelpViewer">
118-
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
119-
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelpViewerSdkLinkType}" />
120-
<targets files="reflection.xml" type="Id" />
121-
</helpOutput>
122-
<helpOutput format="Website">
123-
<cache filename="{@LocalDataFolder}Cache\MsdnUrl.cache" />
124-
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@WebsiteSdkLinkType}" />
125-
<targets files="reflection.xml" type="Local" />
126-
</helpOutput>
127-
</component>
128-
</ComponentConfig>
129-
</ComponentConfigurations>
51+
<ComponentConfig id="Comments Index Data (ESENT Cache)" enabled="True"><component id="Comments Index Data (ESENT Cache)">
52+
<index name="comments" value="/doc/members/member" key="@name" cache="30" localCacheSize="2500" frameworkCachePath="{@LocalDataFolder}Cache\CommentsIndexCache" projectCachePath="">
53+
{@FrameworkCommentList}
54+
{@CommentFileList}
55+
</index>
56+
<copy name="comments" source="*" target="/document/comments" />
57+
</component></ComponentConfig>
58+
<ComponentConfig id="Code Block Component" enabled="True"><component id="Code Block Component">
59+
<basePath value="{@HtmlEncProjectFolder}" />
60+
<outputPaths>{@HelpFormatOutputPaths}</outputPaths>
61+
<allowMissingSource value="false" />
62+
<removeRegionMarkers value="false" />
63+
<colorizer syntaxFile="{@SHFBFolder}Colorizer\highlight.xml" styleFile="{@SHFBFolder}Colorizer\highlight.xsl" stylesheet="{@SHFBFolder}Colorizer\highlight.css" scriptFile="{@SHFBFolder}Colorizer\highlight.js" disabled="{@DisableCodeBlockComponent}" language="cs" tabSize="0" numberLines="false" outlining="false" keepSeeTags="false" defaultTitle="true" />
64+
</component></ComponentConfig>
65+
<ComponentConfig id="IntelliSense Component" enabled="True"><component id="IntelliSense Component"><!-- Output options (optional)
66+
Attributes:
67+
Include namespaces (false by default)
68+
Namespaces comments filename ("Namespaces" if not specified or empty)
69+
Output folder (current folder if not specified or empty) --><output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}\..\IntelliSense" /></component></ComponentConfig>
70+
<ComponentConfig id="Resolve Reference Links (ESENT Cache)" enabled="True"><component id="Resolve Reference Links (ESENT Cache)">
71+
<locale value="{@Locale}" />
72+
<linkTarget value="{@SdkLinkTarget}" />
73+
<helpOutput format="HtmlHelp1">
74+
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" cachePath="{@LocalDataFolder}Cache\ESentMsdnContentIdCache" localCacheSize="2500" />
75+
<targets base="{@SHFBFolder}Data\Reflection" recurse="true" files="*.xml" type="{@HtmlSdkLinkType}" id="FrameworkTargets" cachePath="{@LocalDataFolder}Cache\ESentFrameworkTargetCache" localCacheSize="2500">
76+
{@ReferenceLinkNamespaceFiles}
77+
</targets>
78+
<targets files="reflection.xml" type="Local" id="ProjectTargets" cachePath="" localCacheSize="2500" noReload="true" />
79+
</helpOutput>
80+
<helpOutput format="MSHelp2">
81+
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" cachePath="{@LocalDataFolder}Cache\ESentMsdnContentIdCache" localCacheSize="2500" />
82+
<targets base="{@SHFBFolder}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelp2SdkLinkType}" id="FrameworkTargets" cachePath="{@LocalDataFolder}Cache\ESentFrameworkTargetCache" localCacheSize="2500">
83+
{@ReferenceLinkNamespaceFiles}
84+
</targets>
85+
<targets files="reflection.xml" type="Index" id="ProjectTargets" cachePath="" localCacheSize="2500" noReload="true" />
86+
</helpOutput>
87+
<helpOutput format="MSHelpViewer">
88+
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" cachePath="{@LocalDataFolder}Cache\ESentMsdnContentIdCache" localCacheSize="2500" />
89+
<targets base="{@SHFBFolder}Data\Reflection" recurse="true" files="*.xml" type="{@MSHelpViewerSdkLinkType}" id="FrameworkTargets" cachePath="{@LocalDataFolder}Cache\ESentFrameworkTargetCache" localCacheSize="2500">
90+
{@ReferenceLinkNamespaceFiles}
91+
</targets>
92+
<targets files="reflection.xml" type="Id" id="ProjectTargets" cachePath="" localCacheSize="2500" noReload="true" />
93+
</helpOutput>
94+
<helpOutput format="Website">
95+
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" cachePath="{@LocalDataFolder}Cache\ESentMsdnContentIdCache" localCacheSize="2500" />
96+
<targets base="{@SHFBFolder}Data\Reflection" recurse="true" files="*.xml" type="{@WebsiteSdkLinkType}" id="FrameworkTargets" cachePath="{@LocalDataFolder}Cache\ESentFrameworkTargetCache" localCacheSize="2500">
97+
{@ReferenceLinkNamespaceFiles}
98+
</targets>
99+
<targets files="reflection.xml" type="Local" id="ProjectTargets" cachePath="" localCacheSize="2500" noReload="true" />
100+
</helpOutput>
101+
</component></ComponentConfig>
102+
<ComponentConfig id="API Token Resolution" enabled="True"><component id="API Token Resolution">{@TokenFiles}
103+
<replace elements="/*//token" item="string(.)" /></component></ComponentConfig></ComponentConfigurations>
130104
<DocumentationSources>
131105
<DocumentationSource sourceFile="..\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj" />
132106
</DocumentationSources>
133107
<NamespaceSummaries>
134108
<NamespaceSummaryItem name="(global)" isDocumented="False" />
135-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit" isDocumented="True">This is the main AvalonEdit namespace.</NamespaceSummaryItem>
136-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.CodeCompletion" isDocumented="True">This namespace contains classes to show the code completion window.</NamespaceSummaryItem>
137-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Document" isDocumented="True">This namespace contains the document model.
109+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit" isDocumented="True">This is the main AvalonEdit namespace.</NamespaceSummaryItem>
110+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.CodeCompletion" isDocumented="True">This namespace contains classes to show the code completion window.</NamespaceSummaryItem>
111+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Document" isDocumented="True">This namespace contains the document model.
138112
The most important class here is TextDocument, which represents document that can be displayed and edited in the text editor.</NamespaceSummaryItem>
139-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Editing" isDocumented="True">This namespace is the home of the TextArea class. It manages user input and handles the caret and the selection.</NamespaceSummaryItem>
140-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Folding" isDocumented="True">This namespace contains the folding (code collapsing) implementation.</NamespaceSummaryItem>
141-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting" isDocumented="True">This namespace contains the engine for highlighting text documents (DocumentHighlighter).
113+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Editing" isDocumented="True">This namespace is the home of the TextArea class. It manages user input and handles the caret and the selection.</NamespaceSummaryItem>
114+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Folding" isDocumented="True">This namespace contains the folding (code collapsing) implementation.</NamespaceSummaryItem>
115+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting" isDocumented="True">This namespace contains the engine for highlighting text documents (DocumentHighlighter).
142116
Additionally, the class HighlightingColorizer provides integration of the highlighting engine into the text editor GUI.</NamespaceSummaryItem>
143-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting.Xshd" isDocumented="True">This namespace contains a document model for syntax highlighting definitions (.xshd files).</NamespaceSummaryItem>
144-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Indentation" isDocumented="True">This namespace contains the logic for automatic indentation.</NamespaceSummaryItem>
145-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Rendering" isDocumented="True">This namespace contains the text rendering infrastructure.</NamespaceSummaryItem>
146-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Utils" isDocumented="True">This namespace contains various utility classes.</NamespaceSummaryItem>
147-
<NamespaceSummaryItem name="XamlGeneratedNamespace" isDocumented="False" />
148-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Xml" isDocumented="True">This namespace contains an error-tolerant XML parser with support for incremental parsing, only reparsing the changed regions of a TextDocument.</NamespaceSummaryItem>
149-
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Snippets" isDocumented="True">Snippets perform automatic text insertion. Snippets can be interactive after they were expanded, for example to allow the user to easily replace fields in the expanded snippet.</NamespaceSummaryItem>
150-
</NamespaceSummaries>
117+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting.Xshd" isDocumented="True">This namespace contains a document model for syntax highlighting definitions (.xshd files).</NamespaceSummaryItem>
118+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Indentation" isDocumented="True">This namespace contains the logic for automatic indentation.</NamespaceSummaryItem>
119+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Rendering" isDocumented="True">This namespace contains the text rendering infrastructure.</NamespaceSummaryItem>
120+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Utils" isDocumented="True">This namespace contains various utility classes.</NamespaceSummaryItem>
121+
<NamespaceSummaryItem name="XamlGeneratedNamespace" isDocumented="False" />
122+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Snippets" isDocumented="True">Snippets perform automatic text insertion. Snippets can be interactive after they were expanded, for example to allow the user to easily replace fields in the expanded snippet.</NamespaceSummaryItem>
123+
<NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Search" isDocumented="True">This namespace contains the SearchPanel UI that allows the user to search the current document.</NamespaceSummaryItem></NamespaceSummaries>
151124
<CleanIntermediates>True</CleanIntermediates>
152125
<SyntaxFilters>Standard</SyntaxFilters>
153126
<SdkLinkTarget>Blank</SdkLinkTarget>

ICSharpCode.AvalonEdit/Document/TextDocument.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ public string Text {
242242
}
243243
}
244244

245-
/// <inheritdoc/>
245+
/// <summary>
246+
/// This event is called after a group of changes is completed.
247+
/// </summary>
246248
/// <remarks><inheritdoc cref="Changing"/></remarks>
247249
public event EventHandler TextChanged;
248250

ICSharpCode.AvalonEdit/Highlighting/HighlightingBrush.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ internal SimpleHighlightingBrush(SolidColorBrush brush)
6868
this.brush = brush;
6969
}
7070

71-
/// <inheritdoc/>
71+
/// <summary>
72+
/// Creates a new HighlightingBrush with the specified color.
73+
/// </summary>
7274
public SimpleHighlightingBrush(Color color) : this(new SolidColorBrush(color)) {}
7375

7476
/// <inheritdoc/>

ICSharpCode.AvalonEdit/Highlighting/Xshd/IXshdVisitor.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,22 @@ namespace ICSharpCode.AvalonEdit.Highlighting.Xshd
2525
/// </summary>
2626
public interface IXshdVisitor
2727
{
28-
/// <summary/>
28+
/// <summary>Visit method for XshdRuleSet</summary>
2929
object VisitRuleSet(XshdRuleSet ruleSet);
3030

31-
/// <summary/>
31+
/// <summary>Visit method for XshdColor</summary>
3232
object VisitColor(XshdColor color);
3333

34-
/// <summary/>
34+
/// <summary>Visit method for XshdKeywords</summary>
3535
object VisitKeywords(XshdKeywords keywords);
3636

37-
/// <summary/>
37+
/// <summary>Visit method for XshdSpan</summary>
3838
object VisitSpan(XshdSpan span);
3939

40-
/// <summary/>
41-
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", Justification = "A VB programmer implementing a visitor?")]
40+
/// <summary>Visit method for XshdImport</summary>
4241
object VisitImport(XshdImport import);
4342

44-
/// <summary/>
43+
/// <summary>Visit method for XshdRule</summary>
4544
object VisitRule(XshdRule rule);
4645
}
4746
}

ICSharpCode.AvalonEdit/TextEditorAutomationPeer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
namespace ICSharpCode.AvalonEdit
2929
{
3030
/// <summary>
31-
/// Exposes <see cref="TextEditor"/> to automation.
31+
/// Exposes <see cref="ICSharpCode.AvalonEdit.TextEditor"/> to automation.
3232
/// </summary>
3333
public class TextEditorAutomationPeer : FrameworkElementAutomationPeer, IValueProvider
3434
{

packages/buildpackages.cmd

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,20 @@ SET buildoptions=/t:Rebuild /p:Configuration=Release /p:DebugType=PdbOnly
2222
@if %errorlevel% neq 0 exit /B 1
2323

2424
@echo Building documentation with SHFB (for processing <inheritdoc/>)
25-
%msbuild% %documentation%\ICSharpCode.AvalonEdit.shfbproj
25+
%msbuild% %documentation%\ICSharpCode.AvalonEdit.shfbproj /p:Configuration=Release
2626
@if %errorlevel% neq 0 exit /B 1
2727

28-
copy /Y %documentation%\Help\ICSharpCode.AvalonEdit.xml AvalonEdit\lib\Net35\ICSharpCode.AvalonEdit.xml
29-
copy /Y %documentation%\Help\ICSharpCode.AvalonEdit.xml AvalonEdit\lib\Net40\ICSharpCode.AvalonEdit.xml
28+
copy /Y %documentation%\IntelliSense\ICSharpCode.AvalonEdit.xml AvalonEdit\lib\Net35\ICSharpCode.AvalonEdit.xml
29+
@if errorlevel 1 exit /B 1
30+
copy /Y %documentation%\IntelliSense\ICSharpCode.AvalonEdit.xml AvalonEdit\lib\Net40\ICSharpCode.AvalonEdit.xml
31+
@if errorlevel 1 exit /B 1
3032

33+
mkdir AvalonEdit
3134
nuget.exe pack AvalonEdit.nuspec -Symbols -BasePath AvalonEdit -OutputDirectory AvalonEdit
32-
rem nuget.exe pack AvalonEdit.Sample.nuspec -BasePath AvalonEdit.Sample -OutputDirectory AvalonEdit.Sample
35+
@if %errorlevel% neq 0 exit /B 1
36+
mkdir AvalonEdit.Sample
37+
nuget.exe pack AvalonEdit.Sample.nuspec -BasePath AvalonEdit.Sample -OutputDirectory AvalonEdit.Sample
38+
@if %errorlevel% neq 0 exit /B 1
3339

3440
@ECHO OFF
3541
ENDLOCAL

0 commit comments

Comments
 (0)