diff --git a/RetailCoder.VBE/App.cs b/RetailCoder.VBE/App.cs
index 7b19f37fa4..01869df036 100644
--- a/RetailCoder.VBE/App.cs
+++ b/RetailCoder.VBE/App.cs
@@ -122,7 +122,9 @@ private void RefreshSelection()
private bool ShouldEvaluateCanExecute(Declaration selectedDeclaration, ParserState currentStatus)
{
- return _lastStatus != currentStatus || (selectedDeclaration != null && !selectedDeclaration.Equals(_lastSelectedDeclaration));
+ return _lastStatus != currentStatus ||
+ (selectedDeclaration != null && !selectedDeclaration.Equals(_lastSelectedDeclaration)) ||
+ (selectedDeclaration == null && _lastSelectedDeclaration != null);
}
private void _configService_SettingsChanged(object sender, EventArgs e)
diff --git a/RetailCoder.VBE/Inspections/InspectionsUI.de.resx b/RetailCoder.VBE/Inspections/InspectionsUI.de.resx
index 3aae6ab9ab..c8ba43fbcf 100644
--- a/RetailCoder.VBE/Inspections/InspectionsUI.de.resx
+++ b/RetailCoder.VBE/Inspections/InspectionsUI.de.resx
@@ -1,4 +1,4 @@
-
+
-
+
@@ -453,7 +453,7 @@
Übergebe Parameter als Wert
- Ändere '{0}$' zu '{0}'
+ Ändere '{0}' zu '{1}'
Verarbeite alle Vorkommen im Modul
@@ -521,4 +521,4 @@
Zuweisung in eine Objektvariable benötigt das 'Set'-Schlüsselwort.
-
+
\ No newline at end of file
diff --git a/RetailCoder.VBE/Inspections/InspectionsUI.resx b/RetailCoder.VBE/Inspections/InspectionsUI.resx
index ddcebc7a36..26ecd74f9f 100644
--- a/RetailCoder.VBE/Inspections/InspectionsUI.resx
+++ b/RetailCoder.VBE/Inspections/InspectionsUI.resx
@@ -1,4 +1,4 @@
-
+
-
+
@@ -453,7 +453,7 @@
Pass parameter by value
- Change '{0}' to '{0}$'
+ Change '{0}' to '{1}'
Fix all occurrences in module
@@ -522,4 +522,4 @@
Object variable assignment requires 'Set' keyword
-
+
\ No newline at end of file
diff --git a/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs b/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs
index cf1b5884b9..5b65ffc092 100644
--- a/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs
+++ b/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs
@@ -80,7 +80,8 @@ public ObjectVariableNotSetInspection(RubberduckParserState state)
Tokens.Long,
Tokens.LongLong,
Tokens.Single,
- Tokens.String
+ Tokens.String,
+ Tokens.Variant
};
public override IEnumerable GetInspectionResults()
@@ -97,8 +98,6 @@ public override IEnumerable GetInspectionResults()
return setStmtContext != null && setStmtContext.LET() == null;
}))
.Select(reference => new ObjectVariableNotSetInspectionResult(this, reference));
-
-
}
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/Inspections/UntypedFunctionUsageInspectionResult.cs b/RetailCoder.VBE/Inspections/UntypedFunctionUsageInspectionResult.cs
index 00e8b094bf..2137af96ff 100644
--- a/RetailCoder.VBE/Inspections/UntypedFunctionUsageInspectionResult.cs
+++ b/RetailCoder.VBE/Inspections/UntypedFunctionUsageInspectionResult.cs
@@ -34,7 +34,7 @@ public override string Description
public class UntypedFunctionUsageQuickFix : CodeInspectionQuickFix
{
public UntypedFunctionUsageQuickFix(ParserRuleContext context, QualifiedSelection selection)
- : base(context, selection, string.Format(InspectionsUI.QuickFixUseTypedFunction_, context.GetText()))
+ : base(context, selection, string.Format(InspectionsUI.QuickFixUseTypedFunction_, context.GetText(), context.GetText() + "$"))
{
}
@@ -49,6 +49,7 @@ public override void Fix()
var result = lines.Replace(originalInstruction, newInstruction);
module.ReplaceLine(selection.StartLine, result);
+ // FIXME trigger reparse
}
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldRefactoring.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldRefactoring.cs
index d171b0c78d..805f85d6fd 100644
--- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldRefactoring.cs
+++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldRefactoring.cs
@@ -20,11 +20,6 @@ public EncapsulateFieldRefactoring(VBE vbe, IRefactoringPresenterFactory _declarations;
private readonly VBE _vbe;
- private readonly RubberduckParserState _parserState;
private readonly IMessageBox _messageBox;
- private IList _declarations;
- private Declaration _target;
-
public IntroduceFieldRefactoring(VBE vbe, RubberduckParserState parserState, IMessageBox messageBox)
{
+ _declarations =
+ parserState.AllDeclarations.Where(i => !i.IsBuiltIn && i.DeclarationType == DeclarationType.Variable)
+ .ToList();
_vbe = vbe;
- _parserState = parserState;
_messageBox = messageBox;
}
- public bool CanExecute(QualifiedSelection selection)
- {
- _declarations = _parserState.AllUserDeclarations.ToList();
-
- _target = _declarations.FindVariable(selection);
- return _target != null;
- }
-
public void Refactor()
{
var selection = _vbe.ActiveCodePane.GetQualifiedSelection();
-
+
if (!selection.HasValue)
{
_messageBox.Show(RubberduckUI.PromoteVariable_InvalidSelection, RubberduckUI.IntroduceField_Caption,
@@ -52,14 +43,16 @@ public void Refactor()
public void Refactor(QualifiedSelection selection)
{
- if (!CanExecute(selection))
+ var target = _declarations.FindVariable(selection);
+
+ if (target == null)
{
_messageBox.Show(RubberduckUI.PromoteVariable_InvalidSelection, RubberduckUI.IntroduceParameter_Caption,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
- PromoteVariable(_target);
+ PromoteVariable(target);
}
public void Refactor(Declaration target)
@@ -85,35 +78,33 @@ private void PromoteVariable(Declaration target)
return;
}
- _target = target;
-
- RemoveVariable();
- AddField();
+ RemoveVariable(target);
+ AddField(target);
}
- private void AddField()
+ private void AddField(Declaration target)
{
- var module = _target.QualifiedName.QualifiedModuleName.Component.CodeModule;
- module.InsertLines(module.CountOfDeclarationLines + 1, GetFieldDefinition());
+ var module = target.QualifiedName.QualifiedModuleName.Component.CodeModule;
+ module.InsertLines(module.CountOfDeclarationLines + 1, GetFieldDefinition(target));
}
- private void RemoveVariable()
+ private void RemoveVariable(Declaration target)
{
Selection selection;
- var declarationText = _target.Context.GetText();
- var multipleDeclarations = _target.HasMultipleDeclarationsInStatement();
+ var declarationText = target.Context.GetText();
+ var multipleDeclarations = target.HasMultipleDeclarationsInStatement();
- var variableStmtContext = _target.GetVariableStmtContext();
+ var variableStmtContext = target.GetVariableStmtContext();
if (!multipleDeclarations)
{
declarationText = variableStmtContext.GetText();
- selection = _target.GetVariableStmtContextSelection();
+ selection = target.GetVariableStmtContextSelection();
}
else
{
- selection = new Selection(_target.Context.Start.Line, _target.Context.Start.Column,
- _target.Context.Stop.Line, _target.Context.Stop.Column);
+ selection = new Selection(target.Context.Start.Line, target.Context.Start.Column,
+ target.Context.Stop.Line, target.Context.Stop.Column);
}
var oldLines = _vbe.ActiveCodePane.CodeModule.GetLines(selection);
@@ -123,9 +114,9 @@ private void RemoveVariable()
if (multipleDeclarations)
{
- selection = _target.GetVariableStmtContextSelection();
+ selection = target.GetVariableStmtContextSelection();
newLines = RemoveExtraComma(_vbe.ActiveCodePane.CodeModule.GetLines(selection).Replace(oldLines, newLines),
- _target.CountOfDeclarationsInStatement(), _target.IndexOfVariableDeclarationInStatement());
+ target.CountOfDeclarationsInStatement(), target.IndexOfVariableDeclarationInStatement());
}
var newLinesWithoutExcessSpaces = newLines.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
@@ -189,9 +180,9 @@ private string RemoveExtraComma(string str, int numParams, int indexRemoved)
return str.Remove(str.NthIndexOf(',', commaToRemove), 1);
}
- private string GetFieldDefinition()
+ private string GetFieldDefinition(Declaration target)
{
- return "Private " + _target.IdentifierName + " As " + _target.AsTypeName;
+ return "Private " + target.IdentifierName + " As " + target.AsTypeName;
}
}
}
diff --git a/RetailCoder.VBE/Refactorings/IntroduceParameter/IntroduceParameterRefactoring.cs b/RetailCoder.VBE/Refactorings/IntroduceParameter/IntroduceParameterRefactoring.cs
index 008f196af6..fb02593c9d 100644
--- a/RetailCoder.VBE/Refactorings/IntroduceParameter/IntroduceParameterRefactoring.cs
+++ b/RetailCoder.VBE/Refactorings/IntroduceParameter/IntroduceParameterRefactoring.cs
@@ -18,11 +18,10 @@ namespace Rubberduck.Refactorings.IntroduceParameter
public class IntroduceParameterRefactoring : IRefactoring
{
private readonly VBE _vbe;
- private readonly RubberduckParserState _parserState;
+ private readonly RubberduckParserState _parseResult;
+ private readonly IList _declarations;
private readonly IMessageBox _messageBox;
- private IList _declarations;
-
private static readonly DeclarationType[] ValidDeclarationTypes =
{
DeclarationType.Function,
@@ -32,23 +31,14 @@ public class IntroduceParameterRefactoring : IRefactoring
DeclarationType.PropertySet
};
- private Declaration _target;
-
- public IntroduceParameterRefactoring(VBE vbe, RubberduckParserState parserState, IMessageBox messageBox)
+ public IntroduceParameterRefactoring(VBE vbe, RubberduckParserState parseResult, IMessageBox messageBox)
{
_vbe = vbe;
- _parserState = parserState;
+ _parseResult = parseResult;
+ _declarations = parseResult.AllDeclarations.ToList();
_messageBox = messageBox;
}
- public bool CanExecute(QualifiedSelection selection)
- {
- _declarations = _parserState.AllUserDeclarations.ToList();
-
- _target = _declarations.FindVariable(selection);
- return _target != null;
- }
-
public void Refactor()
{
var selection = _vbe.ActiveCodePane.CodeModule.GetSelection();
@@ -65,14 +55,16 @@ public void Refactor()
public void Refactor(QualifiedSelection selection)
{
- if (!CanExecute(selection))
+ var target = _declarations.FindVariable(selection);
+
+ if (target == null)
{
_messageBox.Show(RubberduckUI.PromoteVariable_InvalidSelection, RubberduckUI.IntroduceParameter_Caption,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
- PromoteVariable();
+ PromoteVariable(target);
}
public void Refactor(Declaration target)
@@ -86,33 +78,30 @@ public void Refactor(Declaration target)
throw new ArgumentException("Invalid declaration type", "target");
}
- _declarations = _parserState.AllUserDeclarations.ToList();
- _target = target;
-
- PromoteVariable();
+ PromoteVariable(target);
}
- private void PromoteVariable()
+ private void PromoteVariable(Declaration target)
{
- if (!PromptIfMethodImplementsInterface())
+ if (!PromptIfMethodImplementsInterface(target))
{
return;
}
- if (new[] { DeclarationType.ClassModule, DeclarationType.ProceduralModule }.Contains(_target.ParentDeclaration.DeclarationType))
+ if (new[] { DeclarationType.ClassModule, DeclarationType.ProceduralModule }.Contains(target.ParentDeclaration.DeclarationType))
{
_messageBox.Show(RubberduckUI.PromoteVariable_InvalidSelection, RubberduckUI.IntroduceParameter_Caption,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
- RemoveVariable();
- UpdateSignature();
+ RemoveVariable(target);
+ UpdateSignature(target);
}
- private bool PromptIfMethodImplementsInterface()
+ private bool PromptIfMethodImplementsInterface(Declaration targetVariable)
{
- var functionDeclaration = _declarations.FindTarget(_target.QualifiedSelection, ValidDeclarationTypes);
+ var functionDeclaration = _declarations.FindTarget(targetVariable.QualifiedSelection, ValidDeclarationTypes);
var interfaceImplementation = GetInterfaceImplementation(functionDeclaration);
if (interfaceImplementation == null)
@@ -129,9 +118,9 @@ private bool PromptIfMethodImplementsInterface()
return introduceParamToInterface != DialogResult.No;
}
- private void UpdateSignature()
+ private void UpdateSignature(Declaration targetVariable)
{
- var functionDeclaration = _declarations.FindTarget(_target.QualifiedSelection, ValidDeclarationTypes);
+ var functionDeclaration = _declarations.FindTarget(targetVariable.QualifiedSelection, ValidDeclarationTypes);
var proc = (dynamic)functionDeclaration.Context;
var paramList = (VBAParser.ArgListContext)proc.argList();
@@ -143,7 +132,7 @@ private void UpdateSignature()
functionDeclaration.DeclarationType != DeclarationType.PropertyLet &&
functionDeclaration.DeclarationType != DeclarationType.PropertySet)
{
- AddParameter(functionDeclaration, paramList, module);
+ AddParameter(functionDeclaration, targetVariable, paramList, module);
if (interfaceImplementation == null) { return; }
}
@@ -152,12 +141,12 @@ private void UpdateSignature()
functionDeclaration.DeclarationType == DeclarationType.PropertyLet ||
functionDeclaration.DeclarationType == DeclarationType.PropertySet)
{
- UpdateProperties(functionDeclaration);
+ UpdateProperties(functionDeclaration, targetVariable);
}
if (interfaceImplementation == null) { return; }
- UpdateSignature(interfaceImplementation);
+ UpdateSignature(interfaceImplementation, targetVariable);
var interfaceImplementations = _declarations.FindInterfaceImplementationMembers()
.Where(item => item.ProjectId == interfaceImplementation.ProjectId
@@ -166,20 +155,20 @@ private void UpdateSignature()
foreach (var implementation in interfaceImplementations)
{
- UpdateSignature(implementation);
+ UpdateSignature(implementation, targetVariable);
}
}
- private void UpdateSignature(Declaration targetMethod)
+ private void UpdateSignature(Declaration targetMethod, Declaration targetVariable)
{
var proc = (dynamic)targetMethod.Context;
var paramList = (VBAParser.ArgListContext)proc.argList();
var module = targetMethod.QualifiedName.QualifiedModuleName.Component.CodeModule;
- AddParameter(targetMethod, paramList, module);
+ AddParameter(targetMethod, targetVariable, paramList, module);
}
- private void AddParameter(Declaration targetMethod, VBAParser.ArgListContext paramList, CodeModule module)
+ private void AddParameter(Declaration targetMethod, Declaration targetVariable, VBAParser.ArgListContext paramList, CodeModule module)
{
var argList = paramList.arg();
var lastParam = argList.LastOrDefault();
@@ -189,25 +178,25 @@ private void AddParameter(Declaration targetMethod, VBAParser.ArgListContext par
if (lastParam == null)
{
// Increase index by one because VBA is dumb enough to use 1-based indexing
- newContent = newContent.Insert(newContent.IndexOf('(') + 1, GetParameterDefinition());
+ newContent = newContent.Insert(newContent.IndexOf('(') + 1, GetParameterDefinition(targetVariable));
}
else if (targetMethod.DeclarationType != DeclarationType.PropertyLet &&
targetMethod.DeclarationType != DeclarationType.PropertySet)
{
newContent = newContent.Replace(argList.Last().GetText(),
- argList.Last().GetText() + ", " + GetParameterDefinition());
+ argList.Last().GetText() + ", " + GetParameterDefinition(targetVariable));
}
else
{
newContent = newContent.Replace(argList.Last().GetText(),
- GetParameterDefinition() + ", " + argList.Last().GetText());
+ GetParameterDefinition(targetVariable) + ", " + argList.Last().GetText());
}
module.ReplaceLine(paramList.Start.Line, newContent);
module.DeleteLines(paramList.Start.Line + 1, paramList.GetSelection().LineCount - 1);
}
- private void UpdateProperties(Declaration knownProperty)
+ private void UpdateProperties(Declaration knownProperty, Declaration targetVariable)
{
var propertyGet = _declarations.FirstOrDefault(d =>
d.DeclarationType == DeclarationType.PropertyGet &&
@@ -245,27 +234,27 @@ private void UpdateProperties(Declaration knownProperty)
properties.OrderByDescending(o => o.Selection.StartLine)
.ThenByDescending(t => t.Selection.StartColumn))
{
- UpdateSignature(property);
+ UpdateSignature(property, targetVariable);
}
}
- private void RemoveVariable()
+ private void RemoveVariable(Declaration target)
{
Selection selection;
- var declarationText = _target.Context.GetText();
- var multipleDeclarations = _target.HasMultipleDeclarationsInStatement();
+ var declarationText = target.Context.GetText();
+ var multipleDeclarations = target.HasMultipleDeclarationsInStatement();
- var variableStmtContext = _target.GetVariableStmtContext();
+ var variableStmtContext = target.GetVariableStmtContext();
if (!multipleDeclarations)
{
declarationText = variableStmtContext.GetText();
- selection = _target.GetVariableStmtContextSelection();
+ selection = target.GetVariableStmtContextSelection();
}
else
{
- selection = new Selection(_target.Context.Start.Line, _target.Context.Start.Column,
- _target.Context.Stop.Line, _target.Context.Stop.Column);
+ selection = new Selection(target.Context.Start.Line, target.Context.Start.Column,
+ target.Context.Stop.Line, target.Context.Stop.Column);
}
var oldLines = _vbe.ActiveCodePane.CodeModule.GetLines(selection);
@@ -275,12 +264,12 @@ private void RemoveVariable()
if (multipleDeclarations)
{
- selection = _target.GetVariableStmtContextSelection();
+ selection = target.GetVariableStmtContextSelection();
newLines = RemoveExtraComma(_vbe.ActiveCodePane.CodeModule.GetLines(selection).Replace(oldLines, newLines),
- _target.CountOfDeclarationsInStatement(), _target.IndexOfVariableDeclarationInStatement());
+ target.CountOfDeclarationsInStatement(), target.IndexOfVariableDeclarationInStatement());
}
- var newLinesWithoutExcessSpaces = newLines.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
+ var newLinesWithoutExcessSpaces = newLines.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
for (var i = 0; i < newLinesWithoutExcessSpaces.Length; i++)
{
newLinesWithoutExcessSpaces[i] = newLinesWithoutExcessSpaces[i].RemoveExtraSpacesLeavingIndentation();
@@ -307,7 +296,7 @@ private void RemoveVariable()
private string GetOldSignature(Declaration target)
{
- var rewriter = _parserState.GetRewriter(target.QualifiedName.QualifiedModuleName.Component);
+ var rewriter = _parseResult.GetRewriter(target.QualifiedName.QualifiedModuleName.Component);
var context = target.Context;
var firstTokenIndex = context.Start.TokenIndex;
@@ -396,9 +385,9 @@ private string RemoveExtraComma(string str, int numParams, int indexRemoved)
return str.Remove(str.NthIndexOf(',', commaToRemove), 1);
}
- private string GetParameterDefinition()
+ private string GetParameterDefinition(Declaration target)
{
- return "ByVal " + _target.IdentifierName + " As " + _target.AsTypeName;
+ return "ByVal " + target.IdentifierName + " As " + target.AsTypeName;
}
}
}
diff --git a/RetailCoder.VBE/UI/Command/MenuItems/CodeExplorerCommandMenuItem.cs b/RetailCoder.VBE/UI/Command/MenuItems/CodeExplorerCommandMenuItem.cs
index 67af7e21d5..42d95d9b9e 100644
--- a/RetailCoder.VBE/UI/Command/MenuItems/CodeExplorerCommandMenuItem.cs
+++ b/RetailCoder.VBE/UI/Command/MenuItems/CodeExplorerCommandMenuItem.cs
@@ -1,5 +1,4 @@
using System.Windows.Input;
-using Rubberduck.Parsing.VBA;
using Rubberduck.UI.Command.MenuItems.ParentMenus;
namespace Rubberduck.UI.Command.MenuItems
@@ -13,11 +12,5 @@ public CodeExplorerCommandMenuItem(ICommand command)
public override string Key { get { return "RubberduckMenu_CodeExplorer"; } }
public override int DisplayOrder { get { return (int)NavigationMenuItemDisplayOrder.CodeExplorer; } }
-
- public override bool EvaluateCanExecute(RubberduckParserState state)
- {
- return state.Status == ParserState.Ready ||
- state.Status == ParserState.Resolving;
- }
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/UI/Command/MenuItems/InspectionResultsCommandMenuItem.cs b/RetailCoder.VBE/UI/Command/MenuItems/InspectionResultsCommandMenuItem.cs
index 30e9ee4294..82d41d61b9 100644
--- a/RetailCoder.VBE/UI/Command/MenuItems/InspectionResultsCommandMenuItem.cs
+++ b/RetailCoder.VBE/UI/Command/MenuItems/InspectionResultsCommandMenuItem.cs
@@ -1,5 +1,4 @@
using System.Windows.Input;
-using Rubberduck.Parsing.VBA;
using Rubberduck.UI.Command.MenuItems.ParentMenus;
namespace Rubberduck.UI.Command.MenuItems
@@ -13,10 +12,5 @@ public InspectionResultsCommandMenuItem(ICommand command)
public override string Key { get { return "RubberduckMenu_CodeInspections"; } }
public override int DisplayOrder { get { return (int)RubberduckMenuItemDisplayOrder.CodeInspections; } }
-
- public override bool EvaluateCanExecute(RubberduckParserState state)
- {
- return state.Status == ParserState.Ready;
- }
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/UI/Command/MenuItems/ToDoExplorerCommandMenuItem.cs b/RetailCoder.VBE/UI/Command/MenuItems/ToDoExplorerCommandMenuItem.cs
index 947e959b4a..e52a073f00 100644
--- a/RetailCoder.VBE/UI/Command/MenuItems/ToDoExplorerCommandMenuItem.cs
+++ b/RetailCoder.VBE/UI/Command/MenuItems/ToDoExplorerCommandMenuItem.cs
@@ -1,5 +1,4 @@
using System.Windows.Input;
-using Rubberduck.Parsing.VBA;
using Rubberduck.UI.Command.MenuItems.ParentMenus;
namespace Rubberduck.UI.Command.MenuItems
@@ -13,11 +12,5 @@ public ToDoExplorerCommandMenuItem(ICommand command)
public override string Key { get { return "RubberduckMenu_TodoItems"; } }
public override int DisplayOrder { get { return (int)NavigationMenuItemDisplayOrder.ToDoExplorer; } }
-
- public override bool EvaluateCanExecute(RubberduckParserState state)
- {
- return state.Status == ParserState.Ready ||
- state.Status == ParserState.Resolving;
- }
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs
index f637f8d8d5..623dba360b 100644
--- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs
+++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs
@@ -4,22 +4,17 @@
using Rubberduck.Parsing.Symbols;
using Rubberduck.Parsing.VBA;
using Rubberduck.Refactorings.IntroduceField;
-using Rubberduck.VBEditor;
-using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
namespace Rubberduck.UI.Command.Refactorings
{
public class RefactorIntroduceFieldCommand : RefactorCommandBase
{
private readonly RubberduckParserState _state;
- private readonly IntroduceFieldRefactoring _refactoring;
- private QualifiedSelection _qualifiedSelection;
public RefactorIntroduceFieldCommand (VBE vbe, RubberduckParserState state)
:base(vbe)
{
_state = state;
- _refactoring = new IntroduceFieldRefactoring(Vbe, _state, new MessageBox());
}
public override bool CanExecute(object parameter)
@@ -29,21 +24,30 @@ public override bool CanExecute(object parameter)
return false;
}
- var qualifiedSelection = Vbe.ActiveCodePane.GetQualifiedSelection();
-
- if (qualifiedSelection == null)
+ var selection = Vbe.ActiveCodePane.GetQualifiedSelection();
+ if (!selection.HasValue)
{
return false;
}
- _qualifiedSelection = qualifiedSelection.Value;
+ var target = _state.AllUserDeclarations.FindVariable(selection.Value);
+
+ var canExecute = target != null && target.ParentScopeDeclaration.DeclarationType.HasFlag(DeclarationType.Member);
- return _refactoring.CanExecute(_qualifiedSelection);
+ Debug.WriteLine("{0}.CanExecute evaluates to {1}", GetType().Name, canExecute);
+ return canExecute;
}
public override void Execute(object parameter)
{
- _refactoring.Refactor(_qualifiedSelection);
+ var selection = Vbe.ActiveCodePane.GetQualifiedSelection();
+ if (!selection.HasValue)
+ {
+ return;
+ }
+
+ var refactoring = new IntroduceFieldRefactoring(Vbe, _state, new MessageBox());
+ refactoring.Refactor(selection.Value);
}
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs
index 4da887cbab..e70a8eb769 100644
--- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs
+++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs
@@ -1,4 +1,7 @@
-using Microsoft.Vbe.Interop;
+using System.Diagnostics;
+using Microsoft.Vbe.Interop;
+using Rubberduck.Common;
+using Rubberduck.Parsing.Symbols;
using Rubberduck.Parsing.VBA;
using Rubberduck.Refactorings.IntroduceParameter;
using Rubberduck.VBEditor;
@@ -8,14 +11,11 @@ namespace Rubberduck.UI.Command.Refactorings
public class RefactorIntroduceParameterCommand : RefactorCommandBase
{
private readonly RubberduckParserState _state;
- private readonly IntroduceParameterRefactoring _refactoring;
- private QualifiedSelection _qualifiedSelection;
public RefactorIntroduceParameterCommand (VBE vbe, RubberduckParserState state)
:base(vbe)
{
_state = state;
- _refactoring = new IntroduceParameterRefactoring(Vbe, _state, new MessageBox());
}
public override bool CanExecute(object parameter)
@@ -25,21 +25,30 @@ public override bool CanExecute(object parameter)
return false;
}
- var qualifiedSelection = Vbe.ActiveCodePane.GetQualifiedSelection();
-
- if (qualifiedSelection == null)
+ var selection = Vbe.ActiveCodePane.GetQualifiedSelection();
+ if (!selection.HasValue)
{
return false;
}
- _qualifiedSelection = qualifiedSelection.Value;
+ var target = _state.AllUserDeclarations.FindVariable(selection.Value);
+
+ var canExecute = target != null && target.ParentScopeDeclaration.DeclarationType.HasFlag(DeclarationType.Member);
- return _refactoring.CanExecute(_qualifiedSelection);
+ Debug.WriteLine("{0}.CanExecute evaluates to {1}", GetType().Name, canExecute);
+ return canExecute;
}
public override void Execute(object parameter)
{
- _refactoring.Refactor(_qualifiedSelection);
+ var selection = Vbe.ActiveCodePane.GetQualifiedSelection();
+ if (!selection.HasValue)
+ {
+ return;
+ }
+
+ var refactoring = new IntroduceParameterRefactoring(Vbe, _state, new MessageBox());
+ refactoring.Refactor(selection.Value);
}
}
}
\ No newline at end of file
diff --git a/RetailCoder.VBE/UI/FindSymbol/FindSymbolViewModel.cs b/RetailCoder.VBE/UI/FindSymbol/FindSymbolViewModel.cs
index f05039b6e3..bf19cddc66 100644
--- a/RetailCoder.VBE/UI/FindSymbol/FindSymbolViewModel.cs
+++ b/RetailCoder.VBE/UI/FindSymbol/FindSymbolViewModel.cs
@@ -15,7 +15,8 @@ public class FindSymbolViewModel : INotifyPropertyChanged
private static readonly DeclarationType[] ExcludedTypes =
{
DeclarationType.Control,
- DeclarationType.ModuleOption
+ DeclarationType.ModuleOption,
+ DeclarationType.Project
};
public FindSymbolViewModel(IEnumerable declarations, DeclarationIconCache cache)
diff --git a/Rubberduck.Parsing/Grammar/VBALexer.cs b/Rubberduck.Parsing/Grammar/VBALexer.cs
index 49d426373a..e5ebd1e5c7 100644
--- a/Rubberduck.Parsing/Grammar/VBALexer.cs
+++ b/Rubberduck.Parsing/Grammar/VBALexer.cs
@@ -177,7 +177,7 @@ public VBALexer(ICharStream input)
public override string SerializedAtn { get { return _serializedATN; } }
public static readonly string _serializedATN =
- "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\x104\xAB0\b\x1"+
+ "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\x104\xAB3\b\x1"+
"\x4\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b"+
"\t\b\x4\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF"+
"\x4\x10\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15"+
@@ -412,337 +412,337 @@ public VBALexer(ICharStream input)
"\x3\x11F\x3\x11F\x3\x11F\x3\x11F\x3\x120\x3\x120\x3\x120\x3\x120\x3\x121"+
"\x3\x121\x3\x121\x3\x121\x3\x122\x3\x122\x3\x122\x5\x122\xA15\n\x122\x3"+
"\x123\x5\x123\xA18\n\x123\x3\x123\x3\x123\x3\x123\x3\x123\a\x123\xA1E"+
- "\n\x123\f\x123\xE\x123\xA21\v\x123\x3\x124\x3\x124\x3\x124\x3\x124\a\x124"+
- "\xA27\n\x124\f\x124\xE\x124\xA2A\v\x124\x3\x125\x3\x125\x3\x126\x3\x126"+
- "\x3\x127\x3\x127\x3\x128\x3\x128\a\x128\xA34\n\x128\f\x128\xE\x128\xA37"+
- "\v\x128\x3\x128\x3\x128\x6\x128\xA3B\n\x128\r\x128\xE\x128\xA3C\x3\x128"+
- "\x3\x128\x5\x128\xA41\n\x128\x3\x129\a\x129\xA44\n\x129\f\x129\xE\x129"+
- "\xA47\v\x129\x3\x129\x3\x129\a\x129\xA4B\n\x129\f\x129\xE\x129\xA4E\v"+
- "\x129\x3\x129\x5\x129\xA51\n\x129\x3\x129\x3\x129\x3\x12A\x3\x12A\x6\x12A"+
- "\xA57\n\x12A\r\x12A\xE\x12A\xA58\x3\x12A\x3\x12A\x6\x12A\xA5D\n\x12A\r"+
- "\x12A\xE\x12A\xA5E\x3\x12A\x3\x12A\x6\x12A\xA63\n\x12A\r\x12A\xE\x12A"+
- "\xA64\x3\x12A\x3\x12A\x6\x12A\xA69\n\x12A\r\x12A\xE\x12A\xA6A\x3\x12A"+
- "\x3\x12A\x6\x12A\xA6F\n\x12A\r\x12A\xE\x12A\xA70\x3\x12A\x3\x12A\x3\x12B"+
- "\x3\x12B\x3\x12C\x3\x12C\x3\x12D\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F"+
- "\x3\x130\x3\x130\x3\x131\x3\x131\x3\x132\x3\x132\x3\x133\x3\x133\x3\x134"+
- "\x3\x134\x3\x135\x3\x135\x3\x136\x3\x136\x3\x137\x3\x137\x3\x138\x3\x138"+
- "\x3\x139\x3\x139\x3\x13A\x3\x13A\x3\x13B\x3\x13B\x3\x13C\x3\x13C\x3\x13D"+
- "\x3\x13D\x3\x13E\x3\x13E\x3\x13F\x3\x13F\x3\x140\x3\x140\x3\x141\x3\x141"+
- "\x3\x142\x3\x142\x3\x143\x3\x143\x3\x144\x3\x144\x3\x145\x3\x145\x3\x146"+
- "\x3\x146\x3\x147\x3\x147\x3\x148\x3\x148\x2\x2\x2\x149\x3\x2\x3\x5\x2"+
- "\x4\a\x2\x5\t\x2\x6\v\x2\a\r\x2\b\xF\x2\t\x11\x2\n\x13\x2\v\x15\x2\f\x17"+
- "\x2\r\x19\x2\xE\x1B\x2\xF\x1D\x2\x10\x1F\x2\x11!\x2\x12#\x2\x13%\x2\x14"+
- "\'\x2\x15)\x2\x16+\x2\x17-\x2\x18/\x2\x19\x31\x2\x1A\x33\x2\x1B\x35\x2"+
- "\x1C\x37\x2\x1D\x39\x2\x1E;\x2\x1F=\x2 ?\x2!\x41\x2\"\x43\x2#\x45\x2$"+
- "G\x2%I\x2&K\x2\'M\x2(O\x2)Q\x2*S\x2+U\x2,W\x2-Y\x2.[\x2/]\x2\x30_\x2\x31"+
- "\x61\x2\x32\x63\x2\x33\x65\x2\x34g\x2\x35i\x2\x36k\x2\x37m\x2\x38o\x2"+
- "\x39q\x2:s\x2;u\x2{\x2?}\x2@\x7F\x2\x41\x81\x2\x42\x83\x2\x43"+
- "\x85\x2\x44\x87\x2\x45\x89\x2\x46\x8B\x2G\x8D\x2H\x8F\x2I\x91\x2J\x93"+
- "\x2K\x95\x2L\x97\x2M\x99\x2N\x9B\x2O\x9D\x2P\x9F\x2Q\xA1\x2R\xA3\x2S\xA5"+
- "\x2T\xA7\x2U\xA9\x2V\xAB\x2W\xAD\x2X\xAF\x2Y\xB1\x2Z\xB3\x2[\xB5\x2\\"+
- "\xB7\x2]\xB9\x2^\xBB\x2_\xBD\x2`\xBF\x2\x61\xC1\x2\x62\xC3\x2\x63\xC5"+
- "\x2\x64\xC7\x2\x65\xC9\x2\x66\xCB\x2g\xCD\x2h\xCF\x2i\xD1\x2j\xD3\x2k"+
- "\xD5\x2l\xD7\x2m\xD9\x2n\xDB\x2o\xDD\x2p\xDF\x2q\xE1\x2r\xE3\x2s\xE5\x2"+
- "t\xE7\x2u\xE9\x2v\xEB\x2w\xED\x2x\xEF\x2y\xF1\x2z\xF3\x2{\xF5\x2|\xF7"+
- "\x2}\xF9\x2~\xFB\x2\x7F\xFD\x2\x80\xFF\x2\x81\x101\x2\x82\x103\x2\x83"+
- "\x105\x2\x84\x107\x2\x85\x109\x2\x86\x10B\x2\x87\x10D\x2\x88\x10F\x2\x89"+
- "\x111\x2\x8A\x113\x2\x8B\x115\x2\x8C\x117\x2\x8D\x119\x2\x8E\x11B\x2\x8F"+
- "\x11D\x2\x90\x11F\x2\x91\x121\x2\x92\x123\x2\x93\x125\x2\x94\x127\x2\x95"+
- "\x129\x2\x96\x12B\x2\x97\x12D\x2\x98\x12F\x2\x99\x131\x2\x9A\x133\x2\x9B"+
- "\x135\x2\x9C\x137\x2\x9D\x139\x2\x9E\x13B\x2\x9F\x13D\x2\xA0\x13F\x2\xA1"+
- "\x141\x2\xA2\x143\x2\xA3\x145\x2\xA4\x147\x2\xA5\x149\x2\xA6\x14B\x2\xA7"+
- "\x14D\x2\xA8\x14F\x2\xA9\x151\x2\xAA\x153\x2\xAB\x155\x2\xAC\x157\x2\xAD"+
- "\x159\x2\xAE\x15B\x2\xAF\x15D\x2\xB0\x15F\x2\xB1\x161\x2\xB2\x163\x2\xB3"+
- "\x165\x2\xB4\x167\x2\xB5\x169\x2\xB6\x16B\x2\xB7\x16D\x2\xB8\x16F\x2\xB9"+
- "\x171\x2\xBA\x173\x2\xBB\x175\x2\xBC\x177\x2\xBD\x179\x2\xBE\x17B\x2\xBF"+
- "\x17D\x2\xC0\x17F\x2\xC1\x181\x2\xC2\x183\x2\xC3\x185\x2\xC4\x187\x2\xC5"+
- "\x189\x2\xC6\x18B\x2\xC7\x18D\x2\xC8\x18F\x2\xC9\x191\x2\xCA\x193\x2\xCB"+
- "\x195\x2\xCC\x197\x2\xCD\x199\x2\xCE\x19B\x2\xCF\x19D\x2\xD0\x19F\x2\xD1"+
- "\x1A1\x2\xD2\x1A3\x2\xD3\x1A5\x2\xD4\x1A7\x2\xD5\x1A9\x2\xD6\x1AB\x2\xD7"+
- "\x1AD\x2\xD8\x1AF\x2\xD9\x1B1\x2\xDA\x1B3\x2\xDB\x1B5\x2\xDC\x1B7\x2\xDD"+
- "\x1B9\x2\xDE\x1BB\x2\xDF\x1BD\x2\xE0\x1BF\x2\xE1\x1C1\x2\xE2\x1C3\x2\xE3"+
- "\x1C5\x2\xE4\x1C7\x2\xE5\x1C9\x2\xE6\x1CB\x2\xE7\x1CD\x2\xE8\x1CF\x2\xE9"+
- "\x1D1\x2\xEA\x1D3\x2\xEB\x1D5\x2\xEC\x1D7\x2\xED\x1D9\x2\xEE\x1DB\x2\xEF"+
- "\x1DD\x2\xF0\x1DF\x2\xF1\x1E1\x2\xF2\x1E3\x2\xF3\x1E5\x2\xF4\x1E7\x2\xF5"+
- "\x1E9\x2\xF6\x1EB\x2\xF7\x1ED\x2\xF8\x1EF\x2\x2\x1F1\x2\xF9\x1F3\x2\x2"+
- "\x1F5\x2\x2\x1F7\x2\x2\x1F9\x2\x2\x1FB\x2\x2\x1FD\x2\x2\x1FF\x2\xFA\x201"+
- "\x2\x2\x203\x2\x2\x205\x2\x2\x207\x2\x2\x209\x2\x2\x20B\x2\x2\x20D\x2"+
- "\x2\x20F\x2\x2\x211\x2\x2\x213\x2\x2\x215\x2\x2\x217\x2\x2\x219\x2\x2"+
- "\x21B\x2\x2\x21D\x2\x2\x21F\x2\x2\x221\x2\x2\x223\x2\x2\x225\x2\x2\x227"+
- "\x2\x2\x229\x2\x2\x22B\x2\x2\x22D\x2\x2\x22F\x2\x2\x231\x2\x2\x233\x2"+
- "\x2\x235\x2\x2\x237\x2\x2\x239\x2\x2\x23B\x2\x2\x23D\x2\x2\x23F\x2\x2"+
- "\x241\x2\x2\x243\x2\xFB\x245\x2\xFC\x247\x2\xFD\x249\x2\xFE\x24B\x2\xFF"+
- "\x24D\x2\x100\x24F\x2\x101\x251\x2\x102\x253\x2\x103\x255\x2\x2\x257\x2"+
- "\x2\x259\x2\x2\x25B\x2\x2\x25D\x2\x2\x25F\x2\x2\x261\x2\x2\x263\x2\x2"+
- "\x265\x2\x2\x267\x2\x2\x269\x2\x2\x26B\x2\x2\x26D\x2\x2\x26F\x2\x2\x271"+
- "\x2\x2\x273\x2\x2\x275\x2\x2\x277\x2\x2\x279\x2\x2\x27B\x2\x2\x27D\x2"+
- "\x2\x27F\x2\x2\x281\x2\x2\x283\x2\x2\x285\x2\x2\x287\x2\x2\x289\x2\x2"+
- "\x28B\x2\x2\x28D\x2\x2\x28F\x2\x104\x3\x2.\x5\x2\f\f\xF\xF$$\x3\x2\x32"+
- ":\x4\x2\x32;\x43H\x4\x2\'(``\x5\x2##%%\x42\x42\x4\x2\x46G\x66g\x4\x2-"+
- "-//\x4\x2./\x31\x31\x4\x2\x30\x30<<\x5\x2\f\f\xF\xF\x202A\x202B\x3\x2"+
- "\x42\x42\x4\x2\v\v\"\"\t\x2\v\f\xF\xF\"=??\x42\x42]`~~\v\x2\v\f\xF\xF"+
- "\".\x30\x30<=??\x42\x42]`~~\x6\x2\f\f\xF\xF##^_\f\x2\x43\\\x61\x61\x63"+
- "|\xA6\xA6\xB8\xB8\xBE\xBE\xC5\xC5\x155\x155\x2015\x2015\x2020\x2020\x3"+
- "\x2\x32;\r\x2\x32;\x43\\\x61\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5\xC5"+
- "\x155\x155\x2015\x2015\x2020\x2020\x4\x2\x43\x43\x63\x63\x4\x2\x44\x44"+
- "\x64\x64\x4\x2\x45\x45\x65\x65\x4\x2\x46\x46\x66\x66\x4\x2GGgg\x4\x2H"+
- "Hhh\x4\x2IIii\x4\x2JJjj\x4\x2KKkk\x4\x2LLll\x4\x2MMmm\x4\x2NNnn\x4\x2"+
- "OOoo\x4\x2PPpp\x4\x2QQqq\x4\x2RRrr\x4\x2SSss\x4\x2TTtt\x4\x2UUuu\x4\x2"+
- "VVvv\x4\x2WWww\x4\x2XXxx\x4\x2YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2\\\\||\xAC1"+
- "\x2\x3\x3\x2\x2\x2\x2\x5\x3\x2\x2\x2\x2\a\x3\x2\x2\x2\x2\t\x3\x2\x2\x2"+
- "\x2\v\x3\x2\x2\x2\x2\r\x3\x2\x2\x2\x2\xF\x3\x2\x2\x2\x2\x11\x3\x2\x2\x2"+
- "\x2\x13\x3\x2\x2\x2\x2\x15\x3\x2\x2\x2\x2\x17\x3\x2\x2\x2\x2\x19\x3\x2"+
- "\x2\x2\x2\x1B\x3\x2\x2\x2\x2\x1D\x3\x2\x2\x2\x2\x1F\x3\x2\x2\x2\x2!\x3"+
- "\x2\x2\x2\x2#\x3\x2\x2\x2\x2%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2\x2)\x3\x2\x2"+
- "\x2\x2+\x3\x2\x2\x2\x2-\x3\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31\x3\x2\x2\x2"+
- "\x2\x33\x3\x2\x2\x2\x2\x35\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2\x2\x39\x3\x2"+
- "\x2\x2\x2;\x3\x2\x2\x2\x2=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2\x41\x3\x2\x2"+
- "\x2\x2\x43\x3\x2\x2\x2\x2\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2\x2I\x3\x2\x2"+
- "\x2\x2K\x3\x2\x2\x2\x2M\x3\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3\x2\x2\x2\x2"+
- "S\x3\x2\x2\x2\x2U\x3\x2\x2\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2\x2\x2[\x3\x2"+
- "\x2\x2\x2]\x3\x2\x2\x2\x2_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2\x2\x63\x3\x2"+
- "\x2\x2\x2\x65\x3\x2\x2\x2\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2\x2k\x3\x2\x2"+
- "\x2\x2m\x3\x2\x2\x2\x2o\x3\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3\x2\x2\x2\x2"+
- "u\x3\x2\x2\x2\x2w\x3\x2\x2\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2\x2\x2}\x3\x2"+
- "\x2\x2\x2\x7F\x3\x2\x2\x2\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2\x2\x2\x2\x85"+
- "\x3\x2\x2\x2\x2\x87\x3\x2\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B\x3\x2\x2\x2"+
- "\x2\x8D\x3\x2\x2\x2\x2\x8F\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2\x2\x93\x3\x2"+
- "\x2\x2\x2\x95\x3\x2\x2\x2\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2\x2\x2\x2\x9B"+
- "\x3\x2\x2\x2\x2\x9D\x3\x2\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1\x3\x2\x2\x2"+
- "\x2\xA3\x3\x2\x2\x2\x2\xA5\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2\x2\xA9\x3\x2"+
- "\x2\x2\x2\xAB\x3\x2\x2\x2\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2\x2\x2\x2\xB1"+
- "\x3\x2\x2\x2\x2\xB3\x3\x2\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7\x3\x2\x2\x2"+
- "\x2\xB9\x3\x2\x2\x2\x2\xBB\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2\x2\xBF\x3\x2"+
- "\x2\x2\x2\xC1\x3\x2\x2\x2\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2\x2\x2\x2\xC7"+
- "\x3\x2\x2\x2\x2\xC9\x3\x2\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD\x3\x2\x2\x2"+
- "\x2\xCF\x3\x2\x2\x2\x2\xD1\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2\x2\xD5\x3\x2"+
- "\x2\x2\x2\xD7\x3\x2\x2\x2\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2\x2\x2\x2\xDD"+
- "\x3\x2\x2\x2\x2\xDF\x3\x2\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3\x3\x2\x2\x2"+
- "\x2\xE5\x3\x2\x2\x2\x2\xE7\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2\x2\xEB\x3\x2"+
- "\x2\x2\x2\xED\x3\x2\x2\x2\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2\x2\x2\x2\xF3"+
- "\x3\x2\x2\x2\x2\xF5\x3\x2\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9\x3\x2\x2\x2"+
- "\x2\xFB\x3\x2\x2\x2\x2\xFD\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2\x2\x101\x3\x2"+
- "\x2\x2\x2\x103\x3\x2\x2\x2\x2\x105\x3\x2\x2\x2\x2\x107\x3\x2\x2\x2\x2"+
- "\x109\x3\x2\x2\x2\x2\x10B\x3\x2\x2\x2\x2\x10D\x3\x2\x2\x2\x2\x10F\x3\x2"+
- "\x2\x2\x2\x111\x3\x2\x2\x2\x2\x113\x3\x2\x2\x2\x2\x115\x3\x2\x2\x2\x2"+
- "\x117\x3\x2\x2\x2\x2\x119\x3\x2\x2\x2\x2\x11B\x3\x2\x2\x2\x2\x11D\x3\x2"+
- "\x2\x2\x2\x11F\x3\x2\x2\x2\x2\x121\x3\x2\x2\x2\x2\x123\x3\x2\x2\x2\x2"+
- "\x125\x3\x2\x2\x2\x2\x127\x3\x2\x2\x2\x2\x129\x3\x2\x2\x2\x2\x12B\x3\x2"+
- "\x2\x2\x2\x12D\x3\x2\x2\x2\x2\x12F\x3\x2\x2\x2\x2\x131\x3\x2\x2\x2\x2"+
- "\x133\x3\x2\x2\x2\x2\x135\x3\x2\x2\x2\x2\x137\x3\x2\x2\x2\x2\x139\x3\x2"+
- "\x2\x2\x2\x13B\x3\x2\x2\x2\x2\x13D\x3\x2\x2\x2\x2\x13F\x3\x2\x2\x2\x2"+
- "\x141\x3\x2\x2\x2\x2\x143\x3\x2\x2\x2\x2\x145\x3\x2\x2\x2\x2\x147\x3\x2"+
- "\x2\x2\x2\x149\x3\x2\x2\x2\x2\x14B\x3\x2\x2\x2\x2\x14D\x3\x2\x2\x2\x2"+
- "\x14F\x3\x2\x2\x2\x2\x151\x3\x2\x2\x2\x2\x153\x3\x2\x2\x2\x2\x155\x3\x2"+
- "\x2\x2\x2\x157\x3\x2\x2\x2\x2\x159\x3\x2\x2\x2\x2\x15B\x3\x2\x2\x2\x2"+
- "\x15D\x3\x2\x2\x2\x2\x15F\x3\x2\x2\x2\x2\x161\x3\x2\x2\x2\x2\x163\x3\x2"+
- "\x2\x2\x2\x165\x3\x2\x2\x2\x2\x167\x3\x2\x2\x2\x2\x169\x3\x2\x2\x2\x2"+
- "\x16B\x3\x2\x2\x2\x2\x16D\x3\x2\x2\x2\x2\x16F\x3\x2\x2\x2\x2\x171\x3\x2"+
- "\x2\x2\x2\x173\x3\x2\x2\x2\x2\x175\x3\x2\x2\x2\x2\x177\x3\x2\x2\x2\x2"+
- "\x179\x3\x2\x2\x2\x2\x17B\x3\x2\x2\x2\x2\x17D\x3\x2\x2\x2\x2\x17F\x3\x2"+
- "\x2\x2\x2\x181\x3\x2\x2\x2\x2\x183\x3\x2\x2\x2\x2\x185\x3\x2\x2\x2\x2"+
- "\x187\x3\x2\x2\x2\x2\x189\x3\x2\x2\x2\x2\x18B\x3\x2\x2\x2\x2\x18D\x3\x2"+
- "\x2\x2\x2\x18F\x3\x2\x2\x2\x2\x191\x3\x2\x2\x2\x2\x193\x3\x2\x2\x2\x2"+
- "\x195\x3\x2\x2\x2\x2\x197\x3\x2\x2\x2\x2\x199\x3\x2\x2\x2\x2\x19B\x3\x2"+
- "\x2\x2\x2\x19D\x3\x2\x2\x2\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3\x2\x2\x2\x2"+
- "\x1A3\x3\x2\x2\x2\x2\x1A5\x3\x2\x2\x2\x2\x1A7\x3\x2\x2\x2\x2\x1A9\x3\x2"+
- "\x2\x2\x2\x1AB\x3\x2\x2\x2\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3\x2\x2\x2\x2"+
- "\x1B1\x3\x2\x2\x2\x2\x1B3\x3\x2\x2\x2\x2\x1B5\x3\x2\x2\x2\x2\x1B7\x3\x2"+
- "\x2\x2\x2\x1B9\x3\x2\x2\x2\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3\x2\x2\x2\x2"+
- "\x1BF\x3\x2\x2\x2\x2\x1C1\x3\x2\x2\x2\x2\x1C3\x3\x2\x2\x2\x2\x1C5\x3\x2"+
- "\x2\x2\x2\x1C7\x3\x2\x2\x2\x2\x1C9\x3\x2\x2\x2\x2\x1CB\x3\x2\x2\x2\x2"+
- "\x1CD\x3\x2\x2\x2\x2\x1CF\x3\x2\x2\x2\x2\x1D1\x3\x2\x2\x2\x2\x1D3\x3\x2"+
- "\x2\x2\x2\x1D5\x3\x2\x2\x2\x2\x1D7\x3\x2\x2\x2\x2\x1D9\x3\x2\x2\x2\x2"+
- "\x1DB\x3\x2\x2\x2\x2\x1DD\x3\x2\x2\x2\x2\x1DF\x3\x2\x2\x2\x2\x1E1\x3\x2"+
- "\x2\x2\x2\x1E3\x3\x2\x2\x2\x2\x1E5\x3\x2\x2\x2\x2\x1E7\x3\x2\x2\x2\x2"+
- "\x1E9\x3\x2\x2\x2\x2\x1EB\x3\x2\x2\x2\x2\x1ED\x3\x2\x2\x2\x2\x1F1\x3\x2"+
- "\x2\x2\x2\x1FF\x3\x2\x2\x2\x2\x243\x3\x2\x2\x2\x2\x245\x3\x2\x2\x2\x2"+
- "\x247\x3\x2\x2\x2\x2\x249\x3\x2\x2\x2\x2\x24B\x3\x2\x2\x2\x2\x24D\x3\x2"+
- "\x2\x2\x2\x24F\x3\x2\x2\x2\x2\x251\x3\x2\x2\x2\x2\x253\x3\x2\x2\x2\x2"+
- "\x28F\x3\x2\x2\x2\x3\x291\x3\x2\x2\x2\x5\x295\x3\x2\x2\x2\a\x299\x3\x2"+
- "\x2\x2\t\x29F\x3\x2\x2\x2\v\x2A5\x3\x2\x2\x2\r\x2AB\x3\x2\x2\x2\xF\x2B0"+
- "\x3\x2\x2\x2\x11\x2B6\x3\x2\x2\x2\x13\x2BB\x3\x2\x2\x2\x15\x2C0\x3\x2"+
- "\x2\x2\x17\x2C5\x3\x2\x2\x2\x19\x2CC\x3\x2\x2\x2\x1B\x2D1\x3\x2\x2\x2"+
- "\x1D\x2D9\x3\x2\x2\x2\x1F\x2E1\x3\x2\x2\x2!\x2E6\x3\x2\x2\x2#\x2EB\x3"+
- "\x2\x2\x2%\x2F4\x3\x2\x2\x2\'\x2F9\x3\x2\x2\x2)\x2FF\x3\x2\x2\x2+\x305"+
- "\x3\x2\x2\x2-\x30E\x3\x2\x2\x2/\x313\x3\x2\x2\x2\x31\x317\x3\x2\x2\x2"+
- "\x33\x31E\x3\x2\x2\x2\x35\x322\x3\x2\x2\x2\x37\x329\x3\x2\x2\x2\x39\x32D"+
- "\x3\x2\x2\x2;\x332\x3\x2\x2\x2=\x33B\x3\x2\x2\x2?\x343\x3\x2\x2\x2\x41"+
- "\x348\x3\x2\x2\x2\x43\x34E\x3\x2\x2\x2\x45\x353\x3\x2\x2\x2G\x35A\x3\x2"+
- "\x2\x2I\x35F\x3\x2\x2\x2K\x365\x3\x2\x2\x2M\x369\x3\x2\x2\x2O\x370\x3"+
- "\x2\x2\x2Q\x372\x3\x2\x2\x2S\x374\x3\x2\x2\x2U\x376\x3\x2\x2\x2W\x378"+
- "\x3\x2\x2\x2Y\x37A\x3\x2\x2\x2[\x37C\x3\x2\x2\x2]\x37E\x3\x2\x2\x2_\x380"+
- "\x3\x2\x2\x2\x61\x382\x3\x2\x2\x2\x63\x384\x3\x2\x2\x2\x65\x38B\x3\x2"+
- "\x2\x2g\x395\x3\x2\x2\x2i\x39B\x3\x2\x2\x2k\x39F\x3\x2\x2\x2m\x3A9\x3"+
- "\x2\x2\x2o\x3B5\x3\x2\x2\x2q\x3BC\x3\x2\x2\x2s\x3BF\x3\x2\x2\x2u\x3C5"+
- "\x3\x2\x2\x2w\x3CA\x3\x2\x2\x2y\x3D1\x3\x2\x2\x2{\x3D9\x3\x2\x2\x2}\x3DF"+
- "\x3\x2\x2\x2\x7F\x3E5\x3\x2\x2\x2\x81\x3EA\x3\x2\x2\x2\x83\x3EF\x3\x2"+
- "\x2\x2\x85\x3F4\x3\x2\x2\x2\x87\x3FA\x3\x2\x2\x2\x89\x402\x3\x2\x2\x2"+
- "\x8B\x408\x3\x2\x2\x2\x8D\x40E\x3\x2\x2\x2\x8F\x414\x3\x2\x2\x2\x91\x41D"+
- "\x3\x2\x2\x2\x93\x422\x3\x2\x2\x2\x95\x42A\x3\x2\x2\x2\x97\x432\x3\x2"+
- "\x2\x2\x99\x43A\x3\x2\x2\x2\x9B\x442\x3\x2\x2\x2\x9D\x449\x3\x2\x2\x2"+
- "\x9F\x450\x3\x2\x2\x2\xA1\x457\x3\x2\x2\x2\xA3\x45E\x3\x2\x2\x2\xA5\x468"+
- "\x3\x2\x2\x2\xA7\x472\x3\x2\x2\x2\xA9\x479\x3\x2\x2\x2\xAB\x480\x3\x2"+
- "\x2\x2\xAD\x487\x3\x2\x2\x2\xAF\x48E\x3\x2\x2\x2\xB1\x49C\x3\x2\x2\x2"+
- "\xB3\x4A0\x3\x2\x2\x2\xB5\x4A3\x3\x2\x2\x2\xB7\x4AA\x3\x2\x2\x2\xB9\x4AF"+
- "\x3\x2\x2\x2\xBB\x4B4\x3\x2\x2\x2\xBD\x4BB\x3\x2\x2\x2\xBF\x4C1\x3\x2"+
- "\x2\x2\xC1\x4CA\x3\x2\x2\x2\xC3\x4D7\x3\x2\x2\x2\xC5\x4DE\x3\x2\x2\x2"+
- "\xC7\x4EB\x3\x2\x2\x2\xC9\x4F6\x3\x2\x2\x2\xCB\x4FE\x3\x2\x2\x2\xCD\x507"+
- "\x3\x2\x2\x2\xCF\x510\x3\x2\x2\x2\xD1\x514\x3\x2\x2\x2\xD3\x519\x3\x2"+
- "\x2\x2\xD5\x51D\x3\x2\x2\x2\xD7\x523\x3\x2\x2\x2\xD9\x529\x3\x2\x2\x2"+
- "\xDB\x52F\x3\x2\x2\x2\xDD\x537\x3\x2\x2\x2\xDF\x540\x3\x2\x2\x2\xE1\x54E"+
- "\x3\x2\x2\x2\xE3\x55C\x3\x2\x2\x2\xE5\x565\x3\x2\x2\x2\xE7\x56B\x3\x2"+
- "\x2\x2\xE9\x574\x3\x2\x2\x2\xEB\x57B\x3\x2\x2\x2\xED\x57F\x3\x2\x2\x2"+
- "\xEF\x588\x3\x2\x2\x2\xF1\x58C\x3\x2\x2\x2\xF3\x593\x3\x2\x2\x2\xF5\x599"+
- "\x3\x2\x2\x2\xF7\x59E\x3\x2\x2\x2\xF9\x5A1\x3\x2\x2\x2\xFB\x5A5\x3\x2"+
- "\x2\x2\xFD\x5B0\x3\x2\x2\x2\xFF\x5B3\x3\x2\x2\x2\x101\x5B9\x3\x2\x2\x2"+
- "\x103\x5BC\x3\x2\x2\x2\x105\x5C4\x3\x2\x2\x2\x107\x5C9\x3\x2\x2\x2\x109"+
- "\x5CE\x3\x2\x2\x2\x10B\x5D3\x3\x2\x2\x2\x10D\x5D8\x3\x2\x2\x2\x10F\x5DD"+
- "\x3\x2\x2\x2\x111\x5E1\x3\x2\x2\x2\x113\x5E5\x3\x2\x2\x2\x115\x5EA\x3"+
- "\x2\x2\x2\x117\x5F5\x3\x2\x2\x2\x119\x5FF\x3\x2\x2\x2\x11B\x60A\x3\x2"+
- "\x2\x2\x11D\x61A\x3\x2\x2\x2\x11F\x61F\x3\x2\x2\x2\x121\x622\x3\x2\x2"+
- "\x2\x123\x626\x3\x2\x2\x2\x125\x62C\x3\x2\x2\x2\x127\x630\x3\x2\x2\x2"+
- "\x129\x635\x3\x2\x2\x2\x12B\x63A\x3\x2\x2\x2\x12D\x63E\x3\x2\x2\x2\x12F"+
- "\x642\x3\x2\x2\x2\x131\x64A\x3\x2\x2\x2\x133\x64F\x3\x2\x2\x2\x135\x652"+
- "\x3\x2\x2\x2\x137\x65B\x3\x2\x2\x2\x139\x66A\x3\x2\x2\x2\x13B\x66F\x3"+
- "\x2\x2\x2\x13D\x678\x3\x2\x2\x2\x13F\x684\x3\x2\x2\x2\x141\x694\x3\x2"+
- "\x2\x2\x143\x6A3\x3\x2\x2\x2\x145\x6B9\x3\x2\x2\x2\x147\x6BC\x3\x2\x2"+
- "\x2\x149\x6C3\x3\x2\x2\x2\x14B\x6CE\x3\x2\x2\x2\x14D\x6D7\x3\x2\x2\x2"+
- "\x14F\x6DD\x3\x2\x2\x2\x151\x6E5\x3\x2\x2\x2\x153\x6F2\x3\x2\x2\x2\x155"+
- "\x6FF\x3\x2\x2\x2\x157\x70C\x3\x2\x2\x2\x159\x714\x3\x2\x2\x2\x15B\x71B"+
- "\x3\x2\x2\x2\x15D\x71F\x3\x2\x2\x2\x15F\x726\x3\x2\x2\x2\x161\x730\x3"+
- "\x2\x2\x2\x163\x73B\x3\x2\x2\x2\x165\x740\x3\x2\x2\x2\x167\x74B\x3\x2"+
- "\x2\x2\x169\x751\x3\x2\x2\x2\x16B\x755\x3\x2\x2\x2\x16D\x75B\x3\x2\x2"+
- "\x2\x16F\x762\x3\x2\x2\x2\x171\x769\x3\x2\x2\x2\x173\x76F\x3\x2\x2\x2"+
- "\x175\x774\x3\x2\x2\x2\x177\x780\x3\x2\x2\x2\x179\x78C\x3\x2\x2\x2\x17B"+
- "\x791\x3\x2\x2\x2\x17D\x798\x3\x2\x2\x2\x17F\x7A1\x3\x2\x2\x2\x181\x7A5"+
- "\x3\x2\x2\x2\x183\x7AD\x3\x2\x2\x2\x185\x7B4\x3\x2\x2\x2\x187\x7BB\x3"+
- "\x2\x2\x2\x189\x7BF\x3\x2\x2\x2\x18B\x7C6\x3\x2\x2\x2\x18D\x7CB\x3\x2"+
- "\x2\x2\x18F\x7D0\x3\x2\x2\x2\x191\x7D7\x3\x2\x2\x2\x193\x7DB\x3\x2\x2"+
- "\x2\x195\x7DF\x3\x2\x2\x2\x197\x7E4\x3\x2\x2\x2\x199\x7E9\x3\x2\x2\x2"+
- "\x19B\x7EE\x3\x2\x2\x2\x19D\x7F1\x3\x2\x2\x2\x19F\x7F6\x3\x2\x2\x2\x1A1"+
- "\x7FB\x3\x2\x2\x2\x1A3\x802\x3\x2\x2\x2\x1A5\x809\x3\x2\x2\x2\x1A7\x810"+
- "\x3\x2\x2\x2\x1A9\x816\x3\x2\x2\x2\x1AB\x81E\x3\x2\x2\x2\x1AD\x826\x3"+
- "\x2\x2\x2\x1AF\x82B\x3\x2\x2\x2\x1B1\x831\x3\x2\x2\x2\x1B3\x837\x3\x2"+
- "\x2\x2\x1B5\x83C\x3\x2\x2\x2\x1B7\x847\x3\x2\x2\x2\x1B9\x84D\x3\x2\x2"+
- "\x2\x1BB\x851\x3\x2\x2\x2\x1BD\x854\x3\x2\x2\x2\x1BF\x856\x3\x2\x2\x2"+
- "\x1C1\x858\x3\x2\x2\x2\x1C3\x85E\x3\x2\x2\x2\x1C5\x860\x3\x2\x2\x2\x1C7"+
- "\x866\x3\x2\x2\x2\x1C9\x868\x3\x2\x2\x2\x1CB\x86A\x3\x2\x2\x2\x1CD\x86C"+
- "\x3\x2\x2\x2\x1CF\x86E\x3\x2\x2\x2\x1D1\x874\x3\x2\x2\x2\x1D3\x876\x3"+
- "\x2\x2\x2\x1D5\x878\x3\x2\x2\x2\x1D7\x87A\x3\x2\x2\x2\x1D9\x87F\x3\x2"+
- "\x2\x2\x1DB\x888\x3\x2\x2\x2\x1DD\x892\x3\x2\x2\x2\x1DF\x8A0\x3\x2\x2"+
- "\x2\x1E1\x8AC\x3\x2\x2\x2\x1E3\x8BC\x3\x2\x2\x2\x1E5\x8BE\x3\x2\x2\x2"+
- "\x1E7\x8C0\x3\x2\x2\x2\x1E9\x8CB\x3\x2\x2\x2\x1EB\x8D6\x3\x2\x2\x2\x1ED"+
- "\x8E8\x3\x2\x2\x2\x1EF\x8FA\x3\x2\x2\x2\x1F1\x8FC\x3\x2\x2\x2\x1F3\x900"+
- "\x3\x2\x2\x2\x1F5\x902\x3\x2\x2\x2\x1F7\x904\x3\x2\x2\x2\x1F9\x90D\x3"+
- "\x2\x2\x2\x1FB\x90F\x3\x2\x2\x2\x1FD\x912\x3\x2\x2\x2\x1FF\x916\x3\x2"+
- "\x2\x2\x201\x922\x3\x2\x2\x2\x203\x924\x3\x2\x2\x2\x205\x932\x3\x2\x2"+
- "\x2\x207\x935\x3\x2\x2\x2\x209\x93F\x3\x2\x2\x2\x20B\x94D\x3\x2\x2\x2"+
- "\x20D\x95A\x3\x2\x2\x2\x20F\x979\x3\x2\x2\x2\x211\x97C\x3\x2\x2\x2\x213"+
- "\x983\x3\x2\x2\x2\x215\x98F\x3\x2\x2\x2\x217\x997\x3\x2\x2\x2\x219\x9A0"+
- "\x3\x2\x2\x2\x21B\x9A6\x3\x2\x2\x2\x21D\x9AC\x3\x2\x2\x2\x21F\x9B0\x3"+
- "\x2\x2\x2\x221\x9B5\x3\x2\x2\x2\x223\x9BA\x3\x2\x2\x2\x225\x9C1\x3\x2"+
- "\x2\x2\x227\x9CB\x3\x2\x2\x2\x229\x9D3\x3\x2\x2\x2\x22B\x9DC\x3\x2\x2"+
- "\x2\x22D\x9E5\x3\x2\x2\x2\x22F\x9E9\x3\x2\x2\x2\x231\x9ED\x3\x2\x2\x2"+
- "\x233\x9F1\x3\x2\x2\x2\x235\x9F5\x3\x2\x2\x2\x237\x9F9\x3\x2\x2\x2\x239"+
- "\x9FD\x3\x2\x2\x2\x23B\xA01\x3\x2\x2\x2\x23D\xA05\x3\x2\x2\x2\x23F\xA09"+
- "\x3\x2\x2\x2\x241\xA0D\x3\x2\x2\x2\x243\xA14\x3\x2\x2\x2\x245\xA17\x3"+
- "\x2\x2\x2\x247\xA22\x3\x2\x2\x2\x249\xA2B\x3\x2\x2\x2\x24B\xA2D\x3\x2"+
- "\x2\x2\x24D\xA2F\x3\x2\x2\x2\x24F\xA40\x3\x2\x2\x2\x251\xA45\x3\x2\x2"+
- "\x2\x253\xA54\x3\x2\x2\x2\x255\xA74\x3\x2\x2\x2\x257\xA76\x3\x2\x2\x2"+
- "\x259\xA78\x3\x2\x2\x2\x25B\xA7A\x3\x2\x2\x2\x25D\xA7C\x3\x2\x2\x2\x25F"+
- "\xA7E\x3\x2\x2\x2\x261\xA80\x3\x2\x2\x2\x263\xA82\x3\x2\x2\x2\x265\xA84"+
- "\x3\x2\x2\x2\x267\xA86\x3\x2\x2\x2\x269\xA88\x3\x2\x2\x2\x26B\xA8A\x3"+
- "\x2\x2\x2\x26D\xA8C\x3\x2\x2\x2\x26F\xA8E\x3\x2\x2\x2\x271\xA90\x3\x2"+
- "\x2\x2\x273\xA92\x3\x2\x2\x2\x275\xA94\x3\x2\x2\x2\x277\xA96\x3\x2\x2"+
- "\x2\x279\xA98\x3\x2\x2\x2\x27B\xA9A\x3\x2\x2\x2\x27D\xA9C\x3\x2\x2\x2"+
- "\x27F\xA9E\x3\x2\x2\x2\x281\xAA0\x3\x2\x2\x2\x283\xAA2\x3\x2\x2\x2\x285"+
- "\xAA4\x3\x2\x2\x2\x287\xAA6\x3\x2\x2\x2\x289\xAA8\x3\x2\x2\x2\x28B\xAAA"+
- "\x3\x2\x2\x2\x28D\xAAC\x3\x2\x2\x2\x28F\xAAE\x3\x2\x2\x2\x291\x292\x5"+
- "\x25B\x12E\x2\x292\x293\x5\x25D\x12F\x2\x293\x294\x5\x27F\x140\x2\x294"+
- "\x4\x3\x2\x2\x2\x295\x296\x5\x25B\x12E\x2\x296\x297\x5\x275\x13B\x2\x297"+
- "\x298\x5\x28B\x146\x2\x298\x6\x3\x2\x2\x2\x299\x29A\x5\x25B\x12E\x2\x29A"+
- "\x29B\x5\x27D\x13F\x2\x29B\x29C\x5\x27D\x13F\x2\x29C\x29D\x5\x25B\x12E"+
- "\x2\x29D\x29E\x5\x28B\x146\x2\x29E\b\x3\x2\x2\x2\x29F\x2A0\x5\x25F\x130"+
- "\x2\x2A0\x2A1\x5\x25D\x12F\x2\x2A1\x2A2\x5\x277\x13C\x2\x2A2\x2A3\x5\x277"+
- "\x13C\x2\x2A3\x2A4\x5\x271\x139\x2\x2A4\n\x3\x2\x2\x2\x2A5\x2A6\x5\x25F"+
- "\x130\x2\x2A6\x2A7\x5\x25D\x12F\x2\x2A7\x2A8\x5\x28B\x146\x2\x2A8\x2A9"+
- "\x5\x281\x141\x2\x2A9\x2AA\x5\x263\x132\x2\x2AA\f\x3\x2\x2\x2\x2AB\x2AC"+
- "\x5\x25F\x130\x2\x2AC\x2AD\x5\x25F\x130\x2\x2AD\x2AE\x5\x283\x142\x2\x2AE"+
- "\x2AF\x5\x27D\x13F\x2\x2AF\xE\x3\x2\x2\x2\x2B0\x2B1\x5\x25F\x130\x2\x2B1"+
- "\x2B2\x5\x261\x131\x2\x2B2\x2B3\x5\x25B\x12E\x2\x2B3\x2B4\x5\x281\x141"+
- "\x2\x2B4\x2B5\x5\x263\x132\x2\x2B5\x10\x3\x2\x2\x2\x2B6\x2B7\x5\x25F\x130"+
- "\x2\x2B7\x2B8\x5\x261\x131\x2\x2B8\x2B9\x5\x25D\x12F\x2\x2B9\x2BA\x5\x271"+
- "\x139\x2\x2BA\x12\x3\x2\x2\x2\x2BB\x2BC\x5\x25F\x130\x2\x2BC\x2BD\x5\x261"+
- "\x131\x2\x2BD\x2BE\x5\x263\x132\x2\x2BE\x2BF\x5\x25F\x130\x2\x2BF\x14"+
- "\x3\x2\x2\x2\x2C0\x2C1\x5\x25F\x130\x2\x2C1\x2C2\x5\x26B\x136\x2\x2C2"+
- "\x2C3\x5\x275\x13B\x2\x2C3\x2C4\x5\x281\x141\x2\x2C4\x16\x3\x2\x2\x2\x2C5"+
- "\x2C6\x5\x25F\x130\x2\x2C6\x2C7\x5\x26B\x136\x2\x2C7\x2C8\x5\x27D\x13F"+
- "\x2\x2C8\x2C9\x5\x25F\x130\x2\x2C9\x2CA\x5\x271\x139\x2\x2CA\x2CB\x5\x263"+
- "\x132\x2\x2CB\x18\x3\x2\x2\x2\x2CC\x2CD\x5\x25F\x130\x2\x2CD\x2CE\x5\x271"+
- "\x139\x2\x2CE\x2CF\x5\x275\x13B\x2\x2CF\x2D0\x5\x267\x134\x2\x2D0\x1A"+
- "\x3\x2\x2\x2\x2D1\x2D2\x5\x25F\x130\x2\x2D2\x2D3\x5\x271\x139\x2\x2D3"+
- "\x2D4\x5\x275\x13B\x2\x2D4\x2D5\x5\x267\x134\x2\x2D5\x2D6\x5\x271\x139"+
- "\x2\x2D6\x2D7\x5\x275\x13B\x2\x2D7\x2D8\x5\x267\x134\x2\x2D8\x1C\x3\x2"+
- "\x2\x2\x2D9\x2DA\x5\x25F\x130\x2\x2DA\x2DB\x5\x271\x139\x2\x2DB\x2DC\x5"+
- "\x275\x13B\x2\x2DC\x2DD\x5\x267\x134\x2\x2DD\x2DE\x5\x279\x13D\x2\x2DE"+
- "\x2DF\x5\x281\x141\x2\x2DF\x2E0\x5\x27D\x13F\x2\x2E0\x1E\x3\x2\x2\x2\x2E1"+
- "\x2E2\x5\x25F\x130\x2\x2E2\x2E3\x5\x27F\x140\x2\x2E3\x2E4\x5\x275\x13B"+
- "\x2\x2E4\x2E5\x5\x267\x134\x2\x2E5 \x3\x2\x2\x2\x2E6\x2E7\x5\x25F\x130"+
- "\x2\x2E7\x2E8\x5\x27F\x140\x2\x2E8\x2E9\x5\x281\x141\x2\x2E9\x2EA\x5\x27D"+
- "\x13F\x2\x2EA\"\x3\x2\x2\x2\x2EB\x2EC\x5\x25F\x130\x2\x2EC\x2ED\x5\x283"+
- "\x142\x2\x2ED\x2EE\x5\x27D\x13F\x2\x2EE\x2EF\x5\x27D\x13F\x2\x2EF\x2F0"+
- "\x5\x263\x132\x2\x2F0\x2F1\x5\x275\x13B\x2\x2F1\x2F2\x5\x25F\x130\x2\x2F2"+
- "\x2F3\x5\x28B\x146\x2\x2F3$\x3\x2\x2\x2\x2F4\x2F5\x5\x25F\x130\x2\x2F5"+
- "\x2F6\x5\x285\x143\x2\x2F6\x2F7\x5\x25B\x12E\x2\x2F7\x2F8\x5\x27D\x13F"+
- "\x2\x2F8&\x3\x2\x2\x2\x2F9\x2FA\x5\x25F\x130\x2\x2FA\x2FB\x5\x285\x143"+
- "\x2\x2FB\x2FC\x5\x263\x132\x2\x2FC\x2FD\x5\x27D\x13F\x2\x2FD\x2FE\x5\x27D"+
- "\x13F\x2\x2FE(\x3\x2\x2\x2\x2FF\x300\x5\x261\x131\x2\x300\x301\x5\x263"+
- "\x132\x2\x301\x302\x5\x25D\x12F\x2\x302\x303\x5\x283\x142\x2\x303\x304"+
- "\x5\x267\x134\x2\x304*\x3\x2\x2\x2\x305\x306\x5\x261\x131\x2\x306\x307"+
- "\x5\x277\x13C\x2\x307\x308\x5\x263\x132\x2\x308\x309\x5\x285\x143\x2\x309"+
- "\x30A\x5\x263\x132\x2\x30A\x30B\x5\x275\x13B\x2\x30B\x30C\x5\x281\x141"+
- "\x2\x30C\x30D\x5\x27F\x140\x2\x30D,\x3\x2\x2\x2\x30E\x30F\x5\x263\x132"+
- "\x2\x30F\x310\x5\x289\x145\x2\x310\x311\x5\x26B\x136\x2\x311\x312\x5\x281"+
- "\x141\x2\x312.\x3\x2\x2\x2\x313\x314\x5\x265\x133\x2\x314\x315\x5\x26B"+
- "\x136\x2\x315\x316\x5\x289\x145\x2\x316\x30\x3\x2\x2\x2\x317\x318\x5\x26B"+
- "\x136\x2\x318\x319\x5\x275\x13B\x2\x319\x31A\x5\x279\x13D\x2\x31A\x31B"+
- "\x5\x283\x142\x2\x31B\x31C\x5\x281\x141\x2\x31C\x31D\x5\x25D\x12F\x2\x31D"+
- "\x32\x3\x2\x2\x2\x31E\x31F\x5\x26B\x136\x2\x31F\x320\x5\x275\x13B\x2\x320"+
- "\x321\x5\x281\x141\x2\x321\x34\x3\x2\x2\x2\x322\x323\x5\x271\x139\x2\x323"+
- "\x324\x5\x25D\x12F\x2\x324\x325\x5\x277\x13C\x2\x325\x326\x5\x283\x142"+
- "\x2\x326\x327\x5\x275\x13B\x2\x327\x328\x5\x261\x131\x2\x328\x36\x3\x2"+
- "\x2\x2\x329\x32A\x5\x271\x139\x2\x32A\x32B\x5\x263\x132\x2\x32B\x32C\x5"+
- "\x275\x13B\x2\x32C\x38\x3\x2\x2\x2\x32D\x32E\x5\x271\x139\x2\x32E\x32F"+
- "\x5\x263\x132\x2\x32F\x330\x5\x275\x13B\x2\x330\x331\x5\x25D\x12F\x2\x331"+
- ":\x3\x2\x2\x2\x332\x333\x5\x271\x139\x2\x333\x334\x5\x277\x13C\x2\x334"+
- "\x335\x5\x275\x13B\x2\x335\x336\x5\x267\x134\x2\x336\x337\x5\x271\x139"+
- "\x2\x337\x338\x5\x277\x13C\x2\x338\x339\x5\x275\x13B\x2\x339\x33A\x5\x267"+
- "\x134\x2\x33A<\x3\x2\x2\x2\x33B\x33C\x5\x271\x139\x2\x33C\x33D\x5\x277"+
- "\x13C\x2\x33D\x33E\x5\x275\x13B\x2\x33E\x33F\x5\x267\x134\x2\x33F\x340"+
- "\x5\x279\x13D\x2\x340\x341\x5\x281\x141\x2\x341\x342\x5\x27D\x13F\x2\x342"+
- ">\x3\x2\x2\x2\x343\x344\x5\x273\x13A\x2\x344\x345\x5\x26B\x136\x2\x345"+
- "\x346\x5\x261\x131\x2\x346\x347\x5\x25D\x12F\x2\x347@\x3\x2\x2\x2\x348"+
- "\x349\x5\x273\x13A\x2\x349\x34A\x5\x26B\x136\x2\x34A\x34B\x5\x261\x131"+
- "\x2\x34B\x34C\x5\x25D\x12F\x2\x34C\x34D\a&\x2\x2\x34D\x42\x3\x2\x2\x2"+
- "\x34E\x34F\x5\x273\x13A\x2\x34F\x350\x5\x26B\x136\x2\x350\x351\x5\x261"+
- "\x131\x2\x351\x352\a&\x2\x2\x352\x44\x3\x2\x2\x2\x353\x354\x5\x277\x13C"+
- "\x2\x354\x355\x5\x279\x13D\x2\x355\x356\x5\x281\x141\x2\x356\x357\x5\x26B"+
- "\x136\x2\x357\x358\x5\x277\x13C\x2\x358\x359\x5\x275\x13B\x2\x359\x46"+
- "\x3\x2\x2\x2\x35A\x35B\x5\x279\x13D\x2\x35B\x35C\x5\x27F\x140\x2\x35C"+
- "\x35D\x5\x263\x132\x2\x35D\x35E\x5\x281\x141\x2\x35EH\x3\x2\x2\x2\x35F"+
- "\x360\x5\x27F\x140\x2\x360\x361\x5\x25F\x130\x2\x361\x362\x5\x25B\x12E"+
- "\x2\x362\x363\x5\x271\x139\x2\x363\x364\x5\x263\x132\x2\x364J\x3\x2\x2"+
- "\x2\x365\x366\x5\x27F\x140\x2\x366\x367\x5\x267\x134\x2\x367\x368\x5\x275"+
- "\x13B\x2\x368L\x3\x2\x2\x2\x369\x36A\x5\x283\x142\x2\x36A\x36B\x5\x25D"+
- "\x12F\x2\x36B\x36C\x5\x277\x13C\x2\x36C\x36D\x5\x283\x142\x2\x36D\x36E"+
- "\x5\x275\x13B\x2\x36E\x36F\x5\x261\x131\x2\x36FN\x3\x2\x2\x2\x370\x371"+
- "\a.\x2\x2\x371P\x3\x2\x2\x2\x372\x373\a<\x2\x2\x373R\x3\x2\x2\x2\x374"+
- "\x375\a=\x2\x2\x375T\x3\x2\x2\x2\x376\x377\a#\x2\x2\x377V\x3\x2\x2\x2"+
- "\x378\x379\a\x30\x2\x2\x379X\x3\x2\x2\x2\x37A\x37B\a%\x2\x2\x37BZ\x3\x2"+
- "\x2\x2\x37C\x37D\a\x42\x2\x2\x37D\\\x3\x2\x2\x2\x37E\x37F\a\'\x2\x2\x37F"+
- "^\x3\x2\x2\x2\x380\x381\a&\x2\x2\x381`\x3\x2\x2\x2\x382\x383\a(\x2\x2"+
- "\x383\x62\x3\x2\x2\x2\x384\x385\x5\x25B\x12E\x2\x385\x386\x5\x25F\x130"+
+ "\n\x123\f\x123\xE\x123\xA21\v\x123\x3\x124\x3\x124\x3\x124\x5\x124\xA26"+
+ "\n\x124\x3\x124\x3\x124\a\x124\xA2A\n\x124\f\x124\xE\x124\xA2D\v\x124"+
+ "\x3\x125\x3\x125\x3\x126\x3\x126\x3\x127\x3\x127\x3\x128\x3\x128\a\x128"+
+ "\xA37\n\x128\f\x128\xE\x128\xA3A\v\x128\x3\x128\x3\x128\x6\x128\xA3E\n"+
+ "\x128\r\x128\xE\x128\xA3F\x3\x128\x3\x128\x5\x128\xA44\n\x128\x3\x129"+
+ "\a\x129\xA47\n\x129\f\x129\xE\x129\xA4A\v\x129\x3\x129\x3\x129\a\x129"+
+ "\xA4E\n\x129\f\x129\xE\x129\xA51\v\x129\x3\x129\x5\x129\xA54\n\x129\x3"+
+ "\x129\x3\x129\x3\x12A\x3\x12A\x6\x12A\xA5A\n\x12A\r\x12A\xE\x12A\xA5B"+
+ "\x3\x12A\x3\x12A\x6\x12A\xA60\n\x12A\r\x12A\xE\x12A\xA61\x3\x12A\x3\x12A"+
+ "\x6\x12A\xA66\n\x12A\r\x12A\xE\x12A\xA67\x3\x12A\x3\x12A\x6\x12A\xA6C"+
+ "\n\x12A\r\x12A\xE\x12A\xA6D\x3\x12A\x3\x12A\x6\x12A\xA72\n\x12A\r\x12A"+
+ "\xE\x12A\xA73\x3\x12A\x3\x12A\x3\x12B\x3\x12B\x3\x12C\x3\x12C\x3\x12D"+
+ "\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F\x3\x130\x3\x130\x3\x131\x3\x131"+
+ "\x3\x132\x3\x132\x3\x133\x3\x133\x3\x134\x3\x134\x3\x135\x3\x135\x3\x136"+
+ "\x3\x136\x3\x137\x3\x137\x3\x138\x3\x138\x3\x139\x3\x139\x3\x13A\x3\x13A"+
+ "\x3\x13B\x3\x13B\x3\x13C\x3\x13C\x3\x13D\x3\x13D\x3\x13E\x3\x13E\x3\x13F"+
+ "\x3\x13F\x3\x140\x3\x140\x3\x141\x3\x141\x3\x142\x3\x142\x3\x143\x3\x143"+
+ "\x3\x144\x3\x144\x3\x145\x3\x145\x3\x146\x3\x146\x3\x147\x3\x147\x3\x148"+
+ "\x3\x148\x2\x2\x2\x149\x3\x2\x3\x5\x2\x4\a\x2\x5\t\x2\x6\v\x2\a\r\x2\b"+
+ "\xF\x2\t\x11\x2\n\x13\x2\v\x15\x2\f\x17\x2\r\x19\x2\xE\x1B\x2\xF\x1D\x2"+
+ "\x10\x1F\x2\x11!\x2\x12#\x2\x13%\x2\x14\'\x2\x15)\x2\x16+\x2\x17-\x2\x18"+
+ "/\x2\x19\x31\x2\x1A\x33\x2\x1B\x35\x2\x1C\x37\x2\x1D\x39\x2\x1E;\x2\x1F"+
+ "=\x2 ?\x2!\x41\x2\"\x43\x2#\x45\x2$G\x2%I\x2&K\x2\'M\x2(O\x2)Q\x2*S\x2"+
+ "+U\x2,W\x2-Y\x2.[\x2/]\x2\x30_\x2\x31\x61\x2\x32\x63\x2\x33\x65\x2\x34"+
+ "g\x2\x35i\x2\x36k\x2\x37m\x2\x38o\x2\x39q\x2:s\x2;u\x2{\x2"+
+ "?}\x2@\x7F\x2\x41\x81\x2\x42\x83\x2\x43\x85\x2\x44\x87\x2\x45\x89\x2\x46"+
+ "\x8B\x2G\x8D\x2H\x8F\x2I\x91\x2J\x93\x2K\x95\x2L\x97\x2M\x99\x2N\x9B\x2"+
+ "O\x9D\x2P\x9F\x2Q\xA1\x2R\xA3\x2S\xA5\x2T\xA7\x2U\xA9\x2V\xAB\x2W\xAD"+
+ "\x2X\xAF\x2Y\xB1\x2Z\xB3\x2[\xB5\x2\\\xB7\x2]\xB9\x2^\xBB\x2_\xBD\x2`"+
+ "\xBF\x2\x61\xC1\x2\x62\xC3\x2\x63\xC5\x2\x64\xC7\x2\x65\xC9\x2\x66\xCB"+
+ "\x2g\xCD\x2h\xCF\x2i\xD1\x2j\xD3\x2k\xD5\x2l\xD7\x2m\xD9\x2n\xDB\x2o\xDD"+
+ "\x2p\xDF\x2q\xE1\x2r\xE3\x2s\xE5\x2t\xE7\x2u\xE9\x2v\xEB\x2w\xED\x2x\xEF"+
+ "\x2y\xF1\x2z\xF3\x2{\xF5\x2|\xF7\x2}\xF9\x2~\xFB\x2\x7F\xFD\x2\x80\xFF"+
+ "\x2\x81\x101\x2\x82\x103\x2\x83\x105\x2\x84\x107\x2\x85\x109\x2\x86\x10B"+
+ "\x2\x87\x10D\x2\x88\x10F\x2\x89\x111\x2\x8A\x113\x2\x8B\x115\x2\x8C\x117"+
+ "\x2\x8D\x119\x2\x8E\x11B\x2\x8F\x11D\x2\x90\x11F\x2\x91\x121\x2\x92\x123"+
+ "\x2\x93\x125\x2\x94\x127\x2\x95\x129\x2\x96\x12B\x2\x97\x12D\x2\x98\x12F"+
+ "\x2\x99\x131\x2\x9A\x133\x2\x9B\x135\x2\x9C\x137\x2\x9D\x139\x2\x9E\x13B"+
+ "\x2\x9F\x13D\x2\xA0\x13F\x2\xA1\x141\x2\xA2\x143\x2\xA3\x145\x2\xA4\x147"+
+ "\x2\xA5\x149\x2\xA6\x14B\x2\xA7\x14D\x2\xA8\x14F\x2\xA9\x151\x2\xAA\x153"+
+ "\x2\xAB\x155\x2\xAC\x157\x2\xAD\x159\x2\xAE\x15B\x2\xAF\x15D\x2\xB0\x15F"+
+ "\x2\xB1\x161\x2\xB2\x163\x2\xB3\x165\x2\xB4\x167\x2\xB5\x169\x2\xB6\x16B"+
+ "\x2\xB7\x16D\x2\xB8\x16F\x2\xB9\x171\x2\xBA\x173\x2\xBB\x175\x2\xBC\x177"+
+ "\x2\xBD\x179\x2\xBE\x17B\x2\xBF\x17D\x2\xC0\x17F\x2\xC1\x181\x2\xC2\x183"+
+ "\x2\xC3\x185\x2\xC4\x187\x2\xC5\x189\x2\xC6\x18B\x2\xC7\x18D\x2\xC8\x18F"+
+ "\x2\xC9\x191\x2\xCA\x193\x2\xCB\x195\x2\xCC\x197\x2\xCD\x199\x2\xCE\x19B"+
+ "\x2\xCF\x19D\x2\xD0\x19F\x2\xD1\x1A1\x2\xD2\x1A3\x2\xD3\x1A5\x2\xD4\x1A7"+
+ "\x2\xD5\x1A9\x2\xD6\x1AB\x2\xD7\x1AD\x2\xD8\x1AF\x2\xD9\x1B1\x2\xDA\x1B3"+
+ "\x2\xDB\x1B5\x2\xDC\x1B7\x2\xDD\x1B9\x2\xDE\x1BB\x2\xDF\x1BD\x2\xE0\x1BF"+
+ "\x2\xE1\x1C1\x2\xE2\x1C3\x2\xE3\x1C5\x2\xE4\x1C7\x2\xE5\x1C9\x2\xE6\x1CB"+
+ "\x2\xE7\x1CD\x2\xE8\x1CF\x2\xE9\x1D1\x2\xEA\x1D3\x2\xEB\x1D5\x2\xEC\x1D7"+
+ "\x2\xED\x1D9\x2\xEE\x1DB\x2\xEF\x1DD\x2\xF0\x1DF\x2\xF1\x1E1\x2\xF2\x1E3"+
+ "\x2\xF3\x1E5\x2\xF4\x1E7\x2\xF5\x1E9\x2\xF6\x1EB\x2\xF7\x1ED\x2\xF8\x1EF"+
+ "\x2\x2\x1F1\x2\xF9\x1F3\x2\x2\x1F5\x2\x2\x1F7\x2\x2\x1F9\x2\x2\x1FB\x2"+
+ "\x2\x1FD\x2\x2\x1FF\x2\xFA\x201\x2\x2\x203\x2\x2\x205\x2\x2\x207\x2\x2"+
+ "\x209\x2\x2\x20B\x2\x2\x20D\x2\x2\x20F\x2\x2\x211\x2\x2\x213\x2\x2\x215"+
+ "\x2\x2\x217\x2\x2\x219\x2\x2\x21B\x2\x2\x21D\x2\x2\x21F\x2\x2\x221\x2"+
+ "\x2\x223\x2\x2\x225\x2\x2\x227\x2\x2\x229\x2\x2\x22B\x2\x2\x22D\x2\x2"+
+ "\x22F\x2\x2\x231\x2\x2\x233\x2\x2\x235\x2\x2\x237\x2\x2\x239\x2\x2\x23B"+
+ "\x2\x2\x23D\x2\x2\x23F\x2\x2\x241\x2\x2\x243\x2\xFB\x245\x2\xFC\x247\x2"+
+ "\xFD\x249\x2\xFE\x24B\x2\xFF\x24D\x2\x100\x24F\x2\x101\x251\x2\x102\x253"+
+ "\x2\x103\x255\x2\x2\x257\x2\x2\x259\x2\x2\x25B\x2\x2\x25D\x2\x2\x25F\x2"+
+ "\x2\x261\x2\x2\x263\x2\x2\x265\x2\x2\x267\x2\x2\x269\x2\x2\x26B\x2\x2"+
+ "\x26D\x2\x2\x26F\x2\x2\x271\x2\x2\x273\x2\x2\x275\x2\x2\x277\x2\x2\x279"+
+ "\x2\x2\x27B\x2\x2\x27D\x2\x2\x27F\x2\x2\x281\x2\x2\x283\x2\x2\x285\x2"+
+ "\x2\x287\x2\x2\x289\x2\x2\x28B\x2\x2\x28D\x2\x2\x28F\x2\x104\x3\x2.\x5"+
+ "\x2\f\f\xF\xF$$\x3\x2\x32:\x4\x2\x32;\x43H\x4\x2\'(``\x5\x2##%%\x42\x42"+
+ "\x4\x2\x46G\x66g\x4\x2--//\x4\x2./\x31\x31\x4\x2\x30\x30<<\x5\x2\f\f\xF"+
+ "\xF\x202A\x202B\x6\x2\f\f\xF\xF\x42\x42\x202A\x202B\x4\x2\v\v\"\"\t\x2"+
+ "\v\f\xF\xF\"=??\x42\x42]`~~\v\x2\v\f\xF\xF\".\x30\x30<=??\x42\x42]`~~"+
+ "\x6\x2\f\f\xF\xF##^_\f\x2\x43\\\x61\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5"+
+ "\xC5\x155\x155\x2015\x2015\x2020\x2020\x3\x2\x32;\r\x2\x32;\x43\\\x61"+
+ "\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5\xC5\x155\x155\x2015\x2015\x2020"+
+ "\x2020\x4\x2\x43\x43\x63\x63\x4\x2\x44\x44\x64\x64\x4\x2\x45\x45\x65\x65"+
+ "\x4\x2\x46\x46\x66\x66\x4\x2GGgg\x4\x2HHhh\x4\x2IIii\x4\x2JJjj\x4\x2K"+
+ "Kkk\x4\x2LLll\x4\x2MMmm\x4\x2NNnn\x4\x2OOoo\x4\x2PPpp\x4\x2QQqq\x4\x2"+
+ "RRrr\x4\x2SSss\x4\x2TTtt\x4\x2UUuu\x4\x2VVvv\x4\x2WWww\x4\x2XXxx\x4\x2"+
+ "YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2\\\\||\xAC5\x2\x3\x3\x2\x2\x2\x2\x5\x3\x2"+
+ "\x2\x2\x2\a\x3\x2\x2\x2\x2\t\x3\x2\x2\x2\x2\v\x3\x2\x2\x2\x2\r\x3\x2\x2"+
+ "\x2\x2\xF\x3\x2\x2\x2\x2\x11\x3\x2\x2\x2\x2\x13\x3\x2\x2\x2\x2\x15\x3"+
+ "\x2\x2\x2\x2\x17\x3\x2\x2\x2\x2\x19\x3\x2\x2\x2\x2\x1B\x3\x2\x2\x2\x2"+
+ "\x1D\x3\x2\x2\x2\x2\x1F\x3\x2\x2\x2\x2!\x3\x2\x2\x2\x2#\x3\x2\x2\x2\x2"+
+ "%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2\x2)\x3\x2\x2\x2\x2+\x3\x2\x2\x2\x2-\x3"+
+ "\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31\x3\x2\x2\x2\x2\x33\x3\x2\x2\x2\x2\x35"+
+ "\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2\x2\x39\x3\x2\x2\x2\x2;\x3\x2\x2\x2\x2"+
+ "=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2\x41\x3\x2\x2\x2\x2\x43\x3\x2\x2\x2\x2"+
+ "\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2\x2I\x3\x2\x2\x2\x2K\x3\x2\x2\x2\x2M\x3"+
+ "\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3\x2\x2\x2\x2S\x3\x2\x2\x2\x2U\x3\x2\x2"+
+ "\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2\x2\x2[\x3\x2\x2\x2\x2]\x3\x2\x2\x2\x2"+
+ "_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2\x2\x63\x3\x2\x2\x2\x2\x65\x3\x2\x2\x2"+
+ "\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2\x2k\x3\x2\x2\x2\x2m\x3\x2\x2\x2\x2o\x3"+
+ "\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3\x2\x2\x2\x2u\x3\x2\x2\x2\x2w\x3\x2\x2"+
+ "\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2\x2\x2}\x3\x2\x2\x2\x2\x7F\x3\x2\x2\x2"+
+ "\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2\x2\x2\x2\x85\x3\x2\x2\x2\x2\x87\x3\x2"+
+ "\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B\x3\x2\x2\x2\x2\x8D\x3\x2\x2\x2\x2\x8F"+
+ "\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2\x2\x93\x3\x2\x2\x2\x2\x95\x3\x2\x2\x2"+
+ "\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2\x2\x2\x2\x9B\x3\x2\x2\x2\x2\x9D\x3\x2"+
+ "\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1\x3\x2\x2\x2\x2\xA3\x3\x2\x2\x2\x2\xA5"+
+ "\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2\x2\xA9\x3\x2\x2\x2\x2\xAB\x3\x2\x2\x2"+
+ "\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2\x2\x2\x2\xB1\x3\x2\x2\x2\x2\xB3\x3\x2"+
+ "\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7\x3\x2\x2\x2\x2\xB9\x3\x2\x2\x2\x2\xBB"+
+ "\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2\x2\xBF\x3\x2\x2\x2\x2\xC1\x3\x2\x2\x2"+
+ "\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2\x2\x2\x2\xC7\x3\x2\x2\x2\x2\xC9\x3\x2"+
+ "\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD\x3\x2\x2\x2\x2\xCF\x3\x2\x2\x2\x2\xD1"+
+ "\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2\x2\xD5\x3\x2\x2\x2\x2\xD7\x3\x2\x2\x2"+
+ "\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2\x2\x2\x2\xDD\x3\x2\x2\x2\x2\xDF\x3\x2"+
+ "\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3\x3\x2\x2\x2\x2\xE5\x3\x2\x2\x2\x2\xE7"+
+ "\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2\x2\xEB\x3\x2\x2\x2\x2\xED\x3\x2\x2\x2"+
+ "\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2\x2\x2\x2\xF3\x3\x2\x2\x2\x2\xF5\x3\x2"+
+ "\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9\x3\x2\x2\x2\x2\xFB\x3\x2\x2\x2\x2\xFD"+
+ "\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2\x2\x101\x3\x2\x2\x2\x2\x103\x3\x2\x2\x2"+
+ "\x2\x105\x3\x2\x2\x2\x2\x107\x3\x2\x2\x2\x2\x109\x3\x2\x2\x2\x2\x10B\x3"+
+ "\x2\x2\x2\x2\x10D\x3\x2\x2\x2\x2\x10F\x3\x2\x2\x2\x2\x111\x3\x2\x2\x2"+
+ "\x2\x113\x3\x2\x2\x2\x2\x115\x3\x2\x2\x2\x2\x117\x3\x2\x2\x2\x2\x119\x3"+
+ "\x2\x2\x2\x2\x11B\x3\x2\x2\x2\x2\x11D\x3\x2\x2\x2\x2\x11F\x3\x2\x2\x2"+
+ "\x2\x121\x3\x2\x2\x2\x2\x123\x3\x2\x2\x2\x2\x125\x3\x2\x2\x2\x2\x127\x3"+
+ "\x2\x2\x2\x2\x129\x3\x2\x2\x2\x2\x12B\x3\x2\x2\x2\x2\x12D\x3\x2\x2\x2"+
+ "\x2\x12F\x3\x2\x2\x2\x2\x131\x3\x2\x2\x2\x2\x133\x3\x2\x2\x2\x2\x135\x3"+
+ "\x2\x2\x2\x2\x137\x3\x2\x2\x2\x2\x139\x3\x2\x2\x2\x2\x13B\x3\x2\x2\x2"+
+ "\x2\x13D\x3\x2\x2\x2\x2\x13F\x3\x2\x2\x2\x2\x141\x3\x2\x2\x2\x2\x143\x3"+
+ "\x2\x2\x2\x2\x145\x3\x2\x2\x2\x2\x147\x3\x2\x2\x2\x2\x149\x3\x2\x2\x2"+
+ "\x2\x14B\x3\x2\x2\x2\x2\x14D\x3\x2\x2\x2\x2\x14F\x3\x2\x2\x2\x2\x151\x3"+
+ "\x2\x2\x2\x2\x153\x3\x2\x2\x2\x2\x155\x3\x2\x2\x2\x2\x157\x3\x2\x2\x2"+
+ "\x2\x159\x3\x2\x2\x2\x2\x15B\x3\x2\x2\x2\x2\x15D\x3\x2\x2\x2\x2\x15F\x3"+
+ "\x2\x2\x2\x2\x161\x3\x2\x2\x2\x2\x163\x3\x2\x2\x2\x2\x165\x3\x2\x2\x2"+
+ "\x2\x167\x3\x2\x2\x2\x2\x169\x3\x2\x2\x2\x2\x16B\x3\x2\x2\x2\x2\x16D\x3"+
+ "\x2\x2\x2\x2\x16F\x3\x2\x2\x2\x2\x171\x3\x2\x2\x2\x2\x173\x3\x2\x2\x2"+
+ "\x2\x175\x3\x2\x2\x2\x2\x177\x3\x2\x2\x2\x2\x179\x3\x2\x2\x2\x2\x17B\x3"+
+ "\x2\x2\x2\x2\x17D\x3\x2\x2\x2\x2\x17F\x3\x2\x2\x2\x2\x181\x3\x2\x2\x2"+
+ "\x2\x183\x3\x2\x2\x2\x2\x185\x3\x2\x2\x2\x2\x187\x3\x2\x2\x2\x2\x189\x3"+
+ "\x2\x2\x2\x2\x18B\x3\x2\x2\x2\x2\x18D\x3\x2\x2\x2\x2\x18F\x3\x2\x2\x2"+
+ "\x2\x191\x3\x2\x2\x2\x2\x193\x3\x2\x2\x2\x2\x195\x3\x2\x2\x2\x2\x197\x3"+
+ "\x2\x2\x2\x2\x199\x3\x2\x2\x2\x2\x19B\x3\x2\x2\x2\x2\x19D\x3\x2\x2\x2"+
+ "\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3\x2\x2\x2\x2\x1A3\x3\x2\x2\x2\x2\x1A5\x3"+
+ "\x2\x2\x2\x2\x1A7\x3\x2\x2\x2\x2\x1A9\x3\x2\x2\x2\x2\x1AB\x3\x2\x2\x2"+
+ "\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3\x2\x2\x2\x2\x1B1\x3\x2\x2\x2\x2\x1B3\x3"+
+ "\x2\x2\x2\x2\x1B5\x3\x2\x2\x2\x2\x1B7\x3\x2\x2\x2\x2\x1B9\x3\x2\x2\x2"+
+ "\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3\x2\x2\x2\x2\x1BF\x3\x2\x2\x2\x2\x1C1\x3"+
+ "\x2\x2\x2\x2\x1C3\x3\x2\x2\x2\x2\x1C5\x3\x2\x2\x2\x2\x1C7\x3\x2\x2\x2"+
+ "\x2\x1C9\x3\x2\x2\x2\x2\x1CB\x3\x2\x2\x2\x2\x1CD\x3\x2\x2\x2\x2\x1CF\x3"+
+ "\x2\x2\x2\x2\x1D1\x3\x2\x2\x2\x2\x1D3\x3\x2\x2\x2\x2\x1D5\x3\x2\x2\x2"+
+ "\x2\x1D7\x3\x2\x2\x2\x2\x1D9\x3\x2\x2\x2\x2\x1DB\x3\x2\x2\x2\x2\x1DD\x3"+
+ "\x2\x2\x2\x2\x1DF\x3\x2\x2\x2\x2\x1E1\x3\x2\x2\x2\x2\x1E3\x3\x2\x2\x2"+
+ "\x2\x1E5\x3\x2\x2\x2\x2\x1E7\x3\x2\x2\x2\x2\x1E9\x3\x2\x2\x2\x2\x1EB\x3"+
+ "\x2\x2\x2\x2\x1ED\x3\x2\x2\x2\x2\x1F1\x3\x2\x2\x2\x2\x1FF\x3\x2\x2\x2"+
+ "\x2\x243\x3\x2\x2\x2\x2\x245\x3\x2\x2\x2\x2\x247\x3\x2\x2\x2\x2\x249\x3"+
+ "\x2\x2\x2\x2\x24B\x3\x2\x2\x2\x2\x24D\x3\x2\x2\x2\x2\x24F\x3\x2\x2\x2"+
+ "\x2\x251\x3\x2\x2\x2\x2\x253\x3\x2\x2\x2\x2\x28F\x3\x2\x2\x2\x3\x291\x3"+
+ "\x2\x2\x2\x5\x295\x3\x2\x2\x2\a\x299\x3\x2\x2\x2\t\x29F\x3\x2\x2\x2\v"+
+ "\x2A5\x3\x2\x2\x2\r\x2AB\x3\x2\x2\x2\xF\x2B0\x3\x2\x2\x2\x11\x2B6\x3\x2"+
+ "\x2\x2\x13\x2BB\x3\x2\x2\x2\x15\x2C0\x3\x2\x2\x2\x17\x2C5\x3\x2\x2\x2"+
+ "\x19\x2CC\x3\x2\x2\x2\x1B\x2D1\x3\x2\x2\x2\x1D\x2D9\x3\x2\x2\x2\x1F\x2E1"+
+ "\x3\x2\x2\x2!\x2E6\x3\x2\x2\x2#\x2EB\x3\x2\x2\x2%\x2F4\x3\x2\x2\x2\'\x2F9"+
+ "\x3\x2\x2\x2)\x2FF\x3\x2\x2\x2+\x305\x3\x2\x2\x2-\x30E\x3\x2\x2\x2/\x313"+
+ "\x3\x2\x2\x2\x31\x317\x3\x2\x2\x2\x33\x31E\x3\x2\x2\x2\x35\x322\x3\x2"+
+ "\x2\x2\x37\x329\x3\x2\x2\x2\x39\x32D\x3\x2\x2\x2;\x332\x3\x2\x2\x2=\x33B"+
+ "\x3\x2\x2\x2?\x343\x3\x2\x2\x2\x41\x348\x3\x2\x2\x2\x43\x34E\x3\x2\x2"+
+ "\x2\x45\x353\x3\x2\x2\x2G\x35A\x3\x2\x2\x2I\x35F\x3\x2\x2\x2K\x365\x3"+
+ "\x2\x2\x2M\x369\x3\x2\x2\x2O\x370\x3\x2\x2\x2Q\x372\x3\x2\x2\x2S\x374"+
+ "\x3\x2\x2\x2U\x376\x3\x2\x2\x2W\x378\x3\x2\x2\x2Y\x37A\x3\x2\x2\x2[\x37C"+
+ "\x3\x2\x2\x2]\x37E\x3\x2\x2\x2_\x380\x3\x2\x2\x2\x61\x382\x3\x2\x2\x2"+
+ "\x63\x384\x3\x2\x2\x2\x65\x38B\x3\x2\x2\x2g\x395\x3\x2\x2\x2i\x39B\x3"+
+ "\x2\x2\x2k\x39F\x3\x2\x2\x2m\x3A9\x3\x2\x2\x2o\x3B5\x3\x2\x2\x2q\x3BC"+
+ "\x3\x2\x2\x2s\x3BF\x3\x2\x2\x2u\x3C5\x3\x2\x2\x2w\x3CA\x3\x2\x2\x2y\x3D1"+
+ "\x3\x2\x2\x2{\x3D9\x3\x2\x2\x2}\x3DF\x3\x2\x2\x2\x7F\x3E5\x3\x2\x2\x2"+
+ "\x81\x3EA\x3\x2\x2\x2\x83\x3EF\x3\x2\x2\x2\x85\x3F4\x3\x2\x2\x2\x87\x3FA"+
+ "\x3\x2\x2\x2\x89\x402\x3\x2\x2\x2\x8B\x408\x3\x2\x2\x2\x8D\x40E\x3\x2"+
+ "\x2\x2\x8F\x414\x3\x2\x2\x2\x91\x41D\x3\x2\x2\x2\x93\x422\x3\x2\x2\x2"+
+ "\x95\x42A\x3\x2\x2\x2\x97\x432\x3\x2\x2\x2\x99\x43A\x3\x2\x2\x2\x9B\x442"+
+ "\x3\x2\x2\x2\x9D\x449\x3\x2\x2\x2\x9F\x450\x3\x2\x2\x2\xA1\x457\x3\x2"+
+ "\x2\x2\xA3\x45E\x3\x2\x2\x2\xA5\x468\x3\x2\x2\x2\xA7\x472\x3\x2\x2\x2"+
+ "\xA9\x479\x3\x2\x2\x2\xAB\x480\x3\x2\x2\x2\xAD\x487\x3\x2\x2\x2\xAF\x48E"+
+ "\x3\x2\x2\x2\xB1\x49C\x3\x2\x2\x2\xB3\x4A0\x3\x2\x2\x2\xB5\x4A3\x3\x2"+
+ "\x2\x2\xB7\x4AA\x3\x2\x2\x2\xB9\x4AF\x3\x2\x2\x2\xBB\x4B4\x3\x2\x2\x2"+
+ "\xBD\x4BB\x3\x2\x2\x2\xBF\x4C1\x3\x2\x2\x2\xC1\x4CA\x3\x2\x2\x2\xC3\x4D7"+
+ "\x3\x2\x2\x2\xC5\x4DE\x3\x2\x2\x2\xC7\x4EB\x3\x2\x2\x2\xC9\x4F6\x3\x2"+
+ "\x2\x2\xCB\x4FE\x3\x2\x2\x2\xCD\x507\x3\x2\x2\x2\xCF\x510\x3\x2\x2\x2"+
+ "\xD1\x514\x3\x2\x2\x2\xD3\x519\x3\x2\x2\x2\xD5\x51D\x3\x2\x2\x2\xD7\x523"+
+ "\x3\x2\x2\x2\xD9\x529\x3\x2\x2\x2\xDB\x52F\x3\x2\x2\x2\xDD\x537\x3\x2"+
+ "\x2\x2\xDF\x540\x3\x2\x2\x2\xE1\x54E\x3\x2\x2\x2\xE3\x55C\x3\x2\x2\x2"+
+ "\xE5\x565\x3\x2\x2\x2\xE7\x56B\x3\x2\x2\x2\xE9\x574\x3\x2\x2\x2\xEB\x57B"+
+ "\x3\x2\x2\x2\xED\x57F\x3\x2\x2\x2\xEF\x588\x3\x2\x2\x2\xF1\x58C\x3\x2"+
+ "\x2\x2\xF3\x593\x3\x2\x2\x2\xF5\x599\x3\x2\x2\x2\xF7\x59E\x3\x2\x2\x2"+
+ "\xF9\x5A1\x3\x2\x2\x2\xFB\x5A5\x3\x2\x2\x2\xFD\x5B0\x3\x2\x2\x2\xFF\x5B3"+
+ "\x3\x2\x2\x2\x101\x5B9\x3\x2\x2\x2\x103\x5BC\x3\x2\x2\x2\x105\x5C4\x3"+
+ "\x2\x2\x2\x107\x5C9\x3\x2\x2\x2\x109\x5CE\x3\x2\x2\x2\x10B\x5D3\x3\x2"+
+ "\x2\x2\x10D\x5D8\x3\x2\x2\x2\x10F\x5DD\x3\x2\x2\x2\x111\x5E1\x3\x2\x2"+
+ "\x2\x113\x5E5\x3\x2\x2\x2\x115\x5EA\x3\x2\x2\x2\x117\x5F5\x3\x2\x2\x2"+
+ "\x119\x5FF\x3\x2\x2\x2\x11B\x60A\x3\x2\x2\x2\x11D\x61A\x3\x2\x2\x2\x11F"+
+ "\x61F\x3\x2\x2\x2\x121\x622\x3\x2\x2\x2\x123\x626\x3\x2\x2\x2\x125\x62C"+
+ "\x3\x2\x2\x2\x127\x630\x3\x2\x2\x2\x129\x635\x3\x2\x2\x2\x12B\x63A\x3"+
+ "\x2\x2\x2\x12D\x63E\x3\x2\x2\x2\x12F\x642\x3\x2\x2\x2\x131\x64A\x3\x2"+
+ "\x2\x2\x133\x64F\x3\x2\x2\x2\x135\x652\x3\x2\x2\x2\x137\x65B\x3\x2\x2"+
+ "\x2\x139\x66A\x3\x2\x2\x2\x13B\x66F\x3\x2\x2\x2\x13D\x678\x3\x2\x2\x2"+
+ "\x13F\x684\x3\x2\x2\x2\x141\x694\x3\x2\x2\x2\x143\x6A3\x3\x2\x2\x2\x145"+
+ "\x6B9\x3\x2\x2\x2\x147\x6BC\x3\x2\x2\x2\x149\x6C3\x3\x2\x2\x2\x14B\x6CE"+
+ "\x3\x2\x2\x2\x14D\x6D7\x3\x2\x2\x2\x14F\x6DD\x3\x2\x2\x2\x151\x6E5\x3"+
+ "\x2\x2\x2\x153\x6F2\x3\x2\x2\x2\x155\x6FF\x3\x2\x2\x2\x157\x70C\x3\x2"+
+ "\x2\x2\x159\x714\x3\x2\x2\x2\x15B\x71B\x3\x2\x2\x2\x15D\x71F\x3\x2\x2"+
+ "\x2\x15F\x726\x3\x2\x2\x2\x161\x730\x3\x2\x2\x2\x163\x73B\x3\x2\x2\x2"+
+ "\x165\x740\x3\x2\x2\x2\x167\x74B\x3\x2\x2\x2\x169\x751\x3\x2\x2\x2\x16B"+
+ "\x755\x3\x2\x2\x2\x16D\x75B\x3\x2\x2\x2\x16F\x762\x3\x2\x2\x2\x171\x769"+
+ "\x3\x2\x2\x2\x173\x76F\x3\x2\x2\x2\x175\x774\x3\x2\x2\x2\x177\x780\x3"+
+ "\x2\x2\x2\x179\x78C\x3\x2\x2\x2\x17B\x791\x3\x2\x2\x2\x17D\x798\x3\x2"+
+ "\x2\x2\x17F\x7A1\x3\x2\x2\x2\x181\x7A5\x3\x2\x2\x2\x183\x7AD\x3\x2\x2"+
+ "\x2\x185\x7B4\x3\x2\x2\x2\x187\x7BB\x3\x2\x2\x2\x189\x7BF\x3\x2\x2\x2"+
+ "\x18B\x7C6\x3\x2\x2\x2\x18D\x7CB\x3\x2\x2\x2\x18F\x7D0\x3\x2\x2\x2\x191"+
+ "\x7D7\x3\x2\x2\x2\x193\x7DB\x3\x2\x2\x2\x195\x7DF\x3\x2\x2\x2\x197\x7E4"+
+ "\x3\x2\x2\x2\x199\x7E9\x3\x2\x2\x2\x19B\x7EE\x3\x2\x2\x2\x19D\x7F1\x3"+
+ "\x2\x2\x2\x19F\x7F6\x3\x2\x2\x2\x1A1\x7FB\x3\x2\x2\x2\x1A3\x802\x3\x2"+
+ "\x2\x2\x1A5\x809\x3\x2\x2\x2\x1A7\x810\x3\x2\x2\x2\x1A9\x816\x3\x2\x2"+
+ "\x2\x1AB\x81E\x3\x2\x2\x2\x1AD\x826\x3\x2\x2\x2\x1AF\x82B\x3\x2\x2\x2"+
+ "\x1B1\x831\x3\x2\x2\x2\x1B3\x837\x3\x2\x2\x2\x1B5\x83C\x3\x2\x2\x2\x1B7"+
+ "\x847\x3\x2\x2\x2\x1B9\x84D\x3\x2\x2\x2\x1BB\x851\x3\x2\x2\x2\x1BD\x854"+
+ "\x3\x2\x2\x2\x1BF\x856\x3\x2\x2\x2\x1C1\x858\x3\x2\x2\x2\x1C3\x85E\x3"+
+ "\x2\x2\x2\x1C5\x860\x3\x2\x2\x2\x1C7\x866\x3\x2\x2\x2\x1C9\x868\x3\x2"+
+ "\x2\x2\x1CB\x86A\x3\x2\x2\x2\x1CD\x86C\x3\x2\x2\x2\x1CF\x86E\x3\x2\x2"+
+ "\x2\x1D1\x874\x3\x2\x2\x2\x1D3\x876\x3\x2\x2\x2\x1D5\x878\x3\x2\x2\x2"+
+ "\x1D7\x87A\x3\x2\x2\x2\x1D9\x87F\x3\x2\x2\x2\x1DB\x888\x3\x2\x2\x2\x1DD"+
+ "\x892\x3\x2\x2\x2\x1DF\x8A0\x3\x2\x2\x2\x1E1\x8AC\x3\x2\x2\x2\x1E3\x8BC"+
+ "\x3\x2\x2\x2\x1E5\x8BE\x3\x2\x2\x2\x1E7\x8C0\x3\x2\x2\x2\x1E9\x8CB\x3"+
+ "\x2\x2\x2\x1EB\x8D6\x3\x2\x2\x2\x1ED\x8E8\x3\x2\x2\x2\x1EF\x8FA\x3\x2"+
+ "\x2\x2\x1F1\x8FC\x3\x2\x2\x2\x1F3\x900\x3\x2\x2\x2\x1F5\x902\x3\x2\x2"+
+ "\x2\x1F7\x904\x3\x2\x2\x2\x1F9\x90D\x3\x2\x2\x2\x1FB\x90F\x3\x2\x2\x2"+
+ "\x1FD\x912\x3\x2\x2\x2\x1FF\x916\x3\x2\x2\x2\x201\x922\x3\x2\x2\x2\x203"+
+ "\x924\x3\x2\x2\x2\x205\x932\x3\x2\x2\x2\x207\x935\x3\x2\x2\x2\x209\x93F"+
+ "\x3\x2\x2\x2\x20B\x94D\x3\x2\x2\x2\x20D\x95A\x3\x2\x2\x2\x20F\x979\x3"+
+ "\x2\x2\x2\x211\x97C\x3\x2\x2\x2\x213\x983\x3\x2\x2\x2\x215\x98F\x3\x2"+
+ "\x2\x2\x217\x997\x3\x2\x2\x2\x219\x9A0\x3\x2\x2\x2\x21B\x9A6\x3\x2\x2"+
+ "\x2\x21D\x9AC\x3\x2\x2\x2\x21F\x9B0\x3\x2\x2\x2\x221\x9B5\x3\x2\x2\x2"+
+ "\x223\x9BA\x3\x2\x2\x2\x225\x9C1\x3\x2\x2\x2\x227\x9CB\x3\x2\x2\x2\x229"+
+ "\x9D3\x3\x2\x2\x2\x22B\x9DC\x3\x2\x2\x2\x22D\x9E5\x3\x2\x2\x2\x22F\x9E9"+
+ "\x3\x2\x2\x2\x231\x9ED\x3\x2\x2\x2\x233\x9F1\x3\x2\x2\x2\x235\x9F5\x3"+
+ "\x2\x2\x2\x237\x9F9\x3\x2\x2\x2\x239\x9FD\x3\x2\x2\x2\x23B\xA01\x3\x2"+
+ "\x2\x2\x23D\xA05\x3\x2\x2\x2\x23F\xA09\x3\x2\x2\x2\x241\xA0D\x3\x2\x2"+
+ "\x2\x243\xA14\x3\x2\x2\x2\x245\xA17\x3\x2\x2\x2\x247\xA22\x3\x2\x2\x2"+
+ "\x249\xA2E\x3\x2\x2\x2\x24B\xA30\x3\x2\x2\x2\x24D\xA32\x3\x2\x2\x2\x24F"+
+ "\xA43\x3\x2\x2\x2\x251\xA48\x3\x2\x2\x2\x253\xA57\x3\x2\x2\x2\x255\xA77"+
+ "\x3\x2\x2\x2\x257\xA79\x3\x2\x2\x2\x259\xA7B\x3\x2\x2\x2\x25B\xA7D\x3"+
+ "\x2\x2\x2\x25D\xA7F\x3\x2\x2\x2\x25F\xA81\x3\x2\x2\x2\x261\xA83\x3\x2"+
+ "\x2\x2\x263\xA85\x3\x2\x2\x2\x265\xA87\x3\x2\x2\x2\x267\xA89\x3\x2\x2"+
+ "\x2\x269\xA8B\x3\x2\x2\x2\x26B\xA8D\x3\x2\x2\x2\x26D\xA8F\x3\x2\x2\x2"+
+ "\x26F\xA91\x3\x2\x2\x2\x271\xA93\x3\x2\x2\x2\x273\xA95\x3\x2\x2\x2\x275"+
+ "\xA97\x3\x2\x2\x2\x277\xA99\x3\x2\x2\x2\x279\xA9B\x3\x2\x2\x2\x27B\xA9D"+
+ "\x3\x2\x2\x2\x27D\xA9F\x3\x2\x2\x2\x27F\xAA1\x3\x2\x2\x2\x281\xAA3\x3"+
+ "\x2\x2\x2\x283\xAA5\x3\x2\x2\x2\x285\xAA7\x3\x2\x2\x2\x287\xAA9\x3\x2"+
+ "\x2\x2\x289\xAAB\x3\x2\x2\x2\x28B\xAAD\x3\x2\x2\x2\x28D\xAAF\x3\x2\x2"+
+ "\x2\x28F\xAB1\x3\x2\x2\x2\x291\x292\x5\x25B\x12E\x2\x292\x293\x5\x25D"+
+ "\x12F\x2\x293\x294\x5\x27F\x140\x2\x294\x4\x3\x2\x2\x2\x295\x296\x5\x25B"+
+ "\x12E\x2\x296\x297\x5\x275\x13B\x2\x297\x298\x5\x28B\x146\x2\x298\x6\x3"+
+ "\x2\x2\x2\x299\x29A\x5\x25B\x12E\x2\x29A\x29B\x5\x27D\x13F\x2\x29B\x29C"+
+ "\x5\x27D\x13F\x2\x29C\x29D\x5\x25B\x12E\x2\x29D\x29E\x5\x28B\x146\x2\x29E"+
+ "\b\x3\x2\x2\x2\x29F\x2A0\x5\x25F\x130\x2\x2A0\x2A1\x5\x25D\x12F\x2\x2A1"+
+ "\x2A2\x5\x277\x13C\x2\x2A2\x2A3\x5\x277\x13C\x2\x2A3\x2A4\x5\x271\x139"+
+ "\x2\x2A4\n\x3\x2\x2\x2\x2A5\x2A6\x5\x25F\x130\x2\x2A6\x2A7\x5\x25D\x12F"+
+ "\x2\x2A7\x2A8\x5\x28B\x146\x2\x2A8\x2A9\x5\x281\x141\x2\x2A9\x2AA\x5\x263"+
+ "\x132\x2\x2AA\f\x3\x2\x2\x2\x2AB\x2AC\x5\x25F\x130\x2\x2AC\x2AD\x5\x25F"+
+ "\x130\x2\x2AD\x2AE\x5\x283\x142\x2\x2AE\x2AF\x5\x27D\x13F\x2\x2AF\xE\x3"+
+ "\x2\x2\x2\x2B0\x2B1\x5\x25F\x130\x2\x2B1\x2B2\x5\x261\x131\x2\x2B2\x2B3"+
+ "\x5\x25B\x12E\x2\x2B3\x2B4\x5\x281\x141\x2\x2B4\x2B5\x5\x263\x132\x2\x2B5"+
+ "\x10\x3\x2\x2\x2\x2B6\x2B7\x5\x25F\x130\x2\x2B7\x2B8\x5\x261\x131\x2\x2B8"+
+ "\x2B9\x5\x25D\x12F\x2\x2B9\x2BA\x5\x271\x139\x2\x2BA\x12\x3\x2\x2\x2\x2BB"+
+ "\x2BC\x5\x25F\x130\x2\x2BC\x2BD\x5\x261\x131\x2\x2BD\x2BE\x5\x263\x132"+
+ "\x2\x2BE\x2BF\x5\x25F\x130\x2\x2BF\x14\x3\x2\x2\x2\x2C0\x2C1\x5\x25F\x130"+
+ "\x2\x2C1\x2C2\x5\x26B\x136\x2\x2C2\x2C3\x5\x275\x13B\x2\x2C3\x2C4\x5\x281"+
+ "\x141\x2\x2C4\x16\x3\x2\x2\x2\x2C5\x2C6\x5\x25F\x130\x2\x2C6\x2C7\x5\x26B"+
+ "\x136\x2\x2C7\x2C8\x5\x27D\x13F\x2\x2C8\x2C9\x5\x25F\x130\x2\x2C9\x2CA"+
+ "\x5\x271\x139\x2\x2CA\x2CB\x5\x263\x132\x2\x2CB\x18\x3\x2\x2\x2\x2CC\x2CD"+
+ "\x5\x25F\x130\x2\x2CD\x2CE\x5\x271\x139\x2\x2CE\x2CF\x5\x275\x13B\x2\x2CF"+
+ "\x2D0\x5\x267\x134\x2\x2D0\x1A\x3\x2\x2\x2\x2D1\x2D2\x5\x25F\x130\x2\x2D2"+
+ "\x2D3\x5\x271\x139\x2\x2D3\x2D4\x5\x275\x13B\x2\x2D4\x2D5\x5\x267\x134"+
+ "\x2\x2D5\x2D6\x5\x271\x139\x2\x2D6\x2D7\x5\x275\x13B\x2\x2D7\x2D8\x5\x267"+
+ "\x134\x2\x2D8\x1C\x3\x2\x2\x2\x2D9\x2DA\x5\x25F\x130\x2\x2DA\x2DB\x5\x271"+
+ "\x139\x2\x2DB\x2DC\x5\x275\x13B\x2\x2DC\x2DD\x5\x267\x134\x2\x2DD\x2DE"+
+ "\x5\x279\x13D\x2\x2DE\x2DF\x5\x281\x141\x2\x2DF\x2E0\x5\x27D\x13F\x2\x2E0"+
+ "\x1E\x3\x2\x2\x2\x2E1\x2E2\x5\x25F\x130\x2\x2E2\x2E3\x5\x27F\x140\x2\x2E3"+
+ "\x2E4\x5\x275\x13B\x2\x2E4\x2E5\x5\x267\x134\x2\x2E5 \x3\x2\x2\x2\x2E6"+
+ "\x2E7\x5\x25F\x130\x2\x2E7\x2E8\x5\x27F\x140\x2\x2E8\x2E9\x5\x281\x141"+
+ "\x2\x2E9\x2EA\x5\x27D\x13F\x2\x2EA\"\x3\x2\x2\x2\x2EB\x2EC\x5\x25F\x130"+
+ "\x2\x2EC\x2ED\x5\x283\x142\x2\x2ED\x2EE\x5\x27D\x13F\x2\x2EE\x2EF\x5\x27D"+
+ "\x13F\x2\x2EF\x2F0\x5\x263\x132\x2\x2F0\x2F1\x5\x275\x13B\x2\x2F1\x2F2"+
+ "\x5\x25F\x130\x2\x2F2\x2F3\x5\x28B\x146\x2\x2F3$\x3\x2\x2\x2\x2F4\x2F5"+
+ "\x5\x25F\x130\x2\x2F5\x2F6\x5\x285\x143\x2\x2F6\x2F7\x5\x25B\x12E\x2\x2F7"+
+ "\x2F8\x5\x27D\x13F\x2\x2F8&\x3\x2\x2\x2\x2F9\x2FA\x5\x25F\x130\x2\x2FA"+
+ "\x2FB\x5\x285\x143\x2\x2FB\x2FC\x5\x263\x132\x2\x2FC\x2FD\x5\x27D\x13F"+
+ "\x2\x2FD\x2FE\x5\x27D\x13F\x2\x2FE(\x3\x2\x2\x2\x2FF\x300\x5\x261\x131"+
+ "\x2\x300\x301\x5\x263\x132\x2\x301\x302\x5\x25D\x12F\x2\x302\x303\x5\x283"+
+ "\x142\x2\x303\x304\x5\x267\x134\x2\x304*\x3\x2\x2\x2\x305\x306\x5\x261"+
+ "\x131\x2\x306\x307\x5\x277\x13C\x2\x307\x308\x5\x263\x132\x2\x308\x309"+
+ "\x5\x285\x143\x2\x309\x30A\x5\x263\x132\x2\x30A\x30B\x5\x275\x13B\x2\x30B"+
+ "\x30C\x5\x281\x141\x2\x30C\x30D\x5\x27F\x140\x2\x30D,\x3\x2\x2\x2\x30E"+
+ "\x30F\x5\x263\x132\x2\x30F\x310\x5\x289\x145\x2\x310\x311\x5\x26B\x136"+
+ "\x2\x311\x312\x5\x281\x141\x2\x312.\x3\x2\x2\x2\x313\x314\x5\x265\x133"+
+ "\x2\x314\x315\x5\x26B\x136\x2\x315\x316\x5\x289\x145\x2\x316\x30\x3\x2"+
+ "\x2\x2\x317\x318\x5\x26B\x136\x2\x318\x319\x5\x275\x13B\x2\x319\x31A\x5"+
+ "\x279\x13D\x2\x31A\x31B\x5\x283\x142\x2\x31B\x31C\x5\x281\x141\x2\x31C"+
+ "\x31D\x5\x25D\x12F\x2\x31D\x32\x3\x2\x2\x2\x31E\x31F\x5\x26B\x136\x2\x31F"+
+ "\x320\x5\x275\x13B\x2\x320\x321\x5\x281\x141\x2\x321\x34\x3\x2\x2\x2\x322"+
+ "\x323\x5\x271\x139\x2\x323\x324\x5\x25D\x12F\x2\x324\x325\x5\x277\x13C"+
+ "\x2\x325\x326\x5\x283\x142\x2\x326\x327\x5\x275\x13B\x2\x327\x328\x5\x261"+
+ "\x131\x2\x328\x36\x3\x2\x2\x2\x329\x32A\x5\x271\x139\x2\x32A\x32B\x5\x263"+
+ "\x132\x2\x32B\x32C\x5\x275\x13B\x2\x32C\x38\x3\x2\x2\x2\x32D\x32E\x5\x271"+
+ "\x139\x2\x32E\x32F\x5\x263\x132\x2\x32F\x330\x5\x275\x13B\x2\x330\x331"+
+ "\x5\x25D\x12F\x2\x331:\x3\x2\x2\x2\x332\x333\x5\x271\x139\x2\x333\x334"+
+ "\x5\x277\x13C\x2\x334\x335\x5\x275\x13B\x2\x335\x336\x5\x267\x134\x2\x336"+
+ "\x337\x5\x271\x139\x2\x337\x338\x5\x277\x13C\x2\x338\x339\x5\x275\x13B"+
+ "\x2\x339\x33A\x5\x267\x134\x2\x33A<\x3\x2\x2\x2\x33B\x33C\x5\x271\x139"+
+ "\x2\x33C\x33D\x5\x277\x13C\x2\x33D\x33E\x5\x275\x13B\x2\x33E\x33F\x5\x267"+
+ "\x134\x2\x33F\x340\x5\x279\x13D\x2\x340\x341\x5\x281\x141\x2\x341\x342"+
+ "\x5\x27D\x13F\x2\x342>\x3\x2\x2\x2\x343\x344\x5\x273\x13A\x2\x344\x345"+
+ "\x5\x26B\x136\x2\x345\x346\x5\x261\x131\x2\x346\x347\x5\x25D\x12F\x2\x347"+
+ "@\x3\x2\x2\x2\x348\x349\x5\x273\x13A\x2\x349\x34A\x5\x26B\x136\x2\x34A"+
+ "\x34B\x5\x261\x131\x2\x34B\x34C\x5\x25D\x12F\x2\x34C\x34D\a&\x2\x2\x34D"+
+ "\x42\x3\x2\x2\x2\x34E\x34F\x5\x273\x13A\x2\x34F\x350\x5\x26B\x136\x2\x350"+
+ "\x351\x5\x261\x131\x2\x351\x352\a&\x2\x2\x352\x44\x3\x2\x2\x2\x353\x354"+
+ "\x5\x277\x13C\x2\x354\x355\x5\x279\x13D\x2\x355\x356\x5\x281\x141\x2\x356"+
+ "\x357\x5\x26B\x136\x2\x357\x358\x5\x277\x13C\x2\x358\x359\x5\x275\x13B"+
+ "\x2\x359\x46\x3\x2\x2\x2\x35A\x35B\x5\x279\x13D\x2\x35B\x35C\x5\x27F\x140"+
+ "\x2\x35C\x35D\x5\x263\x132\x2\x35D\x35E\x5\x281\x141\x2\x35EH\x3\x2\x2"+
+ "\x2\x35F\x360\x5\x27F\x140\x2\x360\x361\x5\x25F\x130\x2\x361\x362\x5\x25B"+
+ "\x12E\x2\x362\x363\x5\x271\x139\x2\x363\x364\x5\x263\x132\x2\x364J\x3"+
+ "\x2\x2\x2\x365\x366\x5\x27F\x140\x2\x366\x367\x5\x267\x134\x2\x367\x368"+
+ "\x5\x275\x13B\x2\x368L\x3\x2\x2\x2\x369\x36A\x5\x283\x142\x2\x36A\x36B"+
+ "\x5\x25D\x12F\x2\x36B\x36C\x5\x277\x13C\x2\x36C\x36D\x5\x283\x142\x2\x36D"+
+ "\x36E\x5\x275\x13B\x2\x36E\x36F\x5\x261\x131\x2\x36FN\x3\x2\x2\x2\x370"+
+ "\x371\a.\x2\x2\x371P\x3\x2\x2\x2\x372\x373\a<\x2\x2\x373R\x3\x2\x2\x2"+
+ "\x374\x375\a=\x2\x2\x375T\x3\x2\x2\x2\x376\x377\a#\x2\x2\x377V\x3\x2\x2"+
+ "\x2\x378\x379\a\x30\x2\x2\x379X\x3\x2\x2\x2\x37A\x37B\a%\x2\x2\x37BZ\x3"+
+ "\x2\x2\x2\x37C\x37D\a\x42\x2\x2\x37D\\\x3\x2\x2\x2\x37E\x37F\a\'\x2\x2"+
+ "\x37F^\x3\x2\x2\x2\x380\x381\a&\x2\x2\x381`\x3\x2\x2\x2\x382\x383\a(\x2"+
+ "\x2\x383\x62\x3\x2\x2\x2\x384\x385\x5\x25B\x12E\x2\x385\x386\x5\x25F\x130"+
"\x2\x386\x387\x5\x25F\x130\x2\x387\x388\x5\x263\x132\x2\x388\x389\x5\x27F"+
"\x140\x2\x389\x38A\x5\x27F\x140\x2\x38A\x64\x3\x2\x2\x2\x38B\x38C\x5\x25B"+
"\x12E\x2\x38C\x38D\x5\x261\x131\x2\x38D\x38E\x5\x261\x131\x2\x38E\x38F"+
@@ -1360,60 +1360,61 @@ public VBALexer(ICharStream input)
"\x2\xA19\xA1A\x5\x169\xB5\x2\xA1A\xA1F\x5\x24D\x127\x2\xA1B\xA1E\x5\x251"+
"\x129\x2\xA1C\xA1E\n\v\x2\x2\xA1D\xA1B\x3\x2\x2\x2\xA1D\xA1C\x3\x2\x2"+
"\x2\xA1E\xA21\x3\x2\x2\x2\xA1F\xA1D\x3\x2\x2\x2\xA1F\xA20\x3\x2\x2\x2"+
- "\xA20\x246\x3\x2\x2\x2\xA21\xA1F\x3\x2\x2\x2\xA22\xA23\x5\x249\x125\x2"+
- "\xA23\xA28\n\f\x2\x2\xA24\xA27\x5\x251\x129\x2\xA25\xA27\n\v\x2\x2\xA26"+
- "\xA24\x3\x2\x2\x2\xA26\xA25\x3\x2\x2\x2\xA27\xA2A\x3\x2\x2\x2\xA28\xA26"+
- "\x3\x2\x2\x2\xA28\xA29\x3\x2\x2\x2\xA29\x248\x3\x2\x2\x2\xA2A\xA28\x3"+
- "\x2\x2\x2\xA2B\xA2C\a)\x2\x2\xA2C\x24A\x3\x2\x2\x2\xA2D\xA2E\a\x61\x2"+
- "\x2\xA2E\x24C\x3\x2\x2\x2\xA2F\xA30\t\r\x2\x2\xA30\x24E\x3\x2\x2\x2\xA31"+
- "\xA35\n\xE\x2\x2\xA32\xA34\n\xF\x2\x2\xA33\xA32\x3\x2\x2\x2\xA34\xA37"+
- "\x3\x2\x2\x2\xA35\xA33\x3\x2\x2\x2\xA35\xA36\x3\x2\x2\x2\xA36\xA41\x3"+
- "\x2\x2\x2\xA37\xA35\x3\x2\x2\x2\xA38\xA3A\x5\x1E3\xF2\x2\xA39\xA3B\n\x10"+
- "\x2\x2\xA3A\xA39\x3\x2\x2\x2\xA3B\xA3C\x3\x2\x2\x2\xA3C\xA3A\x3\x2\x2"+
- "\x2\xA3C\xA3D\x3\x2\x2\x2\xA3D\xA3E\x3\x2\x2\x2\xA3E\xA3F\x5\x1E5\xF3"+
- "\x2\xA3F\xA41\x3\x2\x2\x2\xA40\xA31\x3\x2\x2\x2\xA40\xA38\x3\x2\x2\x2"+
- "\xA41\x250\x3\x2\x2\x2\xA42\xA44\t\r\x2\x2\xA43\xA42\x3\x2\x2\x2\xA44"+
- "\xA47\x3\x2\x2\x2\xA45\xA43\x3\x2\x2\x2\xA45\xA46\x3\x2\x2\x2\xA46\xA48"+
- "\x3\x2\x2\x2\xA47\xA45\x3\x2\x2\x2\xA48\xA4C\x5\x24B\x126\x2\xA49\xA4B"+
- "\t\r\x2\x2\xA4A\xA49\x3\x2\x2\x2\xA4B\xA4E\x3\x2\x2\x2\xA4C\xA4A\x3\x2"+
- "\x2\x2\xA4C\xA4D\x3\x2\x2\x2\xA4D\xA50\x3\x2\x2\x2\xA4E\xA4C\x3\x2\x2"+
- "\x2\xA4F\xA51\a\xF\x2\x2\xA50\xA4F\x3\x2\x2\x2\xA50\xA51\x3\x2\x2\x2\xA51"+
- "\xA52\x3\x2\x2\x2\xA52\xA53\a\f\x2\x2\xA53\x252\x3\x2\x2\x2\xA54\xA56"+
- "\a}\x2\x2\xA55\xA57\t\x4\x2\x2\xA56\xA55\x3\x2\x2\x2\xA57\xA58\x3\x2\x2"+
- "\x2\xA58\xA56\x3\x2\x2\x2\xA58\xA59\x3\x2\x2\x2\xA59\xA5A\x3\x2\x2\x2"+
- "\xA5A\xA5C\a/\x2\x2\xA5B\xA5D\t\x4\x2\x2\xA5C\xA5B\x3\x2\x2\x2\xA5D\xA5E"+
- "\x3\x2\x2\x2\xA5E\xA5C\x3\x2\x2\x2\xA5E\xA5F\x3\x2\x2\x2\xA5F\xA60\x3"+
- "\x2\x2\x2\xA60\xA62\a/\x2\x2\xA61\xA63\t\x4\x2\x2\xA62\xA61\x3\x2\x2\x2"+
- "\xA63\xA64\x3\x2\x2\x2\xA64\xA62\x3\x2\x2\x2\xA64\xA65\x3\x2\x2\x2\xA65"+
- "\xA66\x3\x2\x2\x2\xA66\xA68\a/\x2\x2\xA67\xA69\t\x4\x2\x2\xA68\xA67\x3"+
- "\x2\x2\x2\xA69\xA6A\x3\x2\x2\x2\xA6A\xA68\x3\x2\x2\x2\xA6A\xA6B\x3\x2"+
- "\x2\x2\xA6B\xA6C\x3\x2\x2\x2\xA6C\xA6E\a/\x2\x2\xA6D\xA6F\t\x4\x2\x2\xA6E"+
- "\xA6D\x3\x2\x2\x2\xA6F\xA70\x3\x2\x2\x2\xA70\xA6E\x3\x2\x2\x2\xA70\xA71"+
- "\x3\x2\x2\x2\xA71\xA72\x3\x2\x2\x2\xA72\xA73\a\x7F\x2\x2\xA73\x254\x3"+
- "\x2\x2\x2\xA74\xA75\t\x11\x2\x2\xA75\x256\x3\x2\x2\x2\xA76\xA77\t\x12"+
- "\x2\x2\xA77\x258\x3\x2\x2\x2\xA78\xA79\t\x13\x2\x2\xA79\x25A\x3\x2\x2"+
- "\x2\xA7A\xA7B\t\x14\x2\x2\xA7B\x25C\x3\x2\x2\x2\xA7C\xA7D\t\x15\x2\x2"+
- "\xA7D\x25E\x3\x2\x2\x2\xA7E\xA7F\t\x16\x2\x2\xA7F\x260\x3\x2\x2\x2\xA80"+
- "\xA81\t\x17\x2\x2\xA81\x262\x3\x2\x2\x2\xA82\xA83\t\x18\x2\x2\xA83\x264"+
- "\x3\x2\x2\x2\xA84\xA85\t\x19\x2\x2\xA85\x266\x3\x2\x2\x2\xA86\xA87\t\x1A"+
- "\x2\x2\xA87\x268\x3\x2\x2\x2\xA88\xA89\t\x1B\x2\x2\xA89\x26A\x3\x2\x2"+
- "\x2\xA8A\xA8B\t\x1C\x2\x2\xA8B\x26C\x3\x2\x2\x2\xA8C\xA8D\t\x1D\x2\x2"+
- "\xA8D\x26E\x3\x2\x2\x2\xA8E\xA8F\t\x1E\x2\x2\xA8F\x270\x3\x2\x2\x2\xA90"+
- "\xA91\t\x1F\x2\x2\xA91\x272\x3\x2\x2\x2\xA92\xA93\t \x2\x2\xA93\x274\x3"+
- "\x2\x2\x2\xA94\xA95\t!\x2\x2\xA95\x276\x3\x2\x2\x2\xA96\xA97\t\"\x2\x2"+
- "\xA97\x278\x3\x2\x2\x2\xA98\xA99\t#\x2\x2\xA99\x27A\x3\x2\x2\x2\xA9A\xA9B"+
- "\t$\x2\x2\xA9B\x27C\x3\x2\x2\x2\xA9C\xA9D\t%\x2\x2\xA9D\x27E\x3\x2\x2"+
- "\x2\xA9E\xA9F\t&\x2\x2\xA9F\x280\x3\x2\x2\x2\xAA0\xAA1\t\'\x2\x2\xAA1"+
- "\x282\x3\x2\x2\x2\xAA2\xAA3\t(\x2\x2\xAA3\x284\x3\x2\x2\x2\xAA4\xAA5\t"+
- ")\x2\x2\xAA5\x286\x3\x2\x2\x2\xAA6\xAA7\t*\x2\x2\xAA7\x288\x3\x2\x2\x2"+
- "\xAA8\xAA9\t+\x2\x2\xAA9\x28A\x3\x2\x2\x2\xAAA\xAAB\t,\x2\x2\xAAB\x28C"+
- "\x3\x2\x2\x2\xAAC\xAAD\t-\x2\x2\xAAD\x28E\x3\x2\x2\x2\xAAE\xAAF\v\x2\x2"+
- "\x2\xAAF\x290\x3\x2\x2\x2\x43\x2\x85E\x866\x874\x87F\x888\x892\x8A0\x8AC"+
- "\x8B6\x8C4\x8C6\x8D1\x8D4\x8DC\x8DF\x8E3\x8E8\x8F0\x8F3\x8F8\x8FA\x8FE"+
- "\x906\x90B\x914\x91C\x922\x92A\x92F\x932\x935\x938\x93B\x93F\x94D\x95A"+
- "\x95F\x966\x96C\x972\x974\x977\x979\x97C\x980\x983\x98D\xA14\xA17\xA1D"+
- "\xA1F\xA26\xA28\xA35\xA3C\xA40\xA45\xA4C\xA50\xA58\xA5E\xA64\xA6A\xA70"+
- "\x2";
+ "\xA20\x246\x3\x2\x2\x2\xA21\xA1F\x3\x2\x2\x2\xA22\xA25\x5\x249\x125\x2"+
+ "\xA23\xA26\x5\x251\x129\x2\xA24\xA26\n\f\x2\x2\xA25\xA23\x3\x2\x2\x2\xA25"+
+ "\xA24\x3\x2\x2\x2\xA26\xA2B\x3\x2\x2\x2\xA27\xA2A\x5\x251\x129\x2\xA28"+
+ "\xA2A\n\v\x2\x2\xA29\xA27\x3\x2\x2\x2\xA29\xA28\x3\x2\x2\x2\xA2A\xA2D"+
+ "\x3\x2\x2\x2\xA2B\xA29\x3\x2\x2\x2\xA2B\xA2C\x3\x2\x2\x2\xA2C\x248\x3"+
+ "\x2\x2\x2\xA2D\xA2B\x3\x2\x2\x2\xA2E\xA2F\a)\x2\x2\xA2F\x24A\x3\x2\x2"+
+ "\x2\xA30\xA31\a\x61\x2\x2\xA31\x24C\x3\x2\x2\x2\xA32\xA33\t\r\x2\x2\xA33"+
+ "\x24E\x3\x2\x2\x2\xA34\xA38\n\xE\x2\x2\xA35\xA37\n\xF\x2\x2\xA36\xA35"+
+ "\x3\x2\x2\x2\xA37\xA3A\x3\x2\x2\x2\xA38\xA36\x3\x2\x2\x2\xA38\xA39\x3"+
+ "\x2\x2\x2\xA39\xA44\x3\x2\x2\x2\xA3A\xA38\x3\x2\x2\x2\xA3B\xA3D\x5\x1E3"+
+ "\xF2\x2\xA3C\xA3E\n\x10\x2\x2\xA3D\xA3C\x3\x2\x2\x2\xA3E\xA3F\x3\x2\x2"+
+ "\x2\xA3F\xA3D\x3\x2\x2\x2\xA3F\xA40\x3\x2\x2\x2\xA40\xA41\x3\x2\x2\x2"+
+ "\xA41\xA42\x5\x1E5\xF3\x2\xA42\xA44\x3\x2\x2\x2\xA43\xA34\x3\x2\x2\x2"+
+ "\xA43\xA3B\x3\x2\x2\x2\xA44\x250\x3\x2\x2\x2\xA45\xA47\t\r\x2\x2\xA46"+
+ "\xA45\x3\x2\x2\x2\xA47\xA4A\x3\x2\x2\x2\xA48\xA46\x3\x2\x2\x2\xA48\xA49"+
+ "\x3\x2\x2\x2\xA49\xA4B\x3\x2\x2\x2\xA4A\xA48\x3\x2\x2\x2\xA4B\xA4F\x5"+
+ "\x24B\x126\x2\xA4C\xA4E\t\r\x2\x2\xA4D\xA4C\x3\x2\x2\x2\xA4E\xA51\x3\x2"+
+ "\x2\x2\xA4F\xA4D\x3\x2\x2\x2\xA4F\xA50\x3\x2\x2\x2\xA50\xA53\x3\x2\x2"+
+ "\x2\xA51\xA4F\x3\x2\x2\x2\xA52\xA54\a\xF\x2\x2\xA53\xA52\x3\x2\x2\x2\xA53"+
+ "\xA54\x3\x2\x2\x2\xA54\xA55\x3\x2\x2\x2\xA55\xA56\a\f\x2\x2\xA56\x252"+
+ "\x3\x2\x2\x2\xA57\xA59\a}\x2\x2\xA58\xA5A\t\x4\x2\x2\xA59\xA58\x3\x2\x2"+
+ "\x2\xA5A\xA5B\x3\x2\x2\x2\xA5B\xA59\x3\x2\x2\x2\xA5B\xA5C\x3\x2\x2\x2"+
+ "\xA5C\xA5D\x3\x2\x2\x2\xA5D\xA5F\a/\x2\x2\xA5E\xA60\t\x4\x2\x2\xA5F\xA5E"+
+ "\x3\x2\x2\x2\xA60\xA61\x3\x2\x2\x2\xA61\xA5F\x3\x2\x2\x2\xA61\xA62\x3"+
+ "\x2\x2\x2\xA62\xA63\x3\x2\x2\x2\xA63\xA65\a/\x2\x2\xA64\xA66\t\x4\x2\x2"+
+ "\xA65\xA64\x3\x2\x2\x2\xA66\xA67\x3\x2\x2\x2\xA67\xA65\x3\x2\x2\x2\xA67"+
+ "\xA68\x3\x2\x2\x2\xA68\xA69\x3\x2\x2\x2\xA69\xA6B\a/\x2\x2\xA6A\xA6C\t"+
+ "\x4\x2\x2\xA6B\xA6A\x3\x2\x2\x2\xA6C\xA6D\x3\x2\x2\x2\xA6D\xA6B\x3\x2"+
+ "\x2\x2\xA6D\xA6E\x3\x2\x2\x2\xA6E\xA6F\x3\x2\x2\x2\xA6F\xA71\a/\x2\x2"+
+ "\xA70\xA72\t\x4\x2\x2\xA71\xA70\x3\x2\x2\x2\xA72\xA73\x3\x2\x2\x2\xA73"+
+ "\xA71\x3\x2\x2\x2\xA73\xA74\x3\x2\x2\x2\xA74\xA75\x3\x2\x2\x2\xA75\xA76"+
+ "\a\x7F\x2\x2\xA76\x254\x3\x2\x2\x2\xA77\xA78\t\x11\x2\x2\xA78\x256\x3"+
+ "\x2\x2\x2\xA79\xA7A\t\x12\x2\x2\xA7A\x258\x3\x2\x2\x2\xA7B\xA7C\t\x13"+
+ "\x2\x2\xA7C\x25A\x3\x2\x2\x2\xA7D\xA7E\t\x14\x2\x2\xA7E\x25C\x3\x2\x2"+
+ "\x2\xA7F\xA80\t\x15\x2\x2\xA80\x25E\x3\x2\x2\x2\xA81\xA82\t\x16\x2\x2"+
+ "\xA82\x260\x3\x2\x2\x2\xA83\xA84\t\x17\x2\x2\xA84\x262\x3\x2\x2\x2\xA85"+
+ "\xA86\t\x18\x2\x2\xA86\x264\x3\x2\x2\x2\xA87\xA88\t\x19\x2\x2\xA88\x266"+
+ "\x3\x2\x2\x2\xA89\xA8A\t\x1A\x2\x2\xA8A\x268\x3\x2\x2\x2\xA8B\xA8C\t\x1B"+
+ "\x2\x2\xA8C\x26A\x3\x2\x2\x2\xA8D\xA8E\t\x1C\x2\x2\xA8E\x26C\x3\x2\x2"+
+ "\x2\xA8F\xA90\t\x1D\x2\x2\xA90\x26E\x3\x2\x2\x2\xA91\xA92\t\x1E\x2\x2"+
+ "\xA92\x270\x3\x2\x2\x2\xA93\xA94\t\x1F\x2\x2\xA94\x272\x3\x2\x2\x2\xA95"+
+ "\xA96\t \x2\x2\xA96\x274\x3\x2\x2\x2\xA97\xA98\t!\x2\x2\xA98\x276\x3\x2"+
+ "\x2\x2\xA99\xA9A\t\"\x2\x2\xA9A\x278\x3\x2\x2\x2\xA9B\xA9C\t#\x2\x2\xA9C"+
+ "\x27A\x3\x2\x2\x2\xA9D\xA9E\t$\x2\x2\xA9E\x27C\x3\x2\x2\x2\xA9F\xAA0\t"+
+ "%\x2\x2\xAA0\x27E\x3\x2\x2\x2\xAA1\xAA2\t&\x2\x2\xAA2\x280\x3\x2\x2\x2"+
+ "\xAA3\xAA4\t\'\x2\x2\xAA4\x282\x3\x2\x2\x2\xAA5\xAA6\t(\x2\x2\xAA6\x284"+
+ "\x3\x2\x2\x2\xAA7\xAA8\t)\x2\x2\xAA8\x286\x3\x2\x2\x2\xAA9\xAAA\t*\x2"+
+ "\x2\xAAA\x288\x3\x2\x2\x2\xAAB\xAAC\t+\x2\x2\xAAC\x28A\x3\x2\x2\x2\xAAD"+
+ "\xAAE\t,\x2\x2\xAAE\x28C\x3\x2\x2\x2\xAAF\xAB0\t-\x2\x2\xAB0\x28E\x3\x2"+
+ "\x2\x2\xAB1\xAB2\v\x2\x2\x2\xAB2\x290\x3\x2\x2\x2\x44\x2\x85E\x866\x874"+
+ "\x87F\x888\x892\x8A0\x8AC\x8B6\x8C4\x8C6\x8D1\x8D4\x8DC\x8DF\x8E3\x8E8"+
+ "\x8F0\x8F3\x8F8\x8FA\x8FE\x906\x90B\x914\x91C\x922\x92A\x92F\x932\x935"+
+ "\x938\x93B\x93F\x94D\x95A\x95F\x966\x96C\x972\x974\x977\x979\x97C\x980"+
+ "\x983\x98D\xA14\xA17\xA1D\xA1F\xA25\xA29\xA2B\xA38\xA3F\xA43\xA48\xA4F"+
+ "\xA53\xA5B\xA61\xA67\xA6D\xA73\x2";
public static readonly ATN _ATN =
new ATNDeserializer().Deserialize(_serializedATN.ToCharArray());
}
diff --git a/Rubberduck.Parsing/Grammar/VBALexer.g4 b/Rubberduck.Parsing/Grammar/VBALexer.g4
index 2e7fc9e6fa..0398096eb2 100644
--- a/Rubberduck.Parsing/Grammar/VBALexer.g4
+++ b/Rubberduck.Parsing/Grammar/VBALexer.g4
@@ -312,7 +312,7 @@ fragment NOV : N O V;
fragment DEC : D E C;
NEWLINE : '\r' '\n' | [\r\n\u2028\u2029];
REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*;
-COMMENT : SINGLEQUOTE ~'@' (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*;
+COMMENT : SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029@]) (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*;
SINGLEQUOTE : '\'';
UNDERSCORE : '_';
WS : [ \t];
diff --git a/Rubberduck.Parsing/Grammar/VBAParser.cs b/Rubberduck.Parsing/Grammar/VBAParser.cs
index 5d8ed7b184..25d2137b96 100644
--- a/Rubberduck.Parsing/Grammar/VBAParser.cs
+++ b/Rubberduck.Parsing/Grammar/VBAParser.cs
@@ -15035,6 +15035,7 @@ public EndOfLineContext endOfLine() {
}
break;
case COMMENT:
+ case SINGLEQUOTE:
{
State = 2490; comment();
}
@@ -15231,6 +15232,7 @@ public RemCommentContext remComment() {
public partial class CommentContext : ParserRuleContext {
public ITerminalNode COMMENT() { return GetToken(VBAParser.COMMENT, 0); }
+ public ITerminalNode SINGLEQUOTE() { return GetToken(VBAParser.SINGLEQUOTE, 0); }
public CommentContext(ParserRuleContext parent, int invokingState)
: base(parent, invokingState)
{
@@ -15255,10 +15257,16 @@ public override TResult Accept(IParseTreeVisitor visitor) {
public CommentContext comment() {
CommentContext _localctx = new CommentContext(_ctx, State);
EnterRule(_localctx, 282, RULE_comment);
+ int _la;
try {
EnterOuterAlt(_localctx, 1);
{
- State = 2518; Match(COMMENT);
+ State = 2518;
+ _la = _input.La(1);
+ if ( !(_la==COMMENT || _la==SINGLEQUOTE) ) {
+ _errHandler.RecoverInline(this);
+ }
+ Consume();
}
}
catch (RecognitionException re) {
@@ -16087,7 +16095,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
"\x2\xE8\x2\xEA\x2\xEC\x2\xEE\x2\xF0\x2\xF2\x2\xF4\x2\xF6\x2\xF8\x2\xFA"+
"\x2\xFC\x2\xFE\x2\x100\x2\x102\x2\x104\x2\x106\x2\x108\x2\x10A\x2\x10C"+
"\x2\x10E\x2\x110\x2\x112\x2\x114\x2\x116\x2\x118\x2\x11A\x2\x11C\x2\x11E"+
- "\x2\x120\x2\x122\x2\x124\x2\x126\x2\x128\x2\x2\x18\x5\x2==II\xCC\xCC\x3"+
+ "\x2\x120\x2\x122\x2\x124\x2\x126\x2\x128\x2\x2\x19\x5\x2==II\xCC\xCC\x3"+
"\x2LX\x4\x2\xD5\xD5\xD9\xD9\x3\x2os\x3\x2\x9C\x9D\a\x2\x39\x39==\x81\x81"+
"\xA5\xA5\xB0\xB0\x4\x2\xB3\xB4\xDD\xDD\x4\x2\x8D\x8F\xC3\xC3\x4\x2))+"+
"+\x4\x2\xC5\xC5\xCB\xCB\x4\x2\xE0\xE0\xE9\xE9\x4\x2\xE8\xE8\xEB\xEB\a"+
@@ -16095,109 +16103,109 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
"\x2?@\r\x2\x13\x13\x1F >>\x41\x41JJ\\\\\x83\x83\x87\x87\xC4\xC4\xC9\xC9"+
"\xD6\xD6\x3\x2\xF6\xF9\x5\x2,,.\x32\xEC\xEC\x6\x2vvzz\xA9\xA9\xAE\xAE"+
"\r\x2\x3(\x33_\x63\x63int\x8B\x90\x9B\x9E\x9F\xA4\xA9\xAE\xB3\xB5\xDE"+
- "\x105\x105\x4\x2\x100\x100\x102\x102\xBC1\x2\x12A\x3\x2\x2\x2\x4\x12E"+
- "\x3\x2\x2\x2\x6\x149\x3\x2\x2\x2\b\x154\x3\x2\x2\x2\n\x166\x3\x2\x2\x2"+
- "\f\x17E\x3\x2\x2\x2\xE\x182\x3\x2\x2\x2\x10\x197\x3\x2\x2\x2\x12\x1A1"+
- "\x3\x2\x2\x2\x14\x1A3\x3\x2\x2\x2\x16\x1B3\x3\x2\x2\x2\x18\x1B5\x3\x2"+
- "\x2\x2\x1A\x1CD\x3\x2\x2\x2\x1C\x21A\x3\x2\x2\x2\x1E\x21C\x3\x2\x2\x2"+
- " \x229\x3\x2\x2\x2\"\x22B\x3\x2\x2\x2$\x22F\x3\x2\x2\x2&\x233\x3\x2\x2"+
- "\x2(\x248\x3\x2\x2\x2*\x25A\x3\x2\x2\x2,\x26C\x3\x2\x2\x2.\x279\x3\x2"+
- "\x2\x2\x30\x2A3\x3\x2\x2\x2\x32\x2D9\x3\x2\x2\x2\x34\x2F8\x3\x2\x2\x2"+
- "\x36\x2FA\x3\x2\x2\x2\x38\x2FF\x3\x2\x2\x2:\x30D\x3\x2\x2\x2<\x31A\x3"+
- "\x2\x2\x2>\x32A\x3\x2\x2\x2@\x331\x3\x2\x2\x2\x42\x33B\x3\x2\x2\x2\x44"+
- "\x33D\x3\x2\x2\x2\x46\x349\x3\x2\x2\x2H\x35F\x3\x2\x2\x2J\x38C\x3\x2\x2"+
- "\x2L\x3AC\x3\x2\x2\x2N\x3C2\x3\x2\x2\x2P\x3C6\x3\x2\x2\x2R\x3E4\x3\x2"+
- "\x2\x2T\x3E6\x3\x2\x2\x2V\x3EF\x3\x2\x2\x2X\x3F1\x3\x2\x2\x2Z\x3FA\x3"+
- "\x2\x2\x2\\\x3FF\x3\x2\x2\x2^\x403\x3\x2\x2\x2`\x412\x3\x2\x2\x2\x62\x418"+
- "\x3\x2\x2\x2\x64\x424\x3\x2\x2\x2\x66\x430\x3\x2\x2\x2h\x434\x3\x2\x2"+
- "\x2j\x448\x3\x2\x2\x2l\x454\x3\x2\x2\x2n\x462\x3\x2\x2\x2p\x466\x3\x2"+
- "\x2\x2r\x46E\x3\x2\x2\x2t\x47A\x3\x2\x2\x2v\x48E\x3\x2\x2\x2x\x4A2\x3"+
- "\x2\x2\x2z\x4E7\x3\x2\x2\x2|\x4FA\x3\x2\x2\x2~\x4FC\x3\x2\x2\x2\x80\x50C"+
- "\x3\x2\x2\x2\x82\x52C\x3\x2\x2\x2\x84\x544\x3\x2\x2\x2\x86\x559\x3\x2"+
- "\x2\x2\x88\x56F\x3\x2\x2\x2\x8A\x582\x3\x2\x2\x2\x8C\x588\x3\x2\x2\x2"+
- "\x8E\x59C\x3\x2\x2\x2\x90\x5AE\x3\x2\x2\x2\x92\x5B0\x3\x2\x2\x2\x94\x5B8"+
- "\x3\x2\x2\x2\x96\x5BA\x3\x2\x2\x2\x98\x5BE\x3\x2\x2\x2\x9A\x5CA\x3\x2"+
- "\x2\x2\x9C\x5D6\x3\x2\x2\x2\x9E\x5F2\x3\x2\x2\x2\xA0\x5FE\x3\x2\x2\x2"+
- "\xA2\x61D\x3\x2\x2\x2\xA4\x61F\x3\x2\x2\x2\xA6\x635\x3\x2\x2\x2\xA8\x637"+
- "\x3\x2\x2\x2\xAA\x644\x3\x2\x2\x2\xAC\x650\x3\x2\x2\x2\xAE\x65C\x3\x2"+
- "\x2\x2\xB0\x661\x3\x2\x2\x2\xB2\x678\x3\x2\x2\x2\xB4\x685\x3\x2\x2\x2"+
- "\xB6\x693\x3\x2\x2\x2\xB8\x6AB\x3\x2\x2\x2\xBA\x6AF\x3\x2\x2\x2\xBC\x6F0"+
- "\x3\x2\x2\x2\xBE\x763\x3\x2\x2\x2\xC0\x770\x3\x2\x2\x2\xC2\x779\x3\x2"+
- "\x2\x2\xC4\x787\x3\x2\x2\x2\xC6\x7A3\x3\x2\x2\x2\xC8\x7AC\x3\x2\x2\x2"+
- "\xCA\x7B8\x3\x2\x2\x2\xCC\x7C6\x3\x2\x2\x2\xCE\x7C8\x3\x2\x2\x2\xD0\x7D6"+
- "\x3\x2\x2\x2\xD2\x7DC\x3\x2\x2\x2\xD4\x7DE\x3\x2\x2\x2\xD6\x7FF\x3\x2"+
- "\x2\x2\xD8\x826\x3\x2\x2\x2\xDA\x829\x3\x2\x2\x2\xDC\x84D\x3\x2\x2\x2"+
- "\xDE\x863\x3\x2\x2\x2\xE0\x865\x3\x2\x2\x2\xE2\x87D\x3\x2\x2\x2\xE4\x8A4"+
- "\x3\x2\x2\x2\xE6\x8C0\x3\x2\x2\x2\xE8\x8C9\x3\x2\x2\x2\xEA\x8D9\x3\x2"+
- "\x2\x2\xEC\x8ED\x3\x2\x2\x2\xEE\x8F8\x3\x2\x2\x2\xF0\x900\x3\x2\x2\x2"+
- "\xF2\x91B\x3\x2\x2\x2\xF4\x93F\x3\x2\x2\x2\xF6\x945\x3\x2\x2\x2\xF8\x958"+
- "\x3\x2\x2\x2\xFA\x95E\x3\x2\x2\x2\xFC\x960\x3\x2\x2\x2\xFE\x96F\x3\x2"+
- "\x2\x2\x100\x971\x3\x2\x2\x2\x102\x973\x3\x2\x2\x2\x104\x97B\x3\x2\x2"+
- "\x2\x106\x983\x3\x2\x2\x2\x108\x990\x3\x2\x2\x2\x10A\x99C\x3\x2\x2\x2"+
- "\x10C\x99E\x3\x2\x2\x2\x10E\x9A2\x3\x2\x2\x2\x110\x9AE\x3\x2\x2\x2\x112"+
- "\x9B0\x3\x2\x2\x2\x114\x9B2\x3\x2\x2\x2\x116\x9C7\x3\x2\x2\x2\x118\x9D3"+
- "\x3\x2\x2\x2\x11A\x9D6\x3\x2\x2\x2\x11C\x9D8\x3\x2\x2\x2\x11E\x9DA\x3"+
- "\x2\x2\x2\x120\x9E0\x3\x2\x2\x2\x122\x9E5\x3\x2\x2\x2\x124\xA24\x3\x2"+
- "\x2\x2\x126\xA28\x3\x2\x2\x2\x128\xA2B\x3\x2\x2\x2\x12A\x12B\x5\x4\x3"+
- "\x2\x12B\x12C\a\x2\x2\x3\x12C\x3\x3\x2\x2\x2\x12D\x12F\x5\x128\x95\x2"+
- "\x12E\x12D\x3\x2\x2\x2\x12E\x12F\x3\x2\x2\x2\x12F\x130\x3\x2\x2\x2\x130"+
- "\x134\x5\x118\x8D\x2\x131\x132\x5\x6\x4\x2\x132\x133\x5\x118\x8D\x2\x133"+
- "\x135\x3\x2\x2\x2\x134\x131\x3\x2\x2\x2\x134\x135\x3\x2\x2\x2\x135\x137"+
- "\x3\x2\x2\x2\x136\x138\x5\b\x5\x2\x137\x136\x3\x2\x2\x2\x137\x138\x3\x2"+
- "\x2\x2\x138\x139\x3\x2\x2\x2\x139\x13B\x5\x118\x8D\x2\x13A\x13C\x5\f\a"+
- "\x2\x13B\x13A\x3\x2\x2\x2\x13B\x13C\x3\x2\x2\x2\x13C\x13D\x3\x2\x2\x2"+
- "\x13D\x13F\x5\x118\x8D\x2\x13E\x140\x5\xE\b\x2\x13F\x13E\x3\x2\x2\x2\x13F"+
- "\x140\x3\x2\x2\x2\x140\x141\x3\x2\x2\x2\x141\x143\x5\x118\x8D\x2\x142"+
- "\x144\x5\x14\v\x2\x143\x142\x3\x2\x2\x2\x143\x144\x3\x2\x2\x2\x144\x145"+
- "\x3\x2\x2\x2\x145\x147\x5\x118\x8D\x2\x146\x148\x5\x128\x95\x2\x147\x146"+
- "\x3\x2\x2\x2\x147\x148\x3\x2\x2\x2\x148\x5\x3\x2\x2\x2\x149\x14A\a\xD7"+
- "\x2\x2\x14A\x14B\x5\x128\x95\x2\x14B\x14D\x5\x10C\x87\x2\x14C\x14E\x5"+
- "\x128\x95\x2\x14D\x14C\x3\x2\x2\x2\x14D\x14E\x3\x2\x2\x2\x14E\x150\x3"+
- "\x2\x2\x2\x14F\x151\a\x46\x2\x2\x150\x14F\x3\x2\x2\x2\x150\x151\x3\x2"+
- "\x2\x2\x151\x152\x3\x2\x2\x2\x152\x153\x5\x118\x8D\x2\x153\a\x3\x2\x2"+
- "\x2\x154\x15C\a;\x2\x2\x155\x156\x5\x128\x95\x2\x156\x157\a\x103\x2\x2"+
- "\x157\x158\x5\x128\x95\x2\x158\x15A\x5\xFA~\x2\x159\x15B\x5\x128\x95\x2"+
- "\x15A\x159\x3\x2\x2\x2\x15A\x15B\x3\x2\x2\x2\x15B\x15D\x3\x2\x2\x2\x15C"+
- "\x155\x3\x2\x2\x2\x15C\x15D\x3\x2\x2\x2\x15D\x15E\x3\x2\x2\x2\x15E\x160"+
- "\x5\x118\x8D\x2\x15F\x161\x5\n\x6\x2\x160\x15F\x3\x2\x2\x2\x161\x162\x3"+
- "\x2\x2\x2\x162\x160\x3\x2\x2\x2\x162\x163\x3\x2\x2\x2\x163\x164\x3\x2"+
- "\x2\x2\x164\x165\ai\x2\x2\x165\t\x3\x2\x2\x2\x166\x16A\x5\xFA~\x2\x167"+
- "\x169\x5\x128\x95\x2\x168\x167\x3\x2\x2\x2\x169\x16C\x3\x2\x2\x2\x16A"+
- "\x168\x3\x2\x2\x2\x16A\x16B\x3\x2\x2\x2\x16B\x16D\x3\x2\x2\x2\x16C\x16A"+
- "\x3\x2\x2\x2\x16D\x171\a\xE2\x2\x2\x16E\x170\x5\x128\x95\x2\x16F\x16E"+
- "\x3\x2\x2\x2\x170\x173\x3\x2\x2\x2\x171\x16F\x3\x2\x2\x2\x171\x172\x3"+
- "\x2\x2\x2\x172\x174\x3\x2\x2\x2\x173\x171\x3\x2\x2\x2\x174\x177\x5\x10A"+
- "\x86\x2\x175\x176\a*\x2\x2\x176\x178\x5\x10C\x87\x2\x177\x175\x3\x2\x2"+
- "\x2\x177\x178\x3\x2\x2\x2\x178\x179\x3\x2\x2\x2\x179\x17A\x5\x118\x8D"+
- "\x2\x17A\v\x3\x2\x2\x2\x17B\x17C\x5\x18\r\x2\x17C\x17D\x5\x118\x8D\x2"+
- "\x17D\x17F\x3\x2\x2\x2\x17E\x17B\x3\x2\x2\x2\x17F\x180\x3\x2\x2\x2\x180"+
- "\x17E\x3\x2\x2\x2\x180\x181\x3\x2\x2\x2\x181\r\x3\x2\x2\x2\x182\x188\x5"+
- "\x12\n\x2\x183\x184\x5\x118\x8D\x2\x184\x185\x5\x12\n\x2\x185\x187\x3"+
- "\x2\x2\x2\x186\x183\x3\x2\x2\x2\x187\x18A\x3\x2\x2\x2\x188\x186\x3\x2"+
- "\x2\x2\x188\x189\x3\x2\x2\x2\x189\x18B\x3\x2\x2\x2\x18A\x188\x3\x2\x2"+
- "\x2\x18B\x18C\x5\x118\x8D\x2\x18C\xF\x3\x2\x2\x2\x18D\x18E\a\xA0\x2\x2"+
- "\x18E\x18F\x5\x128\x95\x2\x18F\x190\x5\x10C\x87\x2\x190\x198\x3\x2\x2"+
- "\x2\x191\x192\a\xA2\x2\x2\x192\x193\x5\x128\x95\x2\x193\x194\t\x2\x2\x2"+
- "\x194\x198\x3\x2\x2\x2\x195\x198\a\xA1\x2\x2\x196\x198\a\xA3\x2\x2\x197"+
- "\x18D\x3\x2\x2\x2\x197\x191\x3\x2\x2\x2\x197\x195\x3\x2\x2\x2\x197\x196"+
- "\x3\x2\x2\x2\x198\x11\x3\x2\x2\x2\x199\x1A2\x5.\x18\x2\x19A\x1A2\x5\x38"+
- "\x1D\x2\x19B\x1A2\x5@!\x2\x19C\x1A2\x5(\x15\x2\x19D\x1A2\x5\\/\x2\x19E"+
- "\x1A2\x5\xC0\x61\x2\x19F\x1A2\x5\x10\t\x2\x1A0\x1A2\x5\xB4[\x2\x1A1\x199"+
- "\x3\x2\x2\x2\x1A1\x19A\x3\x2\x2\x2\x1A1\x19B\x3\x2\x2\x2\x1A1\x19C\x3"+
- "\x2\x2\x2\x1A1\x19D\x3\x2\x2\x2\x1A1\x19E\x3\x2\x2\x2\x1A1\x19F\x3\x2"+
- "\x2\x2\x1A1\x1A0\x3\x2\x2\x2\x1A2\x13\x3\x2\x2\x2\x1A3\x1A9\x5\x16\f\x2"+
- "\x1A4\x1A5\x5\x118\x8D\x2\x1A5\x1A6\x5\x16\f\x2\x1A6\x1A8\x3\x2\x2\x2"+
- "\x1A7\x1A4\x3\x2\x2\x2\x1A8\x1AB\x3\x2\x2\x2\x1A9\x1A7\x3\x2\x2\x2\x1A9"+
- "\x1AA\x3\x2\x2\x2\x1AA\x1AC\x3\x2\x2\x2\x1AB\x1A9\x3\x2\x2\x2\x1AC\x1AD"+
- "\x5\x118\x8D\x2\x1AD\x15\x3\x2\x2\x2\x1AE\x1B4\x5J&\x2\x1AF\x1B4\x5\x80"+
- "\x41\x2\x1B0\x1B4\x5\x82\x42\x2\x1B1\x1B4\x5\x84\x43\x2\x1B2\x1B4\x5\xB0"+
- "Y\x2\x1B3\x1AE\x3\x2\x2\x2\x1B3\x1AF\x3\x2\x2\x2\x1B3\x1B0\x3\x2\x2\x2"+
- "\x1B3\x1B1\x3\x2\x2\x2\x1B3\x1B2\x3\x2\x2\x2\x1B4\x17\x3\x2\x2\x2\x1B5"+
- "\x1B6\a\x37\x2\x2\x1B6\x1B7\x5\x128\x95\x2\x1B7\x1B9\x5\xDEp\x2\x1B8\x1BA"+
- "\x5\x128\x95\x2\x1B9\x1B8\x3\x2\x2\x2\x1B9\x1BA\x3\x2\x2\x2\x1BA\x1BB"+
- "\x3\x2\x2\x2\x1BB\x1BD\a\xE2\x2\x2\x1BC\x1BE\x5\x128\x95\x2\x1BD\x1BC"+
- "\x3\x2\x2\x2\x1BD\x1BE\x3\x2\x2\x2\x1BE\x1BF\x3\x2\x2\x2\x1BF\x1CA\x5"+
- "\x10A\x86\x2\x1C0\x1C2\x5\x128\x95\x2\x1C1\x1C0\x3\x2\x2\x2\x1C1\x1C2"+
+ "\x105\x105\x3\x2\xFD\xFE\x4\x2\x100\x100\x102\x102\xBC1\x2\x12A\x3\x2"+
+ "\x2\x2\x4\x12E\x3\x2\x2\x2\x6\x149\x3\x2\x2\x2\b\x154\x3\x2\x2\x2\n\x166"+
+ "\x3\x2\x2\x2\f\x17E\x3\x2\x2\x2\xE\x182\x3\x2\x2\x2\x10\x197\x3\x2\x2"+
+ "\x2\x12\x1A1\x3\x2\x2\x2\x14\x1A3\x3\x2\x2\x2\x16\x1B3\x3\x2\x2\x2\x18"+
+ "\x1B5\x3\x2\x2\x2\x1A\x1CD\x3\x2\x2\x2\x1C\x21A\x3\x2\x2\x2\x1E\x21C\x3"+
+ "\x2\x2\x2 \x229\x3\x2\x2\x2\"\x22B\x3\x2\x2\x2$\x22F\x3\x2\x2\x2&\x233"+
+ "\x3\x2\x2\x2(\x248\x3\x2\x2\x2*\x25A\x3\x2\x2\x2,\x26C\x3\x2\x2\x2.\x279"+
+ "\x3\x2\x2\x2\x30\x2A3\x3\x2\x2\x2\x32\x2D9\x3\x2\x2\x2\x34\x2F8\x3\x2"+
+ "\x2\x2\x36\x2FA\x3\x2\x2\x2\x38\x2FF\x3\x2\x2\x2:\x30D\x3\x2\x2\x2<\x31A"+
+ "\x3\x2\x2\x2>\x32A\x3\x2\x2\x2@\x331\x3\x2\x2\x2\x42\x33B\x3\x2\x2\x2"+
+ "\x44\x33D\x3\x2\x2\x2\x46\x349\x3\x2\x2\x2H\x35F\x3\x2\x2\x2J\x38C\x3"+
+ "\x2\x2\x2L\x3AC\x3\x2\x2\x2N\x3C2\x3\x2\x2\x2P\x3C6\x3\x2\x2\x2R\x3E4"+
+ "\x3\x2\x2\x2T\x3E6\x3\x2\x2\x2V\x3EF\x3\x2\x2\x2X\x3F1\x3\x2\x2\x2Z\x3FA"+
+ "\x3\x2\x2\x2\\\x3FF\x3\x2\x2\x2^\x403\x3\x2\x2\x2`\x412\x3\x2\x2\x2\x62"+
+ "\x418\x3\x2\x2\x2\x64\x424\x3\x2\x2\x2\x66\x430\x3\x2\x2\x2h\x434\x3\x2"+
+ "\x2\x2j\x448\x3\x2\x2\x2l\x454\x3\x2\x2\x2n\x462\x3\x2\x2\x2p\x466\x3"+
+ "\x2\x2\x2r\x46E\x3\x2\x2\x2t\x47A\x3\x2\x2\x2v\x48E\x3\x2\x2\x2x\x4A2"+
+ "\x3\x2\x2\x2z\x4E7\x3\x2\x2\x2|\x4FA\x3\x2\x2\x2~\x4FC\x3\x2\x2\x2\x80"+
+ "\x50C\x3\x2\x2\x2\x82\x52C\x3\x2\x2\x2\x84\x544\x3\x2\x2\x2\x86\x559\x3"+
+ "\x2\x2\x2\x88\x56F\x3\x2\x2\x2\x8A\x582\x3\x2\x2\x2\x8C\x588\x3\x2\x2"+
+ "\x2\x8E\x59C\x3\x2\x2\x2\x90\x5AE\x3\x2\x2\x2\x92\x5B0\x3\x2\x2\x2\x94"+
+ "\x5B8\x3\x2\x2\x2\x96\x5BA\x3\x2\x2\x2\x98\x5BE\x3\x2\x2\x2\x9A\x5CA\x3"+
+ "\x2\x2\x2\x9C\x5D6\x3\x2\x2\x2\x9E\x5F2\x3\x2\x2\x2\xA0\x5FE\x3\x2\x2"+
+ "\x2\xA2\x61D\x3\x2\x2\x2\xA4\x61F\x3\x2\x2\x2\xA6\x635\x3\x2\x2\x2\xA8"+
+ "\x637\x3\x2\x2\x2\xAA\x644\x3\x2\x2\x2\xAC\x650\x3\x2\x2\x2\xAE\x65C\x3"+
+ "\x2\x2\x2\xB0\x661\x3\x2\x2\x2\xB2\x678\x3\x2\x2\x2\xB4\x685\x3\x2\x2"+
+ "\x2\xB6\x693\x3\x2\x2\x2\xB8\x6AB\x3\x2\x2\x2\xBA\x6AF\x3\x2\x2\x2\xBC"+
+ "\x6F0\x3\x2\x2\x2\xBE\x763\x3\x2\x2\x2\xC0\x770\x3\x2\x2\x2\xC2\x779\x3"+
+ "\x2\x2\x2\xC4\x787\x3\x2\x2\x2\xC6\x7A3\x3\x2\x2\x2\xC8\x7AC\x3\x2\x2"+
+ "\x2\xCA\x7B8\x3\x2\x2\x2\xCC\x7C6\x3\x2\x2\x2\xCE\x7C8\x3\x2\x2\x2\xD0"+
+ "\x7D6\x3\x2\x2\x2\xD2\x7DC\x3\x2\x2\x2\xD4\x7DE\x3\x2\x2\x2\xD6\x7FF\x3"+
+ "\x2\x2\x2\xD8\x826\x3\x2\x2\x2\xDA\x829\x3\x2\x2\x2\xDC\x84D\x3\x2\x2"+
+ "\x2\xDE\x863\x3\x2\x2\x2\xE0\x865\x3\x2\x2\x2\xE2\x87D\x3\x2\x2\x2\xE4"+
+ "\x8A4\x3\x2\x2\x2\xE6\x8C0\x3\x2\x2\x2\xE8\x8C9\x3\x2\x2\x2\xEA\x8D9\x3"+
+ "\x2\x2\x2\xEC\x8ED\x3\x2\x2\x2\xEE\x8F8\x3\x2\x2\x2\xF0\x900\x3\x2\x2"+
+ "\x2\xF2\x91B\x3\x2\x2\x2\xF4\x93F\x3\x2\x2\x2\xF6\x945\x3\x2\x2\x2\xF8"+
+ "\x958\x3\x2\x2\x2\xFA\x95E\x3\x2\x2\x2\xFC\x960\x3\x2\x2\x2\xFE\x96F\x3"+
+ "\x2\x2\x2\x100\x971\x3\x2\x2\x2\x102\x973\x3\x2\x2\x2\x104\x97B\x3\x2"+
+ "\x2\x2\x106\x983\x3\x2\x2\x2\x108\x990\x3\x2\x2\x2\x10A\x99C\x3\x2\x2"+
+ "\x2\x10C\x99E\x3\x2\x2\x2\x10E\x9A2\x3\x2\x2\x2\x110\x9AE\x3\x2\x2\x2"+
+ "\x112\x9B0\x3\x2\x2\x2\x114\x9B2\x3\x2\x2\x2\x116\x9C7\x3\x2\x2\x2\x118"+
+ "\x9D3\x3\x2\x2\x2\x11A\x9D6\x3\x2\x2\x2\x11C\x9D8\x3\x2\x2\x2\x11E\x9DA"+
+ "\x3\x2\x2\x2\x120\x9E0\x3\x2\x2\x2\x122\x9E5\x3\x2\x2\x2\x124\xA24\x3"+
+ "\x2\x2\x2\x126\xA28\x3\x2\x2\x2\x128\xA2B\x3\x2\x2\x2\x12A\x12B\x5\x4"+
+ "\x3\x2\x12B\x12C\a\x2\x2\x3\x12C\x3\x3\x2\x2\x2\x12D\x12F\x5\x128\x95"+
+ "\x2\x12E\x12D\x3\x2\x2\x2\x12E\x12F\x3\x2\x2\x2\x12F\x130\x3\x2\x2\x2"+
+ "\x130\x134\x5\x118\x8D\x2\x131\x132\x5\x6\x4\x2\x132\x133\x5\x118\x8D"+
+ "\x2\x133\x135\x3\x2\x2\x2\x134\x131\x3\x2\x2\x2\x134\x135\x3\x2\x2\x2"+
+ "\x135\x137\x3\x2\x2\x2\x136\x138\x5\b\x5\x2\x137\x136\x3\x2\x2\x2\x137"+
+ "\x138\x3\x2\x2\x2\x138\x139\x3\x2\x2\x2\x139\x13B\x5\x118\x8D\x2\x13A"+
+ "\x13C\x5\f\a\x2\x13B\x13A\x3\x2\x2\x2\x13B\x13C\x3\x2\x2\x2\x13C\x13D"+
+ "\x3\x2\x2\x2\x13D\x13F\x5\x118\x8D\x2\x13E\x140\x5\xE\b\x2\x13F\x13E\x3"+
+ "\x2\x2\x2\x13F\x140\x3\x2\x2\x2\x140\x141\x3\x2\x2\x2\x141\x143\x5\x118"+
+ "\x8D\x2\x142\x144\x5\x14\v\x2\x143\x142\x3\x2\x2\x2\x143\x144\x3\x2\x2"+
+ "\x2\x144\x145\x3\x2\x2\x2\x145\x147\x5\x118\x8D\x2\x146\x148\x5\x128\x95"+
+ "\x2\x147\x146\x3\x2\x2\x2\x147\x148\x3\x2\x2\x2\x148\x5\x3\x2\x2\x2\x149"+
+ "\x14A\a\xD7\x2\x2\x14A\x14B\x5\x128\x95\x2\x14B\x14D\x5\x10C\x87\x2\x14C"+
+ "\x14E\x5\x128\x95\x2\x14D\x14C\x3\x2\x2\x2\x14D\x14E\x3\x2\x2\x2\x14E"+
+ "\x150\x3\x2\x2\x2\x14F\x151\a\x46\x2\x2\x150\x14F\x3\x2\x2\x2\x150\x151"+
+ "\x3\x2\x2\x2\x151\x152\x3\x2\x2\x2\x152\x153\x5\x118\x8D\x2\x153\a\x3"+
+ "\x2\x2\x2\x154\x15C\a;\x2\x2\x155\x156\x5\x128\x95\x2\x156\x157\a\x103"+
+ "\x2\x2\x157\x158\x5\x128\x95\x2\x158\x15A\x5\xFA~\x2\x159\x15B\x5\x128"+
+ "\x95\x2\x15A\x159\x3\x2\x2\x2\x15A\x15B\x3\x2\x2\x2\x15B\x15D\x3\x2\x2"+
+ "\x2\x15C\x155\x3\x2\x2\x2\x15C\x15D\x3\x2\x2\x2\x15D\x15E\x3\x2\x2\x2"+
+ "\x15E\x160\x5\x118\x8D\x2\x15F\x161\x5\n\x6\x2\x160\x15F\x3\x2\x2\x2\x161"+
+ "\x162\x3\x2\x2\x2\x162\x160\x3\x2\x2\x2\x162\x163\x3\x2\x2\x2\x163\x164"+
+ "\x3\x2\x2\x2\x164\x165\ai\x2\x2\x165\t\x3\x2\x2\x2\x166\x16A\x5\xFA~\x2"+
+ "\x167\x169\x5\x128\x95\x2\x168\x167\x3\x2\x2\x2\x169\x16C\x3\x2\x2\x2"+
+ "\x16A\x168\x3\x2\x2\x2\x16A\x16B\x3\x2\x2\x2\x16B\x16D\x3\x2\x2\x2\x16C"+
+ "\x16A\x3\x2\x2\x2\x16D\x171\a\xE2\x2\x2\x16E\x170\x5\x128\x95\x2\x16F"+
+ "\x16E\x3\x2\x2\x2\x170\x173\x3\x2\x2\x2\x171\x16F\x3\x2\x2\x2\x171\x172"+
+ "\x3\x2\x2\x2\x172\x174\x3\x2\x2\x2\x173\x171\x3\x2\x2\x2\x174\x177\x5"+
+ "\x10A\x86\x2\x175\x176\a*\x2\x2\x176\x178\x5\x10C\x87\x2\x177\x175\x3"+
+ "\x2\x2\x2\x177\x178\x3\x2\x2\x2\x178\x179\x3\x2\x2\x2\x179\x17A\x5\x118"+
+ "\x8D\x2\x17A\v\x3\x2\x2\x2\x17B\x17C\x5\x18\r\x2\x17C\x17D\x5\x118\x8D"+
+ "\x2\x17D\x17F\x3\x2\x2\x2\x17E\x17B\x3\x2\x2\x2\x17F\x180\x3\x2\x2\x2"+
+ "\x180\x17E\x3\x2\x2\x2\x180\x181\x3\x2\x2\x2\x181\r\x3\x2\x2\x2\x182\x188"+
+ "\x5\x12\n\x2\x183\x184\x5\x118\x8D\x2\x184\x185\x5\x12\n\x2\x185\x187"+
+ "\x3\x2\x2\x2\x186\x183\x3\x2\x2\x2\x187\x18A\x3\x2\x2\x2\x188\x186\x3"+
+ "\x2\x2\x2\x188\x189\x3\x2\x2\x2\x189\x18B\x3\x2\x2\x2\x18A\x188\x3\x2"+
+ "\x2\x2\x18B\x18C\x5\x118\x8D\x2\x18C\xF\x3\x2\x2\x2\x18D\x18E\a\xA0\x2"+
+ "\x2\x18E\x18F\x5\x128\x95\x2\x18F\x190\x5\x10C\x87\x2\x190\x198\x3\x2"+
+ "\x2\x2\x191\x192\a\xA2\x2\x2\x192\x193\x5\x128\x95\x2\x193\x194\t\x2\x2"+
+ "\x2\x194\x198\x3\x2\x2\x2\x195\x198\a\xA1\x2\x2\x196\x198\a\xA3\x2\x2"+
+ "\x197\x18D\x3\x2\x2\x2\x197\x191\x3\x2\x2\x2\x197\x195\x3\x2\x2\x2\x197"+
+ "\x196\x3\x2\x2\x2\x198\x11\x3\x2\x2\x2\x199\x1A2\x5.\x18\x2\x19A\x1A2"+
+ "\x5\x38\x1D\x2\x19B\x1A2\x5@!\x2\x19C\x1A2\x5(\x15\x2\x19D\x1A2\x5\\/"+
+ "\x2\x19E\x1A2\x5\xC0\x61\x2\x19F\x1A2\x5\x10\t\x2\x1A0\x1A2\x5\xB4[\x2"+
+ "\x1A1\x199\x3\x2\x2\x2\x1A1\x19A\x3\x2\x2\x2\x1A1\x19B\x3\x2\x2\x2\x1A1"+
+ "\x19C\x3\x2\x2\x2\x1A1\x19D\x3\x2\x2\x2\x1A1\x19E\x3\x2\x2\x2\x1A1\x19F"+
+ "\x3\x2\x2\x2\x1A1\x1A0\x3\x2\x2\x2\x1A2\x13\x3\x2\x2\x2\x1A3\x1A9\x5\x16"+
+ "\f\x2\x1A4\x1A5\x5\x118\x8D\x2\x1A5\x1A6\x5\x16\f\x2\x1A6\x1A8\x3\x2\x2"+
+ "\x2\x1A7\x1A4\x3\x2\x2\x2\x1A8\x1AB\x3\x2\x2\x2\x1A9\x1A7\x3\x2\x2\x2"+
+ "\x1A9\x1AA\x3\x2\x2\x2\x1AA\x1AC\x3\x2\x2\x2\x1AB\x1A9\x3\x2\x2\x2\x1AC"+
+ "\x1AD\x5\x118\x8D\x2\x1AD\x15\x3\x2\x2\x2\x1AE\x1B4\x5J&\x2\x1AF\x1B4"+
+ "\x5\x80\x41\x2\x1B0\x1B4\x5\x82\x42\x2\x1B1\x1B4\x5\x84\x43\x2\x1B2\x1B4"+
+ "\x5\xB0Y\x2\x1B3\x1AE\x3\x2\x2\x2\x1B3\x1AF\x3\x2\x2\x2\x1B3\x1B0\x3\x2"+
+ "\x2\x2\x1B3\x1B1\x3\x2\x2\x2\x1B3\x1B2\x3\x2\x2\x2\x1B4\x17\x3\x2\x2\x2"+
+ "\x1B5\x1B6\a\x37\x2\x2\x1B6\x1B7\x5\x128\x95\x2\x1B7\x1B9\x5\xDEp\x2\x1B8"+
+ "\x1BA\x5\x128\x95\x2\x1B9\x1B8\x3\x2\x2\x2\x1B9\x1BA\x3\x2\x2\x2\x1BA"+
+ "\x1BB\x3\x2\x2\x2\x1BB\x1BD\a\xE2\x2\x2\x1BC\x1BE\x5\x128\x95\x2\x1BD"+
+ "\x1BC\x3\x2\x2\x2\x1BD\x1BE\x3\x2\x2\x2\x1BE\x1BF\x3\x2\x2\x2\x1BF\x1CA"+
+ "\x5\x10A\x86\x2\x1C0\x1C2\x5\x128\x95\x2\x1C1\x1C0\x3\x2\x2\x2\x1C1\x1C2"+
"\x3\x2\x2\x2\x1C2\x1C3\x3\x2\x2\x2\x1C3\x1C5\a)\x2\x2\x1C4\x1C6\x5\x128"+
"\x95\x2\x1C5\x1C4\x3\x2\x2\x2\x1C5\x1C6\x3\x2\x2\x2\x1C6\x1C7\x3\x2\x2"+
"\x2\x1C7\x1C9\x5\x10A\x86\x2\x1C8\x1C1\x3\x2\x2\x2\x1C9\x1CC\x3\x2\x2"+
@@ -17007,7 +17015,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
"\x2\x9CF\x9CE\x3\x2\x2\x2\x9CF\x9D0\x3\x2\x2\x2\x9D0\x9D2\x3\x2\x2\x2"+
"\x9D1\x9C9\x3\x2\x2\x2\x9D1\x9CB\x3\x2\x2\x2\x9D2\x9D5\x3\x2\x2\x2\x9D3"+
"\x9D1\x3\x2\x2\x2\x9D3\x9D4\x3\x2\x2\x2\x9D4\x119\x3\x2\x2\x2\x9D5\x9D3"+
- "\x3\x2\x2\x2\x9D6\x9D7\a\xFC\x2\x2\x9D7\x11B\x3\x2\x2\x2\x9D8\x9D9\a\xFD"+
+ "\x3\x2\x2\x2\x9D6\x9D7\a\xFC\x2\x2\x9D7\x11B\x3\x2\x2\x2\x9D8\x9D9\t\x17"+
"\x2\x2\x9D9\x11D\x3\x2\x2\x2\x9DA\x9DC\a\xFE\x2\x2\x9DB\x9DD\x5\x120\x91"+
"\x2\x9DC\x9DB\x3\x2\x2\x2\x9DD\x9DE\x3\x2\x2\x2\x9DE\x9DC\x3\x2\x2\x2"+
"\x9DE\x9DF\x3\x2\x2\x2\x9DF\x11F\x3\x2\x2\x2\x9E0\x9E1\a/\x2\x2\x9E1\x9E3"+
@@ -17041,7 +17049,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
"\x9E7\x3\x2\x2\x2\xA24\x9EC\x3\x2\x2\x2\xA24\x9FE\x3\x2\x2\x2\xA24\xA0D"+
"\x3\x2\x2\x2\xA25\x125\x3\x2\x2\x2\xA26\xA29\a\x101\x2\x2\xA27\xA29\x5"+
"\x10A\x86\x2\xA28\xA26\x3\x2\x2\x2\xA28\xA27\x3\x2\x2\x2\xA29\x127\x3"+
- "\x2\x2\x2\xA2A\xA2C\t\x17\x2\x2\xA2B\xA2A\x3\x2\x2\x2\xA2C\xA2D\x3\x2"+
+ "\x2\x2\x2\xA2A\xA2C\t\x18\x2\x2\xA2B\xA2A\x3\x2\x2\x2\xA2C\xA2D\x3\x2"+
"\x2\x2\xA2D\xA2B\x3\x2\x2\x2\xA2D\xA2E\x3\x2\x2\x2\xA2E\x129\x3\x2\x2"+
"\x2\x1BB\x12E\x134\x137\x13B\x13F\x143\x147\x14D\x150\x15A\x15C\x162\x16A"+
"\x171\x177\x180\x188\x197\x1A1\x1A9\x1B3\x1B9\x1BD\x1C1\x1C5\x1CA\x1D3"+
diff --git a/Rubberduck.Parsing/Grammar/VBAParser.g4 b/Rubberduck.Parsing/Grammar/VBAParser.g4
index 060f3e3040..1e2723d0e9 100644
--- a/Rubberduck.Parsing/Grammar/VBAParser.g4
+++ b/Rubberduck.Parsing/Grammar/VBAParser.g4
@@ -573,7 +573,7 @@ endOfStatement : (endOfLine | whiteSpace? COLON whiteSpace?)*;
remComment : REMCOMMENT;
-comment : COMMENT;
+comment : SINGLEQUOTE | COMMENT;
annotationList : SINGLEQUOTE annotation+;
diff --git a/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs b/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs
index 423d2f91a9..6c80a76f60 100644
--- a/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs
+++ b/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs
@@ -186,10 +186,14 @@ public IEnumerable GetDeclarationsForReference(Reference reference)
{
moduleDeclaration = new ProceduralModuleDeclaration(typeQualifiedMemberName, projectDeclaration, typeName, true, new List(), attributes);
}
- else
+ else if (typeDeclarationType == DeclarationType.ClassModule)
{
moduleDeclaration = new ClassModuleDeclaration(typeQualifiedMemberName, projectDeclaration, typeName, true, new List(), attributes, isExposed: true);
}
+ else
+ {
+ moduleDeclaration = new Declaration(typeQualifiedMemberName, projectDeclaration, projectDeclaration, typeName, false, false, Accessibility.Global, typeDeclarationType, null, Selection.Home, true, null, attributes);
+ }
yield return moduleDeclaration;
for (var memberIndex = 0; memberIndex < typeAttributes.cFuncs; memberIndex++)
diff --git a/RubberduckTests/Grammar/VBAParserTests.cs b/RubberduckTests/Grammar/VBAParserTests.cs
index 9f9701ee0f..1b9bc64d99 100644
--- a/RubberduckTests/Grammar/VBAParserTests.cs
+++ b/RubberduckTests/Grammar/VBAParserTests.cs
@@ -86,6 +86,22 @@ public void TestModuleConfig()
AssertTree(parseResult.Item1, parseResult.Item2, "//moduleConfigElement");
}
+ [TestMethod]
+ public void TestEmptyComment()
+ {
+ string code = @"'";
+ var parseResult = Parse(code);
+ AssertTree(parseResult.Item1, parseResult.Item2, "//comment");
+ }
+
+ [TestMethod]
+ public void TestOneCharComment()
+ {
+ string code = @"'a";
+ var parseResult = Parse(code);
+ AssertTree(parseResult.Item1, parseResult.Item2, "//comment");
+ }
+
[TestMethod]
public void TestDictionaryCallLineContinuation()
{
diff --git a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs
index dac7895401..d35105e3a2 100644
--- a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs
+++ b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs
@@ -10,100 +10,6 @@
namespace RubberduckTests.Inspections
{
- [TestClass]
- public class ObjectVariableNotSetInspectionTests
- {
- [TestMethod]
- public void ObjectVariableNotSet_GivenStringVariable_ReturnsNoResult()
- {
- const string inputCode = @"
-Private Sub Workbook_Open()
-
- Dim target As String
- target = Range(""A1"")
-
- target.Value = ""all good""
-
-End Sub";
-
- //Arrange
- var builder = new MockVbeBuilder();
- VBComponent component;
- var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
- var mockHost = new Mock();
- mockHost.SetupAllProperties();
- var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
-
- parser.Parse();
- if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
-
- var inspection = new ObjectVariableNotSetInspection(parser.State);
- var inspectionResults = inspection.GetInspectionResults();
-
- Assert.AreEqual(0, inspectionResults.Count());
- }
-
- [TestMethod]
- public void ObjectVariableNotSet_GivenObjectVariableNotSet_ReturnsResult()
- {
- const string inputCode = @"
-Private Sub Workbook_Open()
-
- Dim target As Range
- target = Range(""A1"")
-
- target.Value = ""forgot something?""
-
-End Sub";
-
- //Arrange
- var builder = new MockVbeBuilder();
- VBComponent component;
- var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
- var mockHost = new Mock();
- mockHost.SetupAllProperties();
- var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
-
- parser.Parse();
- if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
-
- var inspection = new ObjectVariableNotSetInspection(parser.State);
- var inspectionResults = inspection.GetInspectionResults();
-
- Assert.AreEqual(1, inspectionResults.Count());
- }
-
- [TestMethod]
- public void ObjectVariableNotSet_GivenSetObjectVariable_ReturnsNoResult()
- {
- const string inputCode = @"
-Private Sub Workbook_Open()
-
- Dim target As Range
- Set target = Range(""A1"")
-
- target.Value = ""All good""
-
-End Sub";
-
- //Arrange
- var builder = new MockVbeBuilder();
- VBComponent component;
- var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
- var mockHost = new Mock();
- mockHost.SetupAllProperties();
- var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
-
- parser.Parse();
- if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
-
- var inspection = new ObjectVariableNotSetInspection(parser.State);
- var inspectionResults = inspection.GetInspectionResults();
-
- Assert.AreEqual(0, inspectionResults.Count());
- }
- }
-
[TestClass]
public class ConstantNotUsedInspectionTests
{
diff --git a/RubberduckTests/Inspections/ObjectVariableNotSetInpsectionTests.cs b/RubberduckTests/Inspections/ObjectVariableNotSetInpsectionTests.cs
new file mode 100644
index 0000000000..18305152c7
--- /dev/null
+++ b/RubberduckTests/Inspections/ObjectVariableNotSetInpsectionTests.cs
@@ -0,0 +1,135 @@
+using System.Linq;
+using Microsoft.Vbe.Interop;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Moq;
+using Rubberduck.Inspections;
+using Rubberduck.Parsing.VBA;
+using Rubberduck.VBEditor.VBEHost;
+using RubberduckTests.Mocks;
+
+namespace RubberduckTests.Inspections
+{
+ [TestClass]
+ public class ObjectVariableNotSetInpsectionTests
+ {
+ [TestMethod]
+ public void ObjectVariableNotSet_GivenStringVariable_ReturnsNoResult()
+ {
+ const string inputCode = @"
+Private Sub Workbook_Open()
+
+ Dim target As String
+ target = Range(""A1"")
+
+ target.Value = ""all good""
+
+End Sub";
+
+ //Arrange
+ var builder = new MockVbeBuilder();
+ VBComponent component;
+ var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
+ var mockHost = new Mock();
+ mockHost.SetupAllProperties();
+ var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
+
+ parser.Parse();
+ if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
+
+ var inspection = new ObjectVariableNotSetInspection(parser.State);
+ var inspectionResults = inspection.GetInspectionResults();
+
+ Assert.AreEqual(0, inspectionResults.Count());
+ }
+
+ [TestMethod]
+ public void ObjectVariableNotSet_GivenVariantVariable_ReturnsNoResult()
+ {
+ const string inputCode = @"
+Private Sub Workbook_Open()
+
+ Dim target As Variant
+ target = Range(""A1"")
+
+ target.Value = ""all good""
+
+End Sub";
+
+ //Arrange
+ var builder = new MockVbeBuilder();
+ VBComponent component;
+ var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
+ var mockHost = new Mock();
+ mockHost.SetupAllProperties();
+ var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
+
+ parser.Parse();
+ if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
+
+ var inspection = new ObjectVariableNotSetInspection(parser.State);
+ var inspectionResults = inspection.GetInspectionResults();
+
+ Assert.AreEqual(0, inspectionResults.Count());
+ }
+
+ [TestMethod]
+ public void ObjectVariableNotSet_GivenObjectVariableNotSet_ReturnsResult()
+ {
+ const string inputCode = @"
+Private Sub Workbook_Open()
+
+ Dim target As Range
+ target = Range(""A1"")
+
+ target.Value = ""forgot something?""
+
+End Sub";
+
+ //Arrange
+ var builder = new MockVbeBuilder();
+ VBComponent component;
+ var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
+ var mockHost = new Mock();
+ mockHost.SetupAllProperties();
+ var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
+
+ parser.Parse();
+ if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
+
+ var inspection = new ObjectVariableNotSetInspection(parser.State);
+ var inspectionResults = inspection.GetInspectionResults();
+
+ Assert.AreEqual(1, inspectionResults.Count());
+ }
+
+ [TestMethod]
+ public void ObjectVariableNotSet_GivenSetObjectVariable_ReturnsNoResult()
+ {
+ const string inputCode = @"
+Private Sub Workbook_Open()
+
+ Dim target As Range
+ Set target = Range(""A1"")
+
+ target.Value = ""All good""
+
+End Sub";
+
+ //Arrange
+ var builder = new MockVbeBuilder();
+ VBComponent component;
+ var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
+ var mockHost = new Mock();
+ mockHost.SetupAllProperties();
+ var parser = MockParser.Create(vbe.Object, new RubberduckParserState());
+
+ parser.Parse();
+ if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); }
+
+ var inspection = new ObjectVariableNotSetInspection(parser.State);
+ var inspectionResults = inspection.GetInspectionResults();
+
+ Assert.AreEqual(0, inspectionResults.Count());
+ }
+ }
+}
\ No newline at end of file
diff --git a/RubberduckTests/RubberduckTests.csproj b/RubberduckTests/RubberduckTests.csproj
index 39967941cc..a0047380d9 100644
--- a/RubberduckTests/RubberduckTests.csproj
+++ b/RubberduckTests/RubberduckTests.csproj
@@ -88,6 +88,7 @@
+