Showing preview only (411K chars total). Download the full file or copy to clipboard to get everything.
Repository: poerin/Feep
Branch: master
Commit: e6b5652c551e
Files: 30
Total size: 395.2 KB
Directory structure:
gitextract_jqho2jds/
├── .gitattributes
├── .gitignore
├── Feep/
│ ├── Application.manifest
│ ├── Feep.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Shadow.Designer.cs
│ ├── Shadow.cs
│ ├── Shadow.resx
│ ├── Viewer.Designer.cs
│ ├── Viewer.cs
│ └── Viewer.resx
├── Feep.Configure/
│ ├── Application.manifest
│ ├── Configure.Designer.cs
│ ├── Configure.cs
│ ├── Configure.resx
│ ├── Feep.Configure.csproj
│ ├── Program.cs
│ └── Properties/
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Feep.sln
├── LICENSE
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
================================================
FILE: Feep/Application.manifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="Feep" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>
================================================
FILE: Feep/Feep.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C2A94F6B-CBF4-4DA9-BCAB-045FA976C861}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Feep</RootNamespace>
<AssemblyName>Feep</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>Application.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Feep.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Shadow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Shadow.Designer.cs">
<DependentUpon>Shadow.cs</DependentUpon>
</Compile>
<Compile Include="Viewer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Viewer.Designer.cs">
<DependentUpon>Viewer.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Shadow.resx">
<DependentUpon>Shadow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Viewer.resx">
<DependentUpon>Viewer.cs</DependentUpon>
</EmbeddedResource>
<None Include="Application.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="Feep.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
================================================
FILE: Feep/Program.cs
================================================
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Feep
{
static class Program
{
[STAThread]
static void Main(String[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Viewer viewer;
if (args.Length > 0)
{
int PointX, PointY, Width, Height;
string screen = "", backColor = "";
int startState = 0;
bool showInTaskbar = false;
viewer = new Viewer(args[0]);
System.Text.StringBuilder ReturnedString = new System.Text.StringBuilder(255);
bool hasError = false;
GetPrivateProfileString("Location", "X", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
hasError = !Int32.TryParse(ReturnedString.ToString(), out PointX);
GetPrivateProfileString("Location", "Y", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
hasError = !Int32.TryParse(ReturnedString.ToString(), out PointY);
GetPrivateProfileString("Size", "Width", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
hasError = !Int32.TryParse(ReturnedString.ToString(), out Width);
GetPrivateProfileString("Size", "Height", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
hasError = !Int32.TryParse(ReturnedString.ToString(), out Height);
GetPrivateProfileString("Form", "Screen", "None", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
screen = ReturnedString.ToString();
GetPrivateProfileString("Form", "BackColor", "#000000", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
backColor = ReturnedString.ToString();
GetPrivateProfileString("Form", "StartState", "0", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out startState);
GetPrivateProfileString("Form", "ShowInTaskbar", "False", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Boolean.TryParse(ReturnedString.ToString(), out showInTaskbar);
viewer.StartState = startState;
viewer.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath);
if (showInTaskbar)
{
viewer.ShowInTaskbar = true;
}
if (hasError || PointX > SystemInformation.VirtualScreen.Right || PointY > SystemInformation.VirtualScreen.Bottom || Width > SystemInformation.VirtualScreen.Width || Height > SystemInformation.VirtualScreen.Height)
{
PointX = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1);
PointY = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1);
Width = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8);
Height = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8);
}
try
{
viewer.BackColor = System.Drawing.ColorTranslator.FromHtml(backColor);
viewer.Picture.BackColor = viewer.BackColor;
}
catch (Exception)
{
viewer.BackColor = System.Drawing.Color.Black;
viewer.Picture.BackColor = viewer.BackColor;
}
if (startState == 1)
{
screen = "Full";
}
if (startState == 2)
{
screen = "None";
if (Width > Screen.PrimaryScreen.WorkingArea.Width || Height > Screen.PrimaryScreen.WorkingArea.Height)
{
PointX = (Screen.PrimaryScreen.Bounds.Width - Width) / 2;
PointY = (Screen.PrimaryScreen.Bounds.Height - Height) / 2;
}
else
{
PointX = (Screen.PrimaryScreen.WorkingArea.Width - Width) / 2 + Screen.PrimaryScreen.WorkingArea.X;
PointY = (Screen.PrimaryScreen.WorkingArea.Height - Height) / 2 + Screen.PrimaryScreen.WorkingArea.Y;
}
}
if (screen != "None")
{
viewer.TopMost = true;
viewer.ScreenBeforeX = PointX;
viewer.ScreenBeforeY = PointY;
viewer.ScreenBeforeWidth = Width;
viewer.ScreenBeforeHeight = Height;
Screen currentScreen = Screen.FromPoint(new System.Drawing.Point(PointX, PointY));
if (screen != "Full")
{
switch (screen)
{
case "Left":
viewer.screenState = Feep.Viewer.ScreenState.Left;
viewer.Location = currentScreen.WorkingArea.Location;
viewer.Width = currentScreen.WorkingArea.Width / 2;
viewer.Height = currentScreen.WorkingArea.Height;
viewer.AtBorderline = true;
break;
case "Right":
viewer.screenState = Feep.Viewer.ScreenState.Right;
viewer.Location = new System.Drawing.Point(currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Location.Y);
viewer.Width = currentScreen.WorkingArea.Width / 2;
viewer.Height = currentScreen.WorkingArea.Height;
viewer.AtBorderline = true;
break;
case "Top":
viewer.screenState = Feep.Viewer.ScreenState.Top;
viewer.Location = currentScreen.WorkingArea.Location;
viewer.Width = currentScreen.WorkingArea.Width;
viewer.Height = currentScreen.WorkingArea.Height / 2;
viewer.AtBorderline = true;
break;
case "Bottom":
viewer.screenState = Feep.Viewer.ScreenState.Bottom;
viewer.Location = new System.Drawing.Point(currentScreen.WorkingArea.Location.X, currentScreen.WorkingArea.Height / 2);
viewer.Width = currentScreen.WorkingArea.Width;
viewer.Height = currentScreen.WorkingArea.Height / 2;
viewer.AtBorderline = true;
break;
}
}
else
{
viewer.screenState = Feep.Viewer.ScreenState.Full;
viewer.Location = currentScreen.Bounds.Location;
viewer.Width = currentScreen.Bounds.Width;
viewer.Height = currentScreen.Bounds.Height;
}
}
else
{
viewer.screenState = Feep.Viewer.ScreenState.None;
viewer.Location = new System.Drawing.Point(PointX, PointY);
viewer.Width = Width;
viewer.Height = Height;
}
viewer.MinimumSize = new System.Drawing.Size(64, 64);
viewer.MaximumSize = SystemInformation.VirtualScreen.Size;
Application.Run(viewer);
}
else
{
Application.Exit();
}
}
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
}
}
================================================
FILE: Feep/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("Feep")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Poerin")]
[assembly: AssemblyProduct("Feep")]
[assembly: AssemblyCopyright("Copyright © Poerin")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("3bb839e7-bb7b-41c1-ad91-bcaa8e605c34")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: Feep/Properties/Resources.Designer.cs
================================================
namespace Feep.Properties
{
using System;
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if (object.ReferenceEquals(resourceMan, null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Feep.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
================================================
FILE: Feep/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
================================================
FILE: Feep/Properties/Settings.Designer.cs
================================================
namespace Feep.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
================================================
FILE: Feep/Properties/Settings.settings
================================================
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
================================================
FILE: Feep/Shadow.Designer.cs
================================================
namespace Feep
{
partial class Shadow
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// Shadow
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.DimGray;
this.ClientSize = new System.Drawing.Size(0, 0);
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Shadow";
this.Opacity = 0.36D;
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.TopMost = true;
this.TransparencyKey = System.Drawing.Color.White;
this.ResumeLayout(false);
}
}
}
================================================
FILE: Feep/Shadow.cs
================================================
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Feep
{
public partial class Shadow : Form
{
#region 鼠标穿透
[DllImport("user32", EntryPoint = "GetWindowLong")]
private static extern uint GetWindowLong(IntPtr hwnd, int nIndex);
[DllImport("user32", EntryPoint = "SetWindowLong")]
private static extern uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);
const int GWL_EXSTYLE = -20;
const int WS_EX_TRANSPARENT = 0x20;
const int WS_EX_LAYERED = 0x80000;
const int WS_EX_NOACTIVATE = 0x8000000;
#endregion
public Shadow()
{
InitializeComponent();
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
SetWindowLong(this.Handle, GWL_EXSTYLE, GetWindowLong(this.Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_NOACTIVATE);
}
internal void FillShadow(Rectangle rect)
{
this.Location = rect.Location;
this.Size = rect.Size;
this.BackColor = Color.DimGray;
this.Visible = true;
}
internal void ClearShadow()
{
this.Visible = false;
this.BackColor = Color.White;
this.Location = new Point(0, 0);
this.Size = new Size(0, 0);
}
}
}
================================================
FILE: Feep/Shadow.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
================================================
FILE: Feep/Viewer.Designer.cs
================================================
namespace Feep
{
partial class Viewer
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.Picture = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.Picture)).BeginInit();
this.SuspendLayout();
//
// Picture
//
this.Picture.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Picture.BackColor = System.Drawing.Color.Black;
this.Picture.ErrorImage = null;
this.Picture.InitialImage = null;
this.Picture.Location = new System.Drawing.Point(0, 0);
this.Picture.Name = "Picture";
this.Picture.Size = new System.Drawing.Size(256, 256);
this.Picture.TabIndex = 0;
this.Picture.TabStop = false;
//
// Viewer
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.Black;
this.CausesValidation = false;
this.ClientSize = new System.Drawing.Size(256, 256);
this.ControlBox = false;
this.Controls.Add(this.Picture);
this.Cursor = System.Windows.Forms.Cursors.Cross;
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Viewer";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Load += new System.EventHandler(this.Viewer_Load);
this.SizeChanged += new System.EventHandler(this.Viewer_SizeChanged);
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Viewer_KeyUp);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseUp);
((System.ComponentModel.ISupportInitialize)(this.Picture)).EndInit();
this.ResumeLayout(false);
}
public System.Windows.Forms.PictureBox Picture;
}
}
================================================
FILE: Feep/Viewer.cs
================================================
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;
namespace Feep
{
sealed internal partial class Viewer : Form
{
internal enum Direction
{
Left,
Right,
Top,
Bottom,
LeftTop,
LeftBottom,
RightTop,
RightBottom
}
internal enum ScreenState
{
None,
Full,
Left,
Right,
Top,
Bottom
}
sealed internal class StringLogicalComparer : IComparer<string>
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
public static extern int StrCmpLogicalW(string x, string y);
public int Compare(string x, string y)
{
return StrCmpLogicalW(x, y);
}
}
sealed internal class FilePath
{
List<string> paths = new List<string>();
internal List<string> Paths
{
get
{
return paths;
}
set
{
paths = value;
}
}
string[] extensions;
internal string[] Extensions
{
get
{
return extensions;
}
set
{
extensions = value;
}
}
internal void GetPaths(object path)
{
DirectoryInfo dir = new DirectoryInfo((string)path);
foreach (string extension in extensions)
{
foreach (FileInfo file in dir.GetFiles("*." + extension + ""))
{
string temp = dir.FullName + file.ToString();
if (!paths.Contains(temp))
{
paths.Add(temp);
}
}
}
}
}
#region 屏蔽原窗体行为
const int WM_SYSCOMMAND = 0x112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
const int SC_NOMAL = 0xF120;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
switch (m.WParam.ToInt32())
{
case SC_CLOSE:
case SC_MINIMIZE:
case SC_MAXIMIZE:
case SC_NOMAL:
{
Exit();
return;
}
}
}
base.WndProc(ref m);
}
#endregion
//文件路径
List<string> filePaths;
//图片
Bitmap image;
//缓存
Dictionary<string, Bitmap> cache = new Dictionary<string, Bitmap>();
//建立缓存的时间
Queue<long> buildCacheTime = new Queue<long>();
//调整窗体大小时的方向
Direction direction;
//屏幕模式
internal ScreenState screenState;
//光标状态
bool cursorState = true;
//是否可以移动窗体
bool MoveWindow = false;
//窗体是否移动过了
bool MovedWindow = false;
//是否可以调整窗体大小
bool ResizeWindow = false;
//窗体右边缘和下边缘的位置
int WindowRight, WindowBottom;
//窗体边缘
const int edge = 8;
//右键是否按下了
bool RightButtonsPress = false;
//左键是否按下了
bool LeftButtonsPress = false;
//是否为旋转图片的操作
bool IsRotation = false;
//是否为缩放图片的操作
bool IsZoom = false;
//是否为退出程序的操作
bool IsClose = false;
//是否处于半屏模式状态
internal bool AtBorderline = false;
//当前图片所在文件夹中的索引
int Index;
//移动时光标相对窗体的位置
int MoveX;
int MoveY;
//切换到全屏和半屏模式之前窗体的位置和尺寸
internal int ScreenBeforeX;
internal int ScreenBeforeY;
internal int ScreenBeforeWidth;
internal int ScreenBeforeHeight;
//查看原始比例时图片的坐标位置
static int DistanceX, DistanceY;
//缩放时屏幕中央的位置
Point Center;
//锁定缩放
bool IsLockZoom = false;
//释放控制
bool IsLoseControl = false;
//查看原始比例时隐藏光标之前的位置
Point HideBeforePosition;
//阴影的容器
static Shadow Shadows;
//启动时的窗体状态
internal int StartState;
//幻灯片定时器
private System.Windows.Forms.Timer timerSlideshow = new System.Windows.Forms.Timer();
//幻灯片时间间隔
private int intervalSlideshow = 1;
//幻灯片方向
private bool directionSlideshow = true;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
internal Viewer(string PicturePath)
{
InitializeComponent();
string folder = PicturePath.Remove(PicturePath.LastIndexOf('\\')) + '\\';
FilePath filePath = new FilePath();
filePath.Extensions = new string[] { "jpg", "jpeg", "tif", "tiff", "png", "pns", "bmp", "rle", "dib", "gif" };
filePath.GetPaths(folder);
filePath.Paths.Sort(new StringLogicalComparer());
filePaths = filePath.Paths;
Index = filePaths.IndexOf(PicturePath);
Picture.MouseDown += new MouseEventHandler(Viewer_MouseDown);
Picture.MouseUp += new MouseEventHandler(Viewer_MouseUp);
Picture.MouseMove += new MouseEventHandler(Viewer_MouseMove);
this.MouseWheel += Viewer_MouseWheel;
timerSlideshow.Tick += TimerSlideshow_Tick;
Shadows = new Shadow();
}
internal void RotateImage(Bitmap bitmap)
{
try
{
switch (bitmap.GetPropertyItem(274).Value[0])
{
case 1:
break;
case 2:
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);
break;
case 3:
bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
break;
case 4:
bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
break;
case 5:
bitmap.RotateFlip(RotateFlipType.Rotate90FlipX);
break;
case 6:
bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
break;
case 7:
bitmap.RotateFlip(RotateFlipType.Rotate270FlipX);
break;
case 8:
bitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
break;
default:
break;
}
}
catch
{
}
}
internal void ShowPicture(int index, bool orientation)
{
string PicturePath = filePaths[index];
this.Text = PicturePath;
Picture.Tag = PicturePath;
bool hitCache = false;
if (cache.ContainsKey(PicturePath))
{
try
{
image.Dispose();
Picture.Image = cache[PicturePath];
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
hitCache = true;
}
catch
{
lock (cache)
{
cache[PicturePath].Dispose();
cache.Remove(PicturePath);
}
}
}
if (hitCache == false)
{
try
{
image = new Bitmap(PicturePath);
RotateImage(image);
Picture.Image = image;
Picture.Width = image.Width;
Picture.Height = image.Height;
}
catch
{
if (orientation)
{
ShowPicture(NextFilePath(index), orientation);
}
else
{
ShowPicture(PreviousFilePath(index), orientation);
}
filePaths.RemoveAt(index);
if (filePaths.Count == 0)
{
this.Dispose();
Application.Exit();
}
}
}
ChangeSize();
Picture.Show();
Index = index;
new Thread(action =>
{
lock (cache)
BuildCache(orientation);
Thread.CurrentThread.Abort();
}).Start();
}
private int PreviousFilePath(int index)
{
return index > 0 ? index - 1 : filePaths.Count - 1;
}
private int NextFilePath(int index)
{
return index < filePaths.Count - 1 ? index + 1 : 0;
}
private void PreviousPicture()
{
directionSlideshow = false;
ShowPicture(PreviousFilePath(Index), false);
if ((Index == filePaths.Count - 1))
{
System.Media.SystemSounds.Asterisk.Play();
}
}
private void NextPicture()
{
directionSlideshow = true;
ShowPicture(NextFilePath(Index), true);
if (Index == 0)
{
System.Media.SystemSounds.Beep.Play();
}
}
private void ChangeSize()
{
if ((Picture.Image.Width >= (this.Width)) || (Picture.Image.Height >= (this.Height)))
{
this.Picture.SizeMode = PictureBoxSizeMode.Zoom;
this.Picture.Dock = DockStyle.Fill;
}
else if ((Picture.Image.Width < (this.Width)) && (Picture.Image.Height < (this.Height)))
{
this.Picture.Dock = DockStyle.None;
this.Picture.SizeMode = PictureBoxSizeMode.Normal;
Picture.Location = new Point((this.Width - Picture.Width) / 2, (this.Height - Picture.Height) / 2);
}
}
private void ChangeScreenState(bool isKey)
{
Screen currentScreen = Screen.FromPoint(Control.MousePosition);
switch (screenState)
{
case ScreenState.None:
if (MovedWindow == false)
{
screenState = ScreenState.Full;
this.TopMost = true;
ScreenBeforeX = this.Location.X;
ScreenBeforeY = this.Location.Y;
ScreenBeforeWidth = this.Width;
ScreenBeforeHeight = this.Height;
AnimateWindow(this.Handle, 40, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = currentScreen.Bounds.Location;
this.Width = currentScreen.Bounds.Width;
this.Height = currentScreen.Bounds.Height;
AnimateWindow(this.Handle, 80, 0x00000010 + 0x00080000 + 0x00020000);
}
break;
case ScreenState.Full:
if (MovedWindow == false)
{
screenState = ScreenState.None;
this.TopMost = false;
AnimateWindow(this.Handle, 40, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = new Point(ScreenBeforeX, ScreenBeforeY);
this.Width = ScreenBeforeWidth;
this.Height = ScreenBeforeHeight;
AnimateWindow(this.Handle, 80, 0x00000010 + 0x00080000 + 0x00020000);
}
break;
case ScreenState.Left:
if (!isKey)
{
Shadows.ClearShadow();
ScreenBeforeX = this.Location.X;
ScreenBeforeY = this.Location.Y;
ScreenBeforeWidth = this.Width;
ScreenBeforeHeight = this.Height;
AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = currentScreen.WorkingArea.Location;
this.Width = currentScreen.WorkingArea.Width / 2;
this.Height = currentScreen.WorkingArea.Height;
AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
AtBorderline = true;
}
break;
case ScreenState.Right:
if (!isKey)
{
Shadows.ClearShadow();
ScreenBeforeX = this.Location.X;
ScreenBeforeY = this.Location.Y;
ScreenBeforeWidth = this.Width;
ScreenBeforeHeight = this.Height;
AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = new Point(currentScreen.WorkingArea.Width / 2 + currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y);
this.Width = currentScreen.WorkingArea.Width / 2;
this.Height = currentScreen.WorkingArea.Height;
AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
AtBorderline = true;
}
break;
case ScreenState.Top:
if (!isKey)
{
Shadows.ClearShadow();
ScreenBeforeX = this.Location.X;
ScreenBeforeY = this.Location.Y;
ScreenBeforeWidth = this.Width;
ScreenBeforeHeight = this.Height;
AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = currentScreen.WorkingArea.Location;
this.Width = currentScreen.WorkingArea.Width;
this.Height = currentScreen.WorkingArea.Height / 2;
AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
AtBorderline = true;
}
break;
case ScreenState.Bottom:
if (!isKey)
{
Shadows.ClearShadow();
ScreenBeforeX = this.Location.X;
ScreenBeforeY = this.Location.Y;
ScreenBeforeWidth = this.Width;
ScreenBeforeHeight = this.Height;
AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
this.Location = new Point(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Height / 2 + currentScreen.WorkingArea.Y);
this.Width = currentScreen.WorkingArea.Width;
this.Height = currentScreen.WorkingArea.Height / 2;
AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
AtBorderline = true;
}
break;
}
}
private void BuildCache(bool orientation)
{
try
{
lock (cache)
{
long now = DateTime.Now.Ticks;
buildCacheTime.Enqueue(now);
while (now - buildCacheTime.Peek() > 10000000)
{
buildCacheTime.Dequeue();
}
int index = Index;
List<string> trash = new List<string>();
if (orientation)
{
List<string> temp = new List<string>();
temp.Add(filePaths[PreviousFilePath(index)]);
do
{
temp.Add(filePaths[index]);
index = NextFilePath(index);
}
while (cache.ContainsKey(filePaths[index]) && !temp.Contains(filePaths[index]));
foreach (string item in cache.Keys)
{
if ((!temp.Contains(item)) && item != Picture.Tag.ToString())
{
trash.Add(item);
}
}
}
else
{
List<string> temp = new List<string>();
temp.Add(filePaths[NextFilePath(index)]);
do
{
temp.Add(filePaths[index]);
index = PreviousFilePath(index);
}
while (cache.ContainsKey(filePaths[index]) && !temp.Contains(filePaths[index]));
foreach (string item in cache.Keys)
{
if ((!temp.Contains(item)) && item != Picture.Tag.ToString())
{
trash.Add(item);
}
}
}
foreach (string item in trash)
{
cache[item].Dispose();
cache.Remove(item);
}
index = Index;
for (int i = 0; i < buildCacheTime.Count; i++)
{
if (orientation)
{
index = NextFilePath(index);
}
else
{
index = PreviousFilePath(index);
}
if (!cache.ContainsKey(filePaths[index]))
{
Bitmap bitmap = new Bitmap(filePaths[index]);
RotateImage(bitmap);
cache.Add(filePaths[index], bitmap);
}
}
}
}
catch
{
return;
}
}
private void DeleteFile(Image image, string filePath, bool sendToRecycleBin)
{
new Thread(action =>
{
try
{
image.Dispose();
if (filePaths.Count < 1)
{
foreach (Bitmap item in cache.Values)
{
item.Dispose();
}
}
if (sendToRecycleBin)
{
Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(filePath, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
}
else
{
File.Delete(filePath);
}
}
catch
{
return;
}
Thread.CurrentThread.Abort();
}).Start();
}
private void Exit()
{
if (StartState != 2)
{
if (screenState != ScreenState.None)
{
WritePrivateProfileString("Location", "X", ScreenBeforeX.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Location", "Y", ScreenBeforeY.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Width", ScreenBeforeWidth.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Height", ScreenBeforeHeight.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "Screen", screenState.ToString(), Application.StartupPath + @"\configure.ini");
}
else
{
WritePrivateProfileString("Location", "X", this.Location.X.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Location", "Y", this.Location.Y.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Width", this.Width.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Height", this.Height.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "Screen", "None", Application.StartupPath + @"\configure.ini");
}
}
WritePrivateProfileString("Form", "BackColor", ColorTranslator.ToHtml(this.BackColor), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "StartState", StartState.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "ShowInTaskbar", ShowInTaskbar.ToString(), Application.StartupPath + @"\configure.ini");
Shadows.Dispose();
this.Close();
}
private void Viewer_Load(object sender, EventArgs e)
{
if (Index != -1)
{
ShowPicture(Index, true);
}
else
{
this.Dispose();
Application.Exit();
}
}
private void Viewer_SizeChanged(object sender, EventArgs e)
{
if (IsLoseControl)
{
IsLoseControl = false;
this.Cursor = Cursors.Cross;
Cursor.Hide();
}
if (IsLockZoom)
{
IsLockZoom = false;
LeftButtonsPress = false;
IsZoom = false;
ChangeSize();
Cursor.Show();
cursorState = true;
}
if (LeftButtonsPress)
{
LeftButtonsPress = false;
if (IsZoom == true)
{
IsZoom = false;
ChangeSize();
Cursor.Show();
cursorState = true;
}
}
if (Picture.Image != null)
{
ChangeSize();
}
}
private void Viewer_MouseDown(object sender, MouseEventArgs e)
{
timerSlideshow.Stop();
if (IsClose == true)
{
return;
}
if (IsLockZoom)
{
if (e.Button == MouseButtons.Right)
{
if (IsLoseControl)
{
IsLoseControl = false;
this.Cursor = Cursors.Cross;
HideBeforePosition = Cursor.Position;
Cursor.Position = Center;
Cursor.Hide();
}
else
{
IsLoseControl = true;
this.Cursor = Cursors.Default;
Cursor.Position = HideBeforePosition;
Cursor.Show();
}
}
return;
}
int mouseX = Control.MousePosition.X - this.Location.X;
int mouseY = Control.MousePosition.Y - this.Location.Y;
if (e.Button == MouseButtons.Left)
{
LeftButtonsPress = true;
if (((Control.MousePosition.X - this.Location.X < edge) || ((this.Location.X + this.Width) - Control.MousePosition.X < edge) || (Control.MousePosition.Y - this.Location.Y < edge) || ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge)) && screenState != ScreenState.Full)
{
WindowRight = this.Right;
WindowBottom = this.Bottom;
ResizeWindow = true;
return;
}
IsZoom = true;
HideBeforePosition = Cursor.Position;
Cursor.Hide();
if ((Picture.Image.Width > (this.Width)) || (Picture.Image.Height > (this.Height)))
{
cursorState = false;
int PointX, PointY;
double w = Convert.ToDouble(Picture.Image.Width) / Convert.ToDouble(this.Width);
double h = Convert.ToDouble(Picture.Image.Height) / Convert.ToDouble(this.Height);
if (w > h)
{
PointX = Convert.ToInt32(mouseX * w);
PointY = Convert.ToInt32((mouseY - ((this.Height - (Picture.Image.Height / w)) / 2)) * w);
}
else if (w < h)
{
PointX = Convert.ToInt32((mouseX - ((this.Width - (Picture.Image.Width / h)) / 2)) * h);
PointY = Convert.ToInt32(mouseY * h);
}
else
{
PointX = Convert.ToInt32(mouseX * w);
PointY = Convert.ToInt32(mouseY * h);
}
PointX = (5 * mouseX + this.Width) / 7 - PointX;
PointY = (5 * mouseY + this.Height) / 7 - PointY;
if (PointX > 0)
{
PointX = 0;
}
else if (PointX < this.Width - Picture.Image.Width)
{
PointX = this.Width - Picture.Image.Width;
}
if (PointY > 0)
{
PointY = 0;
}
else if (PointY < this.Height - Picture.Image.Height)
{
PointY = this.Height - Picture.Image.Height;
}
if (Picture.Image.Width < this.Width)
{
PointX = (this.Width - Picture.Image.Width) / 2;
}
if (Picture.Image.Height < this.Height)
{
PointY = (this.Height - Picture.Image.Height) / 2;
}
this.Picture.SizeMode = PictureBoxSizeMode.Normal;
this.Picture.Dock = DockStyle.None;
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
Picture.Location = new Point(PointX, PointY);
Rectangle visualRect = Rectangle.Intersect(Cursor.Clip, this.DesktopBounds);
Center = new Point(visualRect.X + visualRect.Width / 2, visualRect.Y + visualRect.Height / 2);
Cursor.Position = new Point(Center.X, Center.Y);
DistanceX = PointX;
DistanceY = PointY;
}
}
else if (e.Button == MouseButtons.Middle)
{
if (LeftButtonsPress)
{
return;
}
MoveWindow = true;
MoveX = mouseX;
MoveY = mouseY;
}
else if (e.Button == MouseButtons.Right)
{
RightButtonsPress = true;
}
}
private void Viewer_MouseUp(object sender, MouseEventArgs e)
{
timerSlideshow.Stop();
if (IsLockZoom)
{
if (e.Button == MouseButtons.Middle && !IsLoseControl)
{
IsLockZoom = false;
LeftButtonsPress = false;
IsZoom = false;
ChangeSize();
Cursor.Position = HideBeforePosition;
Cursor.Show();
cursorState = true;
}
return;
}
if (ResizeWindow == true)
{
ResizeWindow = false;
return;
}
if (e.Button == MouseButtons.Left)
{
LeftButtonsPress = false;
if (IsZoom == true)
{
IsZoom = false;
ChangeSize();
Cursor.Position = HideBeforePosition;
Cursor.Show();
cursorState = true;
}
}
else if (e.Button == MouseButtons.Middle)
{
if (LeftButtonsPress)
{
IsLockZoom = true;
return;
}
ChangeScreenState(false);
MoveWindow = false;
MovedWindow = false;
}
else if (e.Button == MouseButtons.Right)
{
RightButtonsPress = false;
if (IsRotation == true)
{
IsRotation = false;
}
else
{
Exit();
}
}
}
private void Viewer_MouseMove(object sender, MouseEventArgs e)
{
Screen currentScreen = Screen.FromPoint(Control.MousePosition);
if (ResizeWindow == true)
{
int x, y, width, height;
if (WindowRight - MousePosition.X < this.MinimumSize.Width)
{
x = WindowRight - this.MinimumSize.Width;
width = this.MinimumSize.Width;
}
else if (WindowRight - MousePosition.X > this.MaximumSize.Width)
{
x = WindowRight - this.MaximumSize.Width;
width = this.MaximumSize.Width;
}
else
{
x = MousePosition.X;
width = WindowRight - MousePosition.X;
}
if (WindowBottom - MousePosition.Y < this.MinimumSize.Height)
{
y = WindowBottom - this.MinimumSize.Height;
height = this.MinimumSize.Height;
}
else if (WindowBottom - MousePosition.Y > this.MaximumSize.Height)
{
y = WindowBottom - this.MaximumSize.Height;
height = this.MaximumSize.Height;
}
else
{
y = MousePosition.Y;
height = WindowBottom - MousePosition.Y;
}
switch (direction)
{
case Direction.Left:
this.Bounds = new Rectangle(new Point(x, this.Location.Y), new Size(width, this.Height));
Cursor.Current = Cursors.SizeWE;
break;
case Direction.Right:
this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(MousePosition.X - this.Left, this.Height));
Cursor.Current = Cursors.SizeWE;
break;
case Direction.Top:
this.Bounds = new Rectangle(new Point(this.Location.X, y), new Size(this.Width, height));
Cursor.Current = Cursors.SizeNS;
break;
case Direction.Bottom:
this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(this.Width, MousePosition.Y - this.Top));
Cursor.Current = Cursors.SizeNS;
break;
case Direction.LeftTop:
this.Bounds = new Rectangle(new Point(x, y), new Size(width, height));
Cursor.Current = Cursors.SizeNWSE;
break;
case Direction.LeftBottom:
this.Bounds = new Rectangle(new Point(x, this.Location.Y), new Size(width, MousePosition.Y - this.Top));
Cursor.Current = Cursors.SizeNESW;
break;
case Direction.RightTop:
this.Bounds = new Rectangle(new Point(this.Location.X, y), new Size(MousePosition.X - this.Left, height));
Cursor.Current = Cursors.SizeNESW;
break;
case Direction.RightBottom:
this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(MousePosition.X - this.Left, MousePosition.Y - this.Top));
Cursor.Current = Cursors.SizeNWSE;
break;
}
this.Refresh();
return;
}
else
{
if (Control.MousePosition.X - this.Location.X < edge)
{
Cursor.Current = Cursors.SizeWE;
direction = Direction.Left;
}
if ((this.Location.X + this.Width) - Control.MousePosition.X < edge)
{
Cursor.Current = Cursors.SizeWE;
direction = Direction.Right;
}
if (Control.MousePosition.Y - this.Location.Y < edge)
{
Cursor.Current = Cursors.SizeNS;
direction = Direction.Top;
}
if ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge)
{
Cursor.Current = Cursors.SizeNS;
direction = Direction.Bottom;
}
if ((Control.MousePosition.X - this.Location.X < edge) && (Control.MousePosition.Y - this.Location.Y < edge))
{
Cursor.Current = Cursors.SizeNWSE;
direction = Direction.LeftTop;
}
if ((Control.MousePosition.X - this.Location.X < edge) && ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge))
{
Cursor.Current = Cursors.SizeNESW;
direction = Direction.LeftBottom;
}
if (((this.Location.X + this.Width) - Control.MousePosition.X < edge) && (Control.MousePosition.Y - this.Location.Y < edge))
{
Cursor.Current = Cursors.SizeNESW;
direction = Direction.RightTop;
}
if (((this.Location.X + this.Width) - Control.MousePosition.X < edge) && ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge))
{
Cursor.Current = Cursors.SizeNWSE;
direction = Direction.RightBottom;
}
}
if (MoveWindow == true)
{
if (Control.MousePosition.X < currentScreen.Bounds.Left + 2)
{
screenState = ScreenState.Left;
Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Height));
}
else if (Control.MousePosition.X > currentScreen.Bounds.Right - 2)
{
screenState = ScreenState.Right;
Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.Width / 2 + currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Height));
}
else if (Control.MousePosition.Y < currentScreen.Bounds.Top + 2)
{
screenState = ScreenState.Top;
Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width, currentScreen.WorkingArea.Height / 2));
}
else if (Control.MousePosition.Y > currentScreen.Bounds.Bottom - 2)
{
screenState = ScreenState.Bottom;
Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Height / 2 + currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width, currentScreen.WorkingArea.Height / 2));
}
else
{
if (screenState != ScreenState.Full)
{
screenState = ScreenState.None;
}
Shadows.ClearShadow();
}
if (screenState != ScreenState.Full)
{
if (AtBorderline == true)
{
screenState = ScreenState.None;
this.TopMost = false;
this.Width = ScreenBeforeWidth;
this.Height = ScreenBeforeHeight;
MoveX = MoveX > Width ? Width : MoveX;
MoveY = MoveY > Height ? Height : MoveY;
AtBorderline = false;
}
else
{
Cursor.Current = Cursors.SizeAll;
this.Location = new Point(Control.MousePosition.X - MoveX, Control.MousePosition.Y - MoveY);
}
}
MovedWindow = true;
}
else if ((bool)cursorState == false && !IsLoseControl)
{
if (Cursor.Position.X == Center.X && Cursor.Position.Y == Center.Y)
return;
DistanceX += Cursor.Position.X - Center.X;
DistanceY += Cursor.Position.Y - Center.Y;
Cursor.Position = Center;
bool ImmovableX = false;
bool ImmovableY = false;
if (Picture.Image.Width < this.Width)
{
ImmovableX = true;
}
if (Picture.Image.Height < this.Height)
{
ImmovableY = true;
}
if (DistanceX > 0)
{
DistanceX = 0;
}
if (DistanceX < (this.Width - Picture.Image.Width))
{
DistanceX = this.Width - Picture.Image.Width;
}
if (DistanceY > 0)
{
DistanceY = 0;
}
if (DistanceY < (this.Height - Picture.Image.Height))
{
DistanceY = this.Height - Picture.Image.Height;
}
if (ImmovableX == true && ImmovableY == true)
{
Picture.Location = new Point((this.Width - Picture.Image.Width) / 2, (this.Height - Picture.Image.Height) / 2);
}
else if (ImmovableX == true)
{
Picture.Location = new Point((this.Width - Picture.Image.Width) / 2, DistanceY);
}
else if (ImmovableY == true)
{
Picture.Location = new Point(DistanceX, (this.Height - Picture.Image.Height) / 2);
}
else
{
Picture.Location = new Point(DistanceX, DistanceY);
}
Picture.Refresh();
}
else
{
Shadows.ClearShadow();
}
}
private void Viewer_MouseWheel(object sender, MouseEventArgs e)
{
timerSlideshow.Stop();
if (IsLockZoom)
{
return;
}
if (e.Delta > 0)
{
if (RightButtonsPress == true && LeftButtonsPress == false)
{
IsRotation = true;
Picture.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
ChangeSize();
Picture.Refresh();
return;
}
if (LeftButtonsPress == true)
{
return;
}
PreviousPicture();
}
else if (e.Delta < 0)
{
if (RightButtonsPress == true && LeftButtonsPress == false)
{
IsRotation = true;
Picture.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
ChangeSize();
Picture.Refresh();
return;
}
if (LeftButtonsPress == true)
{
return;
}
NextPicture();
}
}
private void Viewer_KeyUp(object sender, KeyEventArgs e)
{
if (!e.Control && !e.Shift && !e.Alt)
{
switch (e.KeyCode)
{
case Keys.D0:
{
intervalSlideshow = intervalSlideshow == 100000 ? intervalSlideshow : 10 * intervalSlideshow;
return;
}
case Keys.D1:
{
timerSlideshow.Interval = intervalSlideshow * 1000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D2:
{
timerSlideshow.Interval = intervalSlideshow * 2000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D3:
{
timerSlideshow.Interval = intervalSlideshow * 3000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D4:
{
timerSlideshow.Interval = intervalSlideshow * 4000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D5:
{
timerSlideshow.Interval = intervalSlideshow * 5000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D6:
{
timerSlideshow.Interval = intervalSlideshow * 6000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D7:
{
timerSlideshow.Interval = intervalSlideshow * 7000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D8:
{
timerSlideshow.Interval = intervalSlideshow * 8000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
case Keys.D9:
{
timerSlideshow.Interval = intervalSlideshow * 9000;
timerSlideshow.Start();
intervalSlideshow = 1;
return;
}
}
}
timerSlideshow.Stop();
if (e.KeyCode == Keys.Delete)
{
if (IsLockZoom | LeftButtonsPress)
{
return;
}
try
{
string filePath = filePaths[Index];
Image image = Picture.Image;
filePaths.RemoveAt(Index);
if (e.Shift)
{
DeleteFile(image, filePath, false);
}
else
{
DeleteFile(image, filePath, true);
}
if (filePaths.Count < 1)
{
Exit();
return;
}
else
{
ShowPicture(Index < filePaths.Count ? Index : Index = 0, true);
System.Media.SystemSounds.Exclamation.Play();
}
}
catch
{
return;
}
}
if (!e.Control && !e.Shift && !e.Alt)
{
if (e.KeyCode == Keys.Escape)
{
Exit();
}
if (IsLockZoom | LeftButtonsPress)
{
return;
}
switch (e.KeyCode)
{
case Keys.Space:
{
ChangeScreenState(true);
break;
}
case Keys.Up:
{
PreviousPicture();
break;
}
case Keys.Down:
{
NextPicture();
break;
}
case Keys.Left:
{
Picture.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
ChangeSize();
Picture.Refresh();
break;
}
case Keys.Right:
{
Picture.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
Picture.Width = Picture.Image.Width;
Picture.Height = Picture.Image.Height;
ChangeSize();
Picture.Refresh();
break;
}
case Keys.H:
{
Picture.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
Picture.Refresh();
break;
}
case Keys.V:
{
Picture.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
Picture.Refresh();
break;
}
}
return;
}
if (e.Control)
{
switch (e.KeyCode)
{
case Keys.A:
{
Clipboard.SetText(filePaths[Index]);
break;
}
case Keys.B:
{
System.Diagnostics.Process.Start("explorer.exe", @"/select, " + filePaths[Index]);
break;
}
case Keys.C:
{
Clipboard.SetImage(Picture.Image);
break;
}
}
}
}
private void TimerSlideshow_Tick(object sender, EventArgs e)
{
if (directionSlideshow)
{
NextPicture();
}
else
{
PreviousPicture();
}
}
}
}
================================================
FILE: Feep/Viewer.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
================================================
FILE: Feep.Configure/Application.manifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="Feep.Configure" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
</applicationRequestMinimum>
</security>
</trustInfo>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>
================================================
FILE: Feep.Configure/Configure.Designer.cs
================================================
namespace Feep.Configure
{
partial class Configure
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Configure));
this.gbFiles = new System.Windows.Forms.GroupBox();
this.cbTIF = new System.Windows.Forms.CheckBox();
this.cbGIF = new System.Windows.Forms.CheckBox();
this.cbPNG = new System.Windows.Forms.CheckBox();
this.cbBMP = new System.Windows.Forms.CheckBox();
this.cbJPG = new System.Windows.Forms.CheckBox();
this.btnSetting = new System.Windows.Forms.Button();
this.gbBackColor = new System.Windows.Forms.GroupBox();
this.cmbFormStartState = new System.Windows.Forms.ComboBox();
this.lblFormStartState = new System.Windows.Forms.Label();
this.chkShowInTaskbar = new System.Windows.Forms.CheckBox();
this.txtColor = new System.Windows.Forms.TextBox();
this.lblColor = new System.Windows.Forms.Label();
this.pnlColor = new System.Windows.Forms.Panel();
this.numWidth = new System.Windows.Forms.NumericUpDown();
this.numHeight = new System.Windows.Forms.NumericUpDown();
this.lblMultiply = new System.Windows.Forms.Label();
this.gbFiles.SuspendLayout();
this.gbBackColor.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numWidth)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numHeight)).BeginInit();
this.SuspendLayout();
//
// gbFiles
//
this.gbFiles.Controls.Add(this.cbTIF);
this.gbFiles.Controls.Add(this.cbGIF);
this.gbFiles.Controls.Add(this.cbPNG);
this.gbFiles.Controls.Add(this.cbBMP);
this.gbFiles.Controls.Add(this.cbJPG);
this.gbFiles.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.gbFiles.Location = new System.Drawing.Point(12, 12);
this.gbFiles.Name = "gbFiles";
this.gbFiles.Size = new System.Drawing.Size(402, 65);
this.gbFiles.TabIndex = 0;
this.gbFiles.TabStop = false;
this.gbFiles.Text = "关联文件";
//
// cbTIF
//
this.cbTIF.AutoSize = true;
this.cbTIF.Checked = true;
this.cbTIF.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbTIF.Location = new System.Drawing.Point(344, 30);
this.cbTIF.Name = "cbTIF";
this.cbTIF.Size = new System.Drawing.Size(47, 24);
this.cbTIF.TabIndex = 4;
this.cbTIF.Text = "TIF";
this.cbTIF.UseVisualStyleBackColor = true;
//
// cbGIF
//
this.cbGIF.AutoSize = true;
this.cbGIF.Checked = true;
this.cbGIF.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbGIF.Location = new System.Drawing.Point(269, 30);
this.cbGIF.Name = "cbGIF";
this.cbGIF.Size = new System.Drawing.Size(49, 24);
this.cbGIF.TabIndex = 3;
this.cbGIF.Text = "GIF";
this.cbGIF.UseVisualStyleBackColor = true;
//
// cbPNG
//
this.cbPNG.AutoSize = true;
this.cbPNG.Checked = true;
this.cbPNG.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbPNG.Location = new System.Drawing.Point(185, 30);
this.cbPNG.Name = "cbPNG";
this.cbPNG.Size = new System.Drawing.Size(58, 24);
this.cbPNG.TabIndex = 2;
this.cbPNG.Text = "PNG";
this.cbPNG.UseVisualStyleBackColor = true;
//
// cbBMP
//
this.cbBMP.AutoSize = true;
this.cbBMP.Checked = true;
this.cbBMP.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbBMP.Location = new System.Drawing.Point(99, 30);
this.cbBMP.Name = "cbBMP";
this.cbBMP.Size = new System.Drawing.Size(60, 24);
this.cbBMP.TabIndex = 1;
this.cbBMP.Text = "BMP";
this.cbBMP.UseVisualStyleBackColor = true;
//
// cbJPG
//
this.cbJPG.AutoSize = true;
this.cbJPG.Checked = true;
this.cbJPG.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbJPG.Location = new System.Drawing.Point(20, 30);
this.cbJPG.Name = "cbJPG";
this.cbJPG.Size = new System.Drawing.Size(53, 24);
this.cbJPG.TabIndex = 0;
this.cbJPG.Text = "JPG";
this.cbJPG.UseVisualStyleBackColor = true;
//
// btnSetting
//
this.btnSetting.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSetting.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSetting.Location = new System.Drawing.Point(354, 193);
this.btnSetting.Name = "btnSetting";
this.btnSetting.Size = new System.Drawing.Size(60, 28);
this.btnSetting.TabIndex = 2;
this.btnSetting.Text = "设置";
this.btnSetting.UseVisualStyleBackColor = true;
this.btnSetting.Click += new System.EventHandler(this.btnSetting_Click);
//
// gbBackColor
//
this.gbBackColor.Controls.Add(this.numHeight);
this.gbBackColor.Controls.Add(this.numWidth);
this.gbBackColor.Controls.Add(this.cmbFormStartState);
this.gbBackColor.Controls.Add(this.lblFormStartState);
this.gbBackColor.Controls.Add(this.chkShowInTaskbar);
this.gbBackColor.Controls.Add(this.txtColor);
this.gbBackColor.Controls.Add(this.lblColor);
this.gbBackColor.Controls.Add(this.pnlColor);
this.gbBackColor.Controls.Add(this.lblMultiply);
this.gbBackColor.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.gbBackColor.Location = new System.Drawing.Point(12, 83);
this.gbBackColor.Name = "gbBackColor";
this.gbBackColor.Size = new System.Drawing.Size(402, 104);
this.gbBackColor.TabIndex = 1;
this.gbBackColor.TabStop = false;
this.gbBackColor.Text = "窗体设置";
//
// cmbFormStartState
//
this.cmbFormStartState.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbFormStartState.FormattingEnabled = true;
this.cmbFormStartState.Items.AddRange(new object[] {
"默认",
"全屏",
"自定"});
this.cmbFormStartState.Location = new System.Drawing.Point(89, 66);
this.cmbFormStartState.Name = "cmbFormStartState";
this.cmbFormStartState.Size = new System.Drawing.Size(90, 28);
this.cmbFormStartState.TabIndex = 6;
this.cmbFormStartState.SelectedIndexChanged += new System.EventHandler(this.cmbFormStartState_SelectedIndexChanged);
//
// lblFormStartState
//
this.lblFormStartState.AutoSize = true;
this.lblFormStartState.Font = new System.Drawing.Font("微软雅黑", 10.5F);
this.lblFormStartState.Location = new System.Drawing.Point(16, 70);
this.lblFormStartState.Name = "lblFormStartState";
this.lblFormStartState.Size = new System.Drawing.Size(79, 20);
this.lblFormStartState.TabIndex = 5;
this.lblFormStartState.Text = "启动状态:";
//
// chkShowInTaskbar
//
this.chkShowInTaskbar.AutoSize = true;
this.chkShowInTaskbar.Location = new System.Drawing.Point(225, 29);
this.chkShowInTaskbar.Name = "chkShowInTaskbar";
this.chkShowInTaskbar.Size = new System.Drawing.Size(154, 24);
this.chkShowInTaskbar.TabIndex = 4;
this.chkShowInTaskbar.Text = "在任务栏中显示图标";
this.chkShowInTaskbar.UseVisualStyleBackColor = true;
//
// txtColor
//
this.txtColor.Location = new System.Drawing.Point(89, 28);
this.txtColor.MaxLength = 6;
this.txtColor.Name = "txtColor";
this.txtColor.Size = new System.Drawing.Size(65, 26);
this.txtColor.TabIndex = 2;
this.txtColor.Text = "444444";
this.txtColor.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.txtColor.MouseClick += new System.Windows.Forms.MouseEventHandler(this.txtColor_MouseClick);
this.txtColor.TextChanged += new System.EventHandler(this.txtColor_TextChanged);
//
// lblColor
//
this.lblColor.AutoSize = true;
this.lblColor.Font = new System.Drawing.Font("微软雅黑", 10.5F);
this.lblColor.Location = new System.Drawing.Point(14, 31);
this.lblColor.Name = "lblColor";
this.lblColor.Size = new System.Drawing.Size(74, 20);
this.lblColor.TabIndex = 1;
this.lblColor.Text = "背景色:#";
//
// pnlColor
//
this.pnlColor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(68)))), ((int)(((byte)(68)))));
this.pnlColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pnlColor.Location = new System.Drawing.Point(159, 31);
this.pnlColor.Name = "pnlColor";
this.pnlColor.Size = new System.Drawing.Size(20, 20);
this.pnlColor.TabIndex = 0;
//
// numWidth
//
this.numWidth.Location = new System.Drawing.Point(198, 67);
this.numWidth.Maximum = new decimal(new int[] {
99999,
0,
0,
0});
this.numWidth.Name = "numWidth";
this.numWidth.Size = new System.Drawing.Size(60, 26);
this.numWidth.TabIndex = 7;
this.numWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.numWidth.Value = new decimal(new int[] {
1280,
0,
0,
0});
this.numWidth.Visible = false;
//
// numHeight
//
this.numHeight.Location = new System.Drawing.Point(279, 67);
this.numHeight.Maximum = new decimal(new int[] {
99999,
0,
0,
0});
this.numHeight.Name = "numHeight";
this.numHeight.Size = new System.Drawing.Size(60, 26);
this.numHeight.TabIndex = 8;
this.numHeight.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.numHeight.Value = new decimal(new int[] {
720,
0,
0,
0});
this.numHeight.Visible = false;
//
// lblMultiply
//
this.lblMultiply.AutoSize = true;
this.lblMultiply.Location = new System.Drawing.Point(259, 70);
this.lblMultiply.Name = "lblMultiply";
this.lblMultiply.Size = new System.Drawing.Size(19, 20);
this.lblMultiply.TabIndex = 9;
this.lblMultiply.Text = "×";
this.lblMultiply.Visible = false;
//
// Configure
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Window;
this.ClientSize = new System.Drawing.Size(426, 233);
this.Controls.Add(this.gbBackColor);
this.Controls.Add(this.btnSetting);
this.Controls.Add(this.gbFiles);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Configure";
this.Opacity = 0.98D;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Feep 配置辅助程序";
this.gbFiles.ResumeLayout(false);
this.gbFiles.PerformLayout();
this.gbBackColor.ResumeLayout(false);
this.gbBackColor.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numWidth)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numHeight)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.GroupBox gbFiles;
private System.Windows.Forms.CheckBox cbTIF;
private System.Windows.Forms.CheckBox cbGIF;
private System.Windows.Forms.CheckBox cbPNG;
private System.Windows.Forms.CheckBox cbBMP;
private System.Windows.Forms.CheckBox cbJPG;
private System.Windows.Forms.Button btnSetting;
private System.Windows.Forms.GroupBox gbBackColor;
private System.Windows.Forms.TextBox txtColor;
private System.Windows.Forms.Label lblColor;
private System.Windows.Forms.Panel pnlColor;
private System.Windows.Forms.ComboBox cmbFormStartState;
private System.Windows.Forms.Label lblFormStartState;
private System.Windows.Forms.CheckBox chkShowInTaskbar;
private System.Windows.Forms.NumericUpDown numHeight;
private System.Windows.Forms.NumericUpDown numWidth;
private System.Windows.Forms.Label lblMultiply;
}
}
================================================
FILE: Feep.Configure/Configure.cs
================================================
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Runtime.InteropServices;
namespace Feep.Configure
{
public partial class Configure : Form
{
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[Flags]
public enum HChangeNotifyFlags
{
SHCNF_DWORD = 0x0003,
SHCNF_IDLIST = 0x0000,
SHCNF_PATHA = 0x0001,
SHCNF_PATHW = 0x0005,
SHCNF_PRINTERA = 0x0002,
SHCNF_PRINTERW = 0x0006,
SHCNF_FLUSH = 0x1000,
SHCNF_FLUSHNOWAIT = 0x2000
}
[Flags]
enum HChangeNotifyEventID
{
SHCNE_ALLEVENTS = 0x7FFFFFFF,
SHCNE_ASSOCCHANGED = 0x08000000,
SHCNE_ATTRIBUTES = 0x00000800,
SHCNE_CREATE = 0x00000002,
SHCNE_DELETE = 0x00000004,
SHCNE_DRIVEADD = 0x00000100,
SHCNE_DRIVEADDGUI = 0x00010000,
SHCNE_DRIVEREMOVED = 0x00000080,
SHCNE_EXTENDED_EVENT = 0x04000000,
SHCNE_FREESPACE = 0x00040000,
SHCNE_MEDIAINSERTED = 0x00000020,
SHCNE_MEDIAREMOVED = 0x00000040,
SHCNE_MKDIR = 0x00000008,
SHCNE_NETSHARE = 0x00000200,
SHCNE_NETUNSHARE = 0x00000400,
SHCNE_RENAMEFOLDER = 0x00020000,
SHCNE_RENAMEITEM = 0x00000001,
SHCNE_RMDIR = 0x00000010,
SHCNE_SERVERDISCONNECT = 0x00004000,
SHCNE_UPDATEDIR = 0x00001000,
SHCNE_UPDATEIMAGE = 0x00008000,
}
[DllImport("shell32.dll")]
static extern void SHChangeNotify(HChangeNotifyEventID wEventId, HChangeNotifyFlags uFlags, IntPtr dwItem1, IntPtr dwItem2);
public static void RegisterFileType(string ExtendName, string Description, string IcoPath, string ExePath, bool Wish)
{
string relationName = "Feep." + ExtendName.Substring(1, ExtendName.Length - 1).ToUpper();
try
{
Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Microsoft", true).OpenSubKey("Windows", true).OpenSubKey("CurrentVersion", true).OpenSubKey("Explorer", true).OpenSubKey("FileExts", true).DeleteSubKeyTree(ExtendName);
Registry.ClassesRoot.DeleteSubKeyTree(ExtendName);
Registry.ClassesRoot.DeleteSubKeyTree(relationName);
}
catch (Exception)
{
try
{
Registry.ClassesRoot.DeleteSubKeyTree(ExtendName);
Registry.ClassesRoot.DeleteSubKeyTree(relationName);
}
catch
{
try
{
Registry.ClassesRoot.DeleteSubKeyTree(relationName);
}
catch
{ }
}
}
if (Wish)
{
RegistryKey fileTypeKey = Registry.ClassesRoot.CreateSubKey(ExtendName);
fileTypeKey.SetValue("", relationName);
fileTypeKey.Close();
RegistryKey relationKey = Registry.ClassesRoot.CreateSubKey(relationName);
relationKey.SetValue("", Description);
RegistryKey iconKey = relationKey.CreateSubKey("DefaultIcon");
iconKey.SetValue("", IcoPath);
RegistryKey shellKey = relationKey.CreateSubKey("Shell");
RegistryKey openKey = shellKey.CreateSubKey("Open");
RegistryKey commandKey = openKey.CreateSubKey("Command");
commandKey.SetValue("", "\"" + ExePath + "\"" + " \"%1\"");
relationKey.Close();
}
SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
}
int PointX, PointY, SizeWidth, SizeHeight;
string screen = "", backColor = "";
int startState = 0;
bool showInTaskbar = false;
public Configure()
{
InitializeComponent();
StringBuilder ReturnedString = new StringBuilder(255);
GetPrivateProfileString("Location", "X", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out PointX);
GetPrivateProfileString("Location", "Y", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out PointY);
GetPrivateProfileString("Size", "Width", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out SizeWidth);
GetPrivateProfileString("Size", "Height", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out SizeHeight);
GetPrivateProfileString("Form", "Screen", "None", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
screen = ReturnedString.ToString();
GetPrivateProfileString("Form", "BackColor", "#000000", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
backColor = ReturnedString.ToString();
GetPrivateProfileString("Form", "StartState", "0", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Int32.TryParse(ReturnedString.ToString(), out startState);
GetPrivateProfileString("Form", "ShowInTaskbar", "False", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
Boolean.TryParse(ReturnedString.ToString(), out showInTaskbar);
numWidth.Value = SizeWidth;
numHeight.Value = SizeHeight;
try
{
pnlColor.BackColor = ColorTranslator.FromHtml(backColor);
txtColor.Text = backColor.Substring(1);
}
catch
{
pnlColor.BackColor = Color.Black;
}
cmbFormStartState.SelectedIndex = startState;
chkShowInTaskbar.Checked = showInTaskbar;
}
private void txtColor_TextChanged(object sender, EventArgs e)
{
if (txtColor.Text.Length == 6)
{
try
{
pnlColor.BackColor = ColorTranslator.FromHtml("#" + txtColor.Text);
}
catch (Exception)
{
}
}
}
private void txtColor_MouseClick(object sender, MouseEventArgs e)
{
txtColor.SelectAll();
}
private void btnSetting_Click(object sender, EventArgs e)
{
switch (cmbFormStartState.SelectedIndex)
{
case 1:
{
PointX = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1);
PointY = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1);
SizeWidth = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8);
SizeHeight = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8);
}
break;
case 2:
{
SizeWidth = (int)numWidth.Value;
SizeHeight = (int)numHeight.Value;
PointX = 0;
PointY = 0;
}
break;
}
WritePrivateProfileString("Location", "X", PointX.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Location", "Y", PointY.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Width", SizeWidth.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Size", "Height", SizeHeight.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "Screen", "None", Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "BackColor", ColorTranslator.ToHtml(pnlColor.BackColor), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "StartState", cmbFormStartState.SelectedIndex.ToString(), Application.StartupPath + @"\configure.ini");
WritePrivateProfileString("Form", "ShowInTaskbar", chkShowInTaskbar.Checked.ToString(), Application.StartupPath + @"\configure.ini");
RegisterFileType(".jpg", "Feep JPG File", Application.StartupPath + @"\Icon\JPG.ico", Application.StartupPath + @"\Feep.exe", cbJPG.Checked);
RegisterFileType(".bmp", "Feep BMP File", Application.StartupPath + @"\Icon\BMP.ico", Application.StartupPath + @"\Feep.exe", cbBMP.Checked);
RegisterFileType(".png", "Feep PNG File", Application.StartupPath + @"\Icon\PNG.ico", Application.StartupPath + @"\Feep.exe", cbPNG.Checked);
RegisterFileType(".gif", "Feep GIF File", Application.StartupPath + @"\Icon\GIF.ico", Application.StartupPath + @"\Feep.exe", cbGIF.Checked);
RegisterFileType(".tif", "Feep TIF File", Application.StartupPath + @"\Icon\TIF.ico", Application.StartupPath + @"\Feep.exe", cbTIF.Checked);
MessageBox.Show("设置成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void cmbFormStartState_SelectedIndexChanged(object sender, EventArgs e)
{
switch (cmbFormStartState.SelectedIndex)
{
case 0:
case 1:
{
numWidth.Visible = false;
numHeight.Visible = false;
lblMultiply.Visible = false;
}
break;
case 2:
{
numWidth.Visible = true;
numHeight.Visible = true;
lblMultiply.Visible = true;
}
break;
}
}
}
}
================================================
FILE: Feep.Configure/Configure.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAgAEBAAAAEAIABoBAAAhgAAABgYAAABACAAiAkAAO4EAAAgIAAAAQAgAKgQAAB2DgAAMDAAAAEA
IACoJQAAHh8AAEBAAAABACAAKEIAAMZEAABgYAAAAQAgAKiUAADuhgAAgIAAAAEAIAAoCAEAlhsBAAAA
AAABACAA4GIAAL4jAgAoAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAonJydlcHBwooGBgbeEhIS5hISEuYSEhLmEhIS5hISEuYSEhLmBgYG3b29voiYmJmUAAAAKAAAAAAAA
AAp0dHTJ9fX1///////////////////////9/f3/6Ojo///////////////////////09PT/c3NzyQAA
AAonJydl9fX1////////////+fn5/5CQkP/u7u7/yMjI/yUlJf/z8/P/8fHx/+rq6v////////////T0
9P8mJiZlcHBwov////////////////v7+/8tLS3/Y2Nj/4ODg/8bGxv/zs7O/01NTf9gYGD/////////
////////b29vooGBgbf/////8PDw/29vb//BwcH/Wlpa/xsbG/8cHBz/Ghoa/yUlJf8aGhr/s7Oz//v7
+//29vb//////4GBgbeCgoK5/////+/v7/9FRUX/Gxsb/xwcHP8dHR3/UlJS/1ZWVv8fHx//Gxsb/1tb
W/8vLy//gYGB//////+CgoK5goKCuf/////8/Pz/0tLS/yMjI/8dHR3/t7e3////////////x8fH/yEh
If8aGhr/WFhY/+rq6v//////goKCuYKCgrny8vL/Kysr/x4eHv8aGhr/Tk5O////////////////////
//9iYmL/Gxsb/35+fv/CwsL/+vr6/4KCgrmCgoK5/Pz8/7u7u/90dHT/Gxsb/1BQUP//////////////
////////Y2Nj/xoaGv8bGxv/IiIi/97e3v+CgoK5goKCuf/////09PT/bm5u/xsbG/8eHh7/vr6+////
////////zc3N/yIiIv8gICD/xcXF//T09P//////goKCuYKCgrn/////k5OT/yUlJf9MTEz/HBwc/x8f
H/9aWlr/X19f/yIiIv8bGxv/Ghoa/0NDQ//q6ur//////4KCgrmBgYG3//////b29v/19fX/xcXF/xsb
G/8fHx//Ghoa/xoaGv8aGhr/Tk5O/7e3t/9lZWX/5OTk//////+BgYG3cHBwov///////////////3R0
dP88PDz/yMjI/x0dHf9wcHD/Y2Nj/yYmJv/19fX/////////////////cHBwoicnJ2X19fX/////////
///s7Oz/5+fn//z8/P8qKir/tLS0//Hx8f+FhYX/8vLy////////////9PT0/yYmJmUAAAAKdHR0yvX1
9f//////////////////////6Ojo//n5+f//////////////////////9PT0/3Nzc8kAAAAKAAAAAAAA
AAonJydlcHBwooGBgbeCgoK5goKCuYKCgrmCgoK5goKCuYKCgrmBgYG3cHBwoiYmJmUAAAAKAAAAAIAB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAB
AAAoAAAAGAAAADAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAA
AFIDAwN9FRUVkhsbG5YbGxuWGxsblhsbG5YbGxuWGxsblhsbG5YbGxuWGxsblhsbG5YVFRWSAwMDfQAA
AFIAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAIODg55dnZ278fHx/7y8vL//f39////////////////////
///////////////////////////////////9/f3/8vLy/8bGxv51dXXvDQ0NeQAAAAIAAAAAAAAAAA4O
DnnCwsL9///////////////////////////////////////////6+vr/1tbW//X19f//////////////
////////////////////////wcHB/Q0NDXkAAAAAAAAAE3d3d+////////////////////////////T0
9P+ysrL/+/v7//////+8vLz/ISEh/42Njf////////////7+/v///////////////////////////3V1
de8AAAATAAAAUsfHx/7//////////////////////////4ODg/8cHBz/kJCQ//////99fX3/Ghoa/29v
b///////3d3d/0tLS/+0tLT//////////////////////8bGxv4AAABSAwMDffLy8v//////////////
/////////////7Gxsf8aGhr/IiIi/7q6uv8/Pz//Ghoa/1RUVP/d3d3/OTk5/xoaGv+Hh4f/////////
//////////////Ly8v8DAwN9FRUVkv39/f///////////8fHx/+ampr/7Ozs/+Tk5P8iIiL/Ghoa/yAg
IP8bGxv/Ghoa/yEhIf8tLS3/Ghoa/yMjI//f39////////////////////////39/f8VFRWSGRkZlv7+
/v///////////1FRUf8aGhr/Kysr/21tbf8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/1lZ
Wf/q6ur/tbW1/3t7e//o6Oj///////////8ZGRmWGRkZlv7+/v///////////9TU1P8vLy//Ghoa/xoa
Gv8aGhr/Gxsb/zs7O/99fX3/gYGB/0VFRf8cHBz/Ghoa/yEhIf8lJSX/Gxsb/xsbG/+enp7/////////
//8ZGRmWGRkZlv7+/v/////////////////Ozs7/Jycn/xoaGv8aGhr/cXFx//b29v////////////v7
+/+IiIj/HBwc/xoaGv8aGhr/Hx8f/4KCgv/4+Pj///////////8ZGRmWGRkZlv7+/v/7+/v/o6Oj/4WF
hf9paWn/ISEh/xoaGv84ODj/9fX1///////////////////////8/Pz/T09P/xoaGv8cHBz/paWl////
//////////////////8ZGRmWGRkZlv7+/v/l5eX/IyMj/xoaGv8aGhr/Ghoa/xoaGv92dnb/////////
////////////////////////lJSU/xoaGv8aGhr/Pj4+/3h4eP+xsbH/9PT0//////8ZGRmWGRkZlv7+
/v/5+fn/qamp/2hoaP8vLy//Ghoa/xoaGv94eHj/////////////////////////////////lpaW/xoa
Gv8aGhr/Ghoa/xoaGv8cHBz/xsbG//////8ZGRmWGRkZlv7+/v////////////////++vr7/Hx8f/xoa
Gv88PDz/9/f3///////////////////////+/v7/VFRU/xoaGv8eHh7/S0tL/25ubv+Pj4//7u7u////
//8ZGRmWGRkZlv7+/v///////v7+/6Wlpf8nJyf/Ghoa/xoaGv8bGxv/enp6//n5+f////////////39
/f+Tk5P/HR0d/xoaGv8kJCT/1NTU//////////////////////8ZGRmWGRkZlv7+/v//////u7u7/x4e
Hv8aGhr/Hh4e/x4eHv8aGhr/Gxsb/0RERP+Kior/jo6O/09PT/8cHBz/Ghoa/xoaGv8aGhr/Ly8v/87O
zv////////////////8ZGRmWGRkZlv7+/v//////8/Pz/3BwcP+cnJz/09PT/2VlZf8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Hh4e/1JSUv8lJSX/Ghoa/zo6Ov/5+fn///////////8ZGRmWFRUVkv39
/f//////////////////////8fHx/y4uLv8aGhr/ISEh/x4eHv8aGhr/Ghoa/xsbG/8aGhr/ICAg/9vb
2//l5eX/lZWV/6urq/////////////39/f8VFRWSAwMDffLy8v//////////////////////qKio/xsb
G/8oKCj/wsLC/15eXv8aGhr/Li4u/6urq/8iIiL/Ghoa/6CgoP////////////////////////////Ly
8v8DAwN9AAAAUsfHx/7/////////////////////wMDA/z8/P//Dw8P//////4ODg/8aGhr/YmJi////
//+YmJj/HBwc/2ZmZv///////////////////////////8fHx/4AAABSAAAAE3d3d+//////////////
//////////////z8/P///////////6Wlpf8eHh7/nZ2d///////9/f3/qKio/+fn5///////////////
/////////////3Z2du8AAAATAAAAAA4ODnnCwsL9//////////////////////////////////////b2
9v/V1dX/8vLy////////////////////////////////////////////wcHB/Q4ODnkAAAAAAAAAAAAA
AAIODg55d3d378fHx/7y8vL//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
/v/9/f3/8vLy/8fHx/52dnbvDg4OeQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAFIDAwN9FRUVkhkZ
GZYZGRmWGRkZlhkZGZYZGRmWGRkZlhkZGZYZGRmWGRkZlhkZGZYVFRWSAwMDfQAAAFIAAAATAAAAAAAA
AAAAAAAA4AAHAIAAAQCAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAIAAAQDgAAcAKAAAACAAAABAAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAADgAAABaAAAAbAAA
AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAbAAA
AFoAAAA4AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwICAp5BQUHtfn5++aKi
ovy2trb+vb29/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//729
vf+2trb+oqKi/H19ffk/Pz/tAgICngAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExAQEDt1dXV////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////U1NT/Pj4+7QAAAEwAAAAAAAAAAAAAAAAAAAAoQEBA7fj4
+P////////////////////////////////////////////////////////////b29v/FxcX/3t7e////
///////////////////////////////////////////////////39/f/Pj4+7QAAACcAAAAAAAAAAAMD
A57W1tb///////////////////////////////////////v7+//R0dH/////////////////sLCw/yMj
I/8wMDD/8vLy///////////////////////////////////////////////////////U1NT/AgICngAA
AAAAAAAKQUFB7f/////////////////////////////////////n5+f/TExM/ycnJ/+5ubn/////////
//9ycnL/Ghoa/yUlJf/b29v////////////Gxsb/q6ur//39/f//////////////////////////////
//8/Pz/tAAAACgAAADh+fn75//////////////////////////////////////Dw8P8rKyv/Ghoa/zU1
Nf/i4uL/+vr6/zc3N/8aGhr/Hh4e/8bGxv//////w8PD/ywsLP8fHx//jY2N////////////////////
/////////////319ffkAAAA4AAAAWqOjo/z//////////////////////////////////////////1VV
Vf8aGhr/Ghoa/1lZWf+4uLj/IiIi/xoaGv8aGhr/r6+v/8PDw/8sLCz/Ghoa/x4eHv+3t7f/////////
////////////////////////oqKi/AAAAFoAAABstra2/v////////////////////+rq6v/zc3N//7+
/v//////j4+P/xoaGv8aGhr/HR0d/yMjI/8aGhr/Ghoa/xoaGv82Njb/LCws/xoaGv8aGhr/Pj4+//j4
+P////////////////////////////////+2trb+AAAAbAAAAHO9vb3/////////////////xcXF/yMj
I/8iIiL/VFRU/7Ozs/+jo6P/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsb
G/+Xl5f////////////v7+//3Nzc/////////////////729vf8AAABzAAAAc729vf//////////////
//++vr7/Jycn/xoaGv8aGhr/Hh4e/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/ICAg/5ubm/+ampr/W1tb/ywsLP83Nzf/7u7u////////////vb29/wAAAHMAAABzvb29////
//////////////////+wsLD/JCQk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/29vb/+lpaX/qKio/3x8
fP8vLy//Ghoa/xoaGv8aGhr/Hh4e/xoaGv8aGhr/Ghoa/yIiIv+7u7v///////////+9vb3/AAAAcwAA
AHO9vb3///////////////////////////+np6f/IyMj/xoaGv8aGhr/Ghoa/zw8PP/S0tL/////////
/////////////+Pj4/9SUlL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8sLCz/rKys/////////////////729
vf8AAABzAAAAc729vf/////////////////z8/P/3Nzc/8bGxv81NTX/Ghoa/xoaGv8mJib/z8/P////
/////////////////////////////+fn5/81NTX/Ghoa/xoaGv8bGxv/RkZG/9TU1P//////////////
////////vb29/wAAAHMAAABzvb29///////u7u7/QkJC/yoqKv8lJSX/Hx8f/xoaGv8aGhr/Ghoa/2dn
Z////////////////////////////////////////////4+Pj/8aGhr/Ghoa/x4eHv+pqan/+fn5////
//////////////////+9vb3/AAAAcwAAAHO9vb3//////9ra2v8lJSX/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/m5ub////////////////////////////////////////////wMDA/x0dHf8aGhr/Ghoa/yIi
Iv8zMzP/Z2dn/6Ghof/r6+v//////729vf8AAABzAAAAc729vf//////9PT0/5eXl/9WVlb/KSkp/xwc
HP8aGhr/Ghoa/xoaGv+dnZ3////////////////////////////////////////////BwcH/Hh4e/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/7CwsP//////vb29/wAAAHMAAABzvb29////////////////////
///q6ur/n5+f/yAgIP8aGhr/Ghoa/21tbf///////////////////////////////////////////5WV
lf8aGhr/Ghoa/xoaGv8aGhr/Hh4e/yUlJf8uLi7/y8vL//////+9vb3/AAAAcwAAAHO9vb3/////////
/////////////+7u7v9sbGz/HR0d/xoaGv8aGhr/KCgo/9fX1///////////////////////////////
///t7e3/Ozs7/xoaGv8aGhr/Jycn/5+fn//CwsL/3Nzc//X19f///////////729vf8AAABzAAAAc729
vf/////////////////S0tL/RUVF/xsbG/8aGhr/Ghoa/xoaGv8aGhr/RUVF/93d3f//////////////
////////7Ozs/15eXv8bGxv/Ghoa/xoaGv8mJib/tLS0////////////////////////////vb29/wAA
AHMAAABzvb29////////////3Nzc/y8vL/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/LS0t/39/
f/+1tbX/ubm5/42Njf84ODj/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8lJSX/qqqq////////////////////
//+9vb3/AAAAcwAAAHO9vb3////////////6+vr/SEhI/yQkJP86Ojr/c3Nz/4eHh/8hISH/Ghoa/xoa
Gv8aGhr/Ghoa/xsbG/8cHBz/Ghoa/xoaGv8aGhr/Ghoa/x4eHv8bGxv/Ghoa/xoaGv8kJCT/qamp////
/////////////729vf8AAABzAAAAc729vf/////////////////b29v/2dnZ//z8/P//////uLi4/x4e
Hv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/g4OD/5ycnP9GRkb/ISEh/x0d
Hf+YmJj/////////////////vb29/wAAAHMAAABstra2/v//////////////////////////////////
//9gYGD/Ghoa/xoaGv8hISH/Jycn/xoaGv8aGhr/Ghoa/xsbG/8bGxv/Ghoa/xoaGv9/f3////////z8
/P/Hx8f/j4+P//n5+f////////////////+2trb+AAAAbAAAAFqjo6P8////////////////////////
////////3Nzc/yYmJv8aGhr/ISEh/5aWlv+0tLT/HBwc/xoaGv8cHBz/k5OT/1ZWVv8aGhr/Ghoa/0BA
QP/9/f3//////////////////////////////////////6KiovwAAABaAAAAOH5+fvn/////////////
//////////////////+srKz/ISEh/yEhIf+Wlpb//////9fX1/8kJCT/Ghoa/ygoKP/n5+f/4+Pj/zk5
Of8aGhr/JCQk/9jY2P//////////////////////////////////////fX19+QAAADgAAAAKQUFB7f//
//////////////////////////////7+/v+ysrL/oKCg////////////8/Pz/ysrK/8aGhr/TExM////
////////x8fH/ygoKP8zMzP/zMzM//////////////////////////////////////9AQEDtAAAACgAA
AAADAwOe1tbW////////////////////////////////////////////////////////////Q0ND/x4e
Hv+Hh4f/////////////////y8vL/+3t7f//////////////////////////////////////1dXV/wIC
Ap4AAAAAAAAAAAAAAChAQEDt+Pj4////////////////////////////////////////////////////
///e3t7/xcXF/+jo6P////////////////////////////////////////////////////////////f3
9/8/Pz/tAAAAJwAAAAAAAAAAAAAAAAAAAE1AQEDt1tbW////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///V1dX/Pz8/7QAAAE0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgDAwOeQUFB7X5+fvmjo6P8tra2/r29
vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/tra2/qOj
o/x+fn75QEBA7QICAp4AAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAOAAA
AFoAAABsAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
AHMAAABsAAAAWgAAADgAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAf4AAAB8AAAAOAAAABgAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPgAAAH+AAAHygAAAAwAAAAYAAAAAEA
IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAACQAAABoAAAAsAAAANwAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAA
ADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAANwAAACwAAAAaAAAACQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAGAAAARQAAAIgAAAC/AAAA4QcHB+8VFRXxHR0d8iAgIPMiIiLzIiIi8yIiIvMiIiLzIiIi8yIi
IvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMgICDzHR0d8hUV
FfEHBwfvAAAA4QAAAL8AAACIAAAARQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAgAAAFcAAADNHh4e829vb/utra3+2dnZ//Ly8v/5+fn//f39//7+/v//////////////
////////////////////////////////////////////////////////////////////////////////
///+/v7//f39//n5+f/y8vL/2NjY/6ysrP5ubm77HBwc8wAAAM0AAABXAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAJAAAAmRwcHPKlpaX++/v7////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////+/v7/6Kiov4bGxvyAAAAmAAA
AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACZNzc39ufn5///////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///m5ub/NTU19gAAAJgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAFccHBzy5+fn////////////////////
/////////////////////////////////////////////////////////////////////////////+rq
6v+kpKT/tra2/9fX1///////////////////////////////////////////////////////////////
////////////////////////5ubm/xsbG/IAAABXAAAAAAAAAAAAAAAAAAAABwAAAM2mpqb+////////
/////////////////////////////////////////////////////////v7+//v7+///////////////
/////////////5aWlv8nJyf/KSkp/zs7O//x8fH/////////////////////////////////////////
/////////////////////////////////////////////6Kiov4AAADNAAAABgAAAAAAAAAAAAAARh8f
H/P7+/v////////////////////////////////////////////////////////////T09P/d3d3/1hY
WP/t7e3//////////////////v7+/1xcXP8aGhr/Ghoa/y0tLf/a2tr///////////////////////7+
/v/9/f3///////////////////////////////////////////////////////v7+/8cHBzzAAAARQAA
AAAAAAAAAAAAiHBwcPv//////////////////////////////////////////////////////////8nJ
yf82Njb/HR0d/x8fH/93d3f//f39////////////5ubm/zQ0NP8aGhr/Ghoa/ykpKf/Dw8P/////////
////////+/v7/4SEhP9lZWX/29vb////////////////////////////////////////////////////
//9ubm77AAAAiAAAAAAAAAAAAAAAv62trf//////////////////////////////////////////////
/////////////9/f3/8vLy//Ghoa/xoaGv8oKCj/pKSk////////////tra2/yUlJf8aGhr/Ghoa/yIi
Iv+urq7////////////6+vr/gYGB/yUlJf8cHBz/OTk5/729vf//////////////////////////////
//////////////////+srKz+AAAAvwAAAAAAAAAJAAAA4tra2v//////////////////////////////
//////////////////////////////39/f9JSUn/Ghoa/xoaGv8aGhr/ODg4/9HR0f//////f39//xwc
HP8aGhr/Ghoa/x0dHf+ampr///////v7+/+BgYH/JSUl/xoaGv8aGhr/Jycn/7i4uP//////////////
///////////////////////////////////Y2Nj/AAAA4QAAAAkAAAAaBwcH7/Ly8v//////////////
//////////////////////////////////////////////////+AgID/Gxsb/xoaGv8aGhr/Gxsb/1NT
U//Gxsb/RkZG/xoaGv8aGhr/Ghoa/xoaGv+BgYH/+/v7/4GBgf8lJSX/Ghoa/xoaGv8aGhr/SEhI//b2
9v/////////////////////////////////////////////////y8vL/BwcH7wAAABoAAAAtFRUV8fn5
+f/////////////////////////////////d3d3/1dXV//39/f////////////////+ysrL/JCQk/xoa
Gv8aGhr/Ghoa/yAgIP8rKyv/Hh4e/xoaGv8aGhr/Ghoa/xoaGv81NTX/WVlZ/yUlJf8aGhr/Ghoa/xoa
Gv8hISH/mpqa///////////////////////////////////////////////////////5+fn/FRUV8QAA
ACwAAAA3HR0d8v39/f////////////////////////////Ly8v9PT0//MDAw/2dnZ/+7u7v/+Pj4////
///f39//Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv82Njb/5OTk////////////////////////////////////////////////////
///9/f3/HR0d8gAAADcAAAA5Hx8f8v7+/v///////////////////////////4mJif8hISH/Ghoa/xsb
G/8pKSn/Tk5O/6Kiov/CwsL/Nzc3/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP96enr//////////////////v7+/93d3f+3t7f/+Pj4////
///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////////3d3
d/8iIiL/Ghoa/xoaGv8aGhr/Ghoa/yIiIv8vLy//Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ycnJ/+mpqb/7e3t/729vf+JiYn/Tk5O/y8v
L/8rKyv/q6ur///////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
//////////////X19f9sbGz/ICAg/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8dHR3/KCgo/y4uLv8uLi7/Kioq/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv83Nzf/ODg4/ycn
J/8cHBz/Ghoa/xoaGv8aGhr/T09P//f39//////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
/v/////////////////////////////////x8fH/Y2Nj/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/HBwc/zU1Nf+CgoL/wcHB/97e3v/h4eH/y8vL/5eXl/9DQ0P/ICAg/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/R0dH/+vr6//////////////////+/v7/Hx8f8wAA
ADoAAAA5Hx8f8v7+/v//////////////////////////////////////7e3t/2BgYP8fHx//Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8fHx//XFxc/9ra2v/////////////////////////////////u7u7/fHx8/ycn
J/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yQkJP9lZWX/5eXl////////////////////
///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////////////////////////+vr
6/9JSUn/Ghoa/xoaGv8aGhr/Ghoa/xwcHP9bW1v/7Ozs////////////////////////////////////
////////+/v7/4GBgf8iIiL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/LS0t/4qKiv/39/f/////////
///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////////////+vr6/+jo
6P/Pz8//u7u7/6SkpP83Nzf/Ghoa/xoaGv8aGhr/Ghoa/zMzM//V1dX/////////////////////////
//////////////////////////////T09P9QUFD/Ghoa/xoaGv8aGhr/Ghoa/xsbG/88PDz/tbW1//7+
/v/////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////+/v
7/9ZWVn/Ojo6/y8vL/8sLCz/JiYm/x8fH/8bGxv/Ghoa/xoaGv8aGhr/HBwc/3l5ef//////////////
//////////////////////////////////////////////////+tra3/JCQk/xoaGv8aGhr/Ghoa/yIi
Iv+lpaX////////////////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
/v///////////9HR0f8tLS3/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JSUl/7W1
tf/////////////////////////////////////////////////////////////////m5ub/MTEx/xoa
Gv8aGhr/Ghoa/xsbG/9FRUX/fHx8/6+vr//c3Nz/+/v7///////////////////////+/v7/Hx8f8wAA
ADoAAAA5Hx8f8v7+/v///////////8TExP8qKir/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/LCws/9LS0v//////////////////////////////////////////////////////////////
///4+Pj/Pz8//xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/yMjI/8wMDD/SkpK/4CAgP/R0dH/////////
///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////+bm5v9zc3P/Pz8//yoqKv8dHR3/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/LCws/9PT0///////////////////////////////////////////////
///////////////////5+fn/QUFB/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
Hf+Dg4P////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////////////8/Pz/8bG
xv+RkZH/VlZW/zIyMv8bGxv/Ghoa/xoaGv8aGhr/JiYm/7q6uv//////////////////////////////
///////////////////////////////////q6ur/MzMz/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/x8fH/+Wlpb////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
/////////////////////////Pz8/66urv8lJSX/Ghoa/xoaGv8aGhr/HBwc/4KCgv//////////////
//////////////////////////////////////////////////+1tbX/JiYm/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Gxsb/yEhIf8pKSn/Li4u/zg4OP+9vb3////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
/v//////////////////////////////////////5ubm/2lpaf8iIiL/Ghoa/xoaGv8aGhr/Ghoa/zc3
N//f39////////////////////////////////////////////////////////n5+f9ZWVn/Gxsb/xoa
Gv8aGhr/Ghoa/ykpKf9qamr/jY2N/6mpqf/ExMT/3t7e//b29v/////////////////+/v7/Hx8f8wAA
ADoAAAA5Hx8f8v7+/v/////////////////////////////////Gxsb/SUlJ/x4eHv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/x0dHf9nZ2f/9PT0/////////////////////////////////////////////v7+/5KS
kv8lJSX/Ghoa/xoaGv8aGhr/Ghoa/zw8PP/w8PD/////////////////////////////////////////
///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////Pz8/56env8zMzP/Gxsb/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8iIiL/bGxs/+jo6P//////////////////////////////
///4+Pj/kJCQ/ysrK/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yEhIf9tbW3/8vLy////////////////////
///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v/////////////////+/v7/enp6/ycn
J/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hh4e/0BAQP+YmJj/1dXV//Dw
8P/z8/P/39/f/6urq/9TU1P/JCQk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8gICD/ZGRk/+3t
7f/////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
////////dnZ2/xwcHP8aGhr/Ghoa/xoaGv8dHR3/Jycn/yoqKv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8gICD/LS0t/zY2Nv84ODj/Ly8v/yMjI/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/ICAg/2BgYP/s7Oz////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
/v//////////////////////0NDQ/zExMf8mJib/MjIy/1ZWVv+Ojo7/v7+//6CgoP8pKSn/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIi
Iv8cHBz/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9dXV3/8/Pz///////////////////////+/v7/Hx8f8wAA
ADoAAAA5Hx8f8v7+/v///////////////////////v7+/66urv+6urr/6Ojo/////////////////6io
qP8jIyP/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/KSkp/4uLi/+AgID/PDw8/yQkJP8aGhr/Ghoa/xsbG/9PT0//8/Pz////////////////////
///+/v7/Hx8f8wAAADoAAAA3HR0d8v39/f//////////////////////////////////////////////
/////////Pz8/1lZWf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/LCws/9HR0f//////7Ozs/6qqqv9cXFz/Li4u/zExMf/FxcX/////////
///////////////////9/f3/HR0d8gAAADcAAAAtFRUV8fn5+f//////////////////////////////
////////////////////////y8vL/y0tLf8aGhr/Ghoa/xoaGv8cHBz/NTU1/yoqKv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/x0dHf8cHBz/Ghoa/xoaGv8aGhr/Hx8f/5ycnP/////////////////8/Pz/0NDQ/7m5
uf/////////////////////////////////5+fn/FRUV8QAAACwAAAAaBwcH7/Ly8v//////////////
////////////////////////////////////////f39//xwcHP8aGhr/Ghoa/xwcHP9PT0//2tra/4mJ
if8cHBz/Ghoa/xoaGv8aGhr/MTEx/5SUlP9NTU3/Gxsb/xoaGv8aGhr/Ghoa/2BgYP//////////////
///////////////////////////////////////////////////y8vL/BwcH7wAAABoAAAAJAAAA4tra
2v/////////////////////////////////////////////////p6en/OTk5/xoaGv8aGhr/HBwc/09P
T//g4OD//////7CwsP8jIyP/Ghoa/xoaGv8aGhr/UlJS//z8/P/Pz8//ODg4/xoaGv8aGhr/Ghoa/zQ0
NP/r6+v////////////////////////////////////////////////////////////Z2dn/AAAA4QAA
AAkAAAAAAAAAv66urv/////////////////////////////////////////////////d3d3/QUFB/x0d
Hf8cHBz/Tk5O/9/f3////////////8rKyv8rKyv/Ghoa/xoaGv8cHBz/ioqK////////////ra2t/ysr
K/8aGhr/Ghoa/yYmJv+4uLj/////////////////////////////////////////////////////////
//+srKz/AAAAvwAAAAAAAAAAAAAAiHBwcPv/////////////////////////////////////////////
////////4+Pj/29vb/9SUlL/4ODg/////////////////+fn5/8xMTH/Ghoa/xoaGv8mJib/vb29////
/////////v7+/4mJif8jIyP/Ghoa/yUlJf+Wlpb/////////////////////////////////////////
//////////////////9vb2/7AAAAiAAAAAAAAAAAAAAARh8fH/P7+/v/////////////////////////
//////////////////////////////39/f/19fX///////////////////////v7+/89PT3/Ghoa/xoa
Gv80NDT/6Ojo//////////////////f39/9mZmb/TU1N/6ioqP/19fX/////////////////////////
//////////////////////////////v7+/8dHR3zAAAARQAAAAAAAAAAAAAABgAAAM2mpqb+////////
////////////////////////////////////////////////////////////////////////////////
//9cXFz/JCQk/yAgIP9aWlr//v7+///////////////////////39/f/9/f3////////////////////
/////////////////////////////////////////////6Ojo/4AAADNAAAABgAAAAAAAAAAAAAAAAAA
AFcdHR3y5+fn////////////////////////////////////////////////////////////////////
///////////////////a2tr/sbGx/6Wlpf/Ly8v/////////////////////////////////////////
////////////////////////////////////////////////////////5ubm/xsbG/IAAABXAAAAAAAA
AAAAAAAAAAAAAAAAAAIAAACaNzc39+fn5///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////m5ub/NjY29gAA
AJkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAmh0dHfKmpqb++/v7////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////+/v7/6Sk
pP4cHBzyAAAAmQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFcAAADNHx8f83Bw
cPuurq7/2tra//Ly8v/5+fn//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39//n5+f/y8vL/2dnZ/62t
rf9vb2/7Hh4e8wAAAM0AAABXAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAHAAAARgAAAIgAAAC/AAAA4gcHB+8VFRXxHR0d8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8f
H/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHR0d8hUV
FfEHBwfvAAAA4gAAAL8AAACIAAAARgAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAABoAAAAtAAAANwAAADkAAAA5AAAAOQAA
ADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAA
ADkAAAA5AAAANwAAAC0AAAAaAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/wAAAA/8AAPwAAAAAPwAA8AAAAAAPAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAACAAAAAAAEAAIAA
AAAAAQAAgAAAAAABAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH
AADwAAAAAA8AAPwAAAAAPwAA/8AAAAP/AAAoAAAAQAAAAIAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAJgAAAFoAAACFAAAApwAAAMAAAADSAAAA3wAAAOUAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOUAAADfAAAA0gAAAMAAAACnAAAAhQAAAFoAAAAmAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACMAAAB+AAAAzgAAAOoAAADwEBAQ9TY2NvhSUlL7ZmZm/XNzc/57e3v/fX19/4CA
gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA
gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+fv96enr/c3Nz/mVlZf1RUVH7NTU1+A8P
D/UAAADwAAAA6gAAAM4AAAB+AAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAI0AAADlBwcH8lJSUvufn5//3d3d////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////+/v7/29vb/52dnf9PT0/7BQUF8gAAAOUAAACNAAAAEQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAMwFBQXxcHBw/ufn5///////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////+Xl5f9tbW3+BAQE8QAA
AMwAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAANkfHx/3ysrK////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////8fHx/8cHBz3AAAA2QAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
AMwfHx/34eHh////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////39/f/xwcHPcAAADMAAAAEQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAI0FBQXxy8vL////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///Z2dn/g4OD/5SUlP+np6f/1NTU////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////Hx8f/BAQE8QAA
AI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAADlcXFx/v//////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////fHx8/ysrK/8sLCz/MDAw/0JCQv/w8PD/////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////21tbf4AAADlAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAB/BwcH8ufn5///////////////
////////////////////////////////////////////////////////////////////////7u7u/6Cg
oP+mpqb/////////////////////////////////+fn5/0tLS/8aGhr/Ghoa/xoaGv82Njb/2tra////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////l5eX/BQUF8gAAAH4AAAAAAAAAAAAAAAAAAAABAAAAz1NT
U/z/////////////////////////////////////////////////////////////////////////////
///z8/P/mZmZ/0hISP8sLCz/OTk5/7u7u////////////////////////////87Ozv82Njb/Ghoa/xoa
Gv8aGhr/MjIy/8DAwP/////////////////////////////////o6Oj/2dnZ////////////////////
/////////////////////////////////////////////////////////////09PT/sAAADOAAAAAAAA
AAAAAAAAAAAAJwAAAOqgoKD/////////////////////////////////////////////////////////
////////////////////////qqqq/zQ0NP8bGxv/Ghoa/xwcHP9KSkr/4uLi////////////////////
//+ampr/KSkp/xoaGv8aGhr/Ghoa/y0tLf+srKz////////////////////////////e3t7/U1NT/z4+
Pv+Xl5f/9/f3////////////////////////////////////////////////////////////////////
//+dnZ3/AAAA6gAAACYAAAAAAAAAAAAAAFsAAADw3t7e////////////////////////////////////
/////////////////////////////////////////////83Nzf81NTX/Ghoa/xoaGv8aGhr/JCQk/2dn
Z//4+Pj/////////////////Z2dn/xwcHP8aGhr/Ghoa/xoaGv8mJib/lpaW////////////////////
///e3t7/VFRU/yIiIv8aGhr/Ly8v/2BgYP/k5OT/////////////////////////////////////////
////////////////////////29vb/wAAAPAAAABaAAAAAAAAAAAAAACGERER9f//////////////////
///////////////////////////////////////////////////////////////////29vb/RERE/xoa
Gv8aGhr/Ghoa/xoaGv8vLy//kpKS////////////6+vr/z4+Pv8aGhr/Ghoa/xoaGv8aGhr/ICAg/4OD
g//////////////////e3t7/U1NT/yIiIv8aGhr/Ghoa/xoaGv80NDT/vLy8////////////////////
//////////////////////////////////////////////7+/v8PDw/1AAAAhQAAAAAAAAAAAAAAqDc3
N/j/////////////////////////////////////////////////////////////////////////////
/////////////3BwcP8dHR3/Ghoa/xoaGv8aGhr/Ghoa/zs7O//AwMD//////7i4uP8xMTH/Ghoa/xoa
Gv8aGhr/Ghoa/xsbG/9sbGz////////////e3t7/U1NT/yIiIv8aGhr/Ghoa/xoaGv8bGxv/UFBQ//f3
9///////////////////////////////////////////////////////////////////////NTU1+AAA
AKcAAAAAAAAAAAAAAMFSUlL7////////////////////////////////////////////////////////
//////////////////////////////////+enp7/KSkp/xoaGv8aGhr/Ghoa/xoaGv8dHR3/TU1N/7i4
uP9xcXH/IiIi/xoaGv8aGhr/Ghoa/xoaGv8bGxv/U1NT///////d3d3/U1NT/yIiIv8aGhr/Ghoa/xoa
Gv8aGhr/Kioq/5iYmP//////////////////////////////////////////////////////////////
/////////////1FRUfsAAADAAAAAAAAAAAAAAADTZmZm/f//////////////////////////////////
//////////////z8/P/p6en/////////////////////////////////zc3N/zU1Nf8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/yQkJP8yMjL/Jycn/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zc3N/9oaGj/VFRU/yIi
Iv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z8/P//k5OT/////////////////////////////////////////
//////////////////////////////////9lZWX9AAAA0gAAAAAAAAAAAAAA33Nzc/7/////////////
//////////////////////////////////+MjIz/PDw8/3R0dP/CwsL/+/v7//////////////////b2
9v9ERET/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/HR0d/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIiIv98fHz/////////////////////////
////////////////////////////////////////////////////////c3Nz/gAAAN8AAAAAAAAAAAAA
AOV7e3v////////////////////////////////////////////Hx8f/Ozs7/xoaGv8gICD/NDQ0/1xc
XP+oqKj/8vLy////////////cXFx/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv82Njb/yMjI////
/////////////////////////////////////////////////////////////////////////////3p6
ev8AAADlAAAAAAAAAAAAAADmfHx8///////////////////////////////////////19fX/V1dX/x4e
Hv8aGhr/Ghoa/xoaGv8dHR3/Ly8v/0lJSf+RkZH/xcXF/1ZWVv8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8dHR3/X19f//39/f//////////////////////9vb2/8nJyf+cnJz/1dXV////////////////////
//////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////
////////5+fn/0dHR/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/KCgo/zk5Of8hISH/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Li4u/5ubm////////f39/93d3f+qqqr/eXl5/0ZGRv80NDT/KSkp/2Rk
ZP/9/f3/////////////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////
///////////////////////////////////Kysr/RUVF/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8bGxv/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0dHf9JSUn/iYmJ/1dXV/84ODj/LCws/x8f
H/8aGhr/Ghoa/xoaGv81NTX/vr6+/////////////////////////////////3x8fP8AAADmAAAAAAAA
AAAAAADmfHx8/////////////////////////////////////////////////8bGxv9DQ0P/HBwc/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8nJyf/NjY2/0RE
RP9XV1f/Wlpa/0xMTP85OTn/LS0t/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/yMj
I/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/2xsbP//////////////////////////////
//98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////////////////////
////////urq6/0BAQP8cHBz/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yUl
Jf9DQ0P/jIyM/9HR0f/4+Pj////////////8/Pz/5OTk/6enp/9WVlb/Ly8v/xsbG/8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zU1Nf+EhIT/////////
////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////
//////////////////////////////////+zs7P/Pj4+/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/y4uLv9tbW3/4eHh////////////////////////////////////////////9/f3/5eX
l/89PT3/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/0BA
QP+lpaX//v7+/////////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////
/////////////////////////////////////////////////////////////66urv88PDz/Gxsb/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/y4uLv97e3v/+fn5////////////////////////////////////
////////////////////////s7Oz/z4+Pv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/JiYm/1JSUv/MzMz///////////////////////////////////////////98fHz/AAAA5gAA
AAAAAAAAAAAA5nx8fP//////////////////////////////////////////////////////////////
////////YWFh/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yMjI/9qamr/+fn5////////////////////
//////////////////////////////////////////////////+jo6P/MzMz/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/MDAw/25ubv/p6en/////////////////////////////////////////
////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz//////////////////////////////////v7+//Dw
8P/d3d3/w8PD/6+vr/+ZmZn/gYGB/zs7O/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8/Pz//2tra////
/////////////////////////////////////////////////////////////////////////Pz8/2lp
af8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/Ozs7/5OTk//6+vr/////////////////////////
/////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////////////////////
///z8/P/bW1t/01NTf89PT3/NjY2/zIyMv8tLS3/JiYm/yAgIP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8jIyP/g4OD////////////////////////////////////////////////////////////////////
///////////////////BwcH/NTU1/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JiYm/4qKiv//////////////
//////////////////////////////////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8
fP//////////////////////ycnJ/zQ0NP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/MzMz/8TExP//////////////////////////////////////////////
////////////////////////////////////////+vr6/01NTf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
Hf9jY2P/uLi4/+jo6P//////////////////////////////////////////////////////fHx8/wAA
AOYAAAAAAAAAAAAAAOZ8fHz//////////////////////7y8vP8xMTH/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z09Pf/s7Oz/////////////////////////
//////////////////////////////////////////////////////////////////93d3f/Hh4e/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/IyMj/zAwMP87Ozv/XV1d/4+Pj/+5ubn/6urq////////////////////
/////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8//////////////////////+urq7/MDAw/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/9HR0f//f39////
////////////////////////////////////////////////////////////////////////////////
////////ioqK/yMjI/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8kJCT/MTEx/zs7
O/9gYGD/ra2t//////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////
////////09PT/1JSUv83Nzf/Kysr/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8bGxv/SEhI//7+/v//////////////////////////////////////////////////////////////
/////////////////////////////4uLi/8jIyP/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/HR0d/1ZWVv//////////////////////fHx8/wAAAOYAAAAAAAAAAAAA
AOZ8fHz////////////////////////////8/Pz/2NjY/6Kiov9tbW3/Pz8//zIyMv8jIyP/Gxsb/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z8/P//w8PD/////////////////////////////////////////
//////////////////////////////////////////////////98fHz/Hx8f/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9qamr//////////////////////3x8
fP8AAADmAAAAAAAAAAAAAADmfHx8/////////////////////////////////////////////////+/v
7/+8vLz/iIiI/1BQUP8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/zMzM////////////////////
///////////////////////////////////////////////////////////////////9/f3/VFRU/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8iIiL/fX19////
//////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////
//////////////////////////////////+mpqb/Kysr/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JiYm/46O
jv//////////////////////////////////////////////////////////////////////////////
////////zc3N/zc3N/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x4eHv8kJCT/LS0t/zMz
M/83Nzf/Q0ND/7Kysv//////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////
///////////////////////////////////////////////////g4OD/ZGRk/ygoKP8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xsbG/9FRUX/5+fn////////////////////////////////////////////////////
/////////////////////////////3Z2dv8iIiL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8qKir/QkJC/1hY
WP93d3f/kZGR/6urq//FxcX/4eHh//f39////////////////////////////3x8fP8AAADmAAAAAAAA
AAAAAADmfHx8//////////////////////////////////////////////////////+8vLz/SUlJ/yMj
I/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/3p6ev/9/f3/////////////////////////
/////////////////////////////////////////////7i4uP83Nzf/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Pz8//+Tk5P//////////////////////////////////////////////////////////////
//98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP////////////////////////////////////////////r6
+v+RkZH/Ojo6/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8zMzP/kpKS//7+
/v///////////////////////////////////////////////////////////8vLy/9HR0f/HBwc/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/0VFRf/Jycn/////////////////////////////////////////
////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////
/////////////+bm5v9qamr/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/zQ0NP+EhIT/8vLy/////////////////////////////////////////////v7+/7Oz
s/9GRkb/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/RUVF/8PDw///////////////
/////////////////////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////
/////////////////////////////9HR0f9QUFD/JSUl/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Kysr/1JSUv+mpqb/6urq////////////////////
///4+Pj/wsLC/25ubv81NTX/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
Hf9CQkL/uLi4//////////////////////////////////////////////////////98fHz/AAAA5gAA
AAAAAAAAAAAA5nx8fP////////////////////////////////+ioqL/LCws/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/Li4u/z4+
Pv9eXl7/eXl5/319ff9qamr/R0dH/zMzM/8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/z8/P/+zs7P/////////////////////////////////////////
////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////////////7Ozs/0ZG
Rv8bGxv/Ghoa/xoaGv8aGhr/HR0d/ykpKf81NTX/RkZG/z4+Pv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x4eHv8eHh7/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/Pj4+/6+vr///////////////
/////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////////////////////
//////////////////+UlJT/LCws/ygoKP80NDT/Q0ND/3BwcP+fn5//z8/P//j4+P+hoaH/NDQ0/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8oKCj/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsb
G/88PDz/u7u7//////////////////////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8
fP//////////////////////////////////////7e3t/4CAgP+bm5v/ysrK//X19f//////////////
////////mJiY/yoqKv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/82Njb/f39//2VlZf84ODj/JiYm/xsb
G/8aGhr/Ghoa/xoaGv8aGhr/NTU1/7W1tf//////////////////////////////////////fHx8/wAA
AOYAAAAAAAAAAAAAAOV7e3v/////////////////////////////////////////////////////////
////////////////////////+Pj4/1FRUf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Wlpa//7+
/v/+/v7/1dXV/42Njf9JSUn/MTEx/x4eHv8aGhr/JiYm/3d3d//+/v7/////////////////////////
/////////////3p6ev8AAADlAAAAAAAAAAAAAADfc3Nz/v//////////////////////////////////
/////////////////////////////////////////////7u7u/8zMzP/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/zs7O//k5OT/////////////////9PT0/7Ozs/9ra2v/OTk5/0tLS//n5+f/////////
//////////////////////////////////9zc3P+AAAA3wAAAAAAAAAAAAAA02ZmZv3/////////////
//////////////////////////////////////////////////////////////////9xcXH/Hx8f/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/NTU1/z09Pf8sLCz/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x8f
H/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8vLy//r6+v/////////////////////////////////9vb
2//e3t7/////////////////////////////////////////////////ZmZm/QAAANIAAAAAAAAAAAAA
AMFSUlL7////////////////////////////////////////////////////////////////////////
///e3t7/PDw8/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NDQ0/5KSkv/m5ub/ZGRk/xwcHP8aGhr/Ghoa/xoa
Gv8aGhr/Gxsb/0lJSf98fHz/SUlJ/xwcHP8aGhr/Ghoa/xoaGv8aGhr/ICAg/319ff//////////////
/////////////////////////////////////////////////////////////////////////////1JS
UvsAAADAAAAAAAAAAAAAAACoNzc3+P//////////////////////////////////////////////////
////////////////////////lJSU/ykpKf8aGhr/Ghoa/xoaGv8aGhr/NDQ0/5KSkv/+/v7//////4iI
iP8iIiL/Ghoa/xoaGv8aGhr/Ghoa/yIiIv+JiYn//////7e3t/87Ozv/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv9KSkr/+Pj4////////////////////////////////////////////////////////////////////
//////////////////81NTX4AAAApwAAAAAAAAAAAAAAhhEREfX/////////////////////////////
////////////////////////////////////////+vr6/01NTf8bGxv/Ghoa/xoaGv8aGhr/NDQ0/5KS
kv/+/v7///////////+jo6P/Kysr/xoaGv8aGhr/Ghoa/xoaGv8wMDD/t7e3////////////k5OT/zEx
Mf8aGhr/Ghoa/xoaGv8aGhr/NTU1/8vLy///////////////////////////////////////////////
///////////////////////////////////+/v7/Dw8P9QAAAIYAAAAAAAAAAAAAAFsAAADw3t7e////
//////////////////////////////////////////////////////////////z8/P9ubm7/MzMz/xsb
G/8aGhr/NTU1/5OTk//+/v7/////////////////vLy8/zExMf8aGhr/Ghoa/xoaGv8aGhr/PDw8/+jo
6P////////////v7+/9ycnL/KCgo/xoaGv8aGhr/Ghoa/ycnJ/+Xl5f/////////////////////////
////////////////////////////////////////////////////////3Nzc/wAAAPAAAABbAAAAAAAA
AAAAAAAnAAAA6qCgoP//////////////////////////////////////////////////////////////
/////////Pz8/6Wlpf9FRUX/Nzc3/5OTk//+/v7//////////////////////9vb2/83Nzf/Ghoa/xoa
Gv8aGhr/Gxsb/19fX///////////////////////7u7u/1lZWf8gICD/Ghoa/xoaGv8fHx//bW1t////
/////////////////////////////////////////////////////////////////////////////56e
nv8AAADqAAAAJgAAAAAAAAAAAAAAAQAAAM9TU1P8////////////////////////////////////////
////////////////////////////////////////39/f/7i4uP/+/v7/////////////////////////
///z8/P/Pz8//xoaGv8aGhr/Ghoa/yQkJP+QkJD////////////////////////////W1tb/RkZG/yAg
IP80NDT/YGBg/8XFxf//////////////////////////////////////////////////////////////
//////////////////9QUFD7AAAAzgAAAAAAAAAAAAAAAAAAAAAAAAB/BwcH8ujo6P//////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////v7+/1ZWVv8aGhr/Ghoa/xoaGv8yMjL/vb29////////////////////
/////////////7q6uv9ycnL/u7u7//z8/P//////////////////////////////////////////////
///////////////////////////////////l5eX/BgYG8gAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAIwAA
AOVxcXH+////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////9zc3P/Kioq/yUlJf8hISH/Pz8//+3t
7f//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////bm5u/gAAAOUAAAAjAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACOBQUF8cvLy///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////3Nzc/52d
nf+RkZH/hYWF/6Kiov//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////ycnJ/wUF
BfEAAACNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAM0fHx/34uLi////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////4ODg/x0dHfcAAADMAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAA2h8f
H/fLy8v/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ycnJ/x4eHvcAAADaAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAC0AAADNBQUF8XFxcf7o6Oj/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////m5ub/b29v/gUFBfEAAADNAAAALAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAI4AAADlBwcH8lNTU/ygoKD/3t7e////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////+/v7/3d3d/5+fn/9RUVH8BgYG8gAAAOUAAACOAAAAEQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAA
AH8AAADPAAAA6gAAAPARERH1Nzc3+FNTU/tmZmb9c3Nz/nt7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8
fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8
fP98fHz/fHx8/3x8fP98fHz/fHx8/3t7e/9zc3P+ZmZm/VJSUvs2Njb4EBAQ9QAAAPAAAADqAAAAzwAA
AH8AAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACcAAABcAAAAhgAAAKgAAADBAAAA0wAAAN8AAADlAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADlAAAA3wAAANMAAADBAAAAqAAA
AIYAAABcAAAAJwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///////////+AAAAAAB///AAAAAAAA//wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AA
AAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAA
AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
AAAAAAABgAAAAAAAAAGAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAA
AA/4AAAAAAAAH/wAAAAAAAA//wAAAAAAAP//wAAAAAAD////////////KAAAAGAAAADAAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAACAAAADAAAABgAAAApAAAAPwAAAFIAAABgAAAAagAAAHEAAABzAAAAcwAAAHMAAABzAAAAcwAA
AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
AHMAAABzAAAAcwAAAHMAAABzAAAAcQAAAGoAAABgAAAAUgAAAD8AAAApAAAAGAAAAAwAAAACAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAQAAAARgAAAHwAAACpAAAAxQAAANwAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
AOYAAADmAAAA3AAAAMUAAACpAAAAfAAAAEYAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAYgAAALMAAADkAAAA5gAAAOkAAADsAAAA8AAA
APQFBQX3FRUV+SMjI/stLS39NDQ0/jo6Ov88PDz/Pz8//0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/z8/
P/88PDz/Ojo6/zU1Nf4tLS39IyMj+xQUFPkFBQX3AAAA9AAAAPAAAADsAAAA6QAAAOYAAADkAAAAswAA
AGIAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIAAAAIkAAADTAAAA5gAA
AOsDAwPzFhYW+kBAQP10dHT/n5+f/8fHx//g4OD/6enp//Dw8P/29vb/+fn5//z8/P/9/f3//v7+////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////9/f3//Pz8//n5+f/29vb/8PDw/+np6f/g4OD/xsbG/56e
nv9ycnL/Pj4+/RUVFfoCAgLzAAAA6wAAAOYAAADTAAAAiQAAACAAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAgAAABmAAAA1AAAAOcAAADwDg4O+mVlZf+1tbX/6urq////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////+jo6P+ysrL/YWFh/wwMDPoAAADwAAAA5wAA
ANQAAABmAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAKsAAADmAAAA7h4eHvyMjIz/8PDw////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////+7u7v+Hh4f/Gxsb/AAAAO4AAADmAAAAqwAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAvAAAAOgHBwf2ZWVl/+np
6f//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////5ubm/2BgYP8GBgb2AAAA6AAA
ALsAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABUAAAC8AAAA6AwMDPmhoaH//f39////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////z8/P+cnJz/CwsL+QAAAOgAAAC7AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAKwAAADoDAwM+by8vP//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////t7e3/wsLC/kAAADoAAAAqwAA
AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAZwAAAOYHBwf2oaGh////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////+/v7/+3t7f/w8PD/8/Pz//f39//7+/v/////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////5ycnP8GBgb2AAAA5gAAAGYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAhAAAA1AAAAO5mZmb//f39////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////+/v7/r6+v/1RU
VP9gYGD/b29v/35+fv+QkJD/1NTU////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////z8/P9gYGD/AAAA7gAAANQAAAAgAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJAAAA5x8fH/zp6en/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////v7+//VlZW/zQ0NP8xMTH/NTU1/zk5Of8+Pj7/SkpK/+/v7///////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///m5ub/Gxsb/AAAAOcAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAADTAAAA8I6O
jv//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////39/f/y8vL//Pz8////
///////////////////////////////////////////////////MzMz/RkZG/xwcHP8aGhr/Ghoa/xoa
Gv8fHx//RERE/9XV1f//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////h4eH/wAAAPAAAADTAAAAGQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAGMAAADnDw8P+vHx8f//////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///+/v7/2tra/4GBgf9cXFz/k5OT////////////////////////////////////////////////////
//+cnJz/PDw8/xoaGv8aGhr/Ghoa/xoaGv8dHR3/QEBA/8PDw///////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////7u7u/wwM
DPoAAADmAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADrZmZm////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////f39/9HR0f9+fn7/SEhI/zs7O/8qKir/R0dH/7e3t///////////////
//////////////////////////////z8/P9qamr/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Pj4+/6io
qP//////////////////////////////////////////////////////+/v7//b29v//////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////2FhYf8AAADrAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
AOQDAwPztra2////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////qKio/0tLS/86Ojr/JCQk/xsb
G/8aGhr/Li4u/1dXV//b29v//////////////////////////////////////+Li4v9QUFD/IyMj/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/PDw8/4+Pj///////////////////////////////////////////////
///r6+v/dXV1/2BgYP+4uLj/+/v7////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////7Kysv8CAgLzAAAA5AAA
ABAAAAAAAAAAAAAAAAAAAAAAAAAARwAAAOYWFhb66+vr////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///+/v7/fn5+/zc3N/8bGxv/Ghoa/xoaGv8aGhr/Gxsb/zs7O/9tbW3/9fX1////////////////////
/////////////7e3t/9CQkL/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NDQ0/4CAgP/+/v7/////////
/////////////////////////////+7u7v9vb2//QEBA/zExMf9LS0v/g4OD/+3t7f//////////////
////////////////////////////////////////////////////////////////////////////////
/////////////+jo6P8VFRX6AAAA5gAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAOlCQkL9////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////qKio/z8/P/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/x4e
Hv9DQ0P/jo6O/////////////////////////////////4ODg/82Njb/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/LS0t/2xsbP/6+vr/////////////////////////////////7u7u/2lpaf9AQED/HR0d/xoa
Gv8iIiL/Pz8//1dXV//AwMD//v7+////////////////////////////////////////////////////
//////////////////////////////////////////////////8+Pj79AAAA6QAAAHwAAAAAAAAAAAAA
AAAAAAACAAAAqgAAAOx1dXX/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////19fX/0VF
Rf8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8mJib/SEhI/76+vv//////////////////////+/v7/1lZ
Wf8pKSn/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/15eXv/09PT/////////////////////////
///r6+v/bW1t/z8/P/8eHh7/Ghoa/xoaGv8aGhr/HBwc/zIyMv9QUFD/6Ojo////////////////////
////////////////////////////////////////////////////////////////////////////////
//9ycnL/AAAA7AAAAKkAAAACAAAAAAAAAAAAAAAMAAAAxgAAAPChoaH/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////+Pj4/1NTU/8mJib/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/MDAw/1hY
WP/i4uL/////////////////19fX/0ZGRv8fHx//Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1RU
VP/r6+v//////////////////////+7u7v9ubm7/QEBA/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ysr
K/9YWFj/8PDw////////////////////////////////////////////////////////////////////
//////////////////////////////////+enp7/AAAA8AAAAMUAAAAMAAAAAAAAAAAAAAAYAAAA3QAA
APTIyMj/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////3l5ef8yMjL/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zw8PP9tbW3/9fX1////////////oaGh/z4+Pv8bGxv/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/0tLS//c3Nz/////////////////7u7u/2hoaP8/Pz//HR0d/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z4+Pv+Xl5f/////////////////////////////////////////
///////////////////////////////////////////////////////////////////Gxsb/AAAA9AAA
ANwAAAAYAAAAAAAAAAAAAAAqAAAA5gYGBvfh4eH/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////6ampv8+Pj7/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9ERET/lZWV//7+
/v/6+vr/c3Nz/zIyMv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/0ZGRv/Jycn/////////
///q6ur/bGxs/z8/P/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1BQUP/e3t7/////////
////////////////////////////////////////////////////////////////////////////////
///////////////////g4OD/BQUF9wAAAOYAAAApAAAAAAAAAAAAAABAAAAA5hUVFfnp6en/////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////9LS0v9ISEj/Hx8f/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8nJyf/S0tL/5iYmP+FhYX/UVFR/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Gxsb/0FBQf+0tLT//////+3t7f9ubm7/QEBA/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Nzc3/3d3d//7+/v/////////////////////////////////////////////////////////
///////////////////////////////////////////////////p6en/FBQU+QAAAOYAAAA/AAAAAAAA
AAAAAABSAAAA5iQkJPvx8fH/////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////Ly
8v9cXFz/Jycn/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/MDAw/0BAQP83Nzf/Kysr/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7O/9TU1P/h4eH/2lpaf8/Pz//HR0d/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8fHx//RUVF/8jIyP//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///w8PD/IyMj+wAAAOYAAABSAAAAAAAAAAAAAABgAAAA5i4uLv329vb/////////////////////////
//////////////////////////////////////////////Dw8P+Hh4f/hISE/9DQ0P/4+Pj/////////
//////////////////////////////////98fHz/MzMz/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Gxsb/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
Hf8pKSn/OTk5/z09Pf8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8vLy//YWFh//r6
+v//////////////////////////////////////////////////////////////////////////////
///////////////////////////////////29vb/LS0t/QAAAOYAAABgAAAAAAAAAAAAAABqAAAA5jU1
Nf75+fn//////////////////////////////////////////////////////////////////////4+P
j/9CQkL/Ojo6/0xMTP9vb2//t7e3//b29v////////////////////////////////+pqan/PT09/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xwcHP9BQUH/p6en////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////5+fn/NTU1/gAA
AOYAAABqAAAAAAAAAAAAAABxAAAA5jo6Ov/8/Pz/////////////////////////////////////////
////////////////////////ycnJ/0dHR/8lJSX/Gxsb/x8fH/8zMzP/QkJC/1lZWf+fn5//4uLi////
///////////////////V1dX/SEhI/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ygoKP9UVFT/6urq////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////8/Pz/Ojo6/wAAAOYAAABxAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
///////////////////////////////////////////////////s7Oz/YWFh/zQ0NP8bGxv/Ghoa/xoa
Gv8aGhr/HR0d/y0tLf9AQED/UVFR/4eHh//R0dH/+fn5///////k5OT/U1NT/yYmJv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7
O/+MjIz//v7+//////////////////////////////////////////////////v7+//6+vr/////////
///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
AAAAAABzAAAA5js7O//9/f3/////////////////////////////////////////////////////////
//+UlJT/QkJC/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/JiYm/zs7O/9MTEz/cXFx/7e3
t/9vb2//Q0ND/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/0xMTP/U1NT///////////////////////////////////////r6
+v/X19f/n5+f/3R0dP9ycnL/4eHh////////////////////////////////////////////////////
///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
//////////////////////////////7+/v9wcHD/Ojo6/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xsbG/8gICD/NDQ0/0RERP89PT3/HR0d/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NTU1/3Nzc//7+/v/////////
////////+vr6/+Hh4f+1tbX/hISE/1ZWVv9DQ0P/Pj4+/zAwMP89PT3/hISE////////////////////
///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
PP/9/f3////////////////////////////////////////////////////////////Y2Nj/WVlZ/zY2
Nv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x4eHv8cHBz/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/MTEx/1hYWP/V1dX/7u7u/8fHx/+UlJT/Z2dn/01NTf9CQkL/NjY2/ykpKf8fHx//Gxsb/xoa
Gv8lJSX/TExM/9/f3//////////////////////////////////////////////////9/f3/PDw8/wAA
AOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////////////////////
////////////////////////19fX/1JSUv8zMzP/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8bGxv/Gxsb/xsbG/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zk5Of9YWFj/WVlZ/0ZGRv87Ozv/Li4u/yIi
Iv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Pj4+/4mJif/9/f3/////////////////////////
///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
/////////////////////////////////////////////////////////////9TU1P9XV1f/MjIy/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8jIyP/MDAw/zo6Ov8/Pz//QkJC/0NDQ/9BQUH/PT09/zY2
Nv8qKir/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwc
HP8vLy//JCQk/xwcHP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JCQk/1BQ
UP/h4eH////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////////////////////
///////////////////Kysr/U1NT/zExMf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/KSkp/0BAQP9RUVH/cHBw/5eX
l/+3t7f/w8PD/8bGxv+/v7//qqqq/4WFhf9fX1//SEhI/zY2Nv8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0VFRf/AwMD/////////////////////////////////////////
///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////
///////////////////////////////////////////////////+/v7/v7+//0tLS/8vLy//Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIi
Iv8/Pz//UFBQ/5iYmP/f39///Pz8///////////////////////////////////////09PT/w8PD/25u
bv9HR0f/MjIy/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8nJyf/RUVF/3R0dP/w8PD/////////
///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
PP/9/f3/////////////////////////////////////////////////////////////////////////
/////////////7q6uv9OTk7/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8bGxv/Kysr/0pKSv+Dg4P/6+vr////////////////////////////////////
//////////////////////////////39/f+/v7//XFxc/z4+Pv8fHx//Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zEx
Mf9NTU3/mpqa//39/f/////////////////////////////////////////////////9/f3/PDw8/wAA
AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////
//////////////////////////////////////////////7+/v+0tLT/Tk5O/ywsLP8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8vLy//TU1N/7CwsP/6+vr/////////
////////////////////////////////////////////////////////////////////////6enp/29v
b/9CQkL/ICAg/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8fHx//Ozs7/1hYWP+/v7///f39////////////////////////////////////
///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////
////////////////////////////////////////////////////////////////////////////////
///9/f3/sbGx/0lJSf8rKyv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yoq
Kv9MTEz/s7Oz////////////////////////////////////////////////////////////////////
/////////////////////////////+7u7v9wcHD/QUFB/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yQkJP9DQ0P/ZmZm/+Dg4P//////////////
///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////////////////////
/////////////////////////////////////////////3l5ef84ODj/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0hISP+srKz/////////////////////////////////////////
///////////////////////////////////////////////////////////////////v7+//ZWVl/zg4
OP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/LCws/0tL
S/+JiYn/9/f3////////////////////////////////////////////////////////////////////
///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
/////////////////////////////////////////////////////////v7+//r6+v/09PT/5eXl/1FR
Uf8nJyf/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/PT09/319ff/5+fn/////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////1dXV/0xMTP8nJyf/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/x0dHf83Nzf/UlJS/7Kysv/7+/v/////////////////////////////////////////
///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7
O//9/f3//////////////////////////////////////////////////Pz8/+zs7P/b29v/x8fH/6qq
qv+VlZX/g4OD/29vb/9iYmL/VFRU/0ZGRv8dHR3/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8mJib/TExM/+Dg4P//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////42Njf8+Pj7/Gxsb/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0FBQf9bW1v/09PT////////////////////
///////////////////////////////////////////////////////////////////9/f3/PDw8/wAA
AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////+fn5/4yM
jP9lZWX/VVVV/0pKSv9CQkL/QEBA/z4+Pv87Ozv/NTU1/y4uLv8nJyf/IiIi/x0dHf8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv88PDz/jIyM////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////+Li4v9SUlL/JiYm/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ly8v/19f
X//t7e3/////////////////////////////////////////////////////////////////////////
///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
////////////////////////xMTE/0RERP8uLi7/KCgo/yIiIv8fHx//HR0d/xsbG/8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yAgIP9KSkr/09PT////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////7+/v+BgYH/NjY2/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/JSUl/1lZWf/u7u7/////////////////////////////////////////
///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
AAAAAABzAAAA5js7O//9/f3/////////////////////////////////q6ur/z8/P/8bGxv/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/ysrK/9gYGD/9/f3////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+6urr/QkJC/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/HBwc/01NTf9zc3P/n5+f/9PT
0//29vb/////////////////////////////////////////////////////////////////////////
///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
////////nZ2d/z09Pf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zU1Nf+AgID/////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////f39//TExM/x4eHv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/yQkJP8xMTH/Pj4+/0JCQv9RUVH/dXV1/6Wlpf/Pz8//8PDw//7+/v//////////////
///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
PP/9/f3/////////////////////////////////kJCQ/zs7O/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7
O/+dnZ3/////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////w8PD/VlZW/yQk
JP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x8fH/8nJyf/MjIy/z8/
P/9JSUn/VlZW/3h4eP+oqKj/09PT//b29v/////////////////////////////////9/f3/PDw8/wAA
AOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////////////goKC/zk5
Of8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z4+Pv+srKz/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////09PT/XFxc/ygoKP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8eHh7/JiYm/zQ0NP89PT3/SUlJ/25ubv/h4eH/////////
///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
////////////////////////oaGh/0RERP85OTn/Kysr/yAgIP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z8/P/+tra3/////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////09PT/XFxc/ygoKP8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8bGxv/Hh4e/0tLS/+ysrL////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////+vr6/8LCwv+NjY3/ZGRk/0xM
TP9AQED/MjIy/yQkJP8dHR3/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Gxsb/zw8PP+ioqL/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///x8fH/WFhY/yYmJv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/09PT//AwMD/////////////////////////
///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////
////////////////////////+Pj4/9jY2P+np6f/cnJy/01NTf9CQkL/Ojo6/ysrK/8fHx//Gxsb/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zY2Nv+Hh4f/////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////k5OT/T09P/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1VV
Vf/Ozs7////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
PP/9/f3///////////////////////////////////////////////////////////////////////Hx
8f/ExMT/j4+P/2NjY/9LS0v/QkJC/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/y4u
Lv9nZ2f/+/v7////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////FxcX/RERE/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/JiYm/1paWv/d3d3////////////////////////////9/f3/PDw8/wAA
AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////
//////////////////////////////////////////////X19f/V1dX/YmJi/yoqKv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIiIv9NTU3/3t7e////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////+Ojo7/OTk5/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
Gv8aGhr/Ghoa/xoaGv8aGhr
gitextract_jqho2jds/ ├── .gitattributes ├── .gitignore ├── Feep/ │ ├── Application.manifest │ ├── Feep.csproj │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── Shadow.Designer.cs │ ├── Shadow.cs │ ├── Shadow.resx │ ├── Viewer.Designer.cs │ ├── Viewer.cs │ └── Viewer.resx ├── Feep.Configure/ │ ├── Application.manifest │ ├── Configure.Designer.cs │ ├── Configure.cs │ ├── Configure.resx │ ├── Feep.Configure.csproj │ ├── Program.cs │ └── Properties/ │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Feep.sln ├── LICENSE └── README.md
SYMBOL INDEX (69 symbols across 12 files)
FILE: Feep.Configure/Configure.Designer.cs
class Configure (line 3) | partial class Configure
method Dispose (line 7) | protected override void Dispose(bool disposing)
method InitializeComponent (line 16) | private void InitializeComponent()
FILE: Feep.Configure/Configure.cs
class Configure (line 10) | public partial class Configure : Form
method GetPrivateProfileString (line 12) | [DllImport("kernel32")]
method WritePrivateProfileString (line 15) | [DllImport("kernel32")]
type HChangeNotifyFlags (line 18) | [Flags]
type HChangeNotifyEventID (line 31) | [Flags]
method SHChangeNotify (line 57) | [DllImport("shell32.dll")]
method RegisterFileType (line 60) | public static void RegisterFileType(string ExtendName, string Descript...
method Configure (line 115) | public Configure()
method txtColor_TextChanged (line 156) | private void txtColor_TextChanged(object sender, EventArgs e)
method txtColor_MouseClick (line 170) | private void txtColor_MouseClick(object sender, MouseEventArgs e)
method btnSetting_Click (line 175) | private void btnSetting_Click(object sender, EventArgs e)
method cmbFormStartState_SelectedIndexChanged (line 215) | private void cmbFormStartState_SelectedIndexChanged(object sender, Eve...
FILE: Feep.Configure/Program.cs
class Program (line 6) | static class Program
method Main (line 8) | [STAThread]
FILE: Feep.Configure/Properties/Resources.Designer.cs
class Resources (line 5) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 13) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: Feep.Configure/Properties/Settings.Designer.cs
class Settings (line 4) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: Feep/Program.cs
class Program (line 7) | static class Program
method Main (line 10) | [STAThread]
method GetPrivateProfileString (line 165) | [DllImport("kernel32")]
FILE: Feep/Properties/Resources.Designer.cs
class Resources (line 5) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 13) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: Feep/Properties/Settings.Designer.cs
class Settings (line 4) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: Feep/Shadow.Designer.cs
class Shadow (line 3) | partial class Shadow
method Dispose (line 7) | protected override void Dispose(bool disposing)
method InitializeComponent (line 16) | private void InitializeComponent()
FILE: Feep/Shadow.cs
class Shadow (line 8) | public partial class Shadow : Form
method GetWindowLong (line 11) | [DllImport("user32", EntryPoint = "GetWindowLong")]
method SetWindowLong (line 13) | [DllImport("user32", EntryPoint = "SetWindowLong")]
method Shadow (line 21) | public Shadow()
method FillShadow (line 28) | internal void FillShadow(Rectangle rect)
method ClearShadow (line 36) | internal void ClearShadow()
FILE: Feep/Viewer.Designer.cs
class Viewer (line 3) | partial class Viewer
method Dispose (line 7) | protected override void Dispose(bool disposing)
method InitializeComponent (line 16) | private void InitializeComponent()
FILE: Feep/Viewer.cs
class Viewer (line 11) | sealed internal partial class Viewer : Form
type Direction (line 14) | internal enum Direction
type ScreenState (line 26) | internal enum ScreenState
class StringLogicalComparer (line 36) | sealed internal class StringLogicalComparer : IComparer<string>
method StrCmpLogicalW (line 38) | [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling =...
method Compare (line 41) | public int Compare(string x, string y)
class FilePath (line 48) | sealed internal class FilePath
method GetPaths (line 78) | internal void GetPaths(object path)
method WndProc (line 106) | protected override void WndProc(ref Message m)
method WritePrivateProfileString (line 195) | [DllImport("kernel32")]
method AnimateWindow (line 198) | [DllImportAttribute("user32.dll")]
method Viewer (line 201) | internal Viewer(string PicturePath)
method RotateImage (line 223) | internal void RotateImage(Bitmap bitmap)
method ShowPicture (line 261) | internal void ShowPicture(int index, bool orientation)
method PreviousFilePath (line 333) | private int PreviousFilePath(int index)
method NextFilePath (line 338) | private int NextFilePath(int index)
method PreviousPicture (line 343) | private void PreviousPicture()
method NextPicture (line 353) | private void NextPicture()
method ChangeSize (line 363) | private void ChangeSize()
method ChangeScreenState (line 379) | private void ChangeScreenState(bool isKey)
method BuildCache (line 481) | private void BuildCache(bool orientation)
method DeleteFile (line 574) | private void DeleteFile(Image image, string filePath, bool sendToRecyc...
method Exit (line 607) | private void Exit()
method Viewer_Load (line 639) | private void Viewer_Load(object sender, EventArgs e)
method Viewer_SizeChanged (line 653) | private void Viewer_SizeChanged(object sender, EventArgs e)
method Viewer_MouseDown (line 694) | private void Viewer_MouseDown(object sender, MouseEventArgs e)
method Viewer_MouseUp (line 833) | private void Viewer_MouseUp(object sender, MouseEventArgs e)
method Viewer_MouseMove (line 903) | private void Viewer_MouseMove(object sender, MouseEventArgs e)
method Viewer_MouseWheel (line 1145) | private void Viewer_MouseWheel(object sender, MouseEventArgs e)
method Viewer_KeyUp (line 1198) | private void Viewer_KeyUp(object sender, KeyEventArgs e)
method TimerSlideshow_Tick (line 1405) | private void TimerSlideshow_Tick(object sender, EventArgs e)
Condensed preview — 30 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (416K chars).
[
{
"path": ".gitattributes",
"chars": 2518,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": ".gitignore",
"chars": 5745,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "Feep/Application.manifest",
"chars": 661,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n <ass"
},
{
"path": "Feep/Feep.csproj",
"chars": 3863,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "Feep/Program.cs",
"chars": 8376,
"preview": "using System;\nusing System.Windows.Forms;\nusing System.Runtime.InteropServices;\n\nnamespace Feep\n{\n static class Prog"
},
{
"path": "Feep/Properties/AssemblyInfo.cs",
"chars": 534,
"preview": "using System.Reflection;\nusing System.Runtime.InteropServices;\n\n[assembly: AssemblyTitle(\"Feep\")]\n[assembly: AssemblyDe"
},
{
"path": "Feep/Properties/Resources.Designer.cs",
"chars": 1708,
"preview": "namespace Feep.Properties\n{\n using System;\n\n [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Reso"
},
{
"path": "Feep/Properties/Resources.resx",
"chars": 2600,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
},
{
"path": "Feep/Properties/Settings.Designer.cs",
"chars": 661,
"preview": "namespace Feep.Properties\n{\n\n [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n [global::Sy"
},
{
"path": "Feep/Properties/Settings.settings",
"chars": 240,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
},
{
"path": "Feep/Shadow.Designer.cs",
"chars": 1251,
"preview": "namespace Feep\n{\n partial class Shadow\n {\n private System.ComponentModel.IContainer components = null;\n\n "
},
{
"path": "Feep/Shadow.cs",
"chars": 1472,
"preview": "using System;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\n\nnamespace Feep\n{"
},
{
"path": "Feep/Shadow.resx",
"chars": 2794,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
},
{
"path": "Feep/Viewer.Designer.cs",
"chars": 2634,
"preview": "namespace Feep\n{\n partial class Viewer\n {\n private System.ComponentModel.IContainer components = null;\n\n "
},
{
"path": "Feep/Viewer.cs",
"chars": 50642,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing System.Runtime."
},
{
"path": "Feep/Viewer.resx",
"chars": 2794,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
},
{
"path": "Feep.Configure/Application.manifest",
"chars": 942,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n <ass"
},
{
"path": "Feep.Configure/Configure.Designer.cs",
"chars": 14490,
"preview": "namespace Feep.Configure\n{\n partial class Configure\n {\n private System.ComponentModel.IContainer component"
},
{
"path": "Feep.Configure/Configure.cs",
"chars": 10851,
"preview": "using System;\nusing System.Drawing;\nusing System.Text;\nusing System.Windows.Forms;\nusing Microsoft.Win32;\nusing System."
},
{
"path": "Feep.Configure/Configure.resx",
"chars": 243114,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
},
{
"path": "Feep.Configure/Feep.Configure.csproj",
"chars": 3568,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "Feep.Configure/Program.cs",
"chars": 335,
"preview": "using System;\nusing System.Windows.Forms;\n\nnamespace Feep.Configure\n{\n static class Program\n {\n [STAThread"
},
{
"path": "Feep.Configure/Properties/AssemblyInfo.cs",
"chars": 554,
"preview": "using System.Reflection;\nusing System.Runtime.InteropServices;\n\n[assembly: AssemblyTitle(\"Feep.Configure\")]\n[assembly: "
},
{
"path": "Feep.Configure/Properties/Resources.Designer.cs",
"chars": 1728,
"preview": "namespace Feep.Configure.Properties\n{\n using System;\n\n [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"S"
},
{
"path": "Feep.Configure/Properties/Resources.resx",
"chars": 2600,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
},
{
"path": "Feep.Configure/Properties/Settings.Designer.cs",
"chars": 671,
"preview": "namespace Feep.Configure.Properties\n{\n\n [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n ["
},
{
"path": "Feep.Configure/Properties/Settings.settings",
"chars": 240,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
},
{
"path": "Feep.sln",
"chars": 1455,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.3112"
},
{
"path": "LICENSE",
"chars": 35149,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 535,
"preview": "# Feep\n\n## 鼠标操作方法\n- 查看原始比例:单击鼠标`左键`(移动鼠标可以拖动图片)。\n- 锁定原始比例:查看原始比例时单击鼠标`中键`(再次操作可解除锁定)。\n- 切换图片:`滚轮向上`为上一张,`滚轮向下`为下一张。\n- 全屏"
}
]
About this extraction
This page contains the full source code of the poerin/Feep GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 30 files (395.2 KB), approximately 124.5k tokens, and a symbol index with 69 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.