diff --git a/.editorconfig b/.editorconfig
index d5b2badfd5..42c6f62e9c 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -159,12 +159,12 @@ dotnet_diagnostic.CA1815.severity = warning
# CA1820: Test for empty strings using string length
dotnet_diagnostic.CA1820.severity = warning
# CA1821: Remove empty finalizers
-dotnet_diagnostic.CA1821.severity = warning
+dotnet_diagnostic.CA1821.severity = error
# CA1822: Mark members as static
dotnet_diagnostic.CA1822.severity = suggestion
-# CA1823: Avoid unused private fields
-dotnet_diagnostic.CA1823.severity = warning
dotnet_code_quality.CA1822.api_surface = private, internal
+# CA1823: Avoid unused private fields
+dotnet_diagnostic.CA1823.severity = error
# CA1825: Avoid zero-length array allocations
dotnet_diagnostic.CA1825.severity = warning
# CA1826: Use property instead of Linq Enumerable method
@@ -212,6 +212,12 @@ indent_size = 2
avalonia_xaml_diagnostic.AVLN2203.severity = error
# StyleInMergedDictionaries
avalonia_xaml_diagnostic.AVLN2204.severity = error
+# RequiredTemplatePartMissing
+avalonia_xaml_diagnostic.AVLN2205.severity = error
+# OptionalTemplatePartMissing
+avalonia_xaml_diagnostic.AVLN2206.severity = info
+# TemplatePartWrongType
+avalonia_xaml_diagnostic.AVLN2207.severity = error
# Obsolete
avalonia_xaml_diagnostic.AVLN5001.severity = error
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 36cf0233ac..0000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve Avalonia
-title: ''
-labels: bug
-assignees: ''
----
-
-## Describe the bug
-A clear and concise description of what the bug is.
-
-## To Reproduce
-Steps to reproduce the behavior:
-
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-## Expected behavior
-A clear and concise description of what you expected to happen.
-
-## Screenshots
-If applicable, add screenshots to help explain your problem.
-
-## Environment
-
-- OS: [e.g. Windows, Mac, Linux (State distribution), Android, iOS, Browser]
-- Avalonia-Version: [e.g. 11.x.y or 0.10.x]
-
-## Additional context
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000000..e70693d358
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,50 @@
+name: Bug Report
+description: File a bug report
+labels: ["bug"]
+body:
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: Describe the bug
+ description: A clear and concise description of what the bug is.
+ validations:
+ required: true
+ - type: textarea
+ id: steps
+ attributes:
+ label: To Reproduce
+ description: Steps to reproduce the behavior.
+ validations:
+ required: true
+ - type: textarea
+ id: what-expected
+ attributes:
+ label: Expected behavior
+ description: A clear and concise description of what you expected to happen.
+ - type: input
+ id: avalonia-version
+ attributes:
+ label: Avalonia version
+ placeholder: e.g. 11.0.9, 11.1.0
+ validations:
+ required: true
+ - type: dropdown
+ id: os
+ attributes:
+ label: OS
+ multiple: true
+ options:
+ - Windows
+ - macOS
+ - Linux
+ - WebAssembly
+ - Android
+ - iOS
+ - Tizen
+ - type: textarea
+ id: additional-info
+ attributes:
+ label: Additional context
+ description: |
+ Add any other context about the problem here.
+ If applicable, add screenshots to help explain your problem.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 21c00665a0..0000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: ''
----
-
-## Is your feature request related to a problem? Please describe.
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-## Describe the solution you'd like
-A clear and concise description of what you want to happen.
-
-## Describe alternatives you've considered
-A clear and concise description of any alternative solutions or features you've considered.
-
-## Additional context
-Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000000..36dae1277c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,28 @@
+name: Feature request
+description: Suggest an idea for this project
+labels: ["enhancement"]
+body:
+ - type: textarea
+ id: problem
+ attributes:
+ label: Is your feature request related to a problem? Please describe.
+ description: A clear and concise description of what the problem is.
+ validations:
+ required: true
+ - type: textarea
+ id: solution
+ attributes:
+ label: Describe the solution you'd like
+ description: A clear and concise description of what you want to happen.
+ validations:
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Describe alternatives you've considered
+ description: A clear and concise description of any alternative solutions or features you've considered.
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/CLA.yml b/.github/workflows/CLA.yml
new file mode 100644
index 0000000000..b197fb53cc
--- /dev/null
+++ b/.github/workflows/CLA.yml
@@ -0,0 +1,22 @@
+name: "Avalonia CLA Bot"
+on:
+ issue_comment:
+ types: [created]
+ pull_request_target:
+ types: [opened,closed,synchronize]
+
+jobs:
+ Runner:
+ runs-on: ubuntu-latest
+ steps:
+ - name: 'Clone bot repo'
+ if: github.event.issue.pull_request && ((github.event.comment.user.login != 'cla-avalonia') || github.event_name == 'pull_request_target')
+ run : |
+ rm -rf ./github-action/
+ git clone https://${{ secrets.CLA_PAT }}:@github.com/AvaloniaUI/AvaloniaCLABot --branch=main --depth=1 --recursive CLABot
+
+ - name: "Run CLA bot"
+ if: github.event.issue.pull_request && ((github.event.comment.user.login != 'cla-avalonia') || github.event_name == 'pull_request_target')
+ uses: ./CLABot
+ env:
+ PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_PAT }}
diff --git a/.gitmodules b/.gitmodules
index 6e9f2f7c14..032bc879cc 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,6 +7,3 @@
[submodule "nukebuild/il-repack"]
path = nukebuild/il-repack
url = https://github.com/Gillibald/il-repack
-[submodule "external/Tmds.DBus.SourceGenerator"]
- path = external/Tmds.DBus.SourceGenerator
- url = https://github.com/jmacato/Tmds.DBus.SourceGenerator.git
diff --git a/.ncrunch/AppWithoutLifetime.v3.ncrunchproject b/.ncrunch/AppWithoutLifetime.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/AppWithoutLifetime.v3.ncrunchproject
+++ b/.ncrunch/AppWithoutLifetime.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Analyzers.v3.ncrunchproject b/.ncrunch/Avalonia.Analyzers.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/Avalonia.Analyzers.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Android.v3.ncrunchproject b/.ncrunch/Avalonia.Android.v3.ncrunchproject
index 319cd523ce..1335822600 100644
--- a/.ncrunch/Avalonia.Android.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Android.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-android34.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Base.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Base.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Base.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Benchmarks.v3.ncrunchproject b/.ncrunch/Avalonia.Benchmarks.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Avalonia.Benchmarks.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Benchmarks.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Browser.Blazor.v3.ncrunchproject b/.ncrunch/Avalonia.Browser.Blazor.v3.ncrunchproject
index 319cd523ce..7e6955b244 100644
--- a/.ncrunch/Avalonia.Browser.Blazor.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Browser.Blazor.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-browser
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Browser.v3.ncrunchproject b/.ncrunch/Avalonia.Browser.v3.ncrunchproject
index 319cd523ce..7e6955b244 100644
--- a/.ncrunch/Avalonia.Browser.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Browser.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-browser
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Build.Tasks.UnitTest.v3.ncrunchproject b/.ncrunch/Avalonia.Build.Tasks.UnitTest.v3.ncrunchproject
new file mode 100644
index 0000000000..f144353670
--- /dev/null
+++ b/.ncrunch/Avalonia.Build.Tasks.UnitTest.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ TargetFramework = net472
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Build.Tasks.v3.ncrunchproject b/.ncrunch/Avalonia.Build.Tasks.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/Avalonia.Build.Tasks.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Controls.DataGrid.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Controls.DataGrid.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Controls.DataGrid.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Controls.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Controls.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Controls.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Designer.HostApp.v3.ncrunchproject b/.ncrunch/Avalonia.Designer.HostApp.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Avalonia.Designer.HostApp.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Designer.HostApp.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.DesignerSupport.TestApp.v3.ncrunchproject b/.ncrunch/Avalonia.DesignerSupport.TestApp.v3.ncrunchproject
index 319cd523ce..1733492c89 100644
--- a/.ncrunch/Avalonia.DesignerSupport.TestApp.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.DesignerSupport.TestApp.v3.ncrunchproject
@@ -1,5 +1,7 @@
- True
+
+ TargetFramework = net8.0
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.DesignerSupport.Tests.v3.ncrunchproject b/.ncrunch/Avalonia.DesignerSupport.Tests.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Avalonia.DesignerSupport.Tests.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.DesignerSupport.Tests.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Direct2D1.RenderTests.v3.ncrunchproject b/.ncrunch/Avalonia.Direct2D1.RenderTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Direct2D1.RenderTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Direct2D1.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Direct2D1.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Direct2D1.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Designer.HostApp.net461.v3.ncrunchproject b/.ncrunch/Avalonia.FreeDesktop.net6.0.v3.ncrunchproject
similarity index 100%
rename from .ncrunch/Avalonia.Designer.HostApp.net461.v3.ncrunchproject
rename to .ncrunch/Avalonia.FreeDesktop.net6.0.v3.ncrunchproject
diff --git a/.ncrunch/Avalonia.Designer.HostApp.netcoreapp2.0.v3.ncrunchproject b/.ncrunch/Avalonia.FreeDesktop.netstandard2.0.v3.ncrunchproject
similarity index 100%
rename from .ncrunch/Avalonia.Designer.HostApp.netcoreapp2.0.v3.ncrunchproject
rename to .ncrunch/Avalonia.FreeDesktop.netstandard2.0.v3.ncrunchproject
diff --git a/.ncrunch/Avalonia.Generators.Tests.v3.ncrunchproject b/.ncrunch/Avalonia.Generators.Tests.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Avalonia.Generators.Tests.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Generators.Tests.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Generators.v3.ncrunchproject b/.ncrunch/Avalonia.Generators.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/Avalonia.Generators.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Headless.NUnit.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Headless.NUnit.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Headless.NUnit.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Headless.XUnit.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Headless.XUnit.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Headless.XUnit.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.IntegrationTests.Appium.v3.ncrunchproject b/.ncrunch/Avalonia.IntegrationTests.Appium.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Avalonia.IntegrationTests.Appium.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.IntegrationTests.Appium.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.LeakTests.v3.ncrunchproject b/.ncrunch/Avalonia.LeakTests.v3.ncrunchproject
new file mode 100644
index 0000000000..18f2aee75c
--- /dev/null
+++ b/.ncrunch/Avalonia.LeakTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net462
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Markup.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Markup.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Markup.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Markup.Xaml.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Markup.Xaml.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Markup.Xaml.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.MicroCom.v3.ncrunchproject b/.ncrunch/Avalonia.MicroCom.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/Avalonia.MicroCom.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.ReactiveUI.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.ReactiveUI.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.ReactiveUI.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.RenderTests.WpfCompare.v3.ncrunchproject b/.ncrunch/Avalonia.RenderTests.WpfCompare.v3.ncrunchproject
new file mode 100644
index 0000000000..96fdff3555
--- /dev/null
+++ b/.ncrunch/Avalonia.RenderTests.WpfCompare.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0-windows
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Skia.RenderTests.v3.ncrunchproject b/.ncrunch/Avalonia.Skia.RenderTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Skia.RenderTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Skia.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.Skia.UnitTests.v3.ncrunchproject
new file mode 100644
index 0000000000..1733492c89
--- /dev/null
+++ b/.ncrunch/Avalonia.Skia.UnitTests.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Themes.Simple.net6.0.v3.ncrunchproject b/.ncrunch/Avalonia.Themes.Simple.net6.0.v3.ncrunchproject
deleted file mode 100644
index 02eb0d211e..0000000000
--- a/.ncrunch/Avalonia.Themes.Simple.net6.0.v3.ncrunchproject
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- False
-
-
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Themes.Simple.net8.0.v3.ncrunchproject b/.ncrunch/Avalonia.Themes.Simple.net8.0.v3.ncrunchproject
new file mode 100644
index 0000000000..bc1af9a143
--- /dev/null
+++ b/.ncrunch/Avalonia.Themes.Simple.net8.0.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ ..\Avalonia.Themes.Fluent\Strings\InvariantResources.xaml
+
+ False
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Themes.Simple.netstandard2.0.v3.ncrunchproject b/.ncrunch/Avalonia.Themes.Simple.netstandard2.0.v3.ncrunchproject
index 02eb0d211e..bc1af9a143 100644
--- a/.ncrunch/Avalonia.Themes.Simple.netstandard2.0.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Themes.Simple.netstandard2.0.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ ..\Avalonia.Themes.Fluent\Strings\InvariantResources.xaml
+
False
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Tizen.v3.ncrunchproject b/.ncrunch/Avalonia.Tizen.v3.ncrunchproject
index 319cd523ce..d2c880c578 100644
--- a/.ncrunch/Avalonia.Tizen.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.Tizen.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-tizen
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.UnitTests.v3.ncrunchproject b/.ncrunch/Avalonia.UnitTests.v3.ncrunchproject
index cff5044edf..7a4ea98049 100644
--- a/.ncrunch/Avalonia.UnitTests.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.UnitTests.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = netstandard2.0
+
False
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Win32.Interoperability.v3.ncrunchproject b/.ncrunch/Avalonia.Win32.Interoperability.v3.ncrunchproject
new file mode 100644
index 0000000000..96fdff3555
--- /dev/null
+++ b/.ncrunch/Avalonia.Win32.Interoperability.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = net8.0-windows
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.net6.0.v3.ncrunchproject b/.ncrunch/Avalonia.X11.net6.0.v3.ncrunchproject
similarity index 100%
rename from .ncrunch/ControlCatalog.net6.0.v3.ncrunchproject
rename to .ncrunch/Avalonia.X11.net6.0.v3.ncrunchproject
diff --git a/.ncrunch/PInvoke.net6.0.v3.ncrunchproject b/.ncrunch/Avalonia.X11.netstandard2.0.v3.ncrunchproject
similarity index 100%
rename from .ncrunch/PInvoke.net6.0.v3.ncrunchproject
rename to .ncrunch/Avalonia.X11.netstandard2.0.v3.ncrunchproject
diff --git a/.ncrunch/Avalonia.iOS.v3.ncrunchproject b/.ncrunch/Avalonia.iOS.v3.ncrunchproject
index 319cd523ce..00c1cea8f4 100644
--- a/.ncrunch/Avalonia.iOS.v3.ncrunchproject
+++ b/.ncrunch/Avalonia.iOS.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = netstandard2.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.net8.0.v3.ncrunchproject b/.ncrunch/Avalonia.net8.0.v3.ncrunchproject
new file mode 100644
index 0000000000..4fdcd169ae
--- /dev/null
+++ b/.ncrunch/Avalonia.net8.0.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ DerivedFilesIncludedInWorkspace
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/BindingDemo.v3.ncrunchproject b/.ncrunch/BindingDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/BindingDemo.v3.ncrunchproject
+++ b/.ncrunch/BindingDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.Android.v3.ncrunchproject b/.ncrunch/ControlCatalog.Android.v3.ncrunchproject
index 319cd523ce..1335822600 100644
--- a/.ncrunch/ControlCatalog.Android.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.Android.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-android34.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.Browser.Blazor.v3.ncrunchproject b/.ncrunch/ControlCatalog.Browser.Blazor.v3.ncrunchproject
index 319cd523ce..7e6955b244 100644
--- a/.ncrunch/ControlCatalog.Browser.Blazor.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.Browser.Blazor.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-browser
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.Browser.v3.ncrunchproject b/.ncrunch/ControlCatalog.Browser.v3.ncrunchproject
index 319cd523ce..7e6955b244 100644
--- a/.ncrunch/ControlCatalog.Browser.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.Browser.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-browser
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.Desktop.v3.ncrunchproject b/.ncrunch/ControlCatalog.Desktop.v3.ncrunchproject
index 319cd523ce..ea3a821a00 100644
--- a/.ncrunch/ControlCatalog.Desktop.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.Desktop.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net461
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.NetCore.v3.ncrunchproject b/.ncrunch/ControlCatalog.NetCore.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/ControlCatalog.NetCore.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.NetCore.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.Tizen.v3.ncrunchproject b/.ncrunch/ControlCatalog.Tizen.v3.ncrunchproject
index 319cd523ce..d2c880c578 100644
--- a/.ncrunch/ControlCatalog.Tizen.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.Tizen.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-tizen
+
True
\ No newline at end of file
diff --git a/.ncrunch/ControlCatalog.iOS.v3.ncrunchproject b/.ncrunch/ControlCatalog.iOS.v3.ncrunchproject
index 319cd523ce..6ae5567f23 100644
--- a/.ncrunch/ControlCatalog.iOS.v3.ncrunchproject
+++ b/.ncrunch/ControlCatalog.iOS.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-ios17.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/PInvoke.netstandard2.0.v3.ncrunchproject b/.ncrunch/ControlCatalog.net8.0.v3.ncrunchproject
similarity index 100%
rename from .ncrunch/PInvoke.netstandard2.0.v3.ncrunchproject
rename to .ncrunch/ControlCatalog.net8.0.v3.ncrunchproject
diff --git a/.ncrunch/ControlSamples.v3.ncrunchproject b/.ncrunch/ControlSamples.v3.ncrunchproject
index 319cd523ce..00c1cea8f4 100644
--- a/.ncrunch/ControlSamples.v3.ncrunchproject
+++ b/.ncrunch/ControlSamples.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = netstandard2.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/DevAnalyzers.v3.ncrunchproject b/.ncrunch/DevAnalyzers.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/DevAnalyzers.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/DevGenerators.v3.ncrunchproject b/.ncrunch/DevGenerators.v3.ncrunchproject
new file mode 100644
index 0000000000..a079eefacf
--- /dev/null
+++ b/.ncrunch/DevGenerators.v3.ncrunchproject
@@ -0,0 +1,7 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+
+
\ No newline at end of file
diff --git a/.ncrunch/Generators.Sandbox.v3.ncrunchproject b/.ncrunch/Generators.Sandbox.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Generators.Sandbox.v3.ncrunchproject
+++ b/.ncrunch/Generators.Sandbox.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/GpuInterop.v3.ncrunchproject b/.ncrunch/GpuInterop.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/GpuInterop.v3.ncrunchproject
+++ b/.ncrunch/GpuInterop.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/IntegrationTestApp.v3.ncrunchproject b/.ncrunch/IntegrationTestApp.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/IntegrationTestApp.v3.ncrunchproject
+++ b/.ncrunch/IntegrationTestApp.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/MiniMvvm.v3.ncrunchproject b/.ncrunch/MiniMvvm.v3.ncrunchproject
index 319cd523ce..00c1cea8f4 100644
--- a/.ncrunch/MiniMvvm.v3.ncrunchproject
+++ b/.ncrunch/MiniMvvm.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = netstandard2.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/PInvoke.v3.ncrunchproject b/.ncrunch/PInvoke.v3.ncrunchproject
new file mode 100644
index 0000000000..00c1cea8f4
--- /dev/null
+++ b/.ncrunch/PInvoke.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ TargetFramework = netstandard2.0
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/PlatformSanityChecks.v3.ncrunchproject b/.ncrunch/PlatformSanityChecks.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/PlatformSanityChecks.v3.ncrunchproject
+++ b/.ncrunch/PlatformSanityChecks.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Previewer.v3.ncrunchproject b/.ncrunch/Previewer.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Previewer.v3.ncrunchproject
+++ b/.ncrunch/Previewer.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/ReactiveUIDemo.v3.ncrunchproject b/.ncrunch/ReactiveUIDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/ReactiveUIDemo.v3.ncrunchproject
+++ b/.ncrunch/ReactiveUIDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/RemoteDemo.v3.ncrunchproject b/.ncrunch/RemoteDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/RemoteDemo.v3.ncrunchproject
+++ b/.ncrunch/RemoteDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/RenderDemo.v3.ncrunchproject b/.ncrunch/RenderDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/RenderDemo.v3.ncrunchproject
+++ b/.ncrunch/RenderDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/SafeAreaDemo.Android.v3.ncrunchproject b/.ncrunch/SafeAreaDemo.Android.v3.ncrunchproject
index 319cd523ce..1335822600 100644
--- a/.ncrunch/SafeAreaDemo.Android.v3.ncrunchproject
+++ b/.ncrunch/SafeAreaDemo.Android.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-android34.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/SafeAreaDemo.Desktop.v3.ncrunchproject b/.ncrunch/SafeAreaDemo.Desktop.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/SafeAreaDemo.Desktop.v3.ncrunchproject
+++ b/.ncrunch/SafeAreaDemo.Desktop.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/SafeAreaDemo.iOS.v3.ncrunchproject b/.ncrunch/SafeAreaDemo.iOS.v3.ncrunchproject
index 319cd523ce..6ae5567f23 100644
--- a/.ncrunch/SafeAreaDemo.iOS.v3.ncrunchproject
+++ b/.ncrunch/SafeAreaDemo.iOS.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-ios17.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/SafeAreaDemo.v3.ncrunchproject b/.ncrunch/SafeAreaDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/SafeAreaDemo.v3.ncrunchproject
+++ b/.ncrunch/SafeAreaDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/Sandbox.v3.ncrunchproject b/.ncrunch/Sandbox.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/Sandbox.v3.ncrunchproject
+++ b/.ncrunch/Sandbox.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/SingleProjectSandbox.v3.ncrunchproject b/.ncrunch/SingleProjectSandbox.v3.ncrunchproject
new file mode 100644
index 0000000000..3b82c33f1c
--- /dev/null
+++ b/.ncrunch/SingleProjectSandbox.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ TargetFramework = net8.0
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/UnloadableAssemblyLoadContext.v3.ncrunchproject b/.ncrunch/UnloadableAssemblyLoadContext.v3.ncrunchproject
new file mode 100644
index 0000000000..f074de260d
--- /dev/null
+++ b/.ncrunch/UnloadableAssemblyLoadContext.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ TargetFramework = net7.0
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/UnloadableAssemblyLoadContextPlug.v3.ncrunchproject b/.ncrunch/UnloadableAssemblyLoadContextPlug.v3.ncrunchproject
new file mode 100644
index 0000000000..f074de260d
--- /dev/null
+++ b/.ncrunch/UnloadableAssemblyLoadContextPlug.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ TargetFramework = net7.0
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/VirtualizationDemo.v3.ncrunchproject b/.ncrunch/VirtualizationDemo.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/VirtualizationDemo.v3.ncrunchproject
+++ b/.ncrunch/VirtualizationDemo.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.ncrunch/WindowsInteropTest.net461.v3.ncrunchproject b/.ncrunch/WindowsInteropTest.net461.v3.ncrunchproject
deleted file mode 100644
index 319cd523ce..0000000000
--- a/.ncrunch/WindowsInteropTest.net461.v3.ncrunchproject
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- True
-
-
\ No newline at end of file
diff --git a/.ncrunch/WindowsInteropTest.net6.0-windows.v3.ncrunchproject b/.ncrunch/WindowsInteropTest.net6.0-windows.v3.ncrunchproject
deleted file mode 100644
index 319cd523ce..0000000000
--- a/.ncrunch/WindowsInteropTest.net6.0-windows.v3.ncrunchproject
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- True
-
-
\ No newline at end of file
diff --git a/.ncrunch/WindowsInteropTest.v3.ncrunchproject b/.ncrunch/WindowsInteropTest.v3.ncrunchproject
index 319cd523ce..484445df0e 100644
--- a/.ncrunch/WindowsInteropTest.v3.ncrunchproject
+++ b/.ncrunch/WindowsInteropTest.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0-windows
+
True
\ No newline at end of file
diff --git a/.ncrunch/_build.v3.ncrunchproject b/.ncrunch/_build.v3.ncrunchproject
index 319cd523ce..3b82c33f1c 100644
--- a/.ncrunch/_build.v3.ncrunchproject
+++ b/.ncrunch/_build.v3.ncrunchproject
@@ -1,5 +1,8 @@
+
+ TargetFramework = net8.0
+
True
\ No newline at end of file
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index a21636409b..f833ddd89a 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -73,6 +73,7 @@
"items": {
"type": "string",
"enum": [
+ "BuildToNuGetCache",
"CiAzureLinux",
"CiAzureOSX",
"CiAzureWindows",
@@ -84,6 +85,7 @@
"CreateNugetPackages",
"GenerateCppHeaders",
"OutputApiDiff",
+ "OutputVersion",
"Package",
"RunCoreLibsTests",
"RunHtmlPreviewerTests",
@@ -108,6 +110,7 @@
"items": {
"type": "string",
"enum": [
+ "BuildToNuGetCache",
"CiAzureLinux",
"CiAzureOSX",
"CiAzureWindows",
@@ -119,6 +122,7 @@
"CreateNugetPackages",
"GenerateCppHeaders",
"OutputApiDiff",
+ "OutputVersion",
"Package",
"RunCoreLibsTests",
"RunHtmlPreviewerTests",
@@ -143,6 +147,9 @@
"Quiet",
"Verbose"
]
+ },
+ "version-output-dir": {
+ "type": "string"
}
}
}
diff --git a/Avalonia.Desktop.slnf b/Avalonia.Desktop.slnf
index c63d55f2b4..799e920441 100644
--- a/Avalonia.Desktop.slnf
+++ b/Avalonia.Desktop.slnf
@@ -2,7 +2,6 @@
"solution": {
"path": "Avalonia.sln",
"projects": [
- "external\\Tmds.DBus.SourceGenerator\\Tmds.DBus.SourceGenerator\\Tmds.DBus.SourceGenerator.csproj",
"packages\\Avalonia\\Avalonia.csproj",
"samples\\AppWithoutLifetime\\AppWithoutLifetime.csproj",
"samples\\ControlCatalog.NetCore\\ControlCatalog.NetCore.csproj",
@@ -14,11 +13,12 @@
"samples\\RenderDemo\\RenderDemo.csproj",
"samples\\SampleControls\\ControlSamples.csproj",
"samples\\Sandbox\\Sandbox.csproj",
+ "samples\\UnloadableAssemblyLoadContext\\UnloadableAssemblyLoadContextPlug\\UnloadableAssemblyLoadContextPlug.csproj",
+ "samples\\UnloadableAssemblyLoadContext\\UnloadableAssemblyLoadContext\\UnloadableAssemblyLoadContext.csproj",
"src\\Avalonia.Base\\Avalonia.Base.csproj",
"src\\Avalonia.Build.Tasks\\Avalonia.Build.Tasks.csproj",
"src\\Avalonia.Controls.ColorPicker\\Avalonia.Controls.ColorPicker.csproj",
"src\\Avalonia.Controls.DataGrid\\Avalonia.Controls.DataGrid.csproj",
- "src\\Avalonia.Controls.ItemsRepeater\\Avalonia.Controls.ItemsRepeater.csproj",
"src\\Avalonia.Controls\\Avalonia.Controls.csproj",
"src\\Avalonia.DesignerSupport\\Avalonia.DesignerSupport.csproj",
"src\\Avalonia.Desktop\\Avalonia.Desktop.csproj",
@@ -30,6 +30,7 @@
"src\\Avalonia.MicroCom\\Avalonia.MicroCom.csproj",
"src\\Avalonia.Native\\Avalonia.Native.csproj",
"src\\Avalonia.OpenGL\\Avalonia.OpenGL.csproj",
+ "src\\Avalonia.Vulkan\\Avalonia.Vulkan.csproj",
"src\\Avalonia.ReactiveUI\\Avalonia.ReactiveUI.csproj",
"src\\Avalonia.Remote.Protocol\\Avalonia.Remote.Protocol.csproj",
"src\\Avalonia.Themes.Fluent\\Avalonia.Themes.Fluent.csproj",
@@ -51,21 +52,24 @@
"src\\Windows\\Avalonia.Win32\\Avalonia.Win32.csproj",
"tests\\Avalonia.Base.UnitTests\\Avalonia.Base.UnitTests.csproj",
"tests\\Avalonia.Benchmarks\\Avalonia.Benchmarks.csproj",
+ "tests\\Avalonia.Build.Tasks.UnitTest\\Avalonia.Build.Tasks.UnitTest.csproj",
"tests\\Avalonia.Controls.DataGrid.UnitTests\\Avalonia.Controls.DataGrid.UnitTests.csproj",
- "tests\\Avalonia.Controls.ItemsRepeater.UnitTests\\Avalonia.Controls.ItemsRepeater.UnitTests.csproj",
"tests\\Avalonia.Controls.UnitTests\\Avalonia.Controls.UnitTests.csproj",
"tests\\Avalonia.DesignerSupport.TestApp\\Avalonia.DesignerSupport.TestApp.csproj",
"tests\\Avalonia.DesignerSupport.Tests\\Avalonia.DesignerSupport.Tests.csproj",
"tests\\Avalonia.Direct2D1.RenderTests\\Avalonia.Direct2D1.RenderTests.csproj",
"tests\\Avalonia.Direct2D1.UnitTests\\Avalonia.Direct2D1.UnitTests.csproj",
+ "tests\\Avalonia.Generators.Tests\\Avalonia.Generators.Tests.csproj",
"tests\\Avalonia.IntegrationTests.Appium\\Avalonia.IntegrationTests.Appium.csproj",
"tests\\Avalonia.LeakTests\\Avalonia.LeakTests.csproj",
"tests\\Avalonia.Markup.UnitTests\\Avalonia.Markup.UnitTests.csproj",
"tests\\Avalonia.Markup.Xaml.UnitTests\\Avalonia.Markup.Xaml.UnitTests.csproj",
"tests\\Avalonia.ReactiveUI.UnitTests\\Avalonia.ReactiveUI.UnitTests.csproj",
+ "tests\\Avalonia.RenderTests.WpfCompare\\Avalonia.RenderTests.WpfCompare.csproj",
"tests\\Avalonia.Skia.RenderTests\\Avalonia.Skia.RenderTests.csproj",
"tests\\Avalonia.Skia.UnitTests\\Avalonia.Skia.UnitTests.csproj",
- "tests\\Avalonia.UnitTests\\Avalonia.UnitTests.csproj"
+ "tests\\Avalonia.UnitTests\\Avalonia.UnitTests.csproj",
+ "tests\\TestFiles\\BuildTasks\\PInvoke\\PInvoke.csproj"
]
}
}
\ No newline at end of file
diff --git a/Avalonia.sln b/Avalonia.sln
index 119b7ab197..2ebd2550ae 100644
--- a/Avalonia.sln
+++ b/Avalonia.sln
@@ -1,4 +1,3 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
@@ -120,6 +119,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1
build\TrimmingEnable.props = build\TrimmingEnable.props
build\UnitTests.NetFX.props = build\UnitTests.NetFX.props
build\XUnit.props = build\XUnit.props
+ build\TargetFrameworks.props = build\TargetFrameworks.props
+ build\WarnAsErrors.props = build\WarnAsErrors.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{4D6FAF79-58B4-482F-9122-0668C346364C}"
@@ -127,6 +128,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{4D6F
build\BuildTargets.targets = build\BuildTargets.targets
build\LegacyProject.targets = build\LegacyProject.targets
build\UnitTests.NetCore.targets = build\UnitTests.NetCore.targets
+ build\DevSingleProject.targets = build\DevSingleProject.targets
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Linux", "Linux", "{86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}"
@@ -211,13 +213,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.DesignerSupport.Te
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DevGenerators", "src\tools\DevGenerators\DevGenerators.csproj", "{1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MobileSandbox", "samples\MobileSandbox\MobileSandbox.csproj", "{3B8519C1-2F51-4F12-A348-120AB91D4532}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MobileSandbox.Android", "samples\MobileSandbox.Android\MobileSandbox.Android.csproj", "{C90FE60B-B01E-4F35-91D6-379D6966030F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MobileSandbox.iOS", "samples\MobileSandbox.iOS\MobileSandbox.iOS.csproj", "{FED9A71D-00D7-4F40-A9E4-1229EEA28EEB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MobileSandbox.Desktop", "samples\MobileSandbox.Desktop\MobileSandbox.Desktop.csproj", "{62D392C9-81CF-487F-92E8-598B2AF3FDCE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SingleProjectSandbox", "samples\SingleProjectSandbox\SingleProjectSandbox.csproj", "{3B8519C1-2F51-4F12-A348-120AB91D4532}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Browser", "src\Browser\Avalonia.Browser\Avalonia.Browser.csproj", "{4A39637C-9338-4925-A4DB-D072E292EC78}"
EndProject
@@ -251,10 +247,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Settings.StyleCop = Settings.StyleCop
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Controls.ItemsRepeater", "src\Avalonia.Controls.ItemsRepeater\Avalonia.Controls.ItemsRepeater.csproj", "{EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Controls.ItemsRepeater.UnitTests", "tests\Avalonia.Controls.ItemsRepeater.UnitTests\Avalonia.Controls.ItemsRepeater.UnitTests.csproj", "{F4E36AA8-814E-4704-BC07-291F70F45193}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Generators", "src\tools\Avalonia.Generators\Avalonia.Generators.csproj", "{DDA28789-C21A-4654-86CE-D01E81F095C5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Fonts.Inter", "src\Avalonia.Fonts.Inter\Avalonia.Fonts.Inter.csproj", "{13F1135D-BA1A-435C-9C5B-A368D1D63DE4}"
@@ -283,8 +275,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Headless.NUnit.Uni
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Headless.XUnit.UnitTests", "tests\Avalonia.Headless.XUnit.UnitTests\Avalonia.Headless.XUnit.UnitTests.csproj", "{F83FC908-A4E3-40DE-B4CF-A4BA1E92CDB3}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MobileSandbox.Browser", "samples\MobileSandbox.Browser\MobileSandbox.Browser.csproj", "{43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tizen", "Tizen", "{D1300000-7217-4693-8B0F-57CBD5814302}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Tizen", "src\Tizen\Avalonia.Tizen\Avalonia.Tizen.csproj", "{DFFBDBF5-5DBE-47ED-9EAE-D40B75AC99E8}"
@@ -301,7 +291,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildTasks", "BuildTasks",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvoke", "tests\TestFiles\BuildTasks\PInvoke\PInvoke.csproj", "{0A948D71-99C5-43E9-BACB-B0BA59EA25B4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tmds.DBus.SourceGenerator", "external\Tmds.DBus.SourceGenerator\Tmds.DBus.SourceGenerator\Tmds.DBus.SourceGenerator.csproj", "{068247A8-21E8-40D2-83CF-8758410FACAD}"
+
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnloadableAssemblyLoadContext", "UnloadableAssemblyLoadContext", "{9CCA131B-DE95-4D44-8788-C3CAE28574CD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnloadableAssemblyLoadContext", "samples\UnloadableAssemblyLoadContext\UnloadableAssemblyLoadContext\UnloadableAssemblyLoadContext.csproj", "{D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnloadableAssemblyLoadContextPlug", "samples\UnloadableAssemblyLoadContext\UnloadableAssemblyLoadContextPlug\UnloadableAssemblyLoadContextPlug.csproj", "{DA5F1FF9-4259-4C54-B443-85CFA226EE6A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Vulkan", "src\Avalonia.Vulkan\Avalonia.Vulkan.csproj", "{3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.RenderTests.WpfCompare", "tests\Avalonia.RenderTests.WpfCompare\Avalonia.RenderTests.WpfCompare.csproj", "{9AE1B827-21AC-4063-AB22-C8804B7F931E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -581,19 +580,6 @@ Global
{3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|Any CPU.Build.0 = Release|Any CPU
- {C90FE60B-B01E-4F35-91D6-379D6966030F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C90FE60B-B01E-4F35-91D6-379D6966030F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C90FE60B-B01E-4F35-91D6-379D6966030F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {C90FE60B-B01E-4F35-91D6-379D6966030F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C90FE60B-B01E-4F35-91D6-379D6966030F}.Release|Any CPU.Build.0 = Release|Any CPU
- {FED9A71D-00D7-4F40-A9E4-1229EEA28EEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FED9A71D-00D7-4F40-A9E4-1229EEA28EEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FED9A71D-00D7-4F40-A9E4-1229EEA28EEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FED9A71D-00D7-4F40-A9E4-1229EEA28EEB}.Release|Any CPU.Build.0 = Release|Any CPU
- {62D392C9-81CF-487F-92E8-598B2AF3FDCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {62D392C9-81CF-487F-92E8-598B2AF3FDCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {62D392C9-81CF-487F-92E8-598B2AF3FDCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {62D392C9-81CF-487F-92E8-598B2AF3FDCE}.Release|Any CPU.Build.0 = Release|Any CPU
{4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A39637C-9338-4925-A4DB-D072E292EC78}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -622,14 +608,6 @@ Global
{C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|Any CPU.Build.0 = Release|Any CPU
{C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|Any CPU.Build.0 = Release|Any CPU
- {EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EE0F0DD4-A70D-472B-BD5D-B7D32D0E9386}.Release|Any CPU.Build.0 = Release|Any CPU
- {F4E36AA8-814E-4704-BC07-291F70F45193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F4E36AA8-814E-4704-BC07-291F70F45193}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F4E36AA8-814E-4704-BC07-291F70F45193}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F4E36AA8-814E-4704-BC07-291F70F45193}.Release|Any CPU.Build.0 = Release|Any CPU
{DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -686,10 +664,6 @@ Global
{F83FC908-A4E3-40DE-B4CF-A4BA1E92CDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83FC908-A4E3-40DE-B4CF-A4BA1E92CDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83FC908-A4E3-40DE-B4CF-A4BA1E92CDB3}.Release|Any CPU.Build.0 = Release|Any CPU
- {43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8}.Release|Any CPU.Build.0 = Release|Any CPU
{DFFBDBF5-5DBE-47ED-9EAE-D40B75AC99E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFFBDBF5-5DBE-47ED-9EAE-D40B75AC99E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFFBDBF5-5DBE-47ED-9EAE-D40B75AC99E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -704,6 +678,10 @@ Global
{60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|Any CPU.Build.0 = Release|Any CPU
{B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -712,10 +690,18 @@ Global
{0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|Any CPU.Build.0 = Release|Any CPU
- {068247A8-21E8-40D2-83CF-8758410FACAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {068247A8-21E8-40D2-83CF-8758410FACAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {068247A8-21E8-40D2-83CF-8758410FACAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {068247A8-21E8-40D2-83CF-8758410FACAD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -774,9 +760,6 @@ Global
{EABE2161-989B-42BF-BD8D-1E34B20C21F1} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637}
{3B8519C1-2F51-4F12-A348-120AB91D4532} = {9B9E3891-2366-4253-A952-D08BCEB71098}
- {C90FE60B-B01E-4F35-91D6-379D6966030F} = {9B9E3891-2366-4253-A952-D08BCEB71098}
- {FED9A71D-00D7-4F40-A9E4-1229EEA28EEB} = {9B9E3891-2366-4253-A952-D08BCEB71098}
- {62D392C9-81CF-487F-92E8-598B2AF3FDCE} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{4A39637C-9338-4925-A4DB-D072E292EC78} = {86A3F706-DC3C-43C6-BE1B-B98F5BAAA268}
{47F8530C-F19B-4B1A-B4D6-EB231522AE5D} = {86A3F706-DC3C-43C6-BE1B-B98F5BAAA268}
{15B93A4C-1B46-43F6-B534-7B25B6E99932} = {9B9E3891-2366-4253-A952-D08BCEB71098}
@@ -784,7 +767,6 @@ Global
{75C47156-C5D8-44BC-A5A7-E8657C2248D6} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{C810060E-3809-4B74-A125-F11533AF9C1B} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{C692FE73-43DB-49CE-87FC-F03ED61F25C9} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637}
- {F4E36AA8-814E-4704-BC07-291F70F45193} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{DDA28789-C21A-4654-86CE-D01E81F095C5} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637}
{A82AD1BC-EBE6-4FC3-A13B-D52A50297533} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{F8928267-688E-4A51-989C-612A72446D33} = {9B9E3891-2366-4253-A952-D08BCEB71098}
@@ -797,14 +779,16 @@ Global
{4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{2999D79E-3C20-4A90-B651-CA7E0AC92D35} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{F83FC908-A4E3-40DE-B4CF-A4BA1E92CDB3} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
- {43FCC14E-EEBE-44B3-BCBC-F1C537EECBF8} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{DFFBDBF5-5DBE-47ED-9EAE-D40B75AC99E8} = {D1300000-7217-4693-8B0F-57CBD5814302}
{A0B29221-2B6F-4B29-A4D5-2227811B5915} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{B0FD6A48-FBAB-4676-B36A-DE76B0922B12} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{9D6AEF22-221F-4F4B-B335-A4BA510F002C} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{5BF0C3B8-E595-4940-AB30-2DA206C2F085} = {9D6AEF22-221F-4F4B-B335-A4BA510F002C}
{0A948D71-99C5-43E9-BACB-B0BA59EA25B4} = {5BF0C3B8-E595-4940-AB30-2DA206C2F085}
- {068247A8-21E8-40D2-83CF-8758410FACAD} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
+ {9CCA131B-DE95-4D44-8788-C3CAE28574CD} = {9B9E3891-2366-4253-A952-D08BCEB71098}
+ {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0} = {9CCA131B-DE95-4D44-8788-C3CAE28574CD}
+ {DA5F1FF9-4259-4C54-B443-85CFA226EE6A} = {9CCA131B-DE95-4D44-8788-C3CAE28574CD}
+ {9AE1B827-21AC-4063-AB22-C8804B7F931E} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A}
diff --git a/Avalonia.sln.DotSettings b/Avalonia.sln.DotSettings
index b0692905e7..cc58566622 100644
--- a/Avalonia.sln.DotSettings
+++ b/Avalonia.sln.DotSettings
@@ -37,5 +37,7 @@
<Policy Inspect="False" Prefix="T" Suffix="" Style="AaBb" />
<Policy Inspect="False" Prefix="" Suffix="" Style="AaBb" />
True
+ True
True
- True
+ True
+ True
diff --git a/Avalonia.v3.ncrunchsolution b/Avalonia.v3.ncrunchsolution
index b97a8e54f5..95f316f8cf 100644
--- a/Avalonia.v3.ncrunchsolution
+++ b/Avalonia.v3.ncrunchsolution
@@ -10,8 +10,11 @@
True
RunApiCompat = false
+ TargetFrameworks = net8.0;netstandard2.0
+ False
.ncrunch
+ True
True
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index ec7a7ed18b..117c0964d2 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,12 +1,13 @@
+
+
$(MSBuildThisFileDirectory)build-intermediate/nuget
$(MSBuildThisFileDirectory)\src\tools\Avalonia.Designer.HostApp\bin\$(Configuration)\netstandard2.0\Avalonia.Designer.HostApp.dll
false
- false
False
- 11
+ 12
diff --git a/Documentation/build.md b/Documentation/build.md
index 3fcaae8963..ea91f035f8 100644
--- a/Documentation/build.md
+++ b/Documentation/build.md
@@ -1,10 +1,6 @@
-# Windows
-
-Avalonia requires at least Visual Studio 2022 and dotnet 7-rc2 SDK 7.0.100-rc.2 to build on all platforms.
-
## Clone the Avalonia repository
-```
+```bash
git clone https://github.com/AvaloniaUI/Avalonia.git
cd Avalonia
git submodule update --init
@@ -12,23 +8,31 @@ git submodule update --init
## Install the required version of the .NET Core SDK
-Go to https://dotnet.microsoft.com/download/visual-studio-sdks and install the latest version of the .NET Core SDK compatible with Avalonia UI. Make sure to download the SDK (not just the "runtime") package. The version compatible is indicated within the [global.json](https://github.com/AvaloniaUI/Avalonia/blob/master/global.json) file. Note that Avalonia UI does not always use the latest version and is hardcoded to use the last version known to be compatible (SDK releases may break the builds from time-to-time).
+Go to https://dotnet.microsoft.com/en-us/download/visual-studio-sdks and install the latest version of the .NET SDK compatible with Avalonia UI. Make sure to download the SDK (not just the "runtime") package. The version compatible is indicated within the [global.json](https://github.com/AvaloniaUI/Avalonia/blob/master/global.json) file. Note that Avalonia UI does not always use the latest version and is hardcoded to use the last version known to be compatible (SDK releases may break the builds from time-to-time).
### Installing necessary .NET Workloads
.NET SDK requires developers to install workloads for each platform they are targeting.
Since Avalonia targets pretty much every supported .NET platform, you need to install these workloads as well.
Running it from the command line:
-```
-dotnet workload install android ios wasm-tools wasm-experimental
+```bash
+dotnet workload install android ios wasm-tools
```
macOS workloads are not required to build Avalonia.
Note: on Unix OS you need to run this command from sudo.
+Tizen workload can be installed with PowerShell:
+```powershell
+(New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1') | Invoke-Expression
+```
+Or Bash:
+```bash
+curl -sSL https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.sh | sudo bash
+```
## Build and Run Avalonia
-```
+```bash
cd samples\ControlCatalog.NetCore
dotnet restore
dotnet run
@@ -47,14 +51,6 @@ Build and run `ControlCatalog.NetCore` project to see the sample application.
### Visual Studio Troubleshooting
- * **Error CS0006: Avalonia.DesktopRuntime.dll could not be found**
-
- It is common for the first build to fail with the errors below (also discussed in [#4257](https://github.com/AvaloniaUI/Avalonia/issues/4257)).
- ```
- >CSC : error CS0006: Metadata file 'C:\...\Avalonia\src\Avalonia.DesktopRuntime\bin\Debug\netcoreapp2.0\Avalonia.DesktopRuntime.dll' could not be found
- >CSC : error CS0006: Metadata file 'C:\...\Avalonia\packages\Avalonia\bin\Debug\netcoreapp2.0\Avalonia.dll' could not be found
- ```
- To correct this, right click on the `Avalonia.DesktopRuntime` project then press `Build` to build the project manually. Afterwards the solution should build normally and the ControlCatalog can be run.
* **Error MSB4062 GenerateAvaloniaResourcesTask**
Same as previous one, you need to manually build `Avalonia.Build.Tasks` project at least once.
@@ -79,11 +75,7 @@ Or if you need to create nuget packages as well (it will compile and run tests a
It's *not* possible to build the *whole* project on Linux/macOS. You can only build the subset targeting .NET Standard and .NET Core (which is, however, sufficient to get UI working on Linux/macOS). If you want to something that involves changing platform-specific APIs you'll need a Windows machine.
-MonoDevelop, Xamarin Studio and Visual Studio for Mac aren't capable of properly opening our solution. You can use Rider (at least 2017.2 EAP) or VSCode instead. They will fail to load most of platform specific projects, but you don't need them to run on .NET Core.
-
-## Install the latest version of the .NET Core SDK
-
-Go to https://www.microsoft.com/net/core and follow the instructions for your OS. Make sure to download the SDK (not just the "runtime") package.
+MonoDevelop, Xamarin Studio and Visual Studio for Mac aren't capable of properly opening our solution. You can use Rider (at least 2017.2 EAP) or VS Code instead. They will fail to load most of platform specific projects, but you don't need them to run on .NET Core.
## Additional requirements for macOS
@@ -105,10 +97,23 @@ On macOS it is necessary to build and manually install the respective native lib
./build.sh CompileNative
```
-## Build and Run Avalonia
+# Building Avalonia into a local NuGet cache
+It is possible to build Avalonia locally and generate NuGet packages that can be used locally to test local changes.
+To do so you need to run:
+```bash
+nuke --target BuildToNuGetCache --configuration Release
```
-cd samples/ControlCatalog.NetCore
-dotnet restore
-dotnet run
-```
+
+This command will generate nuget packages and push them into a local NuGet automatically.
+To use these packages use `9999.0.0-localbuild` package version.
+Each time local changes are made to Avalonia, running this command again will replace old packages and reset cache for the same version.
+
+## Browser
+
+To build and run browser/wasm projects, it's necessary to install NodeJS.
+You can find latest LTS on https://nodejs.org/.
+
+## Windows
+
+It is possible to run some .NET Framework samples and tests using .NET Framework SDK. You need to install at least 4.7 SDK.
diff --git a/Settings.StyleCop b/Settings.StyleCop
deleted file mode 100644
index 5bd6cda777..0000000000
--- a/Settings.StyleCop
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/api/Avalonia.Android.nupkg.xml b/api/Avalonia.Android.nupkg.xml
new file mode 100644
index 0000000000..5e68aafc3f
--- /dev/null
+++ b/api/Avalonia.Android.nupkg.xml
@@ -0,0 +1,94 @@
+
+
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Animation
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Animator
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Attribute
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Boolean
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Color
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Dimension
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Drawable
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Id
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Integer
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Interpolator
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Layout
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.String
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Style
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0001
+ T:Avalonia.Android.Internal.Resource.Styleable
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
+ CP0007
+ T:Avalonia.Android.Internal.Resource
+ baseline/net6.0-android31.0/Avalonia.Android.dll
+ target/net8.0-android34.0/Avalonia.Android.dll
+
+
\ No newline at end of file
diff --git a/api/Avalonia.Browser.nupkg.xml b/api/Avalonia.Browser.nupkg.xml
new file mode 100644
index 0000000000..16bdbfe25d
--- /dev/null
+++ b/api/Avalonia.Browser.nupkg.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ CP0002
+ M:Avalonia.Browser.AvaloniaView.get_IsComposing
+ baseline/net7.0/Avalonia.Browser.dll
+ target/net8.0-browser1.0/Avalonia.Browser.dll
+
+
+ CP0002
+ M:Avalonia.Browser.AvaloniaView.OnDragEvent(System.Runtime.InteropServices.JavaScript.JSObject)
+ baseline/net7.0/Avalonia.Browser.dll
+ target/net8.0-browser1.0/Avalonia.Browser.dll
+
+
+ CP0008
+ T:Avalonia.Browser.AvaloniaView
+ baseline/net7.0/Avalonia.Browser.dll
+ target/net8.0-browser1.0/Avalonia.Browser.dll
+
+
\ No newline at end of file
diff --git a/api/Avalonia.Controls.ColorPicker.nupkg.xml b/api/Avalonia.Controls.ColorPicker.nupkg.xml
index 90271d6e98..8fadd656ea 100644
--- a/api/Avalonia.Controls.ColorPicker.nupkg.xml
+++ b/api/Avalonia.Controls.ColorPicker.nupkg.xml
@@ -31,6 +31,12 @@
baseline/netstandard2.0/Avalonia.Controls.ColorPicker.dll
target/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Themes/Fluent/Fluent.xaml
+ baseline/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+ target/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+
CP0001
T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Themes/Simple/ColorPicker.xaml
@@ -61,4 +67,10 @@
baseline/netstandard2.0/Avalonia.Controls.ColorPicker.dll
target/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Themes/Simple/Simple.xaml
+ baseline/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+ target/netstandard2.0/Avalonia.Controls.ColorPicker.dll
+
\ No newline at end of file
diff --git a/api/Avalonia.Controls.DataGrid.nupkg.xml b/api/Avalonia.Controls.DataGrid.nupkg.xml
new file mode 100644
index 0000000000..1dc020aa79
--- /dev/null
+++ b/api/Avalonia.Controls.DataGrid.nupkg.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Themes/Fluent.xaml
+ baseline/netstandard2.0/Avalonia.Controls.DataGrid.dll
+ target/netstandard2.0/Avalonia.Controls.DataGrid.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Themes/Simple.xaml
+ baseline/netstandard2.0/Avalonia.Controls.DataGrid.dll
+ target/netstandard2.0/Avalonia.Controls.DataGrid.dll
+
+
\ No newline at end of file
diff --git a/api/Avalonia.Diagnostics.nupkg.xml b/api/Avalonia.Diagnostics.nupkg.xml
index d364618e59..5bc2bfa99c 100644
--- a/api/Avalonia.Diagnostics.nupkg.xml
+++ b/api/Avalonia.Diagnostics.nupkg.xml
@@ -1,10 +1,64 @@
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Controls/BrushEditor.axaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Controls/FilterTextBox.axaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Controls/ThicknessEditor.axaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
CP0001
T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/ConsoleView.xaml
baseline/netstandard2.0/Avalonia.Diagnostics.dll
target/netstandard2.0/Avalonia.Diagnostics.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/ControlDetailsView.xaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/EventsPageView.xaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/LayoutExplorerView.axaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/MainView.xaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/MainWindow.xaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Diagnostics/Views/TreePageView.xaml
+ baseline/netstandard2.0/Avalonia.Diagnostics.dll
+ target/netstandard2.0/Avalonia.Diagnostics.dll
+
\ No newline at end of file
diff --git a/api/Avalonia.Skia.nupkg.xml b/api/Avalonia.Skia.nupkg.xml
new file mode 100644
index 0000000000..a88fc8ba0a
--- /dev/null
+++ b/api/Avalonia.Skia.nupkg.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ CP0006
+ M:Avalonia.Skia.ISkiaSharpApiLease.TryLeasePlatformGraphicsApi
+ baseline/netstandard2.0/Avalonia.Skia.dll
+ target/netstandard2.0/Avalonia.Skia.dll
+
+
\ No newline at end of file
diff --git a/api/Avalonia.Themes.Fluent.nupkg.xml b/api/Avalonia.Themes.Fluent.nupkg.xml
index a5be5ceeb9..08fb493760 100644
--- a/api/Avalonia.Themes.Fluent.nupkg.xml
+++ b/api/Avalonia.Themes.Fluent.nupkg.xml
@@ -1,6 +1,12 @@
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Accents/BaseColorsPalette.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
+ target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
CP0001
T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Accents/BaseResources.xaml
@@ -145,6 +151,12 @@
baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Controls/FluentControls.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
+ target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
CP0001
T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Controls/FlyoutPresenter.xaml
@@ -421,4 +433,16 @@
baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/DensityStyles/Compact.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
+ target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/FluentTheme.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Fluent.dll
+ target/netstandard2.0/Avalonia.Themes.Fluent.dll
+
\ No newline at end of file
diff --git a/api/Avalonia.Themes.Simple.nupkg.xml b/api/Avalonia.Themes.Simple.nupkg.xml
index e6a62495d9..8f4ac0585a 100644
--- a/api/Avalonia.Themes.Simple.nupkg.xml
+++ b/api/Avalonia.Themes.Simple.nupkg.xml
@@ -289,6 +289,12 @@
baseline/netstandard2.0/Avalonia.Themes.Simple.dll
target/netstandard2.0/Avalonia.Themes.Simple.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Controls/SimpleControls.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Simple.dll
+ target/netstandard2.0/Avalonia.Themes.Simple.dll
+
CP0001
T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/Controls/Slider.xaml
@@ -409,4 +415,10 @@
baseline/netstandard2.0/Avalonia.Themes.Simple.dll
target/netstandard2.0/Avalonia.Themes.Simple.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/SimpleTheme.xaml
+ baseline/netstandard2.0/Avalonia.Themes.Simple.dll
+ target/netstandard2.0/Avalonia.Themes.Simple.dll
+
\ No newline at end of file
diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml
index b56906842b..a47a716d3d 100644
--- a/api/Avalonia.nupkg.xml
+++ b/api/Avalonia.nupkg.xml
@@ -1015,6 +1015,18 @@
baseline/netstandard2.0/Avalonia.Base.dll
target/netstandard2.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Diagnostics.AppliedStyle
+ baseline/netstandard2.0/Avalonia.Base.dll
+ target/netstandard2.0/Avalonia.Base.dll
+
+
+ CP0001
+ T:Avalonia.Diagnostics.StyleDiagnostics
+ baseline/netstandard2.0/Avalonia.Base.dll
+ target/netstandard2.0/Avalonia.Base.dll
+
CP0001
T:Avalonia.Input.FocusManager.<GetFocusScopeAncestors>d__18
@@ -1069,9 +1081,27 @@
baseline/netstandard2.0/Avalonia.Controls.dll
target/netstandard2.0/Avalonia.Controls.dll
+
+ CP0001
+ T:CompiledAvaloniaXaml.!AvaloniaResources.NamespaceInfo:/AboutAvaloniaDialog.xaml
+ baseline/netstandard2.0/Avalonia.Dialogs.dll
+ target/netstandard2.0/Avalonia.Dialogs.dll
+
+
+ CP0002
+ M:Avalonia.Diagnostics.StyledElementExtensions.GetStyleDiagnostics(Avalonia.StyledElement)
+ baseline/netstandard2.0/Avalonia.Base.dll
+ target/netstandard2.0/Avalonia.Base.dll
+
CP0006
- P:Avalonia.Rendering.Composition.ICompositionGpuImportedObject.ImportCompleted
+ M:Avalonia.Platform.IAssetLoader.InvalidateAssemblyCache
+ baseline/netstandard2.0/Avalonia.Base.dll
+ target/netstandard2.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Platform.IAssetLoader.InvalidateAssemblyCache(System.String)
baseline/netstandard2.0/Avalonia.Base.dll
target/netstandard2.0/Avalonia.Base.dll
@@ -1087,4 +1117,28 @@
baseline/netstandard2.0/Avalonia.Base.dll
target/netstandard2.0/Avalonia.Base.dll
+
+ CP0006
+ P:Avalonia.Rendering.Composition.ICompositionGpuImportedObject.ImportCompleted
+ baseline/netstandard2.0/Avalonia.Base.dll
+ target/netstandard2.0/Avalonia.Base.dll
+
+
+ CP0006
+ M:Avalonia.Controls.Notifications.IManagedNotificationManager.Close(System.Object)
+ baseline/netstandard2.0/Avalonia.Controls.dll
+ target/netstandard2.0/Avalonia.Controls.dll
+
+
+ CP0006
+ M:Avalonia.Controls.Notifications.INotificationManager.Close(Avalonia.Controls.Notifications.INotification)
+ baseline/netstandard2.0/Avalonia.Controls.dll
+ target/netstandard2.0/Avalonia.Controls.dll
+
+
+ CP0006
+ M:Avalonia.Controls.Notifications.INotificationManager.CloseAll
+ baseline/netstandard2.0/Avalonia.Controls.dll
+ target/netstandard2.0/Avalonia.Controls.dll
+
\ No newline at end of file
diff --git a/azure-pipelines-integrationtests.yml b/azure-pipelines-integrationtests.yml
index 3613518dc1..ce9b38c44d 100644
--- a/azure-pipelines-integrationtests.yml
+++ b/azure-pipelines-integrationtests.yml
@@ -11,7 +11,7 @@ jobs:
version: 6.0.x
- task: UseDotNet@2
- displayName: 'Use .NET 7.0 SDK'
+ displayName: 'Use .NET 8.0 SDK'
inputs:
packageType: sdk
useGlobalJson: true
@@ -33,7 +33,7 @@ jobs:
rm -rf $(osascript -e "POSIX path of (path to application id \"net.avaloniaui.avalonia.integrationtestapp\")")
pkill IntegrationTestApp
./samples/IntegrationTestApp/bundle.sh
- open -n ./samples/IntegrationTestApp/bin/Debug/net7.0/osx-$arch/publish/IntegrationTestApp.app
+ open -n ./samples/IntegrationTestApp/bin/Debug/net8.0/osx-$arch/publish/IntegrationTestApp.app
pkill IntegrationTestApp
displayName: 'Build IntegrationTestApp'
@@ -65,7 +65,7 @@ jobs:
version: 6.0.x
- task: UseDotNet@2
- displayName: 'Use .NET 7.0 SDK'
+ displayName: 'Use .NET 8.0 SDK'
inputs:
packageType: sdk
useGlobalJson: true
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 3f918d8bc2..f6e116a8fa 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -2,23 +2,19 @@ jobs:
- job: GetPRNumber
pool:
- vmImage: 'windows-2022'
+ vmImage: 'ubuntu-20.04'
variables:
SolutionDir: '$(Build.SourcesDirectory)'
steps:
- - task: PowerShell@2
- displayName: Get PR Number
+ - task: UseDotNet@2
+ displayName: 'Use .NET 8.0 SDK'
inputs:
- targetType: 'inline'
- script: |
- $prId = $env:System_PullRequest_PullRequestNumber
- Write-Host "PR Number is:-" $env:System_PullRequest_PullRequestNumber
-
- if (!([string]::IsNullOrWhiteSpace($prId)))
- {
- Set-Content -Path $env:Build_ArtifactStagingDirectory\prId.txt -Value $prId
- }
-
+ packageType: sdk
+ useGlobalJson: true
+ - task: CmdLine@2
+ displayName: 'Run Build'
+ inputs:
+ script: ./build.sh --target OutputVersion --version-output-dir $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
@@ -36,7 +32,7 @@ jobs:
version: 6.0.x
- task: UseDotNet@2
- displayName: 'Use .NET 7.0 SDK'
+ displayName: 'Use .NET 8.0 SDK'
inputs:
packageType: sdk
useGlobalJson: true
@@ -45,7 +41,7 @@ jobs:
displayName: 'Install Workloads'
inputs:
script: |
- dotnet workload install wasm-tools wasm-experimental
+ dotnet workload install android macos wasm-tools
- task: CmdLine@2
displayName: 'Install Tizen Workload'
@@ -82,7 +78,7 @@ jobs:
version: 6.0.x
- task: UseDotNet@2
- displayName: 'Use .NET 7.0 SDK'
+ displayName: 'Use .NET 8.0 SDK'
inputs:
packageType: sdk
useGlobalJson: true
@@ -91,7 +87,7 @@ jobs:
displayName: 'Install Workloads'
inputs:
script: |
- dotnet workload install wasm-tools wasm-experimental
+ dotnet workload install android ios macos wasm-tools
- task: CmdLine@2
displayName: 'Install Tizen Workload'
@@ -162,7 +158,7 @@ jobs:
version: 6.0.x
- task: UseDotNet@2
- displayName: 'Use .NET 7.0 SDK'
+ displayName: 'Use .NET 8.0 SDK'
inputs:
packageType: sdk
useGlobalJson: true
@@ -171,7 +167,7 @@ jobs:
displayName: 'Install Workloads'
inputs:
script: |
- dotnet workload install android ios tvos wasm-tools wasm-experimental
+ dotnet workload install android ios tvos wasm-tools
- task: PowerShell@2
displayName: 'Install Tizen Workload'
diff --git a/build/Binding.props b/build/Binding.props
index 7202294929..9e19e86d89 100644
--- a/build/Binding.props
+++ b/build/Binding.props
@@ -1,5 +1,5 @@
-
+
diff --git a/build/BuildTargets.targets b/build/BuildTargets.targets
index 13b002d523..546f122c15 100644
--- a/build/BuildTargets.targets
+++ b/build/BuildTargets.targets
@@ -1,11 +1,17 @@
$(MSBuildThisFileDirectory)\..\src\Avalonia.Build.Tasks\bin\$(Configuration)\netstandard2.0\Avalonia.Build.Tasks.dll
- true
true
true
true
+
+
+
+
+
+
diff --git a/build/CoreLibraries.props b/build/CoreLibraries.props
index a9af587a45..43ab0fbab2 100644
--- a/build/CoreLibraries.props
+++ b/build/CoreLibraries.props
@@ -5,6 +5,7 @@
+
diff --git a/build/DevSingleProject.targets b/build/DevSingleProject.targets
new file mode 100644
index 0000000000..f6b9b54d02
--- /dev/null
+++ b/build/DevSingleProject.targets
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/HarfBuzzSharp.props b/build/HarfBuzzSharp.props
index 6673b2b187..cce53c1ed9 100644
--- a/build/HarfBuzzSharp.props
+++ b/build/HarfBuzzSharp.props
@@ -1,7 +1,7 @@
-
-
-
+
+
+
diff --git a/build/ImageSharp.props b/build/ImageSharp.props
index 66e6580070..c1eee25ce5 100644
--- a/build/ImageSharp.props
+++ b/build/ImageSharp.props
@@ -1,5 +1,5 @@
-
+
diff --git a/build/SharedVersion.props b/build/SharedVersion.props
index 0f3d685bba..bca2ef9eec 100644
--- a/build/SharedVersion.props
+++ b/build/SharedVersion.props
@@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Avalonia
- 11.1.999
+ 11.2.999
Avalonia Team
Copyright 2013-$([System.DateTime]::Now.ToString(`yyyy`)) © The AvaloniaUI Project
https://avaloniaui.net
diff --git a/build/SkiaSharp.props b/build/SkiaSharp.props
index adca6c4462..a5789e1116 100644
--- a/build/SkiaSharp.props
+++ b/build/SkiaSharp.props
@@ -1,7 +1,12 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/build/TargetFrameworks.props b/build/TargetFrameworks.props
new file mode 100644
index 0000000000..8c88b4cf4b
--- /dev/null
+++ b/build/TargetFrameworks.props
@@ -0,0 +1,29 @@
+
+
+ net8.0
+ $(AvsCurrentTargetFramework)-windows
+ $(AvsCurrentTargetFramework)-macos
+ $(AvsCurrentTargetFramework)-android34.0
+ $(AvsCurrentTargetFramework)-ios17.0
+ $(AvsCurrentTargetFramework)-tvos17.0
+ $(AvsCurrentTargetFramework)-browser
+ $(AvsCurrentTargetFramework)-tizen
+
+
+ net6.0
+ net6.0-windows
+
+
+
+
+
+ 13.0
+ 13.0
+ 13.1
+ 6.5
+ 21.0
+
+
+ 10.15
+
+
diff --git a/build/WarnAsErrors.props b/build/WarnAsErrors.props
new file mode 100644
index 0000000000..dd105f206e
--- /dev/null
+++ b/build/WarnAsErrors.props
@@ -0,0 +1,21 @@
+
+
+
+
+ $(WarningsNotAsErrors);CS0649
+
+ $(WarningsNotAsErrors);CS0162
+
+ $(WarningsNotAsErrors);CA2211
+
+ $(WarningsNotAsErrors);CA1821
+
+ $(WarningsNotAsErrors);CA1823
+
+ $(WarningsNotAsErrors);AVLN2203
+
+ $(WarningsNotAsErrors);AVLN2205
+
+ $(WarningsNotAsErrors);AVLN2207
+
+
diff --git a/dirs.proj b/dirs.proj
index 120212bd9f..5403847fab 100644
--- a/dirs.proj
+++ b/dirs.proj
@@ -3,28 +3,30 @@
-
-
+
+
-
+
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/external/Tmds.DBus.SourceGenerator b/external/Tmds.DBus.SourceGenerator
deleted file mode 160000
index 999a4551f7..0000000000
--- a/external/Tmds.DBus.SourceGenerator
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 999a4551f743f6f2eeea92f77aa65e3b2e64bb3c
diff --git a/global.json b/global.json
index 13a6c6d6ad..8e84e96f22 100644
--- a/global.json
+++ b/global.json
@@ -1,9 +1,9 @@
{
- "sdk": {
- "version": "7.0.404",
- "rollForward": "latestFeature"
- },
- "msbuild-sdks": {
- "Microsoft.Build.Traversal": "3.2.0"
- }
+ "sdk": {
+ "version": "8.0.101",
+ "rollForward": "latestFeature"
+ },
+ "msbuild-sdks": {
+ "Microsoft.Build.Traversal": "4.1.0"
+ }
}
diff --git a/licence.md b/licence.md
index d18aef99ad..41951805ac 100644
--- a/licence.md
+++ b/licence.md
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) .NET Foundation and Contributors
+Copyright (c) AvaloniaUI OÜ
All Rights Reserved
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme
index 87a8312c38..c1e5b91e3e 100644
--- a/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme
+++ b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme
@@ -56,7 +56,7 @@
diff --git a/native/Avalonia.Native/src/OSX/PlatformRenderTimer.mm b/native/Avalonia.Native/src/OSX/PlatformRenderTimer.mm
index f372cc9047..7f3bea0c18 100644
--- a/native/Avalonia.Native/src/OSX/PlatformRenderTimer.mm
+++ b/native/Avalonia.Native/src/OSX/PlatformRenderTimer.mm
@@ -8,7 +8,7 @@ private:
public:
FORWARD_IUNKNOWN()
- virtual HRESULT RegisterTick (
+ virtual int RegisterTick (
IAvnActionCallback* callback) override
{
START_COM_CALL;
@@ -24,13 +24,13 @@ public:
auto result = CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
if (result != 0)
{
- return E_FAIL;
+ return result;
}
result = CVDisplayLinkSetOutputCallback(_displayLink, OnTick, this);
if (result != 0)
{
- return E_FAIL;
+ return result;
}
}
return S_OK;
diff --git a/native/Avalonia.Native/src/OSX/WindowImpl.h b/native/Avalonia.Native/src/OSX/WindowImpl.h
index 049ef755ff..047a0d2c84 100644
--- a/native/Avalonia.Native/src/OSX/WindowImpl.h
+++ b/native/Avalonia.Native/src/OSX/WindowImpl.h
@@ -82,6 +82,8 @@ BEGIN_INTERFACE_MAP()
virtual HRESULT GetExtendTitleBarHeight (double*ret) override;
virtual HRESULT SetExtendTitleBarHeight (double value) override;
+
+ virtual HRESULT GetWindowZOrder (long* zOrder) override;
void EnterFullScreenMode ();
diff --git a/native/Avalonia.Native/src/OSX/WindowImpl.mm b/native/Avalonia.Native/src/OSX/WindowImpl.mm
index be761e0af7..1cdf81e2fb 100644
--- a/native/Avalonia.Native/src/OSX/WindowImpl.mm
+++ b/native/Avalonia.Native/src/OSX/WindowImpl.mm
@@ -366,6 +366,20 @@ HRESULT WindowImpl::GetWindowState(AvnWindowState *ret) {
}
}
+HRESULT WindowImpl::GetWindowZOrder(long* zOrder) {
+ START_COM_CALL;
+ @autoreleasepool {
+ if (zOrder == nullptr) {
+ return E_POINTER;
+ }
+
+ // negate the value to match expected z-order in Avalonia
+ // (top-most window should have the highest z-order value)
+ *zOrder = -[Window orderedIndex];
+ return S_OK;
+ }
+}
+
HRESULT WindowImpl::TakeFocusFromChildren() {
START_COM_CALL;
diff --git a/native/Avalonia.Native/src/OSX/menu.h b/native/Avalonia.Native/src/OSX/menu.h
index 1bea2ccc8d..eb706d3e07 100644
--- a/native/Avalonia.Native/src/OSX/menu.h
+++ b/native/Avalonia.Native/src/OSX/menu.h
@@ -51,7 +51,9 @@ public:
virtual HRESULT SetAction (IAvnPredicateCallback* predicate, IAvnActionCallback* callback) override;
virtual HRESULT SetIsChecked (bool isChecked) override;
-
+
+ virtual HRESULT SetIsVisible (bool isVisible) override;
+
virtual HRESULT SetToggleType (AvnMenuItemToggleType toggleType) override;
virtual HRESULT SetIcon (void* data, size_t length) override;
diff --git a/native/Avalonia.Native/src/OSX/menu.mm b/native/Avalonia.Native/src/OSX/menu.mm
index 3905987aab..7a7edcb1cb 100644
--- a/native/Avalonia.Native/src/OSX/menu.mm
+++ b/native/Avalonia.Native/src/OSX/menu.mm
@@ -205,6 +205,17 @@ HRESULT AvnAppMenuItem::SetIsChecked (bool isChecked)
}
}
+HRESULT AvnAppMenuItem::SetIsVisible (bool isVisible)
+{
+ START_COM_CALL;
+
+ @autoreleasepool
+ {
+ [_native setHidden:!isVisible];
+ return S_OK;
+ }
+}
+
HRESULT AvnAppMenuItem::SetToggleType(AvnMenuItemToggleType toggleType)
{
START_COM_CALL;
diff --git a/native/Avalonia.Native/src/OSX/metal.mm b/native/Avalonia.Native/src/OSX/metal.mm
index 8a66592ec4..5622f2040e 100644
--- a/native/Avalonia.Native/src/OSX/metal.mm
+++ b/native/Avalonia.Native/src/OSX/metal.mm
@@ -112,6 +112,7 @@ public:
- (MetalRenderTarget *)initWithDevice:(IAvnMetalDevice *)device {
_device = dynamic_cast(device);
_layer = [CAMetalLayer new];
+ _layer.opaque = false;
_layer.device = _device->device;
_target.setNoAddRef(new AvnMetalRenderTarget(_layer, _device));
return self;
@@ -158,4 +159,4 @@ static AvnMetalDisplay* _display = new AvnMetalDisplay();
extern IAvnMetalDisplay* GetMetalDisplay()
{
return _display;
-}
\ No newline at end of file
+}
diff --git a/native/Avalonia.Native/src/OSX/platformthreading.mm b/native/Avalonia.Native/src/OSX/platformthreading.mm
index 56b7ce97e0..4d5b28920b 100644
--- a/native/Avalonia.Native/src/OSX/platformthreading.mm
+++ b/native/Avalonia.Native/src/OSX/platformthreading.mm
@@ -52,6 +52,39 @@ public:
// interval—on the order of decades or more"
static double distantFutureInterval = (double)50*365*24*3600;
+
+
+@implementation ObserverStateHolder : NSObject
+{
+ @public bool InsideCallback;
+}
+@end
+
+@implementation ObserverHolder : NSObject
+{
+ @public CFRunLoopObserverRef Observer;
+ @public ObserverStateHolder* State;
+}
+
+- (ObserverHolder*) init
+{
+ self = [super init];
+ self->State = [ObserverStateHolder new];
+ return self;
+}
+
+- (void) dealloc
+{
+ if(Observer != nil)
+ {
+ CFRunLoopObserverInvalidate(Observer);
+ CFRelease(Observer);
+ Observer = nil;
+ }
+}
+
+@end
+
@interface Signaler : NSObject
-(void) setEvents:(IAvnPlatformThreadingInterfaceEvents*) events;
-(void) updateTimer:(int)ms;
@@ -66,7 +99,7 @@ static double distantFutureInterval = (double)50*365*24*3600;
bool _wakeupDelegateSent;
bool _signaled;
bool _backgroundProcessingRequested;
- CFRunLoopObserverRef _observer;
+ @public ObserverHolder* Observer;
CFRunLoopTimerRef _timer;
}
@@ -83,15 +116,19 @@ static double distantFutureInterval = (double)50*365*24*3600;
}
}
-- (Signaler*) init
+- (ObserverHolder*) createObserver
{
- _observer = CFRunLoopObserverCreateWithHandler(nil,
+ ObserverHolder* holder = [ObserverHolder new];
+ ObserverStateHolder* state = holder->State;
+
+ holder->Observer = CFRunLoopObserverCreateWithHandler(nil,
kCFRunLoopBeforeSources
| kCFRunLoopAfterWaiting
| kCFRunLoopBeforeWaiting
,
true, 0,
^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
+ state->InsideCallback = true;
if(activity == kCFRunLoopBeforeWaiting)
{
bool triggerProcessing;
@@ -103,10 +140,15 @@ static double distantFutureInterval = (double)50*365*24*3600;
self->_events->ReadyForBackgroundProcessing();
}
[self checkSignaled];
+ state->InsideCallback = false;
});
- CFRunLoopAddObserver(CFRunLoopGetMain(), _observer, kCFRunLoopCommonModes);
-
-
+ CFRunLoopAddObserver(CFRunLoopGetMain(), holder->Observer, kCFRunLoopCommonModes);
+ return holder;
+}
+
+- (Signaler*) init
+{
+ Observer = [self createObserver];
_timer = CFRunLoopTimerCreateWithHandler(nil, CFAbsoluteTimeGetCurrent() + distantFutureInterval, distantFutureInterval, 0, 0, ^(CFRunLoopTimerRef timer) {
self->_events->Timer();
});
@@ -118,12 +160,7 @@ static double distantFutureInterval = (double)50*365*24*3600;
- (void) destroyObserver
{
- if(_observer != nil)
- {
- CFRunLoopObserverInvalidate(_observer);
- CFRelease(_observer);
- _observer = nil;
- }
+ Observer = nil;
if(_timer != nil)
{
@@ -182,12 +219,13 @@ class PlatformThreadingInterface : public ComSingleObject _events;
Signaler* _signaler;
- CFRunLoopObserverRef _observer = nil;
+ ObserverHolder* _currentObserver;
public:
FORWARD_IUNKNOWN()
PlatformThreadingInterface()
{
_signaler = [Signaler new];
+ _currentObserver = _signaler->Observer;
};
~PlatformThreadingInterface()
@@ -228,18 +266,25 @@ public:
}
else
{
- while(!can->Cancelled)
- {
- @autoreleasepool
+ @autoreleasepool {
+ auto previousObserver = _currentObserver;
+ if(_currentObserver->State->InsideCallback)
+ _currentObserver = [_signaler createObserver];
+
+ while(!can->Cancelled)
{
- NSEvent* ev = [NSApp
- nextEventMatchingMask:NSEventMaskAny
- untilDate: [NSDate dateWithTimeIntervalSinceNow:1]
- inMode:NSDefaultRunLoopMode
- dequeue:true];
- if(ev != NULL)
- [NSApp sendEvent:ev];
+ @autoreleasepool
+ {
+ NSEvent* ev = [NSApp
+ nextEventMatchingMask:NSEventMaskAny
+ untilDate: [NSDate dateWithTimeIntervalSinceNow:1]
+ inMode:NSDefaultRunLoopMode
+ dequeue:true];
+ if(ev != NULL)
+ [NSApp sendEvent:ev];
+ }
}
+ _currentObserver = previousObserver;
}
}
};
diff --git a/native/Avalonia.Native/src/OSX/trayicon.h b/native/Avalonia.Native/src/OSX/trayicon.h
index da30477005..86b61608c4 100644
--- a/native/Avalonia.Native/src/OSX/trayicon.h
+++ b/native/Avalonia.Native/src/OSX/trayicon.h
@@ -15,7 +15,8 @@ class AvnTrayIcon : public ComSingleObject
{
private:
NSStatusItem* _native;
-
+ bool _isTemplateIcon;
+
public:
FORWARD_IUNKNOWN()
@@ -28,8 +29,10 @@ public:
virtual HRESULT SetMenu (IAvnMenu* menu) override;
virtual HRESULT SetIsVisible (bool isVisible) override;
-
+
virtual HRESULT SetToolTipText (char* text) override;
+
+ virtual HRESULT SetIsTemplateIcon (bool isTemplateIcon) override;
};
#endif /* trayicon_h */
diff --git a/native/Avalonia.Native/src/OSX/trayicon.mm b/native/Avalonia.Native/src/OSX/trayicon.mm
index 5b75b9cc19..917ff87694 100644
--- a/native/Avalonia.Native/src/OSX/trayicon.mm
+++ b/native/Avalonia.Native/src/OSX/trayicon.mm
@@ -45,6 +45,7 @@ HRESULT AvnTrayIcon::SetIcon (void* data, size_t length)
size.width = originalSize.width * scaleFactor;
[image setSize: size];
+ [image setTemplate: _isTemplateIcon];
[_native setImage:image];
}
else
@@ -98,3 +99,24 @@ HRESULT AvnTrayIcon::SetToolTipText(char* text)
return S_OK;
}
+
+HRESULT AvnTrayIcon::SetIsTemplateIcon(bool isTemplateIcon)
+{
+ START_COM_CALL;
+
+ @autoreleasepool
+ {
+ if (_isTemplateIcon != isTemplateIcon)
+ {
+ _isTemplateIcon = isTemplateIcon;
+
+ NSImage *image = [_native image];
+ if (image)
+ {
+ [image setTemplate: _isTemplateIcon];
+ }
+ }
+ }
+
+ return S_OK;
+}
\ No newline at end of file
diff --git a/nukebuild/ApiDiffHelper.cs b/nukebuild/ApiDiffHelper.cs
index 2eabc3ef16..ac6be61ee3 100644
--- a/nukebuild/ApiDiffHelper.cs
+++ b/nukebuild/ApiDiffHelper.cs
@@ -52,7 +52,7 @@ public static class ApiDiffHelper
e.target.StartsWith(targetTfm) && e.entry.Name == baselineDll.entry.Name);
if (targetDll is null)
{
- if (s_tfmRedirects.FirstOrDefault(t => baselineDll.target.StartsWith(t.oldTfm)).newTfm is {} newTfm)
+ if (s_tfmRedirects.FirstOrDefault(t => baselineDll.target.StartsWith(t.oldTfm) && (t.package is null || packageId == t.package)).newTfm is {} newTfm)
{
targetTfm = newTfm;
targetDll = targetDlls.FirstOrDefault(e =>
@@ -107,13 +107,17 @@ public static class ApiDiffHelper
}
}
- private static readonly (string oldTfm, string newTfm)[] s_tfmRedirects = new[]
+ private static readonly (string package, string oldTfm, string newTfm)[] s_tfmRedirects = new[]
{
- // We use StartsWith below comparing these tfm, as we ignore platform versions (like, net6.0-ios16.1)
- ("net6.0-android", "net7.0-android"),
- ("net6.0-ios", "net7.0-ios"),
- // Designer was moved from netcoreapp to netstandard
- ("netcoreapp2.0", "netstandard2.0")
+ // We use StartsWith below comparing these tfm, as we ignore platform versions (like, net6.0-ios16.1).
+ ("Avalonia.Android", "net6.0-android", "net8.0-android"),
+ ("Avalonia.iOS", "net6.0-ios", "net8.0-ios"),
+ // Browser was changed from net7.0 to net8.0-browser.
+ ("Avalonia.Browser", "net7.0", "net8.0-browser"),
+ ("Avalonia.Browser.Blazor", "net7.0", "net8.0-browser"),
+ // Designer was moved from netcoreapp to netstandard.
+ ("Avalonia", "netcoreapp2.0", "netstandard2.0"),
+ ("Avalonia", "net461", "netstandard2.0")
};
public static async Task ValidatePackage(
@@ -154,7 +158,7 @@ public static class ApiDiffHelper
e.target.StartsWith(targetTfm) && e.entry.Name == baselineDll.entry.Name);
if (targetDll?.entry is null)
{
- if (s_tfmRedirects.FirstOrDefault(t => baselineDll.target.StartsWith(t.oldTfm)).newTfm is {} newTfm)
+ if (s_tfmRedirects.FirstOrDefault(t => baselineDll.target.StartsWith(t.oldTfm) && (t.package is null || packageId == t.package)).newTfm is {} newTfm)
{
targetTfm = newTfm;
targetDll = targetDlls.FirstOrDefault(e =>
@@ -171,8 +175,15 @@ public static class ApiDiffHelper
if (targetDll?.entry is null)
{
+ if (packageId == "Avalonia"
+ && baselineDll.target is "net461" or "netcoreapp2.0")
+ {
+ // In 11.1 we have removed net461 and netcoreapp2.0 targets from Avalonia package.
+ continue;
+ }
+
var actualTargets = string.Join(", ",
- targetDlls.Select(d => $"{d.target} ({baselineDll.entry.Name})"));
+ targetDlls.Select(d => $"{d.target} ({d.entry.Name})"));
throw new InvalidOperationException(
$"Some assemblies are missing in the new package {packageId}: {baselineDll.entry.Name} for {baselineDll.target}."
+ $"\r\nActual targets: {actualTargets}.");
diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs
index 871af047cd..9157e4c44b 100644
--- a/nukebuild/Build.cs
+++ b/nukebuild/Build.cs
@@ -1,6 +1,7 @@
using System;
using System.Diagnostics;
using System.IO;
+using System.IO.Compression;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
@@ -38,9 +39,12 @@ partial class Build : NukeBuild
[PackageExecutable("Microsoft.DotNet.GenAPI.Tool", "Microsoft.DotNet.GenAPI.Tool.dll", Framework = "net8.0")]
Tool ApiGenTool;
+
+
protected override void OnBuildInitialized()
{
- Parameters = new BuildParameters(this);
+ Parameters = new BuildParameters(this, ScheduledTargets.Contains(BuildToNuGetCache));
+
Information("Building version {0} of Avalonia ({1}) using version {2} of Nuke.",
Parameters.Version,
Parameters.Configuration,
@@ -82,6 +86,12 @@ partial class Build : NukeBuild
c.AddProperty("PackageVersion", Parameters.Version)
.SetConfiguration(Parameters.Configuration)
.SetVerbosity(DotNetVerbosity.Minimal);
+ if (Parameters.IsPackingToLocalCache)
+ c
+ .AddProperty("ForcePackAvaloniaNative", "True")
+ .AddProperty("SkipObscurePlatforms", "True")
+ .AddProperty("SkipBuildingSamples", "True")
+ .AddProperty("SkipBuildingTests", "True");
return c;
}
DotNetBuildSettings ApplySetting(DotNetBuildSettings c, Configure configurator = null) =>
@@ -140,6 +150,21 @@ partial class Build : NukeBuild
);
});
+ Target OutputVersion => _ => _
+ .Requires(() => VersionOutputDir)
+ .Executes(() =>
+ {
+ var versionFile = Path.Combine(Parameters.VersionOutputDir, "version.txt");
+ var currentBuildVersion = Parameters.Version;
+ Console.WriteLine("Version is: " + currentBuildVersion);
+ File.WriteAllText(versionFile, currentBuildVersion);
+
+ var prIdFile = Path.Combine(Parameters.VersionOutputDir, "prId.txt");
+ var prId = Environment.GetEnvironmentVariable("SYSTEM_PULLREQUEST_PULLREQUESTNUMBER");
+ Console.WriteLine("PR Number is: " + prId);
+ File.WriteAllText(prIdFile, prId);
+ });
+
void RunCoreTest(string projectName)
{
Information($"Running tests from {projectName}");
@@ -166,19 +191,29 @@ partial class Build : NukeBuild
foreach (var fw in targetFrameworks)
{
- if (fw.StartsWith("net4")
+ var tfm = fw;
+ if (tfm == "$(AvsCurrentTargetFramework)")
+ {
+ tfm = "net8.0";
+ }
+ if (tfm == "$(AvsLegacyTargetFrameworks)")
+ {
+ tfm = "net6.0";
+ }
+
+ if (tfm.StartsWith("net4")
&& (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
&& Environment.GetEnvironmentVariable("FORCE_LINUX_TESTS") != "1")
{
- Information($"Skipping {projectName} ({fw}) tests on *nix - https://github.com/mono/mono/issues/13969");
+ Information($"Skipping {projectName} ({tfm}) tests on *nix - https://github.com/mono/mono/issues/13969");
continue;
}
- Information($"Running for {projectName} ({fw}) ...");
+ Information($"Running for {projectName} ({tfm}) ...");
DotNetTest(c => ApplySetting(c)
.SetProjectFile(project)
- .SetFramework(fw)
+ .SetFramework(tfm)
.EnableNoBuild()
.EnableNoRestore()
.When(Parameters.PublishTestResults, _ => _
@@ -325,6 +360,39 @@ partial class Build : NukeBuild
.DependsOn(Package)
.DependsOn(ZipFiles);
+ Target BuildToNuGetCache => _ => _
+ .DependsOn(CreateNugetPackages)
+ .Executes(() =>
+ {
+ if (!Parameters.IsPackingToLocalCache)
+ throw new InvalidOperationException();
+
+ foreach (var path in Parameters.NugetRoot.GlobFiles("*.nupkg"))
+ {
+ using var f = File.Open(path.ToString(), FileMode.Open, FileAccess.Read);
+ using var zip = new ZipArchive(f, ZipArchiveMode.Read);
+ var nuspecEntry = zip.Entries.First(e => e.FullName.EndsWith(".nuspec") && e.FullName == e.Name);
+ var packageId = XDocument.Load(nuspecEntry.Open()).Document.Root
+ .Elements().First(x => x.Name.LocalName == "metadata")
+ .Elements().First(x => x.Name.LocalName == "id").Value;
+
+ var packagePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
+ ".nuget",
+ "packages",
+ packageId.ToLowerInvariant(),
+ BuildParameters.LocalBuildVersion);
+ if (Directory.Exists(packagePath))
+ Directory.Delete(packagePath, true);
+ Directory.CreateDirectory(packagePath);
+ zip.ExtractToDirectory(packagePath);
+ File.WriteAllText(Path.Combine(packagePath, ".nupkg.metadata"), @"{
+ ""version"": 2,
+ ""contentHash"": ""e900dFK7jHJ2WcprLcgJYQoOMc6ejRTwAAMi0VGOFbSczcF98ZDaqwoQIiyqpAwnja59FSbV+GUUXfc3vaQ2Jg=="",
+ ""source"": ""https://api.nuget.org/v3/index.json""
+}");
+ }
+ });
+
Target GenerateCppHeaders => _ => _.Executes(() =>
{
var file = MicroComCodeGenerator.Parse(
diff --git a/nukebuild/BuildParameters.cs b/nukebuild/BuildParameters.cs
index 74870885bc..d664d74d2a 100644
--- a/nukebuild/BuildParameters.cs
+++ b/nukebuild/BuildParameters.cs
@@ -25,10 +25,13 @@ public partial class Build
[Parameter(Name = "api-baseline")]
public string ApiValidationBaseline { get; set; }
-
+
[Parameter(Name = "update-api-suppression")]
public bool? UpdateApiValidationSuppression { get; set; }
+ [Parameter(Name = "version-output-dir")]
+ public AbsolutePath VersionOutputDir { get; set; }
+
public class BuildParameters
{
public string Configuration { get; }
@@ -53,7 +56,10 @@ public partial class Build
public bool IsMyGetRelease { get; }
public bool IsNuGetRelease { get; }
public bool PublishTestResults { get; }
- public string Version { get; }
+ public string Version { get; set; }
+ public const string LocalBuildVersion = "9999.0.0-localbuild";
+ public bool IsPackingToLocalCache { get; private set; }
+
public AbsolutePath ArtifactsDir { get; }
public AbsolutePath NugetIntermediateRoot { get; }
public AbsolutePath NugetRoot { get; }
@@ -67,8 +73,9 @@ public partial class Build
public string ApiValidationBaseline { get; }
public bool UpdateApiValidationSuppression { get; }
public AbsolutePath ApiValidationSuppressionFiles { get; }
+ public AbsolutePath VersionOutputDir { get; }
- public BuildParameters(Build b)
+ public BuildParameters(Build b, bool isPackingToLocalCache)
{
// ARGUMENTS
Configuration = b.Configuration ?? "Release";
@@ -119,11 +126,17 @@ public partial class Build
if (!IsNuGetRelease)
{
// Use AssemblyVersion with Build as version
- Version += "-cibuild" + int.Parse(Environment.GetEnvironmentVariable("BUILD_BUILDID")).ToString("0000000") + "-beta";
+ Version += "-cibuild" + int.Parse(Environment.GetEnvironmentVariable("BUILD_BUILDID")).ToString("0000000") + "-alpha";
}
PublishTestResults = true;
}
+
+ if (isPackingToLocalCache)
+ {
+ IsPackingToLocalCache = true;
+ Version = LocalBuildVersion;
+ }
// DIRECTORIES
ArtifactsDir = RootDirectory / "artifacts";
@@ -137,6 +150,7 @@ public partial class Build
ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix);
ZipNuGetArtifacts = ZipRoot / ("Avalonia-NuGet-" + FileZipSuffix);
ApiValidationSuppressionFiles = RootDirectory / "api";
+ VersionOutputDir = b.VersionOutputDir;
}
string GetVersion()
diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj
index dd1103db7c..7c89b896c7 100644
--- a/nukebuild/_build.csproj
+++ b/nukebuild/_build.csproj
@@ -6,7 +6,9 @@
False
$(NoWarn);CS0649;CS0169;SYSLIB0011
1
- net7.0
+ $(AvsCurrentTargetFramework)
+
+ true
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8-transport/nuget/v3/index.json
diff --git a/nukebuild/build-to-cache.sh b/nukebuild/build-to-cache.sh
new file mode 100755
index 0000000000..80d51291d0
--- /dev/null
+++ b/nukebuild/build-to-cache.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+dotnet run --project _build.csproj -- --target BuildToNuGetCache --skip CompileHtmlPreviewer Compile Clean
diff --git a/packages/Avalonia/Avalonia.csproj b/packages/Avalonia/Avalonia.csproj
index 6a3b06ee6c..d25647b01c 100644
--- a/packages/Avalonia/Avalonia.csproj
+++ b/packages/Avalonia/Avalonia.csproj
@@ -1,6 +1,6 @@
- net6.0;netstandard2.0;net461
+ $(AvsCurrentTargetFramework);$(AvsLegacyTargetFrameworks);netstandard2.0
Avalonia
diff --git a/packages/Avalonia/Avalonia.props b/packages/Avalonia/Avalonia.props
index db43467f93..57b7f9dc32 100644
--- a/packages/Avalonia/Avalonia.props
+++ b/packages/Avalonia/Avalonia.props
@@ -3,7 +3,6 @@
$(MSBuildThisFileDirectory)\..\tools\netstandard2.0\designer\Avalonia.Designer.HostApp.dll
$(MSBuildThisFileDirectory)\..\tools\net461\designer\Avalonia.Designer.HostApp.exe
$(MSBuildThisFileDirectory)\..\tools\netstandard2.0\Avalonia.Build.Tasks.dll
- false
$(UsedAvaloniaProducts);AvaloniaUI
true
false
diff --git a/packages/Avalonia/Avalonia.targets b/packages/Avalonia/Avalonia.targets
index eacd287b59..a0c1c080d8 100644
--- a/packages/Avalonia/Avalonia.targets
+++ b/packages/Avalonia/Avalonia.targets
@@ -1,4 +1,5 @@
+
diff --git a/packages/Avalonia/AvaloniaBuildTasks.targets b/packages/Avalonia/AvaloniaBuildTasks.targets
index ef5658f1ca..99b3df9b1a 100644
--- a/packages/Avalonia/AvaloniaBuildTasks.targets
+++ b/packages/Avalonia/AvaloniaBuildTasks.targets
@@ -1,13 +1,10 @@
- <_AvaloniaUseExternalMSBuild>$(AvaloniaUseExternalMSBuild)
- <_AvaloniaUseExternalMSBuild Condition="'$(_AvaloniaForceInternalMSBuild)' == 'true'">false
low
<_AvaloniaSkipXamlCompilation Condition="'$(_AvaloniaSkipXamlCompilation)' == ''">false
false
+ true
-
-
@@ -33,7 +30,15 @@
-
+
+
+
+
+
+
@@ -57,8 +62,8 @@
- $(BuildAvaloniaResourcesDependsOn);AddAvaloniaResources;ResolveReferences;_GenerateAvaloniaResourcesDependencyCache;_GenerateNoWarnForExec
- $(CompileAvaloniaXamlDependsOn);_GenerateNoWarnForExec
+ $(BuildAvaloniaResourcesDependsOn);AddAvaloniaResources;ResolveReferences;_GenerateAvaloniaResourcesDependencyCache
+ $(CompileAvaloniaXamlDependsOn);FindReferenceAssembliesForReferences;PrepareToCompileAvaloniaXaml
@@ -81,14 +86,6 @@
-
-
-
-
- <_NoWarnForExec>'"$(NoWarn)"'
- <_NoWarnForExec Condition="$([MSBuild]::IsOSPlatform('Windows'))">\"$(NoWarn)\"
-
-
-
+
-
-
+
- $(IntermediateOutputPath)/Avalonia/references
- $(IntermediateOutputPath)/Avalonia/original.dll
false
false
false
<_AvaloniaHasCompiledXaml>true
-
-
-
+
+
+
+ <_DebugSymbolsIntermediatePath Update="*" AvaloniaCompileOutput="%(RelativeDir)Avalonia\%(Filename)%(Extension)"/>
+
+
+
+
+
+
+
+
+
+
-
-
-
+ AnalyzerConfigFiles="@(EditorConfigFiles)"/>
+
+
+
+
+ <_AvaloniaXamlCompiledAssembly Include="@(IntermediateAssembly->Metadata('AvaloniaCompileOutput'))"/>
+
+
+
+ <_AvaloniaXamlCompiledRefAssembly Include="@(IntermediateRefAssembly->Metadata('AvaloniaCompileOutput'))"/>
+
+
+
+ <_AvaloniaXamlCompiledSymbols Include="@(_DebugSymbolsIntermediatePath->Metadata('AvaloniaCompileOutput'))"/>
+ <_DebugSymbolsIntermediatePath Remove="@(_DebugSymbolsIntermediatePath)"/>
+ <_DebugSymbolsIntermediatePath Include="@(_AvaloniaXamlCompiledSymbols)"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -217,4 +242,21 @@
+
+
+
+ $(IntermediateOutputPath)/Avalonia/references
+
+
+
diff --git a/packages/Avalonia/AvaloniaSingleProject.targets b/packages/Avalonia/AvaloniaSingleProject.targets
new file mode 100644
index 0000000000..793f0e36eb
--- /dev/null
+++ b/packages/Avalonia/AvaloniaSingleProject.targets
@@ -0,0 +1,292 @@
+
+
+
+
+ false
+
+ true
+
+
+
+
+ <_AvaloniaWindowsTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">true
+ <_AvaloniaMacOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'macos'">true
+ <_AvaloniaAndroidTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">true
+ <_AvaloniaIOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">true
+ <_AvaloniaTvOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tvos'">true
+ <_AvaloniaBrowserTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'browser'">true
+ <_AvaloniaTizenTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">true
+
+ <_AvaloniaLinuxTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'linux'" >true
+
+
+
+
+ <_AvaloniaDesktopTarget>true
+
+
+
+ WinExe
+ true
+ true
+
+
+
+ browser-wasm
+
+
+
+ Platforms\
+ $([MSBuild]::EnsureTrailingSlash('$(PlatformsProjectFolder)'))
+
+ <_KeepLaunchProfiles>true
+
+ false
+ $(PlatformsProjectFolder)Android\
+ $([MSBuild]::EnsureTrailingSlash('$(AndroidProjectFolder)'))
+
+ false
+ false
+ $(PlatformsProjectFolder)iOS\
+ $(PlatformsProjectFolder)tvOS\
+ $([MSBuild]::EnsureTrailingSlash('$(iOSProjectFolder)'))
+
+ false
+ $(PlatformsProjectFolder)MacCatalyst\
+ $([MSBuild]::EnsureTrailingSlash('$(MacCatalystProjectFolder)'))
+
+ false
+ $(PlatformsProjectFolder)macOS\
+ $([MSBuild]::EnsureTrailingSlash('$(macOSProjectFolder)'))
+
+ false
+ $(PlatformsProjectFolder)Windows\
+ $([MSBuild]::EnsureTrailingSlash('$(WindowsProjectFolder)'))
+
+ $(PlatformsProjectFolder)Linux\
+ $([MSBuild]::EnsureTrailingSlash('$(LinuxProjectFolder)'))
+
+ $(PlatformsProjectFolder)Browser\
+ $([MSBuild]::EnsureTrailingSlash('$(BrowserProjectFolder)'))
+
+ false
+ $(PlatformsProjectFolder)Tizen\
+ $([MSBuild]::EnsureTrailingSlash('$(TizenProjectFolder)'))
+
+ $(PlatformsProjectFolder)Desktop\
+ $([MSBuild]::EnsureTrailingSlash('$(DesktopProjectFolder)'))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 13.0
+ 13.0
+ 10.15
+ 13.1
+ 21.0
+ 6.5
+
+
+
+ $(AndroidProjectFolder)AndroidManifest.xml
+ $(AndroidProjectFolder)Resources
+ $(AndroidProjectFolder)Assets
+
+
+
+ $(iOSProjectFolder)Resources
+ $(iOSProjectFolder)Entitlements.plist
+ <_SingleProjectiOSExcludes>$(iOSProjectFolder)/**/.*/**
+
+
+
+ $(DesktopProjectFolder)app.manifest
+ $(DesktopProjectFolder)Package.appxmanifest
+ $(DesktopProjectFolder)Entitlements.plist
+
+
+
+ $(macOSProjectFolder)Entitlements.plist
+
+
+
+ $(WindowsProjectFolder)app.manifest
+ $(WindowsProjectFolder)Package.appxmanifest
+
+
+
+ $(TizenProjectFolder)tizen-manifest.xml
+ $(TizenProjectFolder)res
+ $(TizenProjectFolder)shared
+
+
+
+ $(BrowserProjectFolder)/wwwroot/main.js
+ $(BrowserProjectFolder)wwwroot/index.html
+
+
+
+
+
+ true
+
+
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_AndroidManifestAbsTemp Condition=" '$(AndroidManifest)' != '' ">$(ProjectDir)$(AndroidManifest)
+
+
+
+
+
+
diff --git a/readme.md b/readme.md
index 7a412f282c..30c5be7675 100644
--- a/readme.md
+++ b/readme.md
@@ -2,7 +2,7 @@

[](https://t.me/Avalonia)
-[](https://gitter.im/AvaloniaUI/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) []( https://aka.ms/dotnet-discord) [](https://dev.azure.com/AvaloniaUI/AvaloniaUI/_build/latest?definitionId=4) [](#backers) [](#sponsors) [](https://github.com/sponsors/AvaloniaUI) 
+ [](https://dev.azure.com/AvaloniaUI/AvaloniaUI/_build/latest?definitionId=4) [](#backers) [](#sponsors) [](https://github.com/sponsors/AvaloniaUI) 
[](https://www.nuget.org/packages/Avalonia) [](https://www.nuget.org/packages/Avalonia) 
@@ -80,7 +80,7 @@ Please read the [contribution guidelines](CONTRIBUTING.md) before submitting a p
## Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
-For more information see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
+For more information see the [Code of Conduct](CODE_OF_CONDUCT.md).
## Licence
@@ -113,9 +113,6 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
We have a range of [support plans available](https://avaloniaui.net/support) for those looking to partner with the creators of Avalonia, enabling access to the best support at every step of the development process.
*Please note that donations are not considered payment for commercial support agreements. Please contact us to discuss your needs first. [team@avaloniaui.net](mailto://team@avaloniaui.net)*
-## .NET Foundation
-
-This project is supported by the [.NET Foundation](https://dotnetfoundation.org).
## Avalonia XPF
Unleash the full potential of your existing WPF apps with our cross-platform UI framework, enabling WPF apps to run on macOS and Linux without requiring expensive and risky rewrites.
diff --git a/samples/AppWithoutLifetime/AppWithoutLifetime.csproj b/samples/AppWithoutLifetime/AppWithoutLifetime.csproj
index fce12af298..2e959798d0 100644
--- a/samples/AppWithoutLifetime/AppWithoutLifetime.csproj
+++ b/samples/AppWithoutLifetime/AppWithoutLifetime.csproj
@@ -1,7 +1,7 @@
WinExe
- net6.0
+ $(AvsCurrentTargetFramework)
enable
app.manifest
diff --git a/samples/BindingDemo/BindingDemo.csproj b/samples/BindingDemo/BindingDemo.csproj
index f094c0081c..faeb643d8a 100644
--- a/samples/BindingDemo/BindingDemo.csproj
+++ b/samples/BindingDemo/BindingDemo.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/samples/BindingDemo/GenericMarkupExtension.cs b/samples/BindingDemo/GenericMarkupExtension.cs
new file mode 100644
index 0000000000..aed0700cb8
--- /dev/null
+++ b/samples/BindingDemo/GenericMarkupExtension.cs
@@ -0,0 +1,14 @@
+using System;
+using Avalonia.Markup.Xaml;
+
+namespace BindingDemo;
+
+internal class GenericMarkupExtension : MarkupExtension
+{
+ public T Value { get; set; }
+
+ public override object ProvideValue(IServiceProvider serviceProvider)
+ {
+ return $"{Value?.GetType().Name}: {Value}";
+ }
+}
diff --git a/samples/BindingDemo/GenericValueConverter.cs b/samples/BindingDemo/GenericValueConverter.cs
new file mode 100644
index 0000000000..ff0e9c153e
--- /dev/null
+++ b/samples/BindingDemo/GenericValueConverter.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Globalization;
+using Avalonia.Data.Converters;
+
+#nullable enable
+
+namespace BindingDemo;
+
+public class GenericValueConverter : IValueConverter
+{
+ public GenericValueConverter()
+ {
+
+ }
+
+ public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
+ {
+ if (value is T)
+ {
+ return $"{typeof(T).Name}: {value}";
+ }
+
+ return null;
+ }
+
+ public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
+ {
+ throw new NotSupportedException();
+ }
+}
diff --git a/samples/BindingDemo/MainWindow.xaml b/samples/BindingDemo/MainWindow.xaml
index a00bed37f9..f14ad59cd5 100644
--- a/samples/BindingDemo/MainWindow.xaml
+++ b/samples/BindingDemo/MainWindow.xaml
@@ -120,5 +120,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
index 7921b608b6..958725eed5 100644
--- a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
+++ b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
@@ -1,14 +1,13 @@
- net7.0-android
- 21
+ $(AvsCurrentAndroidTargetFramework)
+ $(AvsMinSupportedAndroidVersion)
Exe
enable
com.Avalonia.ControlCatalog
1
1.0
apk
- true
diff --git a/samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj b/samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj
index 363c6a8b27..2950028e68 100644
--- a/samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj
+++ b/samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj
@@ -1,6 +1,6 @@
- net7.0
+ $(AvsCurrentBrowserTargetFramework)
browser-wasm
enable
16777216
diff --git a/samples/ControlCatalog.Browser/AppBundle/Logo.svg b/samples/ControlCatalog.Browser/AppBundle/Logo.svg
deleted file mode 100644
index 9685a23af1..0000000000
--- a/samples/ControlCatalog.Browser/AppBundle/Logo.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/samples/ControlCatalog.Browser/AppBundle/app.css b/samples/ControlCatalog.Browser/AppBundle/app.css
deleted file mode 100644
index e14dfe4487..0000000000
--- a/samples/ControlCatalog.Browser/AppBundle/app.css
+++ /dev/null
@@ -1,74 +0,0 @@
-:root {
- --sat: env(safe-area-inset-top);
- --sar: env(safe-area-inset-right);
- --sab: env(safe-area-inset-bottom);
- --sal: env(safe-area-inset-left);
-}
-
-/* HTML styles for the splash screen */
-
-.highlight {
- color: white;
- font-size: 2.5rem;
- display: block;
-}
-
-.purple {
- color: #8b44ac;
-}
-
-.icon {
- opacity: 0.05;
- height: 35%;
- width: 35%;
- position: absolute;
- background-repeat: no-repeat;
- right: 0px;
- bottom: 0px;
- margin-right: 3%;
- margin-bottom: 5%;
- z-index: 5000;
- background-position: right bottom;
- pointer-events: none;
-}
-
-#avalonia-splash a {
- color: whitesmoke;
- text-decoration: none;
-}
-
-.center {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100vh;
-}
-
-#avalonia-splash {
- position: relative;
- height: 100%;
- width: 100%;
- color: whitesmoke;
- background: #1b2a4e;
- font-family: 'Nunito', sans-serif;
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
- justify-content: center;
- align-items: center;
-}
-
-.splash-close {
- animation: fadeout 0.25s linear forwards;
-}
-
-@keyframes fadeout {
- 0% {
- opacity: 100%;
- }
-
- 100% {
- opacity: 0;
- visibility: collapse;
- }
-}
diff --git a/samples/ControlCatalog.Browser/AppBundle/index.html b/samples/ControlCatalog.Browser/AppBundle/index.html
deleted file mode 100644
index b35acaed5c..0000000000
--- a/samples/ControlCatalog.Browser/AppBundle/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
- AvaloniaUI - ControlCatalog
-
-
-
-
-
-
-
-
-
-

-
-
-
-
-
-
diff --git a/samples/ControlCatalog.Browser/AppBundle/main.js b/samples/ControlCatalog.Browser/AppBundle/main.js
deleted file mode 100644
index 9eae9fd740..0000000000
--- a/samples/ControlCatalog.Browser/AppBundle/main.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-import { dotnet } from './dotnet.js' // NET 7
-//import { dotnet } from './_framework/dotnet.js' // NET 8+
-
-const is_browser = typeof window != "undefined";
-if (!is_browser) throw new Error(`Expected to be running in a browser`);
-
-const dotnetRuntime = await dotnet
- .withDiagnosticTracing(false)
- .withApplicationArgumentsFromQuery()
- .create();
-
-const config = dotnetRuntime.getConfig();
-
-await dotnetRuntime.runMainAndExit(config.mainAssemblyName, [globalThis.location.href]);
diff --git a/samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj b/samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj
index d1cec4e017..f223eb0725 100644
--- a/samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj
+++ b/samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj
@@ -1,12 +1,10 @@
- net7.0
+ $(AvsCurrentBrowserTargetFramework)
browser-wasm
- AppBundle/main.js
+ wwwroot/main.js
Exe
true
- true
- ./
@@ -16,7 +14,7 @@
-
+
diff --git a/samples/ControlCatalog.Browser/EmbedSample.Browser.cs b/samples/ControlCatalog.Browser/EmbedSample.Browser.cs
index 1bd226d578..7bf3891a81 100644
--- a/samples/ControlCatalog.Browser/EmbedSample.Browser.cs
+++ b/samples/ControlCatalog.Browser/EmbedSample.Browser.cs
@@ -21,14 +21,17 @@ public class EmbedSampleWeb : INativeDemoControl
}
else
{
- var defaultHandle = (JSObjectControlHandle)createDefault();
+ var parentContainer = (JSObjectControlHandle)createDefault();
- _ = JSHost.ImportAsync("embed.js", "./embed.js").ContinueWith(_ =>
- {
- EmbedInterop.AddAppButton(defaultHandle.Object);
- }, TaskScheduler.FromCurrentSynchronizationContext());
+ AddButton(parentContainer.Object);
+
+ return parentContainer;
- return defaultHandle;
+ static async void AddButton(JSObject parent)
+ {
+ await JSHost.ImportAsync("embed.js", "./embed.js");
+ EmbedInterop.AddAppButton(parent);
+ }
}
}
}
diff --git a/samples/ControlCatalog.Browser/Program.cs b/samples/ControlCatalog.Browser/Program.cs
index 919df5103c..c50f1dcbdd 100644
--- a/samples/ControlCatalog.Browser/Program.cs
+++ b/samples/ControlCatalog.Browser/Program.cs
@@ -1,40 +1,108 @@
+using System;
using System.Diagnostics;
+using System.Linq;
using System.Runtime.Versioning;
using System.Threading.Tasks;
+using System.Web;
using Avalonia;
using Avalonia.Browser;
+using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Logging;
+using Avalonia.Rendering;
+using Avalonia.Threading;
using ControlCatalog;
using ControlCatalog.Browser;
[assembly:SupportedOSPlatform("browser")]
+#nullable enable
internal partial class Program
{
public static async Task Main(string[] args)
{
Trace.Listeners.Add(new ConsoleTraceListener());
-
+
+ var options = ParseArgs(args) ?? new BrowserPlatformOptions();
+
await BuildAvaloniaApp()
- .LogToTrace(LogEventLevel.Warning)
+ .LogToTrace()
.AfterSetup(_ =>
{
ControlCatalog.Pages.EmbedSample.Implementation = new EmbedSampleWeb();
})
- .StartBrowserAppAsync("out");
+ .StartBrowserAppAsync("out", options);
+
+ if (Application.Current!.ApplicationLifetime is ISingleTopLevelApplicationLifetime lifetime)
+ {
+ lifetime.TopLevel!.RendererDiagnostics.DebugOverlays = RendererDebugOverlays.Fps;
+ }
}
- // Example without a ISingleViewApplicationLifetime
- // private static AvaloniaView _avaloniaView;
+ // Test with multiple AvaloniaView at once.
+ // private static AvaloniaView _avaloniaView1;
+ // private static AvaloniaView _avaloniaView2;
// public static async Task Main(string[] args)
// {
+ // Trace.Listeners.Add(new ConsoleTraceListener());
+ //
+ // var options = ParseArgs(args) ?? new BrowserPlatformOptions();
+ //
// await BuildAvaloniaApp()
- // .SetupBrowserApp();
+ // .LogToTrace()
+ // .SetupBrowserAppAsync(options);
+ //
+ // _avaloniaView1 = new AvaloniaView("out1");
+ // _avaloniaView1.Content = new TextBlock { Text = "Hello" };
//
- // _avaloniaView = new AvaloniaView("out");
- // _avaloniaView.Content = new TextBlock { Text = "Hello world" };
+ // _avaloniaView2 = new AvaloniaView("out2");
+ // _avaloniaView2.Content = new TextBlock { Text = "World" };
+ //
+ // Dispatcher.UIThread.Invoke(() =>
+ // {
+ // var topLevel = TopLevel.GetTopLevel(_avaloniaView1.Content);
+ // topLevel!.RendererDiagnostics.DebugOverlays = RendererDebugOverlays.Fps;
+ // });
// }
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure();
+
+ private static BrowserPlatformOptions? ParseArgs(string[] args)
+ {
+ try
+ {
+ if (args.Length == 0
+ || !Uri.TryCreate(args[0], UriKind.Absolute, out var uri)
+ || uri.Query.Length <= 1)
+ {
+ uri = new Uri("http://localhost");
+ }
+
+ var queryParams = HttpUtility.ParseQueryString(uri.Query);
+ var options = new BrowserPlatformOptions();
+
+ if (bool.TryParse(queryParams[nameof(options.PreferFileDialogPolyfill)], out var preferDialogsPolyfill))
+ {
+ options.PreferFileDialogPolyfill = preferDialogsPolyfill;
+ }
+
+ if (queryParams[nameof(options.RenderingMode)] is { } renderingModePairs)
+ {
+ options.RenderingMode = renderingModePairs
+ .Split(';', StringSplitOptions.RemoveEmptyEntries)
+ .Select(entry => Enum.Parse(entry, true))
+ .ToArray();
+ }
+
+ Console.WriteLine("DemoBrowserPlatformOptions.PreferFileDialogPolyfill: " + options.PreferFileDialogPolyfill);
+ Console.WriteLine("DemoBrowserPlatformOptions.RenderingMode: " + string.Join(";", options.RenderingMode));
+ return options;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("ParseArgs of DemoBrowserPlatformOptions failed: " + ex);
+ return null;
+ }
+ }
}
diff --git a/samples/ControlCatalog.Browser/wwwroot/Logo.svg b/samples/ControlCatalog.Browser/wwwroot/Logo.svg
new file mode 100644
index 0000000000..3e18ea1958
--- /dev/null
+++ b/samples/ControlCatalog.Browser/wwwroot/Logo.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/samples/ControlCatalog.Browser/wwwroot/app.css b/samples/ControlCatalog.Browser/wwwroot/app.css
new file mode 100644
index 0000000000..77f2051221
--- /dev/null
+++ b/samples/ControlCatalog.Browser/wwwroot/app.css
@@ -0,0 +1,38 @@
+/* HTML styles for the splash screen */
+.avalonia-splash {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ background: #1b2a4e;
+ font-family: 'Nunito', sans-serif;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ pointer-events: none;
+}
+
+.avalonia-splash h2 {
+ font-size: 1.5rem;
+ color: #8b44ac;
+}
+
+.avalonia-splash a {
+ color: white;
+ text-decoration: none;
+ font-size: 2.5rem;
+ display: block;
+}
+
+.avalonia-splash img {
+ opacity: 0.05;
+ height: 35%;
+ position: absolute;
+ right: 3%;
+ bottom: 3%;
+}
+
+.avalonia-splash.splash-close {
+ transition: opacity 200ms, display 200ms;
+ display: none;
+ opacity: 0;
+}
diff --git a/samples/ControlCatalog.Browser/AppBundle/embed.js b/samples/ControlCatalog.Browser/wwwroot/embed.js
similarity index 100%
rename from samples/ControlCatalog.Browser/AppBundle/embed.js
rename to samples/ControlCatalog.Browser/wwwroot/embed.js
diff --git a/samples/ControlCatalog.Browser/AppBundle/favicon.ico b/samples/ControlCatalog.Browser/wwwroot/favicon.ico
similarity index 100%
rename from samples/ControlCatalog.Browser/AppBundle/favicon.ico
rename to samples/ControlCatalog.Browser/wwwroot/favicon.ico
diff --git a/samples/ControlCatalog.Browser/wwwroot/index.html b/samples/ControlCatalog.Browser/wwwroot/index.html
new file mode 100644
index 0000000000..d8bf05fe3c
--- /dev/null
+++ b/samples/ControlCatalog.Browser/wwwroot/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ AvaloniaUI - ControlCatalog
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/MobileSandbox.Browser/main.js b/samples/ControlCatalog.Browser/wwwroot/main.js
similarity index 71%
rename from samples/MobileSandbox.Browser/main.js
rename to samples/ControlCatalog.Browser/wwwroot/main.js
index 9d90db8bd2..35c8245b01 100644
--- a/samples/MobileSandbox.Browser/main.js
+++ b/samples/ControlCatalog.Browser/wwwroot/main.js
@@ -1,16 +1,15 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
-import { dotnet } from './dotnet.js'
+import { dotnet } from './_framework/dotnet.js'
const is_browser = typeof window != "undefined";
if (!is_browser) throw new Error(`Expected to be running in a browser`);
const dotnetRuntime = await dotnet
- .withDiagnosticTracing(false)
.withApplicationArgumentsFromQuery()
.create();
const config = dotnetRuntime.getConfig();
-await dotnetRuntime.runMainAndExit(config.mainAssemblyName, ["dotnet", "is", "great!"]);
+await dotnetRuntime.runMain(config.mainAssemblyName, [globalThis.location.href]);
diff --git a/samples/ControlCatalog.Desktop/Program.cs b/samples/ControlCatalog.Desktop/Program.cs
index eeb2095201..d555ce1399 100644
--- a/samples/ControlCatalog.Desktop/Program.cs
+++ b/samples/ControlCatalog.Desktop/Program.cs
@@ -33,9 +33,7 @@ namespace ControlCatalog
private static void ConfigureAssetAssembly(AppBuilder builder)
{
- AvaloniaLocator.CurrentMutable
- .GetRequiredService()
- .SetDefaultAssembly(typeof(App).Assembly);
+ AssetLoader.SetDefaultAssembly(typeof(App).Assembly);
}
}
}
diff --git a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
index 37719b77d8..c87d9fdead 100644
--- a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
+++ b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
@@ -2,16 +2,9 @@
WinExe
- net6.0
+ $(AvsCurrentTargetFramework)
true
true
- 6.0.8
-
-
-
- true
- https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json
- 7.0.0-*
@@ -36,13 +29,6 @@
-
-
-
-
-
-
-
en
diff --git a/samples/ControlCatalog.NetCore/Program.cs b/samples/ControlCatalog.NetCore/Program.cs
index 5e3e301461..036dd13f7a 100644
--- a/samples/ControlCatalog.NetCore/Program.cs
+++ b/samples/ControlCatalog.NetCore/Program.cs
@@ -9,9 +9,11 @@ using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Fonts.Inter;
using Avalonia.Headless;
+using Avalonia.LinuxFramebuffer.Output;
using Avalonia.LogicalTree;
+using Avalonia.Rendering.Composition;
using Avalonia.Threading;
-
+using Avalonia.Vulkan;
using ControlCatalog.Pages;
namespace ControlCatalog.NetCore
@@ -51,8 +53,11 @@ namespace ControlCatalog.NetCore
}
if (s_useFramebuffer)
{
- SilenceConsole();
- return builder.StartLinuxFbDev(args, scaling: GetScaling());
+ SilenceConsole();
+ return builder.StartLinuxFbDev(args, new FbDevOutputOptions()
+ {
+ Scaling = GetScaling()
+ });
}
else if (args.Contains("--vnc"))
{
@@ -128,7 +133,19 @@ namespace ControlCatalog.NetCore
{
EnableMultiTouch = true,
UseDBusMenu = true,
- EnableIme = true
+ EnableIme = true,
+ })
+
+ .With(new VulkanOptions
+ {
+ VulkanInstanceCreationOptions = new ()
+ {
+ UseDebug = true
+ }
+ })
+ .With(new CompositionOptions()
+ {
+ UseRegionDirtyRectClipping = true
})
.UseSkia()
.WithInterFont()
diff --git a/samples/ControlCatalog.Tizen/ControlCatalog.Tizen.csproj b/samples/ControlCatalog.Tizen/ControlCatalog.Tizen.csproj
index 378db1865a..6b14083842 100644
--- a/samples/ControlCatalog.Tizen/ControlCatalog.Tizen.csproj
+++ b/samples/ControlCatalog.Tizen/ControlCatalog.Tizen.csproj
@@ -1,6 +1,6 @@
- net7.0-tizen
+ $(AvsCurrentTizenTargetFramework)
Exe
@@ -17,4 +17,4 @@
-
\ No newline at end of file
+
diff --git a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj
index dc1309150c..75c244711b 100644
--- a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj
+++ b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj
@@ -2,9 +2,9 @@
Exe
manual
- net7.0-ios
-
- 13.0
+ $(AvsCurrentIOSTargetFramework)
+
+ $(AvsMinSupportedIOSVersion)
diff --git a/samples/ControlCatalog.iOS/Info.plist b/samples/ControlCatalog.iOS/Info.plist
index d97c088652..b4c7c07eb6 100644
--- a/samples/ControlCatalog.iOS/Info.plist
+++ b/samples/ControlCatalog.iOS/Info.plist
@@ -12,8 +12,6 @@
1.0
LSRequiresIPhoneOS
- MinimumOSVersion
- 13.0
UIDeviceFamily
1
diff --git a/samples/ControlCatalog/App.xaml b/samples/ControlCatalog/App.xaml
index 519fb3ec7a..157009a5e3 100644
--- a/samples/ControlCatalog/App.xaml
+++ b/samples/ControlCatalog/App.xaml
@@ -64,7 +64,7 @@
-
+
@@ -75,6 +75,7 @@
+
diff --git a/samples/ControlCatalog/App.xaml.cs b/samples/ControlCatalog/App.xaml.cs
index 6a941c21ae..2b55c5bad8 100644
--- a/samples/ControlCatalog/App.xaml.cs
+++ b/samples/ControlCatalog/App.xaml.cs
@@ -3,6 +3,7 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
+using Avalonia.Platform;
using Avalonia.Styling;
using Avalonia.Themes.Simple;
using Avalonia.Themes.Fluent;
@@ -51,7 +52,7 @@ namespace ControlCatalog
singleViewLifetime.MainView = new MainView { DataContext = new MainWindowViewModel() };
}
- if (ApplicationLifetime is IActivatableApplicationLifetime activatableApplicationLifetime)
+ if (this.TryGetFeature() is {} activatableApplicationLifetime)
{
activatableApplicationLifetime.Activated += (sender, args) =>
Console.WriteLine($"App activated: {args.Kind}");
diff --git a/samples/ControlCatalog/ControlCatalog.csproj b/samples/ControlCatalog/ControlCatalog.csproj
index 5125b42426..18d222d809 100644
--- a/samples/ControlCatalog/ControlCatalog.csproj
+++ b/samples/ControlCatalog/ControlCatalog.csproj
@@ -1,6 +1,6 @@
- netstandard2.0;net6.0
+ netstandard2.0;$(AvsCurrentTargetFramework)
true
enable
true
@@ -27,7 +27,6 @@
-
diff --git a/samples/ControlCatalog/DecoratedWindow.xaml.cs b/samples/ControlCatalog/DecoratedWindow.xaml.cs
index ed30b7f491..c97b157040 100644
--- a/samples/ControlCatalog/DecoratedWindow.xaml.cs
+++ b/samples/ControlCatalog/DecoratedWindow.xaml.cs
@@ -19,7 +19,7 @@ namespace ControlCatalog
ctl.Cursor = new Cursor(cursor);
ctl.PointerPressed += (i, e) =>
{
- PlatformImpl?.BeginResizeDrag(edge, e);
+ BeginResizeDrag(edge, e);
};
}
@@ -28,7 +28,7 @@ namespace ControlCatalog
AvaloniaXamlLoader.Load(this);
this.Get("TitleBar").PointerPressed += (i, e) =>
{
- PlatformImpl?.BeginMoveDrag(e);
+ BeginMoveDrag(e);
};
SetupSide("Left", StandardCursorType.LeftSide, WindowEdge.West);
SetupSide("Right", StandardCursorType.RightSide, WindowEdge.East);
diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml
index ad3d0c7d37..4588b979be 100644
--- a/samples/ControlCatalog/MainView.xaml
+++ b/samples/ControlCatalog/MainView.xaml
@@ -106,11 +106,6 @@
ScrollViewer.VerticalScrollBarVisibility="Disabled">
-
-
-
diff --git a/samples/ControlCatalog/Pages/ComboBoxPage.xaml b/samples/ControlCatalog/Pages/ComboBoxPage.xaml
index eca2c4762c..ab347ac30c 100644
--- a/samples/ControlCatalog/Pages/ComboBoxPage.xaml
+++ b/samples/ControlCatalog/Pages/ComboBoxPage.xaml
@@ -12,8 +12,8 @@
+ WrapSelection
Inline Item 4
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -114,9 +136,6 @@
-
- WrapSelection
-
diff --git a/samples/ControlCatalog/Pages/CompositionPage.axaml b/samples/ControlCatalog/Pages/CompositionPage.axaml
index 602b9b768d..4d9bb41781 100644
--- a/samples/ControlCatalog/Pages/CompositionPage.axaml
+++ b/samples/ControlCatalog/Pages/CompositionPage.axaml
@@ -50,6 +50,10 @@
+ Precise dirty rects
diff --git a/samples/ControlCatalog/Pages/CompositionPage.axaml.cs b/samples/ControlCatalog/Pages/CompositionPage.axaml.cs
index 5bf46510dc..da12accd58 100644
--- a/samples/ControlCatalog/Pages/CompositionPage.axaml.cs
+++ b/samples/ControlCatalog/Pages/CompositionPage.axaml.cs
@@ -24,7 +24,7 @@ public partial class CompositionPage : UserControl
public CompositionPage()
{
- AvaloniaXamlLoader.Load(this);
+ InitializeComponent();
AttachAnimatedSolidVisual(this.FindControl("SolidVisualHost")!);
AttachCustomVisual(this.FindControl("CustomVisualHost")!);
}
@@ -206,6 +206,7 @@ public partial class CompositionPage : UserControl
_customVisual = compositor.CreateCustomVisual(new CustomVisualHandler());
ElementComposition.SetElementChildVisual(v, _customVisual);
_customVisual.SendHandlerMessage(CustomVisualHandler.StartMessage);
+ PreciseDirtyRectsCheckboxCustomVisualChanged(this, new());
Update();
};
@@ -221,10 +222,16 @@ public partial class CompositionPage : UserControl
private TimeSpan _animationElapsed;
private TimeSpan? _lastServerTime;
private bool _running;
+ private bool _preciseDirtyRects;
- public static readonly object StopMessage = new(), StartMessage = new();
-
- public override void OnRender(ImmediateDrawingContext drawingContext)
+ public static readonly object StopMessage = new(),
+ StartMessage = new(),
+ UsePreciseDirtyRects = new(),
+ UseNonPreciseDirtyRects = new();
+
+ private List<(Point center, double size, ImmutableSolidColorBrush brush)> _ellipses = new();
+
+ void UpdateRects()
{
if (_running)
{
@@ -232,6 +239,8 @@ public partial class CompositionPage : UserControl
_lastServerTime = CompositionNow;
}
+ _ellipses.Clear();
+
const int cnt = 20;
var maxPointSizeX = EffectiveSize.X / (cnt * 1.6);
var maxPointSizeY = EffectiveSize.Y / 4;
@@ -250,16 +259,22 @@ public partial class CompositionPage : UserControl
var posY = (EffectiveSize.Y - pointSize) * (1 + Math.Sin(stage * 3.14 * 3 + sinOffset)) / 2 + pointSize / 2;
var opacity = Math.Sin(stage * 3.14);
-
- drawingContext.DrawEllipse(new ImmutableSolidColorBrush(Color.FromArgb(
- 255,
- (byte)(255 - 255 * colorStage),
- (byte)(255 * Math.Abs(0.5 - colorStage) * 2),
- (byte)(255 * colorStage)
- ), opacity), null,
- new Point(posX, posY), pointSize / 2, pointSize / 2);
+ _ellipses.Add((new Point(posX, posY), pointSize / 2, new ImmutableSolidColorBrush(Color.FromArgb(
+ 255,
+ (byte)(255 - 255 * colorStage),
+ (byte)(255 * Math.Abs(0.5 - colorStage) * 2),
+ (byte)(255 * colorStage)
+ ), opacity)));
}
+ }
+
+ public override void OnRender(ImmediateDrawingContext drawingContext)
+ {
+ if (_ellipses.Count == 0)
+ UpdateRects();
+ foreach(var e in _ellipses)
+ drawingContext.DrawEllipse(e.brush, null, e.center, e.size, e.size);
}
public override void OnMessage(object message)
@@ -272,13 +287,29 @@ public partial class CompositionPage : UserControl
}
else if (message == StopMessage)
_running = false;
+ else if (message == UsePreciseDirtyRects)
+ _preciseDirtyRects = true;
+ else if (message == UseNonPreciseDirtyRects)
+ _preciseDirtyRects = false;
}
+ void InvalidateCurrentEllipseRects()
+ {
+ foreach (var e in _ellipses)
+ Invalidate(new Rect(e.center.X - e.size, e.center.Y - e.size, e.size * 2, e.size * 2));
+ }
+
public override void OnAnimationFrameUpdate()
{
if (_running)
{
- Invalidate();
+ if (_preciseDirtyRects)
+ InvalidateCurrentEllipseRects();
+ else
+ Invalidate();
+ UpdateRects();
+ if(_preciseDirtyRects)
+ InvalidateCurrentEllipseRects();
RegisterForNextAnimationFrameUpdate();
}
}
@@ -298,6 +329,13 @@ public partial class CompositionPage : UserControl
{
_customVisual?.SendHandlerMessage(CustomVisualHandler.StopMessage);
}
+
+ private void PreciseDirtyRectsCheckboxCustomVisualChanged(object sender, RoutedEventArgs e)
+ {
+ _customVisual?.SendHandlerMessage(PreciseDirtyRectsCheckboxCustomVisual?.IsChecked == true
+ ? CustomVisualHandler.UsePreciseDirtyRects
+ : CustomVisualHandler.UseNonPreciseDirtyRects);
+ }
}
public class CompositionPageColorItem
diff --git a/samples/ControlCatalog/Pages/DialogsPage.xaml.cs b/samples/ControlCatalog/Pages/DialogsPage.xaml.cs
index a5423fab52..7cfb036577 100644
--- a/samples/ControlCatalog/Pages/DialogsPage.xaml.cs
+++ b/samples/ControlCatalog/Pages/DialogsPage.xaml.cs
@@ -3,6 +3,7 @@ using System.Buffers;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
+using System.Security;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
@@ -43,7 +44,7 @@ namespace ControlCatalog.Pages
{
lastSelectedDirectory = await GetStorageProvider().TryGetWellKnownFolderAsync(folderEnum);
}
- else
+ else if (!string.IsNullOrWhiteSpace(currentFolderBox.Text))
{
if (!Uri.TryCreate(currentFolderBox.Text, UriKind.Absolute, out var folderLink))
{
@@ -52,7 +53,14 @@ namespace ControlCatalog.Pages
if (folderLink is not null)
{
- lastSelectedDirectory = await GetStorageProvider().TryGetFolderFromPathAsync(folderLink);
+ try
+ {
+ lastSelectedDirectory = await GetStorageProvider().TryGetFolderFromPathAsync(folderLink);
+ }
+ catch (SecurityException)
+ {
+
+ }
}
}
};
@@ -239,7 +247,6 @@ namespace ControlCatalog.Pages
FileTypeChoices = fileTypes,
SuggestedStartLocation = lastSelectedDirectory,
SuggestedFileName = "FileName",
- DefaultExtension = fileTypes?.Any() == true ? "txt" : null,
ShowOverwritePrompt = true
});
@@ -468,8 +475,8 @@ CanPickFolder: {storageProvider.CanPickFolder}";
private IStorageProvider GetStorageProvider()
{
var forceManaged = this.Get("ForceManaged").IsChecked ?? false;
- return forceManaged
- ? new ManagedStorageProvider(GetWindow())
+ return forceManaged
+ ? new ManagedStorageProvider(GetWindow()) // NOTE: In your production App use 'AppBuilder.UseManagedSystemDialogs()'
: GetTopLevel().StorageProvider;
}
diff --git a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
deleted file mode 100644
index 88be9f8e6e..0000000000
--- a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A data-driven collection control that incorporates a flexible layout system, custom views, and virtualization.
-
-
-
- Stack - Vertical
- Stack - Horizontal
- UniformGrid - Vertical
- UniformGrid - Horizontal
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs
deleted file mode 100644
index 2219966daa..0000000000
--- a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs
+++ /dev/null
@@ -1,157 +0,0 @@
-using System;
-using System.Linq;
-using Avalonia.Controls;
-using Avalonia.Controls.Primitives;
-using Avalonia.Input;
-using Avalonia.Layout;
-using Avalonia.Markup.Xaml;
-using Avalonia.VisualTree;
-using ControlCatalog.ViewModels;
-
-namespace ControlCatalog.Pages
-{
- public class ItemsRepeaterPage : UserControl
- {
- private readonly ItemsRepeaterPageViewModel _viewModel;
- private ItemsRepeater _repeater;
- private ScrollViewer _scroller;
- private int _selectedIndex;
- private Button _scrollToLast;
- private Button _scrollToRandom;
- private Button _scrollToSelected;
- private Random _random = new Random(0);
-
- public ItemsRepeaterPage()
- {
- this.InitializeComponent();
- _repeater = this.Get("repeater");
- _scroller = this.Get("scroller");
- _scrollToLast = this.Get
+
diff --git a/samples/Generators.Sandbox/Generators.Sandbox.csproj b/samples/Generators.Sandbox/Generators.Sandbox.csproj
index 37b496b924..6cbf210d3f 100644
--- a/samples/Generators.Sandbox/Generators.Sandbox.csproj
+++ b/samples/Generators.Sandbox/Generators.Sandbox.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
true
diff --git a/samples/GpuInterop/GpuInterop.csproj b/samples/GpuInterop/GpuInterop.csproj
index 161821d92a..5fbef07abc 100644
--- a/samples/GpuInterop/GpuInterop.csproj
+++ b/samples/GpuInterop/GpuInterop.csproj
@@ -2,7 +2,7 @@
Exe
- net7.0
+ $(AvsCurrentTargetFramework)
true
enable
false
diff --git a/samples/GpuInterop/Program.cs b/samples/GpuInterop/Program.cs
index 8d7ccf4866..e07780f80b 100644
--- a/samples/GpuInterop/Program.cs
+++ b/samples/GpuInterop/Program.cs
@@ -1,5 +1,8 @@
global using System.Reactive.Disposables;
using Avalonia;
+using Avalonia.Logging;
+using Avalonia.Vulkan;
+
namespace GpuInterop
{
public class Program
@@ -10,6 +13,21 @@ namespace GpuInterop
public static AppBuilder BuildAvaloniaApp() =>
AppBuilder.Configure()
.UsePlatformDetect()
- .LogToTrace();
+ .With(new Win32PlatformOptions
+ {
+ RenderingMode = new []
+ {
+ Win32RenderingMode.Vulkan
+ }
+ })
+ .With(new X11PlatformOptions(){RenderingMode =new[] { X11RenderingMode.Vulkan } })
+ .With(new VulkanOptions()
+ {
+ VulkanInstanceCreationOptions = new VulkanInstanceCreationOptions()
+ {
+ UseDebug = true
+ }
+ })
+ .LogToTrace(LogEventLevel.Debug, "Vulkan");
}
}
diff --git a/samples/GpuInterop/VulkanDemo/VulkanContent.cs b/samples/GpuInterop/VulkanDemo/VulkanContent.cs
index fe95db00f4..576c34e837 100644
--- a/samples/GpuInterop/VulkanDemo/VulkanContent.cs
+++ b/samples/GpuInterop/VulkanDemo/VulkanContent.cs
@@ -397,7 +397,7 @@ unsafe class VulkanContent : IDisposable
Matrix4x4.CreatePerspectiveFieldOfView((float)(Math.PI / 4), (float)size.Width / size.Height,
0.01f, 1000);
- _colorAttachment = new VulkanImage(_context, (uint)Format.R8G8B8A8Unorm, size, false);
+ _colorAttachment = new VulkanImage(_context, (uint)Format.R8G8B8A8Unorm, size, false, Array.Empty());
CreateDepthAttachment(size);
var api = _context.Api;
diff --git a/samples/GpuInterop/VulkanDemo/VulkanContext.cs b/samples/GpuInterop/VulkanDemo/VulkanContext.cs
index 0983a373f3..6983a69d86 100644
--- a/samples/GpuInterop/VulkanDemo/VulkanContext.cs
+++ b/samples/GpuInterop/VulkanDemo/VulkanContext.cs
@@ -101,8 +101,10 @@ public unsafe class VulkanContext : IDisposable
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
- if (!gpuInterop.SupportedImageHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes
+ if (!(gpuInterop.SupportedImageHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes
.D3D11TextureGlobalSharedHandle)
+ || gpuInterop.SupportedImageHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes
+ .VulkanOpaqueNtHandle))
)
return (null, "Image sharing is not supported by the current backend");
requireDeviceExtensions.Add(KhrExternalMemoryWin32.ExtensionName);
@@ -240,10 +242,13 @@ public unsafe class VulkanContext : IDisposable
}
});
+
D3DDevice? d3dDevice = null;
if (physicalDeviceIDProperties.DeviceLuidvalid &&
- RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ RuntimeInformation.IsOSPlatform(OSPlatform.Windows) &&
+ !gpuInterop.SupportedImageHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes.VulkanOpaqueNtHandle)
+ )
d3dDevice = D3DMemoryHelper.CreateDeviceByLuid(
new Span(physicalDeviceIDProperties.DeviceLuid, 8));
diff --git a/samples/GpuInterop/VulkanDemo/VulkanImage.cs b/samples/GpuInterop/VulkanDemo/VulkanImage.cs
index a385468b26..ea43441243 100644
--- a/samples/GpuInterop/VulkanDemo/VulkanImage.cs
+++ b/samples/GpuInterop/VulkanDemo/VulkanImage.cs
@@ -1,5 +1,7 @@
using System;
+using System.Collections.Generic;
using System.IO;
+using System.Linq;
using System.Runtime.InteropServices;
using Avalonia;
using Avalonia.Platform;
@@ -44,7 +46,7 @@ public unsafe class VulkanImage : IDisposable
public uint CurrentLayout => (uint) _currentLayout;
public VulkanImage(VulkanContext vk, uint format, PixelSize size,
- bool exportable, uint mipLevels = 0)
+ bool exportable, IReadOnlyList supportedHandleTypes)
{
_vk = vk;
_instance = vk.Instance;
@@ -62,8 +64,12 @@ public unsafe class VulkanImage : IDisposable
//MipLevels = MipLevels != 0 ? MipLevels : (uint)Math.Floor(Math.Log(Math.Max(Size.Width, Size.Height), 2));
var handleType = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?
- ExternalMemoryHandleTypeFlags.D3D11TextureBit :
+ (supportedHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes.D3D11TextureNtHandle)
+ && !supportedHandleTypes.Contains(KnownPlatformGraphicsExternalImageHandleTypes.VulkanOpaqueNtHandle) ?
+ ExternalMemoryHandleTypeFlags.D3D11TextureBit :
+ ExternalMemoryHandleTypeFlags.OpaqueWin32Bit) :
ExternalMemoryHandleTypeFlags.OpaqueFDBit;
+
var externalMemoryCreateInfo = new ExternalMemoryImageCreateInfo
{
SType = StructureType.ExternalMemoryImageCreateInfo,
@@ -96,35 +102,37 @@ public unsafe class VulkanImage : IDisposable
Api.GetImageMemoryRequirements(_device, InternalHandle,
out var memoryRequirements);
-
- var fdExport = new ExportMemoryAllocateInfo
- {
- HandleTypes = handleType, SType = StructureType.ExportMemoryAllocateInfo
- };
var dedicatedAllocation = new MemoryDedicatedAllocateInfoKHR
{
SType = StructureType.MemoryDedicatedAllocateInfoKhr,
Image = image
};
+
+ var fdExport = new ExportMemoryAllocateInfo
+ {
+ HandleTypes = handleType, SType = StructureType.ExportMemoryAllocateInfo,
+ PNext = &dedicatedAllocation
+ };
+
ImportMemoryWin32HandleInfoKHR handleImport = default;
- if (exportable && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ if (handleType == ExternalMemoryHandleTypeFlags.D3D11TextureBit && exportable)
{
- _d3dTexture2D = D3DMemoryHelper.CreateMemoryHandle(vk.D3DDevice!, size, Format);
- using var dxgi = _d3dTexture2D.QueryInterface();
-
- handleImport = new ImportMemoryWin32HandleInfoKHR
- {
- PNext = &dedicatedAllocation,
- SType = StructureType.ImportMemoryWin32HandleInfoKhr,
- HandleType = ExternalMemoryHandleTypeFlags.D3D11TextureBit,
- Handle = dxgi.CreateSharedHandle(null, SharedResourceFlags.Read | SharedResourceFlags.Write),
- };
+ _d3dTexture2D = D3DMemoryHelper.CreateMemoryHandle(vk.D3DDevice, size, Format);
+ using var dxgi = _d3dTexture2D.QueryInterface();
+
+ handleImport = new ImportMemoryWin32HandleInfoKHR
+ {
+ PNext = &dedicatedAllocation,
+ SType = StructureType.ImportMemoryWin32HandleInfoKhr,
+ HandleType = ExternalMemoryHandleTypeFlags.D3D11TextureBit,
+ Handle = dxgi.CreateSharedHandle(null, SharedResourceFlags.Read | SharedResourceFlags.Write),
+ };
}
var memoryAllocateInfo = new MemoryAllocateInfo
{
PNext =
- exportable ? RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? &handleImport : &fdExport : null,
+ exportable ? handleImport.Handle != IntPtr.Zero ? &handleImport : &fdExport : null,
SType = StructureType.MemoryAllocateInfo,
AllocationSize = memoryRequirements.Size,
MemoryTypeIndex = (uint)VulkanMemoryHelper.FindSuitableMemoryTypeIndex(
@@ -187,14 +195,34 @@ public unsafe class VulkanImage : IDisposable
return fd;
}
+ public IntPtr ExportOpaqueNtHandle()
+ {
+ if (!Api.TryGetDeviceExtension(_instance, _device, out var ext))
+ throw new InvalidOperationException();
+ var info = new MemoryGetWin32HandleInfoKHR()
+ {
+ Memory = _imageMemory,
+ SType = StructureType.MemoryGetWin32HandleInfoKhr,
+ HandleType = ExternalMemoryHandleTypeFlags.OpaqueWin32Bit
+ };
+ ext.GetMemoryWin32Handle(_device, info, out var fd).ThrowOnError();
+ return fd;
+ }
+
public IPlatformHandle Export()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
- using var dxgi = _d3dTexture2D!.QueryInterface();
- return new PlatformHandle(
- dxgi.CreateSharedHandle(null, SharedResourceFlags.Read | SharedResourceFlags.Write),
- KnownPlatformGraphicsExternalImageHandleTypes.D3D11TextureNtHandle);
+ if (_d3dTexture2D != null)
+ {
+ using var dxgi = _d3dTexture2D!.QueryInterface();
+ return new PlatformHandle(
+ dxgi.CreateSharedHandle(null, SharedResourceFlags.Read | SharedResourceFlags.Write),
+ KnownPlatformGraphicsExternalImageHandleTypes.D3D11TextureNtHandle);
+ }
+
+ return new PlatformHandle(ExportOpaqueNtHandle(),
+ KnownPlatformGraphicsExternalImageHandleTypes.VulkanOpaqueNtHandle);
}
else
return new PlatformHandle(new IntPtr(ExportFd()),
@@ -203,7 +231,7 @@ public unsafe class VulkanImage : IDisposable
public ImageTiling Tiling => ImageTiling.Optimal;
-
+ public bool IsDirectXBacked => _d3dTexture2D != null;
internal void TransitionLayout(CommandBuffer commandBuffer,
ImageLayout fromLayout, AccessFlags fromAccessFlags,
diff --git a/samples/GpuInterop/VulkanDemo/VulkanSemaphorePair.cs b/samples/GpuInterop/VulkanDemo/VulkanSemaphorePair.cs
index 279c313a27..163a39dd9e 100644
--- a/samples/GpuInterop/VulkanDemo/VulkanSemaphorePair.cs
+++ b/samples/GpuInterop/VulkanDemo/VulkanSemaphorePair.cs
@@ -1,4 +1,6 @@
using System;
+using System.Runtime.InteropServices;
+using Avalonia.Platform;
using Silk.NET.Vulkan;
using Silk.NET.Vulkan.Extensions.KHR;
using SilkNetDemo;
@@ -16,7 +18,9 @@ class VulkanSemaphorePair : IDisposable
var semaphoreExportInfo = new ExportSemaphoreCreateInfo
{
SType = StructureType.ExportSemaphoreCreateInfo,
- HandleTypes = ExternalSemaphoreHandleTypeFlags.OpaqueFDBit
+ HandleTypes = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?
+ ExternalSemaphoreHandleTypeFlags.OpaqueWin32Bit :
+ ExternalSemaphoreHandleTypeFlags.OpaqueFDBit
};
var semaphoreCreateInfo = new SemaphoreCreateInfo
@@ -46,6 +50,30 @@ class VulkanSemaphorePair : IDisposable
ext.GetSemaphoreF(_resources.Device, info, out var fd).ThrowOnError();
return fd;
}
+
+ public IntPtr ExportWin32(bool renderFinished)
+ {
+ if (!_resources.Api.TryGetDeviceExtension(_resources.Instance, _resources.Device,
+ out var ext))
+ throw new InvalidOperationException();
+ var info = new SemaphoreGetWin32HandleInfoKHR()
+ {
+ SType = StructureType.SemaphoreGetWin32HandleInfoKhr,
+ Semaphore = renderFinished ? RenderFinishedSemaphore : ImageAvailableSemaphore,
+ HandleType = ExternalSemaphoreHandleTypeFlags.OpaqueWin32Bit
+ };
+ ext.GetSemaphoreWin32Handle(_resources.Device, info, out var fd).ThrowOnError();
+ return fd;
+ }
+
+ public IPlatformHandle Export(bool renderFinished)
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ return new PlatformHandle(ExportWin32(renderFinished),
+ KnownPlatformGraphicsExternalSemaphoreHandleTypes.VulkanOpaqueNtHandle);
+ return new PlatformHandle(new IntPtr(ExportFd(renderFinished)),
+ KnownPlatformGraphicsExternalSemaphoreHandleTypes.VulkanOpaquePosixFileDescriptor);
+ }
internal Semaphore ImageAvailableSemaphore { get; }
internal Semaphore RenderFinishedSemaphore { get; }
@@ -55,4 +83,4 @@ class VulkanSemaphorePair : IDisposable
_resources.Api.DestroySemaphore(_resources.Device, ImageAvailableSemaphore, null);
_resources.Api.DestroySemaphore(_resources.Device, RenderFinishedSemaphore, null);
}
-}
\ No newline at end of file
+}
diff --git a/samples/GpuInterop/VulkanDemo/VulkanSwapchain.cs b/samples/GpuInterop/VulkanDemo/VulkanSwapchain.cs
index cd026b3972..a748ba4bb6 100644
--- a/samples/GpuInterop/VulkanDemo/VulkanSwapchain.cs
+++ b/samples/GpuInterop/VulkanDemo/VulkanSwapchain.cs
@@ -52,7 +52,7 @@ class VulkanSwapchainImage : ISwapchainImage
_interop = interop;
_target = target;
Size = size;
- _image = new VulkanImage(vk, (uint)Format.R8G8B8A8Unorm, size, true);
+ _image = new VulkanImage(vk, (uint)Format.R8G8B8A8Unorm, size, true, interop.SupportedImageHandleTypes);
_semaphorePair = new VulkanSemaphorePair(vk, true);
}
@@ -83,7 +83,7 @@ class VulkanSwapchainImage : ISwapchainImage
ImageLayout.Undefined, AccessFlags.None,
ImageLayout.ColorAttachmentOptimal, AccessFlags.ColorAttachmentReadBit);
- if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ if(_image.IsDirectXBacked)
buffer.Submit(null,null,null, null, new VulkanCommandBufferPool.VulkanCommandBuffer.KeyedMutexSubmitInfo
{
AcquireKey = 0,
@@ -111,8 +111,7 @@ class VulkanSwapchainImage : ISwapchainImage
_image.TransitionLayout(buffer.InternalHandle, ImageLayout.TransferSrcOptimal, AccessFlags.TransferWriteBit);
-
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ if (_image.IsDirectXBacked)
{
buffer.Submit(null, null, null, null,
new VulkanCommandBufferPool.VulkanCommandBuffer.KeyedMutexSubmitInfo
@@ -123,15 +122,11 @@ class VulkanSwapchainImage : ISwapchainImage
else
buffer.Submit(null, null, new[] { _semaphorePair.RenderFinishedSemaphore });
- if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ if (!_image.IsDirectXBacked)
{
- _availableSemaphore ??= _interop.ImportSemaphore(new PlatformHandle(
- new IntPtr(_semaphorePair.ExportFd(false)),
- KnownPlatformGraphicsExternalSemaphoreHandleTypes.VulkanOpaquePosixFileDescriptor));
+ _availableSemaphore ??= _interop.ImportSemaphore(_semaphorePair.Export(false));
- _renderCompletedSemaphore ??= _interop.ImportSemaphore(new PlatformHandle(
- new IntPtr(_semaphorePair.ExportFd(true)),
- KnownPlatformGraphicsExternalSemaphoreHandleTypes.VulkanOpaquePosixFileDescriptor));
+ _renderCompletedSemaphore ??= _interop.ImportSemaphore(_semaphorePair.Export(true));
}
_importedImage ??= _interop.ImportImage(_image.Export(),
@@ -143,7 +138,7 @@ class VulkanSwapchainImage : ISwapchainImage
MemorySize = _image.MemorySize
});
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ if (_image.IsDirectXBacked)
_lastPresent = _target.UpdateWithKeyedMutexAsync(_importedImage, 1, 0);
else
_lastPresent = _target.UpdateWithSemaphoresAsync(_importedImage, _renderCompletedSemaphore!, _availableSemaphore!);
diff --git a/samples/IntegrationTestApp/IntegrationTestApp.csproj b/samples/IntegrationTestApp/IntegrationTestApp.csproj
index 5cdbd77d5b..77bfa828a7 100644
--- a/samples/IntegrationTestApp/IntegrationTestApp.csproj
+++ b/samples/IntegrationTestApp/IntegrationTestApp.csproj
@@ -1,7 +1,7 @@
WinExe
- net7.0
+ $(AvsCurrentTargetFramework)
enable
$(NoWarn);AVP1012
diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs
index 170936f50d..986eb920a3 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml.cs
+++ b/samples/IntegrationTestApp/MainWindow.axaml.cs
@@ -49,7 +49,7 @@ namespace IntegrationTestApp
var menuItem = new NativeMenuItem
{
Header = (string?)tabItem.Header,
- ToolTip = (string?)tabItem.Header,
+ ToolTip = $"Tip:{(string?)tabItem.Header}",
IsChecked = tabItem.IsSelected,
ToggleType = NativeMenuItemToggleType.Radio,
};
diff --git a/samples/IntegrationTestApp/bundle.sh b/samples/IntegrationTestApp/bundle.sh
index e52968215b..2b480723c2 100755
--- a/samples/IntegrationTestApp/bundle.sh
+++ b/samples/IntegrationTestApp/bundle.sh
@@ -9,4 +9,4 @@ arch="arm64"
fi
dotnet restore -r osx-$arch
-dotnet msbuild -t:BundleApp -p:RuntimeIdentifier=osx-$arch -p:_AvaloniaUseExternalMSBuild=false
\ No newline at end of file
+dotnet msbuild -t:BundleApp -p:RuntimeIdentifier=osx-$arch
diff --git a/samples/MiniMvvm/MiniCommand.cs b/samples/MiniMvvm/MiniCommand.cs
index c6a9273c20..b39ceced3d 100644
--- a/samples/MiniMvvm/MiniCommand.cs
+++ b/samples/MiniMvvm/MiniCommand.cs
@@ -6,10 +6,10 @@ namespace MiniMvvm
{
public sealed class MiniCommand : MiniCommand, ICommand
{
- private readonly Action _cb;
+ private readonly Action? _cb;
+ private readonly Func? _acb;
private bool _busy;
- private Func _acb;
-
+
public MiniCommand(Action cb)
{
_cb = cb;
@@ -31,10 +31,11 @@ namespace MiniMvvm
}
- public override event EventHandler CanExecuteChanged;
- public override bool CanExecute(object parameter) => !_busy;
+ public override event EventHandler? CanExecuteChanged;
+
+ public override bool CanExecute(object? parameter) => !_busy;
- public override async void Execute(object parameter)
+ public override async void Execute(object? parameter)
{
if(Busy)
return;
@@ -42,9 +43,9 @@ namespace MiniMvvm
{
Busy = true;
if (_cb != null)
- _cb((T)parameter);
+ _cb((T)parameter!);
else
- await _acb((T)parameter);
+ await _acb!((T)parameter!);
}
finally
{
diff --git a/samples/MiniMvvm/MiniMvvm.csproj b/samples/MiniMvvm/MiniMvvm.csproj
index 2a9164624a..1f3869a2b5 100644
--- a/samples/MiniMvvm/MiniMvvm.csproj
+++ b/samples/MiniMvvm/MiniMvvm.csproj
@@ -1,8 +1,16 @@
+
netstandard2.0
+ enable
+
-
+
+
+
+
+
+
diff --git a/samples/MiniMvvm/ViewModelBase.cs b/samples/MiniMvvm/ViewModelBase.cs
index 8bc398607f..1b2f3b2c1b 100644
--- a/samples/MiniMvvm/ViewModelBase.cs
+++ b/samples/MiniMvvm/ViewModelBase.cs
@@ -6,8 +6,9 @@ namespace MiniMvvm
{
public class ViewModelBase : INotifyPropertyChanged
{
- public event PropertyChangedEventHandler PropertyChanged;
- protected bool RaiseAndSetIfChanged(ref T field, T value, [CallerMemberName] string propertyName = null)
+ public event PropertyChangedEventHandler? PropertyChanged;
+
+ protected bool RaiseAndSetIfChanged(ref T field, T value, [CallerMemberName] string? propertyName = null)
{
if (!EqualityComparer.Default.Equals(field, value))
{
@@ -17,9 +18,8 @@ namespace MiniMvvm
}
return false;
}
-
-
- protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
+
+ protected void RaisePropertyChanged([CallerMemberName] string? propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
diff --git a/samples/MobileSandbox.Android/MainActivity.cs b/samples/MobileSandbox.Android/MainActivity.cs
deleted file mode 100644
index 702e9be9e6..0000000000
--- a/samples/MobileSandbox.Android/MainActivity.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Android.App;
-using Android.Content.PM;
-using Android.OS;
-using Avalonia;
-using Avalonia.Android;
-
-namespace MobileSandbox.Android
-{
- [Activity(Label = "MobileSandbox.Android", Theme = "@style/MyTheme.NoActionBar", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)]
- public class MainActivity : AvaloniaMainActivity
- {
- }
-}
diff --git a/samples/MobileSandbox.Android/MobileSandbox.Android.csproj b/samples/MobileSandbox.Android/MobileSandbox.Android.csproj
deleted file mode 100644
index e1a75d4787..0000000000
--- a/samples/MobileSandbox.Android/MobileSandbox.Android.csproj
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
- net7.0-android
- 21
- Exe
- enable
- com.Avalonia.MobileSandbox
- 1
- 1.0
- apk
- true
-
-
-
- Resources\drawable\Icon.png
-
-
-
-
- True
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/Resources/AboutResources.txt b/samples/MobileSandbox.Android/Resources/AboutResources.txt
deleted file mode 100644
index c2bca974c4..0000000000
--- a/samples/MobileSandbox.Android/Resources/AboutResources.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Images, layout descriptions, binary blobs and string dictionaries can be included
-in your application as resource files. Various Android APIs are designed to
-operate on the resource IDs instead of dealing with images, strings or binary blobs
-directly.
-
-For example, a sample Android app that contains a user interface layout (main.axml),
-an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
-would keep its resources in the "Resources" directory of the application:
-
-Resources/
- drawable/
- icon.png
-
- layout/
- main.axml
-
- values/
- strings.xml
-
-In order to get the build system to recognize Android resources, set the build action to
-"AndroidResource". The native Android APIs do not operate directly with filenames, but
-instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
-
-public class R {
- public class drawable {
- public const int icon = 0x123;
- }
-
- public class layout {
- public const int main = 0x456;
- }
-
- public class strings {
- public const int first_string = 0xabc;
- public const int second_string = 0xbcd;
- }
-}
-
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
-string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/samples/MobileSandbox.Android/Resources/drawable-night-v31/avalonia_anim.xml b/samples/MobileSandbox.Android/Resources/drawable-night-v31/avalonia_anim.xml
deleted file mode 100644
index dde4b5a7dd..0000000000
--- a/samples/MobileSandbox.Android/Resources/drawable-night-v31/avalonia_anim.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/Resources/drawable-v31/avalonia_anim.xml b/samples/MobileSandbox.Android/Resources/drawable-v31/avalonia_anim.xml
deleted file mode 100644
index 94f27d9e63..0000000000
--- a/samples/MobileSandbox.Android/Resources/drawable-v31/avalonia_anim.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/Resources/drawable/splash_screen.xml b/samples/MobileSandbox.Android/Resources/drawable/splash_screen.xml
deleted file mode 100644
index 2e920b4b3b..0000000000
--- a/samples/MobileSandbox.Android/Resources/drawable/splash_screen.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- -
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/Resources/values-night/colors.xml b/samples/MobileSandbox.Android/Resources/values-night/colors.xml
deleted file mode 100644
index 3d47b6fc58..0000000000
--- a/samples/MobileSandbox.Android/Resources/values-night/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #212121
-
diff --git a/samples/MobileSandbox.Android/Resources/values-v31/styles.xml b/samples/MobileSandbox.Android/Resources/values-v31/styles.xml
deleted file mode 100644
index 7518f078e5..0000000000
--- a/samples/MobileSandbox.Android/Resources/values-v31/styles.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/Resources/values/colors.xml b/samples/MobileSandbox.Android/Resources/values/colors.xml
deleted file mode 100644
index 59279d5d32..0000000000
--- a/samples/MobileSandbox.Android/Resources/values/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #FFFFFF
-
diff --git a/samples/MobileSandbox.Android/Resources/values/styles.xml b/samples/MobileSandbox.Android/Resources/values/styles.xml
deleted file mode 100644
index 22085806da..0000000000
--- a/samples/MobileSandbox.Android/Resources/values/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Android/environment.device.txt b/samples/MobileSandbox.Android/environment.device.txt
deleted file mode 100644
index 107d68ca1b..0000000000
--- a/samples/MobileSandbox.Android/environment.device.txt
+++ /dev/null
@@ -1 +0,0 @@
-DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
diff --git a/samples/MobileSandbox.Android/environment.emulator.txt b/samples/MobileSandbox.Android/environment.emulator.txt
deleted file mode 100644
index 299a0ec30b..0000000000
--- a/samples/MobileSandbox.Android/environment.emulator.txt
+++ /dev/null
@@ -1 +0,0 @@
-DOTNET_DiagnosticPorts=10.0.2.2:9001,suspend
diff --git a/samples/MobileSandbox.Browser/Logo.svg b/samples/MobileSandbox.Browser/Logo.svg
deleted file mode 100644
index 9685a23af1..0000000000
--- a/samples/MobileSandbox.Browser/Logo.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/samples/MobileSandbox.Browser/MobileSandbox.Browser.csproj b/samples/MobileSandbox.Browser/MobileSandbox.Browser.csproj
deleted file mode 100644
index 6174b4f135..0000000000
--- a/samples/MobileSandbox.Browser/MobileSandbox.Browser.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- net7.0
- browser-wasm
- main.js
- Exe
- true
- true
- true
- ./
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Browser/Properties/launchSettings.json b/samples/MobileSandbox.Browser/Properties/launchSettings.json
deleted file mode 100644
index 66234a3211..0000000000
--- a/samples/MobileSandbox.Browser/Properties/launchSettings.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "profiles": {
- "MobileSandbox.Browser": {
- "commandName": "Project",
- "launchBrowser": true,
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "applicationUrl": "https://localhost:65312;http://localhost:65313;"
- }
- }
-}
diff --git a/samples/MobileSandbox.Browser/app.css b/samples/MobileSandbox.Browser/app.css
deleted file mode 100644
index 0e6ab12461..0000000000
--- a/samples/MobileSandbox.Browser/app.css
+++ /dev/null
@@ -1,56 +0,0 @@
-:root {
- --sat: env(safe-area-inset-top);
- --sar: env(safe-area-inset-right);
- --sab: env(safe-area-inset-bottom);
- --sal: env(safe-area-inset-left);
-}
-
-#out {
- height: 100vh;
- width: 100vw
-}
-
-#avalonia-splash {
- position: relative;
- height: 100%;
- width: 100%;
- color: whitesmoke;
- background: #171C2C;
- font-family: 'Nunito', sans-serif;
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-}
-
-#avalonia-splash a{
- color: whitesmoke;
- text-decoration: none;
-}
-
-.center {
- display: flex;
- justify-content: center;
- height: 250px;
-}
-
-.splash-close {
- animation: slide 0.5s linear 1s forwards;
-}
-
-@keyframes slide {
- 0% {
- top: 0%;
- }
-
- 50% {
- opacity: 80%;
- }
-
- 100% {
- top: 100%;
- overflow: hidden;
- opacity: 0;
- display: none;
- visibility: collapse;
- }
-}
diff --git a/samples/MobileSandbox.Browser/index.html b/samples/MobileSandbox.Browser/index.html
deleted file mode 100644
index 32ab8628fb..0000000000
--- a/samples/MobileSandbox.Browser/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
- Mobile Sandbox
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox.Desktop/MobileSandbox.Desktop.csproj b/samples/MobileSandbox.Desktop/MobileSandbox.Desktop.csproj
deleted file mode 100644
index c1d157a2e8..0000000000
--- a/samples/MobileSandbox.Desktop/MobileSandbox.Desktop.csproj
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- WinExe
- net6.0
- true
-
-
-
-
-
-
-
-
-
-
-
-
- en
- app.manifest
-
-
-
-
-
diff --git a/samples/MobileSandbox.Desktop/Program.cs b/samples/MobileSandbox.Desktop/Program.cs
deleted file mode 100644
index 4d49a65994..0000000000
--- a/samples/MobileSandbox.Desktop/Program.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using Avalonia;
-
-namespace MobileSandbox.Desktop
-{
- static class Program
- {
- [STAThread]
- static int Main(string[] args) =>
- BuildAvaloniaApp()
- .StartWithClassicDesktopLifetime(args);
-
- ///
- /// This method is needed for IDE previewer infrastructure
- ///
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
- .UsePlatformDetect()
- .LogToTrace();
- }
-}
diff --git a/samples/MobileSandbox.iOS/AppDelegate.cs b/samples/MobileSandbox.iOS/AppDelegate.cs
deleted file mode 100644
index 60214cc541..0000000000
--- a/samples/MobileSandbox.iOS/AppDelegate.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Foundation;
-using UIKit;
-using Avalonia;
-using Avalonia.Controls;
-using Avalonia.iOS;
-using Avalonia.Logging;
-using Avalonia.Media;
-
-namespace MobileSandbox
-{
- // The UIApplicationDelegate for the application. This class is responsible for launching the
- // User Interface of the application, as well as listening (and optionally responding) to
- // application events from iOS.
- [Register("AppDelegate")]
- public partial class AppDelegate : AvaloniaAppDelegate
- {
- protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
- {
- return builder.LogToTrace(LogEventLevel.Debug, "IOSIME");
- }
- }
-}
diff --git a/samples/MobileSandbox.iOS/Main.cs b/samples/MobileSandbox.iOS/Main.cs
deleted file mode 100644
index fdd78bbb11..0000000000
--- a/samples/MobileSandbox.iOS/Main.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using UIKit;
-
-namespace MobileSandbox.iOS
-{
- public class Application
- {
- // This is the main entry point of the application.
- static void Main(string[] args)
- {
- // if you want to use a different Application Delegate class from "AppDelegate"
- // you can specify it here.
- UIApplication.Main(args, null, typeof(AppDelegate));
- }
- }
-}
diff --git a/samples/MobileSandbox.iOS/MobileSandbox.iOS.csproj b/samples/MobileSandbox.iOS/MobileSandbox.iOS.csproj
deleted file mode 100644
index 0573eb781a..0000000000
--- a/samples/MobileSandbox.iOS/MobileSandbox.iOS.csproj
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- Exe
- manual
- net7.0-ios
- 13.0
-
-
-
-
-
-
diff --git a/samples/MobileSandbox/App.xaml.cs b/samples/MobileSandbox/App.xaml.cs
deleted file mode 100644
index d32d9bb5a7..0000000000
--- a/samples/MobileSandbox/App.xaml.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Avalonia;
-using Avalonia.Controls.ApplicationLifetimes;
-using Avalonia.Markup.Xaml;
-
-namespace MobileSandbox
-{
- public class App : Application
- {
- public override void Initialize()
- {
- AvaloniaXamlLoader.Load(this);
- }
-
- public override void OnFrameworkInitializationCompleted()
- {
- if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
- {
- desktopLifetime.MainWindow = new MainWindow();
- }
- else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime)
- {
- singleViewLifetime.MainView = new MainView();
- }
-
- base.OnFrameworkInitializationCompleted();
- }
- }
-}
diff --git a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Bold.ttf b/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Bold.ttf
deleted file mode 100644
index f6986468bd..0000000000
Binary files a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Bold.ttf and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-BoldItalic.ttf b/samples/MobileSandbox/Assets/Fonts/SourceSansPro-BoldItalic.ttf
deleted file mode 100644
index 5c00b64faf..0000000000
Binary files a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-BoldItalic.ttf and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Italic.ttf b/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Italic.ttf
deleted file mode 100644
index 82e8762011..0000000000
Binary files a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Italic.ttf and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Regular.ttf b/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Regular.ttf
deleted file mode 100644
index 278ad8aa0a..0000000000
Binary files a/samples/MobileSandbox/Assets/Fonts/SourceSansPro-Regular.ttf and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/Fonts/WenQuanYiMicroHei-01.ttf b/samples/MobileSandbox/Assets/Fonts/WenQuanYiMicroHei-01.ttf
deleted file mode 100644
index 61e2583a6c..0000000000
Binary files a/samples/MobileSandbox/Assets/Fonts/WenQuanYiMicroHei-01.ttf and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/avalonia-32.png b/samples/MobileSandbox/Assets/avalonia-32.png
deleted file mode 100644
index 7b443e7a25..0000000000
Binary files a/samples/MobileSandbox/Assets/avalonia-32.png and /dev/null differ
diff --git a/samples/MobileSandbox/Assets/test_icon.ico b/samples/MobileSandbox/Assets/test_icon.ico
deleted file mode 100644
index da8d49ff9b..0000000000
Binary files a/samples/MobileSandbox/Assets/test_icon.ico and /dev/null differ
diff --git a/samples/MobileSandbox/MainView.xaml.cs b/samples/MobileSandbox/MainView.xaml.cs
deleted file mode 100644
index 4b2b546b1c..0000000000
--- a/samples/MobileSandbox/MainView.xaml.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Windows.Input;
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-
-namespace MobileSandbox
-{
- public class MainView : UserControl
- {
- public MainView()
- {
- AvaloniaXamlLoader.Load(this);
-
- DataContext = this;
- }
-
- public void ButtonCommand()
- {
- Console.WriteLine("Button pressed");
- }
- }
-}
diff --git a/samples/MobileSandbox/MainWindow.xaml.cs b/samples/MobileSandbox/MainWindow.xaml.cs
deleted file mode 100644
index f2ff7cf0c8..0000000000
--- a/samples/MobileSandbox/MainWindow.xaml.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-
-namespace MobileSandbox
-{
- public class MainWindow : Window
- {
- public MainWindow()
- {
- this.InitializeComponent();
-
- //Renderer.DrawFps = true;
- //Renderer.DrawDirtyRects = Renderer.DrawFps = true;
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
-}
diff --git a/samples/MobileSandbox/MobileSandbox.csproj b/samples/MobileSandbox/MobileSandbox.csproj
deleted file mode 100644
index 7fa364da9b..0000000000
--- a/samples/MobileSandbox/MobileSandbox.csproj
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
- netstandard2.0;net6.0
- true
- enable
-
-
-
- %(Filename)
-
-
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox/Views/CustomNotificationView.xaml b/samples/MobileSandbox/Views/CustomNotificationView.xaml
deleted file mode 100644
index f07116583c..0000000000
--- a/samples/MobileSandbox/Views/CustomNotificationView.xaml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/MobileSandbox/Views/CustomNotificationView.xaml.cs b/samples/MobileSandbox/Views/CustomNotificationView.xaml.cs
deleted file mode 100644
index 1db0f2bce3..0000000000
--- a/samples/MobileSandbox/Views/CustomNotificationView.xaml.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-
-namespace MobileSandbox.Views
-{
- public class CustomNotificationView : UserControl
- {
- public CustomNotificationView()
- {
- this.InitializeComponent();
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- }
-}
diff --git a/samples/PlatformSanityChecks/PlatformSanityChecks.csproj b/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
index 40efe818d8..faafd6365f 100644
--- a/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
+++ b/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
@@ -2,7 +2,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/samples/Previewer/Previewer.csproj b/samples/Previewer/Previewer.csproj
index b572c3e4f8..dcc727db8a 100644
--- a/samples/Previewer/Previewer.csproj
+++ b/samples/Previewer/Previewer.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/samples/ReactiveUIDemo/ReactiveUIDemo.csproj b/samples/ReactiveUIDemo/ReactiveUIDemo.csproj
index 33ec820889..00f470fd79 100644
--- a/samples/ReactiveUIDemo/ReactiveUIDemo.csproj
+++ b/samples/ReactiveUIDemo/ReactiveUIDemo.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
enable
diff --git a/samples/RemoteDemo/RemoteDemo.csproj b/samples/RemoteDemo/RemoteDemo.csproj
index 607222c2e2..8c479b1093 100644
--- a/samples/RemoteDemo/RemoteDemo.csproj
+++ b/samples/RemoteDemo/RemoteDemo.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/samples/RenderDemo/RenderDemo.csproj b/samples/RenderDemo/RenderDemo.csproj
index b37ecf01b9..648f7d3e0c 100644
--- a/samples/RenderDemo/RenderDemo.csproj
+++ b/samples/RenderDemo/RenderDemo.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/samples/SafeAreaDemo.Android/SafeAreaDemo.Android.csproj b/samples/SafeAreaDemo.Android/SafeAreaDemo.Android.csproj
index cc182b2b56..413bb8333e 100644
--- a/samples/SafeAreaDemo.Android/SafeAreaDemo.Android.csproj
+++ b/samples/SafeAreaDemo.Android/SafeAreaDemo.Android.csproj
@@ -1,14 +1,14 @@
Exe
- net7.0-android
- 21
+ $(AvsCurrentAndroidTargetFramework)
+ $(AvsMinSupportedAndroidVersion)
enable
com.avalonia.safeareademo
1
1.0
apk
- False
+ false
diff --git a/samples/SafeAreaDemo.Desktop/SafeAreaDemo.Desktop.csproj b/samples/SafeAreaDemo.Desktop/SafeAreaDemo.Desktop.csproj
index a3b020d531..b3b48afcb9 100644
--- a/samples/SafeAreaDemo.Desktop/SafeAreaDemo.Desktop.csproj
+++ b/samples/SafeAreaDemo.Desktop/SafeAreaDemo.Desktop.csproj
@@ -1,9 +1,7 @@
WinExe
-
- net7.0
+ $(AvsCurrentTargetFramework)
enable
true
diff --git a/samples/SafeAreaDemo.iOS/Info.plist b/samples/SafeAreaDemo.iOS/Info.plist
index 7ba449d525..a123d3b19f 100644
--- a/samples/SafeAreaDemo.iOS/Info.plist
+++ b/samples/SafeAreaDemo.iOS/Info.plist
@@ -12,8 +12,6 @@
1.0
LSRequiresIPhoneOS
- MinimumOSVersion
- 10.0
UIDeviceFamily
1
diff --git a/samples/SafeAreaDemo.iOS/SafeAreaDemo.iOS.csproj b/samples/SafeAreaDemo.iOS/SafeAreaDemo.iOS.csproj
index 3fc1113011..2f16e335de 100644
--- a/samples/SafeAreaDemo.iOS/SafeAreaDemo.iOS.csproj
+++ b/samples/SafeAreaDemo.iOS/SafeAreaDemo.iOS.csproj
@@ -1,8 +1,8 @@
Exe
- net7.0-ios
- 10.0
+ $(AvsCurrentIOSTargetFramework)
+ $(AvsMinSupportedIOSVersion)
manual
enable
diff --git a/samples/SafeAreaDemo/SafeAreaDemo.csproj b/samples/SafeAreaDemo/SafeAreaDemo.csproj
index f8eca5f5ba..4a1e47015b 100644
--- a/samples/SafeAreaDemo/SafeAreaDemo.csproj
+++ b/samples/SafeAreaDemo/SafeAreaDemo.csproj
@@ -1,8 +1,7 @@
- net7.0
+ $(AvsCurrentTargetFramework)
enable
- latest
true
diff --git a/samples/Sandbox/Sandbox.csproj b/samples/Sandbox/Sandbox.csproj
index fac565b55a..d1a654e1ba 100644
--- a/samples/Sandbox/Sandbox.csproj
+++ b/samples/Sandbox/Sandbox.csproj
@@ -2,7 +2,7 @@
WinExe
- net6.0
+ $(AvsCurrentTargetFramework)
true
true
diff --git a/samples/MobileSandbox/App.xaml b/samples/SingleProjectSandbox/App.axaml
similarity index 62%
rename from samples/MobileSandbox/App.xaml
rename to samples/SingleProjectSandbox/App.axaml
index 6fb6ae297e..ec266fd6c6 100644
--- a/samples/MobileSandbox/App.xaml
+++ b/samples/SingleProjectSandbox/App.axaml
@@ -1,8 +1,7 @@
+ Name="Single Project Sandbox"
+ x:Class="SingleProjectSandbox.App">
diff --git a/samples/SingleProjectSandbox/App.axaml.cs b/samples/SingleProjectSandbox/App.axaml.cs
new file mode 100644
index 0000000000..0c26e3ab0b
--- /dev/null
+++ b/samples/SingleProjectSandbox/App.axaml.cs
@@ -0,0 +1,31 @@
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+
+namespace SingleProjectSandbox;
+
+public class App : Application
+{
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .LogToTrace();
+
+ public override void Initialize()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
+ {
+ desktopLifetime.MainWindow = new MainWindow();
+ }
+ else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime)
+ {
+ singleViewLifetime.MainView = new MainView();
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
+}
diff --git a/samples/MobileSandbox/MainView.xaml b/samples/SingleProjectSandbox/MainView.axaml
similarity index 83%
rename from samples/MobileSandbox/MainView.xaml
rename to samples/SingleProjectSandbox/MainView.axaml
index ccdfb090d2..e1764b0795 100644
--- a/samples/MobileSandbox/MainView.xaml
+++ b/samples/SingleProjectSandbox/MainView.axaml
@@ -1,8 +1,8 @@
-
+ xmlns:local="using:SingleProjectSandbox"
+ x:DataType="local:MainView">
diff --git a/samples/SingleProjectSandbox/MainView.axaml.cs b/samples/SingleProjectSandbox/MainView.axaml.cs
new file mode 100644
index 0000000000..32f519e398
--- /dev/null
+++ b/samples/SingleProjectSandbox/MainView.axaml.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Windows.Input;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace SingleProjectSandbox;
+
+public partial class MainView : UserControl
+{
+ public MainView()
+ {
+ InitializeComponent();
+ }
+
+ public void ButtonCommand()
+ {
+ Console.WriteLine("Button pressed");
+ }
+}
diff --git a/samples/MobileSandbox/MainWindow.xaml b/samples/SingleProjectSandbox/MainWindow.axaml
similarity index 56%
rename from samples/MobileSandbox/MainWindow.xaml
rename to samples/SingleProjectSandbox/MainWindow.axaml
index 97ef98f028..659da647c6 100644
--- a/samples/MobileSandbox/MainWindow.xaml
+++ b/samples/SingleProjectSandbox/MainWindow.axaml
@@ -1,12 +1,10 @@
+ x:Class="SingleProjectSandbox.MainWindow">
diff --git a/samples/SingleProjectSandbox/MainWindow.axaml.cs b/samples/SingleProjectSandbox/MainWindow.axaml.cs
new file mode 100644
index 0000000000..f683fa7324
--- /dev/null
+++ b/samples/SingleProjectSandbox/MainWindow.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace SingleProjectSandbox;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/samples/MobileSandbox.Android/Properties/AndroidManifest.xml b/samples/SingleProjectSandbox/Platforms/Android/AndroidManifest.xml
similarity index 70%
rename from samples/MobileSandbox.Android/Properties/AndroidManifest.xml
rename to samples/SingleProjectSandbox/Platforms/Android/AndroidManifest.xml
index 346db0ef58..449734f268 100644
--- a/samples/MobileSandbox.Android/Properties/AndroidManifest.xml
+++ b/samples/SingleProjectSandbox/Platforms/Android/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/samples/SingleProjectSandbox/Platforms/Android/MainActivity.cs b/samples/SingleProjectSandbox/Platforms/Android/MainActivity.cs
new file mode 100644
index 0000000000..a075f90ee7
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Android/MainActivity.cs
@@ -0,0 +1,15 @@
+using Android.App;
+using Android.Content.PM;
+using Avalonia;
+using Avalonia.Android;
+
+namespace SingleProjectSandbox;
+
+[Activity(Label = "SingleProjectSandbox.Android", Theme = "@style/Theme.AppCompat.NoActionBar", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)]
+public class MainActivity : AvaloniaMainActivity
+{
+ protected override AppBuilder CreateAppBuilder()
+ {
+ return App.BuildAvaloniaApp().UseAndroid();
+ }
+}
diff --git a/samples/MobileSandbox.Browser/Program.cs b/samples/SingleProjectSandbox/Platforms/Browser/Program.cs
similarity index 54%
rename from samples/MobileSandbox.Browser/Program.cs
rename to samples/SingleProjectSandbox/Platforms/Browser/Program.cs
index cdd986d6e8..48b64790cc 100644
--- a/samples/MobileSandbox.Browser/Program.cs
+++ b/samples/SingleProjectSandbox/Platforms/Browser/Program.cs
@@ -1,19 +1,15 @@
using System.Runtime.Versioning;
using System.Threading.Tasks;
-using Avalonia;
using Avalonia.Browser;
-using MobileSandbox;
+using SingleProjectSandbox;
[assembly:SupportedOSPlatform("browser")]
-internal partial class Program
+internal static class Program
{
public static async Task Main(string[] args)
{
- await BuildAvaloniaApp()
+ await App.BuildAvaloniaApp()
.StartBrowserAppAsync("out");
}
-
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure();
}
diff --git a/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/Logo.svg b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/Logo.svg
new file mode 100644
index 0000000000..2560af46cf
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/Logo.svg
@@ -0,0 +1,5 @@
+
diff --git a/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/app.css b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/app.css
new file mode 100644
index 0000000000..77f2051221
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/app.css
@@ -0,0 +1,38 @@
+/* HTML styles for the splash screen */
+.avalonia-splash {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ background: #1b2a4e;
+ font-family: 'Nunito', sans-serif;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ pointer-events: none;
+}
+
+.avalonia-splash h2 {
+ font-size: 1.5rem;
+ color: #8b44ac;
+}
+
+.avalonia-splash a {
+ color: white;
+ text-decoration: none;
+ font-size: 2.5rem;
+ display: block;
+}
+
+.avalonia-splash img {
+ opacity: 0.05;
+ height: 35%;
+ position: absolute;
+ right: 3%;
+ bottom: 3%;
+}
+
+.avalonia-splash.splash-close {
+ transition: opacity 200ms, display 200ms;
+ display: none;
+ opacity: 0;
+}
diff --git a/samples/MobileSandbox.Browser/favicon.ico b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/favicon.ico
similarity index 100%
rename from samples/MobileSandbox.Browser/favicon.ico
rename to samples/SingleProjectSandbox/Platforms/Browser/wwwroot/favicon.ico
diff --git a/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/index.html b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/index.html
new file mode 100644
index 0000000000..5971018b2c
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+ SingleProjectSandbox.Browser
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
diff --git a/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/main.js b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/main.js
new file mode 100644
index 0000000000..a9de29f060
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Browser/wwwroot/main.js
@@ -0,0 +1,13 @@
+import { dotnet } from './_framework/dotnet.js'
+
+const is_browser = typeof window != "undefined";
+if (!is_browser) throw new Error(`Expected to be running in a browser`);
+
+const dotnetRuntime = await dotnet
+ .withDiagnosticTracing(false)
+ .withApplicationArgumentsFromQuery()
+ .create();
+
+const config = dotnetRuntime.getConfig();
+
+await dotnetRuntime.runMain(config.mainAssemblyName, [window.location.search]);
diff --git a/samples/SingleProjectSandbox/Platforms/Desktop/Program.cs b/samples/SingleProjectSandbox/Platforms/Desktop/Program.cs
new file mode 100644
index 0000000000..ae8a7a2526
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Desktop/Program.cs
@@ -0,0 +1,18 @@
+using System;
+using Avalonia;
+
+namespace SingleProjectSandbox;
+
+internal static class Program
+{
+ [STAThread]
+ static int Main(string[] args) =>
+ BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
+
+ ///
+ /// This method is needed for IDE previewer infrastructure
+ ///
+ public static AppBuilder BuildAvaloniaApp()
+ => App.BuildAvaloniaApp().UsePlatformDetect();
+}
diff --git a/samples/MobileSandbox.Desktop/app.manifest b/samples/SingleProjectSandbox/Platforms/Desktop/app.manifest
similarity index 100%
rename from samples/MobileSandbox.Desktop/app.manifest
rename to samples/SingleProjectSandbox/Platforms/Desktop/app.manifest
diff --git a/samples/SingleProjectSandbox/Platforms/Tizen/Main.cs b/samples/SingleProjectSandbox/Platforms/Tizen/Main.cs
new file mode 100644
index 0000000000..94e621ec25
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Tizen/Main.cs
@@ -0,0 +1,16 @@
+using Avalonia;
+using Avalonia.Tizen;
+
+namespace SingleProjectSandbox;
+
+internal class Program : NuiTizenApplication
+{
+ protected override AppBuilder CreateAppBuilder() =>
+ App.BuildAvaloniaApp().UseTizen();
+
+ internal static void Main(string[] args)
+ {
+ var app = new Program();
+ app.Run(args);
+ }
+}
diff --git a/samples/SingleProjectSandbox/Platforms/Tizen/shared/res/Avalonia.png b/samples/SingleProjectSandbox/Platforms/Tizen/shared/res/Avalonia.png
new file mode 100644
index 0000000000..ea0bb4986f
Binary files /dev/null and b/samples/SingleProjectSandbox/Platforms/Tizen/shared/res/Avalonia.png differ
diff --git a/samples/SingleProjectSandbox/Platforms/Tizen/tizen-manifest.xml b/samples/SingleProjectSandbox/Platforms/Tizen/tizen-manifest.xml
new file mode 100644
index 0000000000..3ba13e8946
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/Tizen/tizen-manifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Avalonia.png
+
+
+
+
+
+ http://tizen.org/privilege/appdir.shareddata
+ http://tizen.org/privilege/appmanager.launch
+ http://tizen.org/privilege/externalstorage
+ http://tizen.org/privilege/externalstorage.appdata
+ http://tizen.org/privilege/internet
+ http://tizen.org/privilege/network.get
+
+
+
+ http://tizen.org/feature/opengles.surfaceless_context
+ http://tizen.org/feature/opengles.version.2_0
+
diff --git a/samples/SingleProjectSandbox/Platforms/iOS/AppDelegate.cs b/samples/SingleProjectSandbox/Platforms/iOS/AppDelegate.cs
new file mode 100644
index 0000000000..ea6cd1e2e7
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/iOS/AppDelegate.cs
@@ -0,0 +1,24 @@
+using Foundation;
+using Avalonia;
+using Avalonia.iOS;
+using UIKit;
+
+namespace SingleProjectSandbox;
+
+// The UIApplicationDelegate for the application. This class is responsible for launching the
+// User Interface of the application, as well as listening (and optionally responding) to
+// application events from iOS.
+[Register("AppDelegate")]
+public class AppDelegate : AvaloniaAppDelegate
+{
+ protected override AppBuilder CreateAppBuilder() =>
+ App.BuildAvaloniaApp().UseiOS();
+
+ // This is the main entry point of the application.
+ internal static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+}
diff --git a/samples/MobileSandbox.iOS/Entitlements.plist b/samples/SingleProjectSandbox/Platforms/iOS/Entitlements.plist
similarity index 100%
rename from samples/MobileSandbox.iOS/Entitlements.plist
rename to samples/SingleProjectSandbox/Platforms/iOS/Entitlements.plist
diff --git a/samples/MobileSandbox.iOS/Info.plist b/samples/SingleProjectSandbox/Platforms/iOS/Info.plist
similarity index 96%
rename from samples/MobileSandbox.iOS/Info.plist
rename to samples/SingleProjectSandbox/Platforms/iOS/Info.plist
index ff939d5592..c8869ec2f4 100644
--- a/samples/MobileSandbox.iOS/Info.plist
+++ b/samples/SingleProjectSandbox/Platforms/iOS/Info.plist
@@ -12,8 +12,6 @@
1.0
LSRequiresIPhoneOS
- MinimumOSVersion
- 13.0
UIDeviceFamily
1
diff --git a/samples/MobileSandbox.iOS/Resources/LaunchScreen.xib b/samples/SingleProjectSandbox/Platforms/iOS/Resources/LaunchScreen.xib
similarity index 100%
rename from samples/MobileSandbox.iOS/Resources/LaunchScreen.xib
rename to samples/SingleProjectSandbox/Platforms/iOS/Resources/LaunchScreen.xib
diff --git a/samples/SingleProjectSandbox/Platforms/macOS/Entitlements.plist b/samples/SingleProjectSandbox/Platforms/macOS/Entitlements.plist
new file mode 100644
index 0000000000..9ae599370b
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/macOS/Entitlements.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/samples/SingleProjectSandbox/Platforms/macOS/Info.plist b/samples/SingleProjectSandbox/Platforms/macOS/Info.plist
new file mode 100644
index 0000000000..e04ff37c74
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/macOS/Info.plist
@@ -0,0 +1,18 @@
+
+
+
+
+ CFBundleShortVersionString
+ 1.0
+ CFBundleDevelopmentRegion
+ en
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ NSPrincipalClass
+ NSApplication
+
+
diff --git a/samples/SingleProjectSandbox/Platforms/macOS/Program.cs b/samples/SingleProjectSandbox/Platforms/macOS/Program.cs
new file mode 100644
index 0000000000..c13f799a38
--- /dev/null
+++ b/samples/SingleProjectSandbox/Platforms/macOS/Program.cs
@@ -0,0 +1,13 @@
+using Avalonia;
+
+namespace SingleProjectSandbox;
+
+internal static class Program
+{
+ internal static int Main(string[] args) =>
+ App.BuildAvaloniaApp()
+ .UseAvaloniaNative()
+ .UseSkia()
+ .StartWithClassicDesktopLifetime(args);
+}
+
diff --git a/samples/SingleProjectSandbox/SingleProjectSandbox.csproj b/samples/SingleProjectSandbox/SingleProjectSandbox.csproj
new file mode 100644
index 0000000000..dd3b9f170b
--- /dev/null
+++ b/samples/SingleProjectSandbox/SingleProjectSandbox.csproj
@@ -0,0 +1,36 @@
+
+
+ $(AvsCurrentTargetFramework);$(AvsCurrentAndroidTargetFramework);$(AvsCurrentBrowserTargetFramework)
+ $(TargetFrameworks);$(AvsCurrentIOSTargetFramework)
+ $(TargetFrameworks);$(AvsCurrentMacOSTargetFramework)
+ $(TargetFrameworks);$(AvsCurrentTizenTargetFramework)
+ Exe
+ true
+ enable
+ true
+
+
+
+ true
+ Single Project Sandbox
+ Avalonia.SingleProjectSandbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/MobileSandbox.Browser/runtimeconfig.template.json b/samples/SingleProjectSandbox/runtimeconfig.template.json
similarity index 100%
rename from samples/MobileSandbox.Browser/runtimeconfig.template.json
rename to samples/SingleProjectSandbox/runtimeconfig.template.json
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml
new file mode 100644
index 0000000000..856100f059
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml.cs
new file mode 100644
index 0000000000..7dfdcded75
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/App.axaml.cs
@@ -0,0 +1,23 @@
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+
+namespace UnloadableAssemblyLoadContext;
+
+public partial class App : Application
+{
+ public override void Initialize()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ desktop.MainWindow = new MainWindow();
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/AssemblyLoadContextH.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/AssemblyLoadContextH.cs
new file mode 100644
index 0000000000..780be4d4b8
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/AssemblyLoadContextH.cs
@@ -0,0 +1,57 @@
+#region
+
+using System;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Loader;
+using Avalonia;
+using Avalonia.Platform;
+using Avalonia.Styling;
+
+#endregion
+
+namespace UnloadableAssemblyLoadContext;
+
+public class AssemblyLoadContextH : AssemblyLoadContext
+{
+ private readonly AssemblyDependencyResolver _resolver;
+
+ public AssemblyLoadContextH(string pluginPath, string name) : base(isCollectible: true, name: name)
+ {
+ _resolver = new AssemblyDependencyResolver(pluginPath);
+ Unloading += (sender) =>
+ {
+ AvaloniaPropertyRegistry.Instance.UnregisterByModule(sender.Assemblies.First().DefinedTypes);
+ Application.Current.Styles.Remove(MainWindow.Style);
+ AssetLoader.InvalidateAssemblyCache(sender.Assemblies.First().GetName().Name);
+ MainWindow.Style= null;
+ };
+ }
+
+ protected override Assembly Load(AssemblyName assemblyName)
+ {
+ var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
+ if (assemblyPath != null)
+ {
+ if (assemblyPath.EndsWith("WinRT.Runtime.dll") || assemblyPath.EndsWith("Microsoft.Windows.SDK.NET.dll")|| assemblyPath.EndsWith("Avalonia.Controls.dll")|| assemblyPath.EndsWith("Avalonia.Base.dll")|| assemblyPath.EndsWith("Avalonia.Markup.Xaml.dll"))
+ {
+ return null;
+ }
+
+ return LoadFromAssemblyPath(assemblyPath);
+ }
+
+ return null;
+ }
+
+ protected override IntPtr LoadUnmanagedDll(string unmanagedDllName)
+ {
+ var libraryPath = _resolver.ResolveUnmanagedDllToPath(unmanagedDllName);
+ if (libraryPath != null)
+ {
+ return LoadUnmanagedDllFromPath(libraryPath);
+ }
+
+ return IntPtr.Zero;
+ }
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml
new file mode 100644
index 0000000000..54e9585a57
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml
@@ -0,0 +1,9 @@
+
+ Welcome to Avalonia!
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml.cs
new file mode 100644
index 0000000000..959740da59
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/MainWindow.axaml.cs
@@ -0,0 +1,134 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Reflection;
+using System.Threading;
+using System.Threading.Tasks;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+using Avalonia.Markup.Xaml.Styling;
+using Avalonia.Markup.Xaml.XamlIl.Runtime;
+using Avalonia.Platform;
+using Avalonia.Platform.Internal;
+using Avalonia.Styling;
+using Avalonia.Threading;
+using Avalonia.VisualTree;
+
+namespace UnloadableAssemblyLoadContext;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ if (Debugger.IsAttached)
+ {
+ this.AttachDevTools();
+ }
+ }
+ private PlugTool _plugTool;
+ protected override void OnOpened(EventArgs e)
+ {
+ base.OnOpened(e);
+ test();
+ //Content = _plugTool.FindControl("UnloadableAssemblyLoadContextPlug.TestControl");
+
+
+ }
+ public T? GetChildOfType(Control control)
+ where T : Control
+ {
+ var queue = new Queue();
+ queue.Enqueue(control);
+
+ while (queue.Count > 0)
+ {
+ var currentControl = queue.Dequeue();
+ foreach (var child in currentControl.GetVisualChildren())
+ {
+ var childControl = child as Control;
+ if (childControl != null)
+ {
+ var childControlStyles = childControl.Styles;
+ if (childControlStyles.Count>1)
+ {
+
+ }
+ queue.Enqueue(childControl);
+ }
+ }
+ }
+
+ return null;
+ }
+ protected override void OnClosed(EventArgs e)
+ {
+ base.OnClosed(e);
+ GetChildOfType(this);
+
+
+ Thread.CurrentThread.IsBackground = false;
+ var weakReference = _plugTool.Unload();
+ while (weakReference.IsAlive)
+ {
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ Thread.Sleep(100);
+ }
+
+ Console.WriteLine("Done");
+
+
+ }
+
+ public static IStyle Style;
+ public void test(){
+
+ //Notice : 你可以删除UnloadableAssemblyLoadContextPlug.dll所在文件夹中有关Avalonia的所有Dll,但这不是必须的
+ //Notice : You can delete all Dlls about Avalonia in the folder where UnloadableAssemblyLoadContextPlug.dll is located, but this is not necessary
+ FileInfo fileInfo = new FileInfo("..\\..\\..\\..\\UnloadableAssemblyLoadContextPlug\\bin\\Debug\\net7.0\\UnloadableAssemblyLoadContextPlug.dll");
+ var AssemblyLoadContextH = new AssemblyLoadContextH(fileInfo.FullName,"test");
+
+ var assembly = AssemblyLoadContextH.LoadFromAssemblyPath(fileInfo.FullName);
+ var assemblyDescriptorResolver =
+ _plugTool=new PlugTool();
+ _plugTool.AssemblyLoadContextH = AssemblyLoadContextH;
+
+ var styles = new Styles();
+ var styleInclude = new StyleInclude(new Uri("avares://UnloadableAssemblyLoadContextPlug", UriKind.Absolute));
+ styleInclude.Source=new Uri("ControlStyle.axaml", UriKind.Relative);
+ styles.Add(styleInclude);
+ Style = styles;
+ Application.Current.Styles.Add(styles);
+ foreach (var type in assembly.GetTypes())
+ {
+ if (type.FullName=="AvaloniaPlug.Window1")
+ {
+ //创建type实例
+ Window instance = (Window)type.GetConstructor( new Type[0]).Invoke(null);
+
+ Dispatcher.UIThread.InvokeAsync(() =>
+ {
+ instance.Show();
+ instance.Close();
+
+ }).Wait();
+
+ instance = null;
+
+ //instance.Show();
+ }
+
+ }
+
+ }
+
+
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/PlugTool.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/PlugTool.cs
new file mode 100644
index 0000000000..fb5cc28265
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/PlugTool.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Linq;
+using Avalonia.Controls;
+
+namespace UnloadableAssemblyLoadContext;
+
+public class PlugTool
+{
+ public AssemblyLoadContextH AssemblyLoadContextH;
+ public WeakReference Unload()
+ {
+ var weakReference = new WeakReference(AssemblyLoadContextH);
+ AssemblyLoadContextH.Unload();
+ AssemblyLoadContextH = null;
+ return weakReference;
+ }
+
+ public Control? FindControl(string type)
+ {
+ var type1 = AssemblyLoadContextH.Assemblies.
+ FirstOrDefault(x => x.GetName().Name == "UnloadableAssemblyLoadContextPlug")?.
+ GetType(type);
+ if (type1.IsSubclassOf(typeof(Control)))
+ {
+ var constructorInfo = type1.GetConstructor( Type.EmptyTypes).Invoke(null) as Control;
+ return constructorInfo;
+ }
+
+ return null;
+ }
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Program.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Program.cs
new file mode 100644
index 0000000000..1aced7f099
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Program.cs
@@ -0,0 +1,21 @@
+using System;
+using Avalonia;
+
+namespace UnloadableAssemblyLoadContext;
+
+class Program
+{
+ // Initialization code. Don't use any Avalonia, third-party APIs or any
+ // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
+ // yet and stuff might break.
+ [STAThread]
+ public static void Main(string[] args) => BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
+
+ // Avalonia configuration, don't remove; also used by visual designer.
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .WithInterFont()
+ .LogToTrace();
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Styles1.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Styles1.axaml
new file mode 100644
index 0000000000..958ee15a50
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/Styles1.axaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext.csproj b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext.csproj
new file mode 100644
index 0000000000..e39a35a294
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext.csproj
@@ -0,0 +1,38 @@
+
+
+ WinExe
+ net7.0
+ enable
+ true
+ app.manifest
+ true
+ true
+
+
+
+
+ %(Filename)
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/app.manifest b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/app.manifest
new file mode 100644
index 0000000000..64334402c8
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContext/app.manifest
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/ControlStyle.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/ControlStyle.axaml
new file mode 100644
index 0000000000..888e73c2bb
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/ControlStyle.axaml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Program.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Program.cs
new file mode 100644
index 0000000000..60c37ec32f
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Program.cs
@@ -0,0 +1,9 @@
+namespace AvaloniaPlug;
+
+class Program
+{
+ // Initialization code. Don't use any Avalonia, third-party APIs or any
+ // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
+ // yet and stuff might break.
+ private static string test = "23";
+}
\ No newline at end of file
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml
new file mode 100644
index 0000000000..a0dfedaa62
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml.cs
new file mode 100644
index 0000000000..01fdf5a832
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/TestControl.axaml.cs
@@ -0,0 +1,10 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
+
+namespace UnloadableAssemblyLoadContextPlug;
+
+public class TestControl : TemplatedControl
+{
+}
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj
new file mode 100644
index 0000000000..564c169818
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/UnloadableAssemblyLoadContextPlug.csproj
@@ -0,0 +1,51 @@
+
+
+ net7.0
+ enable
+ true
+ app.manifest
+ true
+ UnloadableAssemblyLoadContextPlug
+ UnloadableAssemblyLoadContextPlug
+
+
+
+
+
+
+
+ %(Filename)
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml
new file mode 100644
index 0000000000..83a389f31e
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml
@@ -0,0 +1,12 @@
+
+
+
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml.cs
new file mode 100644
index 0000000000..8236d1a338
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1.axaml.cs
@@ -0,0 +1,22 @@
+using System.Diagnostics;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaPlug;
+
+namespace UnloadableAssemblyLoadContextPlug;
+
+public partial class Window1 : Window
+{
+ public Window1()
+ {
+ InitializeComponent();
+ DataContext=new Window1ViewModel();
+ }
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+
+
+ }
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1ViewModel.cs b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1ViewModel.cs
new file mode 100644
index 0000000000..7d6bee2c61
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/Window1ViewModel.cs
@@ -0,0 +1,8 @@
+
+
+namespace UnloadableAssemblyLoadContextPlug;
+
+public partial class Window1ViewModel
+{
+ public string Text { get; set; } = "12";
+}
diff --git a/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/app.manifest b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/app.manifest
new file mode 100644
index 0000000000..39c2b00338
--- /dev/null
+++ b/samples/UnloadableAssemblyLoadContext/UnloadableAssemblyLoadContextPlug/app.manifest
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/VirtualizationDemo/VirtualizationDemo.csproj b/samples/VirtualizationDemo/VirtualizationDemo.csproj
index 3ac7aab589..32bc379f42 100644
--- a/samples/VirtualizationDemo/VirtualizationDemo.csproj
+++ b/samples/VirtualizationDemo/VirtualizationDemo.csproj
@@ -1,7 +1,7 @@
WinExe
- net6.0
+ $(AvsCurrentTargetFramework)
true
diff --git a/samples/interop/WindowsInteropTest/WindowsInteropTest.csproj b/samples/interop/WindowsInteropTest/WindowsInteropTest.csproj
index 0f11ad7442..533aacf382 100644
--- a/samples/interop/WindowsInteropTest/WindowsInteropTest.csproj
+++ b/samples/interop/WindowsInteropTest/WindowsInteropTest.csproj
@@ -1,7 +1,7 @@
WinExe
- net461;net6.0-windows
+ net461;$(AvsCurrentWindowsTargetFramework)
true
true
true
diff --git a/src/Android/Avalonia.Android/AndroidInputMethod.cs b/src/Android/Avalonia.Android/AndroidInputMethod.cs
index f708d6936c..0c487046a9 100644
--- a/src/Android/Avalonia.Android/AndroidInputMethod.cs
+++ b/src/Android/Avalonia.Android/AndroidInputMethod.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics.CodeAnalysis;
using Android.Content;
using Android.Runtime;
using Android.Text;
@@ -13,8 +14,9 @@ namespace Avalonia.Android
{
public View View { get; }
- public TextInputMethodClient Client { get; }
+ public TextInputMethodClient? Client { get; }
+ [MemberNotNullWhen(true, nameof(Client))]
public bool IsActive { get; }
public InputMethodManager IMM { get; }
@@ -38,8 +40,8 @@ namespace Avalonia.Android
{
private readonly TView _host;
private readonly InputMethodManager _imm;
- private TextInputMethodClient _client;
- private AvaloniaInputConnection _inputConnection;
+ private TextInputMethodClient? _client;
+ private AvaloniaInputConnection? _inputConnection;
public AndroidInputMethod(TView host)
{
@@ -47,18 +49,20 @@ namespace Avalonia.Android
throw new InvalidOperationException("Host should return true from OnCheckIsTextEditor()");
_host = host;
- _imm = host.Context.GetSystemService(Context.InputMethodService).JavaCast();
+ _imm = host.Context?.GetSystemService(Context.InputMethodService).JavaCast()
+ ?? throw new InvalidOperationException("Context.InputMethodService is expected to be not null.");
_host.Focusable = true;
_host.FocusableInTouchMode = true;
- _host.ViewTreeObserver.AddOnGlobalLayoutListener(new SoftKeyboardListener(_host));
}
public View View => _host;
+ [MemberNotNullWhen(true, nameof(Client))]
+ [MemberNotNullWhen(true, nameof(_client))]
public bool IsActive => Client != null;
- public TextInputMethodClient Client => _client;
+ public TextInputMethodClient? Client => _client;
public InputMethodManager IMM => _imm;
@@ -67,7 +71,7 @@ namespace Avalonia.Android
}
- public void SetClient(TextInputMethodClient client)
+ public void SetClient(TextInputMethodClient? client)
{
_client = client;
@@ -104,46 +108,48 @@ namespace Avalonia.Android
}
}
- private void _client_SelectionChanged(object sender, EventArgs e)
+ private void _client_SelectionChanged(object? sender, EventArgs e)
{
- if (_inputConnection.IsInBatchEdit)
+ if (_inputConnection is null || _inputConnection.IsInBatchEdit)
return;
OnSelectionChanged();
}
private void OnSelectionChanged()
{
- if (Client is null)
+ if (Client is null || _inputConnection is null)
{
return;
}
- var selection = Client.Selection;
+ OnSurroundingTextChanged();
- _imm.UpdateSelection(_host, selection.Start, selection.End, selection.Start, selection.End);
+ var selection = Client.Selection;
_inputConnection.SetSelection(selection.Start, selection.End);
+
+ var composition = _inputConnection.EditableWrapper.CurrentComposition;
+
+ _imm.UpdateSelection(_host, selection.Start, selection.End, composition.Start, composition.End);
}
- private void _client_SurroundingTextChanged(object sender, EventArgs e)
+ private void _client_SurroundingTextChanged(object? sender, EventArgs e)
{
- if (_inputConnection.IsInBatchEdit)
+ if (_inputConnection is null || _inputConnection.IsInBatchEdit)
return;
OnSurroundingTextChanged();
}
public void OnBatchEditedEnded()
{
- if (_inputConnection.IsInBatchEdit)
+ if (_inputConnection is null || _inputConnection.IsInBatchEdit)
return;
-
- OnSurroundingTextChanged();
OnSelectionChanged();
}
private void OnSurroundingTextChanged()
{
- if(_client is null)
+ if(_client is null || _inputConnection is null)
{
return;
}
@@ -200,7 +206,7 @@ namespace Avalonia.Android
_host.InitEditorInfo((topLevel, outAttrs) =>
{
if (_client == null)
- return null;
+ return null!;
_inputConnection = new AvaloniaInputConnection(topLevel, this);
diff --git a/src/Android/Avalonia.Android/AndroidPlatform.cs b/src/Android/Avalonia.Android/AndroidPlatform.cs
index b991d8067f..d9f3419850 100644
--- a/src/Android/Avalonia.Android/AndroidPlatform.cs
+++ b/src/Android/Avalonia.Android/AndroidPlatform.cs
@@ -1,17 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Avalonia.Controls;
using Avalonia.Android;
using Avalonia.Android.Platform;
using Avalonia.Android.Platform.Input;
+using Avalonia.Android.Platform.Vulkan;
+using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.OpenGL.Egl;
using Avalonia.Platform;
using Avalonia.Rendering;
using Avalonia.Rendering.Composition;
-using Avalonia.OpenGL;
+using Avalonia.Vulkan;
namespace Avalonia
{
@@ -39,7 +40,12 @@ namespace Avalonia
///
/// Enables android EGL rendering.
///
- Egl = 2
+ Egl = 2,
+
+ ///
+ /// Enables Vulkan rendering
+ ///
+ Vulkan = 3
}
public sealed class AndroidPlatformOptions
@@ -65,9 +71,9 @@ namespace Avalonia.Android
class AndroidPlatform
{
public static readonly AndroidPlatform Instance = new AndroidPlatform();
- public static AndroidPlatformOptions Options { get; private set; }
+ public static AndroidPlatformOptions? Options { get; private set; }
- internal static Compositor Compositor { get; private set; }
+ internal static Compositor? Compositor { get; private set; }
public static void Initialize()
{
@@ -81,7 +87,8 @@ namespace Avalonia.Android
.Bind().ToConstant(new AndroidThreadingInterface())
.Bind().ToSingleton()
.Bind().ToConstant(new ChoreographerTimer())
- .Bind().ToSingleton();
+ .Bind().ToSingleton()
+ .Bind().ToConstant(new AndroidActivatableLifetime());
var graphics = InitializeGraphics(Options);
if (graphics is not null)
@@ -90,9 +97,10 @@ namespace Avalonia.Android
}
Compositor = new Compositor(graphics);
+ AvaloniaLocator.CurrentMutable.Bind().ToConstant(Compositor);
}
- private static IPlatformGraphics InitializeGraphics(AndroidPlatformOptions opts)
+ private static IPlatformGraphics? InitializeGraphics(AndroidPlatformOptions opts)
{
if (opts.RenderingMode is null || !opts.RenderingMode.Any())
{
@@ -113,6 +121,13 @@ namespace Avalonia.Android
return egl;
}
}
+
+ if (renderingMode == AndroidRenderingMode.Vulkan)
+ {
+ var vulkan = VulkanSupport.TryInitialize(AvaloniaLocator.Current.GetService() ?? new());
+ if (vulkan != null)
+ return vulkan;
+ }
}
throw new InvalidOperationException($"{nameof(AndroidPlatformOptions)}.{nameof(AndroidPlatformOptions.RenderingMode)} has a value of \"{string.Join(", ", opts.RenderingMode)}\", but no options were applied.");
diff --git a/src/Android/Avalonia.Android/AndroidRuntimePlatform.cs b/src/Android/Avalonia.Android/AndroidRuntimePlatform.cs
index f38492005a..8607f6b8c1 100644
--- a/src/Android/Avalonia.Android/AndroidRuntimePlatform.cs
+++ b/src/Android/Avalonia.Android/AndroidRuntimePlatform.cs
@@ -27,7 +27,7 @@ namespace Avalonia
internal class AndroidRuntimePlatform : StandardRuntimePlatform
{
- private static readonly Lazy Info = new(() =>
+ private static readonly Lazy s_info = new(() =>
{
var isDesktop = IsRunningOnDesktop(App.Context);
var isTv = IsRunningOnTv(App.Context);
@@ -41,12 +41,13 @@ namespace Avalonia
});
private static bool IsRunningOnDesktop(Context context) =>
- context.PackageManager.HasSystemFeature("org.chromium.arc") ||
- context.PackageManager.HasSystemFeature("org.chromium.arc.device_management");
+ context.PackageManager is { } packageManager &&
+ (packageManager.HasSystemFeature("org.chromium.arc") ||
+ packageManager.HasSystemFeature("org.chromium.arc.device_management"));
private static bool IsRunningOnTv(Context context) =>
- context.PackageManager.HasSystemFeature(PackageManager.FeatureLeanback);
+ context.PackageManager?.HasSystemFeature(PackageManager.FeatureLeanback) == true;
- public override RuntimePlatformInfo GetRuntimeInfo() => Info.Value;
+ public override RuntimePlatformInfo GetRuntimeInfo() => s_info.Value;
}
}
diff --git a/src/Android/Avalonia.Android/AndroidThreadingInterface.cs b/src/Android/Avalonia.Android/AndroidThreadingInterface.cs
index c85d5b1343..703cc85057 100644
--- a/src/Android/Avalonia.Android/AndroidThreadingInterface.cs
+++ b/src/Android/Avalonia.Android/AndroidThreadingInterface.cs
@@ -14,11 +14,12 @@ namespace Avalonia.Android
internal sealed class AndroidThreadingInterface : IPlatformThreadingInterface
{
private Handler _handler;
- private static Thread s_uiThread;
+ private static Thread? s_uiThread;
public AndroidThreadingInterface()
{
- _handler = new Handler(App.Context.MainLooper);
+ _handler = new Handler(App.Context.MainLooper
+ ?? throw new InvalidOperationException("Application.Context.MainLooper was not expected to be null."));
}
public IDisposable StartTimer(DispatcherPriority priority, TimeSpan interval, Action tick)
@@ -27,7 +28,7 @@ namespace Avalonia.Android
interval = TimeSpan.FromMilliseconds(10);
var stopped = false;
- Timer timer = null;
+ Timer? timer = null;
timer = new Timer(_ =>
{
if (stopped)
@@ -42,7 +43,7 @@ namespace Avalonia.Android
finally
{
if (!stopped)
- timer.Change(interval, Timeout.InfiniteTimeSpan);
+ timer!.Change(interval, Timeout.InfiniteTimeSpan);
}
});
},
@@ -70,9 +71,9 @@ namespace Avalonia.Android
return s_uiThread == Thread.CurrentThread;
var isOnMainThread = OperatingSystem.IsAndroidVersionAtLeast(23)
- ? Looper.MainLooper.IsCurrentThread
- : Looper.MainLooper.Thread.Equals(Java.Lang.Thread.CurrentThread());
- if (isOnMainThread)
+ ? Looper.MainLooper?.IsCurrentThread
+ : Looper.MainLooper?.Thread.Equals(Java.Lang.Thread.CurrentThread());
+ if (isOnMainThread == true)
{
s_uiThread = Thread.CurrentThread;
return true;
@@ -81,6 +82,6 @@ namespace Avalonia.Android
return false;
}
}
- public event Action Signaled;
+ public event Action? Signaled;
}
}
diff --git a/src/Android/Avalonia.Android/AndroidViewControlHandle.cs b/src/Android/Avalonia.Android/AndroidViewControlHandle.cs
index e999d198c6..6d14ea787f 100644
--- a/src/Android/Avalonia.Android/AndroidViewControlHandle.cs
+++ b/src/Android/Avalonia.Android/AndroidViewControlHandle.cs
@@ -1,6 +1,4 @@
-#nullable enable
-
-using System;
+using System;
using Android.Views;
diff --git a/src/Android/Avalonia.Android/Avalonia.Android.csproj b/src/Android/Avalonia.Android/Avalonia.Android.csproj
index be93d99442..170cc088fb 100644
--- a/src/Android/Avalonia.Android/Avalonia.Android.csproj
+++ b/src/Android/Avalonia.Android/Avalonia.Android.csproj
@@ -1,22 +1,24 @@
- net7.0-android33
- 21
+ $(AvsCurrentAndroidTargetFramework)
+ $(AvsMinSupportedAndroidVersion)
true
- true
- portable
Avalonia.Android.Internal
-
-
+
+
+
+
+
+
diff --git a/src/Android/Avalonia.Android/AvaloniaActivity.cs b/src/Android/Avalonia.Android/AvaloniaActivity.cs
new file mode 100644
index 0000000000..d0538b6304
--- /dev/null
+++ b/src/Android/Avalonia.Android/AvaloniaActivity.cs
@@ -0,0 +1,181 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Runtime.Versioning;
+using Android.App;
+using Android.Content;
+using Android.Content.PM;
+using Android.OS;
+using Android.Runtime;
+using Android.Views;
+using AndroidX.AppCompat.App;
+using Avalonia.Android.Platform.Storage;
+using Avalonia.Controls.ApplicationLifetimes;
+
+namespace Avalonia.Android;
+
+///
+/// Common implementation of android activity that is integrated with Avalonia views.
+/// If you need a base class for main activity of Avalonia app, see or .
+///
+public class AvaloniaActivity : AppCompatActivity, IAvaloniaActivity
+{
+ private EventHandler? _onActivated, _onDeactivated;
+ private GlobalLayoutListener? _listener;
+ private object? _content;
+ internal AvaloniaView? _view;
+
+ public Action? ActivityResult { get; set; }
+ public Action? RequestPermissionsResult { get; set; }
+
+ public event EventHandler? BackRequested;
+
+ public object? Content
+ {
+ get => _content;
+ set
+ {
+ if (_content != value)
+ {
+ _content = value;
+ if (_view is not null)
+ {
+ _view.Content = _content;
+ }
+ }
+ }
+ }
+
+ event EventHandler? IAvaloniaActivity.Activated
+ {
+ add { _onActivated += value; }
+ remove { _onActivated -= value; }
+ }
+
+ event EventHandler? IAvaloniaActivity.Deactivated
+ {
+ add { _onDeactivated += value; }
+ remove { _onDeactivated -= value; }
+ }
+
+ [ObsoletedOSPlatform("android33.0")]
+ public override void OnBackPressed()
+ {
+ var eventArgs = new AndroidBackRequestedEventArgs();
+
+ BackRequested?.Invoke(this, eventArgs);
+
+ if (!eventArgs.Handled)
+ {
+ base.OnBackPressed();
+ }
+ }
+
+ protected override void OnCreate(Bundle? savedInstanceState)
+ {
+ InitializeAvaloniaView(_content);
+
+ base.OnCreate(savedInstanceState);
+
+ SetContentView(_view);
+
+ _listener = new GlobalLayoutListener(_view);
+
+ _view.ViewTreeObserver?.AddOnGlobalLayoutListener(_listener);
+
+ // TODO: we probably don't need to create AvaloniaView, if it's just a protocol activation, and main activity is already created.
+ if (Intent?.Data is {} androidUri
+ && androidUri.IsAbsolute
+ && Uri.TryCreate(androidUri.ToString(), UriKind.Absolute, out var uri))
+ {
+ if (uri.Scheme == Uri.UriSchemeFile)
+ {
+ if (AndroidStorageItem.CreateItem(this, androidUri) is { } item)
+ {
+ _onActivated?.Invoke(this, new FileActivatedEventArgs(new [] { item }));
+ }
+ }
+ else
+ {
+ _onActivated?.Invoke(this, new ProtocolActivatedEventArgs(uri));
+ }
+ }
+ }
+
+ protected override void OnStop()
+ {
+ _onDeactivated?.Invoke(this, new ActivatedEventArgs(ActivationKind.Background));
+ base.OnStop();
+ }
+
+ protected override void OnStart()
+ {
+ _onActivated?.Invoke(this, new ActivatedEventArgs(ActivationKind.Background));
+ base.OnStart();
+ }
+
+ protected override void OnResume()
+ {
+ base.OnResume();
+
+ // Android only respects LayoutInDisplayCutoutMode value if it has been set once before window becomes visible.
+ if (OperatingSystem.IsAndroidVersionAtLeast(28) && Window is { Attributes: { } attributes })
+ {
+ attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges;
+ }
+ }
+
+ protected override void OnDestroy()
+ {
+ if (_view is not null)
+ {
+ _view.Content = null;
+ _view.ViewTreeObserver?.RemoveOnGlobalLayoutListener(_listener);
+ _view.Dispose();
+ _view = null;
+ }
+
+ base.OnDestroy();
+ }
+
+ protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent? data)
+ {
+ base.OnActivityResult(requestCode, resultCode, data);
+
+ ActivityResult?.Invoke(requestCode, resultCode, data);
+ }
+
+ [SupportedOSPlatform("android23.0")]
+ public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
+ {
+ base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
+
+ RequestPermissionsResult?.Invoke(requestCode, permissions, grantResults);
+ }
+
+ [MemberNotNull(nameof(_view))]
+ private protected virtual void InitializeAvaloniaView(object? initialContent)
+ {
+ if (Avalonia.Application.Current is null)
+ {
+ throw new InvalidOperationException(
+ "Avalonia Application was not initialized. Make sure you have created AvaloniaMainActivity.");
+ }
+
+ _view = new AvaloniaView(this) { Content = initialContent };
+ }
+
+ private class GlobalLayoutListener : Java.Lang.Object, ViewTreeObserver.IOnGlobalLayoutListener
+ {
+ private readonly AvaloniaView _view;
+
+ public GlobalLayoutListener(AvaloniaView view)
+ {
+ _view = view;
+ }
+
+ public void OnGlobalLayout()
+ {
+ _view.TopLevelImpl?.Resize(_view.TopLevelImpl.ClientSize);
+ }
+ }
+}
diff --git a/src/Android/Avalonia.Android/AvaloniaMainActivity.App.cs b/src/Android/Avalonia.Android/AvaloniaMainActivity.App.cs
index cf258a5a1f..c3116fe232 100644
--- a/src/Android/Avalonia.Android/AvaloniaMainActivity.App.cs
+++ b/src/Android/Avalonia.Android/AvaloniaMainActivity.App.cs
@@ -1,56 +1,7 @@
-#nullable enable
+namespace Avalonia.Android;
-namespace Avalonia.Android
+public class AvaloniaMainActivity : AvaloniaMainActivity
+ where TApp : Application, new()
{
- partial class AvaloniaMainActivity where TApp : Application, new()
- {
- protected virtual AppBuilder CustomizeAppBuilder(AppBuilder builder) => builder.UseAndroid();
-
- private static AppBuilder? s_appBuilder;
- internal static object? ViewContent;
-
- public object? Content
- {
- get
- {
- return ViewContent;
- }
- set
- {
- ViewContent = value;
- if (View != null)
- View.Content = value;
- }
- }
-
- protected AppBuilder CreateAppBuilder()
- {
- var builder = AppBuilder.Configure();
-
- return CustomizeAppBuilder(builder);
- }
-
- private void InitializeApp()
- {
- if (s_appBuilder == null)
- {
- var builder = CreateAppBuilder();
-
- builder.SetupWithLifetime(new SingleViewLifetime(this));
-
- s_appBuilder = builder;
- }
-
- View = new AvaloniaView(this);
- if (ViewContent != null)
- {
- View.Content = ViewContent;
- }
-
- if (Avalonia.Application.Current?.ApplicationLifetime is SingleViewLifetime lifetime)
- {
- lifetime.View = View;
- }
- }
- }
+ protected override AppBuilder CreateAppBuilder() => AppBuilder.Configure().UseAndroid();
}
diff --git a/src/Android/Avalonia.Android/AvaloniaMainActivity.cs b/src/Android/Avalonia.Android/AvaloniaMainActivity.cs
index b8b3906613..5ecbee0414 100644
--- a/src/Android/Avalonia.Android/AvaloniaMainActivity.cs
+++ b/src/Android/Avalonia.Android/AvaloniaMainActivity.cs
@@ -1,140 +1,62 @@
using System;
-using System.Runtime.Versioning;
-using Android.App;
-using Android.Content;
-using Android.Content.PM;
using Android.OS;
-using Android.Runtime;
-using Android.Views;
-using AndroidX.AppCompat.App;
+using Avalonia.Android.Platform;
using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Platform;
-namespace Avalonia.Android
-{
- public class AvaloniaMainActivity : AppCompatActivity, IAvaloniaActivity
- {
- private EventHandler _onActivated, _onDeactivated;
-
- public Action ActivityResult { get; set; }
- public Action RequestPermissionsResult { get; set; }
-
- public event EventHandler BackRequested;
- event EventHandler IAvaloniaActivity.Activated
- {
- add { _onActivated += value; }
- remove { _onActivated -= value; }
- }
-
- event EventHandler IAvaloniaActivity.Deactivated
- {
- add { _onDeactivated += value; }
- remove { _onDeactivated -= value; }
- }
-
- public override void OnBackPressed()
- {
- var eventArgs = new AndroidBackRequestedEventArgs();
-
- BackRequested?.Invoke(this, eventArgs);
+namespace Avalonia.Android;
- if (!eventArgs.Handled)
- {
- base.OnBackPressed();
- }
- }
-
- protected override void OnCreate(Bundle savedInstanceState)
- {
- base.OnCreate(savedInstanceState);
-
- if (Intent?.Data is {} androidUri
- && androidUri.IsAbsolute
- && Uri.TryCreate(androidUri.ToString(), UriKind.Absolute, out var protocolUri))
- {
- _onActivated?.Invoke(this, new ProtocolActivatedEventArgs(ActivationKind.OpenUri, protocolUri));
- }
- }
-
- protected override void OnStop()
- {
- _onDeactivated?.Invoke(this, new ActivatedEventArgs(ActivationKind.Background));
- base.OnStop();
- }
-
- protected override void OnStart()
- {
- _onActivated?.Invoke(this, new ActivatedEventArgs(ActivationKind.Background));
- base.OnStart();
- }
+public class AvaloniaMainActivity : AvaloniaActivity
+{
+ private protected static SingleViewLifetime? Lifetime;
- protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
+ public override void OnCreate(Bundle? savedInstanceState, PersistableBundle? persistentState)
+ {
+ // Global IActivatableLifetime expects a main activity, so we need to replace it on each OnCreate.
+ if (Avalonia.Application.Current?.TryGetFeature()
+ is AndroidActivatableLifetime activatableLifetime)
{
- base.OnActivityResult(requestCode, resultCode, data);
-
- ActivityResult?.Invoke(requestCode, resultCode, data);
+ activatableLifetime.Activity = this;
}
- [SupportedOSPlatform("android23.0")]
- public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
- {
- base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
-
- RequestPermissionsResult?.Invoke(requestCode, permissions, grantResults);
- }
+ base.OnCreate(savedInstanceState, persistentState);
}
- public abstract partial class AvaloniaMainActivity : AvaloniaMainActivity where TApp : Application, new()
+ private protected override void InitializeAvaloniaView(object? initialContent)
{
- internal AvaloniaView View { get; set; }
-
- private GlobalLayoutListener _listener;
-
- protected override void OnCreate(Bundle savedInstanceState)
+ // Android can run OnCreate + InitializeAvaloniaView multiple times per process lifetime.
+ // On each call we need to create new AvaloniaView, but we can't recreate Avalonia nor Avalonia controls.
+ // So, if lifetime was already created previously - recreate AvaloniaView.
+ // If not, initialize Avalonia, and create AvaloniaView inside of AfterSetup callback.
+ // We need this AfterSetup callback to match iOS/Browser behavior and ensure that view/toplevel is available in custom AfterSetup calls.
+ if (Lifetime is not null)
{
- InitializeApp();
-
- base.OnCreate(savedInstanceState);
-
- SetContentView(View);
+ initialContent ??= Lifetime.MainView;
- _listener = new GlobalLayoutListener(View);
-
- View.ViewTreeObserver?.AddOnGlobalLayoutListener(_listener);
+ Lifetime.Activity = this;
+ _view = new AvaloniaView(this) { Content = initialContent };
}
-
- protected override void OnResume()
+ else
{
- base.OnResume();
+ var builder = CreateAppBuilder();
+ builder = CustomizeAppBuilder(builder);
- // Android only respects LayoutInDisplayCutoutMode value if it has been set once before window becomes visible.
- if (OperatingSystem.IsAndroidVersionAtLeast(28) && Window is { Attributes: { } attributes })
- {
- attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges;
- }
- }
-
- protected override void OnDestroy()
- {
- View.Content = null;
-
- View.ViewTreeObserver?.RemoveOnGlobalLayoutListener(_listener);
-
- base.OnDestroy();
- }
-
- private class GlobalLayoutListener : Java.Lang.Object, ViewTreeObserver.IOnGlobalLayoutListener
- {
- private readonly AvaloniaView _view;
+ Lifetime = new SingleViewLifetime();
+ Lifetime.Activity = this;
+
+ builder
+ .AfterApplicationSetup(_ =>
+ {
+ _view = new AvaloniaView(this) { Content = initialContent };
+ })
+ .SetupWithLifetime(Lifetime);
- public GlobalLayoutListener(AvaloniaView view)
- {
- _view = view;
- }
-
- public void OnGlobalLayout()
- {
- _view.TopLevelImpl?.Resize(_view.TopLevelImpl.ClientSize);
- }
+ // AfterPlatformServicesSetup should always be called. If it wasn't, we have an unusual problem.
+ if (_view is null)
+ throw new InvalidOperationException("Unknown error: AvaloniaView initialization has failed.");
}
}
+
+ protected virtual AppBuilder CreateAppBuilder() => AppBuilder.Configure().UseAndroid();
+ protected virtual AppBuilder CustomizeAppBuilder(AppBuilder builder) => builder;
}
diff --git a/src/Android/Avalonia.Android/AvaloniaView.cs b/src/Android/Avalonia.Android/AvaloniaView.cs
index c120f9ee77..f72da82010 100644
--- a/src/Android/Avalonia.Android/AvaloniaView.cs
+++ b/src/Android/Avalonia.Android/AvaloniaView.cs
@@ -20,7 +20,7 @@ namespace Avalonia.Android
private EmbeddableControlRoot _root;
private readonly ViewImpl _view;
- private IDisposable _timerSubscription;
+ private IDisposable? _timerSubscription;
public AvaloniaView(Context context) : base(context)
{
@@ -35,8 +35,9 @@ namespace Avalonia.Android
}
internal TopLevelImpl TopLevelImpl => _view;
+ internal TopLevel? TopLevel => _root;
- public object Content
+ public object? Content
{
get { return _root.Content; }
set { _root.Content = value; }
@@ -46,10 +47,10 @@ namespace Avalonia.Android
{
base.Dispose(disposing);
_root?.Dispose();
- _root = null;
+ _root = null!;
}
- public override bool DispatchKeyEvent(KeyEvent e)
+ public override bool DispatchKeyEvent(KeyEvent? e)
{
return _view.View.DispatchKeyEvent(e);
}
@@ -90,7 +91,7 @@ namespace Avalonia.Android
}
}
- protected override void OnConfigurationChanged(Configuration newConfig)
+ protected override void OnConfigurationChanged(Configuration? newConfig)
{
base.OnConfigurationChanged(newConfig);
OnConfigurationChanged();
@@ -98,8 +99,12 @@ namespace Avalonia.Android
private void OnConfigurationChanged()
{
- var settings = AvaloniaLocator.Current.GetRequiredService() as AndroidPlatformSettings;
- settings?.OnViewConfigurationChanged(Context);
+ if (Context is { } context)
+ {
+ var settings =
+ AvaloniaLocator.Current.GetRequiredService() as AndroidPlatformSettings;
+ settings?.OnViewConfigurationChanged(context);
+ }
}
class ViewImpl : TopLevelImpl
@@ -110,20 +115,11 @@ namespace Avalonia.Android
View.FocusChange += ViewImpl_FocusChange;
}
- private void ViewImpl_FocusChange(object sender, FocusChangeEventArgs e)
+ private void ViewImpl_FocusChange(object? sender, FocusChangeEventArgs e)
{
if(!e.HasFocus)
LostFocus?.Invoke();
}
-
- protected override void OnResized(Size size)
- {
- MaxClientSize = size;
- base.OnResized(size);
- }
-
- public WindowState WindowState { get; set; }
- public IDisposable ShowDialog() => null;
}
}
}
diff --git a/src/Android/Avalonia.Android/ChoreographerTimer.cs b/src/Android/Avalonia.Android/ChoreographerTimer.cs
index 3545ae8fe1..4c6d176539 100644
--- a/src/Android/Avalonia.Android/ChoreographerTimer.cs
+++ b/src/Android/Avalonia.Android/ChoreographerTimer.cs
@@ -14,14 +14,14 @@ namespace Avalonia.Android
{
internal sealed class ChoreographerTimer : Java.Lang.Object, IRenderTimer, Choreographer.IFrameCallback
{
- private readonly object _lock = new object();
+ private readonly object _lock = new();
private readonly Thread _thread;
- private readonly TaskCompletionSource _choreographer = new TaskCompletionSource();
+ private readonly TaskCompletionSource _choreographer = new();
private readonly ISet _views = new HashSet();
- private Action _tick;
+ private Action? _tick;
private int _count;
public ChoreographerTimer()
@@ -29,8 +29,7 @@ namespace Avalonia.Android
_thread = new Thread(Loop);
_thread.Start();
}
-
-
+
public bool RunsInBackground => true;
public event Action Tick
@@ -84,7 +83,7 @@ namespace Avalonia.Android
private void Loop()
{
Looper.Prepare();
- _choreographer.SetResult(Choreographer.Instance);
+ _choreographer.SetResult(Choreographer.Instance!);
Looper.Loop();
}
@@ -96,7 +95,7 @@ namespace Avalonia.Android
{
if (_count > 0 && _views.Count > 0)
{
- Choreographer.Instance.PostFrameCallback(this);
+ Choreographer.Instance!.PostFrameCallback(this);
}
}
}
diff --git a/src/Android/Avalonia.Android/IActivityResultHandler.cs b/src/Android/Avalonia.Android/IActivityResultHandler.cs
index 40a8b5cbcf..3546d3e801 100644
--- a/src/Android/Avalonia.Android/IActivityResultHandler.cs
+++ b/src/Android/Avalonia.Android/IActivityResultHandler.cs
@@ -3,12 +3,11 @@ using Android.App;
using Android.Content;
using Android.Content.PM;
-namespace Avalonia.Android
+namespace Avalonia.Android;
+
+public interface IActivityResultHandler
{
- public interface IActivityResultHandler
- {
- public Action ActivityResult { get; set; }
+ public Action? ActivityResult { get; set; }
- public Action RequestPermissionsResult { get; set; }
- }
+ public Action? RequestPermissionsResult { get; set; }
}
diff --git a/src/Android/Avalonia.Android/IAndroidNavigationService.cs b/src/Android/Avalonia.Android/IAndroidNavigationService.cs
index b45ee6e78d..5fa93971d9 100644
--- a/src/Android/Avalonia.Android/IAndroidNavigationService.cs
+++ b/src/Android/Avalonia.Android/IAndroidNavigationService.cs
@@ -1,5 +1,4 @@
using System;
-using Avalonia.Controls.ApplicationLifetimes;
namespace Avalonia.Android
{
diff --git a/src/Android/Avalonia.Android/IAvaloniaActivity.cs b/src/Android/Avalonia.Android/IAvaloniaActivity.cs
index 005096a0bd..dd4fbafba8 100644
--- a/src/Android/Avalonia.Android/IAvaloniaActivity.cs
+++ b/src/Android/Avalonia.Android/IAvaloniaActivity.cs
@@ -5,6 +5,7 @@ namespace Avalonia.Android;
public interface IAvaloniaActivity : IActivityResultHandler, IActivityNavigationService
{
- event EventHandler Activated;
- event EventHandler Deactivated;
+ object? Content { get; set; }
+ event EventHandler? Activated;
+ event EventHandler? Deactivated;
}
diff --git a/src/Android/Avalonia.Android/Platform/AndroidActivatableLifetime.cs b/src/Android/Avalonia.Android/Platform/AndroidActivatableLifetime.cs
new file mode 100644
index 0000000000..a09c0ea88a
--- /dev/null
+++ b/src/Android/Avalonia.Android/Platform/AndroidActivatableLifetime.cs
@@ -0,0 +1,36 @@
+using Android.App;
+using Avalonia.Controls.ApplicationLifetimes;
+
+namespace Avalonia.Android.Platform;
+
+internal class AndroidActivatableLifetime : ActivatableLifetimeBase
+{
+ private IAvaloniaActivity? _activity;
+
+ public IAvaloniaActivity? Activity
+ {
+ get => _activity;
+ set
+ {
+ if (_activity is not null)
+ {
+ _activity.Activated -= ActivityOnActivated;
+ _activity.Deactivated -= ActivityOnDeactivated;
+ }
+
+ _activity = value;
+
+ if (_activity is not null)
+ {
+ _activity.Activated += ActivityOnActivated;
+ _activity.Deactivated += ActivityOnDeactivated;
+ }
+ }
+ }
+
+ public override bool TryEnterBackground() => (_activity as Activity)?.MoveTaskToBack(true) == true;
+
+ private void ActivityOnDeactivated(object? sender, ActivatedEventArgs e) => OnDeactivated(e);
+
+ private void ActivityOnActivated(object? sender, ActivatedEventArgs e) => OnActivated(e);
+}
diff --git a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs
index c38124e6da..18cad0aebf 100644
--- a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs
+++ b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using Android.App;
using Android.OS;
using Android.Views;
using Android.Views.Animations;
@@ -8,13 +9,14 @@ using Avalonia.Android.Platform.SkiaPlatform;
using Avalonia.Animation.Easings;
using Avalonia.Controls.Platform;
using Avalonia.Media;
+using Avalonia.Threading;
using AndroidWindow = Android.Views.Window;
namespace Avalonia.Android.Platform
{
internal sealed class AndroidInsetsManager : WindowInsetsAnimationCompat.Callback, IInsetsManager, IOnApplyWindowInsetsListener, ViewTreeObserver.IOnGlobalLayoutListener, IInputPane
{
- private readonly AvaloniaMainActivity _activity;
+ private readonly Activity _activity;
private readonly TopLevelImpl _topLevel;
private bool _displayEdgeToEdge;
private bool? _systemUiVisibility;
@@ -27,8 +29,8 @@ namespace Avalonia.Android.Platform
private AndroidWindow Window => _activity.Window ?? throw new InvalidOperationException("Activity.Window must be set.");
- public event EventHandler SafeAreaChanged;
- public event EventHandler StateChanged;
+ public event EventHandler? SafeAreaChanged;
+ public event EventHandler? StateChanged;
public InputPaneState State
{
@@ -40,7 +42,7 @@ namespace Avalonia.Android.Platform
if (oldState != value && Build.VERSION.SdkInt <= BuildVersionCodes.Q)
{
var currentRect = OccludedRect;
- StateChanged?.Invoke(this, new InputPaneStateEventArgs(value, _previousRect, currentRect, TimeSpan.Zero, null));
+ NotifyStateChanged(value, _previousRect, currentRect, TimeSpan.Zero, null);
_previousRect = currentRect;
}
}
@@ -72,7 +74,7 @@ namespace Avalonia.Android.Platform
}
}
- internal AndroidInsetsManager(AvaloniaMainActivity activity, TopLevelImpl topLevel) : base(DispatchModeStop)
+ internal AndroidInsetsManager(Activity activity, TopLevelImpl topLevel) : base(DispatchModeStop)
{
_activity = activity;
_topLevel = topLevel;
@@ -151,7 +153,12 @@ namespace Avalonia.Android.Platform
private void NotifySafeAreaChanged(Thickness safeAreaPadding)
{
- SafeAreaChanged?.Invoke(this, new SafeAreaChangedArgs(safeAreaPadding));
+ Dispatcher.UIThread.Send(_ => SafeAreaChanged?.Invoke(this, new SafeAreaChangedArgs(safeAreaPadding)));
+ }
+
+ private void NotifyStateChanged(InputPaneState newState, Rect? startRect, Rect endRect, TimeSpan animationDuration, IEasing? easing)
+ {
+ Dispatcher.UIThread.Send(_ => StateChanged?.Invoke(this, new InputPaneStateEventArgs(newState, startRect, endRect, animationDuration, easing)));
}
public void OnGlobalLayout()
@@ -294,7 +301,8 @@ namespace Avalonia.Android.Platform
var duration = TimeSpan.FromMilliseconds(animation.DurationMillis);
bool isOpening = State == InputPaneState.Open;
- StateChanged?.Invoke(this, new InputPaneStateEventArgs(State, isOpening ? upperRect : lowerRect, isOpening ? lowerRect : upperRect, duration, new AnimationEasing(animation.Interpolator)));
+ NotifyStateChanged(State, isOpening ? upperRect : lowerRect, isOpening ? lowerRect : upperRect, duration,
+ animation.Interpolator is { } interpolator ? new AnimationEasing(interpolator) : null);
}
}
diff --git a/src/Android/Avalonia.Android/Platform/AndroidLauncher.cs b/src/Android/Avalonia.Android/Platform/AndroidLauncher.cs
index 1f1c2f8d2a..4aa793ee85 100644
--- a/src/Android/Avalonia.Android/Platform/AndroidLauncher.cs
+++ b/src/Android/Avalonia.Android/Platform/AndroidLauncher.cs
@@ -27,6 +27,7 @@ internal class AndroidLauncher : ILauncher
var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask;
intent.SetFlags(flags);
_context.StartActivity(intent);
+ return Task.FromResult(true);
}
}
return Task.FromResult(false);
@@ -49,6 +50,7 @@ internal class AndroidLauncher : ILauncher
var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask;
chooserIntent.SetFlags(flags);
_context.StartActivity(chooserIntent);
+ return Task.FromResult(true);
}
}
return Task.FromResult(false);
diff --git a/src/Android/Avalonia.Android/Platform/AndroidNativeControlHostImpl.cs b/src/Android/Avalonia.Android/Platform/AndroidNativeControlHostImpl.cs
index 4738bd86f9..7cc1e70cfd 100644
--- a/src/Android/Avalonia.Android/Platform/AndroidNativeControlHostImpl.cs
+++ b/src/Android/Avalonia.Android/Platform/AndroidNativeControlHostImpl.cs
@@ -1,6 +1,4 @@
-#nullable enable
-
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
using Android.Views;
diff --git a/src/Android/Avalonia.Android/Platform/AndroidPlatformSettings.cs b/src/Android/Avalonia.Android/Platform/AndroidPlatformSettings.cs
index 0872603e7b..3963a88203 100644
--- a/src/Android/Avalonia.Android/Platform/AndroidPlatformSettings.cs
+++ b/src/Android/Avalonia.Android/Platform/AndroidPlatformSettings.cs
@@ -1,12 +1,7 @@
using System;
-using Android;
using Android.Content;
using Android.Content.Res;
-using Android.Graphics;
using Android.Provider;
-using Android.Views.Accessibility;
-using AndroidX.Core.Content.Resources;
-using Avalonia.Media;
using Avalonia.Platform;
using Color = Avalonia.Media.Color;
@@ -60,16 +55,25 @@ internal class AndroidPlatformSettings : DefaultPlatformSettings
else if (OperatingSystem.IsAndroidVersionAtLeast(23))
{
// See https://developer.android.com/reference/android/R.attr
- var array = context.Theme.ObtainStyledAttributes(new[] { 16843829 }); // Resource.Attribute.ColorAccent
- var accent = array.GetColor(0, 0);
-
- _latestValues = new PlatformColorValues
+ var array = context.Theme?.ObtainStyledAttributes(new[] { 16843829 }); // Resource.Attribute.ColorAccent
+ if (array is not null)
{
- ThemeVariant = systemTheme,
- ContrastPreference = IsHighContrast(context),
- AccentColor1 = new Color(accent.A, accent.R, accent.G, accent.B)
- };
- array.Recycle();
+ try
+ {
+ var accent = array.GetColor(0, 0);
+
+ _latestValues = new PlatformColorValues
+ {
+ ThemeVariant = systemTheme,
+ ContrastPreference = IsHighContrast(context),
+ AccentColor1 = new Color(accent.A, accent.R, accent.G, accent.B)
+ };
+ }
+ finally
+ {
+ array.Recycle();
+ }
+ }
}
else
{
diff --git a/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs b/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
index ec619fd0f3..2bf5c5c987 100644
--- a/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
+++ b/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
@@ -1,6 +1,4 @@
-#nullable enable
-
-using System;
+using System;
using Avalonia.Interactivity;
using Avalonia.Platform;
diff --git a/src/Android/Avalonia.Android/Platform/ClipboardImpl.cs b/src/Android/Avalonia.Android/Platform/ClipboardImpl.cs
index 0f2f985e27..028134ffad 100644
--- a/src/Android/Avalonia.Android/Platform/ClipboardImpl.cs
+++ b/src/Android/Avalonia.Android/Platform/ClipboardImpl.cs
@@ -1,5 +1,3 @@
-#nullable enable
-
using System;
using System.Threading.Tasks;
using Android.Content;
diff --git a/src/Android/Avalonia.Android/Platform/PlatformSupport.cs b/src/Android/Avalonia.Android/Platform/PlatformSupport.cs
index 9877f48664..feff497f61 100644
--- a/src/Android/Avalonia.Android/Platform/PlatformSupport.cs
+++ b/src/Android/Avalonia.Android/Platform/PlatformSupport.cs
@@ -2,7 +2,6 @@
using System.Linq;
using System.Threading.Tasks;
using Android.App;
-using Android.Content;
using Android.Content.PM;
namespace Avalonia.Android.Platform;
diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/FramebufferManager.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/FramebufferManager.cs
index 365c9cdb42..31dae74b1f 100644
--- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/FramebufferManager.cs
+++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/FramebufferManager.cs
@@ -1,4 +1,5 @@
-using Avalonia.Controls.Platform.Surfaces;
+using System;
+using Avalonia.Controls.Platform.Surfaces;
using Avalonia.Platform;
namespace Avalonia.Android.Platform.SkiaPlatform
@@ -12,8 +13,10 @@ namespace Avalonia.Android.Platform.SkiaPlatform
_topLevel = topLevel;
}
- public ILockedFramebuffer Lock() => new AndroidFramebuffer(_topLevel.InternalView.Holder.Surface, _topLevel.RenderScaling);
-
+ public ILockedFramebuffer Lock() => new AndroidFramebuffer(
+ _topLevel.InternalView.Holder?.Surface ?? throw new InvalidOperationException("TopLevel.InternalView.Holder.Surface was not expected to be null."),
+ _topLevel.RenderScaling);
+
public IFramebufferRenderTarget CreateFramebufferRenderTarget() => new FuncFramebufferRenderTarget(Lock);
}
}
diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs
index 3fb78591bc..0d9206f418 100644
--- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs
+++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/InvalidationAwareSurfaceView.cs
@@ -16,14 +16,19 @@ namespace Avalonia.Android
readonly object _lock = new object();
private readonly Handler _handler;
- IntPtr IPlatformHandle.Handle =>
- AndroidFramebuffer.ANativeWindow_fromSurface(JNIEnv.Handle, Holder.Surface.Handle);
+ IntPtr IPlatformHandle.Handle => Holder?.Surface?.Handle is { } handle ?
+ AndroidFramebuffer.ANativeWindow_fromSurface(JNIEnv.Handle, handle) :
+ default;
public InvalidationAwareSurfaceView(Context context) : base(context)
{
+ if (Holder is null)
+ throw new InvalidOperationException(
+ "SurfaceView.Holder was not expected to be null during InvalidationAwareSurfaceView initialization.");
+
Holder.AddCallback(this);
Holder.SetFormat(global::Android.Graphics.Format.Transparent);
- _handler = new Handler(context.MainLooper);
+ _handler = new Handler(context.MainLooper!);
}
public override void Invalidate()
@@ -34,7 +39,7 @@ namespace Avalonia.Android
return;
_handler.Post(() =>
{
- if (Holder.Surface?.IsValid != true)
+ if (Holder?.Surface?.IsValid != true)
return;
try
{
@@ -77,8 +82,8 @@ namespace Avalonia.Android
protected abstract void Draw();
public string HandleDescriptor => "SurfaceView";
- public PixelSize Size => new PixelSize(Holder.SurfaceFrame.Width(), Holder.SurfaceFrame.Height());
+ public PixelSize Size => new(Holder?.SurfaceFrame?.Width() ?? 1, Holder?.SurfaceFrame?.Height() ?? 1);
- public double Scaling => Resources.DisplayMetrics.Density;
+ public double Scaling => Resources?.DisplayMetrics?.Density ?? 1;
}
}
diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
index 04840ace22..02e3f68d73 100644
--- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
+++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
@@ -40,66 +40,61 @@ namespace Avalonia.Android.Platform.SkiaPlatform
private readonly AndroidMotionEventsHelper _pointerHelper;
private readonly AndroidInputMethod _textInputMethod;
private readonly INativeControlHostImpl _nativeControlHost;
- private readonly IStorageProvider _storageProvider;
+ private readonly IStorageProvider? _storageProvider;
private readonly AndroidSystemNavigationManagerImpl _systemNavigationManager;
- private readonly AndroidInsetsManager _insetsManager;
+ private readonly AndroidInsetsManager? _insetsManager;
private readonly ClipboardImpl _clipboard;
- private readonly AndroidLauncher _launcher;
+ private readonly AndroidLauncher? _launcher;
private ViewImpl _view;
private WindowTransparencyLevel _transparencyLevel;
public TopLevelImpl(AvaloniaView avaloniaView, bool placeOnTop = false)
{
+ if (avaloniaView.Context is null)
+ {
+ throw new ArgumentException("AvaloniaView.Context must not be null");
+ }
+
_view = new ViewImpl(avaloniaView.Context, this, placeOnTop);
_textInputMethod = new AndroidInputMethod(_view);
_keyboardHelper = new AndroidKeyboardEventsHelper(this);
_pointerHelper = new AndroidMotionEventsHelper(this);
_gl = new EglGlPlatformSurface(this);
_framebuffer = new FramebufferManager(this);
- _clipboard = new ClipboardImpl(avaloniaView.Context?.GetSystemService(Context.ClipboardService).JavaCast());
+ _clipboard = new ClipboardImpl(avaloniaView.Context.GetSystemService(Context.ClipboardService).JavaCast());
RenderScaling = _view.Scaling;
- MaxClientSize = new PixelSize(_view.Resources.DisplayMetrics.WidthPixels,
- _view.Resources.DisplayMetrics.HeightPixels).ToSize(RenderScaling);
-
- if (avaloniaView.Context is AvaloniaMainActivity mainActivity)
+ if (avaloniaView.Context is Activity mainActivity)
{
_insetsManager = new AndroidInsetsManager(mainActivity, this);
+ _storageProvider = new AndroidStorageProvider(mainActivity);
+ _launcher = new AndroidLauncher(mainActivity);
}
_nativeControlHost = new AndroidNativeControlHostImpl(avaloniaView);
- _storageProvider = new AndroidStorageProvider((Activity)avaloniaView.Context);
_transparencyLevel = WindowTransparencyLevel.None;
- _launcher = new AndroidLauncher((Activity)avaloniaView.Context);
_systemNavigationManager = new AndroidSystemNavigationManagerImpl(avaloniaView.Context as IActivityNavigationService);
Surfaces = new object[] { _gl, _framebuffer, Handle };
}
- public virtual Point GetAvaloniaPointFromEvent(MotionEvent e, int pointerIndex) =>
- new Point(e.GetX(pointerIndex), e.GetY(pointerIndex)) / RenderScaling;
-
- public IInputRoot InputRoot { get; private set; }
+ public IInputRoot? InputRoot { get; private set; }
public virtual Size ClientSize => _view.Size.ToSize(RenderScaling);
public Size? FrameSize => null;
+
+ public Action? Closed { get; set; }
- public IMouseDevice MouseDevice { get; } = new MouseDevice();
-
- public Action Closed { get; set; }
-
- public Action Input { get; set; }
-
- public Size MaxClientSize { get; protected set; }
+ public Action? Input { get; set; }
- public Action Paint { get; set; }
+ public Action? Paint { get; set; }
- public Action Resized { get; set; }
+ public Action? Resized { get; set; }
- public Action ScalingChanged { get; set; }
+ public Action? ScalingChanged { get; set; }
public View View => _view;
@@ -109,8 +104,9 @@ namespace Avalonia.Android.Platform.SkiaPlatform
public IEnumerable
diff --git a/src/Avalonia.Base/AvaloniaObject.cs b/src/Avalonia.Base/AvaloniaObject.cs
index 9bebec8027..37457ad7c3 100644
--- a/src/Avalonia.Base/AvaloniaObject.cs
+++ b/src/Avalonia.Base/AvaloniaObject.cs
@@ -1,14 +1,16 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Diagnostics;
using System.Runtime.CompilerServices;
+using System.Text;
using Avalonia.Data;
using Avalonia.Data.Core;
using Avalonia.Diagnostics;
using Avalonia.Logging;
using Avalonia.PropertyStore;
-using Avalonia.Reactive;
using Avalonia.Threading;
+using Avalonia.Utilities;
namespace Avalonia
{
@@ -18,6 +20,7 @@ namespace Avalonia
///
/// This class is analogous to DependencyObject in WPF.
///
+ [DebuggerDisplay("{DebugDisplay}")]
public class AvaloniaObject : IAvaloniaObjectDebug, INotifyPropertyChanged
{
private readonly ValueStore _values;
@@ -101,6 +104,11 @@ namespace Avalonia
set { this.Bind(binding.Property!, value); }
}
+ ///
+ /// Gets a string to display inside the debugger for this object.
+ ///
+ internal string DebugDisplay => GetDebugDisplay(true);
+
///
/// Returns a value indicating whether the current thread is the UI thread.
///
@@ -118,7 +126,7 @@ namespace Avalonia
/// The property.
public void ClearValue(AvaloniaProperty property)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
_values.ClearValue(property);
}
@@ -129,7 +137,7 @@ namespace Avalonia
/// The property.
public void ClearValue(AvaloniaProperty property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
switch (property)
@@ -151,7 +159,7 @@ namespace Avalonia
/// The property.
public void ClearValue(StyledProperty property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
_values.ClearValue(property);
@@ -163,11 +171,11 @@ namespace Avalonia
/// The property.
public void ClearValue(DirectPropertyBase property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
var p = AvaloniaPropertyRegistry.Instance.GetRegisteredDirect(this, property);
- p.InvokeSetter(this, p.GetUnsetValue(GetType()));
+ p.InvokeSetter(this, p.GetUnsetValue(this));
}
///
@@ -208,7 +216,7 @@ namespace Avalonia
/// The value.
public object? GetValue(AvaloniaProperty property)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
if (property.IsDirect)
return property.RouteGetValue(this);
@@ -224,7 +232,7 @@ namespace Avalonia
/// The value.
public T GetValue(StyledProperty property)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
return _values.GetValue(property);
}
@@ -237,7 +245,7 @@ namespace Avalonia
/// The value.
public T GetValue(DirectPropertyBase property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
var registered = AvaloniaPropertyRegistry.Instance.GetRegisteredDirect(this, property);
@@ -254,7 +262,7 @@ namespace Avalonia
///
public Optional GetBaseValue(StyledProperty property)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
return _values.GetBaseValue(property);
}
@@ -266,7 +274,7 @@ namespace Avalonia
/// True if the property is animating, otherwise false.
public bool IsAnimating(AvaloniaProperty property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
@@ -284,7 +292,7 @@ namespace Avalonia
///
public bool IsSet(AvaloniaProperty property)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
@@ -302,7 +310,7 @@ namespace Avalonia
object? value,
BindingPriority priority = BindingPriority.LocalValue)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
return property.RouteSetValue(this, value, priority);
}
@@ -322,11 +330,11 @@ namespace Avalonia
T value,
BindingPriority priority = BindingPriority.LocalValue)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
ValidatePriority(priority);
- LogPropertySet(property, value, BindingPriority.LocalValue);
+ LogPropertySet(property, value, priority);
if (value is UnsetValueType)
{
@@ -349,7 +357,7 @@ namespace Avalonia
/// The value.
public void SetValue(DirectPropertyBase property, T value)
{
- property = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
property = AvaloniaPropertyRegistry.Instance.GetRegisteredDirect(this, property);
@@ -393,7 +401,7 @@ namespace Avalonia
///
public void SetCurrentValue(StyledProperty property, T value)
{
- _ = property ?? throw new ArgumentNullException(nameof(property));
+ ThrowHelper.ThrowIfNull(property, nameof(property));
VerifyAccess();
LogPropertySet(property, value, BindingPriority.LocalValue);
@@ -450,8 +458,8 @@ namespace Avalonia
IObservable
// TODO: do we need to execute a render pass here too?
// We've previously tried that and it made the resize experience worse
- public void ImmediateRenderRequested(CompositionTarget target)
+ public void ImmediateRenderRequested(CompositionTarget target, bool catchExceptions)
{
- SyncCommit(target.Compositor, true);
+ SyncCommit(target.Compositor, true, catchExceptions);
}
@@ -133,7 +133,7 @@ partial class MediaContext
compositionTarget.Dispose();
// TODO: introduce a way to skip any actual rendering for other targets and only do a dispose?
- SyncCommit(compositionTarget.Compositor, false);
+ SyncCommit(compositionTarget.Compositor, false, true);
}
///
@@ -146,6 +146,6 @@ partial class MediaContext
return;
// TODO: maybe skip the full render here?
- ScheduleRender(true);
+ ScheduleRender(false);
}
}
diff --git a/src/Avalonia.Base/Media/MediaContext.cs b/src/Avalonia.Base/Media/MediaContext.cs
index a21e62d746..9747d01c7e 100644
--- a/src/Avalonia.Base/Media/MediaContext.cs
+++ b/src/Avalonia.Base/Media/MediaContext.cs
@@ -16,7 +16,7 @@ internal partial class MediaContext : ICompositorScheduler
private TimeSpan _inputMarkerAddedAt;
private bool _isRendering;
private bool _animationsAreWaitingForComposition;
- private const double MaxSecondsWithoutInput = 1;
+ private readonly double MaxSecondsWithoutInput;
private readonly Action _render;
private readonly Action _inputMarkerHandler;
private readonly HashSet _requestedCommits = new();
@@ -37,12 +37,13 @@ internal partial class MediaContext : ICompositorScheduler
private readonly Dictionary _topLevels = new();
- private MediaContext(Dispatcher dispatcher)
+ private MediaContext(Dispatcher dispatcher, TimeSpan inputStarvationTimeout)
{
_render = Render;
_inputMarkerHandler = InputMarkerHandler;
_clock = new(this);
_dispatcher = dispatcher;
+ MaxSecondsWithoutInput = inputStarvationTimeout.TotalSeconds;
_animationsTimer.Tick += (_, _) =>
{
_animationsTimer.Stop();
@@ -57,8 +58,14 @@ internal partial class MediaContext : ICompositorScheduler
// Technically it's supposed to be a thread-static singleton, but we don't have multiple threads
// and need to do a full reset for unit tests
var context = AvaloniaLocator.Current.GetService();
+
if (context == null)
- AvaloniaLocator.CurrentMutable.Bind().ToConstant(context = new(Dispatcher.UIThread));
+ {
+ var opts = AvaloniaLocator.Current.GetService() ?? new();
+ context = new MediaContext(Dispatcher.UIThread, opts.InputStarvationTimeout);
+ AvaloniaLocator.CurrentMutable.Bind().ToConstant(context);
+ }
+
return context;
}
}
diff --git a/src/Avalonia.Base/Media/PathSegment.cs b/src/Avalonia.Base/Media/PathSegment.cs
index 0b517e56f3..6b5f5f601d 100644
--- a/src/Avalonia.Base/Media/PathSegment.cs
+++ b/src/Avalonia.Base/Media/PathSegment.cs
@@ -3,5 +3,14 @@ namespace Avalonia.Media
public abstract class PathSegment : AvaloniaObject
{
internal abstract void ApplyTo(StreamGeometryContext ctx);
+
+ public static readonly StyledProperty IsStrokedProperty =
+ AvaloniaProperty.Register(nameof(IsStroked), true);
+
+ public bool IsStroked
+ {
+ get => GetValue(IsStrokedProperty);
+ set => SetValue(IsStrokedProperty, value);
+ }
}
}
diff --git a/src/Avalonia.Base/Media/PlatformDrawingContext.cs b/src/Avalonia.Base/Media/PlatformDrawingContext.cs
index 410d996db2..312cae2c52 100644
--- a/src/Avalonia.Base/Media/PlatformDrawingContext.cs
+++ b/src/Avalonia.Base/Media/PlatformDrawingContext.cs
@@ -26,12 +26,6 @@ internal sealed class PlatformDrawingContext : DrawingContext
_ownsImpl = ownsImpl;
}
- public RenderOptions RenderOptions
- {
- get => _impl.RenderOptions;
- set => _impl.RenderOptions = value;
- }
-
protected override void DrawLineCore(IPen pen, Point p1, Point p2) =>
_impl.DrawLine(pen, p1, p2);
diff --git a/src/Avalonia.Base/Media/PolylineGeometry.cs b/src/Avalonia.Base/Media/PolylineGeometry.cs
index 47cf2f48a4..13b11d8444 100644
--- a/src/Avalonia.Base/Media/PolylineGeometry.cs
+++ b/src/Avalonia.Base/Media/PolylineGeometry.cs
@@ -1,8 +1,10 @@
using System;
using System.Collections.Generic;
+using System.Collections.Specialized;
using Avalonia.Collections;
using Avalonia.Metadata;
using Avalonia.Platform;
+using Avalonia.Reactive;
namespace Avalonia.Media
{
@@ -100,10 +102,8 @@ namespace Avalonia.Media
private void OnPointsChanged(IList? newValue)
{
_pointsObserver?.Dispose();
- _pointsObserver = (newValue as IAvaloniaList)?.ForEachItem(
- _ => InvalidateGeometry(),
- _ => InvalidateGeometry(),
- InvalidateGeometry);
+ _pointsObserver = (newValue as INotifyCollectionChanged)?.GetWeakCollectionChangedObservable()
+ .Subscribe(_ => InvalidateGeometry());
}
}
}
diff --git a/src/Avalonia.Base/Media/QuadraticBezierSegment .cs b/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
index 01d22f2043..a338080065 100644
--- a/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
+++ b/src/Avalonia.Base/Media/QuadraticBezierSegment .cs
@@ -42,7 +42,7 @@ namespace Avalonia.Media
internal override void ApplyTo(StreamGeometryContext ctx)
{
- ctx.QuadraticBezierTo(Point1, Point2);
+ ctx.QuadraticBezierTo(Point1, Point2, IsStroked);
}
public override string ToString()
diff --git a/src/Avalonia.Base/Media/RadialGradientBrush.cs b/src/Avalonia.Base/Media/RadialGradientBrush.cs
index 42a5832fc2..89acd63980 100644
--- a/src/Avalonia.Base/Media/RadialGradientBrush.cs
+++ b/src/Avalonia.Base/Media/RadialGradientBrush.cs
@@ -31,6 +31,7 @@ namespace Avalonia.Media
///
/// Defines the property.
///
+ [Obsolete("Use RadiusX/RadiusY, note that those properties use _relative_ values, so Radius=0.55 would become RadiusX=55% RadiusY=55%. Radius property is always relative even if the rest of the brush uses absolute values.")]
public static readonly StyledProperty RadiusProperty =
AvaloniaProperty.Register(
nameof(Radius),
@@ -73,7 +74,9 @@ namespace Avalonia.Media
/// Gets or sets the horizontal radius of the outermost circle of the radial
/// gradient.
///
+#pragma warning disable CS0618 // Type or member is obsolete
[DependsOn(nameof(Radius))]
+#pragma warning restore CS0618 // Type or member is obsolete
public RelativeScalar RadiusX
{
get { return GetValue(RadiusXProperty); }
@@ -84,7 +87,9 @@ namespace Avalonia.Media
/// Gets or sets the vertical radius of the outermost circle of the radial
/// gradient.
///
+#pragma warning disable CS0618 // Type or member is obsolete
[DependsOn(nameof(Radius))]
+#pragma warning restore CS0618 // Type or member is obsolete
public RelativeScalar RadiusY
{
get { return GetValue(RadiusYProperty); }
@@ -119,12 +124,15 @@ namespace Avalonia.Media
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
+#pragma warning disable CS0618 // Type or member is obsolete: compatibility code for Radius
if (change.IsEffectiveValueChange && change.Property == RadiusProperty)
{
var compatibilityValue = new RelativeScalar(Radius, RelativeUnit.Relative);
SetCurrentValue(RadiusXProperty, compatibilityValue);
SetCurrentValue(RadiusYProperty, compatibilityValue);
}
+#pragma warning restore CS0618 // Type or member is obsolete
+
base.OnPropertyChanged(change);
}
}
diff --git a/src/Avalonia.Base/Media/StreamGeometryContext.cs b/src/Avalonia.Base/Media/StreamGeometryContext.cs
index 66fb65a6c2..c8072564b1 100644
--- a/src/Avalonia.Base/Media/StreamGeometryContext.cs
+++ b/src/Avalonia.Base/Media/StreamGeometryContext.cs
@@ -10,7 +10,7 @@ namespace Avalonia.Media
/// of is obtained by calling
/// .
///
- public class StreamGeometryContext : IGeometryContext
+ public class StreamGeometryContext : IGeometryContext, IGeometryContext2
{
private readonly IStreamGeometryContextImpl _impl;
@@ -102,5 +102,46 @@ namespace Avalonia.Media
{
_impl.Dispose();
}
+
+ ///
+ public void LineTo(Point point, bool isStroked)
+ {
+ if (_impl is IGeometryContext2 context2)
+ context2.LineTo(point, isStroked);
+ else
+ _impl.LineTo(point);
+
+ _currentPoint = point;
+ }
+
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked)
+ {
+ if (_impl is IGeometryContext2 context2)
+ context2.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection, isStroked);
+ else
+ _impl.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection);
+
+ _currentPoint = point;
+ }
+
+ public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked)
+ {
+ if (_impl is IGeometryContext2 context2)
+ context2.CubicBezierTo(controlPoint1, controlPoint2, endPoint, isStroked);
+ else
+ _impl.CubicBezierTo(controlPoint1, controlPoint2, endPoint);
+
+ _currentPoint = endPoint;
+ }
+
+ public void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked)
+ {
+ if (_impl is IGeometryContext2 context2)
+ context2.QuadraticBezierTo(controlPoint, endPoint, isStroked);
+ else
+ _impl.QuadraticBezierTo(controlPoint, endPoint);
+
+ _currentPoint = endPoint;
+ }
}
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs b/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
index d9e6d6486d..f60440e6b1 100644
--- a/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/TextLineImpl.cs
@@ -1336,6 +1336,10 @@ namespace Avalonia.Media.TextFormatting
if (!double.IsNaN(lineHeight) && !MathUtilities.IsZero(lineHeight))
{
+ var offset = (height - lineHeight) / 2;
+
+ ascent += offset;
+
height = lineHeight;
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDi.trie.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDi.trie.cs
index bb907b8ace..f86b8d6054 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDi.trie.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDi.trie.cs
@@ -1,519 +1,1084 @@
+//---------------------------------------------------------------------------------------------------
+//
+// This code was generated by UnicodeDataGenerator.
+// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
+// "
+//---------------------------------------------------------------------------------------------------
+
using System;
-namespace Avalonia.Media.TextFormatting.Unicode
+using System.Runtime.CompilerServices;
+
+namespace Avalonia.Media.TextFormatting.Unicode;
+
+internal static class BidiTrie
{
- internal static class BidiTrie
+ public static UnicodeTrie Trie
{
- public static ReadOnlySpan Data => new byte[]
- {
- 0, 0, 16, 0, 0, 0, 0, 0, 192, 198, 0, 0, 127, 3, 0, 0, 135, 3, 0, 0, 143, 3, 0, 0, 151, 3, 0, 0, 175, 3, 0, 0, 183, 3, 0, 0, 191, 3, 0, 0, 199, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 205, 3, 0, 0, 213, 3, 0, 0,
- 221, 3, 0, 0, 229, 3, 0, 0, 237, 3, 0, 0, 245, 3, 0, 0, 241, 3, 0, 0, 249, 3, 0, 0, 1, 4, 0, 0, 9, 4, 0, 0, 4, 4, 0, 0, 12, 4, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 20, 4, 0, 0, 28, 4, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 159, 3, 0, 0, 167, 3, 0, 0, 34, 4, 0, 0, 42, 4, 0, 0, 50, 4, 0, 0,
- 58, 4, 0, 0, 66, 4, 0, 0, 74, 4, 0, 0, 80, 4, 0, 0, 88, 4, 0, 0, 93, 4, 0, 0, 101, 4, 0, 0, 104, 4, 0, 0, 112, 4, 0, 0, 119, 4, 0, 0, 127, 4, 0, 0, 133, 4, 0, 0, 141, 4, 0, 0, 140, 4, 0, 0, 148, 4, 0, 0, 156, 4, 0, 0, 164, 4, 0, 0, 54, 9, 0, 0, 61, 9, 0, 0, 69, 9, 0, 0, 17, 12, 0, 0, 142, 10, 0, 0, 73, 4, 0, 0, 228, 11, 0, 0, 150, 10, 0, 0,
- 172, 4, 0, 0, 174, 4, 0, 0, 182, 4, 0, 0, 190, 4, 0, 0, 198, 4, 0, 0, 199, 4, 0, 0, 207, 4, 0, 0, 215, 4, 0, 0, 223, 4, 0, 0, 199, 4, 0, 0, 231, 4, 0, 0, 236, 4, 0, 0, 223, 4, 0, 0, 199, 4, 0, 0, 244, 4, 0, 0, 252, 4, 0, 0, 198, 4, 0, 0, 4, 5, 0, 0, 12, 5, 0, 0, 190, 4, 0, 0, 20, 5, 0, 0, 159, 3, 0, 0, 28, 5, 0, 0, 32, 5, 0, 0, 40, 5, 0, 0,
- 42, 5, 0, 0, 50, 5, 0, 0, 58, 5, 0, 0, 198, 4, 0, 0, 199, 4, 0, 0, 66, 5, 0, 0, 190, 4, 0, 0, 22, 4, 0, 0, 70, 5, 0, 0, 207, 4, 0, 0, 190, 4, 0, 0, 198, 4, 0, 0, 159, 3, 0, 0, 78, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 84, 5, 0, 0, 92, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 96, 5, 0, 0, 104, 5, 0, 0, 159, 3, 0, 0, 108, 5, 0, 0, 115, 5, 0, 0,
- 159, 3, 0, 0, 123, 5, 0, 0, 131, 5, 0, 0, 138, 5, 0, 0, 19, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 146, 5, 0, 0, 154, 5, 0, 0, 162, 5, 0, 0, 170, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 178, 5, 0, 0, 159, 3, 0, 0, 186, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 194, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 202, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 210, 5, 0, 0, 211, 4, 0, 0, 211, 4, 0, 0, 211, 4, 0, 0, 159, 3, 0, 0, 216, 5, 0, 0, 224, 5, 0, 0, 186, 5, 0, 0, 232, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 239, 5, 0, 0,
- 196, 4, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 247, 5, 0, 0, 255, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 1, 6, 0, 0, 182, 10, 0, 0, 9, 6, 0, 0, 159, 3, 0, 0, 16, 6, 0, 0, 24, 6, 0, 0, 159, 3, 0, 0, 32, 6, 0, 0, 233, 11, 0, 0, 159, 3, 0, 0, 3, 5, 0, 0, 40, 6, 0, 0, 20, 5, 0, 0, 48, 6, 0, 0, 22, 4, 0, 0, 56, 6, 0, 0,
- 159, 3, 0, 0, 63, 6, 0, 0, 159, 3, 0, 0, 68, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 74, 6, 0, 0, 82, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 89, 6, 0, 0, 97, 6, 0, 0, 101, 6, 0, 0, 109, 6, 0, 0, 102, 10, 0, 0, 174, 10, 0, 0, 117, 6, 0, 0, 125, 6, 0, 0, 110, 10, 0, 0, 118, 10, 0, 0, 141, 5, 0, 0, 133, 6, 0, 0, 141, 6, 0, 0, 149, 6, 0, 0, 159, 3, 0, 0, 157, 6, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0,
- 86, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 188, 10, 0, 0, 163, 6, 0, 0, 159, 3, 0, 0, 169, 6, 0, 0, 176, 6, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 22, 7, 0, 0, 194, 10, 0, 0, 182, 10, 0, 0, 182, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 189, 6, 0, 0, 182, 10, 0, 0,
- 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 194, 6, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 202, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 209, 10, 0, 0, 216, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 224, 10, 0, 0, 182, 10, 0, 0, 231, 10, 0, 0, 238, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0,
- 246, 10, 0, 0, 252, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 202, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 210, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 237, 3, 0, 0, 182, 10, 0, 0, 4, 11, 0, 0, 7, 11, 0, 0, 159, 3, 0, 0,
- 15, 11, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 22, 11, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 30, 11, 0, 0, 36, 11, 0, 0, 218, 6, 0, 0, 226, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 234, 6, 0, 0, 194, 5, 0, 0, 159, 3, 0, 0, 198, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 182, 10, 0, 0, 209, 6, 0, 0, 212, 3, 0, 0, 159, 3, 0, 0, 242, 6, 0, 0, 250, 6, 0, 0, 159, 3, 0, 0, 2, 7, 0, 0, 10, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 14, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 1, 6, 0, 0, 197, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 182, 10, 0, 0, 182, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 242, 6, 0, 0, 182, 10, 0, 0, 22, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 27, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 32, 7, 0, 0, 40, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 110, 5, 0, 0, 182, 10, 0, 0, 0, 6, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 48, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 56, 7, 0, 0, 63, 7, 0, 0, 159, 3, 0, 0,
- 70, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 68, 5, 0, 0, 78, 7, 0, 0, 159, 3, 0, 0, 86, 7, 0, 0, 93, 7, 0, 0, 159, 3, 0, 0, 172, 4, 0, 0, 98, 7, 0, 0, 159, 3, 0, 0, 197, 4, 0, 0, 159, 3, 0, 0, 106, 7, 0, 0, 114, 7, 0, 0, 199, 4, 0, 0, 159, 3, 0, 0, 118, 7, 0, 0, 198, 4, 0, 0, 126, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 6, 6, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 133, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 137, 7, 0, 0, 77, 9, 0, 0, 85, 9, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 25, 12, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0,
- 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 44, 11, 0, 0, 52, 11, 0, 0, 73, 4, 0, 0, 30, 12, 0, 0, 73, 4, 0, 0, 58, 11, 0, 0, 62, 11, 0, 0, 70, 11, 0, 0, 122, 10, 0, 0, 126, 10, 0, 0, 94, 10, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 73, 4, 0, 0, 196, 11, 0, 0, 54, 10, 0, 0, 145, 7, 0, 0, 153, 7, 0, 0, 161, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 134, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 188, 14, 0, 0, 252, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 52, 15, 0, 0, 116, 15, 0, 0, 180, 15, 0, 0, 196, 15, 0, 0, 4, 16, 0, 0, 16, 16, 0, 0, 124, 14, 0, 0,
- 124, 14, 0, 0, 80, 16, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 124, 14, 0, 0, 136, 16, 0, 0, 200, 16, 0, 0, 8, 17, 0, 0, 64, 17, 0, 0, 116, 17, 0, 0, 160, 17, 0, 0, 220, 17, 0, 0, 20, 18, 0, 0, 48, 18, 0, 0, 112, 18, 0, 0, 32, 10, 0, 0, 233, 12, 0, 0, 96, 10, 0, 0, 159, 10, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 223, 10, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 8, 11, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 72, 11, 0, 0, 160, 1, 0, 0, 110, 11, 0, 0, 169, 11, 0, 0, 233, 11, 0, 0, 41, 12, 0, 0, 41, 13, 0, 0, 105, 12, 0, 0, 105, 13, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 169, 13, 0, 0, 185, 13, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 169, 12, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 169, 7, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 177, 7, 0, 0, 194, 5, 0, 0, 159, 3, 0, 0, 191, 4, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 62, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 185, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 198, 4, 0, 0, 192, 7, 0, 0, 199, 7, 0, 0, 206, 7, 0, 0, 22, 4, 0, 0, 214, 7, 0, 0, 20, 5, 0, 0, 159, 3, 0, 0, 172, 4, 0, 0, 221, 7, 0, 0, 159, 3, 0, 0, 227, 7, 0, 0, 22, 4, 0, 0, 232, 7, 0, 0, 240, 7, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 245, 7, 0, 0, 198, 4, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 210, 6, 0, 0, 253, 7, 0, 0, 22, 4, 0, 0, 70, 5, 0, 0, 41, 5, 0, 0, 4, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 192, 7, 0, 0, 12, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 20, 8, 0, 0, 28, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 32, 8, 0, 0, 40, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 48, 8, 0, 0, 41, 5, 0, 0, 181, 7, 0, 0, 159, 3, 0, 0, 56, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 178, 5, 0, 0, 64, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 69, 8, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 76, 8, 0, 0, 84, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 87, 8, 0, 0, 41, 5, 0, 0, 95, 8, 0, 0, 99, 8, 0, 0, 107, 8, 0, 0, 159, 3, 0, 0, 114, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 121, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 129, 8, 0, 0, 135, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 141, 8, 0, 0, 149, 8, 0, 0, 159, 3, 0, 0, 153, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 72, 5, 0, 0, 22, 4, 0, 0, 185, 7, 0, 0, 161, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 164, 8, 0, 0, 172, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 180, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 186, 8, 0, 0, 159, 3, 0, 0, 192, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 228, 7, 0, 0, 159, 3, 0, 0, 198, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 206, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 224, 4, 0, 0, 204, 11, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 237, 3, 0, 0, 249, 11, 0, 0, 106, 5, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 213, 8, 0, 0,
- 221, 8, 0, 0, 227, 8, 0, 0, 159, 3, 0, 0, 233, 8, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 78, 11, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 191, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 198, 3, 0, 0, 159, 3, 0, 0, 164, 7, 0, 0, 159, 3, 0, 0, 193, 3, 0, 0, 159, 3, 0, 0, 167, 7, 0, 0, 159, 3, 0, 0,
- 241, 8, 0, 0, 70, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 237, 3, 0, 0, 249, 8, 0, 0, 237, 3, 0, 0, 0, 9, 0, 0, 7, 9, 0, 0, 1, 12, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 9, 12, 0, 0, 15, 9, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 228, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 192, 8, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 16, 8, 0, 0, 159, 3, 0, 0, 20, 9, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 28, 9, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 90, 11, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 22, 11, 0, 0, 95, 11, 0, 0, 99, 11, 0, 0, 30, 11, 0, 0, 36, 9, 0, 0, 193, 3, 0, 0, 159, 3, 0, 0, 42, 9, 0, 0, 159, 3, 0, 0, 166, 7, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 167, 6, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0,
- 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 104, 11, 0, 0, 177, 7, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 111, 11, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 118, 11, 0, 0, 126, 11, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 46, 9, 0, 0, 93, 9, 0, 0, 96, 9, 0, 0, 104, 9, 0, 0, 156, 4, 0, 0, 110, 9, 0, 0, 118, 9, 0, 0, 159, 3, 0, 0, 126, 9, 0, 0, 133, 9, 0, 0, 141, 9, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 156, 4, 0, 0, 149, 9, 0, 0, 156, 9, 0, 0, 156, 4, 0, 0, 164, 9, 0, 0,
- 171, 9, 0, 0, 179, 9, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0, 159, 3, 0, 0, 156, 4, 0, 0, 187, 9, 0, 0, 156, 4, 0, 0, 195, 9, 0, 0, 203, 9, 0, 0, 209, 9, 0, 0, 215, 9, 0, 0, 223, 9, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0, 231, 9, 0, 0, 159, 3, 0, 0, 156, 4, 0, 0, 239, 9, 0, 0, 156, 4, 0, 0, 247, 9, 0, 0, 73, 4, 0, 0, 158, 10, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 166, 10, 0, 0, 156, 4, 0, 0, 254, 9, 0, 0, 159, 3, 0, 0, 178, 5, 0, 0, 156, 4, 0, 0, 6, 10, 0, 0, 241, 11, 0, 0, 122, 9, 0, 0, 14, 10, 0, 0, 122, 9, 0, 0, 22, 10, 0, 0, 30, 10, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0,
- 156, 4, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0, 38, 10, 0, 0, 159, 3, 0, 0, 156, 4, 0, 0, 156, 4, 0, 0, 46, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 38, 12, 0, 0, 73, 4, 0, 0, 43, 12, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 136, 4, 0, 0, 51, 12, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 59, 12, 0, 0, 67, 12, 0, 0, 75, 12, 0, 0, 83, 12, 0, 0, 91, 12, 0, 0,
- 99, 12, 0, 0, 159, 3, 0, 0, 82, 11, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 90, 11, 0, 0, 182, 10, 0, 0, 134, 11, 0, 0, 182, 10, 0, 0, 142, 11, 0, 0, 147, 11, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0,
- 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 22, 11, 0, 0, 155, 11, 0, 0, 160, 11, 0, 0, 164, 11, 0, 0, 172, 11, 0, 0, 180, 11, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 182, 10, 0, 0, 188, 11, 0, 0, 182, 10, 0, 0, 194, 10, 0, 0, 78, 10, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0,
- 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 159, 3, 0, 0, 46, 9, 0, 0,
- 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 237, 3, 0, 0, 220, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0,
- 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0,
- 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0,
- 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 212, 11, 0, 0, 126, 3, 1, 0, 126, 3, 1, 0, 126, 3, 1, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 84, 0, 0, 0, 12, 0, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 41, 0, 58, 0, 40, 0, 57, 0,
- 0, 0, 56, 0, 0, 0, 28, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 58, 0,
- 0, 0, 56, 0, 91, 0, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 58, 0, 0, 0, 56, 0, 123, 0, 57, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 68, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 4, 0,
- 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 59, 15, 58, 0, 58, 15, 57, 0, 61, 15, 58, 0, 60, 15, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 22, 58, 0, 155, 22, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 16, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 44, 0, 0, 0, 76, 0, 0, 0, 36, 0, 0, 0, 64, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 56, 0, 126, 32, 58, 0, 125, 32, 57, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 56, 0, 142, 32, 58, 0, 141, 32, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 42, 35, 58, 0, 41, 35, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 88, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 9, 48, 58, 0, 8, 48, 57, 0, 11, 48, 58, 0, 10, 48, 57, 0, 13, 48, 58, 0, 12, 48, 57, 0, 15, 48, 58, 0, 14, 48, 57, 0, 17, 48, 58, 0, 16, 48, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 21, 48, 58, 0, 20, 48, 57, 0, 23, 48, 58, 0, 22, 48, 57, 0, 25, 48, 58, 0, 24, 48, 57, 0, 27, 48, 58, 0, 26, 48, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 52, 0,
- 0, 0, 68, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 255, 58, 0, 0, 0, 56, 0, 59, 255, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 255, 58, 0, 0, 0, 56, 0, 91, 255, 57, 0, 0, 0, 56, 0, 96, 255, 58, 0, 95, 255, 57, 0, 0, 0, 56, 0, 99, 255, 58, 0, 98, 255, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 28, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0,
- 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 9, 255, 58, 0, 8, 255, 57, 0, 0, 0, 56, 0, 0, 0, 28, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0, 20, 0, 0, 0, 20, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0,
- 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 28, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 88, 0, 0, 0, 12, 0, 0, 0, 40, 0, 0, 0, 72, 0, 0, 0, 60, 0, 0, 0, 48, 0, 0, 0, 80, 0, 0, 0, 20, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0,
- 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 90, 254, 58, 0, 89, 254, 57, 0, 92, 254, 58, 0,
- 91, 254, 57, 0, 94, 254, 58, 0, 93, 254, 57, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 8, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0,
- 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0,
- 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 20, 0, 70, 32, 58, 0, 69, 32, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 88, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 9, 35, 58, 0, 8, 35, 57, 0, 11, 35, 58, 0, 10, 35, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 105, 39, 58, 0, 104, 39, 57, 0, 107, 39, 58, 0, 106, 39, 57, 0, 109, 39, 58, 0, 108, 39, 57, 0, 111, 39, 58, 0, 110, 39, 57, 0, 113, 39, 58, 0, 112, 39, 57, 0, 115, 39, 58, 0, 114, 39, 57, 0, 117, 39, 58, 0, 116, 39, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 198, 39, 58, 0, 197, 39, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 231, 39, 58, 0, 230, 39, 57, 0, 233, 39, 58, 0, 232, 39, 57, 0, 235, 39, 58, 0, 234, 39, 57, 0, 237, 39, 58, 0, 236, 39, 57, 0, 239, 39, 58, 0, 238, 39, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 132, 41, 58, 0, 131, 41, 57, 0, 134, 41, 58, 0, 133, 41, 57, 0, 136, 41, 58, 0, 135, 41, 57, 0, 138, 41, 58, 0, 137, 41, 57, 0,
- 140, 41, 58, 0, 139, 41, 57, 0, 144, 41, 58, 0, 143, 41, 57, 0, 142, 41, 58, 0, 141, 41, 57, 0, 146, 41, 58, 0, 145, 41, 57, 0, 148, 41, 58, 0, 147, 41, 57, 0, 150, 41, 58, 0, 149, 41, 57, 0, 152, 41, 58, 0, 151, 41, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 217, 41, 58, 0, 216, 41, 57, 0, 219, 41, 58, 0, 218, 41, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 253, 41, 58, 0, 252, 41, 57, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 35, 46, 58, 0, 34, 46, 57, 0, 37, 46, 58, 0, 36, 46, 57, 0, 39, 46, 58, 0, 38, 46, 57, 0, 41, 46, 58, 0, 40, 46, 57, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 86, 46, 58, 0, 85, 46, 57, 0, 88, 46, 58, 0, 87, 46, 57, 0, 90, 46, 58, 0, 89, 46, 57, 0, 92, 46, 58, 0, 91, 46, 57, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0,
- 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
- }
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get => new(Data, 0x00100000, 0x00000000);
+ }
+
+ private static ReadOnlySpan Data => new uint[]
+ {
+ 0x0000037F, 0x00000387, 0x0000038F, 0x00000397, 0x000003AF, 0x000003B7, 0x000003BF, 0x000003C7, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7,
+ 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7, 0x000003CD, 0x000003D5, 0x000003DD, 0x000003E5,
+ 0x000003ED, 0x000003F5, 0x000003F1, 0x000003F9, 0x00000401, 0x00000409, 0x00000404, 0x0000040C, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7,
+ 0x00000414, 0x0000041C, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7, 0x0000039F, 0x000003A7, 0x00000422, 0x0000042A, 0x00000432, 0x0000043A,
+ 0x00000442, 0x0000044A, 0x00000450, 0x00000458, 0x0000045D, 0x00000465, 0x00000468, 0x00000470, 0x00000477, 0x0000047F, 0x00000485, 0x0000048D,
+ 0x0000048C, 0x00000494, 0x0000049C, 0x000004A4, 0x00000936, 0x0000093D, 0x00000945, 0x00000C11, 0x00000A8E, 0x00000449, 0x00000BE4, 0x00000A96,
+ 0x000004AC, 0x000004AE, 0x000004B6, 0x000004BE, 0x000004C6, 0x000004C7, 0x000004CF, 0x000004D7, 0x000004DF, 0x000004C7, 0x000004E7, 0x000004EC,
+ 0x000004DF, 0x000004C7, 0x000004F4, 0x000004FC, 0x000004C6, 0x00000504, 0x0000050C, 0x000004BE, 0x00000514, 0x0000039F, 0x0000051C, 0x00000520,
+ 0x00000528, 0x0000052A, 0x00000532, 0x0000053A, 0x000004C6, 0x000004C7, 0x00000542, 0x000004BE, 0x00000416, 0x00000546, 0x000004CF, 0x000004BE,
+ 0x000004C6, 0x0000039F, 0x0000054E, 0x0000039F, 0x0000039F, 0x00000554, 0x0000055C, 0x0000039F, 0x0000039F, 0x00000560, 0x00000568, 0x0000039F,
+ 0x0000056C, 0x00000573, 0x0000039F, 0x0000057B, 0x00000583, 0x0000058A, 0x00000513, 0x0000039F, 0x0000039F, 0x00000592, 0x0000059A, 0x000005A2,
+ 0x000005AA, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000005B2, 0x0000039F,
+ 0x000005BA, 0x0000039F, 0x0000039F, 0x0000039F, 0x000005C2, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x000005CA, 0x0000039F, 0x0000039F, 0x0000039F, 0x000005D2, 0x000004D3, 0x000004D3, 0x000004D3, 0x0000039F, 0x000005D8, 0x000005E0, 0x000005BA,
+ 0x000005E8, 0x0000039F, 0x0000039F, 0x0000039F, 0x000005EF, 0x000004C4, 0x0000039F, 0x0000039F, 0x0000039F, 0x000005F7, 0x000005FF, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x00000601, 0x00000AB6, 0x00000609, 0x0000039F, 0x00000610, 0x00000618, 0x0000039F, 0x00000620, 0x00000BE9, 0x0000039F,
+ 0x00000503, 0x00000628, 0x00000514, 0x00000630, 0x00000416, 0x00000638, 0x0000039F, 0x0000063F, 0x0000039F, 0x00000644, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000064A, 0x00000652, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000003ED, 0x000003ED,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x00000659, 0x00000661, 0x00000665, 0x0000066D, 0x00000A66, 0x00000AAE, 0x00000675, 0x0000067D, 0x00000A6E, 0x00000A76, 0x0000058D,
+ 0x00000685, 0x0000068D, 0x00000695, 0x0000039F, 0x0000069D, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000A56, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000ABC, 0x000006A3, 0x0000039F, 0x000006A9, 0x000006B0, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000716, 0x00000AC2, 0x00000AB6, 0x000006B6, 0x0000039F, 0x0000039F, 0x000006BD, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x000006C2, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000ACA, 0x00000AB6, 0x00000AB6, 0x00000AD1, 0x00000AD8, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AE0, 0x00000AB6, 0x00000AE7, 0x00000AEE,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AF6,
+ 0x00000AFC, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000006CA,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x000006D2, 0x0000039F, 0x0000039F, 0x0000039F, 0x000003ED, 0x00000AB6, 0x00000B04, 0x00000B07, 0x0000039F,
+ 0x00000B0F, 0x00000AB6, 0x00000AB6, 0x00000B16, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000B1E, 0x00000B24,
+ 0x000006DA, 0x000006E2, 0x0000039F, 0x0000039F, 0x000006EA, 0x000005C2, 0x0000039F, 0x000003C6, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x00000AB6, 0x000006D1, 0x000003D4, 0x0000039F, 0x000006F2, 0x000006FA, 0x0000039F, 0x00000702, 0x0000070A, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000070E, 0x0000039F, 0x0000039F, 0x00000601, 0x000003C5, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000AB6,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000006F2, 0x00000AB6, 0x00000716, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000071B, 0x0000039F, 0x0000039F, 0x00000720,
+ 0x00000728, 0x0000039F, 0x0000039F, 0x0000056E, 0x00000AB6, 0x00000600, 0x0000039F, 0x0000039F, 0x00000730, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x00000738, 0x0000073F, 0x0000039F, 0x00000746, 0x0000039F, 0x0000039F, 0x00000544, 0x0000074E, 0x0000039F, 0x00000756, 0x0000075D, 0x0000039F,
+ 0x000004AC, 0x00000762, 0x0000039F, 0x000004C5, 0x0000039F, 0x0000076A, 0x00000772, 0x000004C7, 0x0000039F, 0x00000776, 0x000004C6, 0x0000077E,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x00000606, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000785, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000789, 0x0000094D, 0x00000955, 0x00000449, 0x00000449, 0x00000449, 0x00000C19, 0x00000449,
+ 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000449, 0x00000B2C, 0x00000B34, 0x00000449,
+ 0x00000C1E, 0x00000449, 0x00000B3A, 0x00000B3E, 0x00000B46, 0x00000A7A, 0x00000A7E, 0x00000A5E, 0x00000449, 0x00000449, 0x00000449, 0x00000BC4,
+ 0x00000A36, 0x00000791, 0x00000799, 0x000007A1, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000A86, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000E7C, 0x00000E7C, 0x00000EBC, 0x00000EFC, 0x00000E7C, 0x00000E7C, 0x00000E7C, 0x00000E7C,
+ 0x00000E7C, 0x00000E7C, 0x00000F34, 0x00000F74, 0x00000FB4, 0x00000FC4, 0x00001004, 0x00001010, 0x00000E7C, 0x00000E7C, 0x00001050, 0x00000E7C,
+ 0x00000E7C, 0x00000E7C, 0x00001088, 0x000010C8, 0x00001108, 0x00001140, 0x00001174, 0x000011A0, 0x000011DC, 0x00001214, 0x00001230, 0x00001270,
+ 0x00000A20, 0x00000CE9, 0x00000A60, 0x00000A9F, 0x000001A0, 0x000001A0, 0x00000ADF, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x00000B08, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000B48,
+ 0x000001A0, 0x00000B6E, 0x00000BA9, 0x00000BE9, 0x00000C29, 0x00000D29, 0x00000C69, 0x00000D69, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x00000DA9, 0x00000DB9, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000CA9,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000007A9, 0x0000039F, 0x00000AB6, 0x00000AB6,
+ 0x000007B1, 0x000005C2, 0x0000039F, 0x000004BF, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000A3E,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x000007B9, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000004C6, 0x000007C0, 0x000007C7, 0x000007CE, 0x00000416, 0x000007D6, 0x00000514, 0x0000039F,
+ 0x000004AC, 0x000007DD, 0x0000039F, 0x000007E3, 0x00000416, 0x000007E8, 0x000007F0, 0x0000039F, 0x0000039F, 0x000007F5, 0x000004C6, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x000006D2, 0x000007FD, 0x00000416, 0x00000546, 0x00000529, 0x00000804, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x000007C0, 0x0000080C, 0x0000039F, 0x0000039F, 0x00000814, 0x0000081C, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x00000820, 0x00000828, 0x0000039F, 0x0000039F, 0x00000830, 0x00000529, 0x000007B5, 0x0000039F, 0x00000838, 0x0000039F, 0x0000039F,
+ 0x000005B2, 0x00000840, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000845, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000084C, 0x00000854, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000857, 0x00000529, 0x0000085F,
+ 0x00000863, 0x0000086B, 0x0000039F, 0x00000872, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000879, 0x0000039F, 0x0000039F, 0x00000881, 0x00000887, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000088D, 0x00000895, 0x0000039F, 0x00000899, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x00000548, 0x00000416, 0x000007B9, 0x000008A1, 0x0000039F, 0x0000039F, 0x0000039F, 0x000008A4, 0x000008AC, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000008B4, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x000008BA, 0x0000039F, 0x000008C0, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x000007E4, 0x0000039F, 0x000008C6, 0x0000039F, 0x0000039F, 0x000008CE, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000004E0, 0x00000BCC, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000003ED, 0x00000BF9, 0x0000056A, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000008D5, 0x000008DD, 0x000008E3, 0x0000039F,
+ 0x000008E9, 0x00000AB6, 0x00000AB6, 0x00000B4E, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000AB6, 0x00000ABF,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x000003C6, 0x0000039F, 0x000007A4, 0x0000039F, 0x000003C1, 0x0000039F, 0x000007A7, 0x0000039F, 0x000008F1,
+ 0x00000A46, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000003ED, 0x000008F9, 0x000003ED, 0x00000900, 0x00000907, 0x00000C01, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000C09, 0x0000090F, 0x0000039F, 0x0000039F, 0x000007E4, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x000008C0, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x00000810, 0x0000039F, 0x00000914, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000091C, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000B5A, 0x00000AB6,
+ 0x00000AB6, 0x00000B16, 0x00000B5F, 0x00000B63, 0x00000B1E, 0x00000924, 0x000003C1, 0x0000039F, 0x0000092A, 0x0000039F, 0x000007A6, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x000006A7, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000B68, 0x000007B1, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000B6F, 0x00000AB6, 0x00000AB6, 0x00000B76,
+ 0x00000B7E, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000092E, 0x0000095D, 0x00000960, 0x00000968, 0x0000049C, 0x0000096E, 0x00000976, 0x0000039F,
+ 0x0000097E, 0x00000985, 0x0000098D, 0x0000039F, 0x0000039F, 0x0000049C, 0x00000995, 0x0000099C, 0x0000049C, 0x000009A4, 0x000009AB, 0x000009B3,
+ 0x0000049C, 0x0000049C, 0x0000039F, 0x0000049C, 0x000009BB, 0x0000049C, 0x000009C3, 0x000009CB, 0x000009D1, 0x000009D7, 0x000009DF, 0x0000039F,
+ 0x0000039F, 0x0000049C, 0x0000049C, 0x000009E7, 0x0000039F, 0x0000049C, 0x000009EF, 0x0000049C, 0x000009F7, 0x00000449, 0x00000A9E, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000AA6, 0x0000049C, 0x000009FE, 0x0000039F,
+ 0x000005B2, 0x0000049C, 0x00000A06, 0x00000BF1, 0x0000097A, 0x00000A0E, 0x0000097A, 0x00000A16, 0x00000A1E, 0x0000049C, 0x0000049C, 0x0000049C,
+ 0x0000049C, 0x0000049C, 0x0000049C, 0x00000A26, 0x0000039F, 0x0000049C, 0x0000049C, 0x00000A2E, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000C26, 0x00000449, 0x00000C2B, 0x0000039F,
+ 0x0000039F, 0x00000488, 0x00000C33, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x00000C3B, 0x00000C43, 0x00000C4B,
+ 0x00000C53, 0x00000C5B, 0x00000C63, 0x0000039F, 0x00000B52, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x00000B5A, 0x00000AB6, 0x00000B86, 0x00000AB6, 0x00000B8E, 0x00000B93, 0x0000039F, 0x0000039F, 0x00000AB6, 0x00000AB6, 0x00000AB6,
+ 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000B16, 0x00000B9B, 0x00000BA0, 0x00000BA4, 0x00000BAC,
+ 0x00000BB4, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000AB6, 0x00000BBC, 0x00000AB6, 0x00000AC2, 0x00000A4E, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F,
+ 0x0000039F, 0x0000039F, 0x0000039F, 0x0000039F, 0x0000092E, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x000003ED, 0x000003ED, 0x000003ED, 0x000003ED, 0x000003ED, 0x000003ED, 0x000003ED, 0x00000BDC, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4, 0x00000BD4,
+ 0x00000BD4, 0x0001037E, 0x0001037E, 0x0001037E, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00540000, 0x000C0000, 0x00540000, 0x00580000, 0x000C0000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x000C0000, 0x000C0000, 0x000C0000, 0x00540000,
+ 0x00580000, 0x00380000, 0x00380000, 0x00200000, 0x00200000, 0x00200000, 0x00380000, 0x00380000, 0x003A0029, 0x00390028, 0x00380000, 0x001C0000,
+ 0x00140000, 0x001C0000, 0x00140000, 0x00140000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00140000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A005D,
+ 0x00380000, 0x0039005B, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A007D, 0x00380000, 0x0039007B, 0x00380000, 0x00100000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x000C0000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00140000, 0x00380000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00100000, 0x00380000, 0x00380000, 0x00200000, 0x00200000, 0x00180000, 0x00180000, 0x00380000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00180000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00200000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00440000, 0x00340000,
+ 0x00440000, 0x00340000, 0x00340000, 0x00440000, 0x00340000, 0x00340000, 0x00440000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00380000, 0x00380000,
+ 0x00040000, 0x00200000, 0x00200000, 0x00040000, 0x00140000, 0x00040000, 0x00380000, 0x00380000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00200000, 0x00080000, 0x00080000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00340000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00080000, 0x00380000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00040000, 0x00040000, 0x00340000, 0x00340000, 0x00380000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00040000, 0x00040000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00340000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00440000, 0x00440000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00440000, 0x00000000, 0x00000000, 0x00340000, 0x00440000, 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00200000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00340000, 0x003A0F3B, 0x00390F3A, 0x003A0F3D, 0x00390F3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00580000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x003A169C, 0x0039169B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00100000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00580000, 0x00580000, 0x00580000, 0x00580000, 0x00580000, 0x00580000, 0x00580000, 0x00580000,
+ 0x00580000, 0x00580000, 0x00580000, 0x00100000, 0x00100000, 0x00100000, 0x00000000, 0x00440000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x002C0000, 0x004C0000, 0x00240000, 0x00400000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00180000, 0x00000000, 0x00000000, 0x00000000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x001C0000, 0x001C0000, 0x00380000, 0x003A207E, 0x0039207D, 0x00000000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x001C0000, 0x001C0000, 0x00380000, 0x003A208E, 0x0039208D, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00000000, 0x00380000, 0x00000000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x003A232A, 0x00392329, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00580000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x003A3009, 0x00393008, 0x003A300B, 0x0039300A, 0x003A300D, 0x0039300C, 0x003A300F, 0x0039300E,
+ 0x003A3011, 0x00393010, 0x00380000, 0x00380000, 0x003A3015, 0x00393014, 0x003A3017, 0x00393016, 0x003A3019, 0x00393018, 0x003A301B, 0x0039301A,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00380000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00340000, 0x00440000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003AFF3D,
+ 0x00380000, 0x0039FF3B, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003AFF5D, 0x00380000, 0x0039FF5B, 0x00380000, 0x003AFF60,
+ 0x0039FF5F, 0x00380000, 0x003AFF63, 0x0039FF62, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00440000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x001C0000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00000000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00440000, 0x00000000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000,
+ 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00380000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00000000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00340000, 0x00340000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00440000, 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00440000, 0x00440000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00440000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00440000, 0x00440000, 0x00000000, 0x00380000, 0x00380000, 0x00200000, 0x00200000, 0x00200000, 0x00380000, 0x00380000,
+ 0x003AFF09, 0x0039FF08, 0x00380000, 0x001C0000, 0x00140000, 0x001C0000, 0x00140000, 0x00140000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00140000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00340000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180000, 0x00180000, 0x00180000, 0x00180000,
+ 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x001C0000, 0x00200000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x001C0000, 0x001C0000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00200000, 0x00200000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00580000, 0x000C0000, 0x00280000, 0x00480000, 0x003C0000, 0x00300000, 0x00500000, 0x00140000, 0x00200000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00140000, 0x00380000, 0x00140000, 0x00000000,
+ 0x00380000, 0x00140000, 0x00380000, 0x00380000, 0x00380000, 0x003AFE5A, 0x0039FE59, 0x003AFE5C, 0x0039FE5B, 0x003AFE5E, 0x0039FE5D, 0x00200000,
+ 0x00200000, 0x00200000, 0x00380000, 0x00380000, 0x00380000, 0x00200000, 0x00200000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00100000, 0x00100000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000,
+ 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00080000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00140000, 0x003A2046, 0x00392045, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00580000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A2309, 0x00392308, 0x003A230B, 0x0039230A,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A2769, 0x00392768, 0x003A276B, 0x0039276A, 0x003A276D, 0x0039276C, 0x003A276F, 0x0039276E,
+ 0x003A2771, 0x00392770, 0x003A2773, 0x00392772, 0x003A2775, 0x00392774, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A27C6, 0x003927C5, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A27E7, 0x003927E6,
+ 0x003A27E9, 0x003927E8, 0x003A27EB, 0x003927EA, 0x003A27ED, 0x003927EC, 0x003A27EF, 0x003927EE, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x003A2984, 0x00392983, 0x003A2986, 0x00392985, 0x003A2988, 0x00392987, 0x003A298A, 0x00392989, 0x003A298C,
+ 0x0039298B, 0x003A2990, 0x0039298F, 0x003A298E, 0x0039298D, 0x003A2992, 0x00392991, 0x003A2994, 0x00392993, 0x003A2996, 0x00392995, 0x003A2998,
+ 0x00392997, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A29D9, 0x003929D8, 0x003A29DB, 0x003929DA, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x003A29FD, 0x003929FC, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x003A2E23, 0x00392E22, 0x003A2E25, 0x00392E24, 0x003A2E27, 0x00392E26, 0x003A2E29, 0x00392E28, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x003A2E56, 0x00392E55, 0x003A2E58,
+ 0x00392E57, 0x003A2E5A, 0x00392E59, 0x003A2E5C, 0x00392E5B, 0x00380000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00000000,
+ 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000,
+ 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000,
+ 0x00340000, 0x00000000, 0x00000000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00340000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x00040000,
+ 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000,
+ 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x00040000,
+ 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00000000,
+ 0x00040000, 0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000,
+ 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ };
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs
index f418d4e14a..1a04e783e4 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs
@@ -1580,7 +1580,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
}
///
- /// Check if a a directionality is neutral for rules N1 and N2
+ /// Check if a directionality is neutral for rules N1 and N2
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static bool IsNeutralClass(BidiClass direction)
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/GraphemeBreak.trie.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/GraphemeBreak.trie.cs
index e193b0f56f..a9b2e92fbe 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/GraphemeBreak.trie.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/GraphemeBreak.trie.cs
@@ -1,414 +1,865 @@
+//---------------------------------------------------------------------------------------------------
+//
+// This code was generated by UnicodeDataGenerator.
+// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
+// "
+//---------------------------------------------------------------------------------------------------
+
using System;
-namespace Avalonia.Media.TextFormatting.Unicode
+using System.Runtime.CompilerServices;
+
+namespace Avalonia.Media.TextFormatting.Unicode;
+
+internal static class GraphemeBreakTrie
{
- internal static class GraphemeBreakTrie
+ public static UnicodeTrie Trie
{
- public static ReadOnlySpan Data => new byte[]
- {
- 0, 16, 14, 0, 0, 0, 0, 0, 160, 157, 0, 0, 90, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 114, 3, 0, 0, 138, 3, 0, 0, 146, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0,
- 98, 3, 0, 0, 106, 3, 0, 0, 154, 3, 0, 0, 162, 3, 0, 0, 158, 3, 0, 0, 166, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 174, 3, 0, 0, 182, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 186, 3, 0, 0, 194, 3, 0, 0, 202, 3, 0, 0,
- 210, 3, 0, 0, 218, 3, 0, 0, 226, 3, 0, 0, 232, 3, 0, 0, 240, 3, 0, 0, 98, 3, 0, 0, 106, 3, 0, 0, 245, 3, 0, 0, 253, 3, 0, 0, 2, 4, 0, 0, 10, 4, 0, 0, 16, 4, 0, 0, 24, 4, 0, 0, 23, 4, 0, 0, 31, 4, 0, 0, 36, 4, 0, 0, 44, 4, 0, 0, 178, 4, 0, 0, 185, 4, 0, 0, 189, 4, 0, 0, 98, 3, 0, 0, 52, 4, 0, 0, 98, 3, 0, 0, 196, 4, 0, 0, 60, 4, 0, 0,
- 204, 4, 0, 0, 206, 4, 0, 0, 214, 4, 0, 0, 222, 4, 0, 0, 230, 4, 0, 0, 231, 4, 0, 0, 239, 4, 0, 0, 247, 4, 0, 0, 255, 4, 0, 0, 0, 5, 0, 0, 8, 5, 0, 0, 13, 5, 0, 0, 255, 4, 0, 0, 0, 5, 0, 0, 21, 5, 0, 0, 29, 5, 0, 0, 230, 4, 0, 0, 37, 5, 0, 0, 45, 5, 0, 0, 222, 4, 0, 0, 53, 5, 0, 0, 205, 4, 0, 0, 61, 5, 0, 0, 98, 3, 0, 0, 69, 5, 0, 0,
- 37, 5, 0, 0, 77, 5, 0, 0, 222, 4, 0, 0, 230, 4, 0, 0, 83, 5, 0, 0, 91, 5, 0, 0, 99, 5, 0, 0, 107, 5, 0, 0, 109, 5, 0, 0, 68, 4, 0, 0, 222, 4, 0, 0, 230, 4, 0, 0, 98, 3, 0, 0, 117, 5, 0, 0, 113, 8, 0, 0, 98, 3, 0, 0, 125, 5, 0, 0, 132, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 136, 5, 0, 0, 144, 5, 0, 0, 98, 3, 0, 0, 148, 5, 0, 0, 155, 5, 0, 0,
- 98, 3, 0, 0, 163, 5, 0, 0, 171, 5, 0, 0, 178, 5, 0, 0, 52, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 186, 5, 0, 0, 194, 5, 0, 0, 202, 5, 0, 0, 210, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 149, 8, 0, 0, 149, 8, 0, 0, 149, 8, 0, 0, 158, 8, 0, 0, 158, 8, 0, 0, 164, 8, 0, 0, 182, 8, 0, 0, 182, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 183, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 218, 5, 0, 0, 224, 5, 0, 0, 25, 5, 0, 0, 25, 5, 0, 0, 98, 3, 0, 0, 230, 5, 0, 0, 238, 5, 0, 0, 98, 3, 0, 0, 136, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 81, 5, 0, 0,
- 243, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 251, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 2, 6, 0, 0, 98, 3, 0, 0, 9, 6, 0, 0, 17, 6, 0, 0, 98, 3, 0, 0, 150, 3, 0, 0, 15, 4, 0, 0, 98, 3, 0, 0, 25, 6, 0, 0, 28, 6, 0, 0, 36, 6, 0, 0, 42, 6, 0, 0, 50, 6, 0, 0, 58, 6, 0, 0,
- 98, 3, 0, 0, 65, 6, 0, 0, 98, 3, 0, 0, 72, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 78, 6, 0, 0, 86, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 142, 4, 0, 0, 148, 4, 0, 0, 104, 6, 0, 0, 94, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 150, 3, 0, 0, 181, 5, 0, 0, 98, 3, 0, 0, 205, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 212, 8, 0, 0, 219, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 222, 8, 0, 0, 229, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 229, 8, 0, 0, 98, 3, 0, 0, 234, 8, 0, 0, 240, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 248, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 254, 8, 0, 0, 6, 9, 0, 0, 8, 9, 0, 0, 16, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 28, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 35, 9, 0, 0, 42, 9, 0, 0, 49, 9, 0, 0, 57, 9, 0, 0, 60, 9, 0, 0, 68, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 76, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 83, 9, 0, 0, 98, 3, 0, 0, 91, 9, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 93, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 227, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 154, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 99, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 107, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 97, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 114, 6, 0, 0, 25, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 150, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 122, 6, 0, 0, 130, 6, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 13, 8, 0, 0, 118, 8, 0, 0, 138, 6, 0, 0, 146, 6, 0, 0, 98, 3, 0, 0, 154, 6, 0, 0, 161, 6, 0, 0, 150, 8, 0, 0, 204, 4, 0, 0, 166, 6, 0, 0, 126, 8, 0, 0, 174, 6, 0, 0, 98, 3, 0, 0, 180, 6, 0, 0, 188, 6, 0, 0, 192, 6, 0, 0, 98, 3, 0, 0, 200, 6, 0, 0, 6, 4, 0, 0, 208, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 216, 6, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0,
- 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0,
- 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0,
- 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0,
- 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0,
- 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0,
- 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0,
- 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0,
- 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0,
- 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0,
- 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0,
- 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0,
- 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0,
- 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0, 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 197, 8, 0, 0, 191, 8, 0, 0, 192, 8, 0, 0, 193, 8, 0, 0,
- 194, 8, 0, 0, 195, 8, 0, 0, 196, 8, 0, 0, 172, 8, 0, 0, 179, 8, 0, 0, 183, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 220, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 166, 3, 0, 0, 166, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 114, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 25, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 156, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 232, 13, 0, 0, 232, 13, 0, 0, 40, 14, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 104, 14, 0, 0, 120, 14, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0,
- 136, 13, 0, 0, 184, 14, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 136, 13, 0, 0, 232, 14, 0, 0, 40, 15, 0, 0, 104, 15, 0, 0, 160, 15, 0, 0, 136, 13, 0, 0, 212, 15, 0, 0, 8, 16, 0, 0, 64, 16, 0, 0, 92, 16, 0, 0, 144, 16, 0, 0, 68, 11, 0, 0, 116, 11, 0, 0, 226, 9, 0, 0, 33, 10, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 92, 10, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 177, 11, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 127, 10, 0, 0, 149, 1, 0, 0, 241, 11, 0, 0, 180, 10, 0, 0, 44, 12, 0, 0, 108, 12, 0, 0, 166, 12, 0, 0, 230, 12, 0, 0, 38, 13, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0,
- 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 149, 1, 0, 0, 244, 10, 0, 0, 4, 11, 0, 0, 16, 7, 0, 0, 8, 4, 0, 0, 17, 4, 0, 0, 20, 7, 0, 0, 50, 6, 0, 0, 74, 4, 0, 0, 82, 4, 0, 0, 98, 3, 0, 0, 18, 4, 0, 0, 26, 7, 0, 0, 133, 8, 0, 0, 32, 7, 0, 0, 50, 6, 0, 0, 37, 7, 0, 0, 90, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 45, 7, 0, 0, 6, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 227, 3, 0, 0, 53, 7, 0, 0, 107, 5, 0, 0, 109, 5, 0, 0, 61, 7, 0, 0, 69, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 75, 7, 0, 0, 83, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 91, 7, 0, 0, 99, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 104, 7, 0, 0, 112, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 120, 7, 0, 0, 35, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 128, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 183, 3, 0, 0, 136, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 141, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 94, 4, 0, 0, 102, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 148, 7, 0, 0, 156, 7, 0, 0, 164, 7, 0, 0, 106, 4, 0, 0, 171, 7, 0, 0, 98, 3, 0, 0, 114, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 178, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 186, 7, 0, 0, 192, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 198, 7, 0, 0, 122, 4, 0, 0, 98, 3, 0, 0, 206, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 212, 7, 0, 0, 130, 4, 0, 0, 218, 7, 0, 0, 226, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 134, 3, 0, 0, 234, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 14, 8, 0, 0, 97, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 163, 4, 0, 0, 30, 8, 0, 0, 6, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 38, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 138, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 154, 3, 0, 0, 170, 4, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0,
- 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0,
- 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0,
- 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 138, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 228, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 35, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 236, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 244, 6, 0, 0, 248, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 81, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 246, 6, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 0, 7, 0, 0, 98, 3, 0, 0, 183, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 31, 4, 0, 0, 98, 3, 0, 0, 8, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 240, 7, 0, 0, 98, 3, 0, 0, 246, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 252, 7, 0, 0, 141, 8, 0, 0, 2, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 9, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 154, 3, 0, 0, 22, 8, 0, 0, 17, 4, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 154, 3, 0, 0, 46, 8, 0, 0, 154, 3, 0, 0, 53, 8, 0, 0, 60, 8, 0, 0, 68, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 76, 8, 0, 0, 84, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 33, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 246, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 224, 6, 0, 0, 98, 3, 0, 0, 89, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 89, 8, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 246, 7, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 145, 5, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 104, 9, 0, 0, 234, 8, 0, 0, 98, 3, 0, 0, 109, 9, 0, 0, 117, 9, 0, 0, 124, 9, 0, 0, 21, 9, 0, 0, 105, 8, 0, 0, 132, 9, 0, 0, 139, 9, 0, 0, 147, 9, 0, 0, 21, 9, 0, 0,
- 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 97, 8, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 22, 9, 0, 0, 155, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0,
- 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 159, 9, 0, 0, 98, 3, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 163, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 171, 9, 0, 0, 21, 9, 0, 0, 179, 9, 0, 0, 98, 3, 0, 0, 185, 9, 0, 0, 98, 3, 0, 0, 193, 9, 0, 0, 198, 9, 0, 0,
- 21, 9, 0, 0, 21, 9, 0, 0, 94, 8, 0, 0, 202, 9, 0, 0, 209, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0, 98, 3, 0, 0,
- 98, 3, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0,
- 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 21, 9, 0, 0, 22, 9, 0, 0, 89, 3, 1, 0, 89, 3, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
- 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 6, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
- 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
- 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,
- 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
- 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
- 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
- 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0,
- 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
- 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0,
- 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0,
- 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
- }
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get => new(Data, 0x000E1000, 0x00000000);
+ }
+
+ private static ReadOnlySpan Data => new uint[]
+ {
+ 0x0000035A, 0x00000362, 0x0000036A, 0x00000372, 0x0000038A, 0x00000392, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A,
+ 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A,
+ 0x0000039A, 0x000003A2, 0x0000039E, 0x000003A6, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A,
+ 0x000003AE, 0x000003B6, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x00000362, 0x0000036A, 0x000003BA, 0x000003C2, 0x000003CA, 0x000003D2,
+ 0x000003DA, 0x000003E2, 0x000003E8, 0x000003F0, 0x00000362, 0x0000036A, 0x000003F5, 0x000003FD, 0x00000402, 0x0000040A, 0x00000410, 0x00000418,
+ 0x00000417, 0x0000041F, 0x00000424, 0x0000042C, 0x000004B2, 0x000004B9, 0x000004BD, 0x00000362, 0x00000434, 0x00000362, 0x000004C4, 0x0000043C,
+ 0x000004CC, 0x000004CE, 0x000004D6, 0x000004DE, 0x000004E6, 0x000004E7, 0x000004EF, 0x000004F7, 0x000004FF, 0x00000500, 0x00000508, 0x0000050D,
+ 0x000004FF, 0x00000500, 0x00000515, 0x0000051D, 0x000004E6, 0x00000525, 0x0000052D, 0x000004DE, 0x00000535, 0x000004CD, 0x0000053D, 0x00000362,
+ 0x00000545, 0x00000525, 0x0000054D, 0x000004DE, 0x000004E6, 0x00000553, 0x0000055B, 0x00000563, 0x0000056B, 0x0000056D, 0x00000444, 0x000004DE,
+ 0x000004E6, 0x00000362, 0x00000575, 0x00000871, 0x00000362, 0x0000057D, 0x00000584, 0x00000362, 0x00000362, 0x00000588, 0x00000590, 0x00000362,
+ 0x00000594, 0x0000059B, 0x00000362, 0x000005A3, 0x000005AB, 0x000005B2, 0x00000534, 0x00000362, 0x00000362, 0x000005BA, 0x000005C2, 0x000005CA,
+ 0x000005D2, 0x00000362, 0x00000362, 0x00000362, 0x00000895, 0x00000895, 0x00000895, 0x0000089E, 0x0000089E, 0x000008A4, 0x000008B6, 0x000008B6,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000003B7, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000005DA, 0x000005E0, 0x00000519, 0x00000519, 0x00000362, 0x000005E6, 0x000005EE, 0x00000362,
+ 0x00000488, 0x00000362, 0x00000362, 0x00000362, 0x00000551, 0x000005F3, 0x00000362, 0x00000362, 0x00000362, 0x000005FB, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000602, 0x00000362, 0x00000609, 0x00000611, 0x00000362, 0x00000396, 0x0000040F, 0x00000362,
+ 0x00000619, 0x0000061C, 0x00000624, 0x0000062A, 0x00000632, 0x0000063A, 0x00000362, 0x00000641, 0x00000362, 0x00000648, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x0000064E, 0x00000656, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000039A, 0x0000039A,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000048E, 0x00000494, 0x00000668, 0x0000035E, 0x00000362, 0x00000362, 0x00000396, 0x000005B5,
+ 0x00000362, 0x000008CD, 0x00000362, 0x00000362, 0x000008D4, 0x000008DB, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000008DE, 0x000008E5, 0x00000362, 0x00000362, 0x000008E5, 0x00000362, 0x000008EA, 0x000008F0,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000008F8, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x000008FE, 0x00000906, 0x00000908, 0x00000910, 0x00000915, 0x00000915, 0x00000915, 0x0000091C, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000923, 0x0000092A, 0x00000931, 0x00000939, 0x0000093C, 0x00000944, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000094C, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000953, 0x00000362, 0x0000095B, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000065D,
+ 0x00000362, 0x00000362, 0x00000362, 0x000003E3, 0x00000362, 0x00000362, 0x00000362, 0x0000039A, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000663, 0x00000362, 0x00000362, 0x0000066B, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000961, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000672,
+ 0x00000419, 0x00000362, 0x00000362, 0x00000596, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x0000067A, 0x00000682, 0x00000362, 0x00000362, 0x0000080D, 0x00000876, 0x0000068A, 0x00000692, 0x00000362, 0x0000069A, 0x000006A1, 0x00000896,
+ 0x000004CC, 0x000006A6, 0x0000087E, 0x000006AE, 0x00000362, 0x000006B4, 0x000006BC, 0x000006C0, 0x00000362, 0x000006C8, 0x00000406, 0x000006D0,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006D8, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2,
+ 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0,
+ 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5,
+ 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3,
+ 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1,
+ 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF,
+ 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4,
+ 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2,
+ 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0,
+ 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5,
+ 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3,
+ 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1,
+ 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF,
+ 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4,
+ 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2,
+ 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0,
+ 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5,
+ 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3,
+ 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1,
+ 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF,
+ 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4,
+ 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2,
+ 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0,
+ 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5,
+ 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3,
+ 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1,
+ 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF,
+ 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4,
+ 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2,
+ 0x000008C3, 0x000008C4, 0x000008C5, 0x000008BF, 0x000008C0, 0x000008C1, 0x000008C2, 0x000008C3, 0x000008C4, 0x000008AC, 0x000008B3, 0x000008B7,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006DC, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000003A6, 0x000003A6, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000372,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000419, 0x00000362, 0x00000362, 0x0000049C, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000DE8, 0x00000DE8, 0x00000E28, 0x00000D88, 0x00000D88, 0x00000D88, 0x00000D88, 0x00000D88,
+ 0x00000D88, 0x00000D88, 0x00000D88, 0x00000D88, 0x00000E68, 0x00000E78, 0x00000D88, 0x00000D88, 0x00000D88, 0x00000D88, 0x00000EB8, 0x00000D88,
+ 0x00000D88, 0x00000D88, 0x00000EE8, 0x00000F28, 0x00000F68, 0x00000FA0, 0x00000D88, 0x00000FD4, 0x00001008, 0x00001040, 0x0000105C, 0x00001090,
+ 0x00000B44, 0x00000B74, 0x000009E2, 0x00000A21, 0x00000195, 0x00000195, 0x00000A5C, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000BB1, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000A7F,
+ 0x00000195, 0x00000BF1, 0x00000AB4, 0x00000C2C, 0x00000C6C, 0x00000CA6, 0x00000CE6, 0x00000D26, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195,
+ 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000195, 0x00000AF4, 0x00000B04, 0x00000710, 0x00000408,
+ 0x00000411, 0x00000714, 0x00000632, 0x0000044A, 0x00000452, 0x00000362, 0x00000412, 0x0000071A, 0x00000885, 0x00000720, 0x00000632, 0x00000725,
+ 0x0000045A, 0x00000362, 0x00000362, 0x0000072D, 0x00000406, 0x00000362, 0x00000362, 0x00000362, 0x000003E3, 0x00000735, 0x0000056B, 0x0000056D,
+ 0x0000073D, 0x00000745, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000074B, 0x00000753, 0x00000362, 0x00000362, 0x0000075B,
+ 0x00000763, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000768, 0x00000770, 0x00000362, 0x00000362, 0x00000778,
+ 0x00000423, 0x00000362, 0x00000362, 0x00000780, 0x00000362, 0x00000362, 0x000003B7, 0x00000788, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x0000078D, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000045E, 0x00000466,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000794, 0x0000079C, 0x000007A4, 0x0000046A, 0x000007AB, 0x00000362, 0x00000472, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000007B2, 0x00000362,
+ 0x00000362, 0x000007BA, 0x000007C0, 0x00000362, 0x00000362, 0x00000362, 0x000007C6, 0x0000047A, 0x00000362, 0x000007CE, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000007D4, 0x00000482, 0x000007DA, 0x000007E2,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000386, 0x000007EA, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000080E,
+ 0x00000361, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x000004A3, 0x0000081E, 0x00000706, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000826, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000038A, 0x0000039A, 0x0000039A, 0x0000039A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000039A, 0x0000039A, 0x0000039A, 0x0000039A, 0x0000039A, 0x0000039A, 0x0000039A, 0x000004AA,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A,
+ 0x0000038A, 0x0000038A, 0x0000038A, 0x0000038A, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006E4, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000423, 0x00000362, 0x00000362, 0x00000362, 0x000006EC, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006F4, 0x000006F8, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000551, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006F6, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000700, 0x00000362, 0x000003B7,
+ 0x00000362, 0x00000362, 0x0000041F, 0x00000362, 0x00000708, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000007F0, 0x00000362, 0x000007F6, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x000007FC, 0x0000088D, 0x00000802, 0x00000362, 0x00000362, 0x00000809, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x0000039A, 0x00000816, 0x00000411, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x0000039A, 0x0000082E, 0x0000039A, 0x00000835, 0x0000083C, 0x00000844, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x0000084C, 0x00000854, 0x00000362, 0x00000362, 0x00000721, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000007F6, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000006E0, 0x00000362, 0x00000859,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000859, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x000007F6, 0x00000362, 0x00000362, 0x00000362, 0x00000591, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000968, 0x000008EA,
+ 0x00000362, 0x0000096D, 0x00000975, 0x0000097C, 0x00000915, 0x00000869, 0x00000984, 0x0000098B, 0x00000993, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000861, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000916, 0x0000099B, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x0000099F, 0x00000362, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000362, 0x00000362,
+ 0x00000362, 0x000009A3, 0x00000362, 0x00000362, 0x000009AB, 0x00000915, 0x000009B3, 0x00000362, 0x000009B9, 0x00000362, 0x000009C1, 0x000009C6,
+ 0x00000915, 0x00000915, 0x0000085E, 0x000009CA, 0x000009D1, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362, 0x00000362,
+ 0x00000362, 0x00000362, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915,
+ 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000915, 0x00000916, 0x00010359, 0x00010359,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000009, 0x00000001,
+ 0x00000001, 0x00000002, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000012, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000C, 0x0000000C, 0x0000000C, 0x0000000C,
+ 0x0000000C, 0x0000000C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x0000000C, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000C, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000C, 0x0000000C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000C, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x0000000C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x0000000C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000000, 0x0000000C, 0x0000000C, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x0000000E, 0x00000006, 0x0000000C, 0x0000000E, 0x0000000C, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000C, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000C, 0x0000000C, 0x0000000C, 0x0000000C,
+ 0x0000000C, 0x0000000C, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000C, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000C, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000001, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000006, 0x00000011, 0x00000001, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
+ 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x0000000E, 0x00000006,
+ 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x0000000E,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006,
+ 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x0000000E,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E,
+ 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x00000006,
+ 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000,
+ 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000006, 0x0000000E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E,
+ 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x0000000E,
+ 0x0000000E, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x0000000E, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000000, 0x0000000E, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x0000000E, 0x00000006, 0x00000006,
+ 0x0000000E, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x00000006, 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x00000006,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x0000000E, 0x0000000E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000006, 0x0000000E, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000006,
+ 0x00000006, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000006, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
+ 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
+ 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E,
+ 0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
+ 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
+ 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
+ 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
+ 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
+ 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
+ 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F,
+ 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F,
+ 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
+ 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F,
+ 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F,
+ 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F, 0x0000000F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000A, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B,
+ 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B,
+ 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000A, 0x0000000B, 0x0000000B, 0x0000000B,
+ 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B,
+ 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B, 0x0000000B,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000000, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
+ 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ };
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/PropertyValueAliasHelper.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/PropertyValueAliasHelper.cs
index 69814287ea..c3909ce2e0 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/PropertyValueAliasHelper.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/PropertyValueAliasHelper.cs
@@ -175,11 +175,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static string GetTag(Script script)
{
- if(!s_scriptToTag.ContainsKey(script))
+ if (!s_scriptToTag.TryGetValue(script, out var value))
{
return "Zzzz";
}
- return s_scriptToTag[script];
+ return value;
}
private static readonly Dictionary s_tagToScript =
@@ -353,11 +353,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static Script GetScript(string tag)
{
- if(!s_tagToScript.ContainsKey(tag))
+ if (!s_tagToScript.TryGetValue(tag, out var value))
{
return Script.Unknown;
}
- return s_tagToScript[tag];
+ return value;
}
private static readonly Dictionary s_tagToGeneralCategory =
@@ -404,11 +404,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static GeneralCategory GetGeneralCategory(string tag)
{
- if(!s_tagToGeneralCategory.ContainsKey(tag))
+ if (!s_tagToGeneralCategory.TryGetValue(tag, out var value))
{
return GeneralCategory.Other;
}
- return s_tagToGeneralCategory[tag];
+ return value;
}
private static readonly Dictionary s_tagToLineBreakClass =
@@ -460,11 +460,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static LineBreakClass GetLineBreakClass(string tag)
{
- if(!s_tagToLineBreakClass.ContainsKey(tag))
+ if (!s_tagToLineBreakClass.TryGetValue(tag, out var value))
{
return LineBreakClass.Unknown;
}
- return s_tagToLineBreakClass[tag];
+ return value;
}
private static readonly Dictionary s_tagToBidiPairedBracketType =
@@ -476,11 +476,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static BidiPairedBracketType GetBidiPairedBracketType(string tag)
{
- if(!s_tagToBidiPairedBracketType.ContainsKey(tag))
+ if (!s_tagToBidiPairedBracketType.TryGetValue(tag, out var value))
{
return BidiPairedBracketType.None;
}
- return s_tagToBidiPairedBracketType[tag];
+ return value;
}
private static readonly Dictionary s_tagToBidiClass =
@@ -512,11 +512,11 @@ namespace Avalonia.Media.TextFormatting.Unicode
public static BidiClass GetBidiClass(string tag)
{
- if(!s_tagToBidiClass.ContainsKey(tag))
+ if (!s_tagToBidiClass.TryGetValue(tag, out var value))
{
return BidiClass.LeftToRight;
}
- return s_tagToBidiClass[tag];
+ return value;
}
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.cs
index 0142a20790..82a3baab1a 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.cs
@@ -1,5 +1,4 @@
-using System.IO;
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
namespace Avalonia.Media.TextFormatting.Unicode
{
@@ -30,17 +29,6 @@ namespace Avalonia.Media.TextFormatting.Unicode
internal const int BIDIPAIREDBRACKEDTYPE_MASK = (1 << BIDIPAIREDBRACKEDTYPE_BITS) - 1;
internal const int BIDICLASS_MASK = (1 << BIDICLASS_BITS) - 1;
- private static readonly UnicodeTrie s_unicodeDataTrie;
- private static readonly UnicodeTrie s_graphemeBreakTrie;
- private static readonly UnicodeTrie s_biDiTrie;
-
- static UnicodeData()
- {
- s_unicodeDataTrie = new UnicodeTrie(UnicodeDataTrie.Data);
- s_graphemeBreakTrie = new UnicodeTrie(GraphemeBreakTrie.Data);
- s_biDiTrie = new UnicodeTrie(BidiTrie.Data);
- }
-
///
/// Gets the for a Unicode codepoint.
///
@@ -49,7 +37,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static GeneralCategory GetGeneralCategory(uint codepoint)
{
- return (GeneralCategory)(s_unicodeDataTrie.Get(codepoint) & CATEGORY_MASK);
+ return (GeneralCategory)(UnicodeDataTrie.Trie.Get(codepoint) & CATEGORY_MASK);
}
///
@@ -60,7 +48,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Script GetScript(uint codepoint)
{
- return (Script)((s_unicodeDataTrie.Get(codepoint) >> SCRIPT_SHIFT) & SCRIPT_MASK);
+ return (Script)((UnicodeDataTrie.Trie.Get(codepoint) >> SCRIPT_SHIFT) & SCRIPT_MASK);
}
///
@@ -71,7 +59,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static BidiClass GetBiDiClass(uint codepoint)
{
- return (BidiClass)((s_biDiTrie.Get(codepoint) >> BIDICLASS_SHIFT) & BIDICLASS_MASK);
+ return (BidiClass)((BidiTrie.Trie.Get(codepoint) >> BIDICLASS_SHIFT) & BIDICLASS_MASK);
}
///
@@ -82,7 +70,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static BidiPairedBracketType GetBiDiPairedBracketType(uint codepoint)
{
- return (BidiPairedBracketType)((s_biDiTrie.Get(codepoint) >> BIDIPAIREDBRACKEDTYPE_SHIFT) & BIDIPAIREDBRACKEDTYPE_MASK);
+ return (BidiPairedBracketType)((BidiTrie.Trie.Get(codepoint) >> BIDIPAIREDBRACKEDTYPE_SHIFT) & BIDIPAIREDBRACKEDTYPE_MASK);
}
///
@@ -93,7 +81,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Codepoint GetBiDiPairedBracket(uint codepoint)
{
- return new Codepoint((s_biDiTrie.Get(codepoint) & BIDIPAIREDBRACKED_MASK));
+ return new Codepoint(BidiTrie.Trie.Get(codepoint) & BIDIPAIREDBRACKED_MASK);
}
///
@@ -104,7 +92,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static LineBreakClass GetLineBreakClass(uint codepoint)
{
- return (LineBreakClass)((s_unicodeDataTrie.Get(codepoint) >> LINEBREAK_SHIFT) & LINEBREAK_MASK);
+ return (LineBreakClass)((UnicodeDataTrie.Trie.Get(codepoint) >> LINEBREAK_SHIFT) & LINEBREAK_MASK);
}
///
@@ -115,7 +103,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static GraphemeBreakClass GetGraphemeClusterBreak(uint codepoint)
{
- return (GraphemeBreakClass)s_graphemeBreakTrie.Get(codepoint);
+ return (GraphemeBreakClass)GraphemeBreakTrie.Trie.Get(codepoint);
}
}
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.trie.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.trie.cs
index 17201eab0e..33c5f09cab 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.trie.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeData.trie.cs
@@ -1,1099 +1,2292 @@
+//---------------------------------------------------------------------------------------------------
+//
+// This code was generated by UnicodeDataGenerator.
+// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
+// "
+//---------------------------------------------------------------------------------------------------
+
using System;
-namespace Avalonia.Media.TextFormatting.Unicode
+using System.Runtime.CompilerServices;
+
+namespace Avalonia.Media.TextFormatting.Unicode;
+
+internal static class UnicodeDataTrie
{
- internal static class UnicodeDataTrie
+ public static UnicodeTrie Trie
{
- public static ReadOnlySpan Data => new byte[]
- {
- 0, 0, 16, 0, 0, 0, 0, 0, 64, 169, 1, 0, 103, 4, 0, 0, 111, 4, 0, 0, 119, 4, 0, 0, 127, 4, 0, 0, 151, 4, 0, 0, 159, 4, 0, 0, 167, 4, 0, 0, 175, 4, 0, 0, 183, 4, 0, 0, 191, 4, 0, 0, 197, 4, 0, 0, 205, 4, 0, 0, 213, 4, 0, 0, 221, 4, 0, 0, 229, 4, 0, 0, 237, 4, 0, 0, 243, 4, 0, 0, 251, 4, 0, 0, 3, 5, 0, 0, 11, 5, 0, 0, 14, 5, 0, 0, 22, 5, 0, 0,
- 30, 5, 0, 0, 38, 5, 0, 0, 46, 5, 0, 0, 54, 5, 0, 0, 59, 5, 0, 0, 67, 5, 0, 0, 75, 5, 0, 0, 83, 5, 0, 0, 88, 5, 0, 0, 96, 5, 0, 0, 104, 5, 0, 0, 112, 5, 0, 0, 116, 5, 0, 0, 124, 5, 0, 0, 132, 5, 0, 0, 140, 5, 0, 0, 148, 5, 0, 0, 156, 5, 0, 0, 152, 5, 0, 0, 160, 5, 0, 0, 165, 5, 0, 0, 173, 5, 0, 0, 179, 5, 0, 0, 187, 5, 0, 0, 195, 5, 0, 0,
- 203, 5, 0, 0, 211, 5, 0, 0, 219, 5, 0, 0, 227, 5, 0, 0, 235, 5, 0, 0, 240, 5, 0, 0, 248, 5, 0, 0, 251, 5, 0, 0, 3, 6, 0, 0, 11, 6, 0, 0, 19, 6, 0, 0, 25, 6, 0, 0, 33, 6, 0, 0, 41, 6, 0, 0, 49, 6, 0, 0, 57, 6, 0, 0, 65, 6, 0, 0, 71, 19, 0, 0, 73, 6, 0, 0, 81, 6, 0, 0, 89, 6, 0, 0, 95, 6, 0, 0, 219, 5, 0, 0, 79, 19, 0, 0, 68, 23, 0, 0,
- 220, 19, 0, 0, 222, 19, 0, 0, 230, 19, 0, 0, 87, 19, 0, 0, 103, 6, 0, 0, 109, 6, 0, 0, 117, 6, 0, 0, 125, 6, 0, 0, 133, 6, 0, 0, 139, 6, 0, 0, 147, 6, 0, 0, 155, 6, 0, 0, 163, 6, 0, 0, 169, 6, 0, 0, 177, 6, 0, 0, 185, 6, 0, 0, 193, 6, 0, 0, 199, 6, 0, 0, 207, 6, 0, 0, 215, 6, 0, 0, 223, 6, 0, 0, 231, 6, 0, 0, 239, 6, 0, 0, 246, 6, 0, 0, 254, 6, 0, 0,
- 4, 7, 0, 0, 12, 7, 0, 0, 20, 7, 0, 0, 28, 7, 0, 0, 34, 7, 0, 0, 42, 7, 0, 0, 50, 7, 0, 0, 58, 7, 0, 0, 238, 19, 0, 0, 66, 7, 0, 0, 74, 7, 0, 0, 82, 7, 0, 0, 89, 7, 0, 0, 97, 7, 0, 0, 105, 7, 0, 0, 113, 7, 0, 0, 117, 7, 0, 0, 125, 7, 0, 0, 132, 7, 0, 0, 140, 7, 0, 0, 147, 7, 0, 0, 155, 7, 0, 0, 132, 7, 0, 0, 246, 19, 0, 0, 76, 23, 0, 0,
- 163, 7, 0, 0, 168, 7, 0, 0, 176, 7, 0, 0, 183, 7, 0, 0, 191, 7, 0, 0, 132, 7, 0, 0, 254, 19, 0, 0, 4, 20, 0, 0, 12, 20, 0, 0, 20, 20, 0, 0, 28, 20, 0, 0, 224, 17, 0, 0, 199, 7, 0, 0, 216, 18, 0, 0, 36, 20, 0, 0, 36, 20, 0, 0, 36, 20, 0, 0, 44, 20, 0, 0, 44, 20, 0, 0, 50, 20, 0, 0, 52, 20, 0, 0, 52, 20, 0, 0, 60, 20, 0, 0, 60, 20, 0, 0, 207, 7, 0, 0,
- 60, 20, 0, 0, 215, 7, 0, 0, 219, 7, 0, 0, 227, 7, 0, 0, 60, 20, 0, 0, 233, 7, 0, 0, 60, 20, 0, 0, 239, 7, 0, 0, 247, 7, 0, 0, 255, 7, 0, 0, 232, 17, 0, 0, 232, 17, 0, 0, 7, 8, 0, 0, 68, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0,
- 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 69, 20, 0, 0, 74, 20, 0, 0, 15, 8, 0, 0, 82, 20, 0, 0, 82, 20, 0, 0, 23, 8, 0, 0, 31, 8, 0, 0, 39, 8, 0, 0, 47, 8, 0, 0, 55, 8, 0, 0, 90, 20, 0, 0, 93, 20, 0, 0, 63, 8, 0, 0, 71, 8, 0, 0, 79, 8, 0, 0, 101, 20, 0, 0, 95, 19, 0, 0, 87, 8, 0, 0, 108, 20, 0, 0,
- 95, 8, 0, 0, 69, 20, 0, 0, 99, 8, 0, 0, 107, 8, 0, 0, 115, 8, 0, 0, 123, 8, 0, 0, 128, 8, 0, 0, 116, 20, 0, 0, 136, 8, 0, 0, 142, 8, 0, 0, 54, 25, 0, 0, 150, 8, 0, 0, 124, 20, 0, 0, 158, 8, 0, 0, 166, 8, 0, 0, 174, 8, 0, 0, 182, 8, 0, 0, 190, 8, 0, 0, 132, 7, 0, 0, 132, 20, 0, 0, 135, 20, 0, 0, 198, 8, 0, 0, 206, 8, 0, 0, 143, 20, 0, 0, 151, 20, 0, 0,
- 159, 20, 0, 0, 214, 8, 0, 0, 167, 20, 0, 0, 222, 8, 0, 0, 230, 8, 0, 0, 103, 19, 0, 0, 238, 8, 0, 0, 242, 8, 0, 0, 250, 8, 0, 0, 2, 9, 0, 0, 7, 5, 0, 0, 224, 18, 0, 0, 111, 19, 0, 0, 232, 18, 0, 0, 239, 18, 0, 0, 119, 19, 0, 0, 84, 23, 0, 0, 88, 23, 0, 0, 183, 4, 0, 0, 183, 4, 0, 0, 183, 4, 0, 0, 183, 4, 0, 0, 240, 17, 0, 0, 183, 4, 0, 0, 183, 4, 0, 0,
- 183, 4, 0, 0, 10, 9, 0, 0, 248, 17, 0, 0, 14, 9, 0, 0, 22, 9, 0, 0, 247, 18, 0, 0, 30, 9, 0, 0, 38, 9, 0, 0, 46, 9, 0, 0, 23, 24, 0, 0, 31, 24, 0, 0, 39, 24, 0, 0, 54, 9, 0, 0, 62, 9, 0, 0, 38, 25, 0, 0, 70, 9, 0, 0, 78, 9, 0, 0, 0, 18, 0, 0, 8, 18, 0, 0, 16, 18, 0, 0, 168, 23, 0, 0, 86, 9, 0, 0, 132, 24, 0, 0, 137, 24, 0, 0, 143, 24, 0, 0,
- 151, 24, 0, 0, 159, 24, 0, 0, 167, 24, 0, 0, 175, 24, 0, 0, 183, 24, 0, 0, 190, 24, 0, 0, 198, 24, 0, 0, 203, 24, 0, 0, 79, 24, 0, 0, 87, 24, 0, 0, 62, 25, 0, 0, 211, 24, 0, 0, 219, 24, 0, 0, 226, 24, 0, 0, 231, 24, 0, 0, 239, 24, 0, 0, 62, 25, 0, 0, 93, 9, 0, 0, 101, 9, 0, 0, 195, 23, 0, 0, 196, 23, 0, 0, 70, 25, 0, 0, 70, 25, 0, 0, 203, 23, 0, 0, 70, 25, 0, 0,
- 70, 25, 0, 0, 75, 25, 0, 0, 79, 25, 0, 0, 87, 25, 0, 0, 247, 24, 0, 0, 255, 24, 0, 0, 7, 25, 0, 0, 95, 25, 0, 0, 103, 25, 0, 0, 111, 25, 0, 0, 15, 25, 0, 0, 112, 25, 0, 0, 120, 25, 0, 0, 128, 25, 0, 0, 136, 25, 0, 0, 144, 25, 0, 0, 62, 25, 0, 0, 148, 25, 0, 0, 211, 23, 0, 0, 217, 23, 0, 0, 62, 25, 0, 0, 95, 24, 0, 0, 102, 24, 0, 0, 156, 25, 0, 0, 156, 25, 0, 0,
- 156, 25, 0, 0, 156, 25, 0, 0, 156, 25, 0, 0, 156, 25, 0, 0, 156, 25, 0, 0, 156, 25, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 110, 24, 0, 0, 198, 24, 0, 0, 117, 24, 0, 0, 124, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 198, 24, 0, 0, 62, 25, 0, 0, 23, 25, 0, 0, 30, 25, 0, 0,
- 109, 9, 0, 0, 115, 9, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 24, 18, 0, 0, 28, 18, 0, 0, 255, 18, 0, 0, 36, 18, 0, 0, 44, 18, 0, 0, 44, 18, 0, 0, 44, 18, 0, 0, 123, 9, 0, 0, 7, 19, 0, 0, 131, 9, 0, 0, 175, 20, 0, 0, 137, 9, 0, 0, 145, 9, 0, 0, 153, 9, 0, 0, 153, 9, 0, 0, 96, 23, 0, 0, 71, 24, 0, 0, 127, 19, 0, 0, 161, 9, 0, 0, 132, 7, 0, 0,
- 169, 9, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 176, 9, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 164, 25, 0, 0, 184, 9, 0, 0, 190, 9, 0, 0, 135, 19, 0, 0, 143, 19, 0, 0, 198, 9, 0, 0, 183, 20, 0, 0, 206, 9, 0, 0, 191, 20, 0, 0, 199, 20, 0, 0, 151, 19, 0, 0, 214, 9, 0, 0, 218, 9, 0, 0, 207, 20, 0, 0, 207, 20, 0, 0, 223, 9, 0, 0,
- 215, 20, 0, 0, 172, 25, 0, 0, 230, 9, 0, 0, 238, 9, 0, 0, 225, 23, 0, 0, 231, 23, 0, 0, 180, 25, 0, 0, 225, 23, 0, 0, 239, 23, 0, 0, 188, 25, 0, 0, 192, 25, 0, 0, 200, 25, 0, 0, 200, 25, 0, 0, 202, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 62, 25, 0, 0, 62, 25, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 159, 19, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0,
- 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 231, 20, 0, 0, 246, 9, 0, 0, 210, 25, 0, 0, 253, 9, 0, 0, 167, 19, 0, 0, 239, 20, 0, 0, 239, 20, 0, 0,
- 239, 20, 0, 0, 239, 20, 0, 0, 239, 20, 0, 0, 239, 20, 0, 0, 239, 20, 0, 0, 239, 20, 0, 0, 175, 19, 0, 0, 5, 10, 0, 0, 124, 5, 0, 0, 52, 18, 0, 0, 60, 18, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 13, 10, 0, 0, 183, 19, 0, 0, 68, 18, 0, 0, 183, 4, 0, 0, 73, 18, 0, 0, 81, 18, 0, 0, 87, 18, 0, 0, 21, 10, 0, 0, 28, 10, 0, 0, 255, 20, 0, 0, 36, 10, 0, 0, 7, 21, 0, 0,
- 44, 10, 0, 0, 15, 21, 0, 0, 18, 21, 0, 0, 52, 10, 0, 0, 26, 21, 0, 0, 34, 21, 0, 0, 41, 21, 0, 0, 60, 10, 0, 0, 68, 10, 0, 0, 49, 21, 0, 0, 53, 21, 0, 0, 76, 10, 0, 0, 84, 10, 0, 0, 61, 21, 0, 0, 92, 10, 0, 0, 100, 10, 0, 0, 191, 19, 0, 0, 69, 21, 0, 0, 73, 21, 0, 0, 108, 10, 0, 0, 116, 10, 0, 0, 124, 10, 0, 0, 132, 10, 0, 0, 15, 19, 0, 0, 139, 10, 0, 0,
- 23, 19, 0, 0, 23, 19, 0, 0, 81, 21, 0, 0, 147, 10, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0,
- 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0,
- 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0,
- 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0,
- 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0,
- 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0,
- 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0,
- 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0,
- 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0,
- 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0,
- 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0,
- 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0,
- 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0,
- 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0, 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 95, 21, 0, 0, 89, 21, 0, 0, 90, 21, 0, 0, 91, 21, 0, 0,
- 92, 21, 0, 0, 93, 21, 0, 0, 94, 21, 0, 0, 155, 10, 0, 0, 162, 10, 0, 0, 165, 10, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0,
- 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0,
- 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 173, 10, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 177, 10, 0, 0, 132, 7, 0, 0, 185, 10, 0, 0, 193, 10, 0, 0, 201, 10, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 103, 21, 0, 0, 209, 10, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0,
- 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 111, 21, 0, 0, 119, 21, 0, 0, 219, 5, 0, 0, 214, 10, 0, 0, 219, 5, 0, 0, 220, 10, 0, 0, 224, 10, 0, 0, 232, 10, 0, 0, 104, 23, 0, 0, 240, 10, 0, 0, 248, 10, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 219, 5, 0, 0, 254, 10, 0, 0, 6, 11, 0, 0, 95, 18, 0, 0, 31, 19, 0, 0, 199, 19, 0, 0, 204, 19, 0, 0, 14, 11, 0, 0, 22, 11, 0, 0,
- 30, 11, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0,
- 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 63, 24, 0, 0, 28, 18, 0, 0, 28, 18, 0, 0, 92, 18, 0, 0, 156, 18, 0, 0, 220, 18, 0, 0, 20, 19, 0, 0, 84, 19, 0, 0, 148, 19, 0, 0, 204, 19, 0, 0, 12, 20, 0, 0, 56, 20, 0, 0, 120, 20, 0, 0, 184, 20, 0, 0, 236, 20, 0, 0, 44, 21, 0, 0, 96, 21, 0, 0, 160, 21, 0, 0,
- 208, 21, 0, 0, 16, 22, 0, 0, 80, 22, 0, 0, 96, 22, 0, 0, 148, 22, 0, 0, 204, 22, 0, 0, 12, 23, 0, 0, 76, 23, 0, 0, 140, 23, 0, 0, 192, 23, 0, 0, 236, 23, 0, 0, 44, 24, 0, 0, 100, 24, 0, 0, 164, 24, 0, 0, 228, 24, 0, 0, 96, 10, 0, 0, 160, 10, 0, 0, 224, 10, 0, 0, 32, 11, 0, 0, 96, 11, 0, 0, 139, 11, 0, 0, 203, 11, 0, 0, 238, 11, 0, 0, 14, 12, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 78, 12, 0, 0, 89, 17, 0, 0, 89, 17, 0, 0, 142, 12, 0, 0, 206, 12, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 247, 12, 0, 0, 55, 13, 0, 0, 87, 13, 0, 0, 238, 11, 0, 0, 125, 13, 0, 0, 189, 13, 0, 0, 253, 13, 0, 0, 61, 14, 0, 0, 125, 14, 0, 0, 189, 14, 0, 0, 253, 14, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 61, 15, 0, 0, 160, 1, 0, 0, 117, 15, 0, 0, 181, 15, 0, 0, 160, 1, 0, 0, 192, 15, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0,
- 160, 1, 0, 0, 246, 15, 0, 0, 238, 11, 0, 0, 54, 16, 0, 0, 160, 1, 0, 0, 160, 1, 0, 0, 118, 16, 0, 0, 160, 1, 0, 0, 153, 16, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 217, 16, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0,
- 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 238, 11, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0,
- 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 25, 17, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0,
- 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0,
- 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0,
- 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 135, 4, 0, 0, 38, 11, 0, 0, 45, 11, 0, 0, 53, 11, 0, 0, 132, 7, 0, 0, 127, 21, 0, 0, 127, 21, 0, 0, 127, 21, 0, 0, 61, 11, 0, 0, 69, 11, 0, 0, 72, 11, 0, 0, 176, 23, 0, 0, 179, 23, 0, 0, 80, 11, 0, 0, 88, 11, 0, 0, 105, 9, 0, 0, 96, 11, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 104, 11, 0, 0, 135, 21, 0, 0, 112, 11, 0, 0, 120, 11, 0, 0, 143, 21, 0, 0, 128, 11, 0, 0, 136, 11, 0, 0, 140, 11, 0, 0, 148, 11, 0, 0, 151, 21, 0, 0, 156, 11, 0, 0, 132, 7, 0, 0, 103, 18, 0, 0, 109, 18, 0, 0, 39, 19, 0, 0, 159, 21, 0, 0, 164, 11, 0, 0, 172, 11, 0, 0, 176, 11, 0, 0, 182, 11, 0, 0, 167, 21, 0, 0,
- 190, 11, 0, 0, 175, 21, 0, 0, 197, 11, 0, 0, 201, 11, 0, 0, 209, 11, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 183, 21, 0, 0, 217, 11, 0, 0, 225, 11, 0, 0, 233, 11, 0, 0, 241, 11, 0, 0, 245, 11, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 253, 11, 0, 0, 0, 12, 0, 0,
- 8, 12, 0, 0, 191, 21, 0, 0, 16, 12, 0, 0, 24, 12, 0, 0, 132, 7, 0, 0, 32, 12, 0, 0, 40, 12, 0, 0, 48, 12, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 199, 21, 0, 0, 56, 12, 0, 0, 64, 12, 0, 0, 247, 23, 0, 0, 72, 12, 0, 0, 79, 12, 0, 0, 87, 12, 0, 0, 207, 21, 0, 0, 215, 21, 0, 0, 132, 7, 0, 0, 223, 21, 0, 0, 95, 12, 0, 0, 231, 21, 0, 0, 103, 12, 0, 0, 111, 12, 0, 0,
- 119, 12, 0, 0, 127, 12, 0, 0, 135, 12, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 239, 21, 0, 0, 239, 21, 0, 0, 143, 12, 0, 0, 132, 7, 0, 0, 117, 18, 0, 0, 151, 12, 0, 0, 47, 19, 0, 0, 159, 12, 0, 0, 247, 21, 0, 0, 167, 12, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 175, 12, 0, 0,
- 255, 21, 0, 0, 183, 12, 0, 0, 132, 7, 0, 0, 188, 12, 0, 0, 7, 22, 0, 0, 196, 12, 0, 0, 203, 12, 0, 0, 210, 12, 0, 0, 218, 12, 0, 0, 222, 12, 0, 0, 229, 12, 0, 0, 237, 12, 0, 0, 15, 22, 0, 0, 17, 22, 0, 0, 245, 12, 0, 0, 252, 12, 0, 0, 25, 22, 0, 0, 29, 22, 0, 0, 4, 13, 0, 0, 10, 13, 0, 0, 37, 22, 0, 0, 18, 13, 0, 0, 26, 13, 0, 0, 30, 13, 0, 0, 45, 22, 0, 0,
- 49, 22, 0, 0, 57, 22, 0, 0, 38, 13, 0, 0, 46, 13, 0, 0, 65, 22, 0, 0, 54, 13, 0, 0, 132, 7, 0, 0, 62, 13, 0, 0, 70, 13, 0, 0, 73, 22, 0, 0, 78, 13, 0, 0, 86, 13, 0, 0, 92, 13, 0, 0, 100, 13, 0, 0, 108, 13, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 81, 22, 0, 0, 84, 22, 0, 0, 116, 13, 0, 0, 124, 13, 0, 0, 92, 22, 0, 0, 96, 22, 0, 0,
- 132, 13, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 104, 22, 0, 0, 140, 13, 0, 0, 148, 13, 0, 0, 132, 7, 0, 0, 112, 22, 0, 0, 116, 22, 0, 0, 156, 13, 0, 0, 164, 13, 0, 0, 124, 22, 0, 0, 172, 13, 0, 0, 180, 13, 0, 0, 132, 7, 0, 0, 188, 13, 0, 0, 196, 13, 0, 0, 204, 13, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 22, 0, 0, 212, 13, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 125, 18, 0, 0, 55, 19, 0, 0, 220, 13, 0, 0, 228, 13, 0, 0, 234, 13, 0, 0, 242, 13, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 250, 13, 0, 0, 254, 13, 0, 0, 6, 14, 0, 0, 140, 22, 0, 0, 144, 22, 0, 0, 14, 14, 0, 0, 152, 22, 0, 0, 158, 22, 0, 0, 22, 14, 0, 0, 166, 22, 0, 0, 30, 14, 0, 0,
- 38, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 46, 14, 0, 0, 51, 14, 0, 0, 59, 14, 0, 0, 66, 14, 0, 0, 71, 14, 0, 0, 77, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 85, 14, 0, 0, 89, 14, 0, 0, 97, 14, 0, 0, 105, 14, 0, 0, 111, 14, 0, 0, 119, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 127, 14, 0, 0, 135, 14, 0, 0, 140, 14, 0, 0, 148, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 155, 14, 0, 0, 255, 23, 0, 0, 163, 14, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0,
- 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 171, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 187, 23, 0, 0, 187, 23, 0, 0, 187, 23, 0, 0,
- 179, 14, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 174, 22, 0, 0, 187, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 191, 14, 0, 0, 182, 22, 0, 0, 182, 22, 0, 0, 195, 14, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0,
- 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 192, 22, 0, 0, 190, 22, 0, 0, 200, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 203, 22, 0, 0,
- 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 190, 22, 0, 0, 210, 22, 0, 0, 203, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0,
- 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 223, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 218, 22, 0, 0, 211, 14, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 247, 20, 0, 0, 219, 14, 0, 0, 227, 14, 0, 0, 235, 14, 0, 0, 231, 22, 0, 0, 239, 14, 0, 0,
- 247, 14, 0, 0, 252, 14, 0, 0, 239, 22, 0, 0, 243, 22, 0, 0, 4, 15, 0, 0, 12, 15, 0, 0, 20, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 133, 18, 0, 0, 63, 19, 0, 0, 28, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 251, 22, 0, 0, 251, 22, 0, 0, 36, 15, 0, 0, 152, 23, 0, 0, 42, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 50, 15, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 58, 15, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 66, 15, 0, 0, 132, 7, 0, 0, 74, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 78, 15, 0, 0, 19, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 20, 23, 0, 0, 86, 15, 0, 0, 91, 15, 0, 0, 98, 15, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0,
- 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 28, 23, 0, 0, 102, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 36, 23, 0, 0, 36, 23, 0, 0, 36, 23, 0, 0, 110, 15, 0, 0, 115, 15, 0, 0, 123, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 46, 5, 0, 0, 131, 15, 0, 0, 138, 15, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 145, 15, 0, 0, 132, 7, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0,
- 62, 25, 0, 0, 62, 25, 0, 0, 153, 15, 0, 0, 62, 25, 0, 0, 161, 15, 0, 0, 62, 25, 0, 0, 112, 23, 0, 0, 120, 23, 0, 0, 126, 23, 0, 0, 62, 25, 0, 0, 101, 9, 0, 0, 218, 25, 0, 0, 218, 25, 0, 0, 169, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 177, 15, 0, 0, 177, 15, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 185, 15, 0, 0, 193, 15, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 141, 18, 0, 0, 148, 18, 0, 0, 201, 15, 0, 0, 151, 18, 0, 0, 209, 15, 0, 0, 217, 15, 0, 0, 225, 15, 0, 0, 145, 18, 0, 0, 233, 15, 0, 0, 241, 15, 0, 0, 249, 15, 0, 0, 150, 18, 0, 0, 158, 18, 0, 0, 141, 18, 0, 0, 148, 18, 0, 0, 144, 18, 0, 0, 151, 18, 0, 0, 159, 18, 0, 0, 142, 18, 0, 0, 149, 18, 0, 0, 145, 18, 0, 0, 0, 16, 0, 0, 167, 18, 0, 0,
- 175, 18, 0, 0, 182, 18, 0, 0, 189, 18, 0, 0, 170, 18, 0, 0, 178, 18, 0, 0, 185, 18, 0, 0, 192, 18, 0, 0, 8, 16, 0, 0, 160, 23, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0, 226, 25, 0, 0,
- 134, 23, 0, 0, 137, 23, 0, 0, 134, 23, 0, 0, 144, 23, 0, 0, 16, 16, 0, 0, 24, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 32, 16, 0, 0, 40, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 48, 16, 0, 0, 56, 16, 0, 0,
- 212, 19, 0, 0, 61, 16, 0, 0, 66, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 44, 23, 0, 0, 74, 16, 0, 0, 82, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 86, 16, 0, 0, 91, 16, 0, 0, 52, 23, 0, 0, 99, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 107, 16, 0, 0, 113, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 121, 16, 0, 0, 60, 23, 0, 0, 60, 23, 0, 0, 60, 23, 0, 0, 60, 23, 0, 0, 60, 23, 0, 0, 60, 23, 0, 0, 129, 16, 0, 0, 132, 7, 0, 0, 200, 18, 0, 0, 208, 18, 0, 0, 137, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 145, 16, 0, 0, 7, 24, 0, 0, 150, 16, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 158, 16, 0, 0, 163, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 171, 16, 0, 0, 179, 16, 0, 0, 187, 16, 0, 0, 195, 16, 0, 0, 203, 16, 0, 0, 211, 16, 0, 0, 132, 7, 0, 0, 218, 16, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 172, 25, 0, 0, 226, 16, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 230, 16, 0, 0, 238, 16, 0, 0, 242, 16, 0, 0, 247, 16, 0, 0, 15, 24, 0, 0, 234, 25, 0, 0, 70, 25, 0, 0, 240, 25, 0, 0, 70, 25, 0, 0, 255, 16, 0, 0, 132, 7, 0, 0, 6, 17, 0, 0, 14, 17, 0, 0, 18, 17, 0, 0, 26, 17, 0, 0, 34, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 172, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 248, 25, 0, 0, 0, 26, 0, 0, 8, 26, 0, 0, 46, 25, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 16, 26, 0, 0, 23, 26, 0, 0, 31, 26, 0, 0, 39, 26, 0, 0, 172, 25, 0, 0, 172, 25, 0, 0, 47, 26, 0, 0, 54, 26, 0, 0, 60, 26, 0, 0, 63, 26, 0, 0, 70, 26, 0, 0, 172, 25, 0, 0, 76, 26, 0, 0, 83, 26, 0, 0, 172, 25, 0, 0,
- 172, 25, 0, 0, 90, 26, 0, 0, 94, 26, 0, 0, 172, 25, 0, 0, 102, 26, 0, 0, 42, 17, 0, 0, 49, 17, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 57, 17, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 65, 17, 0, 0, 73, 17, 0, 0, 81, 17, 0, 0, 62, 25, 0, 0, 87, 17, 0, 0, 62, 25, 0, 0, 95, 17, 0, 0, 100, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 110, 26, 0, 0, 118, 26, 0, 0,
- 172, 25, 0, 0, 126, 26, 0, 0, 172, 25, 0, 0, 132, 26, 0, 0, 139, 26, 0, 0, 172, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 108, 17, 0, 0, 116, 17, 0, 0, 121, 17, 0, 0, 125, 17, 0, 0, 133, 17, 0, 0, 141, 17, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 62, 25, 0, 0, 149, 17, 0, 0, 62, 25, 0, 0, 101, 9, 0, 0, 157, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 132, 7, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 177, 10, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 165, 17, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 172, 17, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 180, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 165, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 188, 17, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0,
- 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 223, 20, 0, 0, 192, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 200, 17, 0, 0, 47, 24, 0, 0, 47, 24, 0, 0, 47, 24, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 46, 5, 0, 0,
- 46, 5, 0, 0, 46, 5, 0, 0, 46, 5, 0, 0, 46, 5, 0, 0, 46, 5, 0, 0, 46, 5, 0, 0, 208, 17, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0,
- 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 132, 7, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0,
- 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 55, 24, 0, 0, 216, 17, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0,
- 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 3, 23, 0, 0, 102, 4, 1, 0, 102, 4, 1, 0, 102, 4, 1, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 4, 0, 65, 128, 9, 0, 65, 192, 8, 0, 65, 192, 8, 0, 65, 64, 9, 0,
- 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 101, 128, 10, 0, 91, 128, 1, 0, 91, 192, 0, 0, 91, 0, 3, 0, 94, 64, 2, 0, 91, 128, 2, 0, 91, 0, 3, 0,
- 91, 192, 0, 0, 92, 0, 0, 0, 88, 128, 0, 0, 91, 0, 3, 0, 96, 64, 2, 0, 91, 0, 2, 0, 87, 0, 4, 0, 91, 0, 2, 0, 91, 192, 1, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 91, 0, 2, 0, 91, 0, 2, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 91, 128, 1, 0,
- 91, 0, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0,
- 76, 18, 3, 0, 76, 18, 3, 0, 92, 0, 0, 0, 91, 64, 2, 0, 88, 128, 0, 0, 95, 0, 3, 0, 86, 0, 3, 0, 95, 0, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 92, 0, 0, 0, 96, 64, 4, 0, 88, 64, 0, 0, 96, 0, 3, 0, 65, 64, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 192, 9, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0,
- 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 65, 64, 5, 0, 101, 0, 1, 0, 91, 0, 0, 0, 94, 128, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 97, 0, 3, 0, 91, 128, 8, 0, 95, 128, 8, 0, 97, 0, 3, 0, 74, 146, 8, 0, 90, 192, 0, 0, 96, 0, 3, 0, 66, 64, 4, 0, 97, 0, 3, 0,
- 95, 0, 3, 0, 97, 128, 2, 0, 96, 64, 2, 0, 84, 128, 8, 0, 84, 128, 8, 0, 95, 128, 4, 0, 72, 0, 3, 0, 91, 128, 8, 0, 91, 128, 8, 0, 95, 128, 8, 0, 84, 128, 8, 0, 74, 146, 8, 0, 89, 192, 0, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 91, 0, 0, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0,
- 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 96, 128, 8, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 96, 128, 8, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 76, 18, 3, 0, 75, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 75, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 75, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 75, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 73, 0, 3, 0,
- 73, 128, 8, 0, 73, 128, 4, 0, 73, 128, 8, 0, 73, 128, 8, 0, 73, 128, 8, 0, 73, 128, 4, 0, 73, 128, 8, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 128, 8, 0, 73, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 128, 8, 0, 95, 128, 8, 0, 95, 128, 8, 0, 95, 128, 8, 0, 95, 0, 3, 0, 95, 128, 8, 0, 95, 0, 3, 0, 95, 128, 4, 0,
- 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 31, 4, 3, 0, 31, 4, 3, 0, 73, 0, 3, 0, 95, 0, 3, 0, 73, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0,
- 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 0, 1, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 0, 1, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 73, 0, 3, 0, 159, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 137, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 91, 0, 2, 0, 140, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 159, 11, 3, 0, 95, 0, 3, 0, 140, 11, 3, 0, 91, 0, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0,
- 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0,
- 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 160, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0,
- 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0,
- 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0,
- 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0,
- 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 161, 7, 3, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 71, 5, 0, 143, 71, 5, 0, 143, 71, 5, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0,
- 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0,
- 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 3, 0, 0, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0,
- 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 12, 2, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 9, 2, 3, 0, 27, 2, 3, 0, 27, 2, 3, 0, 27, 2, 3, 0, 27, 2, 3, 0, 27, 2, 3, 0, 27, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0,
- 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 27, 2, 2, 0, 23, 66, 4, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 33, 2, 3, 0, 33, 2, 3, 0, 30, 66, 2, 0, 3, 0, 0, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0,
- 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0, 80, 77, 5, 0,
- 80, 77, 5, 0, 87, 77, 4, 0, 80, 77, 5, 0, 91, 13, 3, 0, 80, 77, 5, 0, 80, 77, 5, 0, 91, 13, 3, 0, 80, 77, 5, 0, 80, 77, 5, 0, 91, 141, 1, 0, 80, 77, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0,
- 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 91, 13, 3, 0, 91, 13, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 130, 1, 3, 0, 130, 1, 3, 0, 130, 1, 3, 0, 130, 1, 3, 0, 130, 1, 3, 0, 66, 0, 3, 0, 160, 1, 3, 0, 160, 1, 3, 0,
- 160, 1, 3, 0, 155, 129, 2, 0, 155, 129, 2, 0, 158, 129, 2, 0, 91, 0, 2, 0, 155, 1, 2, 0, 161, 1, 3, 0, 161, 1, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 91, 128, 1, 0, 130, 65, 5, 0, 155, 129, 1, 0, 155, 129, 1, 0, 91, 128, 1, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 73, 0, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 155, 129, 2, 0, 155, 193, 2, 0,
- 155, 193, 2, 0, 155, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 144, 64, 5, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 155, 129, 1, 0, 138, 1, 3, 0, 144, 65, 5, 0,
- 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 66, 0, 3, 0, 161, 1, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 137, 1, 3, 0, 137, 1, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 161, 1, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 146, 193, 2, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 138, 1, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0,
- 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 155, 34, 3, 0, 3, 0, 0, 0, 130, 34, 3, 0, 138, 34, 3, 0, 144, 98, 5, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0,
- 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0,
- 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 144, 98, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0,
- 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 74, 37, 3, 0, 80, 101, 5, 0,
- 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 80, 101, 5, 0, 74, 37, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 146, 217, 2, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0,
- 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 138, 25, 3, 0, 144, 89, 5, 0, 144, 89, 5, 0, 144, 89, 5, 0, 144, 89, 5, 0, 144, 89, 5, 0, 144, 89, 5, 0, 144, 89, 5, 0,
- 144, 89, 5, 0, 144, 89, 5, 0, 137, 25, 3, 0, 137, 25, 3, 0, 161, 25, 3, 0, 155, 25, 3, 0, 155, 25, 2, 0, 155, 153, 1, 0, 137, 25, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 89, 5, 0, 158, 89, 2, 0, 158, 89, 2, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 201, 30, 3, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 201, 30, 3, 0, 208, 94, 5, 0, 208, 94, 5, 0,
- 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 219, 30, 3, 0, 3, 0, 0, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0,
- 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 202, 20, 3, 0, 208, 84, 5, 0, 208, 84, 5, 0, 208, 84, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 219, 20, 3, 0, 3, 0, 0, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 138, 34, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 159, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 130, 1, 3, 0, 130, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 138, 3, 3, 0, 144, 67, 5, 0, 142, 67, 5, 0, 142, 67, 5, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 3, 3, 0,
- 138, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0,
- 3, 0, 0, 0, 138, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 67, 5, 0, 138, 3, 3, 0, 142, 67, 5, 0, 142, 67, 5, 0, 142, 67, 5, 0, 144, 67, 5, 0, 144, 67, 5, 0, 144, 67, 5, 0, 144, 67, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 142, 67, 5, 0, 142, 67, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 142, 67, 5, 0, 142, 67, 5, 0, 144, 67, 5, 0, 138, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 142, 67, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 3, 0, 0, 0, 138, 3, 3, 0, 138, 3, 3, 0, 138, 3, 3, 0, 144, 67, 5, 0,
- 144, 67, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 146, 195, 2, 0, 138, 3, 3, 0, 138, 3, 3, 0, 158, 131, 2, 0, 158, 131, 2, 0, 148, 3, 3, 0, 148, 3, 3, 0, 148, 3, 3, 0, 148, 3, 3, 0, 148, 3, 3, 0, 148, 131, 2, 0, 161, 3, 3, 0, 158, 67, 2, 0,
- 138, 3, 3, 0, 155, 3, 3, 0, 144, 67, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 76, 5, 0, 16, 76, 5, 0, 14, 76, 5, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0,
- 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 10, 12, 3, 0,
- 10, 12, 3, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 76, 5, 0, 3, 0, 0, 0, 14, 76, 5, 0, 14, 76, 5, 0, 14, 76, 5, 0, 16, 76, 5, 0, 16, 76, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 76, 5, 0, 16, 76, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 76, 5, 0, 16, 76, 5, 0, 16, 76, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 16, 76, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 3, 0, 0, 0, 10, 12, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 204, 2, 0, 18, 204, 2, 0,
- 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 18, 204, 2, 0, 16, 76, 5, 0, 16, 76, 5, 0, 10, 12, 3, 0, 10, 12, 3, 0, 10, 12, 3, 0, 16, 76, 5, 0, 27, 12, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 208, 75, 5, 0, 208, 75, 5, 0, 206, 75, 5, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0,
- 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 202, 11, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 208, 75, 5, 0, 202, 11, 3, 0, 206, 75, 5, 0, 206, 75, 5, 0, 206, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 3, 0, 0, 0, 208, 75, 5, 0, 208, 75, 5, 0, 206, 75, 5, 0, 3, 0, 0, 0, 206, 75, 5, 0, 206, 75, 5, 0, 208, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 11, 3, 0, 202, 11, 3, 0, 208, 75, 5, 0, 208, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0,
- 210, 203, 2, 0, 210, 203, 2, 0, 210, 203, 2, 0, 219, 11, 3, 0, 222, 75, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 11, 3, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 208, 75, 5, 0, 3, 0, 0, 0, 208, 90, 5, 0, 206, 90, 5, 0, 206, 90, 5, 0, 3, 0, 0, 0, 202, 26, 3, 0,
- 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0,
- 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 90, 5, 0, 202, 26, 3, 0, 206, 90, 5, 0, 208, 90, 5, 0,
- 206, 90, 5, 0, 208, 90, 5, 0, 208, 90, 5, 0, 208, 90, 5, 0, 208, 90, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 90, 5, 0, 206, 90, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 90, 5, 0, 206, 90, 5, 0, 208, 90, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 90, 5, 0, 208, 90, 5, 0, 206, 90, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 3, 0, 0, 0, 202, 26, 3, 0, 202, 26, 3, 0, 202, 26, 3, 0, 208, 90, 5, 0, 208, 90, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 210, 218, 2, 0, 225, 26, 3, 0, 202, 26, 3, 0,
- 212, 26, 3, 0, 212, 26, 3, 0, 212, 26, 3, 0, 212, 26, 3, 0, 212, 26, 3, 0, 212, 26, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 99, 5, 0, 202, 35, 3, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 202, 35, 3, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0,
- 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 206, 99, 5, 0, 206, 99, 5, 0, 208, 99, 5, 0, 206, 99, 5, 0, 206, 99, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 99, 5, 0, 206, 99, 5, 0, 206, 99, 5, 0, 3, 0, 0, 0, 206, 99, 5, 0, 206, 99, 5, 0, 206, 99, 5, 0, 208, 99, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 206, 99, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 210, 227, 2, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0,
- 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 222, 99, 2, 0, 225, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 100, 5, 0, 142, 100, 5, 0, 142, 100, 5, 0, 142, 100, 5, 0, 144, 100, 5, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0,
- 138, 36, 3, 0, 3, 0, 0, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 3, 0, 0, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 3, 0, 0, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0,
- 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 100, 5, 0, 138, 36, 3, 0, 144, 100, 5, 0, 144, 100, 5, 0, 144, 100, 5, 0, 142, 100, 5, 0, 142, 100, 5, 0, 142, 100, 5, 0, 142, 100, 5, 0, 3, 0, 0, 0,
- 144, 100, 5, 0, 144, 100, 5, 0, 144, 100, 5, 0, 3, 0, 0, 0, 144, 100, 5, 0, 144, 100, 5, 0, 144, 100, 5, 0, 144, 100, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 100, 5, 0, 144, 100, 5, 0, 3, 0, 0, 0, 138, 36, 3, 0, 138, 36, 3, 0, 138, 36, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 36, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 138, 36, 3, 0, 138, 36, 3, 0, 144, 100, 5, 0, 144, 100, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 146, 228, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 155, 164, 4, 0,
- 148, 36, 3, 0, 148, 36, 3, 0, 148, 36, 3, 0, 148, 36, 3, 0, 148, 36, 3, 0, 148, 36, 3, 0, 148, 36, 3, 0, 161, 36, 3, 0, 74, 17, 3, 0, 80, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 91, 145, 4, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0,
- 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0,
- 74, 17, 3, 0, 74, 17, 3, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 74, 17, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 81, 5, 0, 74, 17, 3, 0, 78, 81, 5, 0, 80, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 3, 0, 0, 0, 80, 81, 5, 0, 78, 81, 5, 0, 78, 81, 5, 0, 3, 0, 0, 0, 78, 81, 5, 0,
- 78, 81, 5, 0, 80, 81, 5, 0, 80, 81, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 81, 5, 0, 78, 81, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 80, 81, 5, 0, 80, 81, 5, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 82, 209, 2, 0, 3, 0, 0, 0, 74, 17, 3, 0, 74, 17, 3, 0, 78, 81, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 86, 5, 0, 144, 86, 5, 0, 142, 86, 5, 0, 142, 86, 5, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 3, 0, 0, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 3, 0, 0, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0,
- 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 142, 86, 5, 0, 144, 86, 5, 0, 144, 86, 5, 0, 144, 86, 5, 0, 144, 86, 5, 0, 3, 0, 0, 0, 142, 86, 5, 0, 142, 86, 5, 0, 142, 86, 5, 0, 3, 0, 0, 0, 142, 86, 5, 0, 142, 86, 5, 0, 142, 86, 5, 0, 144, 86, 5, 0, 138, 22, 3, 0,
- 161, 22, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 142, 86, 5, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 144, 86, 5, 0, 144, 86, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 214, 2, 0, 146, 214, 2, 0,
- 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 146, 214, 2, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 148, 22, 3, 0, 161, 150, 2, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 3, 0, 0, 0,
- 208, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 3, 0, 0, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 3, 0, 0, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0,
- 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 3, 0, 0, 0, 202, 32, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 202, 32, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 96, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 96, 5, 0,
- 206, 96, 5, 0, 206, 96, 5, 0, 208, 96, 5, 0, 208, 96, 5, 0, 208, 96, 5, 0, 3, 0, 0, 0, 208, 96, 5, 0, 3, 0, 0, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 206, 96, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0,
- 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0, 210, 224, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 96, 5, 0, 206, 96, 5, 0, 219, 32, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 37, 10, 0,
- 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0,
- 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 144, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 94, 64, 2, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0, 138, 37, 10, 0,
- 138, 37, 10, 0, 138, 37, 10, 0, 137, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 144, 37, 10, 0, 155, 37, 3, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 146, 229, 2, 0, 155, 101, 4, 0, 155, 101, 4, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 3, 0, 0, 0, 10, 18, 10, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0,
- 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 3, 0, 0, 0, 10, 18, 10, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0,
- 10, 18, 10, 0, 16, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 10, 18, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 3, 0, 0, 0, 9, 18, 10, 0, 3, 0, 0, 0, 16, 18, 10, 0,
- 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 16, 18, 10, 0, 3, 0, 0, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 18, 210, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 10, 18, 10, 0, 202, 37, 3, 0, 202, 37, 3, 0,
- 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 3, 0, 0, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0,
- 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 206, 101, 4, 0,
- 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 219, 101, 4, 0, 208, 101, 5, 0, 208, 101, 5, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 202, 37, 3, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 3, 0, 0, 0,
- 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0,
- 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 208, 101, 5, 0, 3, 0, 0, 0, 225, 101, 4, 0, 225, 101, 4, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 208, 101, 5, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 3, 0, 0, 0, 225, 37, 3, 0,
- 225, 37, 3, 0, 219, 165, 4, 0, 219, 165, 4, 0, 219, 101, 4, 0, 219, 165, 4, 0, 219, 37, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 219, 37, 1, 0, 219, 37, 1, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 3, 0, 0, 0, 12, 10, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 10, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 3, 0, 0, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 73, 5, 0, 208, 73, 5, 0, 208, 73, 5, 0, 219, 9, 3, 0, 219, 73, 4, 0, 219, 9, 3, 0, 219, 9, 3, 0, 219, 9, 3, 0, 219, 9, 3, 0, 219, 9, 3, 0, 219, 9, 3, 0, 219, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0,
- 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 212, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 225, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 6, 3, 0, 76, 6, 3, 0,
- 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0,
- 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 37, 90, 4, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0,
- 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 10, 26, 3, 0, 28, 26, 0, 0, 24, 90, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 91, 64, 4, 0, 91, 64, 4, 0,
- 91, 64, 4, 0, 147, 30, 3, 0, 147, 30, 3, 0, 147, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0,
- 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 10, 37, 3, 0, 16, 101, 5, 0, 16, 101, 5, 0, 16, 101, 5, 0, 14, 101, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 10, 37, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 202, 12, 3, 0, 208, 76, 5, 0, 208, 76, 5, 0, 206, 76, 5, 0, 91, 64, 4, 0, 91, 64, 4, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0, 10, 5, 3, 0,
- 10, 5, 3, 0, 16, 69, 5, 0, 16, 69, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0,
- 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 3, 0, 0, 0, 202, 34, 3, 0, 202, 34, 3, 0, 202, 34, 3, 0, 3, 0, 0, 0, 208, 98, 5, 0, 208, 98, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 142, 16, 10, 0, 142, 16, 10, 0, 142, 16, 10, 0,
- 142, 16, 10, 0, 142, 16, 10, 0, 142, 16, 10, 0, 144, 16, 10, 0, 142, 16, 10, 0, 142, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 155, 80, 4, 0, 155, 80, 4, 0, 155, 80, 1, 0, 137, 16, 10, 0, 155, 80, 4, 0, 155, 16, 3, 0, 155, 80, 4, 0, 158, 80, 2, 0,
- 138, 16, 10, 0, 144, 16, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 146, 208, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0,
- 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0, 148, 16, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 23, 3, 0, 27, 23, 3, 0, 91, 128, 1, 0, 91, 128, 1, 0, 27, 87, 4, 0, 91, 64, 4, 0, 23, 151, 4, 0, 27, 23, 3, 0, 27, 151, 1, 0, 27, 151, 1, 0, 27, 23, 3, 0, 16, 87, 5, 0, 16, 87, 5, 0, 16, 87, 5, 0,
- 2, 23, 1, 0, 16, 87, 5, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 18, 215, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0,
- 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 16, 87, 5, 0, 10, 23, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0,
- 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 18, 3, 0, 202, 18, 3, 0,
- 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0,
- 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 202, 18, 3, 0, 3, 0, 0, 0, 208, 82, 5, 0, 208, 82, 5, 0, 208, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 208, 82, 5, 0, 208, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 206, 82, 5, 0, 206, 82, 5, 0, 208, 82, 5, 0, 206, 82, 5, 0,
- 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 206, 82, 5, 0, 208, 82, 5, 0, 208, 82, 5, 0, 208, 82, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 225, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 146, 1, 0, 219, 146, 1, 0, 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0,
- 210, 210, 2, 0, 210, 210, 2, 0, 210, 210, 2, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 35, 10, 0, 74, 35, 10, 0,
- 74, 35, 10, 0, 74, 35, 10, 0, 74, 35, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0,
- 138, 35, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 146, 227, 2, 0, 148, 35, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 161, 35, 10, 0, 161, 35, 10, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0,
- 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 202, 4, 3, 0, 208, 68, 5, 0, 208, 68, 5, 0, 206, 68, 5, 0, 206, 68, 5, 0, 208, 68, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 219, 4, 3, 0, 219, 4, 3, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 206, 17, 10, 0, 208, 17, 10, 0,
- 206, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 3, 0, 0, 0, 208, 17, 10, 0, 206, 17, 10, 0, 208, 17, 10, 0, 206, 17, 10, 0, 206, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 206, 17, 10, 0, 206, 17, 10, 0, 206, 17, 10, 0,
- 206, 17, 10, 0, 206, 17, 10, 0, 206, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 208, 17, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 81, 5, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0,
- 210, 209, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 210, 209, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 17, 10, 0, 219, 17, 10, 0,
- 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 201, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 219, 17, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 143, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 142, 66, 5, 0, 142, 66, 5, 0, 144, 66, 5, 0, 142, 66, 5, 0, 142, 66, 5, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 146, 194, 2, 0, 155, 66, 4, 0, 155, 66, 4, 0, 155, 2, 3, 0, 155, 66, 4, 0, 155, 66, 4, 0, 155, 66, 4, 0, 155, 66, 4, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0,
- 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 161, 2, 3, 0, 155, 66, 4, 0, 155, 66, 4, 0,
- 3, 0, 0, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 80, 67, 5, 0, 78, 67, 5, 0, 80, 67, 5, 0, 80, 67, 5, 0, 78, 67, 5, 0, 78, 67, 5, 0, 78, 67, 5, 0, 80, 67, 5, 0, 78, 67, 5, 0, 80, 67, 5, 0, 80, 67, 5, 0, 80, 67, 5, 0, 78, 67, 5, 0, 78, 67, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 3, 3, 0, 91, 3, 3, 0, 91, 3, 3, 0, 91, 3, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0,
- 144, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0, 142, 82, 5, 0, 142, 82, 5, 0, 144, 82, 5, 0, 144, 82, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 155, 82, 4, 0, 155, 82, 4, 0, 155, 82, 4, 0, 155, 82, 4, 0, 155, 82, 4, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0, 146, 210, 2, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 82, 218, 2, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0,
- 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 136, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0,
- 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 27, 34, 3, 0, 27, 34, 3, 0, 27, 34, 3, 0, 27, 34, 3, 0, 27, 34, 3, 0,
- 27, 34, 3, 0, 27, 34, 3, 0, 27, 34, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 91, 0, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 78, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 144, 64, 5, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 144, 64, 5, 0, 74, 0, 3, 0, 74, 0, 3, 0,
- 78, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 74, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0,
- 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 3, 0, 0, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0,
- 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 139, 11, 3, 0, 159, 11, 3, 0, 136, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 139, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 3, 0, 0, 0,
- 159, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 159, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 3, 0, 0, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 139, 11, 3, 0, 159, 139, 4, 0, 159, 11, 3, 0, 3, 0, 0, 0, 66, 128, 5, 0, 66, 0, 3, 0, 66, 0, 3, 0, 66, 0, 3, 0, 66, 0, 3, 0, 3, 0, 0, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0,
- 66, 64, 5, 0, 84, 0, 3, 0, 73, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 128, 8, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 73, 146, 8, 0, 84, 0, 3, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 3, 0, 0, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 94, 128, 2, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 143, 64, 5, 0, 143, 64, 5, 0, 143, 64, 5, 0, 143, 64, 5, 0, 144, 64, 5, 0, 143, 64, 5, 0, 143, 64, 5, 0, 143, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 84, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 200, 6, 3, 0, 225, 6, 3, 0, 225, 6, 3, 0, 225, 6, 3, 0, 225, 6, 3, 0, 225, 6, 3, 0, 225, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0,
- 200, 6, 3, 0, 208, 70, 5, 0, 208, 70, 5, 0, 208, 70, 5, 0, 204, 6, 3, 0, 200, 6, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 134, 1, 0, 219, 70, 4, 0, 219, 70, 4, 0, 219, 70, 4, 0, 212, 6, 3, 0, 219, 134, 1, 0, 219, 70, 4, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 3, 0, 0, 0,
- 8, 10, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 8, 10, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 201, 36, 3, 0, 219, 100, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 100, 5, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 87, 64, 4, 0, 91, 64, 4, 0, 92, 0, 0, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0,
- 91, 64, 4, 0, 91, 0, 3, 0, 91, 64, 4, 0, 91, 64, 4, 0, 97, 0, 3, 0, 97, 0, 3, 0, 91, 0, 3, 0, 91, 128, 1, 0, 91, 128, 1, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 87, 64, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0,
- 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 3, 0, 0, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0,
- 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0,
- 161, 140, 3, 0, 161, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0,
- 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0,
- 138, 13, 9, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 13, 9, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 95, 64, 1, 0, 95, 64, 1, 0, 137, 77, 1, 0, 137, 77, 1, 0, 138, 141, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0,
- 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 3, 0, 0, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0,
- 74, 140, 3, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0,
- 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0,
- 97, 140, 3, 0, 97, 140, 3, 0, 3, 0, 0, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0,
- 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0,
- 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 18, 231, 2, 0, 10, 39, 3, 0, 10, 39, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0,
- 202, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 211, 2, 3, 0, 208, 66, 5, 0, 208, 66, 5, 0, 219, 2, 3, 0, 219, 66, 4, 0, 219, 66, 4, 0, 219, 66, 4, 0, 219, 66, 4, 0, 219, 66, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 72, 18, 3, 0, 3, 0, 0, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 18, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 78, 98, 5, 0, 78, 98, 5, 0, 80, 98, 5, 0, 80, 98, 5, 0, 78, 98, 5, 0, 97, 34, 3, 0, 97, 34, 3, 0, 97, 34, 3, 0, 97, 34, 3, 0, 80, 98, 5, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 94, 128, 2, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0,
- 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 155, 156, 4, 0, 155, 156, 4, 0, 155, 156, 1, 0, 155, 156, 1, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 80, 95, 5, 0, 80, 95, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 95, 4, 0, 91, 95, 4, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0, 82, 223, 2, 0,
- 82, 223, 2, 0, 82, 223, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0, 16, 94, 5, 0,
- 16, 94, 5, 0, 14, 94, 5, 0, 14, 94, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 30, 3, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0,
- 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 79, 5, 0, 91, 15, 3, 0, 91, 15, 3, 0,
- 91, 15, 3, 0, 91, 15, 3, 0, 91, 15, 3, 0, 91, 15, 3, 0, 91, 79, 4, 0, 91, 79, 4, 0, 91, 79, 4, 0, 91, 15, 3, 0, 91, 15, 3, 0, 91, 15, 3, 0, 91, 15, 3, 0, 3, 0, 0, 0, 73, 0, 3, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 82, 207, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 91, 15, 3, 0, 91, 15, 3, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 16, 24, 10, 0, 9, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0,
- 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 3, 0, 0, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 16, 70, 5, 0, 16, 70, 5, 0, 16, 70, 5, 0, 16, 70, 5, 0, 16, 70, 5, 0,
- 16, 70, 5, 0, 14, 70, 5, 0, 14, 70, 5, 0, 16, 70, 5, 0, 16, 70, 5, 0, 14, 70, 5, 0, 14, 70, 5, 0, 16, 70, 5, 0, 16, 70, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 16, 70, 5, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0,
- 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 16, 70, 5, 0, 14, 70, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 18, 198, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 6, 3, 0, 27, 70, 4, 0, 27, 70, 4, 0, 27, 70, 4, 0,
- 74, 36, 10, 0, 80, 36, 10, 0, 74, 36, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 74, 36, 10, 0, 74, 36, 10, 0, 73, 36, 10, 0, 91, 36, 10, 0, 91, 36, 10, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 142, 87, 5, 0, 144, 87, 5, 0, 144, 87, 5, 0, 142, 87, 5, 0, 142, 87, 5, 0, 155, 87, 4, 0, 155, 87, 4, 0,
- 138, 23, 3, 0, 137, 23, 3, 0, 137, 23, 3, 0, 142, 87, 5, 0, 144, 87, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 136, 11, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 73, 18, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0,
- 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 142, 87, 5, 0, 142, 87, 5, 0, 144, 87, 5, 0, 142, 87, 5, 0, 142, 87, 5, 0, 144, 87, 5, 0, 142, 87, 5, 0, 142, 87, 5, 0, 155, 87, 4, 0, 142, 87, 5, 0, 144, 87, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0,
- 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0, 146, 215, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0,
- 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0,
- 138, 140, 3, 0, 138, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 8, 2, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 77, 3, 0, 80, 77, 5, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 96, 13, 3, 0,
- 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 3, 0, 0, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 3, 0, 0, 0, 74, 77, 3, 0, 3, 0, 0, 0, 74, 77, 3, 0, 74, 77, 3, 0, 3, 0, 0, 0,
- 74, 77, 3, 0, 74, 77, 3, 0, 3, 0, 0, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 74, 77, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 161, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 158, 129, 2, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 91, 0, 2, 0, 91, 64, 0, 0, 91, 64, 0, 0, 91, 0, 2, 0, 91, 0, 2, 0, 91, 128, 1, 0, 91, 128, 1, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 192, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 128, 3, 0, 91, 128, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 128, 3, 0, 91, 128, 3, 0, 91, 128, 3, 0, 91, 128, 3, 0, 86, 128, 3, 0, 86, 128, 3, 0, 86, 128, 3, 0, 91, 64, 0, 0, 91, 128, 3, 0, 91, 64, 0, 0, 3, 0, 0, 0, 91, 64, 1, 0, 91, 64, 1, 0,
- 91, 128, 1, 0, 91, 128, 1, 0, 87, 128, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 128, 3, 0, 91, 128, 3, 0, 91, 128, 3, 0, 96, 128, 3, 0, 87, 128, 3, 0, 96, 128, 3, 0, 96, 128, 3, 0, 96, 128, 3, 0, 3, 0, 0, 0, 91, 128, 3, 0, 94, 64, 2, 0, 91, 128, 2, 0, 91, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 66, 128, 5, 0, 3, 0, 0, 0, 91, 128, 1, 0, 91, 128, 3, 0, 91, 128, 3, 0, 94, 64, 2, 0, 91, 128, 2, 0, 91, 128, 3, 0, 91, 128, 3, 0, 92, 0, 0, 0,
- 88, 64, 0, 0, 91, 128, 3, 0, 96, 128, 3, 0, 91, 64, 0, 0, 87, 128, 3, 0, 91, 64, 0, 0, 91, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 82, 128, 3, 0, 91, 64, 1, 0, 91, 64, 1, 0, 96, 128, 3, 0, 96, 128, 3, 0, 96, 128, 3, 0, 91, 128, 1, 0, 74, 140, 3, 0, 74, 140, 3, 0,
- 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0,
- 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 140, 3, 0, 74, 140, 3, 0,
- 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 94, 128, 2, 0, 94, 64, 2, 0, 96, 128, 3, 0, 95, 128, 3, 0, 97, 128, 3, 0, 94, 64, 2, 0, 94, 64, 2, 0, 3, 0, 0, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 97, 0, 8, 0, 97, 128, 8, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 148, 11, 3, 0, 148, 11, 3, 0, 161, 11, 3, 0,
- 161, 11, 3, 0, 161, 11, 3, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 161, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0,
- 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 202, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0,
- 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 15, 3, 0, 20, 15, 3, 0, 20, 15, 3, 0, 20, 15, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0,
- 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 19, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 10, 11, 3, 0, 19, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 74, 28, 3, 0, 80, 92, 5, 0,
- 80, 92, 5, 0, 80, 92, 5, 0, 80, 92, 5, 0, 80, 92, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0,
- 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 202, 38, 3, 0, 3, 0, 0, 0, 219, 102, 4, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 40, 3, 0,
- 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 27, 104, 4, 0, 19, 40, 3, 0, 19, 40, 3, 0, 19, 40, 3, 0, 19, 40, 3, 0, 19, 40, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 27, 3, 0, 74, 27, 3, 0,
- 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0,
- 74, 27, 3, 0, 74, 27, 3, 0, 74, 27, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 82, 219, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0,
- 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 12, 27, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0,
- 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 8, 27, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0,
- 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 1, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0,
- 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 3, 0, 0, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 76, 39, 3, 0, 3, 0, 0, 0, 76, 39, 3, 0, 76, 39, 3, 0, 3, 0, 0, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0,
- 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 3, 0, 0, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 3, 0, 0, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0,
- 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 72, 39, 3, 0, 3, 0, 0, 0, 72, 39, 3, 0, 72, 39, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0,
- 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0,
- 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 19, 3, 0,
- 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 3, 0, 0, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 3, 0, 0, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 7, 3, 0, 3, 0, 0, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0,
- 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 74, 7, 3, 0, 3, 0, 0, 0, 74, 7, 3, 0, 74, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 7, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0,
- 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 202, 1, 3, 0, 3, 0, 0, 0, 219, 65, 4, 0, 212, 1, 3, 0, 212, 1, 3, 0, 212, 1, 3, 0,
- 212, 1, 3, 0, 212, 1, 3, 0, 212, 1, 3, 0, 212, 1, 3, 0, 212, 1, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0,
- 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 10, 25, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 25, 3, 0, 20, 25, 3, 0, 20, 25, 3, 0, 20, 25, 3, 0, 20, 25, 3, 0, 20, 25, 3, 0,
- 20, 25, 3, 0, 20, 25, 3, 0, 20, 25, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0,
- 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 10, 13, 3, 0, 3, 0, 0, 0, 10, 13, 3, 0, 10, 13, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 13, 3, 0, 20, 13, 3, 0, 20, 13, 3, 0, 20, 13, 3, 0,
- 20, 13, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 74, 29, 3, 0, 84, 29, 3, 0, 84, 29, 3, 0,
- 84, 29, 3, 0, 84, 29, 3, 0, 84, 29, 3, 0, 84, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 93, 4, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0,
- 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 10, 20, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 20, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0,
- 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 22, 3, 0, 20, 22, 3, 0, 10, 22, 3, 0, 10, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0,
- 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0,
- 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 74, 16, 3, 0, 80, 80, 5, 0, 80, 80, 5, 0, 80, 80, 5, 0, 3, 0, 0, 0, 80, 80, 5, 0, 80, 80, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 80, 5, 0, 80, 80, 5, 0, 80, 80, 5, 0, 80, 80, 5, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 3, 0, 0, 0,
- 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 3, 0, 0, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0,
- 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 74, 16, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 80, 5, 0, 80, 80, 5, 0, 80, 80, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 80, 5, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 84, 16, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 80, 4, 0, 91, 16, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0,
- 10, 21, 3, 0, 16, 85, 5, 0, 16, 85, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 21, 3, 0, 20, 21, 3, 0, 20, 21, 3, 0, 20, 21, 3, 0, 20, 21, 3, 0, 27, 85, 4, 0, 27, 85, 4, 0, 27, 85, 4, 0, 27, 85, 4, 0, 27, 85, 4, 0, 27, 85, 4, 0, 27, 213, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 66, 4, 0, 91, 66, 4, 0, 91, 66, 4, 0, 91, 66, 4, 0, 91, 66, 4, 0, 91, 66, 4, 0, 91, 66, 4, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0,
- 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 202, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 212, 29, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0,
- 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 202, 28, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 212, 28, 3, 0, 10, 29, 3, 0,
- 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 10, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 29, 3, 0,
- 27, 29, 3, 0, 27, 29, 3, 0, 27, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 20, 29, 3, 0, 20, 29, 3, 0, 20, 29, 3, 0, 20, 29, 3, 0, 20, 29, 3, 0, 20, 29, 3, 0, 20, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0,
- 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 212, 14, 3, 0, 212, 14, 3, 0, 212, 14, 3, 0, 212, 14, 3, 0, 212, 14, 3, 0, 212, 14, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 80, 94, 5, 0, 80, 94, 5, 0, 80, 94, 5, 0, 80, 94, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 82, 222, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0,
- 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 148, 1, 3, 0, 3, 0, 0, 0, 138, 40, 3, 0, 138, 40, 3, 0,
- 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 3, 0, 0, 0, 144, 104, 5, 0, 144, 104, 5, 0, 151, 104, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 40, 3, 0, 138, 40, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0,
- 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 74, 33, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0,
- 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 10, 33, 3, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 16, 97, 5, 0, 20, 33, 3, 0, 20, 33, 3, 0, 20, 33, 3, 0, 20, 33, 3, 0, 27, 33, 3, 0,
- 27, 33, 3, 0, 27, 33, 3, 0, 27, 33, 3, 0, 27, 33, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0,
- 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 138, 27, 3, 0, 144, 91, 5, 0, 144, 91, 5, 0, 144, 91, 5, 0, 144, 91, 5, 0, 155, 27, 3, 0, 155, 27, 3, 0, 155, 27, 3, 0, 155, 27, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0,
- 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 138, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 148, 6, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0,
- 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 138, 9, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0,
- 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 91, 68, 4, 0, 91, 68, 4, 0, 91, 4, 3, 0, 91, 4, 3, 0, 91, 4, 3, 0, 91, 4, 3, 0, 91, 4, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0,
- 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 84, 4, 3, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 82, 196, 2, 0, 80, 68, 5, 0, 74, 4, 3, 0, 74, 4, 3, 0, 80, 68, 5, 0, 80, 68, 5, 0, 74, 4, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 68, 5, 0, 155, 81, 4, 0, 155, 81, 4, 0, 144, 81, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 130, 17, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0,
- 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 138, 33, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0,
- 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0, 146, 225, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 78, 69, 5, 0,
- 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 3, 0, 0, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 82, 197, 2, 0, 91, 69, 4, 0, 91, 69, 4, 0, 91, 69, 4, 0, 91, 69, 4, 0, 74, 5, 3, 0, 78, 69, 5, 0,
- 78, 69, 5, 0, 74, 5, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0,
- 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 74, 20, 3, 0, 80, 84, 5, 0, 91, 20, 3, 0, 91, 148, 4, 0, 74, 20, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0,
- 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 212, 32, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 16, 3, 0,
- 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 3, 0, 0, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0,
- 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 208, 80, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 3, 0, 0, 0, 202, 23, 3, 0, 3, 0, 0, 0, 202, 23, 3, 0, 202, 23, 3, 0,
- 202, 23, 3, 0, 202, 23, 3, 0, 3, 0, 0, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 3, 0, 0, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0,
- 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 202, 23, 3, 0, 219, 87, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0,
- 138, 32, 3, 0, 138, 32, 3, 0, 142, 96, 5, 0, 142, 96, 5, 0, 142, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 144, 96, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0,
- 146, 224, 2, 0, 146, 224, 2, 0, 146, 224, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 75, 5, 0, 80, 75, 5, 0, 78, 75, 5, 0, 78, 75, 5, 0, 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 11, 3, 0,
- 74, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0,
- 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 3, 0, 0, 0, 144, 64, 5, 0, 80, 75, 5, 0, 74, 11, 3, 0, 78, 75, 5, 0, 78, 75, 5, 0, 80, 75, 5, 0, 78, 75, 5, 0, 78, 75, 5, 0, 78, 75, 5, 0, 78, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 75, 5, 0, 78, 75, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 78, 75, 5, 0, 78, 75, 5, 0, 78, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 74, 11, 3, 0, 78, 75, 5, 0,
- 78, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 80, 75, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 89, 5, 0, 78, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 78, 89, 5, 0, 80, 89, 5, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 91, 89, 4, 0, 91, 89, 4, 0, 91, 89, 4, 0, 91, 89, 4, 0, 91, 25, 3, 0, 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0,
- 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0, 82, 217, 2, 0, 91, 89, 4, 0, 91, 89, 4, 0, 3, 0, 0, 0, 91, 25, 3, 0, 80, 89, 5, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 102, 5, 0, 14, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 10, 38, 3, 0, 10, 38, 3, 0, 27, 38, 3, 0,
- 10, 38, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 18, 230, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 78, 96, 5, 0, 78, 96, 5, 0, 78, 96, 5, 0, 80, 96, 5, 0, 80, 96, 5, 0, 80, 96, 5, 0, 80, 96, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 78, 96, 5, 0,
- 78, 96, 5, 0, 78, 96, 5, 0, 78, 96, 5, 0, 80, 96, 5, 0, 80, 96, 5, 0, 78, 96, 5, 0, 80, 96, 5, 0, 80, 96, 5, 0, 91, 160, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 160, 1, 0, 91, 160, 1, 0, 91, 32, 3, 0, 91, 32, 3, 0, 91, 32, 3, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0,
- 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 91, 96, 4, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 80, 96, 5, 0, 80, 96, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 86, 5, 0, 219, 86, 4, 0, 219, 86, 4, 0, 219, 22, 3, 0, 202, 22, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 210, 214, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0,
- 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 27, 151, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 16, 99, 5, 0, 14, 99, 5, 0, 16, 99, 5, 0, 14, 99, 5, 0, 14, 99, 5, 0, 16, 99, 5, 0, 16, 99, 5, 0, 16, 99, 5, 0, 16, 99, 5, 0, 16, 99, 5, 0, 16, 99, 5, 0,
- 14, 99, 5, 0, 16, 99, 5, 0, 10, 35, 3, 0, 27, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 18, 227, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0,
- 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 78, 1, 10, 0,
- 78, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 78, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 80, 1, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0, 82, 193, 2, 0,
- 84, 1, 10, 0, 84, 1, 10, 0, 91, 65, 4, 0, 91, 65, 4, 0, 91, 65, 4, 0, 97, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 74, 1, 10, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0,
- 78, 72, 5, 0, 78, 72, 5, 0, 78, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 78, 72, 5, 0, 80, 72, 5, 0, 80, 72, 5, 0, 91, 8, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0,
- 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0, 146, 231, 2, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 148, 39, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 138, 39, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 8, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 3, 0, 0, 0, 10, 8, 3, 0, 10, 8, 3, 0,
- 3, 0, 0, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 10, 8, 3, 0, 14, 72, 5, 0, 14, 72, 5, 0, 14, 72, 5, 0, 14, 72, 5, 0, 14, 72, 5, 0, 14, 72, 5, 0, 3, 0, 0, 0, 14, 72, 5, 0,
- 14, 72, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 72, 5, 0, 16, 72, 5, 0, 14, 72, 5, 0, 16, 72, 5, 0, 10, 8, 3, 0, 14, 72, 5, 0, 10, 8, 3, 0, 14, 72, 5, 0, 16, 72, 5, 0, 27, 72, 4, 0, 27, 72, 4, 0, 27, 72, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 200, 2, 0,
- 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 18, 200, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 138, 24, 3, 0, 142, 88, 5, 0, 142, 88, 5, 0,
- 142, 88, 5, 0, 144, 88, 5, 0, 144, 88, 5, 0, 144, 88, 5, 0, 144, 88, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 88, 5, 0, 144, 88, 5, 0, 142, 88, 5, 0, 142, 88, 5, 0, 142, 88, 5, 0, 142, 88, 5, 0, 144, 88, 5, 0, 138, 24, 3, 0, 155, 152, 4, 0, 138, 24, 3, 0, 142, 88, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 27, 41, 3, 0, 27, 105, 4, 0, 27, 105, 4, 0, 27, 105, 4, 0, 27, 105, 4, 0,
- 27, 169, 4, 0, 27, 41, 3, 0, 16, 105, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 33, 3, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 206, 97, 5, 0, 206, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 202, 33, 3, 0, 202, 33, 3, 0,
- 202, 33, 3, 0, 202, 33, 3, 0, 219, 161, 4, 0, 219, 97, 4, 0, 219, 97, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0,
- 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0,
- 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0, 219, 135, 4, 0,
- 219, 135, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 3, 3, 0, 202, 3, 3, 0,
- 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 3, 0, 0, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0,
- 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 202, 3, 3, 0, 206, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 3, 0, 0, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 208, 67, 5, 0, 206, 67, 5, 0, 208, 67, 5, 0,
- 202, 3, 3, 0, 219, 67, 4, 0, 219, 67, 4, 0, 219, 67, 4, 0, 219, 67, 4, 0, 219, 67, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0, 210, 195, 2, 0,
- 210, 195, 2, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 212, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 149, 4, 0, 91, 149, 1, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0,
- 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 74, 21, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0,
- 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 3, 0, 0, 0, 78, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 78, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 78, 85, 5, 0, 80, 85, 5, 0, 80, 85, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 3, 0, 0, 0, 202, 10, 3, 0, 202, 10, 3, 0, 3, 0, 0, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0,
- 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 202, 10, 3, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 208, 74, 5, 0, 3, 0, 0, 0, 208, 74, 5, 0, 208, 74, 5, 0,
- 3, 0, 0, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 208, 74, 5, 0, 202, 10, 3, 0, 208, 74, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0,
- 210, 202, 2, 0, 210, 202, 2, 0, 210, 202, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 3, 0, 0, 0, 138, 10, 3, 0, 138, 10, 3, 0, 3, 0, 0, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0,
- 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 138, 10, 3, 0, 142, 74, 5, 0, 142, 74, 5, 0, 142, 74, 5, 0, 142, 74, 5, 0, 142, 74, 5, 0, 3, 0, 0, 0, 144, 74, 5, 0,
- 144, 74, 5, 0, 3, 0, 0, 0, 142, 74, 5, 0, 142, 74, 5, 0, 144, 74, 5, 0, 142, 74, 5, 0, 144, 74, 5, 0, 138, 10, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0, 146, 202, 2, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0,
- 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 138, 20, 3, 0, 144, 84, 5, 0, 144, 84, 5, 0, 142, 84, 5, 0, 142, 84, 5, 0, 155, 20, 3, 0, 155, 20, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 80, 5, 0, 16, 80, 5, 0, 10, 16, 3, 0, 14, 80, 5, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 3, 0, 0, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0,
- 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 10, 16, 3, 0, 14, 80, 5, 0, 14, 80, 5, 0, 16, 80, 5, 0, 16, 80, 5, 0, 16, 80, 5, 0, 16, 80, 5, 0,
- 16, 80, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 80, 5, 0, 14, 80, 5, 0, 16, 80, 5, 0, 14, 80, 5, 0, 16, 80, 5, 0, 27, 80, 4, 0, 27, 80, 4, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 27, 144, 3, 0, 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0,
- 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0, 18, 208, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 138, 19, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 222, 163, 2, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0,
- 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 99, 4, 0, 74, 40, 3, 0, 74, 40, 3, 0,
- 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 3, 0, 0, 0, 91, 104, 4, 0, 91, 104, 4, 0, 91, 104, 4, 0, 91, 104, 4, 0,
- 91, 104, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0,
- 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 27, 7, 3, 0, 27, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 16, 73, 5, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 16, 73, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0,
- 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0,
- 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0,
- 74, 23, 3, 0, 74, 23, 3, 0, 74, 23, 3, 0, 3, 0, 0, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 82, 215, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 91, 87, 4, 0, 91, 87, 4, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0,
- 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0,
- 74, 38, 3, 0, 3, 0, 0, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 82, 230, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0,
- 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 10, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 67, 5, 0, 16, 67, 5, 0, 16, 67, 5, 0, 16, 67, 5, 0, 16, 67, 5, 0, 27, 67, 4, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 9, 14, 3, 0, 9, 14, 3, 0, 9, 14, 3, 0, 9, 14, 3, 0, 27, 78, 4, 0, 33, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0,
- 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0, 18, 206, 2, 0, 3, 0, 0, 0, 20, 14, 3, 0, 20, 14, 3, 0, 20, 14, 3, 0, 20, 14, 3, 0, 20, 14, 3, 0, 20, 14, 3, 0, 20, 14, 3, 0, 3, 0, 0, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0,
- 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0,
- 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 148, 21, 3, 0, 155, 85, 4, 0, 155, 85, 4, 0,
- 155, 21, 3, 0, 155, 21, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 93, 5, 0, 138, 29, 3, 0, 142, 93, 5, 0,
- 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 93, 5, 0, 144, 93, 5, 0, 144, 93, 5, 0, 144, 93, 5, 0,
- 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 137, 29, 3, 0, 9, 100, 1, 0, 201, 89, 1, 0, 155, 76, 1, 0, 137, 76, 1, 0, 16, 17, 1, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 142, 76, 5, 0, 142, 76, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0,
- 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 201, 15, 3, 0, 201, 15, 3, 0, 201, 15, 3, 0, 201, 15, 3, 0, 3, 0, 0, 0, 201, 15, 3, 0, 201, 15, 3, 0, 201, 15, 3, 0, 201, 15, 3, 0,
- 201, 15, 3, 0, 201, 15, 3, 0, 201, 15, 3, 0, 3, 0, 0, 0, 201, 15, 3, 0, 201, 15, 3, 0, 3, 0, 0, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 138, 13, 9, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 13, 9, 0, 138, 13, 9, 0, 138, 13, 9, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 15, 9, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0,
- 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0,
- 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 225, 8, 3, 0, 208, 72, 5, 0, 208, 72, 5, 0, 219, 72, 4, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 144, 75, 5, 0, 144, 75, 5, 0, 144, 75, 5, 0, 161, 11, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 3, 0, 0, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 3, 0, 0, 0, 72, 0, 3, 0, 3, 0, 0, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 3, 0, 0, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 3, 0, 0, 0, 76, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 3, 0, 0, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0,
- 82, 192, 2, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 144, 95, 5, 0, 161, 31, 3, 0, 161, 31, 3, 0, 155, 95, 4, 0, 155, 95, 4, 0, 155, 95, 4, 0, 155, 95, 4, 0, 155, 31, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 3, 0, 0, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 74, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 3, 0, 0, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0,
- 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 3, 0, 0, 0, 80, 74, 5, 0, 80, 74, 5, 0, 3, 0, 0, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 80, 74, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 71, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, 78, 5, 0,
- 80, 78, 5, 0, 80, 78, 5, 0, 80, 78, 5, 0, 80, 78, 5, 0, 80, 78, 5, 0, 80, 78, 5, 0, 73, 14, 3, 0, 73, 14, 3, 0, 73, 14, 3, 0, 73, 14, 3, 0, 73, 14, 3, 0, 73, 14, 3, 0, 73, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0, 82, 206, 2, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 14, 3, 0, 97, 14, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0,
- 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 138, 38, 3, 0, 144, 102, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 208, 103, 5, 0, 208, 103, 5, 0, 208, 103, 5, 0, 208, 103, 5, 0, 210, 231, 2, 0,
- 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 210, 231, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 222, 103, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0, 74, 24, 3, 0,
- 73, 24, 3, 0, 80, 88, 5, 0, 80, 88, 5, 0, 80, 88, 5, 0, 80, 88, 5, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 82, 216, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 3, 0, 0, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 212, 21, 3, 0, 208, 85, 5, 0, 208, 85, 5, 0, 208, 85, 5, 0, 208, 85, 5, 0, 208, 85, 5, 0, 208, 85, 5, 0,
- 208, 85, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 208, 64, 5, 0, 208, 64, 5, 0, 208, 64, 5, 0, 208, 64, 5, 0, 208, 64, 5, 0, 208, 64, 5, 0, 208, 64, 5, 0, 201, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 210, 192, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 219, 0, 0, 0, 219, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 97, 128, 2, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 94, 128, 2, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 97, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 160, 1, 3, 0, 160, 1, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0,
- 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 97, 0, 7, 0, 161, 141, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 3, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0,
- 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0,
- 138, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0,
- 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 66, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
- 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0,
- 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0,
- 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 12, 10, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0,
- 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 6, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 140, 11, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 76, 0, 3, 0, 97, 128, 2, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 76, 0, 3, 0, 97, 0, 3, 0, 97, 128, 2, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 128, 8, 0, 97, 0, 3, 0, 76, 0, 3, 0, 97, 64, 2, 0, 97, 0, 3, 0, 96, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 76, 0, 3, 0, 97, 0, 3, 0, 140, 11, 3, 0, 97, 0, 3, 0,
- 76, 0, 3, 0, 97, 0, 3, 0, 76, 18, 3, 0, 76, 146, 8, 0, 76, 0, 3, 0, 76, 0, 3, 0, 97, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 18, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 74, 0, 3, 0, 72, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 72, 18, 3, 0, 97, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 128, 8, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 128, 8, 0, 84, 0, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0,
- 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 76, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0,
- 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0,
- 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 204, 6, 3, 0, 200, 6, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 138, 7, 3, 0, 144, 71, 5, 0, 143, 71, 5, 0, 143, 71, 5, 0, 143, 71, 5, 0, 155, 7, 3, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 155, 7, 3, 0, 137, 7, 3, 0,
- 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 140, 7, 3, 0,
- 136, 7, 3, 0, 140, 7, 3, 0, 136, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 144, 71, 5, 0, 144, 71, 5, 0, 95, 0, 3, 0, 95, 0, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 73, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 73, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 74, 18, 3, 0,
- 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0,
- 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 76, 18, 3, 0, 72, 18, 3, 0, 91, 128, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0,
- 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 76, 146, 3, 0, 92, 0, 0, 0, 91, 128, 3, 0, 88, 64, 0, 0, 95, 128, 3, 0, 86, 128, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0,
- 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0,
- 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 140, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0,
- 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0,
- 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 204, 14, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0,
- 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 39, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0,
- 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 140, 21, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0,
- 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 76, 0, 3, 0, 96, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0,
- 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 72, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0,
- 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 204, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0,
- 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 200, 0, 3, 0, 8, 10, 3, 0,
- 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0,
- 8, 10, 3, 0, 91, 0, 3, 0, 9, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 7, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 137, 7, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0,
- 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 136, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0,
- 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 139, 11, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0,
- 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 72, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0,
- 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 8, 10, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0,
- 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 72, 18, 3, 0, 95, 0, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0,
- 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 72, 6, 3, 0, 95, 128, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0,
- 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 72, 146, 3, 0, 92, 0, 0, 0, 96, 128, 3, 0, 88, 64, 0, 0, 96, 128, 3, 0, 92, 0, 0, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0,
- 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 136, 8, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0,
- 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0,
- 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 200, 14, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0,
- 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 39, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0,
- 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 136, 21, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0,
- 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 202, 30, 3, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 201, 30, 3, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0, 208, 94, 5, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 137, 1, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0,
- 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 202, 7, 3, 0, 202, 7, 3, 0, 208, 71, 5, 0, 208, 71, 5, 0, 91, 64, 4, 0, 91, 64, 4, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 210, 199, 2, 0, 219, 7, 3, 0, 201, 7, 3, 0,
- 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 9, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0,
- 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0,
- 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 74, 26, 3, 0, 73, 26, 3, 0, 73, 26, 3, 0, 73, 26, 3, 0, 73, 26, 3, 0, 73, 26, 3, 0,
- 73, 26, 3, 0, 91, 90, 4, 0, 91, 90, 4, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 137, 11, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0,
- 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 73, 18, 3, 0, 137, 11, 3, 0, 90, 192, 0, 0, 89, 192, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0,
- 92, 0, 0, 0, 88, 64, 0, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 128, 1, 0, 73, 0, 3, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 87, 192, 4, 0, 87, 192, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0, 101, 64, 4, 0,
- 91, 64, 0, 0, 91, 64, 0, 0, 91, 128, 3, 0, 97, 128, 3, 0, 137, 76, 1, 0, 74, 128, 3, 0, 147, 140, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 97, 128, 3, 0, 97, 128, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0,
- 92, 0, 0, 0, 88, 64, 0, 0, 87, 64, 1, 0, 92, 0, 0, 0, 88, 64, 0, 0, 88, 64, 0, 0, 97, 128, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 78, 76, 5, 0, 78, 76, 5, 0, 87, 128, 3, 0, 73, 128, 3, 0, 73, 128, 3, 0,
- 73, 128, 3, 0, 73, 128, 3, 0, 73, 64, 5, 0, 97, 128, 3, 0, 97, 128, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 147, 140, 3, 0, 137, 76, 1, 0, 74, 64, 1, 0, 91, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0,
- 202, 143, 3, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 91, 64, 1, 0, 73, 0, 9, 0, 201, 79, 1, 0, 201, 79, 1, 0, 202, 143, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0,
- 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 201, 104, 1, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0,
- 202, 168, 3, 0, 202, 168, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0, 138, 19, 3, 0,
- 138, 19, 3, 0, 137, 19, 3, 0, 137, 19, 3, 0, 137, 19, 3, 0, 137, 19, 3, 0, 137, 19, 3, 0, 137, 19, 3, 0, 155, 83, 4, 0, 155, 83, 4, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 9, 39, 3, 0, 27, 103, 4, 0, 27, 167, 1, 0, 27, 103, 4, 0,
- 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0,
- 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 95, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 73, 0, 3, 0, 10, 24, 10, 0, 10, 24, 10, 0,
- 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 9, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 33, 24, 10, 0, 33, 24, 10, 0, 33, 24, 10, 0, 10, 24, 10, 0,
- 14, 24, 10, 0, 16, 24, 10, 0, 14, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 88, 64, 0, 0, 91, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 64, 0, 0, 91, 64, 1, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 202, 15, 9, 0, 73, 0, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0,
- 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0,
- 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 73, 64, 1, 0, 73, 64, 1, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0,
- 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 137, 7, 3, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 206, 71, 5, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0,
- 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 208, 71, 5, 0, 206, 71, 5, 0,
- 208, 71, 5, 0, 202, 7, 3, 0, 206, 71, 5, 0, 206, 71, 5, 0, 206, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 206, 71, 5, 0, 206, 71, 5, 0, 206, 71, 5, 0, 206, 71, 5, 0, 208, 71, 5, 0, 206, 71, 5, 0, 206, 71, 5, 0, 202, 7, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0,
- 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 138, 22, 3, 0, 144, 86, 5, 0, 144, 86, 5, 0, 138, 22, 3, 0, 142, 86, 5, 0, 142, 86, 5, 0, 202, 37, 3, 0, 225, 165, 4, 0, 225, 165, 4, 0, 225, 165, 4, 0, 219, 165, 4, 0, 219, 37, 3, 0, 219, 165, 4, 0,
- 219, 165, 4, 0, 219, 37, 1, 0, 219, 165, 4, 0, 219, 165, 4, 0, 219, 101, 4, 0, 219, 37, 1, 0, 219, 165, 1, 0, 219, 165, 1, 0, 219, 165, 1, 0, 219, 165, 1, 0, 219, 165, 1, 0, 219, 37, 1, 0, 225, 37, 3, 0, 219, 165, 1, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 208, 101, 5, 0, 208, 101, 5, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0, 225, 37, 3, 0,
- 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0,
- 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0,
- 16, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 10, 24, 10, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 27, 88, 4, 0, 27, 88, 4, 0, 27, 24, 3, 0, 27, 24, 3, 0, 27, 24, 3, 0, 27, 24, 3, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0,
- 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 10, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0,
- 14, 24, 10, 0, 14, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 16, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 10, 24, 10, 0, 16, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0,
- 16, 24, 10, 0, 16, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0, 10, 24, 10, 0, 14, 24, 10, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 18, 216, 2, 0, 14, 24, 10, 0, 14, 24, 10, 0, 14, 24, 10, 0, 16, 24, 10, 0,
- 33, 24, 10, 0, 33, 24, 10, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0,
- 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 76, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0,
- 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 140, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0,
- 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 74, 204, 6, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0,
- 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 202, 9, 3, 0, 151, 69, 4, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0,
- 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 161, 5, 3, 0, 155, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0,
- 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 5, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0,
- 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 30, 3, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0,
- 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0, 138, 16, 10, 0,
- 144, 16, 10, 0, 144, 16, 10, 0, 142, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 144, 16, 10, 0, 142, 16, 10, 0, 142, 16, 10, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0,
- 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 16, 87, 5, 0, 16, 87, 5, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0,
- 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 10, 23, 3, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0,
- 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0,
- 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 138, 35, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0,
- 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 202, 17, 10, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 142, 66, 5, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0,
- 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 138, 2, 3, 0, 144, 66, 5, 0, 142, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0, 144, 66, 5, 0,
- 142, 66, 5, 0, 144, 66, 5, 0, 142, 66, 5, 0, 142, 66, 5, 0, 142, 66, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0, 14, 98, 5, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0,
- 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 14, 98, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0, 14, 98, 5, 0, 14, 98, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0, 14, 98, 5, 0, 16, 98, 5, 0, 16, 98, 5, 0,
- 16, 98, 5, 0, 10, 34, 3, 0, 10, 34, 3, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 18, 226, 2, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 10, 34, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0,
- 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0, 74, 3, 3, 0,
- 74, 3, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0,
- 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 138, 18, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0,
- 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 202, 36, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 13, 9, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0,
- 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 87, 64, 1, 0, 202, 15, 9, 0, 202, 143, 3, 0,
- 202, 15, 9, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0,
- 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 15, 9, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0,
- 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 202, 143, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0,
- 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 74, 140, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0,
- 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0, 10, 132, 3, 0,
- 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0,
- 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 138, 140, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0,
- 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 202, 168, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0,
- 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 10, 39, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0,
- 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0,
- 202, 2, 3, 0, 202, 2, 3, 0, 202, 2, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 80, 98, 5, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 80, 98, 5, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 80, 98, 5, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0,
- 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 74, 34, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0,
- 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 138, 28, 3, 0, 78, 95, 5, 0, 78, 95, 5, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0,
- 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 74, 31, 3, 0, 78, 95, 5, 0,
- 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 78, 95, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0,
- 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 208, 71, 5, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 202, 7, 3, 0, 219, 7, 3, 0, 219, 7, 3, 0, 219, 7, 3, 0, 202, 7, 3, 0, 219, 135, 4, 0, 202, 7, 3, 0, 202, 7, 3, 0, 208, 71, 5, 0, 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0,
- 146, 207, 2, 0, 146, 207, 2, 0, 146, 207, 2, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0, 138, 15, 3, 0,
- 138, 15, 3, 0, 138, 15, 3, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 144, 79, 5, 0, 91, 64, 4, 0, 155, 79, 4, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0,
- 10, 30, 3, 0, 10, 30, 3, 0, 10, 30, 3, 0, 80, 79, 5, 0, 80, 79, 5, 0, 80, 79, 5, 0, 78, 79, 5, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0,
- 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 74, 15, 3, 0, 80, 79, 5, 0, 78, 79, 5, 0, 78, 79, 5, 0, 80, 79, 5, 0, 80, 79, 5, 0, 80, 79, 5, 0, 80, 79, 5, 0, 78, 79, 5, 0, 78, 79, 5, 0, 80, 79, 5, 0, 80, 79, 5, 0, 78, 79, 5, 0,
- 78, 79, 5, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0,
- 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 10, 6, 3, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0,
- 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 80, 36, 10, 0, 74, 36, 10, 0, 80, 36, 10, 0, 80, 36, 10, 0, 80, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 80, 36, 10, 0, 80, 36, 10, 0, 74, 36, 10, 0,
- 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 74, 36, 10, 0, 80, 36, 10, 0, 80, 36, 10, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0,
- 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 138, 23, 3, 0, 74, 204, 5, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0,
- 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 204, 5, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0,
- 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 74, 12, 6, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0, 159, 1, 3, 0,
- 159, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 88, 64, 0, 0, 92, 0, 0, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 161, 1, 3, 0, 138, 1, 3, 0,
- 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 138, 1, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0,
- 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 74, 19, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0,
- 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0,
- 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 202, 5, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0,
- 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 15, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0,
- 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 10, 40, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0,
- 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0, 202, 31, 3, 0,
- 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0,
- 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 74, 9, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0,
- 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 1, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0,
- 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 10, 19, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0,
- 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 202, 27, 3, 0, 225, 27, 3, 0, 225, 27, 3, 0, 212, 27, 3, 0, 212, 27, 3, 0, 212, 27, 3, 0, 212, 27, 3, 0,
- 212, 27, 3, 0, 212, 27, 3, 0, 212, 27, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0,
- 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 74, 22, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0,
- 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 10, 31, 3, 0, 20, 31, 3, 0, 20, 31, 3, 0, 27, 31, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0,
- 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 202, 24, 3, 0, 212, 24, 3, 0, 212, 24, 3, 0, 212, 24, 3, 0, 10, 21, 3, 0,
- 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 33, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0,
- 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 10, 21, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0,
- 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 74, 2, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0,
- 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 138, 26, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0,
- 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0, 74, 30, 3, 0,
- 74, 30, 3, 0, 74, 30, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0,
- 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 138, 40, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0,
- 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 74, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 84, 33, 3, 0, 78, 68, 5, 0, 80, 68, 5, 0, 78, 68, 5, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0,
- 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 74, 4, 3, 0, 80, 68, 5, 0, 80, 68, 5, 0,
- 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 80, 68, 5, 0, 144, 81, 5, 0, 144, 81, 5, 0, 142, 81, 5, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0,
- 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 138, 17, 3, 0, 142, 81, 5, 0, 142, 81, 5, 0, 142, 81, 5, 0, 144, 81, 5, 0, 144, 81, 5, 0, 144, 81, 5, 0, 144, 81, 5, 0, 142, 81, 5, 0, 142, 81, 5, 0, 144, 81, 5, 0, 144, 81, 5, 0, 155, 17, 3, 0,
- 155, 17, 3, 0, 130, 17, 3, 0, 155, 81, 4, 0, 155, 81, 4, 0, 80, 69, 5, 0, 80, 69, 5, 0, 80, 69, 5, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0,
- 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 74, 5, 3, 0, 16, 96, 5, 0, 16, 96, 5, 0, 14, 96, 5, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0,
- 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 14, 96, 5, 0, 14, 96, 5, 0, 14, 96, 5, 0, 16, 96, 5, 0,
- 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 14, 96, 5, 0, 14, 96, 5, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 10, 32, 3, 0, 27, 96, 4, 0, 27, 96, 4, 0, 27, 32, 3, 0, 27, 96, 4, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 16, 96, 5, 0, 27, 32, 3, 0, 14, 96, 5, 0, 16, 96, 5, 0,
- 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 18, 224, 2, 0, 10, 32, 3, 0, 27, 160, 4, 0, 10, 32, 3, 0, 27, 96, 4, 0, 27, 96, 4, 0, 27, 96, 4, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0,
- 202, 16, 3, 0, 202, 16, 3, 0, 202, 16, 3, 0, 206, 80, 5, 0, 206, 80, 5, 0, 206, 80, 5, 0, 208, 80, 5, 0, 208, 80, 5, 0, 208, 80, 5, 0, 206, 80, 5, 0, 206, 80, 5, 0, 208, 80, 5, 0, 206, 80, 5, 0, 208, 80, 5, 0, 208, 80, 5, 0, 219, 80, 4, 0, 219, 80, 4, 0, 219, 16, 3, 0, 219, 80, 4, 0, 219, 80, 4, 0, 219, 16, 3, 0, 208, 80, 5, 0, 202, 16, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0,
- 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0,
- 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 138, 32, 3, 0, 144, 96, 5, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0,
- 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 74, 25, 3, 0, 78, 89, 5, 0, 78, 89, 5, 0, 78, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 80, 89, 5, 0, 10, 38, 3, 0,
- 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0,
- 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 10, 38, 3, 0, 14, 102, 5, 0, 14, 102, 5, 0, 14, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 16, 102, 5, 0, 14, 102, 5, 0, 16, 102, 5, 0, 14, 102, 5, 0, 14, 102, 5, 0, 14, 102, 5, 0, 14, 102, 5, 0, 16, 102, 5, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0,
- 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0,
- 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 74, 32, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0,
- 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 202, 22, 3, 0, 206, 86, 5, 0, 206, 86, 5, 0, 206, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 208, 86, 5, 0, 206, 86, 5, 0, 206, 86, 5, 0, 208, 86, 5, 0,
- 206, 86, 5, 0, 208, 86, 5, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0,
- 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 10, 35, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0,
- 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 74, 8, 3, 0, 10, 41, 3, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0,
- 16, 105, 5, 0, 16, 105, 5, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0, 10, 41, 3, 0,
- 10, 41, 3, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 14, 105, 5, 0, 10, 41, 3, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 16, 105, 5, 0, 27, 169, 4, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0,
- 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 202, 33, 3, 0, 208, 97, 5, 0, 208, 97, 5, 0,
- 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 206, 97, 5, 0, 208, 97, 5, 0, 208, 97, 5, 0, 219, 97, 4, 0, 219, 97, 4, 0, 219, 97, 4, 0, 202, 33, 3, 0, 219, 161, 4, 0, 219, 161, 4, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0,
- 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0, 10, 28, 3, 0,
- 10, 28, 3, 0, 10, 28, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0,
- 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 74, 40, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0,
- 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 7, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0,
- 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 0, 0, 10, 9, 0, 0,
- 10, 9, 0, 0, 10, 73, 0, 0, 10, 73, 0, 0, 10, 73, 0, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 73, 0, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 0, 0, 10, 73, 0, 0, 10, 9, 0, 0, 10, 73, 0, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0,
- 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 0, 0, 10, 73, 0, 0, 10, 73, 0, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0,
- 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 10, 9, 3, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 0, 0, 2, 73, 0, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 1, 0, 2, 9, 0, 0,
- 2, 73, 0, 0, 2, 9, 0, 0, 2, 73, 0, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0,
- 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 0, 0, 202, 77, 0, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0,
- 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 202, 13, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0,
- 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 74, 38, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0,
- 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 10, 14, 3, 0, 16, 78, 5, 0, 16, 78, 5, 0, 16, 78, 5, 0, 16, 78, 5, 0, 16, 78, 5, 0, 16, 78, 5, 0,
- 16, 78, 5, 0, 27, 78, 4, 0, 27, 78, 4, 0, 27, 78, 4, 0, 27, 14, 3, 0, 27, 14, 3, 0, 33, 14, 3, 0, 33, 14, 3, 0, 33, 14, 3, 0, 33, 14, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0,
- 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 138, 29, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0,
- 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 164, 3, 0, 10, 17, 3, 0,
- 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0,
- 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 10, 17, 3, 0, 202, 143, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0,
- 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 138, 141, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0,
- 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 153, 3, 0, 202, 8, 3, 0,
- 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0,
- 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 202, 8, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0,
- 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 74, 14, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0,
- 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 39, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0,
- 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0, 202, 21, 3, 0,
- 202, 21, 3, 0, 202, 21, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 66, 0, 3, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0,
- 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 144, 65, 5, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 210, 229, 2, 0, 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0,
- 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0, 212, 37, 3, 0, 225, 101, 4, 0, 208, 101, 5, 0, 225, 37, 3, 0, 208, 101, 5, 0, 225, 37, 3, 0, 208, 101, 5, 0, 220, 37, 0, 0, 216, 101, 0, 0, 220, 37, 0, 0, 216, 101, 0, 0, 206, 101, 5, 0, 206, 101, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 0, 1, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 0, 1, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0,
- 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0,
- 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 71, 5, 0, 144, 71, 5, 0, 91, 128, 3, 0, 87, 128, 3, 0, 87, 128, 3, 0, 86, 128, 3, 0, 86, 128, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0,
- 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 78, 64, 5, 0, 78, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 78, 64, 5, 0, 78, 64, 5, 0, 78, 64, 5, 0, 78, 64, 5, 0, 78, 64, 5, 0, 78, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0,
- 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 97, 0, 3, 0, 97, 0, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 144, 64, 5, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0,
- 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0,
- 144, 95, 5, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 144, 95, 5, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0,
- 161, 31, 3, 0, 161, 31, 3, 0, 144, 95, 5, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0,
- 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 142, 93, 5, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0,
- 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0, 82, 192, 2, 0,
- 82, 192, 2, 0, 82, 192, 2, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0,
- 83, 146, 8, 0, 83, 146, 8, 0, 83, 146, 8, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 83, 18, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0,
- 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 147, 11, 3, 0, 148, 11, 3, 0, 148, 11, 3, 0, 148, 11, 3, 0, 148, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0,
- 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0,
- 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 83, 40, 3, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0,
- 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 0, 3, 0, 97, 192, 0, 0,
- 97, 0, 3, 0, 97, 128, 1, 0, 97, 128, 1, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0,
- 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 97, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0,
- 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 84, 128, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0,
- 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0, 20, 22, 3, 0,
- 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 212, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0,
- 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 225, 35, 3, 0, 222, 163, 2, 0, 222, 163, 2, 0, 222, 163, 2, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0,
- 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 0, 3, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0, 84, 128, 8, 0,
- 84, 128, 8, 0, 84, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 101, 64, 4, 0, 101, 64, 4, 0, 101, 64, 4, 0, 101, 64, 4, 0,
- 101, 64, 4, 0, 101, 64, 4, 0, 101, 64, 4, 0, 101, 0, 1, 0, 101, 64, 4, 0, 101, 64, 4, 0, 101, 64, 4, 0, 66, 0, 5, 0, 130, 64, 5, 0, 130, 192, 7, 0, 66, 64, 5, 0, 66, 64, 5, 0, 87, 64, 4, 0, 87, 0, 1, 0, 87, 64, 4, 0, 87, 64, 4, 0, 87, 192, 4, 0, 87, 128, 8, 0, 91, 128, 8, 0, 91, 0, 3, 0, 90, 192, 0, 0, 89, 192, 0, 0, 92, 0, 0, 0, 90, 192, 0, 0, 90, 192, 0, 0,
- 89, 192, 0, 0, 92, 0, 0, 0, 90, 192, 0, 0, 91, 128, 8, 0, 91, 128, 8, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 192, 3, 0, 91, 192, 3, 0, 91, 192, 3, 0, 91, 64, 4, 0, 99, 192, 8, 0, 100, 192, 8, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 101, 0, 1, 0, 91, 128, 2, 0, 91, 128, 2, 0, 91, 128, 2, 0, 91, 128, 2, 0, 91, 128, 2, 0, 91, 128, 2, 0,
- 91, 128, 2, 0, 91, 128, 2, 0, 91, 0, 3, 0, 90, 192, 0, 0, 89, 192, 0, 0, 91, 128, 8, 0, 91, 64, 1, 0, 91, 64, 1, 0, 91, 0, 3, 0, 86, 0, 3, 0, 86, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 96, 0, 2, 0, 92, 0, 0, 0, 88, 64, 0, 0, 91, 64, 1, 0, 91, 64, 1, 0, 91, 64, 1, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0,
- 91, 0, 3, 0, 91, 0, 3, 0, 91, 0, 3, 0, 96, 0, 3, 0, 91, 0, 3, 0, 86, 0, 3, 0, 91, 0, 3, 0, 91, 64, 4, 0, 91, 128, 2, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0, 91, 64, 4, 0, 91, 64, 4, 0, 101, 64, 4, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0,
- 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 66, 64, 5, 0, 4, 64, 8, 0,
- 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0,
- 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 4, 64, 8, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0,
- 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 5, 64, 10, 0, 91, 192, 0, 0, 91, 192, 0, 0, 90, 192, 0, 0, 89, 192, 0, 0, 90, 192, 0, 0, 89, 192, 0, 0, 91, 192, 0, 0, 91, 192, 0, 0, 91, 192, 0, 0, 90, 192, 0, 0, 89, 192, 0, 0, 91, 192, 0, 0,
- 90, 192, 0, 0, 89, 192, 0, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 64, 4, 0, 91, 0, 3, 0, 87, 64, 4, 0, 91, 0, 0, 0, 91, 64, 4, 0, 87, 0, 3, 0, 91, 0, 3, 0, 90, 192, 0, 0, 89, 192, 0, 0, 91, 0, 3, 0, 91, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0,
- 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0,
- 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 92, 0, 0, 0, 88, 64, 0, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 92, 0, 0, 0, 88, 64, 0, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 128, 8, 0, 97, 0, 3, 0, 96, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0,
- 96, 128, 8, 0, 96, 64, 2, 0, 96, 64, 2, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0,
- 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 128, 8, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 192, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 96, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0,
- 96, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 96, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0,
- 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 96, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 128, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0,
- 94, 64, 2, 0, 94, 64, 2, 0, 94, 128, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 128, 2, 0, 94, 64, 2, 0, 94, 64, 2, 0, 94, 128, 2, 0, 94, 64, 2, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 95, 128, 7, 0, 95, 128, 7, 0, 95, 128, 7, 0, 95, 128, 7, 0, 95, 128, 7, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0,
- 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0, 161, 16, 3, 0,
- 161, 16, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 128, 8, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0,
- 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 192, 0, 0, 97, 192, 0, 0, 97, 192, 0, 0,
- 97, 192, 0, 0, 97, 192, 0, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0,
- 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 4, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0,
- 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 161, 140, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0,
- 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0,
- 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 140, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0,
- 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0,
- 225, 143, 3, 0, 225, 143, 3, 0, 97, 128, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0,
- 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 225, 143, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0,
- 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0, 225, 168, 3, 0,
- 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0,
- 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 11, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0,
- 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 161, 31, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0,
- 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 8, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0,
- 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0,
- 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0,
- 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 192, 0, 0, 97, 192, 0, 0, 97, 192, 0, 0, 97, 64, 1, 0, 97, 64, 1, 0, 97, 64, 1, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0,
- 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 0, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0,
- 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 128, 3, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0,
- 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 64, 7, 0, 97, 128, 3, 0, 97, 128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
- }
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get => new(Data, 0x00100000, 0x00000000);
+ }
+
+ private static ReadOnlySpan Data => new uint[]
+ {
+ 0x00000467, 0x0000046F, 0x00000477, 0x0000047F, 0x00000497, 0x0000049F, 0x000004A7, 0x000004AF, 0x000004B7, 0x000004BF, 0x000004C5, 0x000004CD,
+ 0x000004D5, 0x000004DD, 0x000004E5, 0x000004ED, 0x000004F3, 0x000004FB, 0x00000503, 0x0000050B, 0x0000050E, 0x00000516, 0x0000051E, 0x00000526,
+ 0x0000052E, 0x00000536, 0x0000053B, 0x00000543, 0x0000054B, 0x00000553, 0x00000558, 0x00000560, 0x00000568, 0x00000570, 0x00000574, 0x0000057C,
+ 0x00000584, 0x0000058C, 0x00000594, 0x0000059C, 0x00000598, 0x000005A0, 0x000005A5, 0x000005AD, 0x000005B3, 0x000005BB, 0x000005C3, 0x000005CB,
+ 0x000005D3, 0x000005DB, 0x000005E3, 0x000005EB, 0x000005F0, 0x000005F8, 0x000005FB, 0x00000603, 0x0000060B, 0x00000613, 0x00000619, 0x00000621,
+ 0x00000629, 0x00000631, 0x00000639, 0x00000641, 0x00001347, 0x00000649, 0x00000651, 0x00000659, 0x0000065F, 0x000005DB, 0x0000134F, 0x00001744,
+ 0x000013DC, 0x000013DE, 0x000013E6, 0x00001357, 0x00000667, 0x0000066D, 0x00000675, 0x0000067D, 0x00000685, 0x0000068B, 0x00000693, 0x0000069B,
+ 0x000006A3, 0x000006A9, 0x000006B1, 0x000006B9, 0x000006C1, 0x000006C7, 0x000006CF, 0x000006D7, 0x000006DF, 0x000006E7, 0x000006EF, 0x000006F6,
+ 0x000006FE, 0x00000704, 0x0000070C, 0x00000714, 0x0000071C, 0x00000722, 0x0000072A, 0x00000732, 0x0000073A, 0x000013EE, 0x00000742, 0x0000074A,
+ 0x00000752, 0x00000759, 0x00000761, 0x00000769, 0x00000771, 0x00000775, 0x0000077D, 0x00000784, 0x0000078C, 0x00000793, 0x0000079B, 0x00000784,
+ 0x000013F6, 0x0000174C, 0x000007A3, 0x000007A8, 0x000007B0, 0x000007B7, 0x000007BF, 0x00000784, 0x000013FE, 0x00001404, 0x0000140C, 0x00001414,
+ 0x0000141C, 0x000011E0, 0x000007C7, 0x000012D8, 0x00001424, 0x00001424, 0x00001424, 0x0000142C, 0x0000142C, 0x00001432, 0x00001434, 0x00001434,
+ 0x0000143C, 0x0000143C, 0x000007CF, 0x0000143C, 0x000007D7, 0x000007DB, 0x000007E3, 0x0000143C, 0x000007E9, 0x0000143C, 0x000007EF, 0x000007F7,
+ 0x000007FF, 0x000011E8, 0x000011E8, 0x00000807, 0x00001444, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445,
+ 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x00001445, 0x0000144A,
+ 0x0000080F, 0x00001452, 0x00001452, 0x00000817, 0x0000081F, 0x00000827, 0x0000082F, 0x00000837, 0x0000145A, 0x0000145D, 0x0000083F, 0x00000847,
+ 0x0000084F, 0x00001465, 0x0000135F, 0x00000857, 0x0000146C, 0x0000085F, 0x00001445, 0x00000863, 0x0000086B, 0x00000873, 0x0000087B, 0x00000880,
+ 0x00001474, 0x00000888, 0x0000088E, 0x00001936, 0x00000896, 0x0000147C, 0x0000089E, 0x000008A6, 0x000008AE, 0x000008B6, 0x000008BE, 0x00000784,
+ 0x00001484, 0x00001487, 0x000008C6, 0x000008CE, 0x0000148F, 0x00001497, 0x0000149F, 0x000008D6, 0x000014A7, 0x000008DE, 0x000008E6, 0x00001367,
+ 0x000008EE, 0x000008F2, 0x000008FA, 0x00000902, 0x00000507, 0x000012E0, 0x0000136F, 0x000012E8, 0x000012EF, 0x00001377, 0x00001754, 0x00001758,
+ 0x000004B7, 0x000004B7, 0x000004B7, 0x000004B7, 0x000011F0, 0x000004B7, 0x000004B7, 0x000004B7, 0x0000090A, 0x000011F8, 0x0000090E, 0x00000916,
+ 0x000012F7, 0x0000091E, 0x00000926, 0x0000092E, 0x00001817, 0x0000181F, 0x00001827, 0x00000936, 0x0000093E, 0x00001926, 0x00000946, 0x0000094E,
+ 0x00001200, 0x00001208, 0x00001210, 0x000017A8, 0x00000956, 0x00001884, 0x00001889, 0x0000188F, 0x00001897, 0x0000189F, 0x000018A7, 0x000018AF,
+ 0x000018B7, 0x000018BE, 0x000018C6, 0x000018CB, 0x0000184F, 0x00001857, 0x0000193E, 0x000018D3, 0x000018DB, 0x000018E2, 0x000018E7, 0x000018EF,
+ 0x0000193E, 0x0000095D, 0x00000965, 0x000017C3, 0x000017C4, 0x00001946, 0x00001946, 0x000017CB, 0x00001946, 0x00001946, 0x0000194B, 0x0000194F,
+ 0x00001957, 0x000018F7, 0x000018FF, 0x00001907, 0x0000195F, 0x00001967, 0x0000196F, 0x0000190F, 0x00001970, 0x00001978, 0x00001980, 0x00001988,
+ 0x00001990, 0x0000193E, 0x00001994, 0x000017D3, 0x000017D9, 0x0000193E, 0x0000185F, 0x00001866, 0x0000199C, 0x0000199C, 0x0000199C, 0x0000199C,
+ 0x0000199C, 0x0000199C, 0x0000199C, 0x0000199C, 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x0000186E, 0x000018C6, 0x00001875, 0x0000187C,
+ 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x000018C6, 0x0000193E, 0x00001917, 0x0000191E, 0x0000096D,
+ 0x00000973, 0x0000193E, 0x0000193E, 0x0000193E, 0x00001218, 0x0000121C, 0x000012FF, 0x00001224, 0x0000122C, 0x0000122C, 0x0000122C, 0x0000097B,
+ 0x00001307, 0x00000983, 0x000014AF, 0x00000989, 0x00000991, 0x00000999, 0x00000999, 0x00001760, 0x00001847, 0x0000137F, 0x000009A1, 0x00000784,
+ 0x000009A9, 0x000019A4, 0x000019A4, 0x000009B0, 0x000019A4, 0x000019A4, 0x000019A4, 0x000019A4, 0x000019A4, 0x000019A4, 0x000009B8, 0x000009BE,
+ 0x00001387, 0x0000138F, 0x000009C6, 0x000014B7, 0x000009CE, 0x000014BF, 0x000014C7, 0x00001397, 0x000009D6, 0x000009DA, 0x000014CF, 0x000014CF,
+ 0x000009DF, 0x000014D7, 0x000019AC, 0x000009E6, 0x000009EE, 0x000017E1, 0x000017E7, 0x000019B4, 0x000017E1, 0x000017EF, 0x000019BC, 0x000019C0,
+ 0x000019C8, 0x000019C8, 0x000019CA, 0x000019AC, 0x000019AC, 0x000019AC, 0x000019AC, 0x000019AC, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x0000193E, 0x0000193E,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x0000139F, 0x000014E7, 0x000014E7, 0x000014E7,
+ 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7,
+ 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7,
+ 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000014E7, 0x000009F6, 0x000019D2, 0x000009FD, 0x000013A7,
+ 0x000014EF, 0x000014EF, 0x000014EF, 0x000014EF, 0x000014EF, 0x000014EF, 0x000014EF, 0x000014EF, 0x000013AF, 0x00000A05, 0x0000057C, 0x00001234,
+ 0x0000123C, 0x000014F7, 0x000014F7, 0x00000A0D, 0x000013B7, 0x00001244, 0x000004B7, 0x00001249, 0x00001251, 0x00001257, 0x00000A15, 0x00000A1C,
+ 0x000014FF, 0x00000A24, 0x00001507, 0x00000A2C, 0x0000150F, 0x00001512, 0x00000A34, 0x0000151A, 0x00001522, 0x00001529, 0x00000A3C, 0x00000A44,
+ 0x00001531, 0x00001535, 0x00000A4C, 0x00000A54, 0x0000153D, 0x00000A5C, 0x00000A64, 0x000013BF, 0x00001545, 0x00001549, 0x00000A6C, 0x00000A74,
+ 0x00000A7C, 0x00000A84, 0x0000130F, 0x00000A8B, 0x00001317, 0x00001317, 0x00001551, 0x00000A93, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C,
+ 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A,
+ 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F,
+ 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D,
+ 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B,
+ 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559,
+ 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E,
+ 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C,
+ 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A,
+ 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F,
+ 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D,
+ 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B,
+ 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559,
+ 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E,
+ 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C,
+ 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A,
+ 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F,
+ 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D,
+ 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B,
+ 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559,
+ 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E,
+ 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C,
+ 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A,
+ 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F,
+ 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D,
+ 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B,
+ 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559,
+ 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E,
+ 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C,
+ 0x0000155D, 0x0000155E, 0x0000155F, 0x00001559, 0x0000155A, 0x0000155B, 0x0000155C, 0x0000155D, 0x0000155E, 0x00000A9B, 0x00000AA2, 0x00000AA5,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x00000AAD,
+ 0x000014DF, 0x000014DF, 0x00000AB1, 0x00000784, 0x00000AB9, 0x00000AC1, 0x00000AC9, 0x000005DB, 0x000005DB, 0x00001567, 0x00000AD1, 0x000005DB,
+ 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x000005DB, 0x0000156F, 0x00001577, 0x000005DB,
+ 0x00000AD6, 0x000005DB, 0x00000ADC, 0x00000AE0, 0x00000AE8, 0x00001768, 0x00000AF0, 0x00000AF8, 0x000005DB, 0x000005DB, 0x000005DB, 0x00000AFE,
+ 0x00000B06, 0x0000125F, 0x0000131F, 0x000013C7, 0x000013CC, 0x00000B0E, 0x00000B16, 0x00000B1E, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F,
+ 0x0000183F, 0x0000183F, 0x0000183F, 0x0000183F, 0x0000121C, 0x0000121C, 0x0000125C, 0x0000129C, 0x000012DC, 0x00001314, 0x00001354, 0x00001394,
+ 0x000013CC, 0x0000140C, 0x00001438, 0x00001478, 0x000014B8, 0x000014EC, 0x0000152C, 0x00001560, 0x000015A0, 0x000015D0, 0x00001610, 0x00001650,
+ 0x00001660, 0x00001694, 0x000016CC, 0x0000170C, 0x0000174C, 0x0000178C, 0x000017C0, 0x000017EC, 0x0000182C, 0x00001864, 0x000018A4, 0x000018E4,
+ 0x00000A60, 0x00000AA0, 0x00000AE0, 0x00000B20, 0x00000B60, 0x00000B8B, 0x00000BCB, 0x00000BEE, 0x00000C0E, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000C4E, 0x00001159, 0x00001159, 0x00000C8E, 0x00000CCE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000CF7, 0x00000D37, 0x00000D57,
+ 0x00000BEE, 0x00000D7D, 0x00000DBD, 0x00000DFD, 0x00000E3D, 0x00000E7D, 0x00000EBD, 0x00000EFD, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x000001A0, 0x000001A0, 0x000001A0, 0x00000F3D, 0x000001A0, 0x00000F75, 0x00000FB5, 0x000001A0, 0x00000FC0, 0x000001A0, 0x000001A0,
+ 0x000001A0, 0x00000FF6, 0x00000BEE, 0x00001036, 0x000001A0, 0x000001A0, 0x00001076, 0x000001A0, 0x00001099, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x000010D9, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE,
+ 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000BEE, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700,
+ 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700,
+ 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00001119,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000487,
+ 0x00000487, 0x00000487, 0x00000487, 0x00000487, 0x00000B26, 0x00000B2D, 0x00000B35, 0x00000784, 0x0000157F, 0x0000157F, 0x0000157F, 0x00000B3D,
+ 0x00000B45, 0x00000B48, 0x000017B0, 0x000017B3, 0x00000B50, 0x00000B58, 0x00000969, 0x00000B60, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000B68, 0x00001587, 0x00000B70, 0x00000B78, 0x0000158F, 0x00000B80, 0x00000B88, 0x00000B8C, 0x00000B94, 0x00001597, 0x00000B9C, 0x00000784,
+ 0x00001267, 0x0000126D, 0x00001327, 0x0000159F, 0x00000BA4, 0x00000BAC, 0x00000BB0, 0x00000BB6, 0x000015A7, 0x00000BBE, 0x000015AF, 0x00000BC5,
+ 0x00000BC9, 0x00000BD1, 0x00000784, 0x00000784, 0x000015B7, 0x000015B7, 0x000015B7, 0x000015B7, 0x000015B7, 0x000015B7, 0x000015B7, 0x000015B7,
+ 0x000015B7, 0x00000BD9, 0x00000BE1, 0x00000BE9, 0x00000BF1, 0x00000BF5, 0x00000784, 0x00000784, 0x00000BFD, 0x00000C00, 0x00000C08, 0x000015BF,
+ 0x00000C10, 0x00000C18, 0x00000784, 0x00000C20, 0x00000C28, 0x00000C30, 0x00000784, 0x00000784, 0x000015C7, 0x00000C38, 0x00000C40, 0x000017F7,
+ 0x00000C48, 0x00000C4F, 0x00000C57, 0x000015CF, 0x000015D7, 0x00000784, 0x000015DF, 0x00000C5F, 0x000015E7, 0x00000C67, 0x00000C6F, 0x00000C77,
+ 0x00000C7F, 0x00000C87, 0x00000784, 0x00000784, 0x000015EF, 0x000015EF, 0x00000C8F, 0x00000784, 0x00001275, 0x00000C97, 0x0000132F, 0x00000C9F,
+ 0x000015F7, 0x00000CA7, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000CAF,
+ 0x000015FF, 0x00000CB7, 0x00000784, 0x00000CBC, 0x00001607, 0x00000CC4, 0x00000CCB, 0x00000CD2, 0x00000CDA, 0x00000CDE, 0x00000CE5, 0x00000CED,
+ 0x0000160F, 0x00001611, 0x00000CF5, 0x00000CFC, 0x00001619, 0x0000161D, 0x00000D04, 0x00000D0A, 0x00001625, 0x00000D12, 0x00000D1A, 0x00000D1E,
+ 0x0000162D, 0x00001631, 0x00001639, 0x00000D26, 0x00000D2E, 0x00001641, 0x00000D36, 0x00000784, 0x00000D3E, 0x00000D46, 0x00001649, 0x00000D4E,
+ 0x00000D56, 0x00000D5C, 0x00000D64, 0x00000D6C, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001651, 0x00001654, 0x00000D74, 0x00000D7C,
+ 0x0000165C, 0x00001660, 0x00000D84, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001668, 0x00000D8C, 0x00000D94, 0x00000784,
+ 0x00001670, 0x00001674, 0x00000D9C, 0x00000DA4, 0x0000167C, 0x00000DAC, 0x00000DB4, 0x00000784, 0x00000DBC, 0x00000DC4, 0x00000DCC, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001684, 0x00000DD4, 0x00000784, 0x00000784, 0x00000784, 0x0000127D, 0x00001337, 0x00000DDC,
+ 0x00000DE4, 0x00000DEA, 0x00000DF2, 0x00000784, 0x00000784, 0x00000DFA, 0x00000DFE, 0x00000E06, 0x0000168C, 0x00001690, 0x00000E0E, 0x00001698,
+ 0x0000169E, 0x00000E16, 0x000016A6, 0x00000E1E, 0x00000E26, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000E2E, 0x00000E33, 0x00000E3B, 0x00000E42, 0x00000E47, 0x00000E4D, 0x00000784, 0x00000784, 0x00000E55, 0x00000E59, 0x00000E61, 0x00000E69,
+ 0x00000E6F, 0x00000E77, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000E7F,
+ 0x00000E87, 0x00000E8C, 0x00000E94, 0x00000784, 0x00000784, 0x00000E9B, 0x000017FF, 0x00000EA3, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE,
+ 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE,
+ 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE,
+ 0x00000EAB, 0x00000784, 0x00000784, 0x00000784, 0x000017BB, 0x000017BB, 0x000017BB, 0x00000EB3, 0x000016AE, 0x000016AE, 0x000016AE, 0x000016AE,
+ 0x000016AE, 0x000016AE, 0x00000EBB, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000EBF, 0x000016B6, 0x000016B6, 0x00000EC3, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE,
+ 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE,
+ 0x000016BE, 0x000016C0, 0x000016BE, 0x000016C8, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016CB, 0x000016BE,
+ 0x000016BE, 0x000016BE, 0x000016BE, 0x000016BE, 0x000016D2, 0x00000ECB, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000016DA, 0x000016DA,
+ 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA, 0x000016DA,
+ 0x000016DF, 0x000016DA, 0x000016DA, 0x000016DA, 0x00000ED3, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7,
+ 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x000014F7, 0x00000EDB,
+ 0x00000EE3, 0x00000EEB, 0x000016E7, 0x00000EEF, 0x00000EF7, 0x00000EFC, 0x000016EF, 0x000016F3, 0x00000F04, 0x00000F0C, 0x00000F14, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001285, 0x0000133F, 0x00000F1C, 0x00000784,
+ 0x00000784, 0x00000784, 0x000016FB, 0x000016FB, 0x00000F24, 0x00001798, 0x00000F2A, 0x00000784, 0x00000784, 0x00000F32, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00000F3A, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B,
+ 0x0000170B, 0x0000170B, 0x0000170B, 0x0000170B, 0x00000F42, 0x00000784, 0x00000F4A, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000F4E, 0x00001713,
+ 0x00001714, 0x00001714, 0x00001714, 0x00001714, 0x00001714, 0x00001714, 0x00001714, 0x00001714, 0x00000F56, 0x00000F5B, 0x00000F62, 0x0000171C,
+ 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x0000171C, 0x00000F66, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00001724, 0x00001724, 0x00001724, 0x00000F6E, 0x00000F73, 0x00000F7B, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x0000052E, 0x00000F83, 0x00000F8A, 0x0000193E, 0x0000193E, 0x0000193E, 0x00000F91,
+ 0x00000784, 0x0000193E, 0x0000193E, 0x0000193E, 0x0000193E, 0x0000193E, 0x0000193E, 0x0000193E, 0x00000F99, 0x0000193E, 0x00000FA1, 0x0000193E,
+ 0x00001770, 0x00001778, 0x0000177E, 0x0000193E, 0x00000965, 0x000019DA, 0x000019DA, 0x00000FA9, 0x00000784, 0x00000784, 0x00000784, 0x00000FB1,
+ 0x00000FB1, 0x0000193E, 0x0000193E, 0x00000FB9, 0x00000FC1, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x0000128D, 0x00001294, 0x00000FC9,
+ 0x00001297, 0x00000FD1, 0x00000FD9, 0x00000FE1, 0x00001291, 0x00000FE9, 0x00000FF1, 0x00000FF9, 0x00001296, 0x0000129E, 0x0000128D, 0x00001294,
+ 0x00001290, 0x00001297, 0x0000129F, 0x0000128E, 0x00001295, 0x00001291, 0x00001000, 0x000012A7, 0x000012AF, 0x000012B6, 0x000012BD, 0x000012AA,
+ 0x000012B2, 0x000012B9, 0x000012C0, 0x00001008, 0x000017A0, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2,
+ 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x000019E2, 0x00001786, 0x00001789, 0x00001786,
+ 0x00001790, 0x00001010, 0x00001018, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00001020, 0x00001028, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001030, 0x00001038, 0x000013D4,
+ 0x0000103D, 0x00001042, 0x00000784, 0x00000784, 0x00000784, 0x0000172C, 0x0000104A, 0x00001052, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001056, 0x0000105B, 0x00001734, 0x00001063, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x0000106B,
+ 0x00001071, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00001079, 0x0000173C, 0x0000173C, 0x0000173C, 0x0000173C, 0x0000173C, 0x0000173C, 0x00001081, 0x00000784, 0x000012C8, 0x000012D0, 0x00001089,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00001091, 0x00001807, 0x00001096, 0x00000784, 0x00000784, 0x0000109E, 0x000010A3, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x000010AB, 0x000010B3, 0x000010BB, 0x000010C3, 0x000010CB, 0x000010D3, 0x00000784, 0x000010DA, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000019AC, 0x000010E2, 0x000019AC, 0x000019AC, 0x000010E6, 0x000010EE, 0x000010F2,
+ 0x000010F7, 0x0000180F, 0x000019EA, 0x00001946, 0x000019F0, 0x00001946, 0x000010FF, 0x00000784, 0x00001106, 0x0000110E, 0x00001112, 0x0000111A,
+ 0x00001122, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000019AC, 0x000019AC, 0x000019AC, 0x000019AC, 0x000019F8, 0x00001A00, 0x00001A08,
+ 0x0000192E, 0x000019AC, 0x000019AC, 0x00001A10, 0x00001A17, 0x00001A1F, 0x00001A27, 0x000019AC, 0x000019AC, 0x00001A2F, 0x00001A36, 0x00001A3C,
+ 0x00001A3F, 0x00001A46, 0x000019AC, 0x00001A4C, 0x00001A53, 0x000019AC, 0x000019AC, 0x00001A5A, 0x00001A5E, 0x000019AC, 0x00001A66, 0x0000112A,
+ 0x00001131, 0x0000193E, 0x0000193E, 0x0000193E, 0x00001139, 0x0000193E, 0x0000193E, 0x00001141, 0x00001149, 0x00001151, 0x0000193E, 0x00001157,
+ 0x0000193E, 0x0000115F, 0x00001164, 0x00000784, 0x00000784, 0x00001A6E, 0x00001A76, 0x000019AC, 0x00001A7E, 0x000019AC, 0x00001A84, 0x00001A8B,
+ 0x000019AC, 0x0000193E, 0x0000193E, 0x0000116C, 0x00001174, 0x00001179, 0x0000117D, 0x00001185, 0x0000118D, 0x0000193E, 0x0000193E, 0x0000193E,
+ 0x0000193E, 0x00001195, 0x0000193E, 0x00000965, 0x0000119D, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x00000784, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x00000AB1, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000011A5, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000011AC, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000011B4, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000011A5, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000011BC, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF,
+ 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000014DF, 0x000011C0, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x000011C8, 0x0000182F, 0x0000182F, 0x0000182F, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x0000052E, 0x0000052E, 0x0000052E, 0x0000052E, 0x0000052E, 0x0000052E, 0x0000052E, 0x000011D0, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784,
+ 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00000784, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837, 0x00001837,
+ 0x000011D8, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703,
+ 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00001703, 0x00010466, 0x00010466, 0x00010466, 0x00054041, 0x00054041, 0x00054041, 0x00054041,
+ 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00044041, 0x00098041, 0x0008C041, 0x0008C041, 0x00094041, 0x00054041, 0x00054041,
+ 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041,
+ 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x000A8065, 0x0001805B, 0x0000C05B, 0x0003005B, 0x0002405E, 0x0002805B, 0x0003005B, 0x0000C05B,
+ 0x0000005C, 0x00008058, 0x0003005B, 0x00024060, 0x0002005B, 0x00040057, 0x0002005B, 0x0001C05B, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052,
+ 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002005B, 0x0002005B, 0x00030060, 0x00030060, 0x00030060, 0x0001805B,
+ 0x0003005B, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x0000005C, 0x0002405B, 0x00008058, 0x0003005F, 0x00030056, 0x0003005F, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x0000005C,
+ 0x00044060, 0x00004058, 0x00030060, 0x00054041, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00054041, 0x00054041, 0x00054041, 0x00054041,
+ 0x00054041, 0x0009C041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041,
+ 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00054041,
+ 0x00054041, 0x00054041, 0x00054041, 0x00054041, 0x00010065, 0x0000005B, 0x0002805E, 0x0002405E, 0x0002405E, 0x0002405E, 0x00030061, 0x0008805B,
+ 0x0008805F, 0x00030061, 0x0008924A, 0x0000C05A, 0x00030060, 0x00044042, 0x00030061, 0x0003005F, 0x00028061, 0x00024060, 0x00088054, 0x00088054,
+ 0x0004805F, 0x00030048, 0x0008805B, 0x0008805B, 0x0008805F, 0x00088054, 0x0008924A, 0x0000C059, 0x00088054, 0x00088054, 0x00088054, 0x0000005B,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x00088060,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00088060, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x0003124C, 0x00031248, 0x00031248, 0x0003124A, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x0003124A, 0x0003124A, 0x0003124A, 0x0003124A,
+ 0x0003124C, 0x0003124B, 0x00031248, 0x0003124C, 0x0003124B, 0x00031248, 0x0003124C, 0x0003124B, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x0003124B, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x0003124A, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x0003005F, 0x0003005F,
+ 0x0003005F, 0x0003005F, 0x00030049, 0x00088049, 0x00048049, 0x00088049, 0x00088049, 0x00088049, 0x00048049, 0x00088049, 0x00030049, 0x00030049,
+ 0x00088049, 0x00030049, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0008805F, 0x0008805F, 0x0008805F, 0x0008805F,
+ 0x0003005F, 0x0008805F, 0x0003005F, 0x0004805F, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x0003005F, 0x0003005F, 0x0003005F,
+ 0x0003005F, 0x0003005F, 0x0003041F, 0x0003041F, 0x00030049, 0x0003005F, 0x00030049, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F,
+ 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00010090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00010090, 0x00010090, 0x00010090, 0x00010090,
+ 0x00010090, 0x00010090, 0x00010090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030049, 0x00030B9F, 0x00030B8C, 0x00030B88,
+ 0x00000003, 0x00000003, 0x00030B89, 0x00030B88, 0x00030B88, 0x00030B88, 0x0002005B, 0x00030B8C, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030B9F, 0x0003005F, 0x00030B8C, 0x0003005B, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00000003, 0x00030B8C, 0x00000003, 0x00030B8C, 0x00030B8C,
+ 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00000003, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B88, 0x000306CC, 0x000306C8,
+ 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B88, 0x00030BA0, 0x00030B8C, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B88,
+ 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C,
+ 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C,
+ 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C,
+ 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C,
+ 0x0003078C, 0x0003078C, 0x0003078C, 0x0003078C, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788,
+ 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788,
+ 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x000307A1, 0x00054790,
+ 0x00054790, 0x00054090, 0x00054090, 0x00054790, 0x0005478F, 0x0005478F, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C,
+ 0x00030788, 0x0003078C, 0x00030788, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x00000003, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C,
+ 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C,
+ 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x0003020C, 0x00000003, 0x00000003, 0x00030209, 0x0003021B, 0x0003021B,
+ 0x0003021B, 0x0003021B, 0x0003021B, 0x0003021B, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208,
+ 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208,
+ 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208,
+ 0x00030208, 0x0002021B, 0x00044217, 0x00000003, 0x00000003, 0x00030221, 0x00030221, 0x0002421E, 0x00000003, 0x00054D50, 0x00054D50, 0x00054D50,
+ 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50,
+ 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50,
+ 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50,
+ 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00054D50, 0x00044D57, 0x00054D50, 0x00030D5B, 0x00054D50, 0x00054D50, 0x00030D5B,
+ 0x00054D50, 0x00054D50, 0x00018D5B, 0x00054D50, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00030D5B,
+ 0x00030D5B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030182, 0x00030182, 0x00030182, 0x00030182, 0x00030182, 0x00030042, 0x000301A0, 0x000301A0, 0x000301A0, 0x0002819B, 0x0002819B, 0x0002819E,
+ 0x0002005B, 0x0002019B, 0x000301A1, 0x000301A1, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x0001805B, 0x00054182, 0x0001819B, 0x0001819B, 0x0001805B, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00030049, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002819B, 0x0002C19B,
+ 0x0002C19B, 0x0003019B, 0x0003018A, 0x0003018A, 0x00054090, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0001819B, 0x0003018A, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00030042, 0x000301A1, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00030189, 0x00030189, 0x00054190, 0x00054190, 0x000301A1, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x0003018A, 0x0003018A, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192, 0x0002C192,
+ 0x0002C192, 0x0002C192, 0x0003018A, 0x0003018A, 0x0003018A, 0x000301A1, 0x000301A1, 0x0003018A, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B,
+ 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x0003229B, 0x00000003, 0x00032282,
+ 0x0003228A, 0x00056290, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A,
+ 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A,
+ 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x00056290, 0x00056290, 0x00056290, 0x00056290,
+ 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290, 0x00056290,
+ 0x00056290, 0x00056290, 0x00056290, 0x00000003, 0x00000003, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A,
+ 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A,
+ 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A,
+ 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x0003254A, 0x00056550, 0x00056550,
+ 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x00056550, 0x0003254A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0002D992, 0x0003198A, 0x0003198A,
+ 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A,
+ 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A,
+ 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x0003198A, 0x00055990, 0x00055990, 0x00055990, 0x00055990, 0x00055990,
+ 0x00055990, 0x00055990, 0x00055990, 0x00055990, 0x00031989, 0x00031989, 0x000319A1, 0x0003199B, 0x0002199B, 0x0001999B, 0x00031989, 0x00000003,
+ 0x00000003, 0x00055990, 0x0002599E, 0x0002599E, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00031EC9, 0x00055ED0, 0x00055ED0, 0x00055ED0,
+ 0x00031EC9, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00000003, 0x00000003, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB,
+ 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00031EDB, 0x00000003,
+ 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA,
+ 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA, 0x000314CA,
+ 0x000314CA, 0x000554D0, 0x000554D0, 0x000554D0, 0x00000003, 0x00000003, 0x000314DB, 0x00000003, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A,
+ 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x0003228A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003019F, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003,
+ 0x00030182, 0x00030182, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x0003038A, 0x00054390, 0x0005438E, 0x0005438E, 0x00000003, 0x0003038A, 0x0003038A, 0x0003038A,
+ 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x00000003, 0x00000003, 0x0003038A, 0x0003038A, 0x00000003, 0x00000003, 0x0003038A,
+ 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A,
+ 0x0003038A, 0x00000003, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x00000003, 0x0003038A, 0x00000003,
+ 0x00000003, 0x00000003, 0x0003038A, 0x0003038A, 0x0003038A, 0x0003038A, 0x00000003, 0x00000003, 0x00054390, 0x0003038A, 0x0005438E, 0x0005438E,
+ 0x0005438E, 0x00054390, 0x00054390, 0x00054390, 0x00054390, 0x00000003, 0x00000003, 0x0005438E, 0x0005438E, 0x00000003, 0x00000003, 0x0005438E,
+ 0x0005438E, 0x00054390, 0x0003038A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0005438E,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003038A, 0x0003038A, 0x00000003, 0x0003038A, 0x0003038A, 0x0003038A, 0x00054390, 0x00054390,
+ 0x00000003, 0x00000003, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392, 0x0002C392,
+ 0x0003038A, 0x0003038A, 0x0002839E, 0x0002839E, 0x00030394, 0x00030394, 0x00030394, 0x00030394, 0x00030394, 0x00028394, 0x000303A1, 0x0002439E,
+ 0x0003038A, 0x0003039B, 0x00054390, 0x00000003, 0x00000003, 0x00054C10, 0x00054C10, 0x00054C0E, 0x00000003, 0x00030C0A, 0x00030C0A, 0x00030C0A,
+ 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00000003, 0x00030C0A,
+ 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A,
+ 0x00030C0A, 0x00000003, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00030C0A, 0x00030C0A,
+ 0x00000003, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00000003, 0x00054C10, 0x00000003, 0x00054C0E, 0x00054C0E,
+ 0x00054C0E, 0x00054C10, 0x00054C10, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054C10, 0x00054C10, 0x00000003, 0x00000003, 0x00054C10,
+ 0x00054C10, 0x00054C10, 0x00000003, 0x00000003, 0x00000003, 0x00054C10, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00000003, 0x00030C0A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12, 0x0002CC12,
+ 0x00054C10, 0x00054C10, 0x00030C0A, 0x00030C0A, 0x00030C0A, 0x00054C10, 0x00030C1B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054BD0, 0x00054BD0, 0x00054BCE, 0x00000003, 0x00030BCA, 0x00030BCA, 0x00030BCA,
+ 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00000003, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00000003, 0x00030BCA,
+ 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA,
+ 0x00030BCA, 0x00000003, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00000003, 0x00030BCA, 0x00030BCA,
+ 0x00000003, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00030BCA, 0x00000003, 0x00000003, 0x00054BD0, 0x00030BCA, 0x00054BCE, 0x00054BCE,
+ 0x00054BCE, 0x00054BD0, 0x00054BD0, 0x00054BD0, 0x00054BD0, 0x00054BD0, 0x00000003, 0x00054BD0, 0x00054BD0, 0x00054BCE, 0x00000003, 0x00054BCE,
+ 0x00054BCE, 0x00054BD0, 0x00000003, 0x00000003, 0x00030BCA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030BCA, 0x00030BCA, 0x00054BD0, 0x00054BD0,
+ 0x00000003, 0x00000003, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2, 0x0002CBD2,
+ 0x00030BDB, 0x00024BDE, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030BCA, 0x00054BD0, 0x00054BD0,
+ 0x00054BD0, 0x00054BD0, 0x00054BD0, 0x00054BD0, 0x00000003, 0x00055AD0, 0x00055ACE, 0x00055ACE, 0x00000003, 0x00031ACA, 0x00031ACA, 0x00031ACA,
+ 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00000003, 0x00000003, 0x00031ACA, 0x00031ACA, 0x00000003, 0x00000003, 0x00031ACA,
+ 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA,
+ 0x00031ACA, 0x00000003, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00000003, 0x00031ACA, 0x00031ACA,
+ 0x00000003, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00000003, 0x00000003, 0x00055AD0, 0x00031ACA, 0x00055ACE, 0x00055AD0,
+ 0x00055ACE, 0x00055AD0, 0x00055AD0, 0x00055AD0, 0x00055AD0, 0x00000003, 0x00000003, 0x00055ACE, 0x00055ACE, 0x00000003, 0x00000003, 0x00055ACE,
+ 0x00055ACE, 0x00055AD0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055AD0, 0x00055AD0, 0x00055ACE,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031ACA, 0x00031ACA, 0x00000003, 0x00031ACA, 0x00031ACA, 0x00031ACA, 0x00055AD0, 0x00055AD0,
+ 0x00000003, 0x00000003, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2, 0x0002DAD2,
+ 0x00031AE1, 0x00031ACA, 0x00031AD4, 0x00031AD4, 0x00031AD4, 0x00031AD4, 0x00031AD4, 0x00031AD4, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000563D0, 0x000323CA, 0x00000003, 0x000323CA, 0x000323CA, 0x000323CA,
+ 0x000323CA, 0x000323CA, 0x000323CA, 0x00000003, 0x00000003, 0x00000003, 0x000323CA, 0x000323CA, 0x000323CA, 0x00000003, 0x000323CA, 0x000323CA,
+ 0x000323CA, 0x000323CA, 0x00000003, 0x00000003, 0x00000003, 0x000323CA, 0x000323CA, 0x00000003, 0x000323CA, 0x00000003, 0x000323CA, 0x000323CA,
+ 0x00000003, 0x00000003, 0x00000003, 0x000323CA, 0x000323CA, 0x00000003, 0x00000003, 0x00000003, 0x000323CA, 0x000323CA, 0x000323CA, 0x00000003,
+ 0x00000003, 0x00000003, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA, 0x000323CA,
+ 0x000323CA, 0x000323CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000563CE, 0x000563CE, 0x000563D0, 0x000563CE, 0x000563CE, 0x00000003,
+ 0x00000003, 0x00000003, 0x000563CE, 0x000563CE, 0x000563CE, 0x00000003, 0x000563CE, 0x000563CE, 0x000563CE, 0x000563D0, 0x00000003, 0x00000003,
+ 0x000323CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000563CE, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E3D2, 0x0002E3D2, 0x0002E3D2, 0x0002E3D2, 0x0002E3D2, 0x0002E3D2,
+ 0x0002E3D2, 0x0002E3D2, 0x0002E3D2, 0x0002E3D2, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1,
+ 0x000323E1, 0x000263DE, 0x000323E1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00056490, 0x0005648E, 0x0005648E, 0x0005648E,
+ 0x00056490, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x00000003, 0x0003248A, 0x0003248A,
+ 0x0003248A, 0x00000003, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A,
+ 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x00000003, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A,
+ 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x0003248A, 0x00000003, 0x00000003,
+ 0x00056490, 0x0003248A, 0x00056490, 0x00056490, 0x00056490, 0x0005648E, 0x0005648E, 0x0005648E, 0x0005648E, 0x00000003, 0x00056490, 0x00056490,
+ 0x00056490, 0x00000003, 0x00056490, 0x00056490, 0x00056490, 0x00056490, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00056490, 0x00056490, 0x00000003, 0x0003248A, 0x0003248A, 0x0003248A, 0x00000003, 0x00000003, 0x0003248A, 0x00000003, 0x00000003,
+ 0x0003248A, 0x0003248A, 0x00056490, 0x00056490, 0x00000003, 0x00000003, 0x0002E492, 0x0002E492, 0x0002E492, 0x0002E492, 0x0002E492, 0x0002E492,
+ 0x0002E492, 0x0002E492, 0x0002E492, 0x0002E492, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0004A49B,
+ 0x00032494, 0x00032494, 0x00032494, 0x00032494, 0x00032494, 0x00032494, 0x00032494, 0x000324A1, 0x0003114A, 0x00055150, 0x0005514E, 0x0005514E,
+ 0x0004915B, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x00000003, 0x0003114A, 0x0003114A,
+ 0x0003114A, 0x00000003, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A,
+ 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x00000003, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A,
+ 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x00000003, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x0003114A, 0x00000003, 0x00000003,
+ 0x00055150, 0x0003114A, 0x0005514E, 0x00055150, 0x0005514E, 0x0005514E, 0x0005514E, 0x0005514E, 0x0005514E, 0x00000003, 0x00055150, 0x0005514E,
+ 0x0005514E, 0x00000003, 0x0005514E, 0x0005514E, 0x00055150, 0x00055150, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x0005514E, 0x0005514E, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003114A, 0x0003114A, 0x00000003,
+ 0x0003114A, 0x0003114A, 0x00055150, 0x00055150, 0x00000003, 0x00000003, 0x0002D152, 0x0002D152, 0x0002D152, 0x0002D152, 0x0002D152, 0x0002D152,
+ 0x0002D152, 0x0002D152, 0x0002D152, 0x0002D152, 0x00000003, 0x0003114A, 0x0003114A, 0x0005514E, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055690, 0x00055690, 0x0005568E, 0x0005568E,
+ 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x00000003, 0x0003168A, 0x0003168A,
+ 0x0003168A, 0x00000003, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A,
+ 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0005568E, 0x00055690, 0x00055690, 0x00055690, 0x00055690, 0x00000003, 0x0005568E, 0x0005568E,
+ 0x0005568E, 0x00000003, 0x0005568E, 0x0005568E, 0x0005568E, 0x00055690, 0x0003168A, 0x000316A1, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003168A, 0x0003168A, 0x0003168A, 0x0005568E, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x0003168A,
+ 0x0003168A, 0x0003168A, 0x00055690, 0x00055690, 0x00000003, 0x00000003, 0x0002D692, 0x0002D692, 0x0002D692, 0x0002D692, 0x0002D692, 0x0002D692,
+ 0x0002D692, 0x0002D692, 0x0002D692, 0x0002D692, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694, 0x00031694,
+ 0x00031694, 0x000296A1, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x00000003, 0x000560D0, 0x000560CE, 0x000560CE,
+ 0x00000003, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA,
+ 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x00000003, 0x00000003, 0x00000003, 0x000320CA, 0x000320CA,
+ 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA,
+ 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x00000003, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA,
+ 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA, 0x00000003, 0x000320CA, 0x00000003, 0x00000003, 0x000320CA, 0x000320CA, 0x000320CA, 0x000320CA,
+ 0x000320CA, 0x000320CA, 0x000320CA, 0x00000003, 0x00000003, 0x00000003, 0x000560D0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000560CE,
+ 0x000560CE, 0x000560CE, 0x000560D0, 0x000560D0, 0x000560D0, 0x00000003, 0x000560D0, 0x00000003, 0x000560CE, 0x000560CE, 0x000560CE, 0x000560CE,
+ 0x000560CE, 0x000560CE, 0x000560CE, 0x000560CE, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E0D2, 0x0002E0D2,
+ 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x0002E0D2, 0x00000003, 0x00000003, 0x000560CE, 0x000560CE,
+ 0x000320DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A,
+ 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A,
+ 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A2590, 0x000A258A, 0x000A258A,
+ 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002405E,
+ 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A258A, 0x000A2589, 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590, 0x000A2590,
+ 0x000A2590, 0x000A2590, 0x000A2590, 0x0003259B, 0x0002E592, 0x0002E592, 0x0002E592, 0x0002E592, 0x0002E592, 0x0002E592, 0x0002E592, 0x0002E592,
+ 0x0002E592, 0x0002E592, 0x0004659B, 0x0004659B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x000A120A, 0x000A120A, 0x00000003, 0x000A120A, 0x00000003, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x00000003,
+ 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A,
+ 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x00000003, 0x000A120A, 0x00000003, 0x000A120A,
+ 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A1210, 0x000A120A, 0x000A120A,
+ 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A120A, 0x00000003, 0x00000003,
+ 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x00000003, 0x000A1209, 0x00000003, 0x000A1210, 0x000A1210, 0x000A1210, 0x000A1210,
+ 0x000A1210, 0x000A1210, 0x000A1210, 0x00000003, 0x0002D212, 0x0002D212, 0x0002D212, 0x0002D212, 0x0002D212, 0x0002D212, 0x0002D212, 0x0002D212,
+ 0x0002D212, 0x0002D212, 0x00000003, 0x00000003, 0x000A120A, 0x000A120A, 0x000A120A, 0x000A120A, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA,
+ 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x00000003, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA,
+ 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA,
+ 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000565D0, 0x000565D0, 0x000565D0,
+ 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000465CE,
+ 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000465DB, 0x000565D0, 0x000565D0, 0x000325CA, 0x000325CA, 0x000325CA, 0x000325CA,
+ 0x000325CA, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0,
+ 0x00000003, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0,
+ 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0,
+ 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x000565D0, 0x00000003, 0x000465E1, 0x000465E1,
+ 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000565D0, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1,
+ 0x000325E1, 0x00000003, 0x000325E1, 0x000325E1, 0x0004A5DB, 0x0004A5DB, 0x000465DB, 0x0004A5DB, 0x000325DB, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x000125DB, 0x000125DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x00030A0C, 0x00030A0C, 0x00000003, 0x00030A0C, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030A0C, 0x00000003, 0x00000003,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000549D0, 0x000549D0, 0x000549D0, 0x000309DB, 0x000449DB, 0x000309DB, 0x000309DB,
+ 0x000309DB, 0x000309DB, 0x000309DB, 0x000309DB, 0x000309DB, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4,
+ 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4, 0x000309D4,
+ 0x000309D4, 0x00000003, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309E1, 0x000309E1, 0x000309E1, 0x000309E1,
+ 0x000309E1, 0x000309E1, 0x000309E1, 0x000309E1, 0x000309E1, 0x000309E1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C,
+ 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x00000003, 0x00000003,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00000003, 0x00000003, 0x00045A25, 0x00031A0A, 0x00031A0A, 0x00031A0A,
+ 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A,
+ 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00031A0A, 0x00001A1C,
+ 0x00005A18, 0x00000003, 0x00000003, 0x00000003, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A,
+ 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x0004405B, 0x0004405B, 0x0004405B, 0x00031E93, 0x00031E93, 0x00031E93, 0x00031E8A, 0x00031E8A, 0x00031E8A,
+ 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A,
+ 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x0003250A, 0x00056510, 0x00056510, 0x00056510, 0x0005650E, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003250A, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA,
+ 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA, 0x00030CCA,
+ 0x00030CCA, 0x00030CCA, 0x00054CD0, 0x00054CD0, 0x00054CCE, 0x0004405B, 0x0004405B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A,
+ 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x0003050A, 0x00054510, 0x00054510,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA, 0x000322CA,
+ 0x000322CA, 0x00000003, 0x000322CA, 0x000322CA, 0x000322CA, 0x00000003, 0x000562D0, 0x000562D0, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000A108E, 0x000A108E, 0x000A108E, 0x000A108E,
+ 0x000A108E, 0x000A108E, 0x000A1090, 0x000A108E, 0x000A108E, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090,
+ 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090, 0x0004509B, 0x0004509B, 0x0001509B, 0x000A1089, 0x0004509B, 0x0003109B, 0x0004509B, 0x0002509E,
+ 0x000A108A, 0x000A1090, 0x00000003, 0x00000003, 0x0002D092, 0x0002D092, 0x0002D092, 0x0002D092, 0x0002D092, 0x0002D092, 0x0002D092, 0x0002D092,
+ 0x0002D092, 0x0002D092, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031094, 0x00031094, 0x00031094, 0x00031094,
+ 0x00031094, 0x00031094, 0x00031094, 0x00031094, 0x00031094, 0x00031094, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003171B, 0x0003171B, 0x0001805B, 0x0001805B, 0x0004571B, 0x0004405B, 0x00049717, 0x0003171B, 0x0001971B, 0x0001971B, 0x0003171B, 0x00055710,
+ 0x00055710, 0x00055710, 0x00011702, 0x00055710, 0x0002D712, 0x0002D712, 0x0002D712, 0x0002D712, 0x0002D712, 0x0002D712, 0x0002D712, 0x0002D712,
+ 0x0002D712, 0x0002D712, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x00055710, 0x0003170A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA,
+ 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA,
+ 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x000312CA, 0x00000003,
+ 0x000552D0, 0x000552D0, 0x000552D0, 0x000552CE, 0x000552CE, 0x000552CE, 0x000552CE, 0x000552D0, 0x000552D0, 0x000552CE, 0x000552CE, 0x000552CE,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000552CE, 0x000552CE, 0x000552D0, 0x000552CE, 0x000552CE, 0x000552CE, 0x000552CE, 0x000552CE,
+ 0x000552CE, 0x000552D0, 0x000552D0, 0x000552D0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000312E1, 0x00000003, 0x00000003, 0x00000003,
+ 0x000192DB, 0x000192DB, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2, 0x0002D2D2,
+ 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A,
+ 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A, 0x00000003, 0x00000003, 0x000A234A, 0x000A234A, 0x000A234A, 0x000A234A,
+ 0x000A234A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A,
+ 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E392, 0x0002E392, 0x0002E392, 0x0002E392, 0x0002E392, 0x0002E392, 0x0002E392, 0x0002E392,
+ 0x0002E392, 0x0002E392, 0x000A2394, 0x00000003, 0x00000003, 0x00000003, 0x000A23A1, 0x000A23A1, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA,
+ 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA,
+ 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000304CA, 0x000544D0, 0x000544D0, 0x000544CE, 0x000544CE, 0x000544D0,
+ 0x00000003, 0x00000003, 0x000304DB, 0x000304DB, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA,
+ 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA,
+ 0x000A11CA, 0x000A11CE, 0x000A11D0, 0x000A11CE, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x00000003,
+ 0x000A11D0, 0x000A11CE, 0x000A11D0, 0x000A11CE, 0x000A11CE, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0,
+ 0x000A11D0, 0x000A11CE, 0x000A11CE, 0x000A11CE, 0x000A11CE, 0x000A11CE, 0x000A11CE, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0,
+ 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x000A11D0, 0x00000003, 0x00000003, 0x000551D0, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2,
+ 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x0002D1D2, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11C9,
+ 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x000A11DB, 0x00000003, 0x00000003, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x0005408F, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0005428E, 0x0005428E, 0x00054290, 0x0005428E,
+ 0x0005428E, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0002C292, 0x0004429B, 0x0004429B,
+ 0x0003029B, 0x0004429B, 0x0004429B, 0x0004429B, 0x0004429B, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1,
+ 0x000302A1, 0x000302A1, 0x000302A1, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290,
+ 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x000302A1, 0x0004429B, 0x0004429B, 0x00000003,
+ 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x00054350, 0x0005434E, 0x00054350, 0x00054350, 0x0005434E, 0x0005434E,
+ 0x0005434E, 0x00054350, 0x0005434E, 0x00054350, 0x00054350, 0x00054350, 0x0005434E, 0x0005434E, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003035B, 0x0003035B, 0x0003035B, 0x0003035B, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A,
+ 0x0005528E, 0x0005528E, 0x0005528E, 0x0005528E, 0x0005528E, 0x0005528E, 0x0005528E, 0x0005528E, 0x00055290, 0x00055290, 0x00055290, 0x00055290,
+ 0x00055290, 0x00055290, 0x00055290, 0x00055290, 0x0005528E, 0x0005528E, 0x00055290, 0x00055290, 0x00000003, 0x00000003, 0x00000003, 0x0004529B,
+ 0x0004529B, 0x0004529B, 0x0004529B, 0x0004529B, 0x0002D292, 0x0002D292, 0x0002D292, 0x0002D292, 0x0002D292, 0x0002D292, 0x0002D292, 0x0002D292,
+ 0x0002D292, 0x0002D292, 0x00000003, 0x00000003, 0x00000003, 0x0003128A, 0x0003128A, 0x0003128A, 0x0002DA52, 0x0002DA52, 0x0002DA52, 0x0002DA52,
+ 0x0002DA52, 0x0002DA52, 0x0002DA52, 0x0002DA52, 0x0002DA52, 0x0002DA52, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A,
+ 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00030788, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00000003, 0x00000003, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x0003221B, 0x0003221B, 0x0003221B, 0x0003221B, 0x0003221B, 0x0003221B, 0x0003221B, 0x0003221B, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054090, 0x00054090, 0x00054090, 0x0003005B, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x0005404E, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x0003004A, 0x0003004A, 0x0003004A, 0x0003004A, 0x00054090, 0x0003004A, 0x0003004A,
+ 0x0003004A, 0x0003004A, 0x0003004A, 0x0003004A, 0x00054090, 0x0003004A, 0x0003004A, 0x0005404E, 0x00054090, 0x00054090, 0x0003004A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00000003, 0x00000003, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00000003, 0x00000003,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00000003, 0x00030B8C, 0x00000003, 0x00030B8C,
+ 0x00000003, 0x00030B8C, 0x00000003, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00000003, 0x00000003,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B,
+ 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00000003, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8B, 0x00030B9F, 0x00030B88, 0x00030B9F, 0x00030B9F, 0x00030B9F, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00000003, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8B, 0x00030B9F, 0x00030B9F, 0x00030B9F,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00000003, 0x00000003, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C,
+ 0x00000003, 0x00030B9F, 0x00030B9F, 0x00030B9F, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B9F, 0x00030B9F, 0x00030B9F, 0x00000003, 0x00000003, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00000003, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8B, 0x00048B9F, 0x00030B9F, 0x00000003,
+ 0x00058042, 0x00030042, 0x00030042, 0x00030042, 0x00030042, 0x00000003, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00030054, 0x00031249, 0x00000003, 0x00000003, 0x00088054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030060, 0x00030060, 0x00030060, 0x0000005C, 0x00004058, 0x00089249, 0x00030054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030060, 0x00030060, 0x00030060, 0x0000005C, 0x00004058, 0x00000003,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00000003, 0x00000003, 0x00000003, 0x0002805E, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x0005408F, 0x0005408F, 0x0005408F,
+ 0x0005408F, 0x00054090, 0x0005408F, 0x0005408F, 0x0005408F, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031253, 0x00031253, 0x00031253, 0x0003124C,
+ 0x00031248, 0x00031253, 0x00031253, 0x00031253, 0x00031253, 0x00088054, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00088060, 0x00088060, 0x00088060, 0x00088060, 0x00088060, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030060, 0x00030060,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306C8, 0x000306E1, 0x000306E1, 0x000306E1, 0x000306E1, 0x000306E1, 0x000306E1, 0x000306CC,
+ 0x000306C8, 0x000306CC, 0x000306C8, 0x000546D0, 0x000546D0, 0x000546D0, 0x000306CC, 0x000306C8, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x000186DB, 0x000446DB, 0x000446DB, 0x000446DB, 0x000306D4, 0x000186DB, 0x000446DB, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00000003, 0x00030A08, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030A08, 0x00000003, 0x00000003,
+ 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA,
+ 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000324C9,
+ 0x000464DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x000564D0, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00044057, 0x0004405B, 0x0000005C, 0x0004405B,
+ 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0003005B, 0x0004405B, 0x0003005B, 0x0004405B, 0x0004405B,
+ 0x00030061, 0x00030061, 0x0003005B, 0x0001805B, 0x0001805B, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C,
+ 0x00004058, 0x00044057, 0x00000003, 0x00000003, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00000003, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00090D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00090D8A,
+ 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00090D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00090D8A, 0x00090D8A, 0x00000003, 0x00000003, 0x00054090, 0x00054090, 0x0001405F,
+ 0x0001405F, 0x00014D89, 0x00014D89, 0x00038D8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x00000003, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00000003, 0x00038061, 0x00038061, 0x00038054, 0x00038054,
+ 0x00038054, 0x00038054, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA,
+ 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61,
+ 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61,
+ 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00000003,
+ 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x00000003, 0x00000003, 0x00000003, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1,
+ 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A,
+ 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A,
+ 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0002E712, 0x0003270A, 0x0003270A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA,
+ 0x000302CA, 0x000302CA, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3, 0x000302D3,
+ 0x000542D0, 0x000542D0, 0x000302DB, 0x000442DB, 0x000442DB, 0x000442DB, 0x000442DB, 0x000442DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x00031248, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003124C, 0x00031248, 0x00000003, 0x00031248,
+ 0x00000003, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00031249, 0x00031249, 0x00031249, 0x0003124C, 0x00031248, 0x0003124A, 0x00031249, 0x00031249, 0x00031248, 0x0003124A,
+ 0x0003124A, 0x0003124A, 0x0003124A, 0x0003124A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0005624E, 0x0005624E, 0x00056250, 0x00056250, 0x0005624E,
+ 0x00032261, 0x00032261, 0x00032261, 0x00032261, 0x00056250, 0x00000003, 0x00000003, 0x00000003, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030061, 0x00030061, 0x0002805E, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A,
+ 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00049C9B, 0x00049C9B, 0x00019C9B, 0x00019C9B,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E,
+ 0x00055F50, 0x00055F50, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00045F5B, 0x00045F5B,
+ 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x0002DF52, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00055E10,
+ 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E10, 0x00055E0E, 0x00055E0E,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031E1B,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00000003, 0x00000003, 0x00000003, 0x00054F4E, 0x00030F5B, 0x00030F5B, 0x00030F5B,
+ 0x00030F5B, 0x00030F5B, 0x00030F5B, 0x00044F5B, 0x00044F5B, 0x00044F5B, 0x00030F5B, 0x00030F5B, 0x00030F5B, 0x00030F5B, 0x00000003, 0x00030049,
+ 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x0002CF52, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00030F5B, 0x00030F5B, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A1810, 0x000A1809, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812,
+ 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x00000003,
+ 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x00054610, 0x00054610, 0x00054610,
+ 0x00054610, 0x00054610, 0x00054610, 0x0005460E, 0x0005460E, 0x00054610, 0x00054610, 0x0005460E, 0x0005460E, 0x00054610, 0x00054610, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003060A, 0x0003060A, 0x0003060A, 0x00054610,
+ 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x00054610, 0x0005460E, 0x00000003, 0x00000003,
+ 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x0002C612, 0x00000003, 0x00000003,
+ 0x0003061B, 0x0004461B, 0x0004461B, 0x0004461B, 0x000A244A, 0x000A2450, 0x000A244A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000A244A, 0x000A244A, 0x000A2449, 0x000A245B, 0x000A245B,
+ 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0005578E,
+ 0x00055790, 0x00055790, 0x0005578E, 0x0005578E, 0x0004579B, 0x0004579B, 0x0003178A, 0x00031789, 0x00031789, 0x0005578E, 0x00055790, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00030B88, 0x00031248, 0x00031248, 0x00031248, 0x00031249, 0x0003005F, 0x0003005F, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x0003178A, 0x0003178A, 0x0003178A, 0x0005578E, 0x0005578E, 0x00055790, 0x0005578E, 0x0005578E,
+ 0x00055790, 0x0005578E, 0x0005578E, 0x0004579B, 0x0005578E, 0x00055790, 0x00000003, 0x00000003, 0x0002D792, 0x0002D792, 0x0002D792, 0x0002D792,
+ 0x0002D792, 0x0002D792, 0x0002D792, 0x0002D792, 0x0002D792, 0x0002D792, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A,
+ 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A,
+ 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A,
+ 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00000003, 0x00000003, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030208, 0x00030208, 0x00030208, 0x00030208, 0x00030208,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00034D4A, 0x00054D50, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00030D60, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00000003, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00000003, 0x00034D4A, 0x00000003, 0x00034D4A, 0x00034D4A, 0x00000003, 0x00034D4A, 0x00034D4A, 0x00000003, 0x00034D4A, 0x00034D4A,
+ 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x00034D4A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003019F, 0x0003019F, 0x0003019F, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000301A1,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0002819E, 0x000301A1, 0x000301A1, 0x000301A1, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x0002005B, 0x0000405B, 0x0000405B, 0x0002005B, 0x0002005B, 0x0001805B, 0x0001805B, 0x0000005C, 0x00004058, 0x0003C05B, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0003805B, 0x0003805B, 0x0000005C,
+ 0x00004058, 0x0003805B, 0x0003805B, 0x0003805B, 0x0003805B, 0x00038056, 0x00038056, 0x00038056, 0x0000405B, 0x0003805B, 0x0000405B, 0x00000003,
+ 0x0001405B, 0x0001405B, 0x0001805B, 0x0001805B, 0x00038057, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0003805B,
+ 0x0003805B, 0x0003805B, 0x00038060, 0x00038057, 0x00038060, 0x00038060, 0x00038060, 0x00000003, 0x0003805B, 0x0002405E, 0x0002805B, 0x0003805B,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x00000003, 0x00058042, 0x00000003, 0x0001805B, 0x0003805B, 0x0003805B,
+ 0x0002405E, 0x0002805B, 0x0003805B, 0x0003805B, 0x0000005C, 0x00004058, 0x0003805B, 0x00038060, 0x0000405B, 0x00038057, 0x0000405B, 0x0003805B,
+ 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x00038052, 0x0001405B, 0x0001405B,
+ 0x00038060, 0x00038060, 0x00038060, 0x0001805B, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00000003, 0x00000003, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00000003, 0x00000003, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00000003, 0x00000003, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00000003, 0x00000003, 0x00000003, 0x0002805E, 0x0002405E, 0x00038060, 0x0003805F,
+ 0x00038061, 0x0002405E, 0x0002405E, 0x00000003, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030061, 0x00030061, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054042, 0x00054042, 0x00054042,
+ 0x00080061, 0x00088061, 0x00000003, 0x00000003, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003,
+ 0x0003134A, 0x0003134A, 0x00000003, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003, 0x00000003, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003, 0x00000003,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0004405B, 0x0004405B, 0x0004405B, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1,
+ 0x00030BA1, 0x00030BA1, 0x00030B94, 0x00030B94, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030BA1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00054090, 0x00000003, 0x00000003, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA,
+ 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA,
+ 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x000313CA, 0x00000003, 0x00000003, 0x00000003,
+ 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA,
+ 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054090, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030F14, 0x00030F14, 0x00030F14, 0x00030F14, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A,
+ 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A,
+ 0x00030B0A, 0x00030B13, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B0A, 0x00030B13, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A,
+ 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A, 0x00031C4A,
+ 0x00031C4A, 0x00031C4A, 0x00055C50, 0x00055C50, 0x00055C50, 0x00055C50, 0x00055C50, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA,
+ 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA,
+ 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x000326CA, 0x00000003, 0x000466DB, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A,
+ 0x0004681B, 0x00032813, 0x00032813, 0x00032813, 0x00032813, 0x00032813, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A,
+ 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A,
+ 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00031B4A, 0x00000003, 0x00000003,
+ 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x0002DB52, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C,
+ 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C, 0x00031B0C,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08,
+ 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08,
+ 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00031B08, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A,
+ 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003011B, 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C,
+ 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C, 0x00000003, 0x0003274C, 0x0003274C, 0x0003274C, 0x0003274C,
+ 0x0003274C, 0x0003274C, 0x0003274C, 0x00000003, 0x0003274C, 0x0003274C, 0x00000003, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748,
+ 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00000003, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748,
+ 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00000003, 0x00032748,
+ 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00032748, 0x00000003, 0x00032748, 0x00032748, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00000003, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00000003, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x00000003, 0x00000003, 0x0003074A, 0x00000003, 0x0003074A, 0x0003074A,
+ 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A,
+ 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x0003074A, 0x00000003, 0x0003074A,
+ 0x0003074A, 0x00000003, 0x00000003, 0x00000003, 0x0003074A, 0x00000003, 0x00000003, 0x0003074A, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA,
+ 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA,
+ 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x000301CA, 0x00000003, 0x000441DB, 0x000301D4, 0x000301D4, 0x000301D4, 0x000301D4,
+ 0x000301D4, 0x000301D4, 0x000301D4, 0x000301D4, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A,
+ 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A,
+ 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x0003190A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031914, 0x00031914, 0x00031914, 0x00031914, 0x00031914,
+ 0x00031914, 0x00031914, 0x00031914, 0x00031914, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A,
+ 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00030D0A,
+ 0x00030D0A, 0x00030D0A, 0x00030D0A, 0x00000003, 0x00030D0A, 0x00030D0A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030D14,
+ 0x00030D14, 0x00030D14, 0x00030D14, 0x00030D14, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A,
+ 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A, 0x00031D4A,
+ 0x00031D4A, 0x00031D4A, 0x00031D54, 0x00031D54, 0x00031D54, 0x00031D54, 0x00031D54, 0x00031D54, 0x00000003, 0x00000003, 0x00000003, 0x00045D5B,
+ 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A,
+ 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A, 0x0003140A,
+ 0x0003140A, 0x0003140A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003141B, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A,
+ 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A,
+ 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x0003160A, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031614, 0x00031614, 0x0003160A, 0x0003160A, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614,
+ 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00000003, 0x00000003, 0x00031614, 0x00031614,
+ 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614,
+ 0x0003104A, 0x00055050, 0x00055050, 0x00055050, 0x00000003, 0x00055050, 0x00055050, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00055050, 0x00055050, 0x00055050, 0x00055050, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x00000003, 0x0003104A, 0x0003104A, 0x0003104A,
+ 0x00000003, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A,
+ 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A, 0x0003104A,
+ 0x0003104A, 0x0003104A, 0x00000003, 0x00000003, 0x00055050, 0x00055050, 0x00055050, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055050,
+ 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00031054, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0004505B, 0x0004505B, 0x0004505B, 0x0004505B, 0x0004505B, 0x0004505B, 0x0004505B, 0x0004505B,
+ 0x0003105B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A,
+ 0x0003150A, 0x00055510, 0x00055510, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031514, 0x00031514, 0x00031514, 0x00031514, 0x00031514,
+ 0x0004551B, 0x0004551B, 0x0004551B, 0x0004551B, 0x0004551B, 0x0004551B, 0x0003D51B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A,
+ 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A,
+ 0x0003024A, 0x0003024A, 0x00000003, 0x00000003, 0x00000003, 0x0004425B, 0x0004425B, 0x0004425B, 0x0004425B, 0x0004425B, 0x0004425B, 0x0004425B,
+ 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA,
+ 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00031DCA, 0x00000003, 0x00000003,
+ 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031DD4, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA,
+ 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00031CCA,
+ 0x00031CCA, 0x00031CCA, 0x00031CCA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031CD4, 0x00031CD4, 0x00031CD4, 0x00031CD4,
+ 0x00031CD4, 0x00031CD4, 0x00031CD4, 0x00031CD4, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A,
+ 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00031D0A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031D1B, 0x00031D1B, 0x00031D1B, 0x00031D1B, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031D14, 0x00031D14, 0x00031D14,
+ 0x00031D14, 0x00031D14, 0x00031D14, 0x00031D14, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A,
+ 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC,
+ 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8,
+ 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00030ED4, 0x00030ED4, 0x00030ED4, 0x00030ED4, 0x00030ED4, 0x00030ED4, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A,
+ 0x00055E50, 0x00055E50, 0x00055E50, 0x00055E50, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x0002DE52, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194,
+ 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194,
+ 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00030194, 0x00000003,
+ 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x00000003, 0x00056890,
+ 0x00056890, 0x00046897, 0x00000003, 0x00000003, 0x0003288A, 0x0003288A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00054190, 0x00054190, 0x00054190, 0x00032154, 0x00032154, 0x00032154, 0x00032154, 0x00032154, 0x00032154, 0x00032154, 0x0003214A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A,
+ 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A, 0x0003210A,
+ 0x0003210A, 0x0003210A, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110, 0x00056110,
+ 0x00056110, 0x00032114, 0x00032114, 0x00032114, 0x00032114, 0x0003211B, 0x0003211B, 0x0003211B, 0x0003211B, 0x0003211B, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A,
+ 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00031B8A, 0x00055B90, 0x00055B90,
+ 0x00055B90, 0x00055B90, 0x00031B9B, 0x00031B9B, 0x00031B9B, 0x00031B9B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A,
+ 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x0003068A, 0x00030694, 0x00030694, 0x00030694,
+ 0x00030694, 0x00030694, 0x00030694, 0x00030694, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A,
+ 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x0003098A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054450, 0x00054450, 0x00054450, 0x00054450,
+ 0x00054450, 0x00054450, 0x00054450, 0x0004445B, 0x0004445B, 0x0003045B, 0x0003045B, 0x0003045B, 0x0003045B, 0x0003045B, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454,
+ 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x00030454, 0x0002C452, 0x0002C452, 0x0002C452, 0x0002C452, 0x0002C452, 0x0002C452,
+ 0x0002C452, 0x0002C452, 0x0002C452, 0x0002C452, 0x00054450, 0x0003044A, 0x0003044A, 0x00054450, 0x00054450, 0x0003044A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054450, 0x0004519B, 0x0004519B, 0x00055190, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031182, 0x00000003, 0x00000003,
+ 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A,
+ 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x0003218A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x0002E192, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x00054550,
+ 0x00054550, 0x00054550, 0x00054550, 0x00054550, 0x0005454E, 0x00054550, 0x00054550, 0x00054550, 0x00054550, 0x00054550, 0x00054550, 0x00054550,
+ 0x00054550, 0x00000003, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552, 0x0002C552,
+ 0x0004455B, 0x0004455B, 0x0004455B, 0x0004455B, 0x0003054A, 0x0005454E, 0x0005454E, 0x0003054A, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A,
+ 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x0003144A, 0x00055450,
+ 0x0003145B, 0x0004945B, 0x0003144A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4,
+ 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x000320D4, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA,
+ 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA,
+ 0x000310CA, 0x000310CA, 0x00000003, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA,
+ 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000550D0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x00000003, 0x000317CA, 0x00000003, 0x000317CA, 0x000317CA,
+ 0x000317CA, 0x000317CA, 0x00000003, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA,
+ 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x00000003, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA,
+ 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000317CA, 0x000457DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A,
+ 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0005608E, 0x0005608E, 0x0005608E, 0x00056090, 0x00056090, 0x00056090, 0x00056090, 0x00056090,
+ 0x00056090, 0x00056090, 0x00056090, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E092, 0x0002E092, 0x0002E092, 0x0002E092,
+ 0x0002E092, 0x0002E092, 0x0002E092, 0x0002E092, 0x0002E092, 0x0002E092, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00054B50, 0x00054B50, 0x00054B4E, 0x00054B4E, 0x00000003, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A,
+ 0x00030B4A, 0x00000003, 0x00000003, 0x00030B4A, 0x00030B4A, 0x00000003, 0x00000003, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A,
+ 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00000003, 0x00030B4A, 0x00030B4A,
+ 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00000003, 0x00030B4A, 0x00030B4A, 0x00000003, 0x00030B4A, 0x00030B4A, 0x00030B4A,
+ 0x00030B4A, 0x00030B4A, 0x00000003, 0x00054090, 0x00054B50, 0x00030B4A, 0x00054B4E, 0x00054B4E, 0x00054B50, 0x00054B4E, 0x00054B4E, 0x00054B4E,
+ 0x00054B4E, 0x00000003, 0x00000003, 0x00054B4E, 0x00054B4E, 0x00000003, 0x00000003, 0x00054B4E, 0x00054B4E, 0x00054B4E, 0x00000003, 0x00000003,
+ 0x00030B4A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054B4E, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00030B4A, 0x00054B4E, 0x00054B4E, 0x00000003, 0x00000003, 0x00054B50, 0x00054B50,
+ 0x00054B50, 0x00054B50, 0x00054B50, 0x00054B50, 0x00054B50, 0x00000003, 0x00000003, 0x00000003, 0x00054B50, 0x00054B50, 0x00054B50, 0x00054B50,
+ 0x00054B50, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0005594E, 0x0005594E, 0x00055950, 0x00055950, 0x00055950, 0x0005594E, 0x00055950, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0004595B,
+ 0x0004595B, 0x0004595B, 0x0004595B, 0x0003195B, 0x0002D952, 0x0002D952, 0x0002D952, 0x0002D952, 0x0002D952, 0x0002D952, 0x0002D952, 0x0002D952,
+ 0x0002D952, 0x0002D952, 0x0004595B, 0x0004595B, 0x00000003, 0x0003195B, 0x00055950, 0x0003194A, 0x0003194A, 0x0003194A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00056610, 0x0005660E, 0x00056610, 0x00056610, 0x0003260A, 0x0003260A, 0x0003261B, 0x0003260A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E612, 0x0002E612, 0x0002E612, 0x0002E612,
+ 0x0002E612, 0x0002E612, 0x0002E612, 0x0002E612, 0x0002E612, 0x0002E612, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A,
+ 0x0003204A, 0x0003204A, 0x0003204A, 0x0005604E, 0x0005604E, 0x0005604E, 0x00056050, 0x00056050, 0x00056050, 0x00056050, 0x00000003, 0x00000003,
+ 0x0005604E, 0x0005604E, 0x0005604E, 0x0005604E, 0x00056050, 0x00056050, 0x0005604E, 0x00056050, 0x00056050, 0x0004A05B, 0x0004605B, 0x0004605B,
+ 0x0001A05B, 0x0001A05B, 0x0003205B, 0x0003205B, 0x0003205B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B,
+ 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0004605B, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A,
+ 0x00056050, 0x00056050, 0x00000003, 0x00000003, 0x000556D0, 0x000456DB, 0x000456DB, 0x000316DB, 0x000316CA, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002D6D2, 0x0002D6D2, 0x0002D6D2, 0x0002D6D2,
+ 0x0002D6D2, 0x0002D6D2, 0x0002D6D2, 0x0002D6D2, 0x0002D6D2, 0x0002D6D2, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B, 0x0004971B,
+ 0x0004971B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A,
+ 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x00056310, 0x0005630E, 0x00056310, 0x0005630E, 0x0005630E,
+ 0x00056310, 0x00056310, 0x00056310, 0x00056310, 0x00056310, 0x00056310, 0x0005630E, 0x00056310, 0x0003230A, 0x0003231B, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E312, 0x0002E312, 0x0002E312, 0x0002E312, 0x0002E312, 0x0002E312, 0x0002E312, 0x0002E312,
+ 0x0002E312, 0x0002E312, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A,
+ 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A,
+ 0x000A014A, 0x000A014A, 0x000A014A, 0x00000003, 0x00000003, 0x000A0150, 0x000A0150, 0x000A0150, 0x000A014E, 0x000A014E, 0x000A0150, 0x000A0150,
+ 0x000A0150, 0x000A0150, 0x000A014E, 0x000A0150, 0x000A0150, 0x000A0150, 0x000A0150, 0x000A0150, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x0002C152, 0x000A0154, 0x000A0154,
+ 0x0004415B, 0x0004415B, 0x0004415B, 0x000A0161, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x000A014A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A,
+ 0x0005484E, 0x0005484E, 0x0005484E, 0x00054850, 0x00054850, 0x00054850, 0x00054850, 0x00054850, 0x00054850, 0x00054850, 0x00054850, 0x00054850,
+ 0x0005484E, 0x00054850, 0x00054850, 0x0003085B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002E792, 0x0002E792, 0x0002E792, 0x0002E792,
+ 0x0002E792, 0x0002E792, 0x0002E792, 0x0002E792, 0x0002E792, 0x0002E792, 0x00032794, 0x00032794, 0x00032794, 0x00032794, 0x00032794, 0x00032794,
+ 0x00032794, 0x00032794, 0x00032794, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x0003278A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x00000003,
+ 0x00000003, 0x0003080A, 0x00000003, 0x00000003, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A,
+ 0x00000003, 0x0003080A, 0x0003080A, 0x00000003, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A,
+ 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0003080A, 0x0005480E, 0x0005480E, 0x0005480E, 0x0005480E,
+ 0x0005480E, 0x0005480E, 0x00000003, 0x0005480E, 0x0005480E, 0x00000003, 0x00000003, 0x00054810, 0x00054810, 0x0005480E, 0x00054810, 0x0003080A,
+ 0x0005480E, 0x0003080A, 0x0005480E, 0x00054810, 0x0004481B, 0x0004481B, 0x0004481B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002C812, 0x0002C812, 0x0002C812, 0x0002C812, 0x0002C812, 0x0002C812, 0x0002C812, 0x0002C812,
+ 0x0002C812, 0x0002C812, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A,
+ 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x00000003, 0x00000003, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A,
+ 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A,
+ 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0003188A, 0x0005588E, 0x0005588E, 0x0005588E, 0x00055890, 0x00055890, 0x00055890, 0x00055890,
+ 0x00000003, 0x00000003, 0x00055890, 0x00055890, 0x0005588E, 0x0005588E, 0x0005588E, 0x0005588E, 0x00055890, 0x0003188A, 0x0004989B, 0x0003188A,
+ 0x0005588E, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003291B, 0x0004691B, 0x0004691B, 0x0004691B, 0x0004691B, 0x0004A91B, 0x0003291B, 0x00056910,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000321CA, 0x000561D0, 0x000561D0, 0x000561D0,
+ 0x000561D0, 0x000561D0, 0x000561D0, 0x000561CE, 0x000561CE, 0x000561D0, 0x000561D0, 0x000561D0, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA,
+ 0x0004A1DB, 0x000461DB, 0x000461DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A,
+ 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A,
+ 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000487DB, 0x000487DB, 0x000487DB, 0x000487DB, 0x000487DB, 0x000487DB, 0x000487DB, 0x000487DB,
+ 0x000487DB, 0x000487DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x00000003, 0x000303CA, 0x000303CA,
+ 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA,
+ 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000303CA, 0x000543CE,
+ 0x000543D0, 0x000543D0, 0x000543D0, 0x000543D0, 0x000543D0, 0x000543D0, 0x000543D0, 0x00000003, 0x000543D0, 0x000543D0, 0x000543D0, 0x000543D0,
+ 0x000543D0, 0x000543D0, 0x000543CE, 0x000543D0, 0x000303CA, 0x000443DB, 0x000443DB, 0x000443DB, 0x000443DB, 0x000443DB, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002C3D2, 0x0002C3D2, 0x0002C3D2, 0x0002C3D2,
+ 0x0002C3D2, 0x0002C3D2, 0x0002C3D2, 0x0002C3D2, 0x0002C3D2, 0x0002C3D2, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4,
+ 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x000303D4, 0x00000003, 0x00000003, 0x00000003,
+ 0x0004955B, 0x0001955B, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A,
+ 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x0003154A, 0x00000003, 0x00000003, 0x00055550, 0x00055550,
+ 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550,
+ 0x00000003, 0x0005554E, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x00055550, 0x0005554E, 0x00055550, 0x00055550,
+ 0x0005554E, 0x00055550, 0x00055550, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00000003, 0x00030ACA, 0x00030ACA, 0x00000003, 0x00030ACA,
+ 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA,
+ 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00030ACA, 0x00054AD0, 0x00054AD0, 0x00054AD0,
+ 0x00054AD0, 0x00054AD0, 0x00054AD0, 0x00000003, 0x00000003, 0x00000003, 0x00054AD0, 0x00000003, 0x00054AD0, 0x00054AD0, 0x00000003, 0x00054AD0,
+ 0x00054AD0, 0x00054AD0, 0x00054AD0, 0x00054AD0, 0x00054AD0, 0x00054AD0, 0x00030ACA, 0x00054AD0, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2, 0x0002CAD2,
+ 0x0002CAD2, 0x0002CAD2, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A,
+ 0x00030A8A, 0x00030A8A, 0x00000003, 0x00030A8A, 0x00030A8A, 0x00000003, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A,
+ 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A,
+ 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00030A8A, 0x00054A8E, 0x00054A8E, 0x00054A8E, 0x00054A8E, 0x00054A8E, 0x00000003,
+ 0x00054A90, 0x00054A90, 0x00000003, 0x00054A8E, 0x00054A8E, 0x00054A90, 0x00054A8E, 0x00054A90, 0x00030A8A, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002CA92, 0x0002CA92, 0x0002CA92, 0x0002CA92, 0x0002CA92, 0x0002CA92, 0x0002CA92, 0x0002CA92,
+ 0x0002CA92, 0x0002CA92, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A,
+ 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x0003148A, 0x00055490, 0x00055490, 0x0005548E, 0x0005548E, 0x0003149B,
+ 0x0003149B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055010, 0x00055010, 0x0003100A, 0x0005500E,
+ 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A,
+ 0x0003100A, 0x00000003, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A,
+ 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A, 0x0003100A,
+ 0x0005500E, 0x0005500E, 0x00055010, 0x00055010, 0x00055010, 0x00055010, 0x00055010, 0x00000003, 0x00000003, 0x00000003, 0x0005500E, 0x0005500E,
+ 0x00055010, 0x0005500E, 0x00055010, 0x0004501B, 0x0004501B, 0x0003901B, 0x0003901B, 0x0003901B, 0x0003901B, 0x0003901B, 0x0003901B, 0x0003901B,
+ 0x0003901B, 0x0003901B, 0x0003901B, 0x0003901B, 0x0002D012, 0x0002D012, 0x0002D012, 0x0002D012, 0x0002D012, 0x0002D012, 0x0002D012, 0x0002D012,
+ 0x0002D012, 0x0002D012, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003138A, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0002A3DE, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1,
+ 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000463DB, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A,
+ 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A,
+ 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853,
+ 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00000003, 0x0004685B, 0x0004685B, 0x0004685B, 0x0004685B,
+ 0x0004685B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A,
+ 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A,
+ 0x0003070A, 0x0003071B, 0x0003071B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054910, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x00054910,
+ 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910, 0x00054910,
+ 0x00054910, 0x00054910, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA,
+ 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA,
+ 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A,
+ 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A,
+ 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x0003174A, 0x00000003,
+ 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x0002D752, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x0004575B, 0x0004575B, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A,
+ 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A,
+ 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x00000003,
+ 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x0002E652, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A,
+ 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x0003030A, 0x00000003, 0x00000003,
+ 0x00054310, 0x00054310, 0x00054310, 0x00054310, 0x00054310, 0x0004431B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030E09, 0x00030E09, 0x00030E09, 0x00030E09, 0x00044E1B, 0x00030E21, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002CE12, 0x0002CE12, 0x0002CE12, 0x0002CE12,
+ 0x0002CE12, 0x0002CE12, 0x0002CE12, 0x0002CE12, 0x0002CE12, 0x0002CE12, 0x00000003, 0x00030E14, 0x00030E14, 0x00030E14, 0x00030E14, 0x00030E14,
+ 0x00030E14, 0x00030E14, 0x00000003, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594,
+ 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594, 0x00031594,
+ 0x00031594, 0x00031594, 0x00031594, 0x0004559B, 0x0004559B, 0x0003159B, 0x0003159B, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00055D90, 0x00031D8A, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E,
+ 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00055D90, 0x00055D90, 0x00055D90, 0x00055D90, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89,
+ 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00031D89, 0x00016409, 0x000159C9, 0x00014C9B, 0x00014C89,
+ 0x00011110, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00054C8E, 0x00054C8E, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A,
+ 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030FC9, 0x00030FC9, 0x00030FC9, 0x00030FC9, 0x00000003, 0x00030FC9, 0x00030FC9, 0x00030FC9,
+ 0x00030FC9, 0x00030FC9, 0x00030FC9, 0x00030FC9, 0x00000003, 0x00030FC9, 0x00030FC9, 0x00000003, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00090D8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00090D8A, 0x00090D8A, 0x00090D8A, 0x00000003,
+ 0x00000003, 0x00090FCA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x00000003, 0x00000003, 0x000308E1, 0x000548D0, 0x000548D0, 0x000448DB,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00000003, 0x00000003,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030BA1, 0x00030BA1, 0x00054B90, 0x00054B90, 0x00054B90, 0x00030BA1, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00000003, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x0003004C, 0x00000003, 0x0003004C, 0x0003004C, 0x00000003, 0x00000003, 0x0003004C, 0x00000003, 0x00000003, 0x0003004C, 0x0003004C, 0x00000003,
+ 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00000003, 0x00030048, 0x00000003, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00000003, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x0003004C, 0x0003004C, 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003, 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x00000003, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x00000003, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003, 0x0003004C, 0x00000003, 0x00000003, 0x00000003, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00000003, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00000003, 0x00000003,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030060, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x00030048,
+ 0x00000003, 0x00000003, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052,
+ 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00055F90, 0x00031FA1, 0x00031FA1, 0x00045F9B, 0x00045F9B, 0x00045F9B, 0x00045F9B, 0x00031F9B, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00000003, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x0003124A, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00000003,
+ 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50,
+ 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00000003, 0x00000003, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50,
+ 0x00054A50, 0x00054A50, 0x00000003, 0x00054A50, 0x00054A50, 0x00000003, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00054A50, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789,
+ 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054790, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A,
+ 0x00030E4A, 0x00000003, 0x00000003, 0x00000003, 0x00054E50, 0x00054E50, 0x00054E50, 0x00054E50, 0x00054E50, 0x00054E50, 0x00054E50, 0x00030E49,
+ 0x00030E49, 0x00030E49, 0x00030E49, 0x00030E49, 0x00030E49, 0x00030E49, 0x00000003, 0x00000003, 0x0002CE52, 0x0002CE52, 0x0002CE52, 0x0002CE52,
+ 0x0002CE52, 0x0002CE52, 0x0002CE52, 0x0002CE52, 0x0002CE52, 0x0002CE52, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030E4A, 0x00030E61,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A,
+ 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x0003268A, 0x00056690, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA,
+ 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000567D0, 0x000567D0, 0x000567D0, 0x000567D0, 0x0002E7D2, 0x0002E7D2, 0x0002E7D2, 0x0002E7D2,
+ 0x0002E7D2, 0x0002E7D2, 0x0002E7D2, 0x0002E7D2, 0x0002E7D2, 0x0002E7D2, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000267DE,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A,
+ 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x0003184A, 0x00031849,
+ 0x00055850, 0x00055850, 0x00055850, 0x00055850, 0x0002D852, 0x0002D852, 0x0002D852, 0x0002D852, 0x0002D852, 0x0002D852, 0x0002D852, 0x0002D852,
+ 0x0002D852, 0x0002D852, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000309CA, 0x000309CA, 0x00000003,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x00000003, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x00000003, 0x00000003, 0x000315D4,
+ 0x000315D4, 0x000315D4, 0x000315D4, 0x000315D4, 0x000315D4, 0x000315D4, 0x000315D4, 0x000315D4, 0x000555D0, 0x000555D0, 0x000555D0, 0x000555D0,
+ 0x000555D0, 0x000555D0, 0x000555D0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000540D0, 0x000540D0, 0x000540D0, 0x000540D0, 0x000540D0, 0x000540D0, 0x000540D0, 0x000300C9,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2, 0x0002C0D2,
+ 0x0002C0D2, 0x0002C0D2, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000000DB, 0x000000DB, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00028061, 0x00030054, 0x00030054, 0x00030054, 0x0002805E, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030061, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A,
+ 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003, 0x00000003, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x00000003,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00000003, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x000301A0, 0x000301A0, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003,
+ 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061,
+ 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00070061,
+ 0x00070061, 0x00070061, 0x00070061, 0x00070061, 0x00038DA1, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00074061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00000003,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052,
+ 0x0002C052, 0x0002C052, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00054042, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003,
+ 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x00084004, 0x00084004, 0x00000003, 0x00000003, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C, 0x00030A0C,
+ 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C,
+ 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C,
+ 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003064C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C, 0x00030B8C,
+ 0x00030061, 0x00030061, 0x0003004C, 0x00028061, 0x00030061, 0x00088061, 0x00030061, 0x0003004C, 0x00030061, 0x00028061, 0x00030048, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x0003004C, 0x00088048, 0x00030061, 0x0003004C, 0x00024061, 0x00030061,
+ 0x00030060, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00030061,
+ 0x0003004C, 0x00030061, 0x00030B8C, 0x00030061, 0x0003004C, 0x00030061, 0x0003124C, 0x0008924C, 0x0003004C, 0x0003004C, 0x00030061, 0x00030048,
+ 0x0003004C, 0x0003004C, 0x0003124C, 0x0003004C, 0x00030048, 0x0003004A, 0x0003004A, 0x0003004A, 0x0003004A, 0x00030048, 0x00030061, 0x00030061,
+ 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x0003004C, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030061, 0x00030060, 0x00030061, 0x00030061, 0x00031248, 0x00030061, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00088054, 0x00088054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00088054, 0x00030054, 0x00030054, 0x00088054, 0x00030054,
+ 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C,
+ 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C,
+ 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A4C, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48,
+ 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031249, 0x00031249, 0x0003124C, 0x0003124C, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8,
+ 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8,
+ 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8,
+ 0x000306CC, 0x000306C8, 0x000306CC, 0x000306C8, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078A, 0x00054790, 0x0005478F, 0x0005478F, 0x0005478F, 0x0003079B,
+ 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x0003079B, 0x00030789,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x0003078C, 0x00030788,
+ 0x0003078C, 0x00030788, 0x0003078C, 0x00030788, 0x00030789, 0x00030789, 0x00054790, 0x00054790, 0x0003005F, 0x0003005F, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031249, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00030049, 0x0003005F, 0x0003005F, 0x0003124C,
+ 0x00031248, 0x0003124C, 0x00031248, 0x0003124A, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x00031248, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C,
+ 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248,
+ 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003124C, 0x00031248, 0x0003805B, 0x0003924C, 0x0003924C, 0x0003924C,
+ 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C,
+ 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0003924C, 0x0000005C,
+ 0x0003805B, 0x00004058, 0x0003805F, 0x00038056, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C,
+ 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C,
+ 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C, 0x0003088C,
+ 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888,
+ 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888,
+ 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC,
+ 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC,
+ 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x00030ECC, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C,
+ 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C,
+ 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C,
+ 0x0003278C, 0x0003278C, 0x0003278C, 0x0003278C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C,
+ 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C,
+ 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C, 0x0003158C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00030060, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030060,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00030060, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030060, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C,
+ 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x0003004C, 0x00030060, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048,
+ 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x00030048, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC,
+ 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC,
+ 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC,
+ 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300CC, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8,
+ 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8,
+ 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8, 0x000300C8,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x0003005B, 0x00030A09, 0x00030A08, 0x00030A08, 0x00030A08, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030788, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00030B89, 0x00030B89, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00030B89, 0x00030B89,
+ 0x00030B89, 0x00030B89, 0x00030B89, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00030789, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88,
+ 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B88, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B, 0x00030B8B,
+ 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48,
+ 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48,
+ 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A48, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08,
+ 0x00030A08, 0x00030A08, 0x00030A08, 0x00030A08, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248,
+ 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x00031248, 0x0003005F, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648,
+ 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x00030648, 0x0003805F, 0x00039248, 0x00039248, 0x00039248,
+ 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248,
+ 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x00039248, 0x0000005C,
+ 0x00038060, 0x00004058, 0x00038060, 0x0000005C, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888,
+ 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00030888, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA,
+ 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA,
+ 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8,
+ 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8,
+ 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00030EC8, 0x00032788, 0x00032788, 0x00032788, 0x00032788,
+ 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788,
+ 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00032788,
+ 0x00032788, 0x00032788, 0x00032788, 0x00032788, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588,
+ 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588,
+ 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588, 0x00031588,
+ 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA,
+ 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00031ECA, 0x00055ED0, 0x00055ED0,
+ 0x00055ED0, 0x00055ED0, 0x00031EC9, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x00055ED0, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00030189, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x000307CA, 0x000307CA, 0x000547D0, 0x000547D0, 0x0004405B, 0x0004405B, 0x0002C7D2, 0x0002C7D2,
+ 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x0002C7D2, 0x000307DB, 0x000307C9, 0x000307CA, 0x000307CA,
+ 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x00031709, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A,
+ 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A,
+ 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A4A, 0x00031A49, 0x00031A49, 0x00031A49, 0x00031A49,
+ 0x00031A49, 0x00031A49, 0x00045A5B, 0x00045A5B, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00030B89, 0x00030B89, 0x00030B89,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249,
+ 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00031249, 0x00030B89, 0x0000C05A, 0x0000C059, 0x0000005C, 0x00004058,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0001805B, 0x00030049,
+ 0x0004405B, 0x0004405B, 0x0003005B, 0x0004405B, 0x0004405B, 0x0003005B, 0x0003005B, 0x0003005B, 0x0003005B, 0x0003005B, 0x0004C057, 0x0004C057,
+ 0x0004405B, 0x0004405B, 0x0004405B, 0x0003005B, 0x00044065, 0x0000405B, 0x0000405B, 0x0003805B, 0x00038061, 0x00014C89, 0x0003804A, 0x00038C93,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00038061, 0x00038061,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00014057, 0x0000005C, 0x00004058, 0x00004058,
+ 0x00038061, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00038C93, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054C4E, 0x00054C4E, 0x00038057, 0x00038049, 0x00038049, 0x00038049, 0x00038049, 0x00054049, 0x00038061, 0x00038061,
+ 0x00038C93, 0x00038C93, 0x00038C93, 0x00014C89, 0x0001404A, 0x0003805B, 0x00038061, 0x00038061, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00090FCA,
+ 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00090FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00090FCA, 0x00090FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x0001405B,
+ 0x00090049, 0x00014FC9, 0x00014FC9, 0x00038FCA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x000168C9, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A,
+ 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A, 0x0003138A,
+ 0x00031389, 0x00031389, 0x00031389, 0x00031389, 0x00031389, 0x00031389, 0x0004539B, 0x0004539B, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A,
+ 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x00032709, 0x0004671B, 0x0001A71B, 0x0004671B,
+ 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A,
+ 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F,
+ 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F, 0x0003005F,
+ 0x0003005F, 0x0003005F, 0x0003005F, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049, 0x00030049,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A1809, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A1821,
+ 0x000A1821, 0x000A1821, 0x000A180A, 0x000A180E, 0x000A1810, 0x000A180E, 0x000A180A, 0x000A180A, 0x00004058, 0x0000405B, 0x0000005C, 0x00004058,
+ 0x0000405B, 0x0001405B, 0x00038FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA, 0x00090FCA,
+ 0x00090049, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00014049, 0x00014049,
+ 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789,
+ 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789,
+ 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x00030789, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547CE,
+ 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA,
+ 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA,
+ 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000547D0, 0x000547CE, 0x000547D0, 0x000307CA, 0x000547CE, 0x000547CE,
+ 0x000547CE, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547CE, 0x000547CE, 0x000547CE,
+ 0x000547CE, 0x000547D0, 0x000547CE, 0x000547CE, 0x000307CA, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x000547D0, 0x000547D0, 0x000547D0,
+ 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A,
+ 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A,
+ 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x0003168A, 0x00055690,
+ 0x00055690, 0x0003168A, 0x0005568E, 0x0005568E, 0x000325CA, 0x0004A5E1, 0x0004A5E1, 0x0004A5E1, 0x0004A5DB, 0x000325DB, 0x0004A5DB, 0x0004A5DB,
+ 0x000125DB, 0x0004A5DB, 0x0004A5DB, 0x000465DB, 0x000125DB, 0x0001A5DB, 0x0001A5DB, 0x0001A5DB, 0x0001A5DB, 0x0001A5DB, 0x000125DB, 0x000325E1,
+ 0x0001A5DB, 0x000325E1, 0x000325E1, 0x000325E1, 0x000565D0, 0x000565D0, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1, 0x000325E1,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180E,
+ 0x000A180E, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A180E, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A1810,
+ 0x000A180E, 0x000A1810, 0x000A1810, 0x000A180E, 0x000A180E, 0x000A1810, 0x000A1810, 0x000A180A, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812,
+ 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0004581B, 0x0004581B, 0x0003181B, 0x0003181B, 0x0003181B, 0x0003181B,
+ 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180E, 0x000A180E, 0x000A1810, 0x000A1810, 0x000A180A, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A1810, 0x000A1810, 0x000A1810, 0x000A180A, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180A, 0x000A180A, 0x000A180E,
+ 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A1810, 0x000A1810, 0x000A1810,
+ 0x000A1810, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A, 0x000A180A,
+ 0x000A180A, 0x000A180A, 0x000A1810, 0x000A180E, 0x000A180E, 0x000A1810, 0x000A1810, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A180E,
+ 0x000A180E, 0x000A1810, 0x000A180A, 0x000A180E, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812, 0x0002D812,
+ 0x0002D812, 0x0002D812, 0x000A180E, 0x000A180E, 0x000A180E, 0x000A1810, 0x000A1821, 0x000A1821, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A,
+ 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00064C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A,
+ 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A,
+ 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A, 0x00068C4A,
+ 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A,
+ 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A,
+ 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x0006CC4A, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA,
+ 0x000309CA, 0x000309CA, 0x000309CA, 0x000309CA, 0x00044597, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x000305A1, 0x0003059B, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A, 0x0003058A,
+ 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A,
+ 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A,
+ 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x00031E8A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A,
+ 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A,
+ 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A,
+ 0x000A108A, 0x000A108A, 0x000A108A, 0x000A108A, 0x000A1090, 0x000A1090, 0x000A108E, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090, 0x000A1090,
+ 0x000A1090, 0x000A1090, 0x000A108E, 0x000A108E, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x00055710, 0x00055710, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A,
+ 0x0003170A, 0x0003170A, 0x0003170A, 0x0003170A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A,
+ 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A,
+ 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A, 0x000A238A,
+ 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA,
+ 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA,
+ 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x000A11CA, 0x00054290, 0x00054290, 0x00054290, 0x00054290,
+ 0x0005428E, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A,
+ 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A,
+ 0x0003028A, 0x0003028A, 0x0003028A, 0x0003028A, 0x00054290, 0x0005428E, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x00054290, 0x0005428E,
+ 0x00054290, 0x0005428E, 0x0005428E, 0x0005428E, 0x00056210, 0x00056210, 0x0005620E, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A,
+ 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A,
+ 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A,
+ 0x0003220A, 0x0005620E, 0x00056210, 0x00056210, 0x00056210, 0x00056210, 0x0005620E, 0x0005620E, 0x00056210, 0x00056210, 0x0005620E, 0x00056210,
+ 0x00056210, 0x00056210, 0x0003220A, 0x0003220A, 0x0002E212, 0x0002E212, 0x0002E212, 0x0002E212, 0x0002E212, 0x0002E212, 0x0002E212, 0x0002E212,
+ 0x0002E212, 0x0002E212, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003220A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A,
+ 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A,
+ 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A,
+ 0x0003034A, 0x0003034A, 0x0003034A, 0x0003034A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A,
+ 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A,
+ 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A, 0x0003128A,
+ 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA,
+ 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA,
+ 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x000324CA, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00090D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00014057, 0x00090FCA, 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00090FCA,
+ 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00090FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA,
+ 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038FCA, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A,
+ 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x00038C4A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A, 0x0003840A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A,
+ 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x00038C8A, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA,
+ 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003A8CA, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A,
+ 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A,
+ 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A, 0x0003270A,
+ 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA,
+ 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA,
+ 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x000302CA, 0x0003224A, 0x0003224A, 0x00056250, 0x0003224A,
+ 0x0003224A, 0x0003224A, 0x00056250, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x00056250, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A,
+ 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A,
+ 0x0003224A, 0x0003224A, 0x0003224A, 0x0003224A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A,
+ 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A,
+ 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A, 0x00031C8A,
+ 0x00055F4E, 0x00055F4E, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A,
+ 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A,
+ 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00031F4A, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E,
+ 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x00055F4E, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0,
+ 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0, 0x000547D0,
+ 0x000547D0, 0x000547D0, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307CA, 0x000307DB, 0x000307DB, 0x000307DB, 0x000307CA,
+ 0x000487DB, 0x000307CA, 0x000307CA, 0x000547D0, 0x0002CF92, 0x0002CF92, 0x0002CF92, 0x0002CF92, 0x0002CF92, 0x0002CF92, 0x0002CF92, 0x0002CF92,
+ 0x0002CF92, 0x0002CF92, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A,
+ 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A, 0x00030F8A,
+ 0x00030F8A, 0x00030F8A, 0x00054F90, 0x00054F90, 0x00054F90, 0x00054F90, 0x00054F90, 0x00054F90, 0x00054F90, 0x00054F90, 0x0004405B, 0x00044F9B,
+ 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A,
+ 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00031E0A, 0x00054F50, 0x00054F50, 0x00054F50, 0x00054F4E, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A,
+ 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A,
+ 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00030F4A,
+ 0x00030F4A, 0x00030F4A, 0x00030F4A, 0x00054F50, 0x00054F4E, 0x00054F4E, 0x00054F50, 0x00054F50, 0x00054F50, 0x00054F50, 0x00054F4E, 0x00054F4E,
+ 0x00054F50, 0x00054F50, 0x00054F4E, 0x00054F4E, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A,
+ 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A,
+ 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A, 0x0003060A,
+ 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A,
+ 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A,
+ 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A2450, 0x000A244A, 0x000A2450, 0x000A2450,
+ 0x000A2450, 0x000A244A, 0x000A244A, 0x000A2450, 0x000A2450, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A244A, 0x000A2450, 0x000A2450,
+ 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A,
+ 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A,
+ 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0003178A, 0x0005CC4A, 0x00060C4A, 0x00060C4A, 0x00060C4A,
+ 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A,
+ 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A,
+ 0x0005CC4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A,
+ 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A,
+ 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x00060C4A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003019F, 0x0003019F,
+ 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F, 0x0003019F,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x00004058, 0x0000005C, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1,
+ 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1, 0x000301A1,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A,
+ 0x0003018A, 0x0003018A, 0x0003018A, 0x0003018A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A, 0x0003134A,
+ 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA,
+ 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA,
+ 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x000305CA, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A,
+ 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A,
+ 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A,
+ 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x00030F0A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A,
+ 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A,
+ 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A, 0x0003280A,
+ 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA,
+ 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA,
+ 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x00031FCA, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A,
+ 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A,
+ 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A,
+ 0x0003094A, 0x0003094A, 0x0003094A, 0x0003094A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A,
+ 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A,
+ 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A, 0x0003010A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A,
+ 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x0003130A, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA,
+ 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA,
+ 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BCA, 0x00031BE1, 0x00031BE1, 0x00031BD4, 0x00031BD4, 0x00031BD4,
+ 0x00031BD4, 0x00031BD4, 0x00031BD4, 0x00031BD4, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A,
+ 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A,
+ 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A, 0x0003164A,
+ 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A,
+ 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A,
+ 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F0A, 0x00031F14, 0x00031F14, 0x00031F1B, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA,
+ 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA,
+ 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA, 0x000318CA,
+ 0x000318CA, 0x000318D4, 0x000318D4, 0x000318D4, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A,
+ 0x00031521, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A,
+ 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A, 0x0003150A,
+ 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A,
+ 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A,
+ 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x0003024A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A,
+ 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A,
+ 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A,
+ 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031A8A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A,
+ 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A,
+ 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A, 0x00031E4A,
+ 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A,
+ 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A,
+ 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003288A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A,
+ 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A,
+ 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A, 0x0003214A,
+ 0x0003214A, 0x00032154, 0x00032154, 0x00032154, 0x0005444E, 0x00054450, 0x0005444E, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A,
+ 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A,
+ 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A, 0x0003044A,
+ 0x00054450, 0x00054450, 0x00054450, 0x00054450, 0x00054450, 0x00054450, 0x00054450, 0x00054450, 0x00055190, 0x00055190, 0x0005518E, 0x0003118A,
+ 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A,
+ 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A,
+ 0x0003118A, 0x0003118A, 0x0003118A, 0x0003118A, 0x0005518E, 0x0005518E, 0x0005518E, 0x00055190, 0x00055190, 0x00055190, 0x00055190, 0x0005518E,
+ 0x0005518E, 0x00055190, 0x00055190, 0x0003119B, 0x0003119B, 0x00031182, 0x0004519B, 0x0004519B, 0x00054550, 0x00054550, 0x00054550, 0x0003054A,
+ 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A,
+ 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A,
+ 0x0003054A, 0x0003054A, 0x0003054A, 0x0003054A, 0x00056010, 0x00056010, 0x0005600E, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A,
+ 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A,
+ 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A,
+ 0x0003200A, 0x0003200A, 0x0003200A, 0x0005600E, 0x0005600E, 0x0005600E, 0x00056010, 0x00056010, 0x00056010, 0x00056010, 0x00056010, 0x00056010,
+ 0x00056010, 0x00056010, 0x00056010, 0x0005600E, 0x0005600E, 0x0003200A, 0x0003200A, 0x0003200A, 0x0003200A, 0x0004601B, 0x0004601B, 0x0003201B,
+ 0x0004601B, 0x00056010, 0x00056010, 0x00056010, 0x00056010, 0x0003201B, 0x0005600E, 0x00056010, 0x0002E012, 0x0002E012, 0x0002E012, 0x0002E012,
+ 0x0002E012, 0x0002E012, 0x0002E012, 0x0002E012, 0x0002E012, 0x0002E012, 0x0003200A, 0x0004A01B, 0x0003200A, 0x0004601B, 0x0004601B, 0x0004601B,
+ 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA, 0x000310CA,
+ 0x000550CE, 0x000550CE, 0x000550CE, 0x000550D0, 0x000550D0, 0x000550D0, 0x000550CE, 0x000550CE, 0x000550D0, 0x000550CE, 0x000550D0, 0x000550D0,
+ 0x000450DB, 0x000450DB, 0x000310DB, 0x000450DB, 0x000450DB, 0x000310DB, 0x000550D0, 0x000310CA, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A,
+ 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A,
+ 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A, 0x0003208A,
+ 0x0003208A, 0x0003208A, 0x0003208A, 0x00056090, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A,
+ 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A,
+ 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A, 0x0003194A,
+ 0x0003194A, 0x0005594E, 0x0005594E, 0x0005594E, 0x00055950, 0x00055950, 0x00055950, 0x00055950, 0x00055950, 0x00055950, 0x00055950, 0x00055950,
+ 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A,
+ 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A,
+ 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0003260A, 0x0005660E, 0x0005660E, 0x0005660E, 0x00056610,
+ 0x00056610, 0x00056610, 0x00056610, 0x00056610, 0x00056610, 0x0005660E, 0x00056610, 0x0005660E, 0x0005660E, 0x0005660E, 0x0005660E, 0x00056610,
+ 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A,
+ 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A,
+ 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x0003204A, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA,
+ 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA,
+ 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA,
+ 0x000316CA, 0x000316CA, 0x000316CA, 0x000316CA, 0x000556CE, 0x000556CE, 0x000556CE, 0x000556D0, 0x000556D0, 0x000556D0, 0x000556D0, 0x000556D0,
+ 0x000556D0, 0x000556D0, 0x000556D0, 0x000556CE, 0x000556CE, 0x000556D0, 0x000556CE, 0x000556D0, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A,
+ 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A,
+ 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A,
+ 0x0003230A, 0x0003230A, 0x0003230A, 0x0003230A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A,
+ 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A,
+ 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A, 0x0003084A,
+ 0x0003290A, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x0003290A,
+ 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A,
+ 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x0003290A, 0x00056910,
+ 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x0005690E, 0x0003290A, 0x00056910, 0x00056910, 0x00056910, 0x00056910, 0x0004A91B,
+ 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA,
+ 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA,
+ 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000321CA, 0x000561D0, 0x000561D0,
+ 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561D0, 0x000561CE,
+ 0x000561D0, 0x000561D0, 0x000461DB, 0x000461DB, 0x000461DB, 0x000321CA, 0x0004A1DB, 0x0004A1DB, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A,
+ 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A,
+ 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A,
+ 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x00031C0A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A,
+ 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A,
+ 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A, 0x0003284A,
+ 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A,
+ 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A,
+ 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003070A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0000090A, 0x0000090A, 0x0000090A, 0x0000490A, 0x0000490A, 0x0000490A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0000490A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0000090A, 0x0000490A, 0x0000090A, 0x0000490A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0000090A, 0x0000490A, 0x0000490A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A,
+ 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x0003090A, 0x00010902, 0x00010902, 0x00010902, 0x00010902,
+ 0x00010902, 0x00010902, 0x00010902, 0x00000902, 0x00004902, 0x00010902, 0x00010902, 0x00010902, 0x00000902, 0x00004902, 0x00000902, 0x00004902,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00000DCA, 0x00004DCA,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA,
+ 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x00030DCA, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A,
+ 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A,
+ 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A, 0x0003264A,
+ 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A,
+ 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00030E0A, 0x00054E10, 0x00054E10, 0x00054E10, 0x00054E10,
+ 0x00054E10, 0x00054E10, 0x00054E10, 0x00044E1B, 0x00044E1B, 0x00044E1B, 0x00030E1B, 0x00030E1B, 0x00030E21, 0x00030E21, 0x00030E21, 0x00030E21,
+ 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A,
+ 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A,
+ 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x00031D8A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A,
+ 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003A40A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A,
+ 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A,
+ 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A, 0x0003110A,
+ 0x00038FCA, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A, 0x00038D8A,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA,
+ 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000399CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA,
+ 0x000308CA, 0x000308CA, 0x000308CA, 0x000308CA, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A,
+ 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A,
+ 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A, 0x00030E4A,
+ 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA,
+ 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA,
+ 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000327CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA,
+ 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA,
+ 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA,
+ 0x000315CA, 0x000315CA, 0x000315CA, 0x000315CA, 0x00054190, 0x00054190, 0x00030042, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190, 0x00054190,
+ 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x0002E5D2, 0x000325D4, 0x000325D4,
+ 0x000325D4, 0x000325D4, 0x000325D4, 0x000325D4, 0x000325D4, 0x000325D4, 0x000325D4, 0x000325D4, 0x000465E1, 0x000565D0, 0x000325E1, 0x000565D0,
+ 0x000325E1, 0x000565D0, 0x000025DC, 0x000065D8, 0x000025DC, 0x000065D8, 0x000565CE, 0x000565CE, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00010090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00010090, 0x00054090, 0x00054090, 0x00054090, 0x00054790, 0x00054790, 0x00054790, 0x00054790,
+ 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790,
+ 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054790,
+ 0x00054790, 0x00054790, 0x00054790, 0x00054790, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090,
+ 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054790, 0x00054790, 0x0003805B, 0x00038057, 0x00038057, 0x00038056,
+ 0x00038056, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x0005404E, 0x0005404E, 0x00054090, 0x00054090, 0x00054090, 0x00030061, 0x00030061,
+ 0x00030061, 0x0005404E, 0x0005404E, 0x0005404E, 0x0005404E, 0x0005404E, 0x0005404E, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00030061,
+ 0x00030061, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00054090, 0x00054090, 0x00054090, 0x00054090, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90,
+ 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00055F90, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00055F90, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E,
+ 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E,
+ 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E, 0x00055D8E,
+ 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052,
+ 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052,
+ 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x0002C052, 0x00089253, 0x00089253, 0x00089253, 0x00089253,
+ 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00031253, 0x00031253, 0x00031253, 0x00031253,
+ 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00089253, 0x00031253, 0x00031253,
+ 0x00031253, 0x00031253, 0x00031253, 0x00031253, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93,
+ 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93,
+ 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93, 0x00030B93,
+ 0x00030B93, 0x00030B94, 0x00030B94, 0x00030B94, 0x00030B94, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1,
+ 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853,
+ 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853,
+ 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00032853, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00030054,
+ 0x0000C061, 0x00030061, 0x00018061, 0x00018061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038054, 0x00038054, 0x00038054, 0x00038054,
+ 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00038061, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054,
+ 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038054, 0x00038054, 0x00038054,
+ 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054, 0x00038054,
+ 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614,
+ 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614,
+ 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x00031614, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4,
+ 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4,
+ 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323D4, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1, 0x000323E1,
+ 0x000323E1, 0x0002A3DE, 0x0002A3DE, 0x0002A3DE, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054, 0x00030054,
+ 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054, 0x00088054,
+ 0x00088054, 0x00038061, 0x00038061, 0x00038061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00044065, 0x00044065, 0x00044065, 0x00044065,
+ 0x00044065, 0x00044065, 0x00044065, 0x00010065, 0x00044065, 0x00044065, 0x00044065, 0x00050042, 0x00054082, 0x0007C082, 0x00054042, 0x00054042,
+ 0x00044057, 0x00010057, 0x00044057, 0x00044057, 0x0004C057, 0x00088057, 0x0008805B, 0x0003005B, 0x0000C05A, 0x0000C059, 0x0000005C, 0x0000C05A,
+ 0x0000C05A, 0x0000C059, 0x0000005C, 0x0000C05A, 0x0008805B, 0x0008805B, 0x0003005B, 0x0003005B, 0x0003C05B, 0x0003C05B, 0x0003C05B, 0x0004405B,
+ 0x0008C063, 0x0008C064, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00010065, 0x0002805B, 0x0002805B, 0x0002805B, 0x0002805B,
+ 0x0002805B, 0x0002805B, 0x0002805B, 0x0002805B, 0x0003005B, 0x0000C05A, 0x0000C059, 0x0008805B, 0x0001405B, 0x0001405B, 0x0003005B, 0x00030056,
+ 0x00030056, 0x0003005B, 0x0003005B, 0x0003005B, 0x00020060, 0x0000005C, 0x00004058, 0x0001405B, 0x0001405B, 0x0001405B, 0x0003005B, 0x0003005B,
+ 0x0003005B, 0x0003005B, 0x0003005B, 0x0003005B, 0x0003005B, 0x0003005B, 0x00030060, 0x0003005B, 0x00030056, 0x0003005B, 0x0004405B, 0x0002805B,
+ 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0003005B, 0x0004405B, 0x0004405B, 0x00044065, 0x00054042, 0x00054042, 0x00054042, 0x00054042,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00054042,
+ 0x00054042, 0x00054042, 0x00054042, 0x00054042, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004, 0x00084004,
+ 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005,
+ 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005,
+ 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x000A4005, 0x0000C05B, 0x0000C05B, 0x0000C05A, 0x0000C059,
+ 0x0000C05A, 0x0000C059, 0x0000C05B, 0x0000C05B, 0x0000C05B, 0x0000C05A, 0x0000C059, 0x0000C05B, 0x0000C05A, 0x0000C059, 0x0004405B, 0x0004405B,
+ 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0004405B, 0x0003005B, 0x00044057, 0x0000005B, 0x0004405B, 0x00030057, 0x0003005B,
+ 0x0000C05A, 0x0000C059, 0x0003005B, 0x0003005B, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030060, 0x00030060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x0000005C, 0x00004058, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x0000005C, 0x00004058, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x0000005C,
+ 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C,
+ 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x0000005C, 0x00004058, 0x0000005C, 0x00004058, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x0000005C, 0x00004058, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030061, 0x00030061, 0x00030060, 0x00030061, 0x00030061, 0x00030060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060,
+ 0x00030061, 0x00030061, 0x00088060, 0x00030061, 0x00088060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00088060,
+ 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00088060, 0x00024060, 0x00024060,
+ 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00088060,
+ 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00088060, 0x00030060, 0x00088060, 0x00088060, 0x00088060, 0x00088060, 0x00088060,
+ 0x00088060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00088060, 0x00088060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00088060, 0x00088060,
+ 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00088060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00088060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x0003C060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061,
+ 0x00030061, 0x00030061, 0x00088061, 0x00088060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00030061,
+ 0x00088061, 0x00088060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00088061,
+ 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00088061, 0x00088061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00088061,
+ 0x00038061, 0x00088061, 0x00088061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00088060, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030061, 0x00030061, 0x00030060,
+ 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030060, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002805E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E,
+ 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002405E, 0x0002805E, 0x0002405E,
+ 0x0002405E, 0x0002405E, 0x0002405E, 0x0002805E, 0x0002405E, 0x0002405E, 0x0002805E, 0x0002405E, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x0007805F,
+ 0x0007805F, 0x0007805F, 0x0007805F, 0x0007805F, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1,
+ 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1,
+ 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1, 0x000310A1,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00088061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00088061, 0x00088061,
+ 0x00038061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00030061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00038061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00088061, 0x00038061, 0x00038061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00038061, 0x00038061, 0x00088061, 0x00088061, 0x00038061, 0x00088061, 0x00088061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00088061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00038061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00088061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00088061,
+ 0x00088061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x0000C061,
+ 0x0000C061, 0x0000C061, 0x0000C061, 0x0000C061, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1,
+ 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1,
+ 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1, 0x000304A1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1,
+ 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038CA1, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61,
+ 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61,
+ 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038C61, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1,
+ 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1,
+ 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038061,
+ 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1,
+ 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1,
+ 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038FE1, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1,
+ 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1,
+ 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1, 0x0003A8E1,
+ 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1,
+ 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1,
+ 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00030BA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1,
+ 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00031FA1, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061, 0x00088061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00074061,
+ 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061,
+ 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00038061, 0x00030061, 0x00038061,
+ 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061,
+ 0x00038061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x0000C061, 0x0000C061,
+ 0x0000C061, 0x00014061, 0x00014061, 0x00014061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00038061, 0x00038061, 0x00038061, 0x00074061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00030061,
+ 0x00030061, 0x00030061, 0x00030061, 0x00030061, 0x00074061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00074061, 0x00074061, 0x00038061, 0x00074061, 0x00074061, 0x00038061, 0x00074061,
+ 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061, 0x00038061,
+ 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061,
+ 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00074061, 0x00038061, 0x00038061, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ };
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrie.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrie.cs
index 079f830ddc..5bbe8afb34 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrie.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrie.cs
@@ -16,98 +16,25 @@
// Copied from: https://github.com/toptensoftware/RichTextKit
using System;
-using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-using System.Text;
namespace Avalonia.Media.TextFormatting.Unicode
{
- internal class UnicodeTrie
+ internal ref struct UnicodeTrie
{
- private readonly uint[] _data;
- private readonly int _highStart;
- private readonly uint _errorValue;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The uncompressed trie data.
- public UnicodeTrie(ReadOnlySpan rawData)
- {
- var header = UnicodeTrieHeader.Parse(rawData);
- int length = header.DataLength;
- uint[] data = new uint[length / sizeof(uint)];
-
- MemoryMarshal.Cast(rawData.Slice(rawData.Length - length))
- .CopyTo(data);
-
- _highStart = header.HighStart;
- _errorValue = header.ErrorValue;
- _data = data;
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The stream containing the data.
- public UnicodeTrie(Stream stream)
+ public UnicodeTrie(ReadOnlySpan data, int highStart, uint errorValue)
{
- // Read the header info
- using (var br = new BinaryReader(stream, Encoding.UTF8, true))
- {
- _highStart = br.ReadInt32();
- _errorValue = br.ReadUInt32();
- _data = new uint[br.ReadInt32() / sizeof(uint)];
- }
-
- // Read the data in compressed format.
- using (var br = new BinaryReader(stream, Encoding.UTF8, true))
- {
- for (int i = 0; i < _data.Length; i++)
- {
- _data[i] = br.ReadUInt32();
- }
- }
+ Data = data;
+ HighStart = highStart;
+ ErrorValue = errorValue;
}
+ public ReadOnlySpan Data { get; }
- ///
- /// Initializes a new instance of the class.
- ///
- /// The uncompressed trie data.
- /// The start of the last range which ends at U+10ffff.
- /// The value for out-of-range code points and illegal UTF-8.
- public UnicodeTrie(uint[] data, int highStart, uint errorValue)
- {
- _data = data;
- _highStart = highStart;
- _errorValue = errorValue;
- }
-
- ///
- /// Saves the to the stream in a compressed format.
- ///
- /// The output stream.
- internal void Save(Stream stream)
- {
- // Write the header info
- using (var bw = new BinaryWriter(stream, Encoding.UTF8, true))
- {
- bw.Write(_highStart);
- bw.Write(_errorValue);
- bw.Write(_data.Length * sizeof(uint));
- }
+ public int HighStart { get; }
- // Write the data.
- using (var bw = new BinaryWriter(stream, Encoding.UTF8, true))
- {
- for (int i = 0; i < _data.Length; i++)
- {
- bw.Write(_data[i]);
- }
- }
- }
+ public uint ErrorValue { get; }
///
/// Get the value for a code point as stored in the trie.
@@ -118,14 +45,14 @@ namespace Avalonia.Media.TextFormatting.Unicode
public uint Get(uint codePoint)
{
uint index;
- ref uint dataBase = ref MemoryMarshal.GetReference(_data.AsSpan());
+ ref uint dataBase = ref MemoryMarshal.GetReference(Data);
if (codePoint is < 0x0d800 or (> 0x0dbff and <= 0x0ffff))
{
// Ordinary BMP code point, excluding leading surrogates.
// BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
// 16 bit data is stored in the index array itself.
- index = _data[codePoint >> UnicodeTrieBuilder.SHIFT_2];
+ index = Data[(int)(codePoint >> UnicodeTrieBuilder.SHIFT_2)];
index = (index << UnicodeTrieBuilder.INDEX_SHIFT) + (codePoint & UnicodeTrieBuilder.DATA_MASK);
return Unsafe.Add(ref dataBase, (nint)index);
}
@@ -138,55 +65,29 @@ namespace Avalonia.Media.TextFormatting.Unicode
// For this function, we need the code point data.
// Note: this expression could be refactored for slightly improved efficiency, but
// surrogate code points will be so rare in practice that it's not worth it.
- index = _data[UnicodeTrieBuilder.LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UnicodeTrieBuilder.SHIFT_2)];
+ index = Data[(int)(UnicodeTrieBuilder.LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UnicodeTrieBuilder.SHIFT_2))];
index = (index << UnicodeTrieBuilder.INDEX_SHIFT) + (codePoint & UnicodeTrieBuilder.DATA_MASK);
return Unsafe.Add(ref dataBase, (nint)index);
}
- if (codePoint < _highStart)
+ if (codePoint < HighStart)
{
// Supplemental code point, use two-level lookup.
index = UnicodeTrieBuilder.INDEX_1_OFFSET - UnicodeTrieBuilder.OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UnicodeTrieBuilder.SHIFT_1);
- index = _data[index];
+ index = Data[(int)index];
index += (codePoint >> UnicodeTrieBuilder.SHIFT_2) & UnicodeTrieBuilder.INDEX_2_MASK;
- index = _data[index];
+ index = Data[(int)index];
index = (index << UnicodeTrieBuilder.INDEX_SHIFT) + (codePoint & UnicodeTrieBuilder.DATA_MASK);
return Unsafe.Add(ref dataBase, (nint)index);
}
if (codePoint <= 0x10ffff)
{
- return Unsafe.Add(ref dataBase, (nint)(_data.Length - UnicodeTrieBuilder.DATA_GRANULARITY));
+ return Data[Data.Length - UnicodeTrieBuilder.DATA_GRANULARITY];
}
// Fall through. The code point is outside of the legal range of 0..0x10ffff.
- return _errorValue;
- }
-
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- private struct UnicodeTrieHeader
- {
- public int HighStart
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
-
- public uint ErrorValue
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
-
- public int DataLength
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static UnicodeTrieHeader Parse(ReadOnlySpan data)
- => MemoryMarshal.Cast(data)[0];
+ return ErrorValue;
}
}
}
diff --git a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrieBuilder.cs b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrieBuilder.cs
index 755d603539..d529f46489 100644
--- a/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrieBuilder.cs
+++ b/src/Avalonia.Base/Media/TextFormatting/Unicode/UnicodeTrieBuilder.cs
@@ -325,19 +325,6 @@ namespace Avalonia.Media.TextFormatting.Unicode
return _data[block + (c & DATA_MASK)];
}
- public byte[] ToBuffer()
- {
- var mem = new MemoryStream();
- Save(mem);
- return mem.GetBuffer();
- }
-
- public void Save(Stream stream)
- {
- var trie = this.Freeze();
- trie.Save(stream);
- }
-
public UnicodeTrie Freeze()
{
int allIndexesLength, i;
diff --git a/src/Avalonia.Base/Media/Typeface.cs b/src/Avalonia.Base/Media/Typeface.cs
index e2729c9158..8363b82400 100644
--- a/src/Avalonia.Base/Media/Typeface.cs
+++ b/src/Avalonia.Base/Media/Typeface.cs
@@ -89,7 +89,8 @@ namespace Avalonia.Media
return glyphTypeface;
}
- throw new InvalidOperationException("Could not create glyphTypeface.");
+ throw new InvalidOperationException(
+ $"Could not create glyphTypeface. Font family: {FontFamily?.Name} (key: {FontFamily?.Key}). Style: {Style}. Weight: {Weight}. Stretch: {Stretch}");
}
}
diff --git a/src/Avalonia.Base/Media/UnicodeRange.cs b/src/Avalonia.Base/Media/UnicodeRange.cs
index 59325afef7..0018f4d6b1 100644
--- a/src/Avalonia.Base/Media/UnicodeRange.cs
+++ b/src/Avalonia.Base/Media/UnicodeRange.cs
@@ -131,7 +131,7 @@ namespace Avalonia.Media
///
public bool IsInRange(int value)
{
- return value - Start <= End - Start;
+ return Start <= value && value <= End;
}
///
diff --git a/src/Avalonia.Base/PixelRect.cs b/src/Avalonia.Base/PixelRect.cs
index 85ec1041c3..e777d52164 100644
--- a/src/Avalonia.Base/PixelRect.cs
+++ b/src/Avalonia.Base/PixelRect.cs
@@ -150,7 +150,7 @@ namespace Avalonia
}
///
- /// Determines whether a point in in the bounds of the rectangle.
+ /// Determines whether a point in the bounds of the rectangle.
///
/// The point.
/// true if the point is in the bounds of the rectangle; otherwise false.
diff --git a/src/Avalonia.Base/PixelSize.cs b/src/Avalonia.Base/PixelSize.cs
index 5a34c6f6b5..3d4896a45d 100644
--- a/src/Avalonia.Base/PixelSize.cs
+++ b/src/Avalonia.Base/PixelSize.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using Avalonia.Utilities;
@@ -67,13 +68,38 @@ namespace Avalonia
///
/// The string.
/// The .
+ ///
public static PixelSize Parse(string s)
{
- using (var tokenizer = new StringTokenizer(s, CultureInfo.InvariantCulture, exceptionMessage: "Invalid PixelSize."))
+ if (TryParse(s, out var result))
{
- return new PixelSize(
- tokenizer.ReadInt32(),
- tokenizer.ReadInt32());
+ return result;
+ }
+ throw new FormatException("Invalid PixelSize.");
+ }
+
+ ///
+ /// Try parsing as .
+ ///
+ /// The to parse.
+ /// The result of parsing. if is not valid is
+ /// true if is valid , otherwise false.
+ public static bool TryParse([NotNullWhen(true)] string? source,
+ out PixelSize result)
+ {
+ result = Empty;
+ if(string.IsNullOrEmpty(source))
+ {
+ return false;
+ }
+ using (var tokenizer = new StringTokenizer(source, exceptionMessage: "Invalid PixelSize."))
+ {
+ if (tokenizer.TryReadInt32(out var w) && tokenizer.TryReadInt32(out var h))
+ {
+ result = new(w, h);
+ return true;
+ }
+ return false;
}
}
@@ -166,6 +192,17 @@ namespace Avalonia
public static PixelSize FromSize(Size size, double scale) => new PixelSize(
(int)Math.Ceiling(size.Width * scale),
(int)Math.Ceiling(size.Height * scale));
+
+ ///
+ /// A reversible variant of that uses Round instead of Ceiling to make it reversible from ToSize
+ ///
+ /// The size.
+ /// The scaling factor.
+ /// The device-independent size.
+ internal static PixelSize FromSizeRounded(Size size, double scale) => new PixelSize(
+ (int)Math.Round(size.Width * scale),
+ (int)Math.Round(size.Height * scale));
+
///
/// Converts a to device pixels using the specified scaling factor.
diff --git a/src/Avalonia.Base/Platform/AssetLoader.cs b/src/Avalonia.Base/Platform/AssetLoader.cs
index 854610f1c9..a6a65804c7 100644
--- a/src/Avalonia.Base/Platform/AssetLoader.cs
+++ b/src/Avalonia.Base/Platform/AssetLoader.cs
@@ -33,6 +33,12 @@ public static class AssetLoader
///
public static IEnumerable GetAssets(Uri uri, Uri? baseUri)
=> GetAssetLoader().GetAssets(uri, baseUri);
+
+ ///
+ public static void InvalidateAssemblyCache(string name) => GetAssetLoader().InvalidateAssemblyCache(name);
+ ///
+ public static void InvalidateAssemblyCache() => GetAssetLoader().InvalidateAssemblyCache();
+
#endif
internal static void RegisterResUriParsers()
diff --git a/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs b/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs
index a63682a0b9..e6cc6b872d 100644
--- a/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs
+++ b/src/Avalonia.Base/Platform/DefaultPlatformSettings.cs
@@ -3,6 +3,7 @@ using Avalonia.Input;
using Avalonia.Input.Platform;
using Avalonia.Media;
using Avalonia.Metadata;
+using Avalonia.Threading;
using Avalonia.VisualTree;
namespace Avalonia.Platform
@@ -50,7 +51,8 @@ namespace Avalonia.Platform
protected void OnColorValuesChanged(PlatformColorValues colorValues)
{
- ColorValuesChanged?.Invoke(this, colorValues);
+ Dispatcher.UIThread.Send(
+ _ => ColorValuesChanged?.Invoke(this, colorValues));
}
}
}
diff --git a/src/Avalonia.Base/Platform/IAssetLoader.cs b/src/Avalonia.Base/Platform/IAssetLoader.cs
index f1ce624c70..cdd4870e0f 100644
--- a/src/Avalonia.Base/Platform/IAssetLoader.cs
+++ b/src/Avalonia.Base/Platform/IAssetLoader.cs
@@ -77,5 +77,15 @@ namespace Avalonia.Platform
/// The base URI.
/// All matching assets as a tuple of the absolute path to the asset and the assembly containing the asset
IEnumerable GetAssets(Uri uri, Uri? baseUri);
+
+ ///
+ /// Removes the assembly from the cache.
+ ///
+ /// The Assemblies.First().GetName().Name
+ void InvalidateAssemblyCache(string name);
+ ///
+ /// Removes all assemblies from the cache.
+ ///
+ void InvalidateAssemblyCache();
}
}
diff --git a/src/Avalonia.Base/Platform/IDrawingContextImpl.cs b/src/Avalonia.Base/Platform/IDrawingContextImpl.cs
index fe411c350d..9621037cc1 100644
--- a/src/Avalonia.Base/Platform/IDrawingContextImpl.cs
+++ b/src/Avalonia.Base/Platform/IDrawingContextImpl.cs
@@ -3,6 +3,7 @@ using Avalonia.Media;
using Avalonia.Utilities;
using Avalonia.Metadata;
using Avalonia.Media.Imaging;
+using Avalonia.Media.Immutable;
namespace Avalonia.Platform
{
@@ -12,11 +13,6 @@ namespace Avalonia.Platform
[Unstable]
public interface IDrawingContextImpl : IDisposable
{
- ///
- /// Gets or sets the current render options used to control the rendering behavior of drawing operations.
- ///
- RenderOptions RenderOptions { get; set; }
-
///
/// Gets or sets the current transform of the drawing context.
///
@@ -75,6 +71,18 @@ namespace Avalonia.Platform
///
void DrawRectangle(IBrush? brush, IPen? pen, RoundedRect rect,
BoxShadows boxShadows = default);
+
+ ///
+ /// Draws the specified region with the specified Brush and Pen.
+ ///
+ /// The brush used to fill the rectangle, or null for no fill.
+ /// The pen used to stroke the rectangle, or null for no stroke.
+ /// The region to draw.
+ ///
+ /// The brush and the pen can both be null. If the brush is null, then no fill is performed.
+ /// If the pen is null, then no stoke is performed. If both the pen and the brush are null, then the drawing is not visible.
+ ///
+ void DrawRegion(IBrush? brush, IPen? pen, IPlatformRenderInterfaceRegion region);
///
/// Draws an ellipse with the specified Brush and Pen.
@@ -108,7 +116,7 @@ namespace Avalonia.Platform
/// has to do a format conversion each time a standard render target bitmap is rendered,
/// but a layer created via this method has no such overhead.
///
- IDrawingContextLayerImpl CreateLayer(Size size);
+ IDrawingContextLayerImpl CreateLayer(PixelSize size);
///
/// Pushes a clip rectangle.
@@ -121,12 +129,28 @@ namespace Avalonia.Platform
///
/// The clip rounded rectangle
void PushClip(RoundedRect clip);
-
+
+ ///
+ /// Pushes a clip region.
+ ///
+ /// The clip region
+ void PushClip(IPlatformRenderInterfaceRegion region);
+
///
/// Pops the latest pushed clip rectangle.
///
void PopClip();
+ ///
+ /// Enforces rendering to happen on an intermediate surface
+ ///
+ void PushLayer(Rect bounds);
+
+ ///
+ /// Pops the latest pushed intermediate surface layer.
+ ///
+ void PopLayer();
+
///
/// Pushes an opacity value.
///
diff --git a/src/Avalonia.Base/Platform/IGeometryContext2.cs b/src/Avalonia.Base/Platform/IGeometryContext2.cs
new file mode 100644
index 0000000000..4142430e9d
--- /dev/null
+++ b/src/Avalonia.Base/Platform/IGeometryContext2.cs
@@ -0,0 +1,46 @@
+using Avalonia.Media;
+
+namespace Avalonia.Platform
+{
+ // TODO12 combine with IGeometryContext
+ public interface IGeometryContext2 : IGeometryContext
+ {
+ ///
+ /// Draws a line to the specified point.
+ ///
+ /// The destination point.
+ /// Whether the segment is stroked
+ void LineTo(Point point, bool isStroked);
+
+ ///
+ /// Draws an arc to the specified point.
+ ///
+ /// The destination point.
+ /// The radii of an oval whose perimeter is used to draw the angle.
+ /// The rotation angle (in radians) of the oval that specifies the curve.
+ /// true to draw the arc greater than 180 degrees; otherwise, false.
+ ///
+ /// A value that indicates whether the arc is drawn in the Clockwise or Counterclockwise direction.
+ ///
+ /// Whether the segment is stroked
+ void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked);
+
+ ///
+ /// Draws a Bezier curve to the specified point.
+ ///
+ /// The first control point used to specify the shape of the curve.
+ /// The second control point used to specify the shape of the curve.
+ /// The destination point for the end of the curve.
+ /// Whether the segment is stroked
+ void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked);
+
+ ///
+ /// Draws a quadratic Bezier curve to the specified point
+ ///
+ /// Control point
+ /// DestinationPoint
+ /// Whether the segment is stroked
+ void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked);
+ }
+
+}
diff --git a/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs b/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs
index 1778031e5b..27c2243791 100644
--- a/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs
+++ b/src/Avalonia.Base/Platform/IOptionalFeatureProvider.cs
@@ -1,22 +1,25 @@
using System;
using System.Diagnostics.CodeAnalysis;
+// TODO12: move to Avalonia namespace.
namespace Avalonia.Platform;
public interface IOptionalFeatureProvider
{
///
- /// Queries for an optional feature
+ /// Queries for an optional feature.
///
- /// Feature type
+ /// Feature type.
public object? TryGetFeature(Type featureType);
}
public static class OptionalFeatureProviderExtensions
{
+ ///
public static T? TryGetFeature(this IOptionalFeatureProvider provider) where T : class =>
(T?)provider.TryGetFeature(typeof(T));
+ ///
public static bool TryGetFeature(this IOptionalFeatureProvider provider, [MaybeNullWhen(false)] out T rv)
where T : class
{
diff --git a/src/Avalonia.Base/Platform/IPlatformRenderInterface.cs b/src/Avalonia.Base/Platform/IPlatformRenderInterface.cs
index 57fedb3d69..0ead242a27 100644
--- a/src/Avalonia.Base/Platform/IPlatformRenderInterface.cs
+++ b/src/Avalonia.Base/Platform/IPlatformRenderInterface.cs
@@ -199,6 +199,9 @@ namespace Avalonia.Platform
public PixelFormat DefaultPixelFormat { get; }
bool IsSupportedBitmapPixelFormat(PixelFormat format);
+
+ bool SupportsRegions { get; }
+ IPlatformRenderInterfaceRegion CreateRegion();
}
[Unstable, PrivateApi]
@@ -217,5 +220,10 @@ namespace Avalonia.Platform
/// Indicates that the context is no longer usable. This method should be thread-safe
///
bool IsLost { get; }
+
+ ///
+ /// Exposes features that should be available for consumption while context isn't active (e. g. from the UI thread)
+ ///
+ IReadOnlyDictionary PublicFeatures { get; }
}
}
diff --git a/src/Avalonia.Base/Platform/IPlatformRenderInterfaceRegion.cs b/src/Avalonia.Base/Platform/IPlatformRenderInterfaceRegion.cs
new file mode 100644
index 0000000000..2692c1c67e
--- /dev/null
+++ b/src/Avalonia.Base/Platform/IPlatformRenderInterfaceRegion.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using Avalonia.Metadata;
+
+namespace Avalonia.Platform;
+
+[Unstable, PrivateApi]
+public interface IPlatformRenderInterfaceRegion : IDisposable
+{
+ void AddRect(LtrbPixelRect rect);
+ void Reset();
+ bool IsEmpty { get; }
+ LtrbPixelRect Bounds { get; }
+ IList Rects { get; }
+ bool Intersects(LtrbRect rect);
+ bool Contains(Point pt);
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Platform/IRenderTarget.cs b/src/Avalonia.Base/Platform/IRenderTarget.cs
index 2b4584483e..39504ac9fb 100644
--- a/src/Avalonia.Base/Platform/IRenderTarget.cs
+++ b/src/Avalonia.Base/Platform/IRenderTarget.cs
@@ -16,11 +16,39 @@ namespace Avalonia.Platform
///
/// Creates an for a rendering session.
///
- IDrawingContextImpl CreateDrawingContext();
+ /// Apply DPI reported by the render target as a hidden transform matrix
+ IDrawingContextImpl CreateDrawingContext(bool useScaledDrawing);
///
/// Indicates if the render target is no longer usable and needs to be recreated
///
public bool IsCorrupted { get; }
}
+
+ [PrivateApi]
+ public interface IRenderTargetWithProperties : IRenderTarget
+ {
+ RenderTargetProperties Properties { get; }
+
+ ///
+ /// Creates an for a rendering session.
+ ///
+ /// Apply DPI reported by the render target as a hidden transform matrix
+ /// Returns various properties about the returned drawing context
+ IDrawingContextImpl CreateDrawingContext(bool useScaledDrawing, out RenderTargetDrawingContextProperties properties);
+ }
+
+ internal static class RenderTargetExtensions
+ {
+ public static IDrawingContextImpl CreateDrawingContextWithProperties(
+ this IRenderTarget renderTarget,
+ bool useScaledDrawing,
+ out RenderTargetDrawingContextProperties properties)
+ {
+ if (renderTarget is IRenderTargetWithProperties target)
+ return target.CreateDrawingContext(useScaledDrawing, out properties);
+ properties = default;
+ return renderTarget.CreateDrawingContext(useScaledDrawing);
+ }
+ }
}
diff --git a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
index b12130b1f7..0a23014cac 100644
--- a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
+++ b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
@@ -9,6 +9,9 @@ namespace Avalonia.Platform.Internal;
internal interface IAssemblyDescriptorResolver
{
IAssemblyDescriptor GetAssembly(string name);
+ void InvalidateAssemblyCache(string name);
+ void InvalidateAssemblyCache();
+
}
internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
@@ -23,7 +26,7 @@ internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
if (!_assemblyNameCache.TryGetValue(name, out var rv))
{
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
- var match = loadedAssemblies.FirstOrDefault(a => a.GetName().Name == name);
+ var match = loadedAssemblies.FirstOrDefault(a => name.Equals(a.GetName().Name, StringComparison.InvariantCultureIgnoreCase));
if (match != null)
{
_assemblyNameCache[name] = rv = new AssemblyDescriptor(match);
@@ -44,4 +47,13 @@ internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
return rv;
}
+ public void InvalidateAssemblyCache(string name)
+ {
+ _assemblyNameCache.Remove(name);
+ }
+
+ public void InvalidateAssemblyCache()
+ {
+ _assemblyNameCache.Clear();
+ }
}
diff --git a/src/Avalonia.Base/Platform/Internal/UnmanagedBlob.cs b/src/Avalonia.Base/Platform/Internal/UnmanagedBlob.cs
index fc299dbcec..92ec820b2c 100644
--- a/src/Avalonia.Base/Platform/Internal/UnmanagedBlob.cs
+++ b/src/Avalonia.Base/Platform/Internal/UnmanagedBlob.cs
@@ -6,7 +6,7 @@ using System.Threading;
namespace Avalonia.Platform.Internal;
-internal class UnmanagedBlob
+internal class UnmanagedBlob : IDisposable
{
private IntPtr _address;
private readonly object _lock = new object();
diff --git a/src/Avalonia.Base/Platform/Interop/Utf8Buffer.cs b/src/Avalonia.Base/Platform/Interop/Utf8Buffer.cs
index ce9b38ead2..ac9398c99b 100644
--- a/src/Avalonia.Base/Platform/Interop/Utf8Buffer.cs
+++ b/src/Avalonia.Base/Platform/Interop/Utf8Buffer.cs
@@ -56,5 +56,8 @@ namespace Avalonia.Platform.Interop
ArrayPool.Shared.Return(bytes);
}
}
+
+ public static implicit operator IntPtr(Utf8Buffer b) => b.handle;
+ public static unsafe implicit operator byte*(Utf8Buffer b) => (byte*)b.handle;
}
}
diff --git a/src/Avalonia.Base/Platform/LtrbRect.cs b/src/Avalonia.Base/Platform/LtrbRect.cs
new file mode 100644
index 0000000000..188f75c010
--- /dev/null
+++ b/src/Avalonia.Base/Platform/LtrbRect.cs
@@ -0,0 +1,268 @@
+// ReSharper disable CompareOfFloatsByEqualityOperator
+
+using System;
+using Avalonia.Metadata;
+
+namespace Avalonia.Platform;
+
+///
+/// This struct is essentially the same thing as MilRectD
+/// Unlike our "normal" Rect which is more human-readable and human-usable
+/// this struct is optimized for actual processing that doesn't really care
+/// about Width and Height but pretty much always only cares about
+/// Right and Bottom edge coordinates
+///
+/// Not having to constantly convert between Width/Height and Right/Bottom for no actual reason
+/// saves us some perf
+///
+/// This structure is intended to be mostly internal, but it's exposed as a PrivateApi type so it can
+/// be passed to the drawing backend when needed
+///
+[PrivateApi]
+public struct LtrbRect
+{
+ public double Left, Top, Right, Bottom;
+
+ internal LtrbRect(double x, double y, double right, double bottom)
+ {
+ Left = x;
+ Top = y;
+ Right = right;
+ Bottom = bottom;
+ }
+
+ internal LtrbRect(Rect rc)
+ {
+ rc = rc.Normalize();
+ Left = rc.X;
+ Top = rc.Y;
+ Right = rc.Right;
+ Bottom = rc.Bottom;
+ }
+
+ internal bool IsZeroSize => Left == Right && Top == Bottom;
+
+ internal LtrbRect Intersect(LtrbRect rect)
+ {
+ var newLeft = (rect.Left > Left) ? rect.Left : Left;
+ var newTop = (rect.Top > Top) ? rect.Top : Top;
+ var newRight = (rect.Right < Right) ? rect.Right : Right;
+ var newBottom = (rect.Bottom < Bottom) ? rect.Bottom : Bottom;
+
+ if ((newRight > newLeft) && (newBottom > newTop))
+ {
+ return new LtrbRect(newLeft, newTop, newRight, newBottom);
+ }
+ else
+ {
+ return default;
+ }
+ }
+
+ internal bool Intersects(LtrbRect rect)
+ {
+ return (rect.Left < Right) && (Left < rect.Right) && (rect.Top < Bottom) && (Top < rect.Bottom);
+ }
+
+ internal Rect ToRect() => new(Left, Top, Right - Left, Bottom - Top);
+
+ internal LtrbRect Inflate(Thickness thickness)
+ {
+ return new LtrbRect(Left - thickness.Left, Top - thickness.Top, Right + thickness.Right,
+ Bottom + thickness.Bottom);
+ }
+
+ public static bool operator ==(LtrbRect left, LtrbRect right)=>
+ left.Left == right.Left && left.Top == right.Top && left.Right == right.Right && left.Bottom == right.Bottom;
+
+ public static bool operator !=(LtrbRect left, LtrbRect right) =>
+ left.Left != right.Left || left.Top != right.Top || left.Right != right.Right || left.Bottom != right.Bottom;
+
+ public bool Equals(LtrbRect other) =>
+ other.Left == Left && other.Top == Top && other.Right == Right && other.Bottom == Bottom;
+
+ public bool Equals(ref LtrbRect other) =>
+ other.Left == Left && other.Top == Top && other.Right == Right && other.Bottom == Bottom;
+
+ internal Point TopLeft => new Point(Left, Top);
+ internal Point TopRight => new Point(Right, Top);
+ internal Point BottomLeft => new Point(Left, Bottom);
+ internal Point BottomRight => new Point(Right, Bottom);
+
+ internal LtrbRect TransformToAABB(Matrix matrix)
+ {
+ ReadOnlySpan points = stackalloc Point[4]
+ {
+ TopLeft.Transform(matrix),
+ TopRight.Transform(matrix),
+ BottomRight.Transform(matrix),
+ BottomLeft.Transform(matrix)
+ };
+
+ var left = double.MaxValue;
+ var right = double.MinValue;
+ var top = double.MaxValue;
+ var bottom = double.MinValue;
+
+ foreach (var p in points)
+ {
+ if (p.X < left) left = p.X;
+ if (p.X > right) right = p.X;
+ if (p.Y < top) top = p.Y;
+ if (p.Y > bottom) bottom = p.Y;
+ }
+
+ return new LtrbRect(left, top, right, bottom);
+ }
+
+ ///
+ /// Perform _WPF-like_ union operation
+ ///
+ private LtrbRect FullUnionCore(LtrbRect rect)
+ {
+ var x1 = Math.Min(Left, rect.Left);
+ var x2 = Math.Max(Right, rect.Right);
+ var y1 = Math.Min(Top, rect.Top);
+ var y2 = Math.Max(Bottom, rect.Bottom);
+
+ return new(x1, y1, x2, y2);
+ }
+
+ internal static LtrbRect? FullUnion(LtrbRect? left, LtrbRect? right)
+ {
+ if (left == null)
+ return right;
+ if (right == null)
+ return left;
+ return right.Value.FullUnionCore(left.Value);
+ }
+
+ internal static LtrbRect? FullUnion(LtrbRect? left, Rect? right)
+ {
+ if (right == null)
+ return left;
+ if (left == null)
+ return new(right.Value);
+ return left.Value.FullUnionCore(new(right.Value));
+ }
+
+ public override bool Equals(object? obj)
+ {
+ if (obj is LtrbRect other)
+ return Equals(other);
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ int hash = 17;
+ hash = (hash * 23) + Left.GetHashCode();
+ hash = (hash * 23) + Top.GetHashCode();
+ hash = (hash * 23) + Right.GetHashCode();
+ hash = (hash * 23) + Bottom.GetHashCode();
+ return hash;
+ }
+ }
+}
+
+///
+/// This struct is essentially the same thing as RECT from win32 API
+/// Unlike our "normal" PixelRect which is more human-readable and human-usable
+/// this struct is optimized for actual processing that doesn't really care
+/// about Width and Height but pretty much always only cares about
+/// Right and Bottom edge coordinates
+///
+/// Not having to constantly convert between Width/Height and Right/Bottom for no actual reason
+/// saves us some perf
+///
+/// This structure is intended to be mostly internal, but it's exposed as a PrivateApi type so it can
+/// be passed to the drawing backend when needed
+///
+[PrivateApi]
+public struct LtrbPixelRect
+{
+ public int Left, Top, Right, Bottom;
+
+ internal LtrbPixelRect(int x, int y, int right, int bottom)
+ {
+ Left = x;
+ Top = y;
+ Right = right;
+ Bottom = bottom;
+ }
+
+ internal LtrbPixelRect(PixelSize size)
+ {
+ Left = 0;
+ Top = 0;
+ Right = size.Width;
+ Bottom = size.Height;
+ }
+
+ internal bool IsEmpty => Left == Right && Top == Bottom;
+
+ internal PixelRect ToPixelRect() => new(Left, Top, Right - Left, Bottom - Top);
+ internal LtrbPixelRect Union(LtrbPixelRect rect)
+ {
+ if (IsEmpty)
+ return rect;
+ if (rect.IsEmpty)
+ return this;
+ var x1 = Math.Min(Left, rect.Left);
+ var x2 = Math.Max(Right, rect.Right);
+ var y1 = Math.Min(Top, rect.Top);
+ var y2 = Math.Max(Bottom, rect.Bottom);
+
+ return new(x1, y1, x2, y2);
+ }
+
+ internal Rect ToRectWithNoScaling() => new(Left, Top, (Right - Left), (Bottom - Top));
+
+ internal bool Contains(int x, int y)
+ {
+ return x >= Left && x <= Right && y >= Top && y <= Bottom;
+ }
+
+ internal static LtrbPixelRect FromRectWithNoScaling(LtrbRect rect) =>
+ new((int)rect.Left, (int)rect.Top, (int)Math.Ceiling(rect.Right),
+ (int)Math.Ceiling(rect.Bottom));
+
+ public static bool operator ==(LtrbPixelRect left, LtrbPixelRect right)=>
+ left.Left == right.Left && left.Top == right.Top && left.Right == right.Right && left.Bottom == right.Bottom;
+
+ public static bool operator !=(LtrbPixelRect left, LtrbPixelRect right) =>
+ left.Left != right.Left || left.Top != right.Top || left.Right != right.Right || left.Bottom != right.Bottom;
+
+ public bool Equals(LtrbPixelRect other) =>
+ other.Left == Left && other.Top == Top && other.Right == Right && other.Bottom == Bottom;
+
+ public override bool Equals(object? obj)
+ {
+ if (obj is LtrbPixelRect other)
+ return Equals(other);
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ int hash = 17;
+ hash = (hash * 23) + Left.GetHashCode();
+ hash = (hash * 23) + Top.GetHashCode();
+ hash = (hash * 23) + Right.GetHashCode();
+ hash = (hash * 23) + Bottom.GetHashCode();
+ return hash;
+ }
+ }
+
+ internal Rect ToRectUnscaled() => new(Left, Top, Right - Left, Bottom - Top);
+
+ internal static LtrbPixelRect FromRectUnscaled(LtrbRect rect)
+ {
+ return new LtrbPixelRect((int)rect.Left, (int)rect.Top, (int)Math.Ceiling(rect.Right),
+ (int)Math.Ceiling(rect.Bottom));
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Platform/PixelFormat.cs b/src/Avalonia.Base/Platform/PixelFormat.cs
index d03b4e04b8..68ebacbdcd 100644
--- a/src/Avalonia.Base/Platform/PixelFormat.cs
+++ b/src/Avalonia.Base/Platform/PixelFormat.cs
@@ -15,7 +15,9 @@ namespace Avalonia.Platform
Gray32Float,
Rgba64,
Rgb24,
+ Rgb32,
Bgr24,
+ Bgr32,
Bgr555,
Bgr565
}
@@ -61,6 +63,7 @@ namespace Avalonia.Platform
public static PixelFormat Rgb565 => PixelFormats.Rgb565;
public static PixelFormat Rgba8888 => PixelFormats.Rgba8888;
+ public static PixelFormat Rgb32 => PixelFormats.Rgb32;
public static PixelFormat Bgra8888 => PixelFormats.Bgra8888;
public override string ToString() => FormatEnum.ToString();
@@ -79,7 +82,9 @@ namespace Avalonia.Platform
public static PixelFormat Gray16 { get; } = new PixelFormat(PixelFormatEnum.Gray16);
public static PixelFormat Gray32Float { get; } = new PixelFormat(PixelFormatEnum.Gray32Float);
public static PixelFormat Rgb24 { get; } = new PixelFormat(PixelFormatEnum.Rgb24);
+ public static PixelFormat Rgb32 { get; } = new PixelFormat(PixelFormatEnum.Rgb32);
public static PixelFormat Bgr24 { get; } = new PixelFormat(PixelFormatEnum.Bgr24);
+ public static PixelFormat Bgr32 { get; } = new PixelFormat(PixelFormatEnum.Bgr32);
public static PixelFormat Bgr555 { get; } = new PixelFormat(PixelFormatEnum.Bgr555);
public static PixelFormat Bgr565 { get; } = new PixelFormat(PixelFormatEnum.Bgr565);
}
diff --git a/src/Avalonia.Base/Platform/PlatformGraphicsExternalMemory.cs b/src/Avalonia.Base/Platform/PlatformGraphicsExternalMemory.cs
index 4b47c93eb5..b9be1f7dc9 100644
--- a/src/Avalonia.Base/Platform/PlatformGraphicsExternalMemory.cs
+++ b/src/Avalonia.Base/Platform/PlatformGraphicsExternalMemory.cs
@@ -35,6 +35,14 @@ public static class KnownPlatformGraphicsExternalImageHandleTypes
/// A POSIX file descriptor that's exported by Vulkan using VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT or in a compatible way
///
public const string VulkanOpaquePosixFileDescriptor = nameof(VulkanOpaquePosixFileDescriptor);
+
+ ///
+ /// A NT handle that's been exported by Vulkan using VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT or in a compatible way
+ ///
+ public const string VulkanOpaqueNtHandle = nameof(VulkanOpaqueNtHandle);
+
+ // A global shared handle that's been exported by Vulkan using VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT or in a compatible way
+ public const string VulkanOpaqueKmtHandle = nameof(VulkanOpaqueKmtHandle);
}
///
diff --git a/src/Avalonia.Base/Platform/RenderTargetProperties.cs b/src/Avalonia.Base/Platform/RenderTargetProperties.cs
new file mode 100644
index 0000000000..33b117ff1e
--- /dev/null
+++ b/src/Avalonia.Base/Platform/RenderTargetProperties.cs
@@ -0,0 +1,30 @@
+using Avalonia.Metadata;
+
+namespace Avalonia.Platform;
+
+[PrivateApi]
+public struct RenderTargetProperties
+{
+ ///
+ /// Indicates that render target contents are preserved between CreateDrawingContext calls.
+ /// Notable examples are retained CPU-memory framebuffers and
+ /// swapchains with DXGI_SWAP_EFFECT_SEQUENTIAL/DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
+ ///
+ public bool RetainsPreviousFrameContents { get; init; }
+
+ ///
+ /// Indicates that the render target can be used without CreateLayer
+ /// It's currently not true for every render target, since with OpenGL rendering we often use
+ /// framebuffers without a stencil attachment that is required for clipping with Skia
+ ///
+ public bool IsSuitableForDirectRendering { get; init; }
+}
+
+[PrivateApi]
+public struct RenderTargetDrawingContextProperties
+{
+ ///
+ /// Indicates that the drawing context targets a surface that preserved its contents since the previous frame
+ ///
+ public bool PreviousFrameIsRetained { get; init; }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Platform/RetainedFramebuffer.cs b/src/Avalonia.Base/Platform/RetainedFramebuffer.cs
new file mode 100644
index 0000000000..e5ca1070dc
--- /dev/null
+++ b/src/Avalonia.Base/Platform/RetainedFramebuffer.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Runtime.InteropServices;
+using Avalonia.Metadata;
+using Avalonia.Platform.Internal;
+
+namespace Avalonia.Platform;
+
+internal class RetainedFramebuffer : IDisposable
+{
+ public PixelSize Size { get; }
+ public int RowBytes { get; }
+ public PixelFormat Format { get; }
+ public IntPtr Address => _blob?.Address ?? throw new ObjectDisposedException(nameof(RetainedFramebuffer));
+ private UnmanagedBlob? _blob;
+
+ static PixelFormat ValidateKnownFormat(PixelFormat format) => format.BitsPerPixel % 8 == 0
+ ? format
+ : throw new ArgumentOutOfRangeException(nameof(format));
+
+ public RetainedFramebuffer(PixelSize size, PixelFormat format) : this(size, ValidateKnownFormat(format),
+ format.BitsPerPixel / 8 * size.Width)
+ {
+
+ }
+
+ public RetainedFramebuffer(PixelSize size, PixelFormat format, int rowBytes)
+ {
+ if (size.Width <= 0 || size.Height <= 0)
+ throw new ArgumentOutOfRangeException(nameof(size));
+ if (size.Width * (format.BitsPerPixel / 8) > rowBytes)
+ throw new ArgumentOutOfRangeException(nameof(rowBytes));
+ Size = size;
+ RowBytes = rowBytes;
+ Format = format;
+ _blob = new UnmanagedBlob(RowBytes * size.Height);
+ }
+
+ public ILockedFramebuffer Lock(Vector dpi, Action blit)
+ {
+ if (_blob == null)
+ throw new ObjectDisposedException(nameof(RetainedFramebuffer));
+ return new LockedFramebuffer(_blob.Address, Size, RowBytes, dpi, Format, () =>
+ {
+ blit(this);
+ GC.KeepAlive(this);
+ });
+ }
+
+ public void Dispose()
+ {
+ _blob?.Dispose();
+ _blob = null;
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Platform/StandardAssetLoader.cs b/src/Avalonia.Base/Platform/StandardAssetLoader.cs
index 1d9363c70d..a55ac1428b 100644
--- a/src/Avalonia.Base/Platform/StandardAssetLoader.cs
+++ b/src/Avalonia.Base/Platform/StandardAssetLoader.cs
@@ -155,6 +155,16 @@ public class StandardAssetLoader : IAssetLoader
return Enumerable.Empty();
}
+ public void InvalidateAssemblyCache(string name)
+ {
+ _assemblyDescriptorResolver.InvalidateAssemblyCache(name);
+ }
+
+ public void InvalidateAssemblyCache()
+ {
+ _assemblyDescriptorResolver.InvalidateAssemblyCache();
+ }
+
public static void RegisterResUriParsers() => AssetLoader.RegisterResUriParsers();
private bool TryGetAsset(Uri uri, Uri? baseUri, [NotNullWhen(true)] out IAssetDescriptor? assetDescriptor)
diff --git a/src/Avalonia.Base/Platform/Storage/FilePickerFileTypes.cs b/src/Avalonia.Base/Platform/Storage/FilePickerFileTypes.cs
index 9c712a648b..d735d1dae2 100644
--- a/src/Avalonia.Base/Platform/Storage/FilePickerFileTypes.cs
+++ b/src/Avalonia.Base/Platform/Storage/FilePickerFileTypes.cs
@@ -21,7 +21,7 @@ public static class FilePickerFileTypes
public static FilePickerFileType ImageAll { get; } = new("All Images")
{
- Patterns = new[] { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.bmp" },
+ Patterns = new[] { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.bmp", "*.webp" },
AppleUniformTypeIdentifiers = new[] { "public.image" },
MimeTypes = new[] { "image/*" }
};
@@ -40,6 +40,13 @@ public static class FilePickerFileTypes
MimeTypes = new[] { "image/png" }
};
+ public static FilePickerFileType ImageWebp { get; } = new("WebP image")
+ {
+ Patterns = new[] { "*.webp" },
+ AppleUniformTypeIdentifiers = new[] { "org.webmproject.webp" },
+ MimeTypes = new[] { "image/webp" }
+ };
+
public static FilePickerFileType Pdf { get; } = new("PDF document")
{
Patterns = new[] { "*.pdf" },
diff --git a/src/Avalonia.Base/PropertyStore/BindingEntryBase.cs b/src/Avalonia.Base/PropertyStore/BindingEntryBase.cs
index dc2f19d389..294313a15e 100644
--- a/src/Avalonia.Base/PropertyStore/BindingEntryBase.cs
+++ b/src/Avalonia.Base/PropertyStore/BindingEntryBase.cs
@@ -45,7 +45,7 @@ namespace Avalonia.PropertyStore
Frame = frame;
Property = property;
Source = source;
- if (property.GetMetadata(target.GetType()).EnableDataValidation == true)
+ if (property.GetMetadata(target).EnableDataValidation == true)
_uncommon = new() { _hasDataValidation = true };
}
@@ -112,7 +112,7 @@ namespace Avalonia.PropertyStore
protected abstract BindingValue ConvertAndValidate(TSource value);
protected abstract BindingValue ConvertAndValidate(BindingValue value);
- protected abstract TValue GetDefaultValue(Type ownerType);
+ protected abstract TValue GetDefaultValue(AvaloniaObject owner);
protected virtual void Start(bool produceValue)
{
@@ -186,7 +186,7 @@ namespace Avalonia.PropertyStore
if (_uncommon?._isDefaultValueInitialized != true)
{
_uncommon ??= new();
- _uncommon._defaultValue = GetDefaultValue(Frame.Owner!.Owner.GetType());
+ _uncommon._defaultValue = GetDefaultValue(Frame.Owner!.Owner);
_uncommon._isDefaultValueInitialized = true;
}
diff --git a/src/Avalonia.Base/PropertyStore/DirectBindingObserver.cs b/src/Avalonia.Base/PropertyStore/DirectBindingObserver.cs
index 4bf98e3f7b..fdab966805 100644
--- a/src/Avalonia.Base/PropertyStore/DirectBindingObserver.cs
+++ b/src/Avalonia.Base/PropertyStore/DirectBindingObserver.cs
@@ -15,7 +15,7 @@ namespace Avalonia.PropertyStore
public DirectBindingObserver(ValueStore owner, DirectPropertyBase property)
{
_owner = owner;
- _hasDataValidation = property.GetMetadata(owner.Owner.GetType())?.EnableDataValidation ?? false;
+ _hasDataValidation = property.GetMetadata(owner.Owner).EnableDataValidation ?? false;
Property = property;
}
diff --git a/src/Avalonia.Base/PropertyStore/DirectUntypedBindingObserver.cs b/src/Avalonia.Base/PropertyStore/DirectUntypedBindingObserver.cs
index 54dffa3a95..e1db0b19ae 100644
--- a/src/Avalonia.Base/PropertyStore/DirectUntypedBindingObserver.cs
+++ b/src/Avalonia.Base/PropertyStore/DirectUntypedBindingObserver.cs
@@ -16,7 +16,7 @@ namespace Avalonia.PropertyStore
public DirectUntypedBindingObserver(ValueStore owner, DirectPropertyBase property)
{
_owner = owner;
- _hasDataValidation = property.GetMetadata(owner.Owner.GetType())?.EnableDataValidation ?? false;
+ _hasDataValidation = property.GetMetadata(owner.Owner).EnableDataValidation ?? false;
Property = property;
}
diff --git a/src/Avalonia.Base/PropertyStore/EffectiveValue.cs b/src/Avalonia.Base/PropertyStore/EffectiveValue.cs
index da7bec836e..7421b183d4 100644
--- a/src/Avalonia.Base/PropertyStore/EffectiveValue.cs
+++ b/src/Avalonia.Base/PropertyStore/EffectiveValue.cs
@@ -11,6 +11,11 @@ namespace Avalonia.PropertyStore
///
internal abstract class EffectiveValue
{
+ ///
+ /// Gets the property targeted by this value.
+ ///
+ public AvaloniaProperty Property { get; protected init; }
+
///
/// Gets the current effective value as a boxed value.
///
@@ -53,6 +58,13 @@ namespace Avalonia.PropertyStore
///
public bool IsCoercedDefaultValue { get; set; }
+ ///
+ /// Initializes a new instance of .
+ ///
+ /// The property targeted by this value.
+ protected EffectiveValue(AvaloniaProperty property)
+ => Property = property;
+
///
/// Begins a reevaluation pass on the effective value.
///
@@ -89,7 +101,7 @@ namespace Avalonia.PropertyStore
/// Gets a value indicating whether the effective value represents the default value of the
/// property and can be removed.
///
- /// True if the effective value van be removed; otherwise false.
+ /// True if the effective value can be removed; otherwise false.
public bool CanRemove()
{
return Priority == BindingPriority.Unset &&
diff --git a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs
index 3216273b89..b50935692e 100644
--- a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs
+++ b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs
@@ -23,10 +23,11 @@ namespace Avalonia.PropertyStore
AvaloniaObject owner,
StyledProperty property,
EffectiveValue? inherited)
+ : base(property)
{
Priority = BindingPriority.Unset;
BasePriority = BindingPriority.Unset;
- _metadata = property.GetMetadata(owner.GetType());
+ _metadata = property.GetMetadata(owner);
var value = inherited is null ? _metadata.DefaultValue : inherited.Value;
diff --git a/src/Avalonia.Base/PropertyStore/FramePriority.cs b/src/Avalonia.Base/PropertyStore/FramePriority.cs
index 950a8375f2..a77bbe211b 100644
--- a/src/Avalonia.Base/PropertyStore/FramePriority.cs
+++ b/src/Avalonia.Base/PropertyStore/FramePriority.cs
@@ -28,6 +28,12 @@ namespace Avalonia.PropertyStore
return (FramePriority)(p * 3 + (int)type);
}
+ public static BindingPriority ToBindingPriority(this FramePriority priority)
+ {
+ var p = (int)priority / 3;
+ return p == 0 ? BindingPriority.Animation : (BindingPriority)p;
+ }
+
public static bool IsType(this FramePriority priority, FrameType type)
{
return (FrameType)((int)priority % 3) == type;
diff --git a/src/Avalonia.Base/PropertyStore/LocalValueBindingObserverBase.cs b/src/Avalonia.Base/PropertyStore/LocalValueBindingObserverBase.cs
index 084ac7011f..29cc891bb9 100644
--- a/src/Avalonia.Base/PropertyStore/LocalValueBindingObserverBase.cs
+++ b/src/Avalonia.Base/PropertyStore/LocalValueBindingObserverBase.cs
@@ -18,7 +18,7 @@ namespace Avalonia.PropertyStore
{
_owner = owner;
Property = property;
- _hasDataValidation = property.GetMetadata(owner.Owner.GetType()).EnableDataValidation ?? false;
+ _hasDataValidation = property.GetMetadata(owner.Owner).EnableDataValidation ?? false;
}
public StyledProperty Property { get;}
@@ -121,7 +121,7 @@ namespace Avalonia.PropertyStore
{
if (!_isDefaultValueInitialized)
{
- _defaultValue = Property.GetDefaultValue(_owner.Owner.GetType());
+ _defaultValue = Property.GetDefaultValue(_owner.Owner);
_isDefaultValueInitialized = true;
}
diff --git a/src/Avalonia.Base/PropertyStore/SourceUntypedBindingEntry.cs b/src/Avalonia.Base/PropertyStore/SourceUntypedBindingEntry.cs
index 99c6a3ee9d..ca7e483b35 100644
--- a/src/Avalonia.Base/PropertyStore/SourceUntypedBindingEntry.cs
+++ b/src/Avalonia.Base/PropertyStore/SourceUntypedBindingEntry.cs
@@ -33,6 +33,6 @@ namespace Avalonia.PropertyStore
throw new NotSupportedException();
}
- protected override TTarget GetDefaultValue(Type ownerType) => Property.GetDefaultValue(ownerType);
+ protected override TTarget GetDefaultValue(AvaloniaObject owner) => Property.GetDefaultValue(owner);
}
}
diff --git a/src/Avalonia.Base/PropertyStore/TypedBindingEntry.cs b/src/Avalonia.Base/PropertyStore/TypedBindingEntry.cs
index c209138605..a55202c9f2 100644
--- a/src/Avalonia.Base/PropertyStore/TypedBindingEntry.cs
+++ b/src/Avalonia.Base/PropertyStore/TypedBindingEntry.cs
@@ -51,6 +51,6 @@ namespace Avalonia.PropertyStore
return value;
}
- protected override T GetDefaultValue(Type ownerType) => Property.GetDefaultValue(ownerType);
+ protected override T GetDefaultValue(AvaloniaObject owner) => Property.GetDefaultValue(owner);
}
}
diff --git a/src/Avalonia.Base/PropertyStore/ValueStore.cs b/src/Avalonia.Base/PropertyStore/ValueStore.cs
index 2cd1ac98e9..e443a11781 100644
--- a/src/Avalonia.Base/PropertyStore/ValueStore.cs
+++ b/src/Avalonia.Base/PropertyStore/ValueStore.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
+using System.Runtime.CompilerServices;
using Avalonia.Data;
using Avalonia.Data.Core;
using Avalonia.Diagnostics;
@@ -47,7 +48,8 @@ namespace Avalonia.PropertyStore
AvaloniaProperty property,
UntypedBindingExpressionBase source)
{
- if (property.IsDirect)
+ var priority = source.Priority;
+ if (priority == BindingPriority.LocalValue || property.IsDirect)
{
DisposeExistingLocalValueBinding(property);
_localValueBindings ??= new();
@@ -57,29 +59,16 @@ namespace Avalonia.PropertyStore
}
else
{
- var priority = source.Priority;
-
- if (priority == BindingPriority.LocalValue)
- {
- DisposeExistingLocalValueBinding(property);
- _localValueBindings ??= new();
- _localValueBindings[property.Id] = source;
- source.AttachAndStart(this, Owner, property, priority);
- return source;
- }
- else
- {
- var effective = GetEffectiveValue(property);
- var frame = GetOrCreateImmediateValueFrame(property, priority, out _);
+ var effective = GetEffectiveValue(property);
+ var frame = GetOrCreateImmediateValueFrame(property, priority, out _);
- source.Attach(this, frame, Owner, property, priority);
- frame.AddBinding(source);
+ source.Attach(this, frame, Owner, property, priority);
+ frame.AddBinding(source);
- if (effective is null || priority <= effective.Priority)
- source.Start();
+ if (effective is null || priority <= effective.Priority)
+ source.Start();
- return source;
- }
+ return source;
}
}
@@ -295,11 +284,25 @@ namespace Avalonia.PropertyStore
public T GetValue(StyledProperty property)
{
+ // Performance critical method
if (_effectiveValues.TryGetValue(property, out var v))
- return ((EffectiveValue)v).Value;
+ return CastEffectiveValue(v).Value;
if (property.Inherits && TryGetInheritedValue(property, out v))
- return ((EffectiveValue)v).Value;
- return property.GetDefaultValue(Owner.GetType());
+ return CastEffectiveValue(v).Value;
+ return property.GetDefaultValue(Owner);
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static EffectiveValue CastEffectiveValue(EffectiveValue value)
+ {
+#if DEBUG
+ return (EffectiveValue)value;
+#else
+ // Avoid casts in release mode for performance since GetValue is a very hot path.
+ // We control every path:
+ // it shouldn't be possible to have something else than an EffectiveValue stored for a T property.
+ return Unsafe.As>(value);
+#endif
}
public bool IsAnimating(AvaloniaProperty property)
@@ -321,7 +324,7 @@ namespace Avalonia.PropertyStore
public void CoerceDefaultValue(StyledProperty property)
{
- var metadata = property.GetMetadata(Owner.GetType());
+ var metadata = property.GetMetadata(Owner);
if (metadata.CoerceValue is null)
return;
@@ -400,9 +403,9 @@ namespace Avalonia.PropertyStore
for (var i = 0; i < count; ++i)
{
- f._effectiveValues.GetKeyValue(i, out var key, out var value);
- if (key.Inherits)
- values.TryAdd(key, new(value));
+ var value = f._effectiveValues.GetValue(i);
+ if (value.Property.Inherits)
+ values.TryAdd(value.Property, new(value));
}
f = f.InheritanceAncestor;
@@ -417,19 +420,20 @@ namespace Avalonia.PropertyStore
for (var i = 0; i < count; ++i)
{
- f._effectiveValues.GetKeyValue(i, out var key, out var value);
+ var value = f._effectiveValues.GetValue(i);
+ var property = value.Property;
- if (!key.Inherits)
+ if (!property.Inherits)
continue;
- if (values.TryGetValue(key, out var existing))
+ if (values.TryGetValue(property, out var existing))
{
if (existing.NewValue is null)
- values[key] = existing.WithNewValue(value);
+ values[property] = existing.WithNewValue(value);
}
else
{
- values.Add(key, new(null, value));
+ values.Add(property, new(null, value));
}
}
@@ -443,12 +447,15 @@ namespace Avalonia.PropertyStore
var count = values.Count;
for (var i = 0; i < count; ++i)
{
- values.GetKeyValue(i, out var key, out var v);
+ var v = values.GetValue(i);
var oldValue = v.OldValue;
var newValue = v.NewValue;
if (oldValue != newValue)
- InheritedValueChanged(key, oldValue, newValue);
+ {
+ var property = v.OldValue?.Property ?? v.NewValue!.Property;
+ InheritedValueChanged(property, oldValue, newValue);
+ }
}
}
@@ -607,7 +614,7 @@ namespace Avalonia.PropertyStore
/// The old value of the property.
/// The new value of the property.
public void OnAncestorInheritedValueChanged(
- StyledProperty property,
+ StyledProperty property,
T oldValue,
T newValue)
{
@@ -814,7 +821,7 @@ namespace Avalonia.PropertyStore
if (instance.IsDataValidationEnabled)
Owner.OnUpdateDataValidation(property, BindingValueType.UnsetValue, null);
-
+
if (instance.Priority == BindingPriority.LocalValue)
{
if (_localValueBindings is not null &&
@@ -829,6 +836,40 @@ namespace Avalonia.PropertyStore
}
}
+ public ValueStoreDiagnostic GetStoreDiagnostic()
+ {
+ var frames = new List();
+
+ var effectiveLocalValues = new List(_effectiveValues.Count);
+ for (var i = 0; i < _effectiveValues.Count; i++)
+ {
+ if (_effectiveValues.GetValue(i) is { } effectiveValue
+ && effectiveValue.Priority == BindingPriority.LocalValue)
+ {
+ effectiveLocalValues.Add(new ValueEntryDiagnostic(effectiveValue.Property, effectiveValue.Value));
+ }
+ }
+
+ if (effectiveLocalValues.Count > 0)
+ {
+ frames.Add(new LocalValueFrameDiagnostic(effectiveLocalValues));
+ }
+
+ foreach (var frame in Frames)
+ {
+ if (frame is StyleInstance { Source: StyleBase } styleInstance)
+ {
+ frames.Add(new StyleValueFrameDiagnostic(styleInstance));
+ }
+ else
+ {
+ frames.Add(new ValueFrameDiagnostic(frame));
+ }
+ }
+
+ return new ValueStoreDiagnostic(frames);
+ }
+
private int InsertFrame(ValueFrame frame)
{
Debug.Assert(!_frames.Contains(frame));
@@ -841,7 +882,7 @@ namespace Avalonia.PropertyStore
}
private ImmediateValueFrame GetOrCreateImmediateValueFrame(
- AvaloniaProperty property,
+ AvaloniaProperty property,
BindingPriority priority,
out int frameIndex)
{
@@ -912,7 +953,7 @@ namespace Avalonia.PropertyStore
Debug.Assert(oldValue != newValue);
Debug.Assert(oldValue is not null || newValue is not null);
- // If the value is set locally, propagaton ends here.
+ // If the value is set locally, propagation ends here.
if (_effectiveValues.ContainsKey(property) == true)
return;
@@ -967,7 +1008,7 @@ namespace Avalonia.PropertyStore
// Try to get an entry from the frame for the property we're reevaluating.
var foundEntry = frame.TryGetEntryIfActive(property, out var entry, out var activeChanged);
-
+
// If the active state of the frame has changed since the last read, and
// the frame holds multiple values then we need to re-evaluate the
// effective values of all properties.
@@ -982,7 +1023,7 @@ namespace Avalonia.PropertyStore
// value for the property. Note that the check for entry.HasValue must be
// evaluated last as it can cause bindings to be subscribed.
if (foundEntry &&
- HasHigherPriority(entry!, priority, current, changedValueEntry) &&
+ HasHigherPriority(entry!, priority, current, changedValueEntry) &&
entry!.HasValue())
{
if (current is not null)
@@ -1063,7 +1104,7 @@ namespace Avalonia.PropertyStore
var entry = frame.GetEntry(j);
var property = entry.Property;
_effectiveValues.TryGetValue(property, out var effectiveValue);
-
+
if (!HasHigherPriority(entry, priority, effectiveValue, changedValueEntry))
continue;
@@ -1089,14 +1130,15 @@ namespace Avalonia.PropertyStore
// Remove all effective values that are still unset.
for (var i = _effectiveValues.Count - 1; i >= 0; --i)
{
- _effectiveValues.GetKeyValue(i, out var key, out var e);
+ var e = _effectiveValues.GetValue(i);
+ var property = e.Property;
- e.EndReevaluation(this, key);
+ e.EndReevaluation(this, property);
if (e.CanRemove())
{
- RemoveEffectiveValue(key, i);
- e.DisposeAndRaiseUnset(this, key);
+ RemoveEffectiveValue(property, i);
+ e.DisposeAndRaiseUnset(this, property);
if (i > _effectiveValues.Count)
break;
@@ -1119,7 +1161,7 @@ namespace Avalonia.PropertyStore
{
// Set the value if: there is no current effective value; or
if (current is null)
- return true;
+ return true;
// The value's priority is higher than the current effective value's priority; or
if (entryPriority < current.Priority && entryPriority < current.BasePriority)
@@ -1143,13 +1185,10 @@ namespace Avalonia.PropertyStore
}
private bool TryGetEffectiveValue(
- AvaloniaProperty property,
+ AvaloniaProperty property,
[NotNullWhen(true)] out EffectiveValue? value)
{
- if (_effectiveValues.TryGetValue(property, out value))
- return true;
- value = null;
- return false;
+ return _effectiveValues.TryGetValue(property, out value);
}
private EffectiveValue? GetEffectiveValue(AvaloniaProperty property)
@@ -1161,7 +1200,7 @@ namespace Avalonia.PropertyStore
private object? GetDefaultValue(AvaloniaProperty property)
{
- return ((IStyledPropertyAccessor)property).GetDefaultValue(Owner.GetType());
+ return ((IStyledPropertyAccessor)property).GetDefaultValue(Owner);
}
private void DisposeExistingLocalValueBinding(AvaloniaProperty property)
diff --git a/src/Avalonia.Base/RelativePoint.cs b/src/Avalonia.Base/RelativePoint.cs
index 2ac3ae44b4..2ab3996200 100644
--- a/src/Avalonia.Base/RelativePoint.cs
+++ b/src/Avalonia.Base/RelativePoint.cs
@@ -142,7 +142,6 @@ namespace Avalonia
///
/// The size of the visual.
/// The origin point in pixels.
- [Obsolete("Use ToPixels(Rect) overload to properly map relative points")]
public Point ToPixels(Size size)
{
return _unit == RelativeUnit.Absolute ?
diff --git a/src/Avalonia.Base/Rendering/Composition/Animations/AnimationInstanceBase.cs b/src/Avalonia.Base/Rendering/Composition/Animations/AnimationInstanceBase.cs
index 64aa1736f8..8a25f23e59 100644
--- a/src/Avalonia.Base/Rendering/Composition/Animations/AnimationInstanceBase.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Animations/AnimationInstanceBase.cs
@@ -61,14 +61,14 @@ internal abstract class AnimationInstanceBase : IAnimationInstance
{
if (_trackedObjects != null)
foreach (var tracked in _trackedObjects)
- tracked.obj.SubscribeToInvalidation(tracked.member, this);
+ tracked.obj.GetOrCreateAnimations().SubscribeToInvalidation(tracked.member, this);
}
public virtual void Deactivate()
{
if (_trackedObjects != null)
foreach (var tracked in _trackedObjects)
- tracked.obj.UnsubscribeFromInvalidation(tracked.member, this);
+ tracked.obj.Animations?.UnsubscribeFromInvalidation(tracked.member, this);
}
public void Invalidate()
@@ -76,7 +76,7 @@ internal abstract class AnimationInstanceBase : IAnimationInstance
if (_invalidated)
return;
_invalidated = true;
- TargetObject.NotifyAnimatedValueChanged(Property);
+ TargetObject.Animations?.NotifyAnimationInstanceInvalidated(Property);
}
public void OnTick() => Invalidate();
diff --git a/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs b/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs
index f29bb71ede..aacb0579e7 100644
--- a/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs
@@ -74,7 +74,7 @@ namespace Avalonia.Rendering.Composition.Animations
&& elapsed > _totalDuration)
{
// Active check?
- TargetObject.Compositor.RemoveFromClock(this);
+ TargetObject.Compositor.Animations.RemoveFromClock(this);
_finished = true;
}
return res;
@@ -177,13 +177,13 @@ namespace Avalonia.Rendering.Composition.Animations
{
return;
}
- TargetObject.Compositor.AddToClock(this);
+ TargetObject.Compositor.Animations.AddToClock(this);
base.Activate();
}
public override void Deactivate()
{
- TargetObject.Compositor.RemoveFromClock(this);
+ TargetObject.Compositor.Animations.RemoveFromClock(this);
base.Deactivate();
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs
index 52892b379b..9faa3d721f 100644
--- a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs
+++ b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs
@@ -113,7 +113,7 @@ internal class CompositingRenderer : IRendererWithCompositor, IHitTester
return true;
};
- var res = CompositionTarget.TryHitTest(p, rootVisual, f);
+ using var res = CompositionTarget.TryHitTest(p, rootVisual, f);
if(res == null)
yield break;
foreach(var v in res)
@@ -172,7 +172,8 @@ internal class CompositingRenderer : IRendererWithCompositor, IHitTester
v.SynchronizeCompositionChildVisuals();
_dirty.Clear();
_recalculateChildren.Clear();
- CompositionTarget.Size = _root.ClientSize;
+
+ CompositionTarget.PixelSize = PixelSize.FromSizeRounded(_root.ClientSize, _root.RenderScaling);
CompositionTarget.Scaling = _root.RenderScaling;
var commit = _compositor.RequestCommitAsync();
@@ -211,14 +212,15 @@ internal class CompositingRenderer : IRendererWithCompositor, IHitTester
}
///
- public void Paint(Rect rect)
+ public void Paint(Rect rect) => Paint(rect, true);
+ public void Paint(Rect rect, bool catchExceptions)
{
if (_isDisposed)
return;
QueueUpdate();
CompositionTarget.RequestRedraw();
- MediaContext.Instance.ImmediateRenderRequested(CompositionTarget);
+ MediaContext.Instance.ImmediateRenderRequested(CompositionTarget, catchExceptions);
}
///
diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisual.cs b/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisual.cs
index 1d7887cd0e..79f2cc3fb9 100644
--- a/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisual.cs
@@ -1,12 +1,15 @@
using System.Collections.Generic;
using System.Numerics;
+using Avalonia.Media;
using Avalonia.Rendering.Composition.Server;
using Avalonia.Rendering.Composition.Transport;
+using Avalonia.Threading;
namespace Avalonia.Rendering.Composition;
public sealed class CompositionCustomVisual : CompositionContainerVisual
{
+ private static readonly ThreadSafeObjectPool> s_messageListPool = new();
private List? _messages;
internal CompositionCustomVisual(Compositor compositor, CompositionCustomVisualHandler handler)
@@ -17,21 +20,26 @@ public sealed class CompositionCustomVisual : CompositionContainerVisual
public void SendHandlerMessage(object message)
{
- (_messages ??= new()).Add(message);
- RegisterForSerialization();
+ if (_messages == null)
+ {
+ _messages = s_messageListPool.Get();
+ Compositor.RequestCompositionUpdate(OnCompositionUpdate);
+ }
+ _messages.Add(message);
}
- private protected override void SerializeChangesCore(BatchStreamWriter writer)
+ private void OnCompositionUpdate()
{
- base.SerializeChangesCore(writer);
- if (_messages == null || _messages.Count == 0)
- writer.Write(0);
- else
+ if(_messages == null)
+ return;
+
+ var messages = _messages;
+ _messages = null;
+ Compositor.PostServerJob(()=>
{
- writer.Write(_messages.Count);
- foreach (var m in _messages)
- writer.WriteObject(m);
- _messages.Clear();
- }
+ ((ServerCompositionCustomVisual)Server).DispatchMessages(messages);
+ messages.Clear();
+ s_messageListPool.ReturnAndSetNull(ref messages);
+ });
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisualHandler.cs b/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisualHandler.cs
index 598d4163d1..8cf4cca0a5 100644
--- a/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisualHandler.cs
+++ b/src/Avalonia.Base/Rendering/Composition/CompositionCustomVisualHandler.cs
@@ -1,5 +1,7 @@
using System;
+using System.Collections.Generic;
using System.Numerics;
+using Avalonia.Collections.Pooled;
using Avalonia.Media;
using Avalonia.Rendering.Composition.Server;
@@ -8,6 +10,8 @@ namespace Avalonia.Rendering.Composition;
public abstract class CompositionCustomVisualHandler
{
private ServerCompositionCustomVisual? _host;
+ private bool _inRender;
+ private Rect _currentTransformedClip;
public virtual void OnMessage(object message)
{
@@ -18,7 +22,21 @@ public abstract class CompositionCustomVisualHandler
{
}
-
+
+ internal void Render(ImmediateDrawingContext drawingContext, Rect currentTransformedClip)
+ {
+ _inRender = true;
+ _currentTransformedClip = currentTransformedClip;
+ try
+ {
+ OnRender(drawingContext);
+ }
+ finally
+ {
+ _inRender = false;
+ }
+ }
+
public abstract void OnRender(ImmediateDrawingContext drawingContext);
void VerifyAccess()
@@ -28,6 +46,13 @@ public abstract class CompositionCustomVisualHandler
_host.Compositor.VerifyAccess();
}
+ void VerifyInRender()
+ {
+ VerifyAccess();
+ if (!_inRender)
+ throw new InvalidOperationException("This API is only available from OnRender");
+ }
+
protected Vector EffectiveSize
{
get
@@ -57,9 +82,29 @@ public abstract class CompositionCustomVisualHandler
_host!.HandlerInvalidate();
}
+ protected void Invalidate(Rect rc)
+ {
+ VerifyAccess();
+ _host!.HandlerInvalidate(rc);
+ }
+
protected void RegisterForNextAnimationFrameUpdate()
{
VerifyAccess();
_host!.HandlerRegisterForNextAnimationFrameUpdate();
}
+
+ protected bool RenderClipContains(Point pt)
+ {
+ VerifyInRender();
+ pt *= _host!.GlobalTransformMatrix;
+ return _currentTransformedClip.Contains(pt) && _host.Root!.DirtyRects.Contains(pt);
+ }
+
+ protected bool RenderClipIntersectes(Rect rc)
+ {
+ VerifyInRender();
+ rc = rc.TransformToAABB(_host!.GlobalTransformMatrix);
+ return _currentTransformedClip.Intersects(rc) && _host.Root!.DirtyRects.Intersects(new (rc));
+ }
}
diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionOptions.cs b/src/Avalonia.Base/Rendering/Composition/CompositionOptions.cs
new file mode 100644
index 0000000000..ad40a2abed
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/CompositionOptions.cs
@@ -0,0 +1,16 @@
+namespace Avalonia.Rendering.Composition;
+
+public class CompositionOptions
+{
+ ///
+ /// Enables more accurate tracking of dirty rects by utilizing regions if supported by the underlying
+ /// drawing context
+ ///
+ public bool? UseRegionDirtyRectClipping { get; set; }
+ ///
+ /// Enforces dirty contents to be rendered into an extra intermediate surface before being applied onto the
+ /// saved frame.
+ /// Required as a workaround for Skia bug https://issues.skia.org/issues/327877721
+ ///
+ public bool? UseSaveLayerRootClip { get; set; }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs
index 8ffdd649d5..f00eef0d10 100644
--- a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs
+++ b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs
@@ -29,6 +29,7 @@ namespace Avalonia.Rendering.Composition
///
public PooledList? TryHitTest(Point point, CompositionVisual? root, Func? filter)
{
+ point *= Scaling;
Server.Readback.NextRead();
root ??= Root;
if (root == null)
diff --git a/src/Avalonia.Base/Rendering/Composition/Compositor.cs b/src/Avalonia.Base/Rendering/Composition/Compositor.cs
index 24817d7865..48553d3b91 100644
--- a/src/Avalonia.Base/Rendering/Composition/Compositor.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Compositor.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Avalonia.Animation;
using Avalonia.Animation.Easings;
+using Avalonia.Controls;
using Avalonia.Media;
using Avalonia.Metadata;
using Avalonia.Platform;
@@ -76,14 +77,15 @@ namespace Avalonia.Rendering.Composition
internal Compositor(IRenderLoop loop, IPlatformGraphics? gpu,
bool useUiThreadForSynchronousCommits,
ICompositorScheduler scheduler, bool reclaimBuffersImmediately,
- Dispatcher dispatcher)
+ Dispatcher dispatcher, CompositionOptions? options = null)
{
+ options ??= AvaloniaLocator.Current.GetService() ?? new();
Loop = loop;
UseUiThreadForSynchronousCommits = useUiThreadForSynchronousCommits;
Dispatcher = dispatcher;
_batchMemoryPool = new(reclaimBuffersImmediately);
_batchObjectPool = new(reclaimBuffersImmediately);
- _server = new ServerCompositor(loop, gpu, _batchObjectPool, _batchMemoryPool);
+ _server = new ServerCompositor(loop, gpu, options, _batchObjectPool, _batchMemoryPool);
_triggerCommitRequested = () => scheduler.CommitRequested(this);
DefaultEasing = new SplineEasing(new KeySpline(0.25, 0.1, 0.25, 1.0));
@@ -256,33 +258,56 @@ namespace Avalonia.Rendering.Composition
return tcs.Task;
}
+ internal ValueTask> GetRenderInterfacePublicFeatures()
+ {
+ if (Server.AT_TryGetCachedRenderInterfaceFeatures() is { } rv)
+ return new(rv);
+ if (!Loop.RunsInBackground)
+ return new(Server.RT_GetRenderInterfaceFeatures());
+ return new(InvokeServerJobAsync(Server.RT_GetRenderInterfaceFeatures));
+ }
+
///
/// Attempts to query for a feature from the platform render interface
///
- public ValueTask TryGetRenderInterfaceFeature(Type featureType) =>
- new(InvokeServerJobAsync(() =>
- {
- using (Server.RenderInterface.EnsureCurrent())
- {
- return Server.RenderInterface.Value.TryGetFeature(featureType);
- }
- }));
+ public async ValueTask TryGetRenderInterfaceFeature(Type featureType)
+ {
+ (await GetRenderInterfacePublicFeatures().ConfigureAwait(false)).TryGetValue(featureType, out var rv);
+ return rv;
+ }
+
+ ///
+ /// Attempts to query for GPU interop feature from the platform render interface
+ ///
+ ///
+ public async ValueTask TryGetCompositionGpuInterop()
+ {
+ var externalObjects =
+ (IExternalObjectsRenderInterfaceContextFeature?)await TryGetRenderInterfaceFeature(
+ typeof(IExternalObjectsRenderInterfaceContextFeature)).ConfigureAwait(false);
- public ValueTask TryGetCompositionGpuInterop() =>
- new(InvokeServerJobAsync(() =>
- {
- using (Server.RenderInterface.EnsureCurrent())
- {
- var feature = Server.RenderInterface.Value
- .TryGetFeature();
- if (feature == null)
- return null;
- return new CompositionInterop(this, feature);
- }
- }));
+ if (externalObjects == null)
+ return null;
+ return new CompositionInterop(this, externalObjects);
+ }
internal bool UnitTestIsRegisteredForSerialization(ICompositorSerializable serializable) =>
_objectSerializationHashSet.Contains(serializable);
+
+ ///
+ /// Attempts to get the Compositor instance that will be used by default for new TopLevels
+ /// created by the current platform backend.
+ ///
+ /// This won't work for every single platform backend and backend settings, e. g. with web we'll need to have
+ /// separate Compositor instances per output HTML canvas since they don't share OpenGL state.
+ /// Another case where default compositor won't be available is our planned multithreaded rendering mode
+ /// where each window would get its own Compositor instance
+ ///
+ /// This method is still useful for obtaining GPU device LUID to speed up initialization, but you should
+ /// always check if default Compositor matches one used by our control once it gets attached to a TopLevel
+ ///
+ ///
+ public static Compositor? TryGetDefaultCompositor() => AvaloniaLocator.Current.GetService();
}
internal interface ICompositorScheduler
diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs
index 22a871a98b..4a46b07294 100644
--- a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs
@@ -19,7 +19,7 @@ internal class CompositionRenderDataSceneBrushContent : ISceneBrushContent
}
public ITileBrush Brush { get; }
- public Rect Rect => _rect ?? (RenderData.Server?.Bounds ?? default);
+ public Rect Rect => _rect ?? (RenderData.Server?.Bounds?.ToRect() ?? default);
public double Opacity => Brush.Opacity;
public ITransform? Transform => Brush.Transform;
diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs
index 44c8f66bb3..ac0a5c4cb7 100644
--- a/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Drawing/Nodes/RenderDataNodes.cs
@@ -78,13 +78,19 @@ interface IRenderDataItem
bool HitTest(Point p);
}
-class RenderDataCustomNode : IRenderDataItem
+class RenderDataCustomNode : IRenderDataItem, IDisposable
{
public ICustomDrawOperation? Operation { get; set; }
public bool HitTest(Point p) => Operation?.HitTest(p) ?? false;
public void Invoke(ref RenderDataNodeRenderContext context) => Operation?.Render(new(context.Context, false));
public Rect? Bounds => Operation?.Bounds;
+
+ public void Dispose()
+ {
+ Operation?.Dispose();
+ Operation = null;
+ }
}
abstract class RenderDataPushNode : IRenderDataItem, IDisposable
@@ -130,8 +136,8 @@ abstract class RenderDataPushNode : IRenderDataItem, IDisposable
if (Children.Count > 0)
{
foreach(var ch in Children)
- if (ch is RenderDataPushNode node)
- node.Dispose();
+ if (ch is IDisposable disposable)
+ disposable.Dispose();
Children.Dispose();
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionRenderData.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionRenderData.cs
index 97083ccaf5..3745fb54d8 100644
--- a/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionRenderData.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Drawing/ServerCompositionRenderData.cs
@@ -14,7 +14,7 @@ class ServerCompositionRenderData : SimpleServerRenderResource
{
private PooledInlineList _items;
private PooledInlineList _referencedResources;
- private Rect? _bounds;
+ private LtrbRect? _bounds;
private bool _boundsValid;
private static readonly ThreadSafeObjectPool s_resourceHashSetPool = new();
@@ -67,7 +67,7 @@ class ServerCompositionRenderData : SimpleServerRenderResource
}
}
- public Rect? Bounds
+ public LtrbRect? Bounds
{
get
{
@@ -80,25 +80,31 @@ class ServerCompositionRenderData : SimpleServerRenderResource
}
}
- private Rect? CalculateRenderBounds()
+ private LtrbRect? CalculateRenderBounds()
{
- Rect? totalBounds = null;
+ LtrbRect? totalBounds = null;
foreach (var item in _items)
- totalBounds = Rect.Union(totalBounds, item.Bounds);
+ totalBounds = LtrbRect.FullUnion(totalBounds, item.Bounds);
return ApplyRenderBoundsRounding(totalBounds);
}
public static Rect? ApplyRenderBoundsRounding(Rect? rect)
+ {
+ if (rect == null)
+ return null;
+ return ApplyRenderBoundsRounding(new LtrbRect(rect.Value))?.ToRect();
+ }
+
+ public static LtrbRect? ApplyRenderBoundsRounding(LtrbRect? rect)
{
if (rect != null)
{
var r = rect.Value;
// I don't believe that it's correct to do here (rather than in CompositionVisual),
// but it's the old behavior, so I'm keeping it for now
- return new Rect(
- new Point(Math.Floor(r.X), Math.Floor(r.Y)),
- new Point(Math.Ceiling(r.Right), Math.Ceiling(r.Bottom)));
+ return new LtrbRect(Math.Floor(r.Left), Math.Floor(r.Top),
+ Math.Ceiling(r.Right), Math.Ceiling(r.Bottom));
}
return null;
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/CompositionProperty.cs b/src/Avalonia.Base/Rendering/Composition/Server/CompositionProperty.cs
index c6ff722778..180c717803 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/CompositionProperty.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/CompositionProperty.cs
@@ -1,15 +1,115 @@
+using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading;
+using Avalonia.Rendering.Composition.Expressions;
namespace Avalonia.Rendering.Composition.Server;
internal class CompositionProperty
{
- private static volatile int s_NextId = 1;
- public int Id { get; private set; }
+ private static int s_nextId = 1;
+ private static readonly object _lock = new();
- public static CompositionProperty Register() => new()
+ private static Dictionary> s_dynamicRegistry = new();
+
+ class ReadOnlyRegistry : Dictionary>
+ {
+
+ }
+
+ private static volatile ReadOnlyRegistry? s_ReadOnlyRegistry;
+
+ public CompositionProperty(int id, string name, Type owner, Func? getVariant)
+ {
+ Id = id;
+ Name = name;
+ Owner = owner;
+ GetVariant = getVariant;
+ }
+
+ public int Id { get; }
+ public string Name { get; }
+ public Type Owner { get; }
+ public Func? GetVariant { get; }
+
+ public static CompositionProperty Register(string name, Func getField, Action setField,
+ Func? getVariant)
+ {
+ CompositionProperty prop;
+ lock (_lock)
+ {
+ var id = s_nextId++;
+ prop = new CompositionProperty(id, name, typeof(TOwner), getField, setField, getVariant);
+ }
+
+ s_ReadOnlyRegistry = null;
+ return prop;
+ }
+
+ static void PopulatePropertiesForType(Type type, List l)
{
- Id = Interlocked.Increment(ref s_NextId)
- };
+ Type? t = type;
+ while (t != null && t != typeof(object))
+ {
+ if (s_dynamicRegistry.TryGetValue(t, out var lst))
+ l.AddRange(lst);
+ t = t.BaseType;
+ }
+ }
+
+ static ReadOnlyRegistry Build()
+ {
+ var reg = new ReadOnlyRegistry();
+ foreach (var type in s_dynamicRegistry.Keys)
+ {
+ var lst = new List();
+ PopulatePropertiesForType(type, lst);
+ reg[type] = lst.ToDictionary(x => x.Name);
+ }
+
+ return reg;
+ }
+
+ public static IReadOnlyDictionary? TryGetPropertiesForType(Type t)
+ {
+ GetRegistry().TryGetValue(t, out var rv);
+ return rv;
+ }
+
+ public static CompositionProperty? Find(Type owner, string name)
+ {
+ if (TryGetPropertiesForType(owner)?.TryGetValue(name, out var prop) == true)
+ return prop;
+ return null;
+ }
+
+ static ReadOnlyRegistry GetRegistry()
+ {
+ var reg = s_ReadOnlyRegistry;
+ if (reg != null)
+ return reg;
+ lock (_lock)
+ {
+ // ReSharper disable once NonAtomicCompoundOperator
+ // This is the only line ever that would set the field to a not-null value, and we are inside of a lock
+ return s_ReadOnlyRegistry ??= Build();
+ }
+ }
}
+
+internal class CompositionProperty : CompositionProperty
+{
+ public Func GetField { get; }
+ public Action SetField { get; }
+
+ public CompositionProperty(int id, string name, Type owner,
+ Func getField,
+ Action setField,
+ Func? getVariant)
+ : base(id, name, owner, getVariant)
+ {
+ GetField = getField;
+ SetField = setField;
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/CompositionTargetOverlays.cs b/src/Avalonia.Base/Rendering/Composition/Server/CompositionTargetOverlays.cs
new file mode 100644
index 0000000000..7038e9cd46
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/CompositionTargetOverlays.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Diagnostics;
+using Avalonia.Media;
+using Avalonia.Media.Immutable;
+using Avalonia.Platform;
+using Avalonia.Utilities;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal class CompositionTargetOverlays
+{
+ private FpsCounter? _fpsCounter;
+ private FrameTimeGraph? _renderTimeGraph;
+ private FrameTimeGraph? _updateTimeGraph;
+ private FrameTimeGraph? _layoutTimeGraph;
+ private Rect? _oldFpsCounterRect;
+ private long _updateStarted;
+ private readonly ServerCompositionTarget _target;
+ private readonly DiagnosticTextRenderer? _diagnosticTextRenderer;
+
+ public CompositionTargetOverlays(
+ ServerCompositionTarget target,
+ DiagnosticTextRenderer? diagnosticTextRenderer)
+ {
+ _target = target;
+ _diagnosticTextRenderer = diagnosticTextRenderer;
+ }
+
+ private RendererDebugOverlays DebugOverlays { get; set; }
+
+ private FpsCounter? FpsCounter
+ => _fpsCounter ??= _diagnosticTextRenderer != null ? new FpsCounter(_diagnosticTextRenderer) : null;
+
+ private FrameTimeGraph? LayoutTimeGraph
+ => _layoutTimeGraph ??= CreateTimeGraph("Layout");
+
+ private FrameTimeGraph? RenderTimeGraph
+ => _renderTimeGraph ??= CreateTimeGraph("Render");
+
+ private FrameTimeGraph? UpdateTimeGraph
+ => _updateTimeGraph ??= CreateTimeGraph("RUpdate");
+
+
+
+ public bool RequireLayer => DebugOverlays.HasAnyFlag(RendererDebugOverlays.DirtyRects);
+
+ private FrameTimeGraph? CreateTimeGraph(string title)
+ {
+ if (_diagnosticTextRenderer == null)
+ return null;
+ return new FrameTimeGraph(360, new Size(360.0, 64.0), 1000.0 / 60.0, title, _diagnosticTextRenderer);
+ }
+
+
+ public void OnChanged(RendererDebugOverlays debugOverlays)
+ {
+ DebugOverlays = debugOverlays;
+ _oldFpsCounterRect = null;
+ if ((DebugOverlays & RendererDebugOverlays.Fps) == 0)
+ {
+ _fpsCounter?.Reset();
+ }
+
+ if ((DebugOverlays & RendererDebugOverlays.LayoutTimeGraph) == 0)
+ {
+ _layoutTimeGraph?.Reset();
+ }
+
+ if ((DebugOverlays & RendererDebugOverlays.RenderTimeGraph) == 0)
+ {
+ _renderTimeGraph?.Reset();
+ }
+ }
+
+
+ private bool CaptureTiming => (DebugOverlays & RendererDebugOverlays.RenderTimeGraph) != 0;
+
+ public void Draw(IDrawingContextImpl targetContext, bool hasLayer)
+ {
+ if (DebugOverlays != RendererDebugOverlays.None)
+ {
+ if (CaptureTiming)
+ {
+ var elapsed = StopwatchHelper.GetElapsedTime(_updateStarted);
+ RenderTimeGraph?.AddFrameValue(elapsed.TotalMilliseconds);
+ }
+
+
+
+ if (DebugOverlays.HasFlag(RendererDebugOverlays.DirtyRects))
+ _target.DirtyRects.Visualize(targetContext);
+
+ targetContext.Transform = Matrix.CreateScale(_target.Scaling, _target.Scaling);
+
+ using (var immediate = new ImmediateDrawingContext(targetContext, false))
+ DrawOverlays(immediate, hasLayer, _target.PixelSize.ToSize(_target.Scaling));
+ }
+ }
+
+ public void MarkUpdateCallStart()
+ {
+ if (CaptureTiming)
+ _updateStarted = CaptureTiming ? Stopwatch.GetTimestamp() : 0L;
+ }
+
+ public void MarkUpdateCallEnd()
+ {
+ if (CaptureTiming)
+ UpdateTimeGraph?.AddFrameValue(StopwatchHelper.GetElapsedTime(_updateStarted).TotalMilliseconds);
+ }
+
+ private void DrawOverlays(ImmediateDrawingContext targetContext, bool hasLayer, Size logicalSize)
+ {
+ if (DebugOverlays.HasFlag(RendererDebugOverlays.Fps))
+ {
+ var nativeMem = ByteSizeHelper.ToString((ulong)(
+ (_target.Compositor.BatchMemoryPool.CurrentUsage + _target.Compositor.BatchMemoryPool.CurrentPool) *
+ _target.Compositor.BatchMemoryPool.BufferSize), false);
+ var managedMem = ByteSizeHelper.ToString((ulong)(
+ (_target.Compositor.BatchObjectPool.CurrentUsage + _target.Compositor.BatchObjectPool.CurrentPool) *
+ _target.Compositor.BatchObjectPool.ArraySize *
+ IntPtr.Size), false);
+
+ _oldFpsCounterRect = FpsCounter?.RenderFps(targetContext,
+ FormattableString.Invariant($"M:{managedMem} / N:{nativeMem} R:{_target.RenderedVisuals:0000}"),
+ hasLayer, _oldFpsCounterRect);
+ }
+
+ var top = 0.0;
+
+ void DrawTimeGraph(FrameTimeGraph? graph)
+ {
+ if (graph == null)
+ return;
+ var left = logicalSize.Width - graph.Size.Width - 8.0;
+ top += 8.0;
+ if (!hasLayer)
+ targetContext.FillRectangle(Brushes.White, new Rect(left, top, graph.Size.Width, graph.Size.Height));
+ using (targetContext.PushSetTransform(Matrix.CreateTranslation(left, top)))
+ graph.Render(targetContext);
+ top += graph.Size.Height;
+ }
+
+ if (DebugOverlays.HasFlag(RendererDebugOverlays.LayoutTimeGraph))
+ DrawTimeGraph(LayoutTimeGraph);
+
+ if (DebugOverlays.HasFlag(RendererDebugOverlays.RenderTimeGraph))
+ {
+ DrawTimeGraph(RenderTimeGraph);
+ DrawTimeGraph(UpdateTimeGraph);
+ }
+ }
+
+
+ public void OnLastLayoutPassTimingChanged(LayoutPassTiming lastLayoutPassTiming)
+ {
+ if ((DebugOverlays & RendererDebugOverlays.LayoutTimeGraph) != 0)
+ {
+ LayoutTimeGraph?.AddFrameValue(lastLayoutPassTiming.Elapsed.TotalMilliseconds);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DiagnosticTextRenderer.cs b/src/Avalonia.Base/Rendering/Composition/Server/DiagnosticTextRenderer.cs
index 138b791019..986692176b 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/DiagnosticTextRenderer.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/DiagnosticTextRenderer.cs
@@ -58,21 +58,19 @@ namespace Avalonia.Rendering.Composition.Server
return new Size(width, height);
}
- public void DrawAsciiText(IDrawingContextImpl context, ReadOnlySpan text, IBrush foreground)
+ public void DrawAsciiText(ImmediateDrawingContext context, ReadOnlySpan text, IImmutableBrush foreground)
{
var offset = 0.0;
- var originalTransform = context.Transform;
foreach (var c in text)
{
var effectiveChar = c is >= FirstChar and <= LastChar ? c : ' ';
var run = _runs[effectiveChar - FirstChar];
- context.Transform = originalTransform * Matrix.CreateTranslation(offset, 0.0);
- context.DrawGlyphRun(foreground, run.PlatformImpl.Item);
+ using (context.PushPreTransform(Matrix.CreateTranslation(offset, 0.0)))
+ context.PlatformImpl.DrawGlyphRun(foreground, run.PlatformImpl.Item);
offset += run.Bounds.Width;
}
- context.Transform = originalTransform;
}
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DirtyRectTracker.cs b/src/Avalonia.Base/Rendering/Composition/Server/DirtyRectTracker.cs
new file mode 100644
index 0000000000..0861384c2f
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/DirtyRectTracker.cs
@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+using Avalonia.Media;
+using Avalonia.Media.Immutable;
+using Avalonia.Platform;
+using Avalonia.Reactive;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal interface IDirtyRectTracker
+{
+ void AddRect(LtrbPixelRect rect);
+ IDisposable BeginDraw(IDrawingContextImpl ctx);
+ bool IsEmpty { get; }
+ bool Intersects(LtrbRect rect);
+ bool Contains(Point pt);
+ void Reset();
+ void Visualize(IDrawingContextImpl context);
+ LtrbPixelRect CombinedRect { get; }
+ IList Rects { get; }
+}
+
+internal class DirtyRectTracker : IDirtyRectTracker
+{
+ private LtrbPixelRect _rect;
+ private Rect _doubleRect;
+ private LtrbRect _normalRect;
+ private LtrbPixelRect[] _rectsForApi = new LtrbPixelRect[1];
+ private Random _random = new();
+ public void AddRect(LtrbPixelRect rect)
+ {
+ _rect = _rect.Union(rect);
+ }
+
+ public IDisposable BeginDraw(IDrawingContextImpl ctx)
+ {
+ ctx.PushClip(_rect.ToRectWithNoScaling());
+ _doubleRect = _rect.ToRectWithNoScaling();
+ _normalRect = new(_doubleRect);
+ return Disposable.Create(ctx.PopClip);
+ }
+
+ public bool IsEmpty => _rect.IsEmpty;
+ public bool Intersects(LtrbRect rect) => _normalRect.Intersects(rect);
+ public bool Contains(Point pt) => _rect.Contains((int)pt.X, (int)pt.Y);
+
+ public void Reset() => _rect = default;
+ public void Visualize(IDrawingContextImpl context)
+ {
+ context.DrawRectangle(
+ new ImmutableSolidColorBrush(
+ new Color(30, (byte)_random.Next(255), (byte)_random.Next(255), (byte)_random.Next(255))),
+ null, _doubleRect);
+ }
+
+ public LtrbPixelRect CombinedRect => _rect;
+
+ public IList Rects
+ {
+ get
+ {
+ if (_rect.IsEmpty)
+ return Array.Empty();
+ _rectsForApi[0] = _rect;
+ return _rectsForApi;
+ }
+ }
+}
+
+internal class RegionDirtyRectTracker : IDirtyRectTracker
+{
+ private readonly IPlatformRenderInterfaceRegion _region;
+ private Random _random = new();
+
+ public RegionDirtyRectTracker(IPlatformRenderInterface platformRender)
+ {
+ _region = platformRender.CreateRegion();
+ }
+
+ public void AddRect(LtrbPixelRect rect) => _region.AddRect(rect);
+
+ public IDisposable BeginDraw(IDrawingContextImpl ctx)
+ {
+ ctx.PushClip(_region);
+ return Disposable.Create(ctx.PopClip);
+ }
+
+ public bool IsEmpty => _region.IsEmpty;
+ public bool Intersects(LtrbRect rect) => _region.Intersects(rect);
+ public bool Contains(Point pt) => _region.Contains(pt);
+
+ public void Reset() => _region.Reset();
+
+ public void Visualize(IDrawingContextImpl context)
+ {
+ context.DrawRegion(
+ new ImmutableSolidColorBrush(
+ new Color(150, (byte)_random.Next(255), (byte)_random.Next(255), (byte)_random.Next(255))),
+ null, _region);
+ }
+
+ public LtrbPixelRect CombinedRect => _region.Bounds;
+ public IList Rects => _region.Rects;
+}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.PendingCommands.cs b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.PendingCommands.cs
new file mode 100644
index 0000000000..bbf648d71f
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.PendingCommands.cs
@@ -0,0 +1,152 @@
+using System;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using Avalonia.Collections.Pooled;
+using Avalonia.Media;
+using Avalonia.Platform;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal partial class CompositorDrawingContextProxy
+{
+
+ private PooledList _commands = new();
+ private bool _autoFlush;
+
+
+ enum PendingCommandType
+ {
+ SetTransform,
+ PushClip,
+ PushOpacity,
+ PushOpacityMask,
+ PushGeometryClip,
+ PushRenderOptions,
+ PushEffect
+ }
+
+ [StructLayout(LayoutKind.Explicit)]
+ struct PendingCommandObjectUnion
+ {
+ [FieldOffset(0)] public IEffect? Effect;
+ [FieldOffset(0)] public IBrush? Mask;
+ [FieldOffset(0)] public IGeometryImpl? Clip;
+ }
+
+ [StructLayout(LayoutKind.Explicit)]
+ struct PendingCommandDataUnion
+ {
+ // PushOpacity
+ [FieldOffset(0)] public double Opacity;
+ [FieldOffset(8)] public Rect? NullableOpacityRect;
+
+ [FieldOffset(0)] public Matrix Transform;
+
+ [FieldOffset(0)] public RenderOptions RenderOptions;
+
+ // PushClip/PushOpacityMask
+ [FieldOffset(0)] public bool IsRoundRect;
+ [FieldOffset(4)] public RoundedRect RoundRect;
+ [FieldOffset(4)] public Rect NormalRect;
+ }
+
+ struct PendingCommand
+ {
+ public PendingCommandType Type;
+ public PendingCommandObjectUnion ObjectUnion;
+ public PendingCommandDataUnion DataUnion;
+
+ }
+
+ public bool AutoFlush
+ {
+ get => _autoFlush;
+ set
+ {
+ _autoFlush = value;
+ if (value)
+ Flush();
+ }
+ }
+
+ public void SetTransform(Matrix m)
+ {
+ if (_autoFlush)
+ {
+ SetImplTransform(m);
+ return;
+ }
+ var cmd = new PendingCommand
+ {
+ Type = PendingCommandType.SetTransform,
+ DataUnion = { Transform = m }
+ };
+ if (_commands.Count > 0 && _commands[_commands.Count - 1].Type == PendingCommandType.SetTransform)
+ _commands[_commands.Count - 1] = cmd;
+ else
+ _commands.Add(cmd);
+ }
+
+
+ private bool TryDiscard(PendingCommandType type)
+ {
+ while (_commands.Count > 0 && _commands[_commands.Count - 1].Type == PendingCommandType.SetTransform)
+ _commands.RemoveAt(_commands.Count - 1);
+ if (_commands.Count == 0)
+ return false;
+ if (_commands[_commands.Count - 1].Type == type)
+ {
+ _commands.RemoveAt(_commands.Count - 1);
+ return true;
+ }
+
+ // Not sure how exactly can we get here, but flush commands just in case
+ Flush();
+ return false;
+ }
+
+ void AddCommand(PendingCommand command)
+ {
+ if(_autoFlush)
+ ExecCommand(ref command);
+ else
+ _commands.Add(command);
+ }
+
+ void ExecCommand(ref PendingCommand cmd)
+ {
+ if (cmd.Type == PendingCommandType.SetTransform)
+ SetImplTransform(cmd.DataUnion.Transform);
+ else if (cmd.Type == PendingCommandType.PushOpacity)
+ _impl.PushOpacity(cmd.DataUnion.Opacity, cmd.DataUnion.NullableOpacityRect);
+ else if (cmd.Type == PendingCommandType.PushOpacityMask)
+ _impl.PushOpacityMask(cmd.ObjectUnion.Mask!, cmd.DataUnion.NormalRect);
+ else if (cmd.Type == PendingCommandType.PushClip)
+ {
+ if (cmd.DataUnion.IsRoundRect)
+ _impl.PushClip(cmd.DataUnion.RoundRect);
+ else
+ _impl.PushClip(cmd.DataUnion.NormalRect);
+ }
+ else if (cmd.Type == PendingCommandType.PushGeometryClip)
+ _impl.PushGeometryClip(cmd.ObjectUnion.Clip!);
+ else if (cmd.Type == PendingCommandType.PushEffect)
+ {
+ if (_impl is IDrawingContextImplWithEffects effects)
+ effects.PushEffect(cmd.ObjectUnion.Effect!);
+ }
+ else if (cmd.Type == PendingCommandType.PushRenderOptions)
+ _impl.PushRenderOptions(cmd.DataUnion.RenderOptions);
+ else
+ Debug.Assert(false);
+ }
+
+ public void Flush()
+ {
+ var commands = _commands.AsSpan();
+ for (var index = 0; index < commands.Length; index++)
+ ExecCommand(ref commands[index]);
+
+ _commands.Clear();
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
index 59ee8f6556..75dc13b1e0 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs
@@ -11,13 +11,9 @@ using Avalonia.Utilities;
namespace Avalonia.Rendering.Composition.Server;
///
-/// A bunch of hacks to make the existing rendering operations and IDrawingContext
-/// to work with composition rendering infrastructure.
-/// 1) Keeps and applies the transform of the current visual since drawing operations think that
-/// they have information about the full render transform (they are not)
-/// 2) Keeps the draw list for the VisualBrush contents of the current drawing operation.
+
///
-internal class CompositorDrawingContextProxy : IDrawingContextImpl,
+internal partial class CompositorDrawingContextProxy : IDrawingContextImpl,
IDrawingContextWithAcrylicLikeSupport, IDrawingContextImplWithEffects
{
private readonly IDrawingContextImpl _impl;
@@ -27,131 +23,228 @@ internal class CompositorDrawingContextProxy : IDrawingContextImpl,
_impl = impl;
}
- public Matrix PostTransform { get; set; } = Matrix.Identity;
-
public void Dispose()
{
- _impl.Dispose();
+ Flush();
+ _commands.Dispose();
}
- Matrix _transform;
+ public Matrix? PostTransform { get; set; }
+ Matrix _transform;
+
public Matrix Transform
{
get => _transform;
- set => _impl.Transform = (_transform = value) * PostTransform;
+ set
+ {
+ _transform = value;
+ SetTransform(value);
+ }
}
- public RenderOptions RenderOptions
+ void SetImplTransform(Matrix m)
{
- get => _impl.RenderOptions;
- set => _impl.RenderOptions = value;
+ _transform = m;
+ if (PostTransform.HasValue)
+ m = m * PostTransform.Value;
+ _impl.Transform = m;
}
public void Clear(Color color)
{
+ Flush();
_impl.Clear(color);
}
public void DrawBitmap(IBitmapImpl source, double opacity, Rect sourceRect, Rect destRect)
{
+ Flush();
_impl.DrawBitmap(source, opacity, sourceRect, destRect);
}
public void DrawBitmap(IBitmapImpl source, IBrush opacityMask, Rect opacityMaskRect, Rect destRect)
{
+ Flush();
_impl.DrawBitmap(source, opacityMask, opacityMaskRect, destRect);
}
public void DrawLine(IPen? pen, Point p1, Point p2)
{
+ Flush();
_impl.DrawLine(pen, p1, p2);
}
public void DrawGeometry(IBrush? brush, IPen? pen, IGeometryImpl geometry)
{
+ Flush();
_impl.DrawGeometry(brush, pen, geometry);
}
public void DrawRectangle(IBrush? brush, IPen? pen, RoundedRect rect, BoxShadows boxShadows = default)
{
+ Flush();
_impl.DrawRectangle(brush, pen, rect, boxShadows);
}
+ public void DrawRegion(IBrush? brush, IPen? pen, IPlatformRenderInterfaceRegion region)
+ {
+ Flush();
+ _impl.DrawRegion(brush, pen, region);
+ }
+
public void DrawEllipse(IBrush? brush, IPen? pen, Rect rect)
{
+ Flush();
_impl.DrawEllipse(brush, pen, rect);
}
public void DrawGlyphRun(IBrush? foreground, IGlyphRunImpl glyphRun)
{
+ Flush();
_impl.DrawGlyphRun(foreground, glyphRun);
}
- public IDrawingContextLayerImpl CreateLayer(Size size)
+ public IDrawingContextLayerImpl CreateLayer(PixelSize size)
{
return _impl.CreateLayer(size);
}
public void PushClip(Rect clip)
{
- _impl.PushClip(clip);
+ AddCommand(new()
+ {
+ Type = PendingCommandType.PushClip,
+ DataUnion =
+ {
+ NormalRect = clip
+ }
+ });
}
public void PushClip(RoundedRect clip)
{
- _impl.PushClip(clip);
+ AddCommand(new()
+ {
+ Type = PendingCommandType.PushClip,
+ DataUnion =
+ {
+ IsRoundRect = true,
+ RoundRect = clip
+ }
+ });
+ }
+
+ public void PushClip(IPlatformRenderInterfaceRegion region)
+ {
+ Flush();
+ _impl.PushClip(region);
}
public void PopClip()
{
- _impl.PopClip();
+ if (!TryDiscard(PendingCommandType.PushClip))
+ _impl.PopClip();
}
- public void PushOpacity(double opacity, Rect? bounds)
+ public void PushLayer(Rect bounds)
{
- _impl.PushOpacity(opacity, bounds);
+ Flush();
+ _impl.PushLayer(bounds);
}
- public void PopOpacity()
+ public void PopLayer()
{
- _impl.PopOpacity();
+ Flush();
+ _impl.PopLayer();
}
- public void PushOpacityMask(IBrush mask, Rect bounds)
+ public void PushOpacity(double opacity, Rect? bounds)
{
- _impl.PushOpacityMask(mask, bounds);
+ AddCommand(new PendingCommand
+ {
+ Type = PendingCommandType.PushOpacity,
+ DataUnion =
+ {
+ Opacity = opacity,
+ NullableOpacityRect = bounds
+ }
+ });
}
- public void PushRenderOptions(RenderOptions renderOptions)
+ public void PopOpacity()
{
- _impl.PushRenderOptions(renderOptions);
+ if (!TryDiscard(PendingCommandType.PushOpacity))
+ _impl.PopOpacity();
+ }
+
+ public void PushOpacityMask(IBrush mask, Rect bounds)
+ {
+ AddCommand(new()
+ {
+ Type = PendingCommandType.PushOpacityMask,
+ DataUnion =
+ {
+ NormalRect = bounds
+ },
+ ObjectUnion =
+ {
+ Mask = mask
+ }
+ });
}
public void PopOpacityMask()
{
- _impl.PopOpacityMask();
+ if (!TryDiscard(PendingCommandType.PushOpacityMask))
+ _impl.PopOpacityMask();
}
public void PushGeometryClip(IGeometryImpl clip)
{
- _impl.PushGeometryClip(clip);
+ AddCommand(new PendingCommand
+ {
+ Type = PendingCommandType.PushGeometryClip,
+ ObjectUnion =
+ {
+ Clip = clip
+ }
+ });
}
public void PopGeometryClip()
{
- _impl.PopGeometryClip();
+ if (!TryDiscard(PendingCommandType.PushGeometryClip))
+ _impl.PopGeometryClip();
+ }
+
+ public void PushRenderOptions(RenderOptions renderOptions)
+ {
+ AddCommand(new()
+ {
+ Type = PendingCommandType.PushRenderOptions,
+ DataUnion =
+ {
+ RenderOptions = renderOptions
+ }
+ });
}
public void PopRenderOptions()
{
- _impl.PopRenderOptions();
+ if (!TryDiscard(PendingCommandType.PushRenderOptions))
+ _impl.PopRenderOptions();
+ }
+
+ public object? GetFeature(Type t)
+ {
+ Flush();
+ return _impl.GetFeature(t);
}
- public object? GetFeature(Type t) => _impl.GetFeature(t);
-
public void DrawRectangle(IExperimentalAcrylicMaterial material, RoundedRect rect)
{
+ Flush();
if (_impl is IDrawingContextWithAcrylicLikeSupport acrylic)
acrylic.DrawRectangle(material, rect);
else
@@ -160,13 +253,19 @@ internal class CompositorDrawingContextProxy : IDrawingContextImpl,
public void PushEffect(IEffect effect)
{
- if (_impl is IDrawingContextImplWithEffects effects)
- effects.PushEffect(effect);
+ AddCommand(new()
+ {
+ Type = PendingCommandType.PushEffect,
+ ObjectUnion =
+ {
+ Effect = effect
+ }
+ });
}
public void PopEffect()
{
- if (_impl is IDrawingContextImplWithEffects effects)
+ if (!TryDiscard(PendingCommandType.PushEffect) && _impl is IDrawingContextImplWithEffects effects)
effects.PopEffect();
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs b/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
index 00526eb4d1..c13e0d04ae 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/FpsCounter.cs
@@ -2,6 +2,7 @@ using System;
using System.Diagnostics;
using System.Globalization;
using Avalonia.Media;
+using Avalonia.Media.Immutable;
using Avalonia.Platform;
@@ -26,7 +27,7 @@ internal class FpsCounter
public void FpsTick()
=> _framesThisSecond++;
- public void RenderFps(IDrawingContextImpl context, string aux)
+ public Rect? RenderFps(ImmediateDrawingContext context, string aux, bool hasLayer, Rect? oldRect)
{
var now = _stopwatch.Elapsed;
var elapsed = now - _lastFpsUpdate;
@@ -48,11 +49,18 @@ internal class FpsCounter
#endif
var size = _textRenderer.MeasureAsciiText(fpsLine.AsSpan());
- var rect = new Rect(0.0, 0.0, size.Width + 3.0, size.Height + 3.0);
- context.DrawRectangle(Brushes.Black, null, rect);
+
+ var rect = new Rect(0.0, 0.0, size.Width + 3.0, size.Height + 3.0);
+ if (hasLayer && oldRect.HasValue)
+ rect = rect.Union(oldRect.Value);
+
+ var layerBr = new ImmutableSolidColorBrush(Colors.Black, 0.5);
+ context.DrawRectangle(hasLayer ? layerBr : Brushes.Black, null, rect);
_textRenderer.DrawAsciiText(context, fpsLine.AsSpan(), Brushes.White);
+ return rect;
+
}
public void Reset()
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/FrameTimeGraph.cs b/src/Avalonia.Base/Rendering/Composition/Server/FrameTimeGraph.cs
index d103b068a6..8e283ba5b1 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/FrameTimeGraph.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/FrameTimeGraph.cs
@@ -75,37 +75,32 @@ internal sealed class FrameTimeGraph
_frameCount = 0;
}
- public void Render(IDrawingContextImpl context)
+ public void Render(ImmediateDrawingContext context)
{
- var originalTransform = context.Transform;
- context.PushClip(new Rect(_size));
+ using var _ = context.PushClip(new Rect(_size));
- context.DrawRectangle(_borderBrush, null, new RoundedRect(new Rect(_size)));
- context.DrawRectangle(_borderBrush, null, new RoundedRect(new Rect(_headerSize)));
+ context.DrawRectangle(_borderBrush, null, new Rect(_size));
+ context.DrawRectangle(_borderBrush, null, new Rect(_headerSize));
- context.Transform = originalTransform * Matrix.CreateTranslation(HeaderPadding, HeaderPadding);
+ using var __ = context.PushPreTransform(Matrix.CreateTranslation(HeaderPadding, HeaderPadding));
_textRenderer.DrawAsciiText(context, _title.AsSpan(), Brushes.Black);
if (_frameCount > 0)
{
var (min, avg, max) = GetYValues();
- DrawLabelledValue(context, "Min", min, originalTransform, _headerSize.Width * 0.19);
- DrawLabelledValue(context, "Avg", avg, originalTransform, _headerSize.Width * 0.46);
- DrawLabelledValue(context, "Max", max, originalTransform, _headerSize.Width * 0.73);
+ DrawLabelledValue(context, "Min", min, _headerSize.Width * 0.19);
+ DrawLabelledValue(context, "Avg", avg, _headerSize.Width * 0.46);
+ DrawLabelledValue(context, "Max", max, _headerSize.Width * 0.73);
- context.Transform = originalTransform * Matrix.CreateTranslation(0.0, _headerSize.Height);
- context.DrawGeometry(null, _graphPen, BuildGraphGeometry(Math.Max(max, _defaultMaxY)));
+ using (context.PushPreTransform(Matrix.CreateTranslation(0.0, _headerSize.Height)))
+ context.PlatformImpl.DrawGeometry(null, _graphPen, BuildGraphGeometry(Math.Max(max, _defaultMaxY)));
}
-
- context.Transform = originalTransform;
- context.PopClip();
}
- private void DrawLabelledValue(IDrawingContextImpl context, string label, double value, in Matrix originalTransform,
- double left)
+ private void DrawLabelledValue(ImmediateDrawingContext context, string label, double value, double left)
{
- context.Transform = originalTransform * Matrix.CreateTranslation(left + HeaderPadding, HeaderPadding);
+ using var _ = context.PushPreTransform(Matrix.CreateTranslation(left + HeaderPadding, HeaderPadding));
var brush = value <= _defaultMaxY ? Brushes.Black : Brushes.Red;
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionContainerVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionContainerVisual.cs
index f2a777b4bd..6071d7a5f2 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionContainerVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionContainerVisual.cs
@@ -13,32 +13,33 @@ namespace Avalonia.Rendering.Composition.Server
internal partial class ServerCompositionContainerVisual : ServerCompositionVisual
{
public ServerCompositionVisualCollection Children { get; private set; } = null!;
- private Rect? _transformedContentBounds;
+ private LtrbRect? _transformedContentBounds;
private IImmutableEffect? _oldEffect;
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
- base.RenderCore(canvas, currentTransformedClip);
+ base.RenderCore(canvas, currentTransformedClip, dirtyRects);
foreach (var ch in Children)
{
- ch.Render(canvas, currentTransformedClip);
+ ch.Render(canvas, currentTransformedClip, dirtyRects);
}
}
- public override UpdateResult Update(ServerCompositionTarget root)
+ public override UpdateResult Update(ServerCompositionTarget root, Matrix parentCombinedTransform)
{
- var (combinedBounds, oldInvalidated, newInvalidated) = base.Update(root);
+ var (combinedBounds, oldInvalidated, newInvalidated) = base.Update(root, parentCombinedTransform);
foreach (var child in Children)
{
if (child.AdornedVisual != null)
root.EnqueueAdornerUpdate(child);
else
{
- var res = child.Update(root);
+ var res = child.Update(root, GlobalTransformMatrix);
oldInvalidated |= res.InvalidatedOld;
newInvalidated |= res.InvalidatedNew;
- combinedBounds = Rect.Union(combinedBounds, res.Bounds);
+ combinedBounds = LtrbRect.FullUnion(combinedBounds, res.Bounds);
}
}
@@ -62,7 +63,7 @@ namespace Avalonia.Rendering.Composition.Server
return new(_transformedContentBounds, oldInvalidated, newInvalidated);
}
- void AddEffectPaddedDirtyRect(IImmutableEffect effect, Rect transformedBounds)
+ void AddEffectPaddedDirtyRect(IImmutableEffect effect, LtrbRect transformedBounds)
{
var padding = effect.GetEffectOutputPadding();
if (padding == default)
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
index 5da8afd9cd..3adf028438 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionDrawListVisual.cs
@@ -27,7 +27,7 @@ internal class ServerCompositionDrawListVisual : ServerCompositionContainerVisua
#endif
}
- public override Rect OwnContentBounds => _renderCommands?.Bounds ?? default;
+ public override LtrbRect OwnContentBounds => _renderCommands?.Bounds ?? default;
protected override void DeserializeChangesCore(BatchStreamReader reader, TimeSpan committedAt)
{
@@ -40,13 +40,17 @@ internal class ServerCompositionDrawListVisual : ServerCompositionContainerVisua
base.DeserializeChangesCore(reader, committedAt);
}
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
- if (_renderCommands != null)
+ if (_renderCommands != null
+ && currentTransformedClip.Intersects(TransformedOwnContentBounds)
+ && dirtyRects.Intersects(TransformedOwnContentBounds))
{
_renderCommands.Render(canvas);
}
- base.RenderCore(canvas, currentTransformedClip);
+
+ base.RenderCore(canvas, currentTransformedClip, dirtyRects);
}
public void DependencyQueuedInvalidate(IServerRenderResource sender) => ValuesInvalidated();
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionExperimentalAcrylicVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionExperimentalAcrylicVisual.cs
index f0bcd7bc92..20acf87d84 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionExperimentalAcrylicVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionExperimentalAcrylicVisual.cs
@@ -5,7 +5,8 @@ namespace Avalonia.Rendering.Composition.Server;
internal partial class ServerCompositionExperimentalAcrylicVisual
{
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
var cornerRadius = CornerRadius;
canvas.DrawRectangle(
@@ -15,10 +16,10 @@ internal partial class ServerCompositionExperimentalAcrylicVisual
cornerRadius.TopLeft, cornerRadius.TopRight,
cornerRadius.BottomRight, cornerRadius.BottomLeft));
- base.RenderCore(canvas, currentTransformedClip);
+ base.RenderCore(canvas, currentTransformedClip, dirtyRects);
}
- public override Rect OwnContentBounds => new(0, 0, Size.X, Size.Y);
+ public override LtrbRect OwnContentBounds => new(0, 0, Size.X, Size.Y);
public ServerCompositionExperimentalAcrylicVisual(ServerCompositor compositor, Visual v) : base(compositor, v)
{
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSolidColorVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSolidColorVisual.cs
index 79abd7ee17..e38ae57c57 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSolidColorVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSolidColorVisual.cs
@@ -1,10 +1,12 @@
using Avalonia.Media.Immutable;
+using Avalonia.Platform;
namespace Avalonia.Rendering.Composition.Server;
internal partial class ServerCompositionSolidColorVisual
{
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
canvas.DrawRectangle(new ImmutableSolidColorBrush(Color), null, new Rect(0, 0, Size.X, Size.Y));
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSurfaceVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSurfaceVisual.cs
index e7e6875193..d4b1662bd9 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSurfaceVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionSurfaceVisual.cs
@@ -1,10 +1,12 @@
+using Avalonia.Platform;
using Avalonia.Utilities;
namespace Avalonia.Rendering.Composition.Server;
internal partial class ServerCompositionSurfaceVisual
{
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
if (Surface == null)
return;
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.DirtyRects.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.DirtyRects.cs
new file mode 100644
index 0000000000..d82502fc3c
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.DirtyRects.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using Avalonia.Collections.Pooled;
+using Avalonia.Platform;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal partial class ServerCompositionTarget
+{
+ public readonly IDirtyRectTracker DirtyRects;
+
+ static int Clamp0(int value, int max) => Math.Max(Math.Min(value, max), 0);
+
+ public void AddDirtyRect(LtrbRect rect)
+ {
+ if (rect.IsZeroSize)
+ return;
+
+ DebugEvents?.RectInvalidated(rect.ToRect());
+
+ var snapped = LtrbPixelRect.FromRectWithNoScaling(SnapToDevicePixels(rect, Scaling));
+
+ var clamped = new LtrbPixelRect(
+ Clamp0(snapped.Left, _pixelSize.Width),
+ Clamp0(snapped.Top, _pixelSize.Height),
+ Clamp0(snapped.Right, _pixelSize.Width),
+ Clamp0(snapped.Bottom, _pixelSize.Height)
+ );
+
+ if (!clamped.IsEmpty)
+ DirtyRects.AddRect(clamped);
+ _redrawRequested = true;
+ }
+
+ public Rect SnapToDevicePixels(Rect rect) => SnapToDevicePixels(new(rect), Scaling).ToRect();
+ public LtrbRect SnapToDevicePixels(LtrbRect rect) => SnapToDevicePixels(rect, Scaling);
+
+ private static LtrbRect SnapToDevicePixels(LtrbRect rect, double scale)
+ {
+ return new LtrbRect(
+ Math.Floor(rect.Left * scale) / scale,
+ Math.Floor(rect.Top * scale) / scale,
+ Math.Ceiling(rect.Right * scale) / scale,
+ Math.Ceiling(rect.Bottom * scale) / scale);
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
index d9c0e78169..a39b3ae03f 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
+using Avalonia.Collections.Pooled;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Media.Immutable;
@@ -19,17 +20,14 @@ namespace Avalonia.Rendering.Composition.Server
{
private readonly ServerCompositor _compositor;
private readonly Func> _surfaces;
- private readonly DiagnosticTextRenderer? _diagnosticTextRenderer;
+ private CompositionTargetOverlays _overlays;
private static long s_nextId = 1;
private IRenderTarget? _renderTarget;
- private FpsCounter? _fpsCounter;
- private FrameTimeGraph? _renderTimeGraph;
- private FrameTimeGraph? _layoutTimeGraph;
- private Rect _dirtyRect;
- private readonly Random _random = new();
- private Size _layerSize;
+ private PixelSize _layerSize;
private IDrawingContextLayerImpl? _layer;
+ private bool _updateRequested;
private bool _redrawRequested;
+ private bool _fullRedrawRequested;
private bool _disposed;
private readonly HashSet _attachedVisuals = new();
private readonly Queue _adornerUpdateQueue = new();
@@ -40,32 +38,21 @@ namespace Avalonia.Rendering.Composition.Server
public ReadbackIndices Readback { get; } = new();
public int RenderedVisuals { get; set; }
- private FpsCounter? FpsCounter
- => _fpsCounter ??= _diagnosticTextRenderer != null ? new FpsCounter(_diagnosticTextRenderer) : null;
-
- private FrameTimeGraph? LayoutTimeGraph
- => _layoutTimeGraph ??= CreateTimeGraph("Layout");
-
- private FrameTimeGraph? RenderTimeGraph
- => _renderTimeGraph ??= CreateTimeGraph("Render");
-
public ServerCompositionTarget(ServerCompositor compositor, Func> surfaces,
DiagnosticTextRenderer? diagnosticTextRenderer)
: base(compositor)
{
_compositor = compositor;
_surfaces = surfaces;
- _diagnosticTextRenderer = diagnosticTextRenderer;
+ _overlays = new CompositionTargetOverlays(this, diagnosticTextRenderer);
+ var platformRender = AvaloniaLocator.Current.GetService();
+ DirtyRects = compositor.Options.UseRegionDirtyRectClipping == true &&
+ platformRender?.SupportsRegions == true
+ ? new RegionDirtyRectTracker(platformRender)
+ : new DirtyRectTracker();
Id = Interlocked.Increment(ref s_nextId);
}
-
- private FrameTimeGraph? CreateTimeGraph(string title)
- {
- if (_diagnosticTextRenderer == null)
- return null;
- return new FrameTimeGraph(360, new Size(360.0, 64.0), 1000.0 / 60.0, title, _diagnosticTextRenderer);
- }
-
+
partial void OnIsEnabledChanged()
{
if (IsEnabled)
@@ -84,33 +71,16 @@ namespace Avalonia.Rendering.Composition.Server
partial void OnDebugOverlaysChanged()
{
- if ((DebugOverlays & RendererDebugOverlays.Fps) == 0)
- {
- _fpsCounter?.Reset();
- }
-
- if ((DebugOverlays & RendererDebugOverlays.LayoutTimeGraph) == 0)
- {
- _layoutTimeGraph?.Reset();
- }
-
- if ((DebugOverlays & RendererDebugOverlays.RenderTimeGraph) == 0)
- {
- _renderTimeGraph?.Reset();
- }
+ _fullRedrawRequested = true;
+ _overlays.OnChanged(DebugOverlays);
}
- partial void OnLastLayoutPassTimingChanged()
- {
- if ((DebugOverlays & RendererDebugOverlays.LayoutTimeGraph) != 0)
- {
- LayoutTimeGraph?.AddFrameValue(LastLayoutPassTiming.Elapsed.TotalMilliseconds);
- }
- }
+ partial void OnLastLayoutPassTimingChanged() => _overlays.OnLastLayoutPassTimingChanged(LastLayoutPassTiming);
partial void DeserializeChangesExtra(BatchStreamReader c)
{
_redrawRequested = true;
+ _fullRedrawRequested = true;
}
public void Render()
@@ -146,150 +116,113 @@ namespace Avalonia.Rendering.Composition.Server
return;
}
- if ((_dirtyRect.Width == 0 && _dirtyRect.Height == 0) && !_redrawRequested)
+ if (DirtyRects.IsEmpty && !_redrawRequested && !_updateRequested)
return;
Revision++;
- var captureTiming = (DebugOverlays & RendererDebugOverlays.RenderTimeGraph) != 0;
- var startingTimestamp = captureTiming ? Stopwatch.GetTimestamp() : 0L;
+ _overlays.MarkUpdateCallStart();
+ var transform = Matrix.CreateScale(Scaling, Scaling);
// Update happens in a separate phase to extend dirty rect if needed
- Root.Update(this);
+ Root.Update(this, transform);
while (_adornerUpdateQueue.Count > 0)
{
var adorner = _adornerUpdateQueue.Dequeue();
- adorner.Update(this);
+ adorner.Update(this, transform);
}
-
+
+ _updateRequested = false;
Readback.CompleteWrite(Revision);
+ _overlays.MarkUpdateCallEnd();
+
+ if (!_redrawRequested)
+ return;
_redrawRequested = false;
- using (var targetContext = _renderTarget.CreateDrawingContext())
+
+ var renderTargetWithProperties = _renderTarget as IRenderTargetWithProperties;
+
+
+ var needLayer = _overlays.RequireLayer // Check if we don't need overlays
+ // Check if render target can be rendered to directly and preserves the previous frame
+ || !(renderTargetWithProperties?.Properties.RetainsPreviousFrameContents == true
+ && renderTargetWithProperties?.Properties.IsSuitableForDirectRendering == true);
+
+ using (var renderTargetContext = _renderTarget.CreateDrawingContextWithProperties(false, out var properties))
{
- var size = Size;
- var layerSize = size * Scaling;
- if (layerSize != _layerSize || _layer == null || _layer.IsCorrupted)
+ if(needLayer && (PixelSize != _layerSize || _layer == null || _layer.IsCorrupted))
{
_layer?.Dispose();
_layer = null;
- _layer = targetContext.CreateLayer(size);
- _layerSize = layerSize;
- _dirtyRect = new Rect(0, 0, size.Width, size.Height);
+ _layer = renderTargetContext.CreateLayer(PixelSize);
+ _layerSize = PixelSize;
+ DirtyRects.AddRect(new LtrbPixelRect(_layerSize));
}
-
- if (_dirtyRect.Width != 0 || _dirtyRect.Height != 0)
+ else if (!needLayer)
{
- using (var context = _layer.CreateDrawingContext())
- {
- context.PushClip(_dirtyRect);
- context.Clear(Colors.Transparent);
- Root.Render(new CompositorDrawingContextProxy(context), _dirtyRect);
- context.PopClip();
- }
+ _layer?.Dispose();
+ _layer = null;
}
- targetContext.Clear(Colors.Transparent);
- targetContext.Transform = Matrix.Identity;
- if (_layer.CanBlit)
- _layer.Blit(targetContext);
- else
- targetContext.DrawBitmap(_layer, 1,
- new Rect(_layerSize),
- new Rect(size));
+ if (_fullRedrawRequested || (!needLayer && !properties.PreviousFrameIsRetained))
+ {
+ DirtyRects.AddRect(new LtrbPixelRect(_layerSize));
+ _fullRedrawRequested = false;
+ }
- if (DebugOverlays != RendererDebugOverlays.None)
+ if (!DirtyRects.IsEmpty)
{
- if (captureTiming)
+ if (_layer != null)
{
- var elapsed = StopwatchHelper.GetElapsedTime(startingTimestamp);
- RenderTimeGraph?.AddFrameValue(elapsed.TotalMilliseconds);
+ using (var context = _layer.CreateDrawingContext(false))
+ RenderRootToContextWithClip(context, Root);
+
+ renderTargetContext.Clear(Colors.Transparent);
+ renderTargetContext.Transform = Matrix.Identity;
+ if (_layer.CanBlit)
+ _layer.Blit(renderTargetContext);
+ else
+ {
+ var rect = new PixelRect(default, PixelSize).ToRect(1);
+ renderTargetContext.DrawBitmap(_layer, 1, rect, rect);
+ }
+ _overlays.Draw(renderTargetContext, true);
+ }
+ else
+ {
+ RenderRootToContextWithClip(renderTargetContext, Root);
+ _overlays.Draw(renderTargetContext, false);
}
-
- DrawOverlays(targetContext);
}
RenderedVisuals = 0;
- _dirtyRect = default;
+ DirtyRects.Reset();
}
}
- private void DrawOverlays(IDrawingContextImpl targetContext)
+ void RenderRootToContextWithClip(IDrawingContextImpl context, ServerCompositionVisual root)
{
- if ((DebugOverlays & RendererDebugOverlays.DirtyRects) != 0)
- {
- targetContext.DrawRectangle(
- new ImmutableSolidColorBrush(
- new Color(30, (byte)_random.Next(255), (byte)_random.Next(255), (byte)_random.Next(255))),
- null,
- _dirtyRect);
- }
-
- if ((DebugOverlays & RendererDebugOverlays.Fps) != 0)
+ var useLayerClip = Compositor.Options.UseSaveLayerRootClip ??
+ Compositor.RenderInterface.GpuContext != null;
+
+ using (DirtyRects.BeginDraw(context))
{
- var nativeMem = ByteSizeHelper.ToString((ulong) (
- (Compositor.BatchMemoryPool.CurrentUsage + Compositor.BatchMemoryPool.CurrentPool) *
- Compositor.BatchMemoryPool.BufferSize), false);
- var managedMem = ByteSizeHelper.ToString((ulong) (
- (Compositor.BatchObjectPool.CurrentUsage + Compositor.BatchObjectPool.CurrentPool) *
- Compositor.BatchObjectPool.ArraySize *
- IntPtr.Size), false);
- FpsCounter?.RenderFps(targetContext,
- FormattableString.Invariant($"M:{managedMem} / N:{nativeMem} R:{RenderedVisuals:0000}"));
- }
+ context.Clear(Colors.Transparent);
+ if (useLayerClip)
+ context.PushLayer(DirtyRects.CombinedRect.ToRectUnscaled());
- var top = 0.0;
+ using (var proxy = new CompositorDrawingContextProxy(context))
+ root.Render(proxy, null, DirtyRects);
- void DrawTimeGraph(FrameTimeGraph? graph)
- {
- if (graph == null)
- return;
- top += 8.0;
- targetContext.Transform = Matrix.CreateTranslation(Size.Width - graph.Size.Width - 8.0, top);
- graph.Render(targetContext);
- top += graph.Size.Height;
- }
-
- if ((DebugOverlays & RendererDebugOverlays.LayoutTimeGraph) != 0)
- {
- DrawTimeGraph(LayoutTimeGraph);
+ if (useLayerClip)
+ context.PopLayer();
}
-
- if ((DebugOverlays & RendererDebugOverlays.RenderTimeGraph) != 0)
- {
- DrawTimeGraph(RenderTimeGraph);
- }
- }
-
- public Rect SnapToDevicePixels(Rect rect) => SnapToDevicePixels(rect, Scaling);
-
- private static Rect SnapToDevicePixels(Rect rect, double scale)
- {
- return new Rect(
- new Point(
- Math.Floor(rect.X * scale) / scale,
- Math.Floor(rect.Y * scale) / scale),
- new Point(
- Math.Ceiling(rect.Right * scale) / scale,
- Math.Ceiling(rect.Bottom * scale) / scale));
}
- public void AddDirtyRect(Rect rect)
- {
- if (rect.Width == 0 && rect.Height == 0)
- return;
- var snapped = SnapToDevicePixels(rect, Scaling);
- DebugEvents?.RectInvalidated(rect);
- _dirtyRect = _dirtyRect.Union(snapped);
- _redrawRequested = true;
- }
-
- public void Invalidate()
- {
- _redrawRequested = true;
- }
+ public void RequestUpdate() => _updateRequested = true;
public void Dispose()
{
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.DirtyProperties.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.DirtyProperties.cs
index 51414c2250..9d17756f2b 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.DirtyProperties.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.DirtyProperties.cs
@@ -14,7 +14,8 @@ partial class ServerCompositionVisual
| CompositionVisualChangedFields.ClipToBounds
| CompositionVisualChangedFields.ClipToBoundsAnimated
| CompositionVisualChangedFields.Size
- | CompositionVisualChangedFields.SizeAnimated;
+ | CompositionVisualChangedFields.SizeAnimated
+ | CompositionVisualChangedFields.RenderOptions;
private const CompositionVisualChangedFields CombinedTransformFieldsMask =
CompositionVisualChangedFields.Size
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
index d7bdde11e9..ccc4b658be 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual.cs
@@ -17,24 +17,29 @@ namespace Avalonia.Rendering.Composition.Server
partial class ServerCompositionVisual : ServerObject
{
private bool _isDirtyForUpdate;
- private Rect _oldOwnContentBounds;
+ private LtrbRect _oldOwnContentBounds;
private bool _isBackface;
- private Rect? _transformedClipBounds;
- private Rect _combinedTransformedClipBounds;
+ private LtrbRect? _transformedClipBounds;
+ private LtrbRect _combinedTransformedClipBounds;
- protected virtual void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected virtual void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
}
- public void Render(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ public void Render(CompositorDrawingContextProxy canvas, LtrbRect? parentTransformedClip, IDirtyRectTracker dirtyRects)
{
if (Visible == false || IsVisibleInFrame == false)
return;
if (Opacity == 0)
return;
- currentTransformedClip = currentTransformedClip.Intersect(_combinedTransformedClipBounds);
- if (currentTransformedClip.Width == 0 && currentTransformedClip.Height == 0)
+ var currentTransformedClip = parentTransformedClip.HasValue
+ ? parentTransformedClip.Value.Intersect(_combinedTransformedClipBounds)
+ : _combinedTransformedClipBounds;
+ if (currentTransformedClip.IsZeroSize)
+ return;
+ if(!dirtyRects.Intersects(currentTransformedClip))
return;
Root!.RenderedVisuals++;
@@ -44,35 +49,31 @@ namespace Avalonia.Rendering.Composition.Server
if (AdornedVisual != null)
{
- canvas.PostTransform = Matrix.Identity;
canvas.Transform = Matrix.Identity;
if (AdornerIsClipped)
- canvas.PushClip(AdornedVisual._combinedTransformedClipBounds);
+ canvas.PushClip(AdornedVisual._combinedTransformedClipBounds.ToRect());
}
var transform = GlobalTransformMatrix;
- canvas.PostTransform = transform;
- canvas.Transform = Matrix.Identity;
+ canvas.Transform = transform;
+
+ var applyRenderOptions = RenderOptions != default;
+ if (applyRenderOptions)
+ canvas.PushRenderOptions(RenderOptions);
if (Effect != null)
canvas.PushEffect(Effect);
if (Opacity != 1)
canvas.PushOpacity(Opacity, ClipToBounds ? boundsRect : null);
if (ClipToBounds && !HandlesClipToBounds)
- canvas.PushClip(Root!.SnapToDevicePixels(boundsRect));
+ canvas.PushClip(boundsRect);
if (Clip != null)
canvas.PushGeometryClip(Clip);
if (OpacityMaskBrush != null)
canvas.PushOpacityMask(OpacityMaskBrush, boundsRect);
- canvas.RenderOptions = RenderOptions;
-
- RenderCore(canvas, currentTransformedClip);
+ RenderCore(canvas, currentTransformedClip, dirtyRects);
- // Hack to force invalidation of SKMatrix
- canvas.PostTransform = transform;
- canvas.Transform = Matrix.Identity;
-
if (OpacityMaskBrush != null)
canvas.PopOpacityMask();
if (Clip != null)
@@ -86,6 +87,8 @@ namespace Avalonia.Rendering.Composition.Server
if (Effect != null)
canvas.PopEffect();
+ if(applyRenderOptions)
+ canvas.PopRenderOptions();
}
protected virtual bool HandlesClipToBounds => false;
@@ -108,7 +111,7 @@ namespace Avalonia.Rendering.Composition.Server
public Matrix CombinedTransformMatrix { get; private set; } = Matrix.Identity;
public Matrix GlobalTransformMatrix { get; private set; }
- public record struct UpdateResult(Rect? Bounds, bool InvalidatedOld, bool InvalidatedNew)
+ public record struct UpdateResult(LtrbRect? Bounds, bool InvalidatedOld, bool InvalidatedNew)
{
public UpdateResult() : this(null, false, false)
{
@@ -116,18 +119,13 @@ namespace Avalonia.Rendering.Composition.Server
}
}
- public virtual UpdateResult Update(ServerCompositionTarget root)
+ public virtual UpdateResult Update(ServerCompositionTarget root, Matrix parentVisualTransform)
{
if (Parent == null && Root == null)
return default;
var wasVisible = IsVisibleInFrame;
- if(Parent != null)
- {
- RenderOptions = RenderOptions.MergeWith(Parent.RenderOptions);
- }
-
// Calculate new parent-relative transform
if (_combinedTransformDirty)
{
@@ -138,7 +136,7 @@ namespace Avalonia.Rendering.Composition.Server
_combinedTransformDirty = false;
}
- var parentTransform = (AdornedVisual ?? Parent)?.GlobalTransformMatrix ?? Matrix.Identity;
+ var parentTransform = AdornedVisual?.GlobalTransformMatrix ?? parentVisualTransform;
var newTransform = CombinedTransformMatrix * parentTransform;
@@ -174,7 +172,7 @@ namespace Avalonia.Rendering.Composition.Server
if (ownBounds != _oldOwnContentBounds || positionChanged)
{
_oldOwnContentBounds = ownBounds;
- if (ownBounds.Width == 0 && ownBounds.Height == 0)
+ if (ownBounds.IsZeroSize)
TransformedOwnContentBounds = default;
else
TransformedOwnContentBounds =
@@ -183,22 +181,23 @@ namespace Avalonia.Rendering.Composition.Server
if (_clipSizeDirty || positionChanged)
{
- Rect? transformedVisualBounds = null;
- Rect? transformedClipBounds = null;
-
+ LtrbRect? transformedVisualBounds = null;
+ LtrbRect? transformedClipBounds = null;
+
if (ClipToBounds)
- transformedVisualBounds = new Rect(new Size(Size.X, Size.Y)).TransformToAABB(GlobalTransformMatrix);
-
- if (Clip != null)
- transformedClipBounds = Clip.Bounds.TransformToAABB(GlobalTransformMatrix);
-
- if (transformedVisualBounds != null && transformedClipBounds != null)
- _transformedClipBounds = transformedVisualBounds.Value.Intersect(transformedClipBounds.Value);
- else if (transformedVisualBounds != null)
- _transformedClipBounds = transformedVisualBounds;
- else if (transformedClipBounds != null)
- _transformedClipBounds = transformedClipBounds;
- else
+ transformedVisualBounds =
+ new LtrbRect(0, 0, Size.X, Size.Y).TransformToAABB(GlobalTransformMatrix);
+
+ if (Clip != null)
+ transformedClipBounds = new LtrbRect(Clip.Bounds).TransformToAABB(GlobalTransformMatrix);
+
+ if (transformedVisualBounds != null && transformedClipBounds != null)
+ _transformedClipBounds = transformedVisualBounds.Value.Intersect(transformedClipBounds.Value);
+ else if (transformedVisualBounds != null)
+ _transformedClipBounds = transformedVisualBounds;
+ else if (transformedClipBounds != null)
+ _transformedClipBounds = transformedClipBounds;
+ else
_transformedClipBounds = null;
_clipSizeDirty = false;
@@ -207,7 +206,7 @@ namespace Avalonia.Rendering.Composition.Server
_combinedTransformedClipBounds =
(AdornerIsClipped ? AdornedVisual?._combinedTransformedClipBounds : null)
?? (Parent?.Effect == null ? Parent?._combinedTransformedClipBounds : null)
- ?? new Rect(Root!.Size);
+ ?? new LtrbRect(0, 0, Root!.PixelSize.Width, Root!.PixelSize.Height);
if (_transformedClipBounds != null)
_combinedTransformedClipBounds = _combinedTransformedClipBounds.Intersect(_transformedClipBounds.Value);
@@ -217,11 +216,11 @@ namespace Avalonia.Rendering.Composition.Server
IsHitTestVisibleInFrame = _parent?.IsHitTestVisibleInFrame != false
&& Visible
&& !_isBackface
- && (_combinedTransformedClipBounds.Width != 0 || _combinedTransformedClipBounds.Height != 0);
+ && !(_combinedTransformedClipBounds.IsZeroSize);
IsVisibleInFrame = IsHitTestVisibleInFrame
&& _parent?.IsVisibleInFrame != false
- && EffectiveOpacity > 0.04;
+ && EffectiveOpacity > 0.003;
if (wasVisible != IsVisibleInFrame || positionChanged)
{
@@ -249,7 +248,7 @@ namespace Avalonia.Rendering.Composition.Server
return new(TransformedOwnContentBounds, invalidateNewBounds, invalidateOldBounds);
}
- protected void AddDirtyRect(Rect rc)
+ protected void AddDirtyRect(LtrbRect rc)
{
if (rc == default)
return;
@@ -301,13 +300,13 @@ namespace Avalonia.Rendering.Composition.Server
protected override void ValuesInvalidated()
{
_isDirtyForUpdate = true;
- Root?.Invalidate();
+ Root?.RequestUpdate();
}
public bool IsVisibleInFrame { get; set; }
public bool IsHitTestVisibleInFrame { get; set; }
public double EffectiveOpacity { get; set; }
- public Rect TransformedOwnContentBounds { get; set; }
- public virtual Rect OwnContentBounds => new Rect(0, 0, Size.X, Size.Y);
+ public LtrbRect TransformedOwnContentBounds { get; set; }
+ public virtual LtrbRect OwnContentBounds => new (0, 0, Size.X, Size.Y);
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.UserApis.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.UserApis.cs
new file mode 100644
index 0000000000..bbdea64004
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.UserApis.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Avalonia.Platform;
+using Avalonia.Utilities;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal partial class ServerCompositor
+{
+ private IReadOnlyDictionary? _renderInterfaceFeatureCache;
+ private readonly object _renderInterfaceFeaturesUserApiLock = new();
+
+ void RT_OnContextCreated(IPlatformRenderInterfaceContext context)
+ {
+ lock (_renderInterfaceFeaturesUserApiLock)
+ {
+ _renderInterfaceFeatureCache = null;
+ _renderInterfaceFeatureCache = context.PublicFeatures.ToDictionary(x => x.Key, x => x.Value);
+ }
+ }
+
+ bool RT_OnContextLostExceptionFilterObserver(Exception e)
+ {
+ if (e is PlatformGraphicsContextLostException)
+ {
+ lock (_renderInterfaceFeaturesUserApiLock)
+ _renderInterfaceFeatureCache = null;
+ }
+ return false;
+ }
+
+ void RT_OnContextDisposed()
+ {
+ lock (_renderInterfaceFeaturesUserApiLock)
+ _renderInterfaceFeatureCache = null;
+ }
+
+ public IReadOnlyDictionary? AT_TryGetCachedRenderInterfaceFeatures()
+ {
+ lock (_renderInterfaceFeaturesUserApiLock)
+ return _renderInterfaceFeatureCache;
+ }
+
+ public IReadOnlyDictionary RT_GetRenderInterfaceFeatures()
+ {
+ lock (_renderInterfaceFeaturesUserApiLock)
+ return _renderInterfaceFeatureCache ??= RenderInterface.Value.PublicFeatures;
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs
index f1bc865475..196bd88409 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs
@@ -27,8 +27,6 @@ namespace Avalonia.Rendering.Composition.Server
public Stopwatch Clock { get; } = Stopwatch.StartNew();
public TimeSpan ServerNow { get; private set; }
private readonly List _activeTargets = new();
- private readonly HashSet _clockItems = new();
- private readonly List _clockItemsToUpdate = new();
internal BatchStreamObjectPool BatchObjectPool;
internal BatchStreamMemoryPool BatchMemoryPool;
private readonly object _lock = new object();
@@ -38,12 +36,19 @@ namespace Avalonia.Rendering.Composition.Server
internal static readonly object RenderThreadDisposeStartMarker = new();
internal static readonly object RenderThreadJobsStartMarker = new();
internal static readonly object RenderThreadJobsEndMarker = new();
+ public CompositionOptions Options { get; }
+ public ServerCompositorAnimations Animations { get; }
public ServerCompositor(IRenderLoop renderLoop, IPlatformGraphics? platformGraphics,
+ CompositionOptions options,
BatchStreamObjectPool batchObjectPool, BatchStreamMemoryPool batchMemoryPool)
{
+ Options = options;
+ Animations = new();
_renderLoop = renderLoop;
RenderInterface = new PlatformRenderInterfaceContextManager(platformGraphics);
+ RenderInterface.ContextDisposed += RT_OnContextDisposed;
+ RenderInterface.ContextCreated += RT_OnContextCreated;
BatchObjectPool = batchObjectPool;
BatchMemoryPool = batchMemoryPool;
_renderLoop.Add(this);
@@ -155,7 +160,8 @@ namespace Avalonia.Rendering.Composition.Server
_reusableToNotifyRenderedList.Clear();
}
- public void Render()
+ public void Render() => Render(true);
+ public void Render(bool catchExceptions)
{
if (Dispatcher.UIThread.CheckAccess())
{
@@ -165,7 +171,7 @@ namespace Avalonia.Rendering.Composition.Server
try
{
using (Dispatcher.UIThread.DisableProcessing())
- RenderReentrancySafe();
+ RenderReentrancySafe(catchExceptions);
}
finally
{
@@ -173,10 +179,10 @@ namespace Avalonia.Rendering.Composition.Server
}
}
else
- RenderReentrancySafe();
+ RenderReentrancySafe(catchExceptions);
}
- private void RenderReentrancySafe()
+ private void RenderReentrancySafe(bool catchExceptions)
{
lock (_lock)
{
@@ -185,7 +191,7 @@ namespace Avalonia.Rendering.Composition.Server
try
{
_safeThread = Thread.CurrentThread;
- RenderCore();
+ RenderCore(catchExceptions);
}
finally
{
@@ -199,19 +205,14 @@ namespace Avalonia.Rendering.Composition.Server
}
}
- private void RenderCore()
+ private void RenderCore(bool catchExceptions)
{
UpdateServerTime();
ApplyPendingBatches();
NotifyBatchesProcessed();
-
- foreach(var animation in _clockItems)
- _clockItemsToUpdate.Add(animation);
- foreach (var animation in _clockItemsToUpdate)
- animation.OnTick();
-
- _clockItemsToUpdate.Clear();
+ Animations.Process();
+
ApplyEnqueuedRenderResourceChanges();
@@ -222,7 +223,7 @@ namespace Avalonia.Rendering.Composition.Server
foreach (var t in _activeTargets)
t.Render();
}
- catch (Exception e)
+ catch (Exception e) when(RT_OnContextLostExceptionFilterObserver(e) && catchExceptions)
{
Logger.TryGet(LogEventLevel.Error, LogArea.Visual)?.Log(this, "Exception when rendering: {Error}", e);
}
@@ -238,12 +239,6 @@ namespace Avalonia.Rendering.Composition.Server
_activeTargets.Remove(target);
}
- public void AddToClock(IServerClockItem item) =>
- _clockItems.Add(item);
-
- public void RemoveFromClock(IServerClockItem item) =>
- _clockItems.Remove(item);
-
public IRenderTarget CreateRenderTarget(IEnumerable surfaces)
{
using (RenderInterface.EnsureCurrent())
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositorAnimations.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositorAnimations.cs
new file mode 100644
index 0000000000..1f2c7dedb8
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositorAnimations.cs
@@ -0,0 +1,38 @@
+using System.Collections.Generic;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+internal class ServerCompositorAnimations
+{
+ private readonly HashSet _clockItems = new();
+ private readonly List _clockItemsToUpdate = new();
+ private readonly HashSet _dirtyAnimatedObjects = new();
+ private readonly Queue _dirtyAnimatedObjectQueue = new();
+
+ public void AddToClock(IServerClockItem item) =>
+ _clockItems.Add(item);
+
+ public void RemoveFromClock(IServerClockItem item) =>
+ _clockItems.Remove(item);
+
+ public void Process()
+ {
+ foreach (var animation in _clockItems)
+ _clockItemsToUpdate.Add(animation);
+
+ foreach (var animation in _clockItemsToUpdate)
+ animation.OnTick();
+
+ _clockItemsToUpdate.Clear();
+
+ while (_dirtyAnimatedObjectQueue.Count > 0)
+ _dirtyAnimatedObjectQueue.Dequeue().EvaluateAnimations();
+ _dirtyAnimatedObjects.Clear();
+ }
+
+ public void AddDirtyAnimatedObject(ServerObjectAnimations obj)
+ {
+ if (_dirtyAnimatedObjects.Add(obj))
+ _dirtyAnimatedObjectQueue.Enqueue(obj);
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCustomCompositionVisual.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCustomCompositionVisual.cs
index 165d08b282..203a530c9b 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCustomCompositionVisual.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCustomCompositionVisual.cs
@@ -1,7 +1,9 @@
using System;
+using System.Collections.Generic;
using System.Numerics;
using Avalonia.Logging;
using Avalonia.Media;
+using Avalonia.Platform;
using Avalonia.Rendering.Composition.Transport;
namespace Avalonia.Rendering.Composition.Server;
@@ -16,15 +18,13 @@ internal sealed class ServerCompositionCustomVisual : ServerCompositionContainer
_handler.Attach(this);
}
- protected override void DeserializeChangesCore(BatchStreamReader reader, TimeSpan committedAt)
+ public void DispatchMessages(List messages)
{
- base.DeserializeChangesCore(reader, committedAt);
- var count = reader.Read();
- for (var c = 0; c < count; c++)
+ foreach(var message in messages)
{
try
{
- _handler.OnMessage(reader.ReadObject()!);
+ _handler.OnMessage(message);
}
catch (Exception e)
{
@@ -39,44 +39,53 @@ internal sealed class ServerCompositionCustomVisual : ServerCompositionContainer
_wantsNextAnimationFrameAfterTick = false;
_handler.OnAnimationFrameUpdate();
if (!_wantsNextAnimationFrameAfterTick)
- Compositor.RemoveFromClock(this);
+ Compositor.Animations.RemoveFromClock(this);
}
- public override Rect OwnContentBounds => _handler.GetRenderBounds();
+ public override LtrbRect OwnContentBounds => new(_handler.GetRenderBounds());
protected override void OnAttachedToRoot(ServerCompositionTarget target)
{
if (_wantsNextAnimationFrameAfterTick)
- Compositor.AddToClock(this);
+ Compositor.Animations.AddToClock(this);
base.OnAttachedToRoot(target);
}
protected override void OnDetachedFromRoot(ServerCompositionTarget target)
{
- Compositor.RemoveFromClock(this);
+ Compositor.Animations.RemoveFromClock(this);
base.OnDetachedFromRoot(target);
}
internal void HandlerInvalidate() => ValuesInvalidated();
+
+ internal void HandlerInvalidate(Rect rc)
+ {
+ Root?.AddDirtyRect(new LtrbRect(rc).TransformToAABB(GlobalTransformMatrix));
+ }
internal void HandlerRegisterForNextAnimationFrameUpdate()
{
_wantsNextAnimationFrameAfterTick = true;
if (Root != null)
- Compositor.AddToClock(this);
+ Compositor.Animations.AddToClock(this);
}
- protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
+ protected override void RenderCore(CompositorDrawingContextProxy canvas, LtrbRect currentTransformedClip,
+ IDirtyRectTracker dirtyRects)
{
- using var context = new ImmediateDrawingContext(canvas, false);
+ canvas.AutoFlush = true;
+ using var context = new ImmediateDrawingContext(canvas, GlobalTransformMatrix, false);
try
{
- _handler.OnRender(context);
+ _handler.Render(context, currentTransformedClip.ToRect());
}
catch (Exception e)
{
Logger.TryGet(LogEventLevel.Error, LogArea.Visual)
?.Log(_handler, $"Exception in {_handler.GetType().Name}.{nameof(CompositionCustomVisualHandler.OnRender)} {{0}}", e);
}
+
+ canvas.AutoFlush = false;
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerObject.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerObject.cs
index 4cfc14312b..c845321cc9 100644
--- a/src/Avalonia.Base/Rendering/Composition/Server/ServerObject.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerObject.cs
@@ -16,37 +16,15 @@ namespace Avalonia.Rendering.Composition.Server
internal abstract class ServerObject : SimpleServerObject, IExpressionObject
{
private uint _activationCount;
+ private ServerObjectAnimations? _animations;
+ public ServerObjectAnimations? Animations => _animations;
+ public ServerObjectAnimations GetOrCreateAnimations() => _animations ??= new(this);
public bool IsActive => _activationCount != 0;
- private InlineDictionary _subscriptions;
- private InlineDictionary _animations;
-
- private class ServerObjectSubscriptionStore
- {
- public bool IsValid;
- public RefTrackingDictionary? Subscribers;
-
- public void Invalidate()
- {
- if (!IsValid)
- return;
- IsValid = false;
- if (Subscribers != null)
- foreach (var sub in Subscribers)
- sub.Key.Invalidate();
- }
- }
public ServerObject(ServerCompositor compositor) : base(compositor)
{
}
- public virtual ExpressionVariant GetPropertyForAnimation(string name)
- {
- return default;
- }
-
- ExpressionVariant IExpressionObject.GetProperty(string name) => GetPropertyForAnimation(name);
-
public void Activate()
{
_activationCount++;
@@ -65,92 +43,37 @@ namespace Avalonia.Rendering.Composition.Server
Deactivated();
}
- protected void Activated()
- {
- foreach(var kp in _animations)
- kp.Value.Activate();
- }
-
- protected void Deactivated()
- {
- foreach(var kp in _animations)
- kp.Value.Deactivate();
- }
+ private void Activated() => _animations?.Activated();
- void InvalidateSubscriptions(CompositionProperty property)
- {
- if(_subscriptions.TryGetValue(property, out var subs))
- subs.Invalidate();
- }
+ private void Deactivated() => _animations?.Deactivated();
protected new void SetValue(CompositionProperty prop, ref T field, T value)
{
field = value;
- InvalidateSubscriptions(prop);
- }
-
- protected new T GetValue(CompositionProperty prop, ref T field)
- {
- if (_subscriptions.TryGetValue(prop, out var subs))
- subs.IsValid = true;
- return field;
+ _animations?.OnSetDirectValue(prop);
}
- protected void SetAnimatedValue(CompositionProperty prop, ref T field,
+ protected void SetAnimatedValue(CompositionProperty prop, ref T field,
TimeSpan committedAt, IAnimationInstance animation) where T : struct
{
- if (IsActive && _animations.TryGetValue(prop, out var oldAnimation))
- oldAnimation.Deactivate();
- _animations[prop] = animation;
-
- animation.Initialize(committedAt, ExpressionVariant.Create(field), prop);
- if(IsActive)
- animation.Activate();
-
- InvalidateSubscriptions(prop);
+ GetOrCreateAnimations().OnSetAnimatedValue(prop, ref field, committedAt, animation);
}
protected void SetAnimatedValue(CompositionProperty property, out T field, T value)
{
- if (_animations.TryGetAndRemoveValue(property, out var animation) && IsActive)
- animation.Deactivate();
field = value;
- InvalidateSubscriptions(property);
+ _animations?.RemoveAnimationForProperty(property);
}
- protected T GetAnimatedValue(CompositionProperty property, ref T field) where T : struct
- {
- if (_subscriptions.TryGetValue(property, out var subscriptions))
- subscriptions.IsValid = true;
-
- if (_animations.TryGetValue(property, out var animation))
- field = animation.Evaluate(Compositor.ServerNow, ExpressionVariant.Create(field))
- .CastOrDefault();
-
- return field;
- }
+ public virtual void NotifyAnimatedValueChanged(CompositionProperty prop) => ValuesInvalidated();
- public virtual void NotifyAnimatedValueChanged(CompositionProperty prop)
- {
- InvalidateSubscriptions(prop);
- ValuesInvalidated();
- }
-
- public void SubscribeToInvalidation(CompositionProperty member, IAnimationInstance animation)
+ public virtual CompositionProperty? GetCompositionProperty(string fieldName) => null;
+ ExpressionVariant IExpressionObject.GetProperty(string name)
{
- if (!_subscriptions.TryGetValue(member, out var store))
- _subscriptions[member] = store = new ServerObjectSubscriptionStore();
- if (store.Subscribers == null)
- store.Subscribers = new();
- store.Subscribers.AddRef(animation);
- }
+ if (_animations == null)
+ return CompositionProperty.Find(this.GetType(), name)?.GetVariant?.Invoke(this) ?? default;
- public void UnsubscribeFromInvalidation(CompositionProperty member, IAnimationInstance animation)
- {
- if(_subscriptions.TryGetValue(member, out var store))
- store.Subscribers?.ReleaseRef(animation);
+ return _animations.GetPropertyForAnimation(name);
}
-
- public virtual CompositionProperty? GetCompositionProperty(string fieldName) => null;
}
}
diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerObjectAnimations.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerObjectAnimations.cs
new file mode 100644
index 0000000000..1d213781c7
--- /dev/null
+++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerObjectAnimations.cs
@@ -0,0 +1,175 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using Avalonia.Rendering.Composition.Animations;
+using Avalonia.Rendering.Composition.Expressions;
+using Avalonia.Utilities;
+
+namespace Avalonia.Rendering.Composition.Server;
+
+class ServerObjectAnimations
+{
+ private readonly ServerObject _owner;
+ private InlineDictionary _subscriptions;
+ private InlineDictionary _animations;
+ private readonly IReadOnlyDictionary _properties;
+
+ public ServerObjectAnimations(ServerObject owner)
+ {
+ _owner = owner;
+ _properties = CompositionProperty.TryGetPropertiesForType(owner.GetType()) ??
+ new Dictionary();
+ }
+
+ private class ServerObjectSubscriptionStore
+ {
+ public bool IsValid;
+ public RefTrackingDictionary? Subscribers;
+
+ public void Invalidate()
+ {
+ if (!IsValid)
+ return;
+ IsValid = false;
+ if (Subscribers != null)
+ foreach (var sub in Subscribers)
+ sub.Key.Invalidate();
+ }
+ }
+
+ abstract class ServerObjectAnimationInstance
+ {
+ public ServerObjectAnimations Owner { get; }
+ private ExpressionVariant _cachedVariant;
+ public bool IsDirty { get; set; } = true;
+ public bool NeedsUpdate { get; set; } = true;
+ public IAnimationInstance Animation { get; }
+
+ public ServerObjectAnimationInstance(ServerObjectAnimations owner, IAnimationInstance animation)
+ {
+ Animation = animation;
+ Owner = owner;
+ }
+
+ public ExpressionVariant GetVariant()
+ {
+ var compositor = Owner._owner.Compositor;
+ if (!IsDirty)
+ return _cachedVariant;
+
+ // We are setting this _before_ evaluating animation to prevent stack overflows due to potential
+ // cyclic references
+ IsDirty = false;
+
+ return _cachedVariant = Animation.Evaluate(Owner._owner.Compositor.ServerNow, _cachedVariant);
+ }
+
+ public abstract void UpdateTargetProperty();
+ }
+
+ class ServerObjectAnimationInstance : ServerObjectAnimationInstance where T : struct
+ {
+ private readonly CompositionProperty _property;
+
+ public ServerObjectAnimationInstance(ServerObjectAnimations owner, IAnimationInstance animation,
+ CompositionProperty property) : base(owner, animation)
+ {
+ _property = property;
+ }
+
+ public override void UpdateTargetProperty()
+ {
+ if (NeedsUpdate)
+ {
+ NeedsUpdate = false;
+ _property.SetField(Owner._owner, GetVariant().CastOrDefault());
+ Owner._owner.NotifyAnimatedValueChanged(_property);
+ }
+ }
+ }
+
+ public void Activated()
+ {
+ foreach(var kp in _animations)
+ kp.Value.Animation.Activate();
+ }
+
+ public void Deactivated()
+ {
+ foreach(var kp in _animations)
+ kp.Value.Animation.Deactivate();
+ }
+
+ public void OnSetDirectValue(CompositionProperty property)
+ {
+ if(_subscriptions.TryGetValue(property, out var subs))
+ subs.Invalidate();
+ }
+
+ public void OnSetAnimatedValue(CompositionProperty prop, ref T field, TimeSpan committedAt, IAnimationInstance animation) where T : struct
+ {
+ if (_owner.IsActive && _animations.TryGetValue(prop, out var oldAnimation))
+ oldAnimation.Animation.Deactivate();
+ _animations[prop] = new ServerObjectAnimationInstance(this, animation, prop);
+
+ animation.Initialize(committedAt, ExpressionVariant.Create(field), prop);
+ if(_owner.IsActive)
+ animation.Activate();
+
+ OnSetDirectValue(prop);
+ }
+
+ public void RemoveAnimationForProperty(CompositionProperty property)
+ {
+ if (_animations.TryGetAndRemoveValue(property, out var animation) && _owner.IsActive)
+ animation.Animation.Deactivate();
+ OnSetDirectValue(property);
+ }
+
+ public void SubscribeToInvalidation(CompositionProperty member, IAnimationInstance animation)
+ {
+ if (!_subscriptions.TryGetValue(member, out var store))
+ _subscriptions[member] = store = new ServerObjectSubscriptionStore();
+ if (store.Subscribers == null)
+ store.Subscribers = new();
+ store.Subscribers.AddRef(animation);
+ }
+
+ public void UnsubscribeFromInvalidation(CompositionProperty member, IAnimationInstance animation)
+ {
+ if(_subscriptions.TryGetValue(member, out var store))
+ store.Subscribers?.ReleaseRef(animation);
+ }
+
+ public ExpressionVariant GetPropertyForAnimation(string name)
+ {
+ if (!_properties.TryGetValue(name, out var prop))
+ return default;
+
+ if (_subscriptions.TryGetValue(prop, out var subs))
+ subs.IsValid = true;
+
+ if (_animations.TryGetValue(prop, out var animation))
+ return animation.GetVariant();
+
+ return prop.GetVariant?.Invoke(_owner) ?? default;
+ }
+
+ public void EvaluateAnimations()
+ {
+ foreach (var animation in _animations)
+ if (animation.Value.IsDirty)
+ animation.Value.UpdateTargetProperty();
+ }
+
+ public void NotifyAnimationInstanceInvalidated(CompositionProperty property)
+ {
+ if (_animations.TryGetValue(property, out var instance))
+ {
+ instance.IsDirty = instance.NeedsUpdate = true;
+ _owner.Compositor.Animations.AddDirtyAnimatedObject(this);
+ }
+ else
+ Debug.Assert(false);
+ }
+}
\ No newline at end of file
diff --git a/src/Avalonia.Base/Rendering/IRenderer.cs b/src/Avalonia.Base/Rendering/IRenderer.cs
index 227ff53897..bd5aff8e6b 100644
--- a/src/Avalonia.Base/Rendering/IRenderer.cs
+++ b/src/Avalonia.Base/Rendering/IRenderer.cs
@@ -87,7 +87,7 @@ namespace Avalonia.Rendering
/// children will be excluded from the results.
///
/// The visuals at the specified point, topmost first.
- IEnumerable HitTest(Point p, Visual root, Func filter);
+ IEnumerable HitTest(Point p, Visual root, Func? filter);
///
/// Hit tests a location to find first visual at the specified point.
@@ -99,6 +99,6 @@ namespace Avalonia.Rendering
/// children will be excluded from the results.
///
/// The visual at the specified point, topmost first.
- Visual? HitTestFirst(Point p, Visual root, Func filter);
+ Visual? HitTestFirst(Point p, Visual root, Func? filter);
}
}
diff --git a/src/Avalonia.Base/Rendering/ImmediateRenderer.cs b/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
index 37c5e0a2c6..1d2244dfbb 100644
--- a/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
+++ b/src/Avalonia.Base/Rendering/ImmediateRenderer.cs
@@ -44,18 +44,8 @@ namespace Avalonia.Rendering
public static void Render(DrawingContext context, Visual visual, Rect clipRect)
{
- var currentRenderOptions = default(RenderOptions);
- var platformContext = context as PlatformDrawingContext;
-
- try
+ using(visual.RenderOptions != default ? context.PushRenderOptions(visual.RenderOptions) : (DrawingContext.PushedState?)null)
{
- if (platformContext != null)
- {
- currentRenderOptions = platformContext.RenderOptions;
-
- platformContext.RenderOptions = visual.RenderOptions.MergeWith(platformContext.RenderOptions);
- }
-
var opacity = visual.Opacity;
var clipToBounds = visual.ClipToBounds;
var bounds = new Rect(visual.Bounds.Size);
@@ -130,13 +120,6 @@ namespace Avalonia.Rendering
}
}
}
- finally
- {
- if (platformContext != null)
- {
- platformContext.RenderOptions = currentRenderOptions;
- }
- }
}
}
}
diff --git a/src/Avalonia.Base/Rendering/PlatformRenderInterfaceContextManager.cs b/src/Avalonia.Base/Rendering/PlatformRenderInterfaceContextManager.cs
index 82dcd8f184..d6576511b9 100644
--- a/src/Avalonia.Base/Rendering/PlatformRenderInterfaceContextManager.cs
+++ b/src/Avalonia.Base/Rendering/PlatformRenderInterfaceContextManager.cs
@@ -11,6 +11,8 @@ internal class PlatformRenderInterfaceContextManager
private readonly IPlatformGraphics? _graphics;
private IPlatformRenderInterfaceContext? _backend;
private OwnedDisposable? _gpuContext;
+ public event Action? ContextDisposed;
+ public event Action? ContextCreated;
public PlatformRenderInterfaceContextManager(IPlatformGraphics? graphics)
{
@@ -23,8 +25,12 @@ internal class PlatformRenderInterfaceContextManager
{
_backend?.Dispose();
_backend = null;
- _gpuContext?.Dispose();
- _gpuContext = null;
+ if (_gpuContext != null)
+ {
+ _gpuContext?.Dispose();
+ _gpuContext = null;
+ ContextDisposed?.Invoke();
+ }
if (_graphics != null)
{
@@ -36,6 +42,7 @@ internal class PlatformRenderInterfaceContextManager
_backend = AvaloniaLocator.Current.GetRequiredService()
.CreateBackendContext(_gpuContext?.Value);
+ ContextCreated?.Invoke(_backend);
}
}
diff --git a/src/Avalonia.Base/StyledElement.cs b/src/Avalonia.Base/StyledElement.cs
index b98e378338..1f0c00ef63 100644
--- a/src/Avalonia.Base/StyledElement.cs
+++ b/src/Avalonia.Base/StyledElement.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
-using System.Linq;
+using System.Text;
using Avalonia.Animation;
using Avalonia.Collections;
using Avalonia.Controls;
@@ -33,6 +33,8 @@ namespace Avalonia
ISetLogicalParent,
ISetInheritanceParent,
ISupportInitialize,
+ INamed,
+ IAvaloniaListItemValidator,
#pragma warning disable CS0618 // Type or member is obsolete
IStyleable
#pragma warning restore CS0618 // Type or member is obsolete
@@ -276,7 +278,7 @@ namespace Avalonia
var list = new AvaloniaList
{
ResetBehavior = ResetBehavior.Remove,
- Validate = logical => ValidateLogicalChild(logical)
+ Validator = this
};
list.CollectionChanged += LogicalChildrenCollectionChanged;
_logicalChildren = list;
@@ -418,19 +420,6 @@ namespace Avalonia
}
}
- internal StyleDiagnostics GetStyleDiagnosticsInternal()
- {
- var styles = new List();
-
- foreach (var frame in GetValueStore().Frames)
- {
- if (frame is IStyleInstance style)
- styles.Add(new(style));
- }
-
- return new StyleDiagnostics(styles);
- }
-
///
void ILogical.NotifyAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
{
@@ -786,11 +775,11 @@ namespace Avalonia
return null;
}
- private static void ValidateLogicalChild(ILogical c)
+ void IAvaloniaListItemValidator.Validate(ILogical item)
{
- if (c == null)
+ if (item is null)
{
- throw new ArgumentException("Cannot add null to LogicalChildren.");
+ throw new ArgumentException($"Cannot add null to {nameof(LogicalChildren)}.");
}
}
@@ -1017,6 +1006,12 @@ namespace Avalonia
}
}
+ internal override void BuildDebugDisplay(StringBuilder builder, bool includeContent)
+ {
+ base.BuildDebugDisplay(builder, includeContent);
+ DebugDisplayHelper.AppendOptionalValue(builder, nameof(Name), Name, includeContent);
+ }
+
private static IReadOnlyList
-
@@ -100,16 +100,16 @@
-
-
-
diff --git a/src/Avalonia.Themes.Fluent/Controls/CalendarDayButton.xaml b/src/Avalonia.Themes.Fluent/Controls/CalendarDayButton.xaml
index 31280c6320..6c419e4cc9 100644
--- a/src/Avalonia.Themes.Fluent/Controls/CalendarDayButton.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/CalendarDayButton.xaml
@@ -36,12 +36,12 @@
-
+
@@ -84,7 +84,7 @@
-
@@ -95,16 +95,16 @@
-
-
-
diff --git a/src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml b/src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml
index ead55ac950..ac3ebadbb8 100644
--- a/src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml
@@ -31,7 +31,7 @@
-
-
-
@@ -93,7 +93,7 @@
@@ -114,7 +114,7 @@
@@ -153,7 +153,7 @@
@@ -174,7 +174,7 @@
@@ -195,7 +195,7 @@
@@ -235,7 +235,7 @@
@@ -256,7 +256,7 @@
@@ -277,7 +277,7 @@
diff --git a/src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml b/src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml
index 5efe6f1790..d3c8417875 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml
@@ -84,11 +84,12 @@
IsVisible="{TemplateBinding SelectionBoxItem, Converter={x:Static ObjectConverters.IsNull}}" />
+ ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
+ VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
+
-
-
-
+
+
+
-
-
+
-
-
+
+
-
+
-
+
@@ -309,16 +309,16 @@
-
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+ Grid.Column="4" />
-
+
diff --git a/src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml b/src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml
index 428d80ffe1..22b6ef045c 100644
--- a/src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml
@@ -1,5 +1,6 @@
@@ -18,8 +19,8 @@
+ TextAlignment="Center"
+ VerticalAlignment="Center"/>
@@ -31,10 +32,19 @@
+ TextAlignment="Center"
+ VerticalAlignment="Center"/>
+
+
+
+
+ Error
+
+
+
+
@@ -50,39 +60,39 @@
-
-
-
+
+
+
+
+
diff --git a/src/Avalonia.Themes.Fluent/Controls/ScrollBar.xaml b/src/Avalonia.Themes.Fluent/Controls/ScrollBar.xaml
index 63352d6ee3..1107bf2c27 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ScrollBar.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ScrollBar.xaml
@@ -63,7 +63,8 @@
-
diff --git a/src/Avalonia.Themes.Fluent/Controls/SelectableTextBlock.xaml b/src/Avalonia.Themes.Fluent/Controls/SelectableTextBlock.xaml
index b5daa65efc..8e5d7bdb1c 100644
--- a/src/Avalonia.Themes.Fluent/Controls/SelectableTextBlock.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/SelectableTextBlock.xaml
@@ -6,7 +6,7 @@
-
diff --git a/src/Avalonia.Themes.Fluent/Controls/SplitView.xaml b/src/Avalonia.Themes.Fluent/Controls/SplitView.xaml
index aaf6ad7dbc..6c5587f755 100644
--- a/src/Avalonia.Themes.Fluent/Controls/SplitView.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/SplitView.xaml
@@ -139,7 +139,7 @@
-
+
@@ -237,7 +237,7 @@
-
-
diff --git a/src/Avalonia.Themes.Simple/Controls/CalendarDayButton.xaml b/src/Avalonia.Themes.Simple/Controls/CalendarDayButton.xaml
index e16b9f38ba..b9fffc2327 100644
--- a/src/Avalonia.Themes.Simple/Controls/CalendarDayButton.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/CalendarDayButton.xaml
@@ -36,15 +36,15 @@
IsVisible="False"
Opacity="0.5" />
-
+
-
@@ -92,10 +92,10 @@
-
-
diff --git a/src/Avalonia.Themes.Simple/Controls/ComboBox.xaml b/src/Avalonia.Themes.Simple/Controls/ComboBox.xaml
index 910d8fba68..cbb40d7ff3 100644
--- a/src/Avalonia.Themes.Simple/Controls/ComboBox.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/ComboBox.xaml
@@ -34,7 +34,8 @@
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectionBoxItem}"
- ContentTemplate="{TemplateBinding ItemTemplate}" />
+ ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}">
+
+ Text="{DynamicResource StringDatePickerDayText}" />
+ Text="{DynamicResource StringDatePickerYearText}" />
-
-
@@ -89,7 +90,7 @@
- Show hidden files
+
- OK
- Cancel
+
+
@@ -114,7 +115,7 @@
+ Watermark="{DynamicResource StringManagedFileChooserFileNameWatermark}" />
+ Text="{DynamicResource StringManagedFileChooserNameColumn}" />
+ Text="{DynamicResource StringManagedFileChooserDateModifiedColumn}" />
@@ -171,7 +172,7 @@
Fill="{DynamicResource ThemeControlMidBrush}"/>
+ Text="{DynamicResource StringManagedFileChooserTypeColumn}" />
+ Text="{DynamicResource StringManagedFileChooserSizeColumn}" />
@@ -253,18 +254,26 @@
CornerRadius="{TemplateBinding CornerRadius}"
Padding="{TemplateBinding Padding}">
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+";
+ var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
+ var textBlock = window.GetControl("textBlock");
+
+ var dataContext = new TestDataContext();
+ window.DataContext = dataContext;
+
+ Assert.Equal(" $self = Normal"
+ , textBlock.GetValue(TextBlock.TextProperty));
+ }
+ }
+
[Fact]
public void SupportsMethodBindingAsDelegate()
{
@@ -1984,7 +2053,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
";
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
- var textBlock = window.FindControl("textBlock");
+ var textBlock = window.GetControl("textBlock");
var dataContext = new TestDataContext { BoolProperty = value };
window.DataContext = dataContext;
@@ -2012,7 +2081,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
";
var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
- var textBlock = window.FindControl("textBlock");
+ var textBlock = window.GetControl("textBlock");
var dataContext = new ImplicitConvertible("Green");
window.DataContext = dataContext;
@@ -2022,6 +2091,30 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
}
}
+ [Fact]
+ public void Can_Bind_Brush_To_Hex_String()
+ {
+ using (UnitTestApplication.Start(TestServices.StyledWindow))
+ {
+ var xaml = $@"
+
+
+";
+ var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
+ var textBlock = window.FindControl("textBlock");
+
+ var dataContext = new TestData { StringProperty = "#ff0000" };
+ window.DataContext = dataContext;
+
+ var brush = Assert.IsType(textBlock!.Background);
+ Assert.Equal(Colors.Red, brush.Color);
+ }
+ }
+
static void Throws(string type, Action cb)
{
try
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
index 9379f94edd..05b77b5325 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
@@ -924,6 +924,42 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
window.Content = null;
}
+ [Fact]
+ public void Handles_Clearing_Resources_With_Dynamic_Theme_In_Dynamic_Template()
+ {
+ // Issue #14753
+ using var app = UnitTestApplication.Start(TestServices.StyledWindow);
+ var xaml = """
+
+
+ Blue
+
+
+
+
+
+
+
+
+
+
+
+
+
+""";
+
+ var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
+ window.Show();
+
+ var button = Assert.IsType(window.Content);
+ var border = Assert.IsType(button.GetVisualChildren().Single());
+ var background = Assert.IsAssignableFrom(border.Background);
+ Assert.Equal(Colors.Blue, background.Color);
+
+ window.Resources.Clear();
+ }
+
private IDisposable StyledWindow(params (string, string)[] assets)
{
var services = TestServices.StyledWindow.With(
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs
index e21f6cd276..b2c697cbad 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ControlTemplateTests.cs
@@ -1,6 +1,9 @@
using System;
+using System.Collections.Generic;
using System.Linq;
+using System.Xml;
using Avalonia.Controls;
+using Avalonia.Controls.Metadata;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Data;
@@ -276,7 +279,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
-
+
";
var template = AvaloniaRuntimeXamlLoader.Parse(xaml);
@@ -293,7 +296,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
-
+
";
var template = AvaloniaRuntimeXamlLoader.Parse(xaml);
@@ -337,6 +340,103 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
var templateResult = template.Build(new TemplatedControl());
Assert.Null(templateResult);
}
+
+ [Fact]
+ public void ControlTemplate_Outputs_Error_When_Missing_TemplatePart()
+ {
+ using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
+
+ var xaml = @"
+
+
+
+
+";
+ var diagnostics = new List();
+ AvaloniaRuntimeXamlLoader.Load(new RuntimeXamlLoaderDocument(xaml), new RuntimeXamlLoaderConfiguration
+ {
+ LocalAssembly = typeof(XamlIlTests).Assembly,
+ DiagnosticHandler = diagnostic =>
+ {
+ diagnostics.Add(diagnostic);
+ return diagnostic.Severity;
+ }
+ });
+ var warning = Assert.Single(diagnostics);
+ Assert.Equal(RuntimeXamlDiagnosticSeverity.Info, warning.Severity);
+ Assert.Contains("'PART_MainContentBorder'", warning.Title);
+ }
+
+ [Fact]
+ public void ControlTemplate_Outputs_Error_When_Using_Wrong_Type_With_TemplatePart()
+ {
+ using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
+
+ var xaml = @"
+
+
+
+
+";
+ var diagnostics = new List();
+ Assert.ThrowsAny(() => AvaloniaRuntimeXamlLoader.Load(new RuntimeXamlLoaderDocument(xaml), new RuntimeXamlLoaderConfiguration
+ {
+ LocalAssembly = typeof(XamlIlTests).Assembly,
+ DiagnosticHandler = diagnostic =>
+ {
+ diagnostics.Add(diagnostic);
+ return diagnostic.Severity;
+ }
+ }));
+ var warning = Assert.Single(diagnostics);
+ Assert.Equal(RuntimeXamlDiagnosticSeverity.Error, warning.Severity);
+ Assert.Contains("'ContentPresenter'", warning.Title);
+ }
+
+ [Fact]
+ public void ControlTemplate_Outputs_Error_When_Missing_TemplatePart_Nested_ItemTemplate_Case()
+ {
+ using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
+
+ var xaml = @"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+";
+ var diagnostics = new List();
+ AvaloniaRuntimeXamlLoader.Load(new RuntimeXamlLoaderDocument(xaml), new RuntimeXamlLoaderConfiguration
+ {
+ LocalAssembly = typeof(XamlIlTests).Assembly,
+ DiagnosticHandler = diagnostic =>
+ {
+ diagnostics.Add(diagnostic);
+ return diagnostic.Severity;
+ }
+ });
+ var warning = Assert.Single(diagnostics);
+ Assert.Equal(RuntimeXamlDiagnosticSeverity.Info, warning.Severity);
+ Assert.Contains("'PART_MainContentBorder'", warning.Title);
+ }
}
public class ListBoxHierarchyLine : Panel
{
@@ -349,4 +449,14 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
set => SetValue(LineDashStyleProperty, value);
}
}
+
+ [TemplatePart("PART_MainContentBorder", typeof(Border))]
+ [TemplatePart("PART_ContentPresenter", typeof(ContentPresenter))]
+ public class CustomControlWithParts : ContentControl
+ {
+ }
+
+ public class CustomButtonWithParts : CustomControlWithParts
+ {
+ }
}
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs
index b1b7a74dd3..75458ca2a1 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs
@@ -125,6 +125,28 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
}
}
+ [Fact]
+ public void Named_Item_Is_Added_To_Resources_Should_Not_Be_Deferred()
+ {
+ // Since Named items can be accessed through the NameScope, we cannot delay their initialization.
+ using (StyledWindow())
+ {
+ var xaml = @"
+
+
+
+
+";
+ var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
+ var resources = (ResourceDictionary)window.Resources;
+
+ Assert.False(resources.ContainsDeferredKey("MyPanel"));
+ Assert.True(resources.ContainsKey("MyPanel"));
+ Assert.IsType(window.Find("MyPanel"));
+ }
+ }
+
[Fact]
public void Item_Is_Added_To_Window_MergedDictionaries_As_Deferred()
{
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleIncludeTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleIncludeTests.cs
index 374c5d1544..74e49b801d 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleIncludeTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleIncludeTests.cs
@@ -326,7 +326,10 @@ public class StyleIncludeTests
}
}
-public class TestServiceProvider : IServiceProvider, IUriContext, IAvaloniaXamlIlParentStackProvider
+public class TestServiceProvider :
+ IServiceProvider,
+ IUriContext,
+ IAvaloniaXamlIlEagerParentStackProvider
{
private IServiceProvider _root = XamlIlRuntimeHelpers.CreateRootServiceProviderV2();
public object GetService(Type serviceType)
@@ -345,4 +348,6 @@ public class TestServiceProvider : IServiceProvider, IUriContext, IAvaloniaXamlI
public Uri BaseUri { get; set; }
public List Parents { get; set; } = new List { new ContentControl() };
IEnumerable IAvaloniaXamlIlParentStackProvider.Parents => Parents;
+ public IReadOnlyList DirectParents => Parents;
+ public IAvaloniaXamlIlEagerParentStackProvider ParentProvider => null;
}
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs
index 544bb68509..85bbfedfc4 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/StyleTests.cs
@@ -16,11 +16,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
{
public class StyleTests : XamlTestBase
{
- static StyleTests()
- {
- GC.KeepAlive(typeof(ItemsRepeater));
- }
-
[Fact]
public void Color_Can_Be_Added_To_Style_Resources()
{
@@ -399,53 +394,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
}
}
- [Fact]
- public void Style_Can_Use_NthChild_Selector_With_ItemsRepeater()
- {
- GC.KeepAlive(typeof(ItemsRepeater));
-
- using (UnitTestApplication.Start(TestServices.StyledWindow))
- {
- var xaml = @"
-
-
-
-
-
-
-";
- var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
- var collection = new ObservableCollection()
- {
- Brushes.Red, Brushes.Green, Brushes.Blue
- };
-
- var list = window.FindControl("list");
- list.ItemsSource = collection;
-
- window.Show();
-
- IEnumerable GetColors() => Enumerable.Range(0, list.ItemsSourceView.Count)
- .Select(t => (list.GetOrCreateElement(t) as TextBlock)!.Foreground);
-
- Assert.Equal(new[] { Brushes.Transparent, Brushes.Green, Brushes.Transparent }, GetColors());
-
- collection.Remove(Brushes.Green);
-
- Assert.Equal(new[] { Brushes.Transparent, Brushes.Blue }, GetColors().ToList());
-
- collection.Add(Brushes.Violet);
- collection.Add(Brushes.Black);
-
- Assert.Equal(new[] { Brushes.Transparent, Brushes.Blue, Brushes.Transparent, Brushes.Black }, GetColors());
- }
- }
-
[Fact]
public void Style_Can_Use_Or_Selector_1()
{
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs
index 0e0893fe8d..16b3565074 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs
@@ -16,7 +16,6 @@ namespace Avalonia.Markup.Xaml.UnitTests
public static void Init()
{
var _ = typeof(Binding);
- GC.KeepAlive(typeof(ItemsRepeater).Assembly);
}
}
diff --git a/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj b/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
index 9f3ec4013c..3475b0788e 100644
--- a/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
+++ b/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
@@ -1,6 +1,6 @@
- net6.0
+ $(AvsCurrentTargetFramework)
false
diff --git a/tests/Avalonia.ReactiveUI.UnitTests/ReactiveUserControlTest.cs b/tests/Avalonia.ReactiveUI.UnitTests/ReactiveUserControlTest.cs
index 4bf999bed0..67790789e3 100644
--- a/tests/Avalonia.ReactiveUI.UnitTests/ReactiveUserControlTest.cs
+++ b/tests/Avalonia.ReactiveUI.UnitTests/ReactiveUserControlTest.cs
@@ -134,6 +134,22 @@ namespace Avalonia.ReactiveUI.UnitTests
Assert.Same(vm2, view.ViewModel);
}
+ // https://github.com/AvaloniaUI/Avalonia/issues/15060
+ [Fact]
+ public void Should_Not_Inherit_DataContext_Of_Wrong_Type()
+ {
+ var view = new ExampleView();
+ var root = new TestRoot(view);
+
+ Assert.Null(view.DataContext);
+ Assert.Null(view.ViewModel);
+
+ root.DataContext = this;
+
+ Assert.Same(this, view.DataContext);
+ Assert.Null(view.ViewModel);
+ }
+
[Fact]
public void Should_Not_Overlap_Change_Notifications()
{
diff --git a/tests/Avalonia.RenderTests.WpfCompare/Avalonia.RenderTests.WpfCompare.csproj b/tests/Avalonia.RenderTests.WpfCompare/Avalonia.RenderTests.WpfCompare.csproj
new file mode 100644
index 0000000000..d20f1b35d3
--- /dev/null
+++ b/tests/Avalonia.RenderTests.WpfCompare/Avalonia.RenderTests.WpfCompare.csproj
@@ -0,0 +1,23 @@
+
+
+ $(AvsCurrentWindowsTargetFramework)
+ true
+ enable
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Avalonia.RenderTests.WpfCompare/CrossFact.cs b/tests/Avalonia.RenderTests.WpfCompare/CrossFact.cs
new file mode 100644
index 0000000000..8b002eb52e
--- /dev/null
+++ b/tests/Avalonia.RenderTests.WpfCompare/CrossFact.cs
@@ -0,0 +1,13 @@
+using Xunit;
+
+namespace Avalonia.RenderTests.WpfCompare;
+
+public class CrossFactAttribute : StaFactAttribute
+{
+
+}
+
+public class CrossTheoryAttribute : StaTheoryAttribute
+{
+
+}
diff --git a/tests/Avalonia.RenderTests.WpfCompare/CrossTestBase.cs b/tests/Avalonia.RenderTests.WpfCompare/CrossTestBase.cs
new file mode 100644
index 0000000000..e7d6b27213
--- /dev/null
+++ b/tests/Avalonia.RenderTests.WpfCompare/CrossTestBase.cs
@@ -0,0 +1,53 @@
+using System;
+using System.IO;
+using System.Runtime.CompilerServices;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using CrossUI;
+
+namespace Avalonia.RenderTests.WpfCompare;
+
+public class CrossTestBase
+{
+ private readonly string _groupName;
+ public CrossTestBase(string groupName)
+ {
+ _groupName = groupName;
+ }
+
+ protected void RenderAndCompare(CrossControl root, [CallerMemberName] string? testName = null, double dpi = 96)
+ {
+ var dir = Path.Combine(GetTestsDirectory(), "TestFiles", "CrossTests", _groupName);
+ if (!Directory.Exists(dir))
+ Directory.CreateDirectory(dir);
+ var path = Path.Combine(dir, testName + ".wpf.png");
+
+ var w = root.Width;
+ var h = root.Height;
+ var pw = (int)Math.Ceiling(w * dpi / 96);
+ var ph = (int)Math.Ceiling(h * dpi / 96);
+
+ var control = new WpfCrossControl(root);
+ control.Measure(new System.Windows.Size(w, h));
+ control.Arrange(new System.Windows.Rect(0, 0, w, h));
+ var bmp = new RenderTargetBitmap(pw, ph, dpi, dpi, PixelFormats.Default);
+ bmp.Render(control);
+ var encoder = new PngBitmapEncoder();
+ encoder.Frames.Add(BitmapFrame.Create(bmp));
+ using (var f = File.Create(path))
+ encoder.Save(f);
+ }
+
+ static string GetTestsDirectory()
+ {
+ var path = Directory.GetCurrentDirectory();
+
+ while (path.Length > 0 && Path.GetFileName(path) != "tests")
+ {
+ path = Path.GetDirectoryName(path);
+ }
+
+ return path;
+ }
+
+}
diff --git a/tests/Avalonia.RenderTests.WpfCompare/CrossUI.Wpf.cs b/tests/Avalonia.RenderTests.WpfCompare/CrossUI.Wpf.cs
new file mode 100644
index 0000000000..302f7f695c
--- /dev/null
+++ b/tests/Avalonia.RenderTests.WpfCompare/CrossUI.Wpf.cs
@@ -0,0 +1,302 @@
+using System;
+using System.Windows.Controls;
+using CrossUI;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using AlignmentX = System.Windows.Media.AlignmentX;
+using AlignmentY = System.Windows.Media.AlignmentY;
+using Brush = System.Windows.Media.Brush;
+using BrushMappingMode = System.Windows.Media.BrushMappingMode;
+using Color = Avalonia.Media.Color;
+using Drawing = System.Windows.Media.Drawing;
+using DrawingBrush = System.Windows.Media.DrawingBrush;
+using DrawingCollection = System.Windows.Media.DrawingCollection;
+using DrawingContext = System.Windows.Media.DrawingContext;
+using DrawingGroup = System.Windows.Media.DrawingGroup;
+using DrawingImage = System.Windows.Media.DrawingImage;
+using Geometry = System.Windows.Media.Geometry;
+using GeometryDrawing = System.Windows.Media.GeometryDrawing;
+using MatrixTransform = System.Windows.Media.MatrixTransform;
+using Pen = System.Windows.Media.Pen;
+using RectangleGeometry = System.Windows.Media.RectangleGeometry;
+using SolidColorBrush = System.Windows.Media.SolidColorBrush;
+using Stretch = System.Windows.Media.Stretch;
+using TileBrush = System.Windows.Media.TileBrush;
+using TileMode = System.Windows.Media.TileMode;
+using Transform = System.Windows.Media.Transform;
+using WPoint = System.Windows.Point;
+using WSize = System.Windows.Size;
+using WRect = System.Windows.Rect;
+using WColor = System.Windows.Media.Color;
+using WMatrix = System.Windows.Media.Matrix;
+using Avalonia.RenderTests.WpfCompare;
+using PenLineCap = Avalonia.Media.PenLineCap;
+using WPenLineCap = System.Windows.Media.PenLineCap;
+using PenLineJoin = Avalonia.Media.PenLineJoin;
+using WPenLineJoin = System.Windows.Media.PenLineJoin;
+
+namespace CrossUI
+{
+ public partial class CrossGlobals
+ {
+ public static ICrossStreamGeometryContextImplProvider GetContextImplProvider()
+ {
+ return new WpfCrossStreamGeometryContextImplProvider();
+ }
+ }
+
+ public class WpfCrossStreamGeometryContextImplProvider : ICrossStreamGeometryContextImplProvider
+ {
+ public ICrossStreamGeometryContextImpl Create()
+ {
+ return new WpfCrossStreamGeometryContextImpl();
+ }
+ }
+
+ public class WpfCrossStreamGeometryContextImpl : ICrossStreamGeometryContextImpl
+ {
+ private StreamGeometry _streamGeometry;
+ private StreamGeometryContext _context;
+
+ public WpfCrossStreamGeometryContextImpl()
+ {
+ _streamGeometry = new StreamGeometry();
+ _context = _streamGeometry.Open();
+ }
+
+ public void ArcTo(Avalonia.Point point, Avalonia.Size size, double rotationAngle, bool isLargeArc, Avalonia.Media.SweepDirection sweepDirection, bool isStroked)
+ {
+ _context.ArcTo(point.ToWpf(), size.ToWpf(), rotationAngle, isLargeArc, (SweepDirection)sweepDirection, isStroked, true);
+ }
+
+ public void BeginFigure(Avalonia.Point point, bool isFilled, bool isClosed)
+ {
+ _context.BeginFigure(point.ToWpf(), isFilled, isClosed);
+ }
+
+ public void CubicBezierTo(Avalonia.Point controlPoint1, Avalonia.Point controlPoint2, Avalonia.Point endPoint, bool isStroked)
+ {
+ _context.BezierTo(controlPoint1.ToWpf(), controlPoint2.ToWpf(), endPoint.ToWpf(), isStroked, true);
+ }
+
+ public void Dispose()
+ {
+ _context.Close();
+ }
+
+ public void EndFigure()
+ {
+ Dispose();
+ }
+
+ public object GetGeometry()
+ {
+ return _streamGeometry;
+ }
+
+ public void LineTo(Avalonia.Point point, bool isStroked)
+ {
+ _context.LineTo(point.ToWpf(), isStroked, true);
+ }
+
+ public void QuadraticBezierTo(Avalonia.Point controlPoint, Avalonia.Point endPoint, bool isStroked)
+ {
+ _context.QuadraticBezierTo(controlPoint.ToWpf(), endPoint.ToWpf(), isStroked, true);
+ }
+ }
+}
+
+namespace Avalonia.RenderTests.WpfCompare
+{
+ internal static class WpfConvertExtensions
+ {
+ public static WPoint ToWpf(this Point pt) => new(pt.X, pt.Y);
+ public static WSize ToWpf(this Size size) => new(size.Width, size.Height);
+ public static WRect ToWpf(this Rect rect) => new(rect.Left, rect.Top, rect.Width, rect.Height);
+ public static WColor ToWpf(this Color color) => WColor.FromArgb(color.A, color.R, color.G, color.B);
+ public static WMatrix ToWpf(this Matrix m) => new WMatrix(m.M11, m.M12, m.M21, m.M22, m.M31, m.M32);
+ }
+
+ internal class WpfCrossControl : Panel
+ {
+ private readonly CrossControl _src;
+ private readonly Dictionary _children;
+
+ public WpfCrossControl(CrossControl src)
+ {
+ _src = src;
+ _children = src.Children.ToDictionary(x => x, x => new WpfCrossControl(x));
+ Width = src.Bounds.Width;
+ Height = src.Bounds.Height;
+ RenderTransform = new MatrixTransform(src.RenderTransform.ToWpf());
+ foreach (var ch in src.Children)
+ {
+ var c = _children[ch];
+ this.Children.Add(c);
+ }
+ }
+
+ protected override WSize MeasureOverride(WSize availableSize)
+ {
+ foreach (var ch in _children)
+ ch.Value.Measure(ch.Key.Bounds.Size.ToWpf());
+ return _src.Bounds.Size.ToWpf();
+ }
+
+ protected override WSize ArrangeOverride(WSize finalSize)
+ {
+ foreach (var ch in _children)
+ ch.Value.Arrange(ch.Key.Bounds.ToWpf());
+ return base.ArrangeOverride(finalSize);
+ }
+
+ protected override void OnRender(DrawingContext context)
+ {
+ _src.Render(new WpfCrossDrawingContext(context));
+ }
+ }
+
+ internal class WpfCrossDrawingContext : ICrossDrawingContext
+ {
+ private readonly DrawingContext _ctx;
+
+ public WpfCrossDrawingContext(DrawingContext ctx)
+ {
+ _ctx = ctx;
+ }
+
+ private static Transform? ConvertTransform(Matrix? m) => m == null ? null : new MatrixTransform(m.Value.ToWpf());
+
+ private static Geometry ConvertGeometry(CrossGeometry g)
+ {
+ if (g is CrossRectangleGeometry rg)
+ return new RectangleGeometry(rg.Rect.ToWpf());
+ else if (g is CrossSvgGeometry svg)
+ return Geometry.Parse(svg.Path);
+ else if (g is CrossEllipseGeometry ellipse)
+ return new EllipseGeometry(ellipse.Rect.ToWpf());
+ else if (g is CrossStreamGeometry streamGeometry)
+ return (StreamGeometry)streamGeometry.GetContext().GetGeometry();
+ else if (g is CrossPathGeometry pathGeometry)
+ return new PathGeometry()
+ {
+ Figures = new PathFigureCollection(pathGeometry.Figures.Select(f => new PathFigure(
+ f.Start.ToWpf(), f.Segments.Select(s =>
+ s switch
+ {
+ CrossPathSegment.Line line => new LineSegment(line.To.ToWpf(), s.IsStroked),
+ CrossPathSegment.Arc arc => new ArcSegment(arc.Point.ToWpf(), arc.Size.ToWpf(), arc.RotationAngle, arc.IsLargeArc, (SweepDirection)arc.SweepDirection, s.IsStroked),
+ CrossPathSegment.CubicBezier cubicBezier => new BezierSegment(cubicBezier.Point1.ToWpf(), cubicBezier.Point2.ToWpf(), cubicBezier.Point3.ToWpf(), cubicBezier.IsStroked),
+ CrossPathSegment.QuadraticBezier quadraticBezier => new QuadraticBezierSegment(quadraticBezier.Point1.ToWpf(), quadraticBezier.Point2.ToWpf(), quadraticBezier.IsStroked),
+ _ => throw new NotImplementedException(),
+ }), f.Closed)))
+ };
+ throw new NotSupportedException();
+ }
+
+ private static Drawing ConvertDrawing(CrossDrawing src)
+ {
+ if (src is CrossDrawingGroup g)
+ return new DrawingGroup() { Children = new DrawingCollection(g.Children.Select(ConvertDrawing)) };
+ if (src is CrossGeometryDrawing geo)
+ return new GeometryDrawing()
+ {
+ Geometry = ConvertGeometry(geo.Geometry), Brush = ConvertBrush(geo.Brush), Pen = ConvertPen(geo.Pen)
+ };
+ throw new NotSupportedException();
+ }
+
+ private static Brush? ConvertBrush(CrossBrush? brush)
+ {
+ if (brush == null)
+ return null;
+ static Brush Sync(Brush dst, CrossBrush src)
+ {
+ dst.Opacity = src.Opacity;
+ dst.Transform = ConvertTransform(src.Transform);
+ dst.RelativeTransform = ConvertTransform(src.RelativeTransform);
+ return dst;
+ }
+
+ static Brush SyncTile(TileBrush dst, CrossTileBrush src)
+ {
+ dst.Stretch = (Stretch)src.Stretch;
+ dst.AlignmentX = (AlignmentX)src.AlignmentX;
+ dst.AlignmentY = (AlignmentY)src.AlignmentY;
+ dst.TileMode = (TileMode)src.TileMode;
+ dst.Viewbox = src.Viewbox.ToWpf();
+ dst.ViewboxUnits = (BrushMappingMode)src.ViewboxUnits;
+ dst.Viewport = src.Viewport.ToWpf();
+ dst.ViewportUnits = (BrushMappingMode)src.ViewportUnits;
+ return Sync(dst, src);
+ }
+
+ static Brush SyncGradient(GradientBrush dst, CrossGradientBrush src)
+ {
+ dst.MappingMode = (BrushMappingMode)src.MappingMode;
+ dst.SpreadMethod = (GradientSpreadMethod)src.SpreadMethod;
+ dst.GradientStops =
+ new GradientStopCollection(src.GradientStops.Select(s => new GradientStop(s.Color.ToWpf(), s.Offset)));
+ return Sync(dst, src);
+ }
+
+ if (brush is CrossSolidColorBrush br)
+ return Sync(new SolidColorBrush(br.Color.ToWpf()), brush);
+ if (brush is CrossDrawingBrush db)
+ return SyncTile(new DrawingBrush(ConvertDrawing(db.Drawing)), db);
+ if (brush is CrossRadialGradientBrush radial)
+ return SyncGradient(new RadialGradientBrush()
+ {
+ RadiusX = radial.RadiusX,
+ RadiusY = radial.RadiusY,
+ Center = radial.Center.ToWpf(),
+ GradientOrigin = radial.GradientOrigin.ToWpf()
+ }, radial);
+ throw new NotSupportedException();
+ }
+
+ private static Pen? ConvertPen(CrossPen? pen)
+ {
+ if (pen == null)
+ return null;
+
+ var cap = pen.LineCap switch
+ {
+ PenLineCap.Flat => WPenLineCap.Flat,
+ PenLineCap.Round => WPenLineCap.Round,
+ PenLineCap.Square => WPenLineCap.Square
+ };
+ var join = pen.LineJoin switch
+ {
+ PenLineJoin.Bevel => WPenLineJoin.Bevel,
+ PenLineJoin.Miter => WPenLineJoin.Miter,
+ PenLineJoin.Round => WPenLineJoin.Round
+ };
+
+ return new Pen(ConvertBrush(pen.Brush), pen.Thickness)
+ {
+ StartLineCap = cap,
+ EndLineCap = cap,
+ DashCap = cap,
+ LineJoin = join,
+ };
+ }
+
+ private static ImageSource ConvertImage(CrossImage image)
+ {
+ if (image is CrossBitmapImage bi)
+ return new BitmapImage(new Uri(bi.Path, UriKind.Absolute));
+ if (image is CrossDrawingImage di)
+ return new DrawingImage(ConvertDrawing(di.Drawing));
+ throw new NotSupportedException();
+ }
+
+ public void DrawRectangle(CrossBrush? brush, CrossPen? pen, Rect rc) => _ctx.DrawRectangle(ConvertBrush(brush), ConvertPen(pen), rc.ToWpf());
+ public void DrawGeometry(CrossBrush? brush, CrossPen? pen, CrossGeometry geo) =>
+ _ctx.DrawGeometry(ConvertBrush(brush), ConvertPen(pen), ConvertGeometry(geo));
+
+ public void DrawImage(CrossImage image, Rect rc) => _ctx.DrawImage(ConvertImage(image), rc.ToWpf());
+ }
+}
diff --git a/tests/Avalonia.RenderTests.WpfCompare/Properties/AssemblyInfo.cs b/tests/Avalonia.RenderTests.WpfCompare/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..a4bcec543f
--- /dev/null
+++ b/tests/Avalonia.RenderTests.WpfCompare/Properties/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using Xunit;
+
+[assembly: CollectionBehavior(DisableTestParallelization = true)]
diff --git a/tests/Avalonia.RenderTests/Composition/DirectFbCompositionTests.cs b/tests/Avalonia.RenderTests/Composition/DirectFbCompositionTests.cs
new file mode 100644
index 0000000000..cdf213d7c8
--- /dev/null
+++ b/tests/Avalonia.RenderTests/Composition/DirectFbCompositionTests.cs
@@ -0,0 +1,135 @@
+#if AVALONIA_SKIA
+using System;
+using System.IO;
+using System.Runtime.CompilerServices;
+using System.Threading.Tasks;
+using Avalonia.Controls;
+using Avalonia.Controls.Platform.Surfaces;
+using Avalonia.Controls.Primitives;
+using Avalonia.Controls.Shapes;
+using Avalonia.Layout;
+using Avalonia.Media;
+using Avalonia.Platform;
+using Avalonia.Rendering;
+using Avalonia.Rendering.Composition;
+using Avalonia.Threading;
+using Avalonia.UnitTests;
+using SkiaSharp;
+using Xunit;
+
+namespace Avalonia.Skia.RenderTests;
+
+public class DirectFbCompositionTests : TestBase
+{
+ public DirectFbCompositionTests()
+ : base(@"Composition\DirectFb")
+ {
+ }
+
+ class FuncFramebufferSurface : IFramebufferPlatformSurface
+ {
+ private readonly Func _cb;
+
+ public FuncFramebufferSurface(Func cb)
+ {
+ _cb = cb;
+ }
+
+ public IFramebufferRenderTarget CreateFramebufferRenderTarget()
+ {
+ return _cb();
+ }
+ }
+
+ [Theory,
+ InlineData(false),
+ InlineData(true)]
+ void Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised(bool advertised)
+ {
+ var timer = new ManualRenderTimer();
+ var compositor = new Compositor(new RenderLoop(timer), null, true,
+ new DispatcherCompositorScheduler(), true, Dispatcher.UIThread, new CompositionOptions
+ {
+ UseRegionDirtyRectClipping = true
+ });
+
+ Rectangle r1, r2;
+ var control = new Canvas
+ {
+ Width = 200, Height = 200, Background = Brushes.Yellow,
+ Children =
+ {
+ (r1 = new Rectangle
+ {
+ Fill = Brushes.Black,
+ Width = 40,
+ Height = 40,
+ Opacity = 0.6,
+ [Canvas.LeftProperty] = 40,
+ [Canvas.TopProperty] = 40,
+ }),
+ (r2 = new Rectangle
+ {
+ Fill = Brushes.Black,
+ Width = 40,
+ Height = 40,
+ Opacity = 0.6,
+ [Canvas.LeftProperty] = 120,
+ [Canvas.TopProperty] = 40,
+ }),
+ }
+ };
+ var root = new TestRenderRoot(1, null!);
+ SKBitmap fb = new SKBitmap(200, 200, SKColorType.Rgba8888, SKAlphaType.Premul);
+
+ ILockedFramebuffer LockFb() => new LockedFramebuffer(fb.GetAddress(0, 0), new(fb.Width, fb.Height),
+ fb.RowBytes, new Vector(96, 96), PixelFormat.Rgba8888, null);
+
+ bool previousFrameIsRetained = false;
+ IFramebufferRenderTarget rt = advertised
+ ? new FuncRetainedFramebufferRenderTarget((out FramebufferLockProperties props) =>
+ {
+ props = new() { PreviousFrameIsRetained = previousFrameIsRetained };
+ return LockFb();
+ })
+ : new FuncFramebufferRenderTarget(LockFb);
+
+ using var renderer =
+ new CompositingRenderer(root, compositor, () => new[] { new FuncFramebufferSurface(() => rt) });
+ root.Initialize(renderer, control);
+ control.Measure(new Size(control.Width, control.Height));
+ control.Arrange(new Rect(control.DesiredSize));
+ renderer.Start();
+ Dispatcher.UIThread.RunJobs();
+ timer.TriggerTick();
+ var image1 =
+ $"{nameof(Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised)}_advertized-{advertised}_initial";
+ SaveFile(fb, image1);
+
+ fb.Erase(SKColor.Empty);
+
+ previousFrameIsRetained = advertised;
+
+ r1.Fill = Brushes.Red;
+ r2.Fill = Brushes.Green;
+ Dispatcher.UIThread.RunJobs();
+ timer.TriggerTick();
+ var image2 =
+ $"{nameof(Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised)}_advertized-{advertised}_updated";
+ SaveFile(fb, image2);
+ CompareImages(image1, skipImmediate: true);
+ CompareImages(image2, skipImmediate: true);
+
+ }
+
+ void SaveFile(SKBitmap bmp, string name)
+ {
+ Directory.CreateDirectory(OutputPath);
+ var path = System.IO.Path.Combine(OutputPath, name + ".composited.out.png");
+ using var d = bmp.Encode(SKEncodedImageFormat.Png, 100);
+ using var f = File.Create(path);
+ d.SaveTo(f);
+ }
+
+}
+#endif
diff --git a/tests/Avalonia.RenderTests/CrossTests/Brushes/CrossTileBrushTests.cs b/tests/Avalonia.RenderTests/CrossTests/Brushes/CrossTileBrushTests.cs
new file mode 100644
index 0000000000..160aa25942
--- /dev/null
+++ b/tests/Avalonia.RenderTests/CrossTests/Brushes/CrossTileBrushTests.cs
@@ -0,0 +1,115 @@
+using System.Collections.Generic;
+using Avalonia.Media;
+using CrossUI;
+using Xunit;
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#elif AVALONIA_D2D
+namespace Avalonia.Direct2D1.RenderTests;
+#else
+namespace Avalonia.RenderTests.WpfCompare;
+#endif
+
+
+public class CrossTileBrushTests : CrossTestBase
+{
+ public CrossTileBrushTests() : base("Media/TileBrushes")
+ {
+ }
+
+ [CrossFact]
+ public void Simple_Checkboard_Pattern_Is_Rendered_Identically()
+ {
+ RenderAndCompare(new CrossControl()
+ {
+ Width = 100,
+ Height = 100,
+ Background = new CrossDrawingBrush()
+ {
+ Drawing = new CrossDrawingGroup()
+ {
+ Children =
+ {
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(0, 0, 20, 20)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.White)
+ },
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(0, 0, 10, 10)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.Black)
+ },
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(10, 10, 10, 10)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.Black)
+ },
+ }
+ },
+ Viewport = new Rect(0, 0, 10, 10),
+ ViewportUnits = BrushMappingMode.Absolute,
+ TileMode = TileMode.Tile
+ }
+ });
+
+ }
+
+ [CrossFact]
+ public void Should_Render_Scaled_TileBrush()
+ {
+ var brush = new CrossDrawingBrush
+ {
+ TileMode = TileMode.Tile,
+ Viewbox = new Rect(0, 0, 20, 20),
+ ViewboxUnits = BrushMappingMode.Absolute,
+ Viewport = new Rect(0, 0, 20, 20),
+ ViewportUnits = BrushMappingMode.Absolute,
+ Drawing = new CrossGeometryDrawing(new CrossSvgGeometry("M 0 0 l 50 50"))
+ {
+ Pen = new CrossPen { Brush = new CrossSolidColorBrush(Colors.Red), Thickness = 5 }
+ }
+ };
+
+ RenderAndCompare(new CrossControl()
+ {
+ Width = 100,
+ Height = 100,
+ Background = brush
+ });
+
+ }
+
+ [CrossFact]
+ public void Should_Render_With_Transform()
+ {
+ var brush = new CrossDrawingBrush()
+ {
+ TileMode = TileMode.None,
+ Viewbox = new Rect(0, 0, 1, 1),
+ ViewboxUnits = BrushMappingMode.RelativeToBoundingBox,
+ Viewport = new Rect(0, 0, 50, 50),
+ ViewportUnits = BrushMappingMode.Absolute,
+ Transform = Matrix.CreateTranslation(150, 150),
+ Drawing = new CrossDrawingGroup()
+ {
+ Children = new List()
+ {
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(0, 0, 100, 100)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.Crimson)
+ },
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(20, 20, 60, 60)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.Blue)
+ }
+ }
+ }
+ };
+
+ RenderAndCompare(new CrossControl()
+ {
+ Width = 200,
+ Height = 200,
+ Background = brush
+ });
+ }
+}
diff --git a/tests/Avalonia.RenderTests/CrossTests/Brushes/RadialGradientBrushTests.cs b/tests/Avalonia.RenderTests/CrossTests/Brushes/RadialGradientBrushTests.cs
new file mode 100644
index 0000000000..98529dcbee
--- /dev/null
+++ b/tests/Avalonia.RenderTests/CrossTests/Brushes/RadialGradientBrushTests.cs
@@ -0,0 +1,63 @@
+using Avalonia.Media;
+using CrossUI;
+using Xunit;
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#elif AVALONIA_D2D
+namespace Avalonia.Direct2D1.RenderTests;
+#else
+namespace Avalonia.RenderTests.WpfCompare;
+#endif
+
+
+public class CrossRadialGradientBrushTests : CrossTestBase
+{
+ public CrossRadialGradientBrushTests() : base("Media/RadialGradientBrush")
+ {
+ }
+
+ [CrossFact]
+ public void Transform_Should_Work_As_Expected()
+ {
+ RenderAndCompare(
+ new CrossControl()
+ {
+ Children =
+ {
+ new CrossFuncControl(ctx =>
+ {
+ var geo = new CrossEllipseGeometry(new Rect(3.430200000000003, 29.019099999999998, 42.7692,
+ 19.6732));
+ ctx.DrawGeometry(new CrossSolidColorBrush(Colors.Magenta), null, geo);
+ ctx.DrawGeometry(
+ new CrossRadialGradientBrush()
+ {
+ RadiusX = 12.289,
+ RadiusY = 12.289,
+ GradientOrigin = new Point(15.116, 63.965),
+ Center = new Point(15.116, 63.965),
+ MappingMode = BrushMappingMode.Absolute,
+ SpreadMethod = GradientSpreadMethod.Pad,
+ GradientStops =
+ {
+ new GradientStop(Colors.Black, 0), new GradientStop(Colors.Transparent, 1)
+ },
+ Transform = new Matrix(1.664, 0,
+ 0, 0.75621371,
+ -0.06567275, -10.272)
+ }, null, geo);
+ })
+ {
+ Width = 48,
+ Height = 48,
+ RenderTransform = Matrix.CreateScale(4, 4)
+ }
+ },
+ Width = 256,
+ Height = 256,
+ Background = new CrossSolidColorBrush(Colors.White)
+ });
+
+ }
+}
diff --git a/tests/Avalonia.RenderTests/CrossTests/CrossGeometryTests.cs b/tests/Avalonia.RenderTests/CrossTests/CrossGeometryTests.cs
new file mode 100644
index 0000000000..a5492328e6
--- /dev/null
+++ b/tests/Avalonia.RenderTests/CrossTests/CrossGeometryTests.cs
@@ -0,0 +1,159 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Avalonia.Media;
+using CrossUI;
+using Xunit;
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#elif AVALONIA_D2D
+namespace Avalonia.Direct2D1.RenderTests;
+#else
+namespace Avalonia.RenderTests.WpfCompare;
+#endif
+
+
+public class CrossGeometryTests : CrossTestBase
+{
+ public CrossGeometryTests() : base("Media/Geometry")
+ {
+ }
+
+ [CrossFact]
+ public void Should_Render_Stream_Geometry()
+ {
+ var geometry = new CrossStreamGeometry();
+
+ var context = geometry.GetContext();
+ context.BeginFigure(new Point(150, 15), true, true);
+ context.LineTo(new Point(258, 77), true);
+ context.LineTo(new Point(258, 202), true);
+ context.LineTo(new Point(150, 265), true);
+ context.LineTo(new Point(42, 202), true);
+ context.LineTo(new Point(42, 77), true);
+ context.EndFigure();
+
+ var brush = new CrossDrawingBrush()
+ {
+ TileMode = TileMode.None,
+ Drawing = new CrossDrawingGroup()
+ {
+ Children = new List()
+ {
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(0, 0, 300, 280)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.White)
+ },
+ new CrossGeometryDrawing(geometry)
+ {
+ Pen = new CrossPen()
+ {
+ Brush = new CrossSolidColorBrush(Colors.Black),
+ Thickness = 2
+ }
+ }
+ }
+ }
+ };
+
+ RenderAndCompare(new CrossControl()
+ {
+ Width = 300,
+ Height = 280,
+ Background = brush
+ });
+ }
+
+ [CrossFact]
+ public void Should_Render_Geometry_With_Strokeless_Lines()
+ {
+ var geometry = new CrossStreamGeometry();
+
+ var context = geometry.GetContext();
+ context.BeginFigure(new Point(150, 15), true, true);
+ context.LineTo(new Point(258, 77), true);
+ context.LineTo(new Point(258, 202), false);
+ context.LineTo(new Point(150, 265), true);
+ context.LineTo(new Point(42, 202), true);
+ context.LineTo(new Point(42, 77), false);
+ context.EndFigure();
+
+ var brush = new CrossDrawingBrush()
+ {
+ TileMode = TileMode.None,
+ Drawing = new CrossDrawingGroup()
+ {
+ Children = new List()
+ {
+ new CrossGeometryDrawing(new CrossRectangleGeometry(new(0, 0, 300, 280)))
+ {
+ Brush = new CrossSolidColorBrush(Colors.White)
+ },
+ new CrossGeometryDrawing(geometry)
+ {
+ Pen = new CrossPen()
+ {
+ Brush = new CrossSolidColorBrush(Colors.Black),
+ Thickness = 2
+ }
+ }
+ }
+ }
+ };
+
+ RenderAndCompare(new CrossControl()
+ {
+ Width = 300,
+ Height = 280,
+ Background = brush
+ });
+ }
+
+ // Skip the test for now
+#if !AVALONIA_SKIA
+ [CrossTheory,
+ InlineData(PenLineCap.Flat, PenLineJoin.Round),
+ InlineData(PenLineCap.Flat, PenLineJoin.Bevel),
+ InlineData(PenLineCap.Flat, PenLineJoin.Miter),
+ InlineData(PenLineCap.Round, PenLineJoin.Round),
+ InlineData(PenLineCap.Round, PenLineJoin.Bevel),
+ InlineData(PenLineCap.Round, PenLineJoin.Miter),
+ ]
+#endif
+ public void Should_Properly_CloseFigure(PenLineCap lineCap, PenLineJoin lineJoin)
+ {
+ var geometry = new CrossPathGeometry();
+
+
+ var center = new Point(150, 150);
+ var r = 100d;
+
+ var pointCount = 5;
+ var points = Enumerable.Range(0, pointCount).Select(a => a * Math.PI / pointCount * 2).Select(a =>
+ new Point(center.X + Math.Sin(a) * r, center.Y + Math.Cos(a) * r)).ToArray();
+
+ var figure = new CrossPathFigure() { Start = points[0], Closed = true };
+ geometry.Figures.Add(figure);
+ var lineNum = 0;
+ for (var c = 2; lineNum < pointCount - 1; c = (c + 2) % pointCount, lineNum++)
+ {
+ figure.Segments.Add(new CrossPathSegment.Line(points[c], (lineNum) % 3 < 2));
+ }
+
+ var control = new CrossFuncControl(ctx =>
+ {
+ ctx.DrawRectangle(new CrossSolidColorBrush(Colors.White), null, new(0, 0, 300, 300));
+ ctx.DrawGeometry(null,
+ new CrossPen()
+ {
+ Brush = new CrossSolidColorBrush(Colors.Black),
+ Thickness = 20,
+ LineJoin = lineJoin,
+ LineCap = lineCap
+ }, geometry);
+ }) { Width = 300, Height = 300 };
+ RenderAndCompare(control,
+ $"{nameof(Should_Properly_CloseFigure)}_{lineCap}_{lineJoin}");
+ }
+}
diff --git a/tests/Avalonia.RenderTests/CrossUI/CrossUI.Avalonia.cs b/tests/Avalonia.RenderTests/CrossUI/CrossUI.Avalonia.cs
new file mode 100644
index 0000000000..8ac89dc220
--- /dev/null
+++ b/tests/Avalonia.RenderTests/CrossUI/CrossUI.Avalonia.cs
@@ -0,0 +1,300 @@
+#nullable enable
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Avalonia.Controls;
+using Avalonia.Media;
+using Avalonia.Media.Imaging;
+using Avalonia.Media.Immutable;
+using CrossUI;
+
+namespace CrossUI
+{
+ using Avalonia;
+
+ public partial class CrossGlobals
+ {
+ public static ICrossStreamGeometryContextImplProvider GetContextImplProvider()
+ {
+ return new AvaloniaCrossStreamGeometryContextImplProvider();
+ }
+ }
+
+ public class AvaloniaCrossStreamGeometryContextImplProvider : ICrossStreamGeometryContextImplProvider
+ {
+ public ICrossStreamGeometryContextImpl Create()
+ {
+ return new AvaloniaCrossStreamGeometryContextImpl();
+ }
+ }
+
+ public class AvaloniaCrossStreamGeometryContextImpl : ICrossStreamGeometryContextImpl
+ {
+ private StreamGeometry _streamGeometry;
+ private StreamGeometryContext _context;
+ private bool _isClosed;
+
+ public AvaloniaCrossStreamGeometryContextImpl()
+ {
+ _streamGeometry = new StreamGeometry();
+ _context = _streamGeometry.Open();
+ }
+
+ public void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked)
+ {
+ _context.ArcTo(point, size, rotationAngle, isLargeArc, sweepDirection, isStroked);
+ }
+
+ public void BeginFigure(Point point, bool isFilled, bool isClosed)
+ {
+ _isClosed = isClosed;
+ _context.BeginFigure(point, isFilled);
+ }
+
+ public void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked)
+ {
+ _context.CubicBezierTo(controlPoint1, controlPoint2, endPoint, isStroked);
+ }
+
+ public void Dispose()
+ {
+ _context.Dispose();
+ }
+
+ public void EndFigure()
+ {
+ _context.EndFigure(_isClosed);
+ Dispose();
+ }
+
+ public object GetGeometry()
+ {
+ return _streamGeometry;
+ }
+
+ public void LineTo(Point point, bool isStroked)
+ {
+ _context.LineTo(point, isStroked);
+ }
+
+ public void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked)
+ {
+ _context.QuadraticBezierTo(controlPoint, endPoint, isStroked);
+ }
+ }
+}
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests.CrossUI
+{
+#else
+namespace Avalonia.Direct2D1.RenderTests.CrossUI
+{
+#endif
+
+ class AvaloniaCrossControl : Control
+ {
+ private readonly CrossControl _src;
+ private readonly Dictionary _children;
+
+ public AvaloniaCrossControl(CrossControl src)
+ {
+ _src = src;
+ _children = src.Children.ToDictionary(x => x, x => new AvaloniaCrossControl(x));
+ Width = src.Bounds.Width;
+ Height = src.Bounds.Height;
+ RenderTransform = new MatrixTransform(src.RenderTransform);
+ RenderTransformOrigin = new RelativePoint(default, RelativeUnit.Relative);
+ foreach (var ch in src.Children)
+ {
+ var c = _children[ch];
+ VisualChildren.Add(c);
+ LogicalChildren.Add(c);
+ }
+ }
+
+ protected override Size MeasureOverride(Size availableSize)
+ {
+ foreach (var ch in _children)
+ ch.Value.Measure(ch.Key.Bounds.Size);
+ return _src.Bounds.Size;
+ }
+
+ protected override Size ArrangeOverride(Size finalSize)
+ {
+ foreach (var ch in _children)
+ ch.Value.Arrange(ch.Key.Bounds);
+ return finalSize;
+ }
+
+ public override void Render(DrawingContext context)
+ {
+ _src.Render(new AvaloniaCrossDrawingContext(context));
+ }
+ }
+
+ class AvaloniaCrossDrawingContext : ICrossDrawingContext
+ {
+ private readonly DrawingContext _ctx;
+
+ public AvaloniaCrossDrawingContext(DrawingContext ctx)
+ {
+ _ctx = ctx;
+ }
+
+ static Transform? ConvertTransform(Matrix? m) => m == null ? null : new MatrixTransform(m.Value);
+
+ static RelativeRect ConvertRect(Rect rc, BrushMappingMode mode)
+ => new RelativeRect(rc,
+ mode == BrushMappingMode.RelativeToBoundingBox ? RelativeUnit.Relative : RelativeUnit.Absolute);
+
+ static RelativePoint ConvertPoint(Point pt, BrushMappingMode mode)
+ => new(pt, mode == BrushMappingMode.RelativeToBoundingBox ? RelativeUnit.Relative : RelativeUnit.Absolute);
+
+ static RelativeScalar ConvertScalar(double scalar, BrushMappingMode mode)
+ => new(scalar, mode == BrushMappingMode.RelativeToBoundingBox ? RelativeUnit.Relative : RelativeUnit.Absolute);
+
+ static Geometry ConvertGeometry(CrossGeometry g)
+ {
+ if (g is CrossRectangleGeometry rg)
+ return new RectangleGeometry(rg.Rect);
+ else if (g is CrossSvgGeometry svg)
+ return PathGeometry.Parse(svg.Path);
+ else if (g is CrossEllipseGeometry ellipse)
+ return new EllipseGeometry(ellipse.Rect);
+ else if(g is CrossStreamGeometry streamGeometry)
+ return (StreamGeometry)streamGeometry.GetContext().GetGeometry();
+ else if (g is CrossPathGeometry path)
+ return new PathGeometry()
+ {
+ Figures = RetAddRange(new PathFigures(), path.Figures.Select(f =>
+ new PathFigure()
+ {
+ StartPoint = f.Start,
+ IsClosed = f.Closed,
+ Segments = RetAddRange(new PathSegments(), f.Segments.Select(s =>
+ s switch
+ {
+ CrossPathSegment.Line l => new LineSegment()
+ {
+ Point = l.To, IsStroked = l.IsStroked
+ },
+ CrossPathSegment.Arc a => new ArcSegment()
+ {
+ Point = a.Point,
+ RotationAngle = a.RotationAngle,
+ Size = a.Size,
+ IsLargeArc = a.IsLargeArc,
+ SweepDirection = a.SweepDirection,
+ IsStroked = a.IsStroked
+ },
+ CrossPathSegment.CubicBezier c => new BezierSegment()
+ {
+ Point1 = c.Point1,
+ Point2 = c.Point2,
+ Point3 = c.Point3,
+ IsStroked = c.IsStroked
+ },
+ CrossPathSegment.QuadraticBezier q => new QuadraticBezierSegment()
+ {
+ Point1 = q.Point1,
+ Point2 = q.Point2,
+ IsStroked = q.IsStroked
+ }
+ }))
+ }))
+ };
+ throw new NotSupportedException();
+ }
+
+ static TList RetAddRange(TList l, IEnumerable en) where TList : IList
+ {
+ foreach(var e in en)
+ l.Add(e);
+ return l;
+ }
+
+ static Drawing ConvertDrawing(CrossDrawing src)
+ {
+ if (src is CrossDrawingGroup g)
+ return new DrawingGroup() { Children = new DrawingCollection(g.Children.Select(ConvertDrawing)) };
+ if (src is CrossGeometryDrawing geo)
+ return new GeometryDrawing()
+ {
+ Geometry = ConvertGeometry(geo.Geometry), Brush = ConvertBrush(geo.Brush), Pen = ConvertPen(geo.Pen)
+ };
+ throw new NotSupportedException();
+ }
+
+ static IBrush? ConvertBrush(CrossBrush? brush)
+ {
+ if (brush == null)
+ return null;
+ static Brush Sync(Brush dst, CrossBrush src)
+ {
+ dst.Opacity = src.Opacity;
+ dst.Transform = ConvertTransform(src.Transform);
+ dst.TransformOrigin = new RelativePoint(default, RelativeUnit.Absolute);
+ if (src.RelativeTransform != null)
+ throw new PlatformNotSupportedException();
+ return dst;
+ }
+
+ static Brush SyncTile(TileBrush dst, CrossTileBrush src)
+ {
+ dst.Stretch = src.Stretch;
+ dst.AlignmentX = src.AlignmentX;
+ dst.AlignmentY = src.AlignmentY;
+ dst.TileMode = src.TileMode;
+ dst.SourceRect = ConvertRect(src.Viewbox, src.ViewboxUnits);
+ dst.DestinationRect = ConvertRect(src.Viewport, src.ViewportUnits);
+ return Sync(dst, src);
+ }
+
+ static Brush SyncGradient(GradientBrush dst, CrossGradientBrush src)
+ {
+ dst.GradientStops = new GradientStops();
+ dst.GradientStops.AddRange(src.GradientStops);
+ dst.SpreadMethod = src.SpreadMethod;
+ return Sync(dst, src);
+ }
+
+ if (brush is CrossSolidColorBrush br)
+ return Sync(new SolidColorBrush(br.Color), brush);
+ if (brush is CrossDrawingBrush db)
+ return SyncTile(new DrawingBrush(ConvertDrawing(db.Drawing)), db);
+ if (brush is CrossRadialGradientBrush radial)
+ return SyncGradient(
+ new RadialGradientBrush()
+ {
+ Center = ConvertPoint(radial.Center, radial.MappingMode),
+ GradientOrigin = ConvertPoint(radial.GradientOrigin, radial.MappingMode),
+ RadiusX = ConvertScalar(radial.RadiusX, radial.MappingMode),
+ RadiusY = ConvertScalar(radial.RadiusY, radial.MappingMode)
+ }, radial);
+ throw new NotSupportedException();
+ }
+
+ static IPen? ConvertPen(CrossPen? pen)
+ {
+ if (pen == null)
+ return null;
+ return new Pen(ConvertBrush(pen.Brush), pen.Thickness) { LineCap = pen.LineCap, LineJoin = pen.LineJoin };
+ }
+
+ static IImage ConvertImage(CrossImage image)
+ {
+ if (image is CrossBitmapImage bi)
+ return new Bitmap(bi.Path);
+ if (image is CrossDrawingImage di)
+ return new DrawingImage(ConvertDrawing(di.Drawing));
+ throw new NotSupportedException();
+ }
+
+ public void DrawRectangle(CrossBrush? brush, CrossPen? pen, Rect rc) => _ctx.DrawRectangle(ConvertBrush(brush), ConvertPen(pen), rc);
+ public void DrawGeometry(CrossBrush? brush, CrossPen? pen, CrossGeometry geometry) =>
+ _ctx.DrawGeometry(ConvertBrush(brush), ConvertPen(pen), ConvertGeometry(geometry));
+
+ public void DrawImage(CrossImage image, Rect rc) => _ctx.DrawImage(ConvertImage(image), rc);
+ }
+}
diff --git a/tests/Avalonia.RenderTests/CrossUI/CrossUI.cs b/tests/Avalonia.RenderTests/CrossUI/CrossUI.cs
new file mode 100644
index 0000000000..3710123eaf
--- /dev/null
+++ b/tests/Avalonia.RenderTests/CrossUI/CrossUI.cs
@@ -0,0 +1,263 @@
+// ReSharper disable RedundantNameQualifier
+
+#nullable enable
+using System;
+using System.Collections.Generic;
+using Avalonia.Media;
+using Avalonia;
+
+namespace CrossUI;
+
+public partial class CrossGlobals
+{
+
+}
+
+public class CrossBrush
+{
+ public double Opacity = 1;
+ public Avalonia.Matrix? Transform;
+ public Avalonia.Matrix? RelativeTransform;
+}
+
+public class CrossSolidColorBrush : CrossBrush
+{
+ public Avalonia.Media.Color Color = Avalonia.Media.Colors.Black;
+
+ public CrossSolidColorBrush()
+ {
+
+ }
+
+ public CrossSolidColorBrush(Avalonia.Media.Color color)
+ {
+ Color = color;
+ }
+}
+
+public class CrossGradientBrush : CrossBrush
+{
+ public List GradientStops = new();
+ public Avalonia.Media.GradientSpreadMethod SpreadMethod;
+ public BrushMappingMode MappingMode;
+}
+
+public class CrossRadialGradientBrush : CrossGradientBrush
+{
+ public Avalonia.Point Center;
+ public Avalonia.Point GradientOrigin;
+ public double RadiusX, RadiusY;
+}
+
+public class CrossTileBrush : CrossBrush
+{
+ public Avalonia.Media.AlignmentX AlignmentX = AlignmentX.Center;
+ public Avalonia.Media.AlignmentY AlignmentY = AlignmentY.Center;
+ public Avalonia.Media.Stretch Stretch = Stretch.Fill;
+ public Avalonia.Media.TileMode TileMode = TileMode.None;
+ public Rect Viewbox = new Rect(0, 0, 1, 1);
+ public Avalonia.Media.BrushMappingMode ViewboxUnits = BrushMappingMode.RelativeToBoundingBox;
+ public Rect Viewport = new Rect(0, 0, 1, 1);
+ public Avalonia.Media.BrushMappingMode ViewportUnits = BrushMappingMode.RelativeToBoundingBox;
+}
+
+
+public abstract class CrossDrawing
+{
+}
+
+
+public class CrossGeometryDrawing : CrossDrawing
+{
+ public CrossGeometry Geometry;
+ public CrossBrush? Brush;
+ public CrossPen? Pen;
+ public CrossGeometryDrawing(CrossGeometry geometry)
+ {
+ Geometry = geometry;
+ }
+}
+
+public class CrossDrawingGroup : CrossDrawing
+{
+ public List Children = new();
+}
+
+public abstract class CrossGeometry
+{
+
+}
+
+public class CrossSvgGeometry : CrossGeometry
+{
+ public string Path;
+
+ public CrossSvgGeometry(string path)
+ {
+ Path = path;
+ }
+}
+
+public class CrossEllipseGeometry : CrossGeometry
+{
+ public CrossEllipseGeometry(Rect rect)
+ {
+ Rect = rect;
+ }
+
+ public CrossEllipseGeometry()
+ {
+
+ }
+
+ public Rect Rect { get; set; }
+}
+
+public class CrossStreamGeometry : CrossGeometry
+{
+ private ICrossStreamGeometryContextImpl? _contextImpl;
+
+ public CrossStreamGeometry()
+ {
+
+ }
+
+ public ICrossStreamGeometryContextImpl GetContext()
+ {
+ _contextImpl ??= CrossGlobals.GetContextImplProvider().Create();
+
+ return _contextImpl;
+ }
+}
+
+public class CrossRectangleGeometry : CrossGeometry
+{
+ public Rect Rect;
+
+ public CrossRectangleGeometry(Rect rect)
+ {
+ Rect = rect;
+ }
+}
+
+public class CrossPathGeometry : CrossGeometry
+{
+ public List Figures { get; set; } = new();
+}
+
+public class CrossPathFigure
+{
+ public Point Start { get; set; }
+ public List Segments { get; set; } = new();
+ public bool Closed { get; set; }
+}
+
+public abstract record class CrossPathSegment(bool IsStroked)
+{
+ public record Line(Point To, bool IsStroked) : CrossPathSegment(IsStroked);
+ public record Arc(Point Point, Size Size, double RotationAngle, bool IsLargeArc, SweepDirection SweepDirection, bool IsStroked) : CrossPathSegment(IsStroked);
+ public record CubicBezier(Point Point1, Point Point2, Point Point3, bool IsStroked) : CrossPathSegment(IsStroked);
+ public record QuadraticBezier(Point Point1, Point Point2, bool IsStroked) : CrossPathSegment(IsStroked);
+}
+
+public class CrossDrawingBrush : CrossTileBrush
+{
+ public CrossDrawing Drawing;
+}
+
+public class CrossPen
+{
+ public CrossBrush Brush;
+ public double Thickness = 1;
+ public PenLineJoin LineJoin { get; set; } = PenLineJoin.Miter;
+ public PenLineCap LineCap { get; set; } = PenLineCap.Flat;
+}
+
+public interface ICrossStreamGeometryContextImpl : IDisposable
+{
+ object GetGeometry();
+ void BeginFigure(Point point, bool isFilled, bool isClosed);
+ void EndFigure();
+ void LineTo(Point point, bool isStroked);
+ void ArcTo(Point point, Size size, double rotationAngle, bool isLargeArc, SweepDirection sweepDirection, bool isStroked);
+ void CubicBezierTo(Point controlPoint1, Point controlPoint2, Point endPoint, bool isStroked);
+ void QuadraticBezierTo(Point controlPoint, Point endPoint, bool isStroked);
+}
+
+public interface ICrossStreamGeometryContextImplProvider
+{
+ ICrossStreamGeometryContextImpl Create();
+}
+
+public interface ICrossDrawingContext
+{
+ void DrawRectangle(CrossBrush? brush, CrossPen? pen, Rect rc);
+ void DrawGeometry(CrossBrush? brush, CrossPen? pen, CrossGeometry geometry);
+ void DrawImage(CrossImage image, Rect rc);
+}
+
+public abstract class CrossImage
+{
+
+}
+
+public class CrossBitmapImage : CrossImage
+{
+ public string Path;
+ public CrossBitmapImage(string path)
+ {
+ Path = path;
+ }
+}
+
+public class CrossDrawingImage : CrossImage
+{
+ public CrossDrawing Drawing;
+}
+
+
+public class CrossControl
+{
+ public Rect Bounds => new Rect(Left, Top, Width, Height);
+ public double Left, Top, Width, Height;
+ public CrossBrush? Background;
+ public CrossPen? Outline;
+ public List Children = new();
+ public Matrix RenderTransform = Matrix.Identity;
+
+ public virtual void Render(ICrossDrawingContext ctx)
+ {
+ var rc = new Rect(Bounds.Size);
+ if (Background != null || Outline != null)
+ ctx.DrawRectangle(Background, Outline, rc);
+ }
+}
+
+public class CrossFuncControl : CrossControl
+{
+ private readonly Action _render;
+
+ public CrossFuncControl(Action render)
+ {
+ _render = render;
+ }
+
+ public override void Render(ICrossDrawingContext ctx)
+ {
+ base.Render(ctx);
+ _render(ctx);
+ }
+}
+
+public class CrossImageControl : CrossControl
+{
+ public CrossImage Image;
+ public override void Render(ICrossDrawingContext ctx)
+ {
+ base.Render(ctx);
+ var rc = new Rect(Bounds.Size);
+ ctx.DrawImage(Image, rc);
+ }
+}
+
+
diff --git a/tests/Avalonia.RenderTests/Media/BitmapTests.cs b/tests/Avalonia.RenderTests/Media/BitmapTests.cs
index 1b16617f87..38b23e1bf7 100644
--- a/tests/Avalonia.RenderTests/Media/BitmapTests.cs
+++ b/tests/Avalonia.RenderTests/Media/BitmapTests.cs
@@ -72,7 +72,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media
var r = AvaloniaLocator.Current.GetRequiredService();
using(var cpuContext = r.CreateBackendContext(null))
using (var target = cpuContext.CreateRenderTarget(new object[] { fb }))
- using (var ctx = target.CreateDrawingContext())
+ using (var ctx = target.CreateDrawingContext(false))
{
ctx.Clear(Colors.Transparent);
ctx.PushOpacity(0.8, new Rect(0, 0, 80, 80));
@@ -246,5 +246,34 @@ namespace Avalonia.Direct2D1.RenderTests.Media
bmp.CopyPixels(default, new IntPtr(pCopyTo), data.Length, stride);
Assert.Equal(data, copyTo);
}
+
+ [Fact]
+ public unsafe void Should_CopyPixels_With_Source_Rect()
+ {
+ var size = 80;
+ var partSize = 20;
+ var bitmap = new RenderTargetBitmap(new PixelSize(size, size));
+
+ using (var context = bitmap.CreateDrawingContext())
+ {
+ context.FillRectangle(Brushes.Black,
+ new Rect(0, 0, bitmap.PixelSize.Width, bitmap.PixelSize.Height));
+ context.FillRectangle(Brushes.White, new Rect(partSize, partSize, partSize, partSize));
+ }
+
+ var bpp = bitmap.Format!.Value.BitsPerPixel / 8;
+ var buffer = new byte[partSize * partSize * bpp];
+
+ fixed (byte* pointer = buffer)
+ {
+ bitmap.CopyPixels(new PixelRect(partSize, partSize, partSize, partSize), (IntPtr)pointer,
+ buffer.Length, partSize * bpp);
+ }
+
+ foreach (var t in buffer)
+ {
+ Assert.Equal(byte.MaxValue, t);
+ }
+ }
}
}
diff --git a/tests/Avalonia.RenderTests/Media/ImageBrushTests.cs b/tests/Avalonia.RenderTests/Media/ImageBrushTests.cs
index 640aed2ea8..aef33bc131 100644
--- a/tests/Avalonia.RenderTests/Media/ImageBrushTests.cs
+++ b/tests/Avalonia.RenderTests/Media/ImageBrushTests.cs
@@ -460,5 +460,95 @@ namespace Avalonia.Direct2D1.RenderTests.Media
await RenderToFile(new RelativePointTestPrimitivesHelper(brush), testName);
CompareImages(testName);
}
+
+ [Fact]
+ public async Task ImageBrush_Should_Render_With_Transform()
+ {
+ var image = new Image
+ {
+ Width = 200,
+ Height = 200,
+ Source = new DrawingImage
+ {
+ Drawing = new GeometryDrawing
+ {
+ Brush = new DrawingBrush
+ {
+ Transform = new TranslateTransform { X = 10, Y = 10 },
+ Drawing = new GeometryDrawing
+ {
+ Brush = Brushes.MediumBlue,
+ Geometry = new RectangleGeometry { Rect = new Rect(0, 0, 48, 48) }
+ }
+ },
+ Geometry = new RectangleGeometry { Rect = new Rect(0, 0, 48, 48) }
+ }
+ }
+ };
+
+ await RenderToFile(image);
+
+ CompareImages();
+ }
+
+ [Fact]
+ public async Task ImageBrush_Should_Render_With_TransformOrigin()
+ {
+ var image = new Image
+ {
+ Width = 200,
+ Height = 200,
+ Source = new DrawingImage
+ {
+ Drawing = new GeometryDrawing
+ {
+ Brush = new DrawingBrush
+ {
+ Transform = new RotateTransform(45),
+ TransformOrigin = new RelativePoint(.5,.5, RelativeUnit.Relative),
+ Drawing = new GeometryDrawing
+ {
+ Brush = Brushes.MediumBlue,
+ Geometry = new RectangleGeometry { Rect = new Rect(0, 0, 48, 48) }
+ }
+ },
+ Geometry = new RectangleGeometry { Rect = new Rect(0, 0, 48, 48) }
+ }
+ }
+ };
+
+ await RenderToFile(image);
+
+ CompareImages();
+ }
+
+ [Fact]
+ public async Task ImageBrush_Tile_Small_Image_With_Transform()
+ {
+ Decorator target = new Decorator
+ {
+ Width = 200,
+ Height = 200,
+ Child = new Rectangle
+ {
+ Margin = new Thickness(8),
+ Fill = new DrawingBrush
+ {
+ DestinationRect = new RelativeRect(0,0,32,32, RelativeUnit.Absolute),
+ Transform = new TranslateTransform(10,10),
+ Stretch = Stretch.None,
+ TileMode = TileMode.Tile,
+ Drawing = new ImageDrawing
+ {
+ Rect = new Rect(0,0,32,32),
+ ImageSource = new Bitmap(SmallBitmapPath)
+ }
+ }
+ }
+ };
+
+ await RenderToFile(target);
+ CompareImages();
+ }
}
}
diff --git a/tests/Avalonia.RenderTests/Media/ImageDrawingTests.cs b/tests/Avalonia.RenderTests/Media/ImageDrawingTests.cs
index a86113b4ef..8a571c4d19 100644
--- a/tests/Avalonia.RenderTests/Media/ImageDrawingTests.cs
+++ b/tests/Avalonia.RenderTests/Media/ImageDrawingTests.cs
@@ -83,5 +83,61 @@ namespace Avalonia.Direct2D1.RenderTests.Media
await RenderToFile(target);
CompareImages();
}
+
+ [Fact]
+ public async Task Should_Render_DrawingBrushTransform()
+ {
+ var target = new Border
+ {
+ Width = 400,
+ Height = 400,
+ Child = new DrawingBrushTransformTest()
+ };
+
+ await RenderToFile(target);
+ CompareImages();
+ }
+
+ public class DrawingBrushTransformTest : Control
+ {
+ private readonly DrawingBrush _brush;
+
+ public DrawingBrushTransformTest()
+ {
+ _brush = new DrawingBrush()
+ {
+ TileMode = TileMode.None,
+ SourceRect = new RelativeRect(0, 0, 1, 1, RelativeUnit.Relative),
+ DestinationRect = new RelativeRect(0, 0, 50, 50, RelativeUnit.Absolute),
+ Transform = new TranslateTransform(150, 150),
+ Drawing = new DrawingGroup()
+ {
+ Children = new DrawingCollection()
+ {
+ new GeometryDrawing
+ {
+ Brush = Brushes.Crimson,
+ Geometry = new RectangleGeometry(new(0, 0, 100, 100))
+ },
+ new GeometryDrawing
+ {
+ Brush = Brushes.Blue,
+ Geometry = new RectangleGeometry(new(20, 20, 60, 60))
+ }
+ }
+ }
+ };
+ }
+
+ public override void Render(DrawingContext drawingContext)
+ {
+ var pop = drawingContext.PushTransform(Matrix.CreateTranslation(100, 100));
+ var rc = new Rect(0, 0, 200, 200);
+ drawingContext.DrawRectangle(new SolidColorBrush(Colors.DimGray), null, rc);
+ drawingContext.DrawRectangle(_brush, null, rc);
+
+ pop.Dispose();
+ }
+ }
}
}
diff --git a/tests/Avalonia.RenderTests/Media/RadialGradientBrushTests.cs b/tests/Avalonia.RenderTests/Media/RadialGradientBrushTests.cs
index 0480c1c723..c70d5a2c9b 100644
--- a/tests/Avalonia.RenderTests/Media/RadialGradientBrushTests.cs
+++ b/tests/Avalonia.RenderTests/Media/RadialGradientBrushTests.cs
@@ -125,7 +125,8 @@ namespace Avalonia.Direct2D1.RenderTests.Media
},
GradientOrigin = new RelativePoint(0.25, 0.25, RelativeUnit.Relative),
Center = new RelativePoint(0.5, 0.5, RelativeUnit.Relative),
- Radius = 0.5
+ RadiusX = RelativeScalar.Middle,
+ RadiusY = RelativeScalar.Middle
}
}
};
@@ -157,7 +158,8 @@ namespace Avalonia.Direct2D1.RenderTests.Media
},
GradientOrigin = new RelativePoint(0.1, 0.1, RelativeUnit.Relative),
Center = new RelativePoint(0.5, 0.5, RelativeUnit.Relative),
- Radius = 0.5
+ RadiusX = RelativeScalar.Middle,
+ RadiusY = RelativeScalar.Middle
}
}
};
diff --git a/tests/Avalonia.RenderTests/Media/RelativePointTestPrimitivesHelper.cs b/tests/Avalonia.RenderTests/Media/RelativePointTestPrimitivesHelper.cs
index b056f0d172..e84c5fcd77 100644
--- a/tests/Avalonia.RenderTests/Media/RelativePointTestPrimitivesHelper.cs
+++ b/tests/Avalonia.RenderTests/Media/RelativePointTestPrimitivesHelper.cs
@@ -17,8 +17,8 @@ namespace Avalonia.Direct2D1.RenderTests.Media
{
private readonly IBrush? _brush;
private readonly bool _shadow;
- private readonly IPen _line;
- private static readonly Geometry s_Geometry = Geometry.Parse("m 80 200 c 40 20 150 -40 160 0 l 0 30 c -40 -30 -160 10 -160 -30 z");
+ private readonly IPen? _line;
+ private static readonly Geometry s_geometry = Geometry.Parse("m 80 200 c 40 20 150 -40 160 0 l 0 30 c -40 -30 -160 10 -160 -30 z");
public RelativePointTestPrimitivesHelper(IBrush? brush, bool shadow = false)
{
@@ -42,8 +42,9 @@ namespace Avalonia.Direct2D1.RenderTests.Media
context.DrawRectangle(_brush, null, new Rect(20, 20, 200, 60));
context.DrawEllipse(_brush, null, new Rect(40, 100, 200, 20));
- context.DrawLine(_line, new Point(60, 140), new Point(240, 160));
- context.DrawGeometry(_brush, null, s_Geometry);
+ if (_line is not null)
+ context.DrawLine(_line, new Point(60, 140), new Point(240, 160));
+ context.DrawGeometry(_brush, null, s_geometry);
base.Render(context);
}
diff --git a/tests/Avalonia.RenderTests/Media/TileBrushTests.cs b/tests/Avalonia.RenderTests/Media/TileBrushTests.cs
index c8ec8483ac..c3249422ea 100644
--- a/tests/Avalonia.RenderTests/Media/TileBrushTests.cs
+++ b/tests/Avalonia.RenderTests/Media/TileBrushTests.cs
@@ -40,7 +40,35 @@ public class DrawingBrushTests: TestBase
await RenderToFile(target);
CompareImages();
}
-
+
+
+ [Fact]
+ public async Task DrawingBrushIsProperlyScaled()
+ {
+ Decorator target = new Decorator
+ {
+ Padding = new Thickness(10),
+ Width = 220,
+ Height = 220,
+ Child = new Rectangle
+ {
+ Fill = new DrawingBrush
+ {
+ TileMode = TileMode.Tile,
+ SourceRect = new RelativeRect(0, 0, 20, 20, RelativeUnit.Absolute),
+ DestinationRect = new RelativeRect(0, 0, 20, 20, RelativeUnit.Absolute),
+ Drawing = new GeometryDrawing()
+ {
+ Pen = new Pen(Brushes.Red, 5),
+ Geometry = Geometry.Parse("M 0 0 l 50 50")
+ }
+ }
+ }
+ };
+
+ await RenderToFile(target);
+ CompareImages();
+ }
#if AVALONIA_SKIA
[Fact]
diff --git a/tests/Avalonia.RenderTests/TestBase.cs b/tests/Avalonia.RenderTests/TestBase.cs
index ad84b897fb..a975c5e0e8 100644
--- a/tests/Avalonia.RenderTests/TestBase.cs
+++ b/tests/Avalonia.RenderTests/TestBase.cs
@@ -42,26 +42,13 @@ namespace Avalonia.Direct2D1.RenderTests
#endif
public static FontFamily TestFontFamily = new FontFamily(s_fontUri);
- private static readonly TestDispatcherImpl threadingInterface =
- new TestDispatcherImpl();
-
- private static readonly IAssetLoader assetLoader = new StandardAssetLoader();
-
- static TestBase()
- {
-#if AVALONIA_SKIA
- SkiaPlatform.Initialize();
+#if AVALONIA_SKIA3
+ // TODO: investigate why output is different.
+ // Most likely we need to use new SKSamplingOptions API, as old filters are broken with SKBitmap.
+ private const double AllowedError = 0.15;
#else
- Direct2D1Platform.Initialize();
+ private const double AllowedError = 0.022;
#endif
- AvaloniaLocator.CurrentMutable
- .Bind()
- .ToConstant(threadingInterface);
-
- AvaloniaLocator.CurrentMutable
- .Bind()
- .ToConstant(assetLoader);
- }
public TestBase(string outputPath)
{
@@ -75,7 +62,7 @@ namespace Avalonia.Direct2D1.RenderTests
#endif
OutputPath = Path.Combine(testFiles, platform, outputPath);
- threadingInterface.MainThread = Thread.CurrentThread;
+ TestRenderHelper.BeginTest();
}
public string OutputPath
@@ -83,64 +70,17 @@ namespace Avalonia.Direct2D1.RenderTests
get;
}
- protected Task RenderToFile(Control target, [CallerMemberName] string testName = "", double dpi = 96)
+ protected async Task RenderToFile(Control target, [CallerMemberName] string testName = "", double dpi = 96)
{
if (!Directory.Exists(OutputPath))
{
Directory.CreateDirectory(OutputPath);
}
-
+
var immediatePath = Path.Combine(OutputPath, testName + ".immediate.out.png");
var compositedPath = Path.Combine(OutputPath, testName + ".composited.out.png");
- var factory = AvaloniaLocator.Current.GetRequiredService();
- var pixelSize = new PixelSize((int)target.Width, (int)target.Height);
- var size = new Size(target.Width, target.Height);
- var dpiVector = new Vector(dpi, dpi);
-
- using (RenderTargetBitmap bitmap = new RenderTargetBitmap(pixelSize, dpiVector))
- {
- target.Measure(size);
- target.Arrange(new Rect(size));
- bitmap.Render(target);
- bitmap.Save(immediatePath);
- }
-
- var timer = new ManualRenderTimer();
-
- var compositor = new Compositor(new RenderLoop(timer), null, true,
- new DispatcherCompositorScheduler(), true, Dispatcher.UIThread);
- using (var writableBitmap = factory.CreateWriteableBitmap(pixelSize, dpiVector, factory.DefaultPixelFormat, factory.DefaultAlphaFormat))
- {
- var root = new TestRenderRoot(dpiVector.X / 96, null!);
- using (var renderer = new CompositingRenderer(root, compositor, () => new[]
- {
- new BitmapFramebufferSurface(writableBitmap)
- }))
- {
- root.Initialize(renderer, target);
- renderer.Start();
- Dispatcher.UIThread.RunJobs();
- timer.TriggerTick();
- }
- writableBitmap.Save(compositedPath);
- }
-
- return Task.CompletedTask;
- }
-
- class BitmapFramebufferSurface : IFramebufferPlatformSurface
- {
- private readonly IWriteableBitmapImpl _bitmap;
-
- public BitmapFramebufferSurface(IWriteableBitmapImpl bitmap)
- {
- _bitmap = bitmap;
- }
-
- public IFramebufferRenderTarget CreateFramebufferRenderTarget()
- {
- return new FuncFramebufferRenderTarget(() => _bitmap.Lock());
- }
+ await TestRenderHelper.RenderToFile(target, immediatePath, true, dpi);
+ await TestRenderHelper.RenderToFile(target, compositedPath, false, dpi);
}
protected void CompareImages([CallerMemberName] string testName = "",
@@ -151,20 +91,25 @@ namespace Avalonia.Direct2D1.RenderTests
var compositedPath = Path.Combine(OutputPath, testName + ".composited.out.png");
using (var expected = Image.Load(expectedPath))
- using (var immediate = Image.Load(immediatePath))
- using (var composited = Image.Load(compositedPath))
+ using (var immediate = skipImmediate ? null: Image.Load(immediatePath))
+ using (var composited = skipCompositor ? null : Image.Load(compositedPath))
{
- var immediateError = CompareImages(immediate, expected);
- var compositedError = CompareImages(composited, expected);
-
- if (immediateError > 0.022 && !skipImmediate)
+ if (!skipImmediate)
{
- Assert.True(false, immediatePath + ": Error = " + immediateError);
+ var immediateError = TestRenderHelper.CompareImages(immediate!, expected);
+ if (immediateError > AllowedError)
+ {
+ Assert.True(false, immediatePath + ": Error = " + immediateError);
+ }
}
- if (compositedError > 0.022 && !skipCompositor)
+ if (!skipCompositor)
{
- Assert.True(false, compositedPath + ": Error = " + compositedError);
+ var compositedError = TestRenderHelper.CompareImages(composited!, expected);
+ if (compositedError > AllowedError)
+ {
+ Assert.True(false, compositedPath + ": Error = " + compositedError);
+ }
}
}
}
@@ -173,108 +118,11 @@ namespace Avalonia.Direct2D1.RenderTests
{
var expectedPath = Path.Combine(OutputPath, (expectedName ?? testName) + ".expected.png");
var actualPath = Path.Combine(OutputPath, testName + ".out.png");
-
- using (var expected = Image.Load(expectedPath))
- using (var actual = Image.Load(actualPath))
- {
- double immediateError = CompareImages(actual, expected);
-
- if (immediateError > 0.022)
- {
- Assert.True(false, actualPath + ": Error = " + immediateError);
- }
- }
+ TestRenderHelper.AssertCompareImages(actualPath, expectedPath);
}
- ///
- /// Calculates root mean square error for given two images.
- /// Based roughly on ImageMagick implementation to ensure consistency.
- ///
- private static double CompareImages(Image actual, Image expected)
- {
- if (actual.Width != expected.Width || actual.Height != expected.Height)
- {
- throw new ArgumentException("Images have different resolutions");
- }
+ private static string GetTestsDirectory() => TestRenderHelper.GetTestsDirectory();
- var quantity = actual.Width * actual.Height;
- double squaresError = 0;
-
- const double scale = 1 / 255d;
-
- for (var x = 0; x < actual.Width; x++)
- {
- double localError = 0;
-
- for (var y = 0; y < actual.Height; y++)
- {
- var expectedAlpha = expected[x, y].A * scale;
- var actualAlpha = actual[x, y].A * scale;
-
- var r = scale * (expectedAlpha * expected[x, y].R - actualAlpha * actual[x, y].R);
- var g = scale * (expectedAlpha * expected[x, y].G - actualAlpha * actual[x, y].G);
- var b = scale * (expectedAlpha * expected[x, y].B - actualAlpha * actual[x, y].B);
- var a = expectedAlpha - actualAlpha;
-
- var error = r * r + g * g + b * b + a * a;
-
- localError += error;
- }
-
- squaresError += localError;
- }
-
- var meanSquaresError = squaresError / quantity;
-
- const int channelCount = 4;
-
- meanSquaresError = meanSquaresError / channelCount;
-
- return Math.Sqrt(meanSquaresError);
- }
-
- private static string GetTestsDirectory()
- {
- var path = Directory.GetCurrentDirectory();
-
- while (path.Length > 0 && Path.GetFileName(path) != "tests")
- {
- path = Path.GetDirectoryName(path);
- }
-
- return path;
- }
-
- private class TestDispatcherImpl : IDispatcherImpl
- {
- public bool CurrentThreadIsLoopThread => MainThread.ManagedThreadId == Thread.CurrentThread.ManagedThreadId;
-
- public Thread MainThread { get; set; }
-
-#pragma warning disable 67
- public event Action Signaled;
- public event Action Timer;
-#pragma warning restore 67
-
- public void Signal()
- {
- // No-op
- }
-
- public long Now => 0;
-
- public void UpdateTimer(long? dueTimeInMs)
- {
- // No-op
- }
- }
-
- public void Dispose()
- {
- if (Dispatcher.UIThread.CheckAccess())
- {
- Dispatcher.UIThread.RunJobs();
- }
- }
+ public void Dispose() => TestRenderHelper.EndTest();
}
}
diff --git a/tests/Avalonia.RenderTests/TestRenderHelper.cs b/tests/Avalonia.RenderTests/TestRenderHelper.cs
new file mode 100644
index 0000000000..81e225f83d
--- /dev/null
+++ b/tests/Avalonia.RenderTests/TestRenderHelper.cs
@@ -0,0 +1,227 @@
+using System.IO;
+using System.Runtime.CompilerServices;
+using Avalonia.Controls;
+using Avalonia.Media.Imaging;
+using Avalonia.Rendering;
+using SixLabors.ImageSharp;
+using Xunit;
+using Avalonia.Platform;
+using System.Threading.Tasks;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reactive.Disposables;
+using System.Threading;
+using Avalonia.Controls.Platform.Surfaces;
+using Avalonia.Media;
+using Avalonia.Rendering.Composition;
+using Avalonia.Threading;
+using Avalonia.UnitTests;
+using Avalonia.Utilities;
+using SixLabors.ImageSharp.PixelFormats;
+using Image = SixLabors.ImageSharp.Image;
+#if AVALONIA_SKIA
+using Avalonia.Skia;
+#else
+using Avalonia.Direct2D1;
+#endif
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#else
+namespace Avalonia.Direct2D1.RenderTests;
+#endif
+
+static class TestRenderHelper
+{
+ private static readonly TestDispatcherImpl s_dispatcherImpl =
+ new TestDispatcherImpl();
+
+ static TestRenderHelper()
+ {
+#if AVALONIA_SKIA
+ SkiaPlatform.Initialize();
+#else
+ Direct2D1Platform.Initialize();
+#endif
+ AvaloniaLocator.CurrentMutable
+ .Bind()
+ .ToConstant(s_dispatcherImpl);
+
+ AvaloniaLocator.CurrentMutable.Bind().ToConstant(new StandardAssetLoader());
+ }
+
+
+ public static Task RenderToFile(Control target, string path, bool immediate, double dpi = 96)
+ {
+ var dir = Path.GetDirectoryName(path);
+ if (!Directory.Exists(dir))
+ Directory.CreateDirectory(dir);
+
+ var factory = AvaloniaLocator.Current.GetRequiredService();
+ var pixelSize = new PixelSize((int)target.Width, (int)target.Height);
+ var size = new Size(target.Width, target.Height);
+ var dpiVector = new Vector(dpi, dpi);
+
+ if (immediate)
+ {
+ using (RenderTargetBitmap bitmap = new RenderTargetBitmap(pixelSize, dpiVector))
+ {
+ target.Measure(size);
+ target.Arrange(new Rect(size));
+ bitmap.Render(target);
+ bitmap.Save(path);
+ }
+ }
+ else
+ {
+ var timer = new ManualRenderTimer();
+
+ var compositor = new Compositor(new RenderLoop(timer), null, true,
+ new DispatcherCompositorScheduler(), true, Dispatcher.UIThread);
+ using (var writableBitmap = factory.CreateWriteableBitmap(pixelSize, dpiVector, factory.DefaultPixelFormat,
+ factory.DefaultAlphaFormat))
+ {
+ var root = new TestRenderRoot(dpiVector.X / 96, null!);
+ using (var renderer = new CompositingRenderer(root, compositor,
+ () => new[] { new BitmapFramebufferSurface(writableBitmap) }))
+ {
+ root.Initialize(renderer, target);
+ renderer.Start();
+ Dispatcher.UIThread.RunJobs();
+ renderer.Paint(new Rect(root.Bounds.Size), false);
+ }
+
+ writableBitmap.Save(path);
+ }
+ }
+
+ return Task.CompletedTask;
+ }
+
+ class BitmapFramebufferSurface : IFramebufferPlatformSurface
+ {
+ private readonly IWriteableBitmapImpl _bitmap;
+
+ public BitmapFramebufferSurface(IWriteableBitmapImpl bitmap)
+ {
+ _bitmap = bitmap;
+ }
+
+ public IFramebufferRenderTarget CreateFramebufferRenderTarget()
+ {
+ return new FuncFramebufferRenderTarget(() => _bitmap.Lock());
+ }
+ }
+
+
+ public static void BeginTest()
+ {
+ s_dispatcherImpl.MainThread = Thread.CurrentThread;
+ }
+
+ public static void EndTest()
+ {
+ if (Dispatcher.UIThread.CheckAccess())
+ Dispatcher.UIThread.RunJobs();
+ }
+
+ public static string GetTestsDirectory()
+ {
+ var path = Directory.GetCurrentDirectory();
+
+ while (path.Length > 0 && Path.GetFileName(path) != "tests")
+ {
+ path = Path.GetDirectoryName(path);
+ }
+
+ return path;
+ }
+
+ private class TestDispatcherImpl : IDispatcherImpl
+ {
+ public bool CurrentThreadIsLoopThread => MainThread.ManagedThreadId == Thread.CurrentThread.ManagedThreadId;
+
+ public Thread MainThread { get; set; }
+
+#pragma warning disable 67
+ public event Action Signaled;
+ public event Action Timer;
+#pragma warning restore 67
+
+ public void Signal()
+ {
+ // No-op
+ }
+
+ public long Now => 0;
+
+ public void UpdateTimer(long? dueTimeInMs)
+ {
+ // No-op
+ }
+ }
+
+ public static void AssertCompareImages(string actualPath, string expectedPath)
+ {
+ using (var expected = Image.Load(expectedPath))
+ using (var actual = Image.Load(actualPath))
+ {
+ double immediateError = TestRenderHelper.CompareImages(actual, expected);
+
+ if (immediateError > 0.022)
+ {
+ Assert.True(false, actualPath + ": Error = " + immediateError);
+ }
+ }
+ }
+
+ ///
+ /// Calculates root mean square error for given two images.
+ /// Based roughly on ImageMagick implementation to ensure consistency.
+ ///
+ public static double CompareImages(Image actual, Image expected)
+ {
+ if (actual.Width != expected.Width || actual.Height != expected.Height)
+ {
+ throw new ArgumentException("Images have different resolutions");
+ }
+
+ var quantity = actual.Width * actual.Height;
+ double squaresError = 0;
+
+ const double scale = 1 / 255d;
+
+ for (var x = 0; x < actual.Width; x++)
+ {
+ double localError = 0;
+
+ for (var y = 0; y < actual.Height; y++)
+ {
+ var expectedAlpha = expected[x, y].A * scale;
+ var actualAlpha = actual[x, y].A * scale;
+
+ var r = scale * (expectedAlpha * expected[x, y].R - actualAlpha * actual[x, y].R);
+ var g = scale * (expectedAlpha * expected[x, y].G - actualAlpha * actual[x, y].G);
+ var b = scale * (expectedAlpha * expected[x, y].B - actualAlpha * actual[x, y].B);
+ var a = expectedAlpha - actualAlpha;
+
+ var error = r * r + g * g + b * b + a * a;
+
+ localError += error;
+ }
+
+ squaresError += localError;
+ }
+
+ var meanSquaresError = squaresError / quantity;
+
+ const int channelCount = 4;
+
+ meanSquaresError = meanSquaresError / channelCount;
+
+ return Math.Sqrt(meanSquaresError);
+ }
+
+}
diff --git a/tests/Avalonia.RenderTests/WpfCompareTestBase.cs b/tests/Avalonia.RenderTests/WpfCompareTestBase.cs
new file mode 100644
index 0000000000..36db8b3da5
--- /dev/null
+++ b/tests/Avalonia.RenderTests/WpfCompareTestBase.cs
@@ -0,0 +1,9 @@
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#else
+namespace Avalonia.Direct2D1.RenderTests;
+#endif
+class WpfCompareTestBase
+{
+
+}
diff --git a/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj b/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
index d149138fe6..aedeef4f4c 100644
--- a/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
+++ b/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
@@ -1,8 +1,15 @@
- net6.0
- AVALONIA_SKIA;AVALONIA_SKIA_SKIP_FAIL
+ $(AvsCurrentTargetFramework)
+ $(DefineConstants);AVALONIA_SKIA
true
+ true
+ true
+
+
+ true
+ $(DefineConstants);AVALONIA_SKIA3
+ $(DefineConstants);AVALONIA_SKIA2
diff --git a/tests/Avalonia.Skia.RenderTests/CrossTestBase.cs b/tests/Avalonia.Skia.RenderTests/CrossTestBase.cs
new file mode 100644
index 0000000000..a94736b0c7
--- /dev/null
+++ b/tests/Avalonia.Skia.RenderTests/CrossTestBase.cs
@@ -0,0 +1,60 @@
+using System;
+using System.IO;
+using System.Runtime.CompilerServices;
+using Avalonia.Skia.RenderTests;
+using Avalonia.Skia.RenderTests.CrossUI;
+using CrossUI;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.PixelFormats;
+using Xunit;
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests;
+#else
+namespace Avalonia.Direct2D1.RenderTests;
+#endif
+
+class CrossFactAttribute : FactAttribute
+{
+
+}
+
+class CrossTheoryAttribute : TheoryAttribute
+{
+
+}
+
+public class CrossTestBase : IDisposable
+{
+ private readonly string _groupName;
+ public CrossTestBase(string groupName)
+ {
+ TestRenderHelper.BeginTest();
+ _groupName = groupName;
+ }
+
+ protected void RenderAndCompare(CrossControl root, [CallerMemberName] string? testName = null, double dpi = 96)
+ {
+ var dir = Path.Combine(TestRenderHelper.GetTestsDirectory(), "TestFiles", "CrossTests", _groupName);
+ if (!Directory.Exists(dir))
+ Directory.CreateDirectory(dir);
+ var flavor =
+#if AVALONIA_SKIA
+ "skia";
+#else
+ "d2d";
+#endif
+ var pathBase = Path.Combine(dir, testName);
+ var renderPath = pathBase + "." + flavor + ".out.png";
+ var compareWith = pathBase + ".wpf.png";
+ var control = new AvaloniaCrossControl(root);
+ TestRenderHelper.RenderToFile(control, renderPath, false, dpi);
+
+ TestRenderHelper.AssertCompareImages(renderPath, compareWith);
+ }
+
+ public void Dispose()
+ {
+ TestRenderHelper.EndTest();
+ }
+}
diff --git a/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj b/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
index 0c575cd96e..a80948005a 100644
--- a/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
+++ b/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
@@ -1,6 +1,6 @@
- net6.0
+ $(AvsCurrentTargetFramework)
diff --git a/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs b/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs
index d70f770a11..322645a914 100644
--- a/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs
+++ b/tests/Avalonia.Skia.UnitTests/Media/FontManagerTests.cs
@@ -200,14 +200,16 @@ namespace Avalonia.Skia.UnitTests.Media
}
}
- [Fact]
- public void Should_Match_Chararcter_Width_Fallbacks()
+ [Theory]
+ [InlineData("NotFound, Unknown", null)] // system fonts
+ [InlineData("/#NotFound, /#Unknown", "avares://some/path")] // embedded fonts
+ public void Should_Match_Character_With_Fallbacks(string familyName, string baseUri)
{
using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new FontManagerImpl())))
{
using (AvaloniaLocator.EnterScope())
{
- var fontFamily = FontFamily.Parse("NotFound, Unknown");
+ var fontFamily = FontFamily.Parse(familyName, baseUri is null ? null : new Uri(baseUri));
Assert.True(FontManager.Current.TryMatchCharacter('A', FontStyle.Normal, FontWeight.Normal, FontStretch.Normal, fontFamily, null, out var typeface));
diff --git a/tests/Avalonia.UnitTests/MockAssetLoader.cs b/tests/Avalonia.UnitTests/MockAssetLoader.cs
index 6fe8cd54f7..cf2d327e54 100644
--- a/tests/Avalonia.UnitTests/MockAssetLoader.cs
+++ b/tests/Avalonia.UnitTests/MockAssetLoader.cs
@@ -45,6 +45,16 @@ namespace Avalonia.UnitTests
x => x.GetUnescapeAbsolutePath().IndexOf(absPath, StringComparison.Ordinal) >= 0);
}
+ public void InvalidateAssemblyCache(string name)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void InvalidateAssemblyCache()
+ {
+ throw new NotImplementedException();
+ }
+
public void SetDefaultAssembly(Assembly asm)
{
throw new NotImplementedException();
diff --git a/tests/Avalonia.UnitTests/TestRoot.cs b/tests/Avalonia.UnitTests/TestRoot.cs
index f62afaf74d..27ec987e7c 100644
--- a/tests/Avalonia.UnitTests/TestRoot.cs
+++ b/tests/Avalonia.UnitTests/TestRoot.cs
@@ -50,8 +50,6 @@ namespace Avalonia.UnitTests
public Size ClientSize { get; set; } = new Size(1000, 1000);
- public Size MaxClientSize { get; set; } = Size.Infinity;
-
public double LayoutScaling { get; set; } = 1;
internal ILayoutManager LayoutManager { get; set; }
@@ -79,16 +77,16 @@ namespace Avalonia.UnitTests
public IRenderTarget CreateRenderTarget()
{
var dc = new Mock();
- dc.Setup(x => x.CreateLayer(It.IsAny())).Returns(() =>
+ dc.Setup(x => x.CreateLayer(It.IsAny())).Returns(() =>
{
var layerDc = new Mock();
var layer = new Mock();
- layer.Setup(x => x.CreateDrawingContext()).Returns(layerDc.Object);
+ layer.Setup(x => x.CreateDrawingContext(It.IsAny())).Returns(layerDc.Object);
return layer.Object;
});
var result = new Mock();
- result.Setup(x => x.CreateDrawingContext()).Returns(dc.Object);
+ result.Setup(x => x.CreateDrawingContext(It.IsAny())).Returns(dc.Object);
return result.Object;
}
diff --git a/tests/Avalonia.UnitTests/TestServices.cs b/tests/Avalonia.UnitTests/TestServices.cs
index 12c7aee4e9..ea7990a226 100644
--- a/tests/Avalonia.UnitTests/TestServices.cs
+++ b/tests/Avalonia.UnitTests/TestServices.cs
@@ -1,17 +1,11 @@
using System;
using Moq;
using Avalonia.Input;
-using Avalonia.Layout;
-using Avalonia.Markup.Xaml;
-using Avalonia.Media;
using Avalonia.Platform;
using Avalonia.Styling;
using Avalonia.Themes.Simple;
using Avalonia.Rendering;
using System.Reactive.Concurrency;
-using System.Collections.Generic;
-using Avalonia.Controls;
-using System.Reflection;
using Avalonia.Animation;
using Avalonia.Headless;
using Avalonia.Threading;
@@ -129,18 +123,22 @@ namespace Avalonia.UnitTests
IFontManagerImpl fontManagerImpl = null,
ITextShaperImpl textShaperImpl = null,
IWindowImpl windowImpl = null,
- IWindowingPlatform windowingPlatform = null) : this(assetLoader, focusManager, inputManager, keyboardDevice,
+ IWindowingPlatform windowingPlatform = null,
+ IAccessKeyHandler accessKeyHandler = null
+ ) : this(assetLoader, focusManager, inputManager, keyboardDevice,
keyboardNavigation,
mouseDevice, platform, renderInterface, renderLoop, standardCursorFactory, theme,
dispatcherImpl, fontManagerImpl, textShaperImpl, windowImpl, windowingPlatform)
{
GlobalClock = globalClock;
+ AccessKeyHandler = accessKeyHandler;
}
public IAssetLoader AssetLoader { get; }
public IInputManager InputManager { get; }
public IFocusManager FocusManager { get; }
internal IGlobalClock GlobalClock { get; set; }
+ internal IAccessKeyHandler AccessKeyHandler { get; }
public Func KeyboardDevice { get; }
public Func KeyboardNavigation { get; }
public Func MouseDevice { get; }
@@ -172,7 +170,8 @@ namespace Avalonia.UnitTests
ITextShaperImpl textShaperImpl = null,
IWindowImpl windowImpl = null,
IWindowingPlatform windowingPlatform = null,
- IGlobalClock globalClock = null)
+ IGlobalClock globalClock = null,
+ IAccessKeyHandler accessKeyHandler = null)
{
return new TestServices(
globalClock ?? GlobalClock,
@@ -190,7 +189,9 @@ namespace Avalonia.UnitTests
theme: theme ?? Theme,
dispatcherImpl: dispatcherImpl ?? DispatcherImpl,
windowingPlatform: windowingPlatform ?? WindowingPlatform,
- windowImpl: windowImpl ?? WindowImpl);
+ windowImpl: windowImpl ?? WindowImpl,
+ accessKeyHandler: accessKeyHandler ?? AccessKeyHandler
+ );
}
private static IStyle CreateSimpleTheme()
diff --git a/tests/Avalonia.UnitTests/TouchTestHelper.cs b/tests/Avalonia.UnitTests/TouchTestHelper.cs
index 120b0c0670..a44ab8a43c 100644
--- a/tests/Avalonia.UnitTests/TouchTestHelper.cs
+++ b/tests/Avalonia.UnitTests/TouchTestHelper.cs
@@ -49,8 +49,7 @@ namespace Avalonia.UnitTests
else
source.RaiseEvent(e);
- _pointer.Capture(null);
- _pointer.CaptureGestureRecognizer(null);
+ Cancel();
}
public void Tap(Interactive target, Point position = default, KeyModifiers modifiers = default)
@@ -66,6 +65,7 @@ namespace Avalonia.UnitTests
{
_pointer.Capture(null);
_pointer.CaptureGestureRecognizer(null);
+ _pointer.IsGestureRecognitionSkipped = false;
}
}
}
diff --git a/tests/Avalonia.UnitTests/UnitTestApplication.cs b/tests/Avalonia.UnitTests/UnitTestApplication.cs
index 18ccff75f0..453c6c05d1 100644
--- a/tests/Avalonia.UnitTests/UnitTestApplication.cs
+++ b/tests/Avalonia.UnitTests/UnitTestApplication.cs
@@ -1,13 +1,10 @@
using System;
using Avalonia.Input;
-using Avalonia.Layout;
using Avalonia.Platform;
using Avalonia.Styling;
using Avalonia.Controls;
-using Avalonia.Rendering;
using Avalonia.Threading;
using System.Reactive.Disposables;
-using System.Reactive.Concurrency;
using System.Threading;
using Avalonia.Input.Platform;
using Avalonia.Animation;
@@ -53,6 +50,8 @@ namespace Avalonia.UnitTests
Dispatcher.UIThread.RunJobs();
}
+ ((ToolTipService)AvaloniaLocator.Current.GetService())?.Dispose();
+
scope.Dispose();
Dispatcher.ResetForUnitTests();
SynchronizationContext.SetSynchronizationContext(oldContext);
@@ -67,6 +66,7 @@ namespace Avalonia.UnitTests
.Bind().ToConstant(Services.GlobalClock)
.BindToSelf(this)
.Bind().ToConstant(Services.InputManager)
+ .Bind().ToConstant(Services.InputManager == null ? null : new ToolTipService(Services.InputManager))
.Bind().ToConstant(Services.KeyboardDevice?.Invoke())
.Bind().ToConstant(Services.MouseDevice?.Invoke())
.Bind().ToFunc(Services.KeyboardNavigation ?? (() => null))
@@ -78,7 +78,9 @@ namespace Avalonia.UnitTests
.Bind().ToConstant(Services.StandardCursorFactory)
.Bind().ToConstant(Services.WindowingPlatform)
.Bind().ToSingleton()
- .Bind().ToSingleton();
+ .Bind().ToSingleton()
+ .Bind().ToConstant(Services.AccessKeyHandler)
+ ;
// This is a hack to make tests work, we need to refactor the way font manager is registered
// See https://github.com/AvaloniaUI/Avalonia/issues/10081
diff --git a/tests/TestFiles/BuildTasks/PInvoke/PInvoke.csproj b/tests/TestFiles/BuildTasks/PInvoke/PInvoke.csproj
index 7df69b429d..86ad76129b 100644
--- a/tests/TestFiles/BuildTasks/PInvoke/PInvoke.csproj
+++ b/tests/TestFiles/BuildTasks/PInvoke/PInvoke.csproj
@@ -2,7 +2,7 @@
WinExe
- net6.0;netstandard2.0
+ $(AvsCurrentTargetFramework);netstandard2.0
true
true
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Bevel.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Bevel.wpf.png
new file mode 100644
index 0000000000..e174ccad15
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Bevel.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Miter.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Miter.wpf.png
new file mode 100644
index 0000000000..8cf98ba633
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Miter.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Round.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Round.wpf.png
new file mode 100644
index 0000000000..f44dd37b36
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Flat_Round.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Bevel.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Bevel.wpf.png
new file mode 100644
index 0000000000..57565c7fe9
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Bevel.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Miter.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Miter.wpf.png
new file mode 100644
index 0000000000..7814ba07c0
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Miter.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Round.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Round.wpf.png
new file mode 100644
index 0000000000..4eeae15572
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Properly_CloseFigure_Round_Round.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Geometry_With_Strokeless_Lines.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Geometry_With_Strokeless_Lines.wpf.png
new file mode 100644
index 0000000000..7d6a0b4015
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Geometry_With_Strokeless_Lines.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Stream_Geometry.wpf.png b/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Stream_Geometry.wpf.png
new file mode 100644
index 0000000000..2fb85630ab
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/Geometry/Should_Render_Stream_Geometry.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/RadialGradientBrush/Transform_Should_Work_As_Expected.wpf.png b/tests/TestFiles/CrossTests/Media/RadialGradientBrush/Transform_Should_Work_As_Expected.wpf.png
new file mode 100644
index 0000000000..0c2d533896
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/RadialGradientBrush/Transform_Should_Work_As_Expected.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_Scaled_TileBrush.wpf.png b/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_Scaled_TileBrush.wpf.png
new file mode 100644
index 0000000000..733e6200d8
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_Scaled_TileBrush.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_With_Transform.wpf.png b/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_With_Transform.wpf.png
new file mode 100644
index 0000000000..4276ba62c8
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/TileBrushes/Should_Render_With_Transform.wpf.png differ
diff --git a/tests/TestFiles/CrossTests/Media/TileBrushes/Simple_Checkboard_Pattern_Is_Rendered_Identically.wpf.png b/tests/TestFiles/CrossTests/Media/TileBrushes/Simple_Checkboard_Pattern_Is_Rendered_Identically.wpf.png
new file mode 100644
index 0000000000..1ad3c6ec09
Binary files /dev/null and b/tests/TestFiles/CrossTests/Media/TileBrushes/Simple_Checkboard_Pattern_Is_Rendered_Identically.wpf.png differ
diff --git a/tests/TestFiles/Direct2D1/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png b/tests/TestFiles/Direct2D1/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png
new file mode 100644
index 0000000000..16f4d712f4
Binary files /dev/null and b/tests/TestFiles/Direct2D1/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png differ
diff --git a/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png
new file mode 100644
index 0000000000..957cddecb8
Binary files /dev/null and b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png differ
diff --git a/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png
new file mode 100644
index 0000000000..b14d474414
Binary files /dev/null and b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png differ
diff --git a/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png
new file mode 100644
index 0000000000..ac400eae2a
Binary files /dev/null and b/tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png differ
diff --git a/tests/TestFiles/Direct2D1/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png b/tests/TestFiles/Direct2D1/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png
new file mode 100644
index 0000000000..fa8bd2f004
Binary files /dev/null and b/tests/TestFiles/Direct2D1/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png differ
diff --git a/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_initial.expected.png b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_initial.expected.png
new file mode 100644
index 0000000000..6a90ca2621
Binary files /dev/null and b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_initial.expected.png differ
diff --git a/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_updated.expected.png b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_updated.expected.png
new file mode 100644
index 0000000000..a3a83a8547
Binary files /dev/null and b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-False_updated.expected.png differ
diff --git a/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_initial.expected.png b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_initial.expected.png
new file mode 100644
index 0000000000..6a90ca2621
Binary files /dev/null and b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_initial.expected.png differ
diff --git a/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_updated.expected.png b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_updated.expected.png
new file mode 100644
index 0000000000..96fbb171c9
Binary files /dev/null and b/tests/TestFiles/Skia/Composition/DirectFb/Should_Only_Update_Clipped_Rects_When_Retained_Fb_Is_Advertised_advertized-True_updated.expected.png differ
diff --git a/tests/TestFiles/Skia/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png b/tests/TestFiles/Skia/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png
new file mode 100644
index 0000000000..63873b65fd
Binary files /dev/null and b/tests/TestFiles/Skia/Media/DrawingBrush/DrawingBrushIsProperlyScaled.expected.png differ
diff --git a/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png
new file mode 100644
index 0000000000..5a0d77cbd2
Binary files /dev/null and b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_Transform.expected.png differ
diff --git a/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png
new file mode 100644
index 0000000000..6ad8d52329
Binary files /dev/null and b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Should_Render_With_TransformOrigin.expected.png differ
diff --git a/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png
new file mode 100644
index 0000000000..a5e7bf6187
Binary files /dev/null and b/tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_Tile_Small_Image_With_Transform.expected.png differ
diff --git a/tests/TestFiles/Skia/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png b/tests/TestFiles/Skia/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png
new file mode 100644
index 0000000000..35f1ca62e4
Binary files /dev/null and b/tests/TestFiles/Skia/Media/ImageDrawing/Should_Render_DrawingBrushTransform.expected.png differ