----boundary-LibPST-iamunique-2094585459_-_-
Content-type: text/plain
Gérard Meunier wrote:
> Perhaps is it possible to call ImageMagick from BlackBox:
>
> http://www.imagemagick.org/
>
> Regards.
>
Gérard,
I spent a few minutes looking at ImageMagick but threw up my hands when
I read the Windows 'build' comments which (out of evil intensions) I
include below. Such comments are precisely why I use BlackBox!
-Doug
WINDOWS XP/Win2K/98 VISUAL C++ 6.0 AND 7.0 COMPILATION
The Visual C++ distribution targeted at Windows XP, Win2K, or Windows
98 does not provide any stock workspace (DSW) or project files (DSP)
except for those included with third party libraries. Instead, there
is a `configure' program that must be built and run that creates build
environments to satisfy various requirements.
The Visual C++ system provides three different types of "runtimes" that
must match across all application, library, and DLL code that is
built. The
`configure' program creates a set of build files that are consistent for
a specific runtime selection.
The three options for runtime support are:
1) Dynamic Multi-threaded DLL runtimes (VisualDynamicMT).
2) Static Single-threaded runtimes (VisualStaticST).
3) Static Multi-threaded runtimes (VisualStaticMT).
4) Static Multi-threaded DLL runtimes (VisualStaticMTDLL).
In addition to these runtimes, the VisualMagick build environment allows
you to select whether to include the X11 libraries in the build or not.
X11 DLLs and headers are provided with the VisualMagick build
environment.
Most Windows users do not use X11 so they will prefer to build without
X11 support. Without X11 support, the `animate', `display', and `import'
will not work.
This leads to five different possible build options, which should cover
almost any particular situation. The default binary distribution is
built
using #1 from above with the X11 libraries included. This results in an
X11 compatible build using all DLL's for everything and multi-threaded
support (the only option for DLL's).
To do a build for your requirements, simply go to the configure
subdirectory
under VisualMagick and open the configure.dsw workspace (for Visual C++
6.0) or configure.sln (for Visual C++ 7.0). Set the build
configuration to
"Release" under the
"Build..., Set Active Configuration..."
menu.
Build and execute the configure program and follow the on-screen
instructions. Generally you can accept the configuration defaults.
The configure program provides a button titled
Edit "magick_config.h"
Clicking this button allows you to edit `magick_config.h' in a Windows
Notepad window for optionally changing any preprocessor defines.
This file is copied to `magick\magick_config.h'. You may safely open
`magick\magick_config.h', modify it, and recompile without re-running the
configure program. In fact, using the notepad program to edit the copied
file may be preferable since it preserves the original `magick_config.hi'
file.
Key user tunables in magick_config.h include:
QuantumDepth (default 8)
Specify the size of PixelPacket color Quantums (8, 16, or 32).
If you need to preserve the fidelity of 16-bit images (gray, png,
etc), use 16. If you want to work in remote sensing or if you are
a mad scientist you might consider 32. Note, that a quantum-depth
16 uses 4-times as much memory as the default quantum-depth of 8,
whereas a quantum-depth of 32 uses 16-times as much memory.
UseInstalledMagick (default undefined)
Define to build an ImageMagick which uses registry settings or
embedded
paths to locate installed components (coder modules and configuration
files). The default is to look for all files in the same directory
as the executable.
ProvideDllMain (default defined)
Define to include a DllMain() function ensures that the ImageMagick
DLL is properly initialized without participation from dependent
applications. This avoids the requirement to invoke
IntializeMagick()
from dependent applications but only works for DLL builds.
After creating your build environment you can proceed to open the DSW
(or SLN) file that was generated in the VisualMagick directory and build
everything from there.
In the final DSW file you will find a project call "All". In order to
build everything in the distribution, select this project and make it the
"active" project. Set the build configuration to the desired one (Debug,
or Release) and do a "clean" followed by a "build". You should do the
build in a specific way:
1) Make the "All" project the active project (Bold)
Right click on the All project and select "Set As Active Project"
2) Select "Build..., Clean" 3) Select "Build..., Build" 4) Go get some
coffee unless you have a very fast machine!.
The "Clean" step is needed in order to make sure that all of the target
support libraries are updated with any patches needed to get them to
compile properly under Visual C++.
All of the required files that are needed to run any of the command
line tools will be found in the "bin" subdirectory of the VisualMagick
subdirectory. This includes EXE, and DLL files. You should be able
to test
the build directly from this directory without having to move
anything to any
of the global SYSTEM or SYSTEM32 areas in the operating system
installation.
Note #1:
The Visual C++ distribution of ImageMagick comes with the Magick++
C++ wrapper by default. This add-on layer has a large number of demo
and test files that can be found in ImageMagick\Magick++\demo, and
ImageMagick\Magick++\tests. There are also a variety of tests that use
the straight C API as well in ImageMagick\tests.
All of these programs are NOT configured to be built in the default
workspace created by the configure program. You can build these demos
and test programs to be built by checking the box in configure that says:
"Include all demo and test programs"
In addition, there is another related checkbox (checked by default) that
causes all generated project files to be created standalone so that they
can be copied to other areas of you system.
This is the checkbox:
"Generate all utility projects with full paths rather then relative
paths"
Visual C++ uses a concept of "dependencies" that tell it what other
components need to be build when a particular project is being build.
This mechanism is also used to ensure that components link properly.
With this feature enabled, you should be able to nab a copy of...
VisualMagick\utilities\UTIL_convert_xxx_exe.dsp (for C)
or
VisualMagick\Magick++\demo\UTIL_demo_xxx_exe.dsp (for C++)
and pop it into the notepad program, modify it (carefully) to your needs
and be on your way to happy compiling and linking.
You can feel free to pick any of the standard utilities, tests, or demo
programs as the basis for a new program by copying the project and the
source and hacking away.
The choice of what to use as a starting point is very easy.
For straight C API command line applications use something from:
ImageMagick\tests or ImageMagick\utilities (source code)
ImageMagick\VisualMagick\tests or
ImageMagick\Visualmagick\utilities (project - DSP)
For C++ and Magick++ command line applications use something from:
ImageMagick\Magick++\tests or ImageMagick\Magick++\demo (source code)
ImageMagick\VisualMagick\Magick++\tests or
ImageMagick\VisualMagick\Magick++\demo (project - DSP)
For C++ and Magick++ and MFC windows applications use:
ImageMagick\contrib\win32\MFC\NtMagick (source code)
ImageMagick\VisualMagick\contrib\win32\MFC\NtMagick (project - DSP)
Note #2:
The ImageMagick distribution is very modular. The default configuration
is there to get you rolling, but you need to make some serious choices
when you wish to change things around.
The default options are all targeted at having all the components in one
place (e.g. the "bin" directory of the VisualMagick build tree). These
components may be copied to another folder (such as to another computer).
The folder containing the executables and DLLs should contain all the
configuration files, *.xml.
The "bin" folder should contains all EXE's and DLL's as well as the very
important "coder.xml" file.
With this default setup, you can use any of the command line tools
and run
scripts as normal. You can actually get by quite nicely this way by
doing
something like "pushd e:\xxx\yyy\bin" in any scripts you write to execute
"out of" this directory.
By default the core of ImageMagick on Win32 always looks in the place
were
the exe program is run from in order to find all of the files as well as
the DLL's it needs.
ENVIRONMENT VARIABLES
You can use the "System" control panel to allow you to add and delete
what
is in any of the environment variables. You can even have user specific
environment variables if you wish.
PATH
This sets the default list of places were Windows looks for EXE's
and DLL's. Windows CMD shell seems to look in the "current" directory
first - no matter what, which may make it unnecessary to update the
PATH.
If you wish to run any of utilities from another location, you must
add the path to your "bin" directory in. For instance, you might add:
D:\CVS\ImageMagick\VisualMagick\bin
to do this for the default build environment like I do.
MAGICK_HOME
If all you do is modify the PATH variable, the first problem you
will run
into is that ImageMagick may not be able to find any of its "modules".
Modules are all the IM_MOD*.DLL files you see in the distribution.
There is one of these for each and every file format that ImageMagick
supports. This environment variable tells the system were to look for
these DLL's. The compiled in "default" is "execution path" - which
says
- look in the same place that the application is running "in". If you
are running from somewhere other then "bin" - this will no longer work
and you must use this variable. If you elect to leave the modules in
the same place as the EXE's (a good idea), you can simply set this to
the same place as you did the PATH variable. In my case:
D:\\ImageMagick\coders
This is also the place were ImageMagick expects to find the
configuration
files, *.xml, including module.xml, type.xml, etc.
One cool thing about the modules build of ImageMagick is that you can
now leave out file formats and lighten you load. If all you ever
need is
GIF and JPEG, simply drop all the other DLL's into the local trash
can and get on with your life. However, always keep the "xc" format,
since ImageMagick uses it for internal purposes.
Also. You can elect to changes these things the good old "hard-coded"
way. Two #defines are applicable.
defines.h has
#define MagickConfigurePath "c:\\ImageMagick\\"
To view any image in a Microsoft window, type
convert image.ext win:
Make sure Ghostscript is installed, otherwise, you will be unable to
convert or view a Postscript document, and Postscript standard fonts will
not be available.
You may use any standard web browser (e.g. Internet Explorer) to browse
the ImageMagick documentation.
The Win2K executables will work under Windows 98.
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
----boundary-LibPST-iamunique-2094585459_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJc
Zm5pbFxmY2hhcnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBO
ZXc7fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7
fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyMCBHXCdlOXJhcmQgTWV1bmllciB3
cm90ZTpccGFyDQo+IFBlcmhhcHMgaXMgaXQgcG9zc2libGUgdG8gY2FsbCBJbWFnZU1hZ2ljayBm
cm9tIEJsYWNrQm94OlxwYXINCj4gXHBhcg0KPiAgICAgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5v
cmcvXHBhcg0KPiBccGFyDQo+IFJlZ2FyZHMuXHBhcg0KPiBccGFyDQpHXCdlOXJhcmQsXHBhcg0K
SSBzcGVudCBhIGZldyBtaW51dGVzIGxvb2tpbmcgYXQgSW1hZ2VNYWdpY2sgYnV0IHRocmV3IHVw
IG15IGhhbmRzIHdoZW4gXHBhcg0KSSByZWFkIHRoZSBXaW5kb3dzICdidWlsZCcgY29tbWVudHMg
d2hpY2ggKG91dCBvZiBldmlsIGludGVuc2lvbnMpIEkgXHBhcg0KaW5jbHVkZSBiZWxvdy4gIFN1
Y2ggY29tbWVudHMgYXJlIHByZWNpc2VseSB3aHkgSSB1c2UgQmxhY2tCb3ghXHBhcg0KLURvdWdc
cGFyDQpccGFyDQpccGFyDQpccGFyDQpccGFyDQpXSU5ET1dTIFhQL1dpbjJLLzk4IFZJU1VBTCBD
KysgNi4wIEFORCA3LjAgQ09NUElMQVRJT05ccGFyDQpccGFyDQogICBUaGUgVmlzdWFsIEMrKyBk
aXN0cmlidXRpb24gdGFyZ2V0ZWQgYXQgV2luZG93cyBYUCwgV2luMkssIG9yIFdpbmRvd3NccGFy
DQogICA5OCBkb2VzIG5vdCBwcm92aWRlIGFueSBzdG9jayB3b3Jrc3BhY2UgKERTVykgb3IgcHJv
amVjdCBmaWxlcyAoRFNQKVxwYXINCiAgIGV4Y2VwdCBmb3IgdGhvc2UgaW5jbHVkZWQgd2l0aCB0
aGlyZCBwYXJ0eSBsaWJyYXJpZXMuIEluc3RlYWQsIHRoZXJlXHBhcg0KICAgaXMgYSBgY29uZmln
dXJlJyBwcm9ncmFtIHRoYXQgbXVzdCBiZSBidWlsdCBhbmQgcnVuIHRoYXQgY3JlYXRlcyBidWls
ZFxwYXINCiAgIGVudmlyb25tZW50cyB0byBzYXRpc2Z5IHZhcmlvdXMgcmVxdWlyZW1lbnRzLlxw
YXINClxwYXINCiAgIFRoZSBWaXN1YWwgQysrIHN5c3RlbSBwcm92aWRlcyB0aHJlZSBkaWZmZXJl
bnQgdHlwZXMgb2YgInJ1bnRpbWVzIiB0aGF0XHBhcg0KICAgbXVzdCBtYXRjaCBhY3Jvc3MgYWxs
IGFwcGxpY2F0aW9uLCBsaWJyYXJ5LCBhbmQgRExMIGNvZGUgdGhhdCBpcyBccGFyDQpidWlsdC4g
VGhlXHBhcg0KICAgYGNvbmZpZ3VyZScgcHJvZ3JhbSBjcmVhdGVzIGEgc2V0IG9mIGJ1aWxkIGZp
bGVzIHRoYXQgYXJlIGNvbnNpc3RlbnQgZm9yXHBhcg0KICAgYSBzcGVjaWZpYyBydW50aW1lIHNl
bGVjdGlvbi5ccGFyDQpccGFyDQogICBUaGUgdGhyZWUgb3B0aW9ucyBmb3IgcnVudGltZSBzdXBw
b3J0IGFyZTpccGFyDQpccGFyDQogICAgIDEpIER5bmFtaWMgTXVsdGktdGhyZWFkZWQgRExMIHJ1
bnRpbWVzIChWaXN1YWxEeW5hbWljTVQpLlxwYXINCiAgICAgMikgU3RhdGljIFNpbmdsZS10aHJl
YWRlZCBydW50aW1lcyAoVmlzdWFsU3RhdGljU1QpLlxwYXINCiAgICAgMykgU3RhdGljIE11bHRp
LXRocmVhZGVkIHJ1bnRpbWVzIChWaXN1YWxTdGF0aWNNVCkuXHBhcg0KICAgICA0KSBTdGF0aWMg
TXVsdGktdGhyZWFkZWQgRExMIHJ1bnRpbWVzIChWaXN1YWxTdGF0aWNNVERMTCkuXHBhcg0KXHBh
cg0KICAgSW4gYWRkaXRpb24gdG8gdGhlc2UgcnVudGltZXMsIHRoZSBWaXN1YWxNYWdpY2sgYnVp
bGQgZW52aXJvbm1lbnQgYWxsb3dzXHBhcg0KICAgeW91IHRvIHNlbGVjdCB3aGV0aGVyIHRvIGlu
Y2x1ZGUgdGhlIFgxMSBsaWJyYXJpZXMgaW4gdGhlIGJ1aWxkIG9yIG5vdC5ccGFyDQogICBYMTEg
RExMcyBhbmQgaGVhZGVycyBhcmUgcHJvdmlkZWQgd2l0aCB0aGUgVmlzdWFsTWFnaWNrIGJ1aWxk
IFxwYXINCmVudmlyb25tZW50LlxwYXINCiAgIE1vc3QgV2luZG93cyB1c2VycyBkbyBub3QgdXNl
IFgxMSBzbyB0aGV5IHdpbGwgcHJlZmVyIHRvIGJ1aWxkIHdpdGhvdXRccGFyDQogICBYMTEgc3Vw
cG9ydC4gIFdpdGhvdXQgWDExIHN1cHBvcnQsIHRoZSBgYW5pbWF0ZScsIGBkaXNwbGF5JywgYW5k
IGBpbXBvcnQnXHBhcg0KICAgd2lsbCBub3Qgd29yay5ccGFyDQpccGFyDQogICBUaGlzIGxlYWRz
IHRvIGZpdmUgZGlmZmVyZW50IHBvc3NpYmxlIGJ1aWxkIG9wdGlvbnMsIHdoaWNoIHNob3VsZCBj
b3ZlclxwYXINCiAgIGFsbW9zdCBhbnkgcGFydGljdWxhciBzaXR1YXRpb24uICBUaGUgZGVmYXVs
dCBiaW5hcnkgZGlzdHJpYnV0aW9uIGlzIFxwYXINCmJ1aWx0XHBhcg0KICAgdXNpbmcgIzEgZnJv
bSBhYm92ZSB3aXRoIHRoZSBYMTEgbGlicmFyaWVzIGluY2x1ZGVkLiAgVGhpcyByZXN1bHRzIGlu
IGFuXHBhcg0KICAgWDExIGNvbXBhdGlibGUgYnVpbGQgdXNpbmcgYWxsIERMTCdzIGZvciBldmVy
eXRoaW5nIGFuZCBtdWx0aS10aHJlYWRlZFxwYXINCiAgIHN1cHBvcnQgKHRoZSBvbmx5IG9wdGlv
biBmb3IgRExMJ3MpLlxwYXINClxwYXINCiAgIFRvIGRvIGEgYnVpbGQgZm9yIHlvdXIgcmVxdWly
ZW1lbnRzLCBzaW1wbHkgZ28gdG8gdGhlIGNvbmZpZ3VyZSBccGFyDQpzdWJkaXJlY3RvcnlccGFy
DQogICB1bmRlciBWaXN1YWxNYWdpY2sgYW5kIG9wZW4gdGhlIGNvbmZpZ3VyZS5kc3cgd29ya3Nw
YWNlIChmb3IgVmlzdWFsIEMrK1xwYXINCiAgIDYuMCkgb3IgY29uZmlndXJlLnNsbiAoZm9yIFZp
c3VhbCBDKysgNy4wKS4gU2V0IHRoZSBidWlsZCBccGFyDQpjb25maWd1cmF0aW9uIHRvXHBhcg0K
ICAgIlJlbGVhc2UiIHVuZGVyIHRoZVxwYXINClxwYXINCiAgICAgICAiQnVpbGQuLi4sIFNldCBB
Y3RpdmUgQ29uZmlndXJhdGlvbi4uLiJccGFyDQpccGFyDQogICBtZW51LlxwYXINClxwYXINCiAg
IEJ1aWxkIGFuZCBleGVjdXRlIHRoZSBjb25maWd1cmUgcHJvZ3JhbSBhbmQgZm9sbG93IHRoZSBv
bi1zY3JlZW5ccGFyDQogICBpbnN0cnVjdGlvbnMuICBHZW5lcmFsbHkgeW91IGNhbiBhY2NlcHQg
dGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMuXHBhcg0KXHBhcg0KICAgVGhlIGNvbmZpZ3VyZSBw
cm9ncmFtIHByb3ZpZGVzIGEgYnV0dG9uIHRpdGxlZFxwYXINClxwYXINCiAgICAgIEVkaXQgIm1h
Z2lja19jb25maWcuaCJccGFyDQpccGFyDQogICBDbGlja2luZyB0aGlzIGJ1dHRvbiBhbGxvd3Mg
eW91IHRvIGVkaXQgYG1hZ2lja19jb25maWcuaCcgaW4gYSBXaW5kb3dzXHBhcg0KICAgTm90ZXBh
ZCB3aW5kb3cgZm9yIG9wdGlvbmFsbHkgY2hhbmdpbmcgYW55IHByZXByb2Nlc3NvciBkZWZpbmVz
LlxwYXINCiAgIFRoaXMgZmlsZSBpcyBjb3BpZWQgdG8gYG1hZ2lja1xcbWFnaWNrX2NvbmZpZy5o
Jy4gIFlvdSBtYXkgc2FmZWx5IG9wZW5ccGFyDQogICBgbWFnaWNrXFxtYWdpY2tfY29uZmlnLmgn
LCBtb2RpZnkgaXQsIGFuZCByZWNvbXBpbGUgd2l0aG91dCByZS1ydW5uaW5nIHRoZVxwYXINCiAg
IGNvbmZpZ3VyZSBwcm9ncmFtLiAgSW4gZmFjdCwgdXNpbmcgdGhlIG5vdGVwYWQgcHJvZ3JhbSB0
byBlZGl0IHRoZSBjb3BpZWRccGFyDQogICBmaWxlIG1heSBiZSBwcmVmZXJhYmxlIHNpbmNlIGl0
IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgYG1hZ2lja19jb25maWcuaGknXHBhcg0KICAgZmlsZS5c
cGFyDQpccGFyDQogICBLZXkgdXNlciB0dW5hYmxlcyBpbiBtYWdpY2tfY29uZmlnLmggaW5jbHVk
ZTpccGFyDQpccGFyDQogICAgIFF1YW50dW1EZXB0aCAoZGVmYXVsdCA4KVxwYXINClxwYXINCiAg
ICAgICBTcGVjaWZ5IHRoZSBzaXplIG9mIFBpeGVsUGFja2V0IGNvbG9yIFF1YW50dW1zICg4LCAx
Niwgb3IgMzIpLlxwYXINCiAgICAgICBJZiB5b3UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgZmlkZWxp
dHkgb2YgMTYtYml0IGltYWdlcyAoZ3JheSwgcG5nLFxwYXINCiAgICAgICBldGMpLCB1c2UgMTYu
ICBJZiB5b3Ugd2FudCB0byB3b3JrIGluIHJlbW90ZSBzZW5zaW5nIG9yIGlmIHlvdSBhcmVccGFy
DQogICAgICAgYSBtYWQgc2NpZW50aXN0IHlvdSBtaWdodCBjb25zaWRlciAzMi4gIE5vdGUsIHRo
YXQgYSBxdWFudHVtLWRlcHRoXHBhcg0KICAgICAgIDE2IHVzZXMgNC10aW1lcyBhcyBtdWNoIG1l
bW9yeSBhcyB0aGUgZGVmYXVsdCBxdWFudHVtLWRlcHRoIG9mIDgsXHBhcg0KICAgICAgIHdoZXJl
YXMgYSBxdWFudHVtLWRlcHRoIG9mIDMyIHVzZXMgMTYtdGltZXMgYXMgbXVjaCBtZW1vcnkuXHBh
cg0KXHBhcg0KICAgICBVc2VJbnN0YWxsZWRNYWdpY2sgKGRlZmF1bHQgdW5kZWZpbmVkKVxwYXIN
ClxwYXINCiAgICAgICBEZWZpbmUgdG8gYnVpbGQgYW4gSW1hZ2VNYWdpY2sgd2hpY2ggdXNlcyBy
ZWdpc3RyeSBzZXR0aW5ncyBvciBccGFyDQplbWJlZGRlZFxwYXINCiAgICAgICBwYXRocyB0byBs
b2NhdGUgaW5zdGFsbGVkIGNvbXBvbmVudHMgKGNvZGVyIG1vZHVsZXMgYW5kIGNvbmZpZ3VyYXRp
b25ccGFyDQogICAgICAgZmlsZXMpLiAgVGhlIGRlZmF1bHQgaXMgdG8gbG9vayBmb3IgYWxsIGZp
bGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeVxwYXINCiAgICAgICBhcyB0aGUgZXhlY3V0YWJsZS5c
cGFyDQpccGFyDQogICAgIFByb3ZpZGVEbGxNYWluIChkZWZhdWx0IGRlZmluZWQpXHBhcg0KXHBh
cg0KICAgICAgIERlZmluZSB0byBpbmNsdWRlIGEgRGxsTWFpbigpIGZ1bmN0aW9uIGVuc3VyZXMg
dGhhdCB0aGUgSW1hZ2VNYWdpY2tccGFyDQogICAgICAgRExMIGlzIHByb3Blcmx5IGluaXRpYWxp
emVkIHdpdGhvdXQgcGFydGljaXBhdGlvbiBmcm9tIGRlcGVuZGVudFxwYXINCiAgICAgICBhcHBs
aWNhdGlvbnMuICBUaGlzIGF2b2lkcyB0aGUgcmVxdWlyZW1lbnQgdG8gaW52b2tlIFxwYXINCklu
dGlhbGl6ZU1hZ2ljaygpXHBhcg0KICAgICAgIGZyb20gZGVwZW5kZW50IGFwcGxpY2F0aW9ucyBi
dXQgb25seSB3b3JrcyBmb3IgRExMIGJ1aWxkcy5ccGFyDQpccGFyDQogICBBZnRlciBjcmVhdGlu
ZyB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHlvdSBjYW4gcHJvY2VlZCB0byBvcGVuIHRoZSBEU1dc
cGFyDQogICAob3IgU0xOKSBmaWxlIHRoYXQgd2FzIGdlbmVyYXRlZCBpbiB0aGUgVmlzdWFsTWFn
aWNrIGRpcmVjdG9yeSBhbmQgYnVpbGRccGFyDQogICBldmVyeXRoaW5nIGZyb20gdGhlcmUuXHBh
cg0KXHBhcg0KICAgSW4gdGhlIGZpbmFsIERTVyBmaWxlIHlvdSB3aWxsIGZpbmQgYSBwcm9qZWN0
IGNhbGwgIkFsbCIuIEluIG9yZGVyIHRvXHBhcg0KICAgYnVpbGQgZXZlcnl0aGluZyBpbiB0aGUg
ZGlzdHJpYnV0aW9uLCBzZWxlY3QgdGhpcyBwcm9qZWN0IGFuZCBtYWtlIGl0IHRoZVxwYXINCiAg
ICJhY3RpdmUiIHByb2plY3QuIFNldCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byB0aGUgZGVz
aXJlZCBvbmUgKERlYnVnLFxwYXINCiAgIG9yIFJlbGVhc2UpIGFuZCBkbyBhICJjbGVhbiIgZm9s
bG93ZWQgYnkgYSAiYnVpbGQiLiAgWW91IHNob3VsZCBkbyB0aGVccGFyDQogICBidWlsZCBpbiBh
IHNwZWNpZmljIHdheTpccGFyDQpccGFyDQogICAgIDEpIE1ha2UgdGhlICJBbGwiIHByb2plY3Qg
dGhlIGFjdGl2ZSBwcm9qZWN0IChCb2xkKVxwYXINCiAgICAgICAgUmlnaHQgY2xpY2sgb24gdGhl
IEFsbCBwcm9qZWN0IGFuZCBzZWxlY3QgIlNldCBBcyBBY3RpdmUgUHJvamVjdCJccGFyDQogICAg
IDIpIFNlbGVjdCAiQnVpbGQuLi4sIENsZWFuIiAzKSBTZWxlY3QgIkJ1aWxkLi4uLCBCdWlsZCIg
NCkgR28gZ2V0IHNvbWVccGFyDQogICAgIGNvZmZlZSB1bmxlc3MgeW91IGhhdmUgYSB2ZXJ5IGZh
c3QgbWFjaGluZSEuXHBhcg0KXHBhcg0KICAgVGhlICJDbGVhbiIgc3RlcCBpcyBuZWVkZWQgaW4g
b3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZSB0YXJnZXRccGFyDQogICBzdXBwb3J0
IGxpYnJhcmllcyBhcmUgdXBkYXRlZCB3aXRoIGFueSBwYXRjaGVzIG5lZWRlZCB0byBnZXQgdGhl
bSB0b1xwYXINCiAgIGNvbXBpbGUgcHJvcGVybHkgdW5kZXIgVmlzdWFsIEMrKy5ccGFyDQpccGFy
DQogICBBbGwgb2YgdGhlIHJlcXVpcmVkIGZpbGVzIHRoYXQgYXJlIG5lZWRlZCB0byBydW4gYW55
IG9mIHRoZSBjb21tYW5kXHBhcg0KICAgbGluZSB0b29scyB3aWxsIGJlIGZvdW5kIGluIHRoZSAi
YmluIiBzdWJkaXJlY3Rvcnkgb2YgdGhlIFZpc3VhbE1hZ2lja1xwYXINCiAgIHN1YmRpcmVjdG9y
eS4gIFRoaXMgaW5jbHVkZXMgRVhFLCBhbmQgRExMIGZpbGVzLiBZb3Ugc2hvdWxkIGJlIGFibGUg
XHBhcg0KdG8gdGVzdFxwYXINCiAgIHRoZSBidWlsZCBkaXJlY3RseSBmcm9tIHRoaXMgZGlyZWN0
b3J5IHdpdGhvdXQgaGF2aW5nIHRvIG1vdmUgXHBhcg0KYW55dGhpbmcgdG8gYW55XHBhcg0KICAg
b2YgdGhlIGdsb2JhbCBTWVNURU0gb3IgU1lTVEVNMzIgYXJlYXMgaW4gdGhlIG9wZXJhdGluZyBz
eXN0ZW0gXHBhcg0KaW5zdGFsbGF0aW9uLlxwYXINClxwYXINCiAgIE5vdGUgIzE6XHBhcg0KXHBh
cg0KICAgVGhlIFZpc3VhbCBDKysgZGlzdHJpYnV0aW9uIG9mIEltYWdlTWFnaWNrIGNvbWVzIHdp
dGggdGhlIE1hZ2ljaysrXHBhcg0KICAgQysrIHdyYXBwZXIgYnkgZGVmYXVsdC4gIFRoaXMgYWRk
LW9uIGxheWVyIGhhcyBhIGxhcmdlIG51bWJlciBvZiBkZW1vXHBhcg0KICAgYW5kIHRlc3QgZmls
ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gSW1hZ2VNYWdpY2tcXE1hZ2ljaysrXFxkZW1vLCBhbmRc
cGFyDQogICBJbWFnZU1hZ2lja1xcTWFnaWNrKytcXHRlc3RzLiBUaGVyZSBhcmUgYWxzbyBhIHZh
cmlldHkgb2YgdGVzdHMgdGhhdCB1c2VccGFyDQogICB0aGUgc3RyYWlnaHQgQyBBUEkgYXMgd2Vs
bCBpbiBJbWFnZU1hZ2lja1xcdGVzdHMuXHBhcg0KXHBhcg0KICAgQWxsIG9mIHRoZXNlIHByb2dy
YW1zIGFyZSBOT1QgY29uZmlndXJlZCB0byBiZSBidWlsdCBpbiB0aGUgZGVmYXVsdFxwYXINCiAg
IHdvcmtzcGFjZSBjcmVhdGVkIGJ5IHRoZSBjb25maWd1cmUgcHJvZ3JhbS4gIFlvdSBjYW4gYnVp
bGQgdGhlc2UgZGVtb3NccGFyDQogICBhbmQgdGVzdCBwcm9ncmFtcyB0byBiZSBidWlsdCBieSBj
aGVja2luZyB0aGUgYm94IGluIGNvbmZpZ3VyZSB0aGF0IHNheXM6XHBhcg0KXHBhcg0KICAgICAi
SW5jbHVkZSBhbGwgZGVtbyBhbmQgdGVzdCBwcm9ncmFtcyJccGFyDQpccGFyDQogICBJbiBhZGRp
dGlvbiwgdGhlcmUgaXMgYW5vdGhlciByZWxhdGVkIGNoZWNrYm94IChjaGVja2VkIGJ5IGRlZmF1
bHQpIHRoYXRccGFyDQogICBjYXVzZXMgYWxsIGdlbmVyYXRlZCBwcm9qZWN0IGZpbGVzIHRvIGJl
IGNyZWF0ZWQgc3RhbmRhbG9uZSBzbyB0aGF0IHRoZXlccGFyDQogICBjYW4gYmUgY29waWVkIHRv
IG90aGVyIGFyZWFzIG9mIHlvdSBzeXN0ZW0uXHBhcg0KXHBhcg0KICAgVGhpcyBpcyB0aGUgY2hl
Y2tib3g6XHBhcg0KXHBhcg0KICAgICAiR2VuZXJhdGUgYWxsIHV0aWxpdHkgcHJvamVjdHMgd2l0
aCBmdWxsIHBhdGhzIHJhdGhlciB0aGVuIHJlbGF0aXZlIFxwYXINCnBhdGhzIlxwYXINClxwYXIN
CiAgIFZpc3VhbCBDKysgdXNlcyBhIGNvbmNlcHQgb2YgImRlcGVuZGVuY2llcyIgdGhhdCB0ZWxs
IGl0IHdoYXQgb3RoZXJccGFyDQogICBjb21wb25lbnRzIG5lZWQgdG8gYmUgYnVpbGQgd2hlbiBh
IHBhcnRpY3VsYXIgcHJvamVjdCBpcyBiZWluZyBidWlsZC5ccGFyDQogICBUaGlzIG1lY2hhbmlz
bSBpcyBhbHNvIHVzZWQgdG8gZW5zdXJlIHRoYXQgY29tcG9uZW50cyBsaW5rIHByb3Blcmx5Llxw
YXINCiAgIFdpdGggdGhpcyBmZWF0dXJlIGVuYWJsZWQsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBu
YWIgYSBjb3B5IG9mLi4uXHBhcg0KXHBhcg0KICAgICBWaXN1YWxNYWdpY2tcXHV0aWxpdGllc1xc
VVRJTF9jb252ZXJ0X3h4eF9leGUuZHNwICAoZm9yIEMpXHBhcg0KXHBhcg0KICAgb3JccGFyDQpc
cGFyDQogICAgIFZpc3VhbE1hZ2lja1xcTWFnaWNrKytcXGRlbW9cXFVUSUxfZGVtb194eHhfZXhl
LmRzcCAoZm9yIEMrKylccGFyDQpccGFyDQogICBhbmQgcG9wIGl0IGludG8gdGhlIG5vdGVwYWQg
cHJvZ3JhbSwgbW9kaWZ5IGl0IChjYXJlZnVsbHkpIHRvIHlvdXIgbmVlZHNccGFyDQogICBhbmQg
YmUgb24geW91ciB3YXkgdG8gaGFwcHkgY29tcGlsaW5nIGFuZCBsaW5raW5nLlxwYXINClxwYXIN
CiAgIFlvdSBjYW4gZmVlbCBmcmVlIHRvIHBpY2sgYW55IG9mIHRoZSBzdGFuZGFyZCB1dGlsaXRp
ZXMsIHRlc3RzLCBvciBkZW1vXHBhcg0KICAgcHJvZ3JhbXMgYXMgdGhlIGJhc2lzIGZvciBhIG5l
dyBwcm9ncmFtIGJ5IGNvcHlpbmcgdGhlIHByb2plY3QgYW5kIHRoZVxwYXINCiAgIHNvdXJjZSBh
bmQgaGFja2luZyBhd2F5LlxwYXINClxwYXINCiAgIFRoZSBjaG9pY2Ugb2Ygd2hhdCB0byB1c2Ug
YXMgYSBzdGFydGluZyBwb2ludCBpcyB2ZXJ5IGVhc3kuXHBhcg0KXHBhcg0KICAgRm9yIHN0cmFp
Z2h0IEMgQVBJIGNvbW1hbmQgbGluZSBhcHBsaWNhdGlvbnMgdXNlIHNvbWV0aGluZyBmcm9tOlxw
YXINClxwYXINCiAgICAgSW1hZ2VNYWdpY2tcXHRlc3RzIG9yIEltYWdlTWFnaWNrXFx1dGlsaXRp
ZXMgKHNvdXJjZSBjb2RlKVxwYXINCiAgICAgSW1hZ2VNYWdpY2tcXFZpc3VhbE1hZ2lja1xcdGVz
dHMgb3IgXHBhcg0KSW1hZ2VNYWdpY2tcXFZpc3VhbG1hZ2lja1xcdXRpbGl0aWVzIChwcm9qZWN0
IC0gRFNQKVxwYXINClxwYXINCiAgIEZvciBDKysgYW5kIE1hZ2ljaysrIGNvbW1hbmQgbGluZSBh
cHBsaWNhdGlvbnMgdXNlIHNvbWV0aGluZyBmcm9tOlxwYXINClxwYXINCiAgICAgSW1hZ2VNYWdp
Y2tcXE1hZ2ljaysrXFx0ZXN0cyBvciBJbWFnZU1hZ2lja1xcTWFnaWNrKytcXGRlbW8gKHNvdXJj
ZSBjb2RlKVxwYXINCiAgICAgSW1hZ2VNYWdpY2tcXFZpc3VhbE1hZ2lja1xcTWFnaWNrKytcXHRl
c3RzIG9yIFxwYXINCkltYWdlTWFnaWNrXFxWaXN1YWxNYWdpY2tcXE1hZ2ljaysrXFxkZW1vIChw
cm9qZWN0IC0gRFNQKVxwYXINClxwYXINCiAgIEZvciBDKysgYW5kIE1hZ2ljaysrIGFuZCBNRkMg
d2luZG93cyBhcHBsaWNhdGlvbnMgdXNlOlxwYXINClxwYXINCiAgICAgSW1hZ2VNYWdpY2tcXGNv
bnRyaWJcXHdpbjMyXFxNRkNcXE50TWFnaWNrIChzb3VyY2UgY29kZSlccGFyDQogICAgIEltYWdl
TWFnaWNrXFxWaXN1YWxNYWdpY2tcXGNvbnRyaWJcXHdpbjMyXFxNRkNcXE50TWFnaWNrIChwcm9q
ZWN0IC0gRFNQKVxwYXINClxwYXINCiAgIE5vdGUgIzI6XHBhcg0KXHBhcg0KICAgVGhlIEltYWdl
TWFnaWNrIGRpc3RyaWJ1dGlvbiBpcyB2ZXJ5IG1vZHVsYXIuIFRoZSBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb25ccGFyDQogICBpcyB0aGVyZSB0byBnZXQgeW91IHJvbGxpbmcsIGJ1dCB5b3UgbmVlZCB0
byBtYWtlIHNvbWUgc2VyaW91cyBjaG9pY2VzXHBhcg0KICAgd2hlbiB5b3Ugd2lzaCB0byBjaGFu
Z2UgdGhpbmdzIGFyb3VuZC5ccGFyDQpccGFyDQogICBUaGUgZGVmYXVsdCBvcHRpb25zIGFyZSBh
bGwgdGFyZ2V0ZWQgYXQgaGF2aW5nIGFsbCB0aGUgY29tcG9uZW50cyBpbiBvbmVccGFyDQogICBw
bGFjZSAoZS5nLiB0aGUgImJpbiIgZGlyZWN0b3J5IG9mIHRoZSBWaXN1YWxNYWdpY2sgYnVpbGQg
dHJlZSkuIFRoZXNlXHBhcg0KICAgY29tcG9uZW50cyBtYXkgYmUgY29waWVkIHRvIGFub3RoZXIg
Zm9sZGVyIChzdWNoIGFzIHRvIGFub3RoZXIgY29tcHV0ZXIpLlxwYXINClxwYXINCiAgIFRoZSBm
b2xkZXIgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZXMgYW5kIERMTHMgc2hvdWxkIGNvbnRhaW4g
YWxsIHRoZVxwYXINCiAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsICoueG1sLlxwYXINClxwYXINCiAg
IFRoZSAiYmluIiBmb2xkZXIgc2hvdWxkIGNvbnRhaW5zIGFsbCBFWEUncyBhbmQgRExMJ3MgYXMg
d2VsbCBhcyB0aGUgdmVyeVxwYXINCiAgIGltcG9ydGFudCAiY29kZXIueG1sIiBmaWxlLlxwYXIN
ClxwYXINCiAgIFdpdGggdGhpcyBkZWZhdWx0IHNldHVwLCB5b3UgY2FuIHVzZSBhbnkgb2YgdGhl
IGNvbW1hbmQgbGluZSB0b29scyBccGFyDQphbmQgcnVuXHBhcg0KICAgc2NyaXB0cyBhcyBub3Jt
YWwuICBZb3UgY2FuIGFjdHVhbGx5IGdldCBieSBxdWl0ZSBuaWNlbHkgdGhpcyB3YXkgYnkgXHBh
cg0KZG9pbmdccGFyDQogICBzb21ldGhpbmcgbGlrZSAicHVzaGQgZTpcXHh4eFxceXl5XFxiaW4i
IGluIGFueSBzY3JpcHRzIHlvdSB3cml0ZSB0byBleGVjdXRlXHBhcg0KICAgIm91dCBvZiIgdGhp
cyBkaXJlY3RvcnkuXHBhcg0KXHBhcg0KICAgQnkgZGVmYXVsdCB0aGUgY29yZSBvZiBJbWFnZU1h
Z2ljayBvbiBXaW4zMiBhbHdheXMgbG9va3MgaW4gdGhlIHBsYWNlIFxwYXINCndlcmVccGFyDQog
ICB0aGUgZXhlIHByb2dyYW0gaXMgcnVuIGZyb20gaW4gb3JkZXIgdG8gZmluZCBhbGwgb2YgdGhl
IGZpbGVzIGFzIHdlbGwgYXNccGFyDQogICB0aGUgRExMJ3MgaXQgbmVlZHMuXHBhcg0KXHBhcg0K
XHBhcg0KRU5WSVJPTk1FTlQgVkFSSUFCTEVTXHBhcg0KXHBhcg0KICAgWW91IGNhbiB1c2UgdGhl
ICJTeXN0ZW0iIGNvbnRyb2wgcGFuZWwgdG8gYWxsb3cgeW91IHRvIGFkZCBhbmQgZGVsZXRlIFxw
YXINCndoYXRccGFyDQogICBpcyBpbiBhbnkgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4g
WW91IGNhbiBldmVuIGhhdmUgdXNlciBzcGVjaWZpY1xwYXINCiAgIGVudmlyb25tZW50IHZhcmlh
YmxlcyBpZiB5b3Ugd2lzaC5ccGFyDQpccGFyDQogICBQQVRIXHBhcg0KXHBhcg0KICAgICBUaGlz
IHNldHMgdGhlIGRlZmF1bHQgbGlzdCBvZiBwbGFjZXMgd2VyZSBXaW5kb3dzIGxvb2tzIGZvciBF
WEUnc1xwYXINCiAgICAgYW5kIERMTCdzLiAgV2luZG93cyBDTUQgc2hlbGwgc2VlbXMgdG8gbG9v
ayBpbiB0aGUgImN1cnJlbnQiIGRpcmVjdG9yeVxwYXINCiAgICAgZmlyc3QgLSBubyBtYXR0ZXIg
d2hhdCwgd2hpY2ggbWF5IG1ha2UgaXQgdW5uZWNlc3NhcnkgdG8gdXBkYXRlIHRoZSBccGFyDQpQ
QVRILlxwYXINCiAgICAgSWYgeW91IHdpc2ggdG8gcnVuIGFueSBvZiB1dGlsaXRpZXMgZnJvbSBh
bm90aGVyIGxvY2F0aW9uLCB5b3UgbXVzdFxwYXINCiAgICAgYWRkIHRoZSBwYXRoIHRvIHlvdXIg
ImJpbiIgZGlyZWN0b3J5IGluLiBGb3IgaW5zdGFuY2UsIHlvdSBtaWdodCBhZGQ6XHBhcg0KXHBh
cg0KICAgICAgICBEOlxcQ1ZTXFxJbWFnZU1hZ2lja1xcVmlzdWFsTWFnaWNrXFxiaW5ccGFyDQpc
cGFyDQogICAgIHRvIGRvIHRoaXMgZm9yIHRoZSBkZWZhdWx0IGJ1aWxkIGVudmlyb25tZW50IGxp
a2UgSSBkby5ccGFyDQpccGFyDQogICBNQUdJQ0tfSE9NRVxwYXINClxwYXINCiAgICAgSWYgYWxs
IHlvdSBkbyBpcyBtb2RpZnkgdGhlIFBBVEggdmFyaWFibGUsIHRoZSBmaXJzdCBwcm9ibGVtIHlv
dSBccGFyDQp3aWxsIHJ1blxwYXINCiAgICAgaW50byBpcyB0aGF0IEltYWdlTWFnaWNrIG1heSBu
b3QgYmUgYWJsZSB0byBmaW5kIGFueSBvZiBpdHMgIm1vZHVsZXMiLlxwYXINCiAgICAgTW9kdWxl
cyBhcmUgYWxsIHRoZSBJTV9NT0QqLkRMTCBmaWxlcyB5b3Ugc2VlIGluIHRoZSBkaXN0cmlidXRp
b24uXHBhcg0KICAgICBUaGVyZSBpcyBvbmUgb2YgdGhlc2UgZm9yIGVhY2ggYW5kIGV2ZXJ5IGZp
bGUgZm9ybWF0IHRoYXQgSW1hZ2VNYWdpY2tccGFyDQogICAgIHN1cHBvcnRzLiBUaGlzIGVudmly
b25tZW50IHZhcmlhYmxlIHRlbGxzIHRoZSBzeXN0ZW0gd2VyZSB0byBsb29rIGZvclxwYXINCiAg
ICAgdGhlc2UgRExMJ3MuICBUaGUgY29tcGlsZWQgaW4gImRlZmF1bHQiIGlzICJleGVjdXRpb24g
cGF0aCIgLSB3aGljaCBccGFyDQpzYXlzXHBhcg0KICAgICAtIGxvb2sgaW4gdGhlIHNhbWUgcGxh
Y2UgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyAiaW4iLiAgSWYgeW91XHBhcg0KICAg
ICBhcmUgcnVubmluZyBmcm9tIHNvbWV3aGVyZSBvdGhlciB0aGVuICJiaW4iIC0gdGhpcyB3aWxs
IG5vIGxvbmdlciB3b3JrXHBhcg0KICAgICBhbmQgeW91IG11c3QgdXNlIHRoaXMgdmFyaWFibGUu
ICBJZiB5b3UgZWxlY3QgdG8gbGVhdmUgdGhlIG1vZHVsZXMgaW5ccGFyDQogICAgIHRoZSBzYW1l
IHBsYWNlIGFzIHRoZSBFWEUncyAoYSBnb29kIGlkZWEpLCB5b3UgY2FuIHNpbXBseSBzZXQgdGhp
cyB0b1xwYXINCiAgICAgdGhlIHNhbWUgcGxhY2UgYXMgeW91IGRpZCB0aGUgUEFUSCB2YXJpYWJs
ZS4gSW4gbXkgY2FzZTpccGFyDQpccGFyDQogICAgICAgIEQ6XFxcXEltYWdlTWFnaWNrXFxjb2Rl
cnNccGFyDQpccGFyDQogICAgIFRoaXMgaXMgYWxzbyB0aGUgcGxhY2Ugd2VyZSBJbWFnZU1hZ2lj
ayBleHBlY3RzIHRvIGZpbmQgdGhlIFxwYXINCmNvbmZpZ3VyYXRpb25ccGFyDQogICAgIGZpbGVz
LCAqLnhtbCwgaW5jbHVkaW5nIG1vZHVsZS54bWwsIHR5cGUueG1sLCBldGMuXHBhcg0KXHBhcg0K
ICAgICBPbmUgY29vbCB0aGluZyBhYm91dCB0aGUgbW9kdWxlcyBidWlsZCBvZiBJbWFnZU1hZ2lj
ayBpcyB0aGF0IHlvdSBjYW5ccGFyDQogICAgIG5vdyBsZWF2ZSBvdXQgZmlsZSBmb3JtYXRzIGFu
ZCBsaWdodGVuIHlvdSBsb2FkLiAgSWYgYWxsIHlvdSBldmVyIFxwYXINCm5lZWQgaXNccGFyDQog
ICAgIEdJRiBhbmQgSlBFRywgc2ltcGx5IGRyb3AgYWxsIHRoZSBvdGhlciBETEwncyBpbnRvIHRo
ZSBsb2NhbCB0cmFzaFxwYXINCiAgICAgY2FuIGFuZCBnZXQgb24gd2l0aCB5b3VyIGxpZmUuICBI
b3dldmVyLCBhbHdheXMga2VlcCB0aGUgInhjIiBmb3JtYXQsXHBhcg0KICAgICBzaW5jZSBJbWFn
ZU1hZ2ljayB1c2VzIGl0IGZvciBpbnRlcm5hbCBwdXJwb3Nlcy5ccGFyDQpccGFyDQogICBBbHNv
LiBZb3UgY2FuIGVsZWN0IHRvIGNoYW5nZXMgdGhlc2UgdGhpbmdzIHRoZSBnb29kIG9sZCAiaGFy
ZC1jb2RlZCJccGFyDQogICB3YXkuIFR3byAjZGVmaW5lcyBhcmUgYXBwbGljYWJsZS5ccGFyDQpc
cGFyDQogICBkZWZpbmVzLmggaGFzXHBhcg0KXHBhcg0KICAgICAgICNkZWZpbmUgTWFnaWNrQ29u
ZmlndXJlUGF0aCAgImM6XFxcXEltYWdlTWFnaWNrXFxcXCJccGFyDQpccGFyDQogICBUbyB2aWV3
IGFueSBpbWFnZSBpbiBhIE1pY3Jvc29mdCB3aW5kb3csIHR5cGVccGFyDQpccGFyDQogICAgICAg
Y29udmVydCBpbWFnZS5leHQgd2luOlxwYXINClxwYXINCiAgIE1ha2Ugc3VyZSBHaG9zdHNjcmlw
dCBpcyBpbnN0YWxsZWQsIG90aGVyd2lzZSwgeW91IHdpbGwgYmUgdW5hYmxlIHRvXHBhcg0KICAg
Y29udmVydCBvciB2aWV3IGEgUG9zdHNjcmlwdCBkb2N1bWVudCwgYW5kIFBvc3RzY3JpcHQgc3Rh
bmRhcmQgZm9udHMgd2lsbFxwYXINCiAgIG5vdCBiZSBhdmFpbGFibGUuXHBhcg0KXHBhcg0KICAg
WW91IG1heSB1c2UgYW55IHN0YW5kYXJkIHdlYiBicm93c2VyIChlLmcuIEludGVybmV0IEV4cGxv
cmVyKSB0byBicm93c2VccGFyDQogICB0aGUgSW1hZ2VNYWdpY2sgZG9jdW1lbnRhdGlvbi5ccGFy
DQpccGFyDQogICBUaGUgV2luMksgZXhlY3V0YWJsZXMgd2lsbCB3b3JrIHVuZGVyIFdpbmRvd3Mg
OTguXHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3ViamVjdCBIRUxQIG9y
IFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbi5jaH19AGlsOiApOwpJJ2Q
----boundary-LibPST-iamunique-2094585459_-_---
Received on Wed Apr 06 2005 - 03:07:57 UTC