Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Source Generators: RegisterReferenceSourceOutput #57589

Open
chsienki opened this issue Nov 4, 2021 · 9 comments
Open

Source Generators: RegisterReferenceSourceOutput #57589

chsienki opened this issue Nov 4, 2021 · 9 comments
Assignees
Labels
api-needs-work API needs work before it is approved, it is NOT ready for implementation Area-Compilers Concept-API This issue involves adding, removing, clarification, or modification of an API. Feature Request New Feature - Source Generators Source Generators
Milestone

Comments

@chsienki
Copy link
Contributor

chsienki commented Nov 4, 2021

Background and Motivation

Today we have a source generator API called RegisterImplementationOnlyOutput which allows a generator to indicate that it is generating source code that does not impact the design time experience (i.e. intellisense). Certain hosts, such as the IDE may choose not to run these types of outputs as it knows they are not required.

This works well for things which are truly non visible (such as regex optimization), but cannot be used as soon as the generator adds any code that the user can reference. This proposal creates a 'mirror' API that allows a generator to provide a 'reference' implementation without any actual generated method body.

For generators that spend most of their time introspecting code will not much benefit from these APIs, but any generator where generation is expensive, then this should provide a good balance between speed and IDE correctness.

Proposed API

namespace Microsoft.CodeAnalysis
{
     public readonly struct IncrementalGeneratorInitializationContext
     {
+        public void RegisterReferenceSourceOutput<TSource>(IncrementalValuesProvider<TSource> source, Action<SourceProductionContext, TSource> action);
     }

Usage Examples

[Generator]
internal sealed class Generator : IIncrementalGenerator
{
    public void Initialize(IncrementalGeneratorInitializationContext context)
    {
        var content = context.AdditionalTextsProvider.Select((a, _) => /*extract something of intrest*/);

        context.RegisterImplementationSourceOutput(content, (spc, content) =>
        {
            // do the full, expensive generation
        });

        context.RegisterReferenceSourceOutput(content, (spc, content) =>
        {
            // just build a cheap, method decl skeleton for intelliense etc.
        });
    } 
}

Risks

This is a natural mirror to our already implemented API, but all new output APIs run the risk of making it less clear which to use in which situation.

@chsienki chsienki added Concept-API This issue involves adding, removing, clarification, or modification of an API. Feature Request New Feature - Source Generators Source Generators labels Nov 4, 2021
@chsienki chsienki self-assigned this Nov 4, 2021
@dotnet-issue-labeler dotnet-issue-labeler bot added Area-Compilers untriaged Issues and PRs which have not yet been triaged by a lead labels Nov 4, 2021
@chsienki chsienki added the api-ready-for-review API is ready for review, it is NOT ready for implementation label Nov 4, 2021
@jaredpar jaredpar added this to the 17.1 milestone Nov 8, 2021
@jaredpar jaredpar removed the untriaged Issues and PRs which have not yet been triaged by a lead label Nov 8, 2021
@Sergio0694
Copy link
Contributor

I'm very interested in this feature. In ComputeSharp, I'm adding the ability to annotate shaders so that they can be compiled at build-time and directly embedded into the consuming assembly. I have prototyped this last week (code here), and it works great, except that it's really expensive to do. Basically the generator needs to do is:

  • Receive the input processed HLSL source to compile
  • Extract the embedded dxcompiler.dll and dxil.dll libraries into %TEMP%
  • Load them up (P/Invoking LoadLibraryW)
  • Actually invoke the DirectX compiler and compile the shader (this in particular is very expensive)
  • Get the bytecode and create the actual array expression to embed the bytes as literal byte data

The final result looks like this:

[global::System.CodeDom.Compiler.GeneratedCode("ComputeSharp.SourceGenerators.IShaderGenerator", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCode]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::System.Obsolete("This method is not intended to be used directly by user code")]
readonly bool global::ComputeSharp.__Internals.IShader.TryGetBytecode(int threadsX, int threadsY, int threadsZ, out global::System.ReadOnlySpan<byte> bytecode)
{
    if (threadsX == 8 && threadsY == 8 && threadsZ == 1)
    {
        bytecode = new byte[] { 0x44, 0x58, 0x42, 0x43, 0x86, 0x03, 0xFA, 0x1D, 0x89, 0xA1, 0x9E, 0x44, 0x04, 0x05, 0x94, 0xC1, 0xE9, 0xC7, 0xCB, 0x69, 0x01, 0x00, 0x00, 0x00, 0x04, 0x3A, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x24, 0x09, 0x00, 0x00, 0x40, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x47, 0x31, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x53, 0x56, 0x30, 0xA8, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4C, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xE8, 0x07, 0x00, 0x00, 0x42, 0x43, 0xC0, 0xDE, 0x21, 0x0C, 0x00, 0x00, 0xF7, 0x01, 0x00, 0x00, 0x0B, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xC8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0C, 0x25, 0x05, 0x08, 0x19, 0x1E, 0x04, 0x8B, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0B, 0x42, 0xC4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4B, 0x0A, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xA5, 0x00, 0x19, 0x32, 0x42, 0xE4, 0x48, 0x0E, 0x90, 0x11, 0x23, 0xC4, 0x50, 0x41, 0x51, 0x81, 0x8C, 0xE1, 0x83, 0xE5, 0x8A, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1B, 0x8C, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x40, 0x02, 0xA8, 0x0D, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x20, 0x6D, 0x30, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x09, 0xA8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4C, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xA4, 0x84, 0x04, 0x13, 0x23, 0xE3, 0x84, 0xA1, 0x90, 0x14, 0x12, 0x4C, 0x8C, 0x8C, 0x0B, 0x84, 0xC4, 0x4C, 0x10, 0xAC, 0xC1, 0x08, 0x40, 0x09, 0x00, 0x0A, 0xE6, 0x08, 0xC0, 0xA0, 0x0C, 0xC3, 0x30, 0x10, 0x31, 0x03, 0x50, 0x06, 0x63, 0x30, 0xE8, 0x28, 0x84, 0x31, 0x18, 0x06, 0x25, 0x05, 0x31, 0x06, 0xC3, 0x30, 0x0C, 0xC3, 0xA0, 0x65, 0x8E, 0x00, 0xA1, 0xE6, 0x9E, 0xE1, 0xF2, 0x27, 0xEC, 0x21, 0x24, 0x3F, 0x04, 0x9A, 0x61, 0x21, 0x50, 0xE0, 0x94, 0x05, 0x18, 0x9E, 0x61, 0x18, 0x0C, 0xC3, 0x30, 0x1A, 0x82, 0x6E, 0x1A, 0x2E, 0x7F, 0xC2, 0x1E, 0x42, 0xF2, 0x57, 0x42, 0x5A, 0x89, 0xC9, 0x2F, 0x6E, 0x1B, 0x15, 0x86, 0x61, 0x18, 0x43, 0x61, 0xA4, 0xE1, 0x79, 0x0C, 0xC3, 0x30, 0x86, 0x61, 0x30, 0x68, 0x2A, 0x86, 0x31, 0x18, 0x86, 0x61, 0x50, 0x75, 0xD4, 0x70, 0xF9, 0x13, 0xF6, 0x10, 0x92, 0xCF, 0x6D, 0x54, 0xB1, 0x12, 0x93, 0x5F, 0xDC, 0x36, 0x22, 0x0C, 0xC3, 0x30, 0x0A, 0x71, 0x0D, 0xCF, 0x40, 0xD8, 0x51, 0xC3, 0xE5, 0x4F, 0xD8, 0x43, 0x48, 0x3E, 0xB7, 0x51, 0xC5, 0x4A, 0x4C, 0x3E, 0x72, 0xDB, 0x88, 0x18, 0x86, 0x61, 0x28, 0x84, 0x36, 0x3C, 0x03, 0x6D, 0x73, 0x04, 0x41, 0x31, 0x9E, 0xA1, 0x19, 0x86, 0x8E, 0xBC, 0x81, 0x80, 0x61, 0x04, 0xC2, 0x98, 0xA9, 0x0D, 0xC6, 0x81, 0x1D, 0xC2, 0x61, 0x1E, 0xE6, 0xC1, 0x0D, 0x68, 0xA1, 0x1C, 0xF0, 0x81, 0x1E, 0xEA, 0x41, 0x1E, 0xCA, 0x41, 0x0E, 0x48, 0x81, 0x0F, 0xEC, 0xA1, 0x1C, 0xC6, 0x81, 0x1E, 0xDE, 0x41, 0x1E, 0xF8, 0xC0, 0x1C, 0xD8, 0xE1, 0x1D, 0xC2, 0x81, 0x1E, 0xD8, 0x00, 0x0C, 0xE8, 0xC0, 0x0F, 0xC0, 0xC0, 0x0F, 0xF4, 0x40, 0x0F, 0xDA, 0x21, 0x1D, 0xE0, 0x61, 0x1E, 0x7E, 0x81, 0x1E, 0xF2, 0x01, 0x1E, 0xCA, 0x01, 0x05, 0xC3, 0x4C, 0x62, 0x30, 0x0E, 0xEC, 0x10, 0x0E, 0xF3, 0x30, 0x0F, 0x6E, 0x40, 0x0B, 0xE5, 0x80, 0x0F, 0xF4, 0x50, 0x0F, 0xF2, 0x50, 0x0E, 0x72, 0x40, 0x0A, 0x7C, 0x60, 0x0F, 0xE5, 0x30, 0x0E, 0xF4, 0xF0, 0x0E, 0xF2, 0xC0, 0x07, 0xE6, 0xC0, 0x0E, 0xEF, 0x10, 0x0E, 0xF4, 0xC0, 0x06, 0x60, 0x40, 0x07, 0x7E, 0x00, 0x06, 0x7E, 0x80, 0x84, 0x50, 0xA4, 0x71, 0x26, 0x32, 0x18, 0x07, 0x76, 0x08, 0x87, 0x79, 0x98, 0x07, 0x37, 0x90, 0x85, 0x5B, 0xA0, 0x85, 0x72, 0xC0, 0x07, 0x7A, 0xA8, 0x07, 0x79, 0x28, 0x07, 0x39, 0x20, 0x05, 0x3E, 0xB0, 0x87, 0x72, 0x18, 0x07, 0x7A, 0x78, 0x07, 0x79, 0xE0, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7A, 0x60, 0x03, 0x30, 0xA0, 0x03, 0x3F, 0x00, 0x03, 0x3F, 0x40, 0x41, 0x48, 0xE5, 0x05, 0x3F, 0x1A, 0x86, 0xC1, 0xA0, 0xF3, 0x26, 0x69, 0x8A, 0x28, 0x61, 0xF2, 0x59, 0x80, 0x79, 0x16, 0x22, 0x62, 0x27, 0x60, 0x22, 0x50, 0x30, 0x50, 0x0A, 0x00, 0x13, 0x14, 0x72, 0xC0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xC0, 0x87, 0x0D, 0xAF, 0x50, 0x0E, 0x6D, 0xD0, 0x0E, 0x7A, 0x50, 0x0E, 0x6D, 0x00, 0x0F, 0x7A, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x71, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x78, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x71, 0x60, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xD0, 0x06, 0xE9, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x76, 0x40, 0x07, 0x7A, 0x60, 0x07, 0x74, 0xD0, 0x06, 0xE6, 0x10, 0x07, 0x76, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x60, 0x0E, 0x73, 0x20, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xD0, 0x06, 0xE6, 0x60, 0x07, 0x74, 0xA0, 0x07, 0x76, 0x40, 0x07, 0x6D, 0xE0, 0x0E, 0x78, 0xA0, 0x07, 0x71, 0x60, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3C, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x79, 0x0E, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xF2, 0x24, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xE4, 0x59, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xC8, 0x03, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4F, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1E, 0x0C, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3C, 0x1B, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x79, 0x3C, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1E, 0x98, 0x18, 0x19, 0x11, 0x4C, 0x90, 0x8C, 0x09, 0x26, 0x47, 0xC6, 0x04, 0x43, 0x1A, 0x4A, 0x60, 0x04, 0xA0, 0x18, 0x8A, 0xA0, 0x38, 0x0A, 0xA3, 0x0C, 0xCA, 0xA1, 0x14, 0x4A, 0xA2, 0x10, 0x0A, 0xA2, 0x68, 0x2D, 0x4A, 0xF1, 0x82, 0xBA, 0x11, 0x80, 0x1A, 0x20, 0x72, 0x06, 0x80, 0xCC, 0x19, 0x00, 0x3A, 0x67, 0x00, 0x08, 0x9D, 0x01, 0x20, 0x75, 0x06, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x1A, 0x03, 0x4C, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0B, 0x73, 0x3B, 0x03, 0xB1, 0x2B, 0x93, 0x9B, 0x4B, 0x7B, 0x73, 0x03, 0x99, 0x71, 0xB9, 0x01, 0x41, 0xA1, 0x0B, 0x3B, 0x9B, 0x7B, 0x91, 0x2A, 0x62, 0x2A, 0x0A, 0x9A, 0x2A, 0xFA, 0x9A, 0xB9, 0x81, 0x79, 0x31, 0x4B, 0x73, 0x0B, 0x63, 0x4B, 0xD9, 0x10, 0x04, 0x13, 0x84, 0x61, 0x99, 0x20, 0x0C, 0xCC, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0x61, 0x6C, 0x6E, 0x82, 0x30, 0x34, 0x1B, 0x86, 0x03, 0x21, 0x26, 0x08, 0x64, 0xB0, 0xF1, 0xA0, 0x2B, 0xC3, 0xA3, 0xAB, 0x93, 0x2B, 0x9B, 0x20, 0x0C, 0xCE, 0x04, 0x61, 0x78, 0x36, 0x08, 0x44, 0xB3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06, 0x86, 0x70, 0x36, 0x04, 0xCF, 0x04, 0xC1, 0x0C, 0x38, 0x3E, 0x5F, 0x5F, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x13, 0x84, 0x2E, 0xDB, 0xB0, 0x10, 0x91, 0x44, 0x10, 0x03, 0x33, 0x4D, 0x93, 0xB3, 0x21, 0xA0, 0x26, 0x08, 0x68, 0xE0, 0x31, 0xF8, 0x9A, 0x20, 0x0C, 0xD0, 0x06, 0x84, 0xB0, 0x2E, 0x82, 0x18, 0x30, 0x60, 0x43, 0x90, 0x4D, 0x10, 0xD4, 0xE0, 0x63, 0xF2, 0xF5, 0x35, 0x17, 0xD6, 0x06, 0xC7, 0x56, 0x26, 0xB7, 0x01, 0x21, 0x36, 0x8E, 0x20, 0x06, 0x02, 0xD8, 0x10, 0x74, 0x1B, 0x08, 0xA8, 0xD2, 0xBC, 0x09, 0xC2, 0x19, 0x74, 0x1C, 0xBE, 0xBE, 0xF0, 0x26, 0x08, 0x43, 0x34, 0x41, 0x18, 0xA4, 0x09, 0xC2, 0x30, 0x4D, 0x10, 0x06, 0x6A, 0x82, 0xD0, 0x69, 0x1B, 0x10, 0x24, 0x0C, 0xC4, 0x80, 0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0xE0, 0xF0, 0xF5, 0x95, 0x37, 0x41, 0x18, 0xAA, 0x0D, 0x08, 0x82, 0x06, 0x62, 0x90, 0x06, 0x63, 0x40, 0x06, 0x65, 0x60, 0x06, 0x24, 0xE8, 0xD2, 0xDA, 0xCA, 0x26, 0x08, 0x83, 0xB5, 0x01, 0x41, 0xD6, 0x40, 0x0C, 0xD8, 0x60, 0x0C, 0xCA, 0xA0, 0x0C, 0xCC, 0x60, 0x03, 0x81, 0x9D, 0x81, 0x1A, 0xB4, 0xC1, 0x86, 0x81, 0x00, 0x03, 0x37, 0x98, 0x20, 0x08, 0xC0, 0x06, 0x60, 0xC3, 0x40, 0xC4, 0x41, 0x1C, 0x6C, 0x08, 0xE4, 0x60, 0xC3, 0x30, 0xC0, 0xC1, 0x1C, 0xF0, 0x28, 0xC2, 0x2B, 0x1B, 0xAB, 0xA3, 0x2B, 0xDB, 0x30, 0xB0, 0x01, 0x1B, 0x0C, 0x1B, 0x84, 0x34, 0xB0, 0x83, 0x0D, 0x05, 0x1C, 0xD4, 0x01, 0xF0, 0xDD, 0x01, 0x11, 0x31, 0xB9, 0x30, 0xB7, 0x31, 0xB4, 0xB2, 0x39, 0x1A, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x73, 0x13, 0x84, 0xE1, 0x62, 0x91, 0xE6, 0x36, 0x47, 0x37, 0x37, 0x41, 0x18, 0x30, 0x12, 0x69, 0x6E, 0x74, 0x73, 0x44, 0xE8, 0xCA, 0xF0, 0xBE, 0xDC, 0xDE, 0xE4, 0xDA, 0x98, 0xD0, 0x95, 0xE1, 0x7D, 0xCD, 0xD1, 0xBD, 0xC9, 0x95, 0xB1, 0xA8, 0x4B, 0x73, 0xA3, 0x9B, 0xDB, 0xE0, 0xE4, 0x01, 0xA3, 0x07, 0x7B, 0xC0, 0x07, 0x7D, 0xE0, 0x07, 0x64, 0xF0, 0x07, 0x0C, 0x28, 0x0C, 0xA1, 0x30, 0x54, 0x61, 0x63, 0xB3, 0x6B, 0x73, 0x49, 0x23, 0x2B, 0x73, 0xA3, 0x9B, 0x12, 0x04, 0x55, 0xC8, 0xF0, 0x5C, 0xEC, 0xCA, 0xE4, 0xE6, 0xD2, 0xDE, 0xDC, 0xA6, 0x04, 0x44, 0x13, 0x32, 0x3C, 0x17, 0xBB, 0x30, 0x36, 0xBB, 0x32, 0xB9, 0x29, 0x41, 0x51, 0x87, 0x0C, 0xCF, 0x65, 0x0E, 0x2D, 0x8C, 0xAC, 0x4C, 0xAE, 0xE9, 0x8D, 0xAC, 0x8C, 0x6D, 0x4A, 0x80, 0x94, 0x21, 0xC3, 0x73, 0x91, 0x2B, 0x9B, 0x7B, 0xAB, 0x93, 0x1B, 0x2B, 0x9B, 0x9B, 0x12, 0x78, 0x95, 0xC8, 0xF0, 0x5C, 0xE8, 0xF2, 0xE0, 0xCA, 0x82, 0xDC, 0xDC, 0xDE, 0xE8, 0xC2, 0xE8, 0xD2, 0xDE, 0xDC, 0xE6, 0xA6, 0x08, 0x6E, 0x30, 0x07, 0x75, 0xC8, 0xF0, 0x5C, 0xCA, 0xDC, 0xE8, 0xE4, 0xF2, 0xA0, 0xDE, 0xD2, 0xDC, 0xE8, 0xE6, 0xA6, 0x04, 0x77, 0xD0, 0x85, 0x0C, 0xCF, 0x65, 0xEC, 0xAD, 0xCE, 0x8D, 0xAE, 0x4C, 0x6E, 0x6E, 0x4A, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1C, 0xC4, 0xE1, 0x1C, 0x66, 0x14, 0x01, 0x3D, 0x88, 0x43, 0x38, 0x84, 0xC3, 0x8C, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0C, 0xE6, 0x00, 0x0F, 0xED, 0x10, 0x0E, 0xF4, 0x80, 0x0E, 0x33, 0x0C, 0x42, 0x1E, 0xC2, 0xC1, 0x1D, 0xCE, 0xA1, 0x1C, 0x66, 0x30, 0x05, 0x3D, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1B, 0xCC, 0x03, 0x3D, 0xC8, 0x43, 0x3D, 0x8C, 0x03, 0x3D, 0xCC, 0x78, 0x8C, 0x74, 0x70, 0x07, 0x7B, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7A, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xCC, 0x11, 0x0E, 0xEC, 0x90, 0x0E, 0xE1, 0x30, 0x0F, 0x6E, 0x30, 0x0F, 0xE3, 0xF0, 0x0E, 0xF0, 0x50, 0x0E, 0x33, 0x10, 0xC4, 0x1D, 0xDE, 0x21, 0x1C, 0xD8, 0x21, 0x1D, 0xC2, 0x61, 0x1E, 0x66, 0x30, 0x89, 0x3B, 0xBC, 0x83, 0x3B, 0xD0, 0x43, 0x39, 0xB4, 0x03, 0x3C, 0xBC, 0x83, 0x3C, 0x84, 0x03, 0x3B, 0xCC, 0xF0, 0x14, 0x76, 0x60, 0x07, 0x7B, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xF8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5F, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2C, 0xEE, 0xF0, 0x0E, 0xEE, 0xE0, 0x0E, 0xF5, 0xC0, 0x0E, 0xEC, 0x30, 0x03, 0x62, 0xC8, 0xA1, 0x1C, 0xE4, 0xA1, 0x1C, 0xCC, 0xA1, 0x1C, 0xE4, 0xA1, 0x1C, 0xDC, 0x61, 0x1C, 0xCA, 0x21, 0x1C, 0xC4, 0x81, 0x1D, 0xCA, 0x61, 0x06, 0xD6, 0x90, 0x43, 0x39, 0xC8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xC8, 0x43, 0x39, 0xB8, 0xC3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3B, 0x94, 0xC3, 0x2F, 0xBC, 0x83, 0x3C, 0xFC, 0x82, 0x3B, 0xD4, 0x03, 0x3B, 0xB0, 0xC3, 0x0C, 0xC4, 0x21, 0x07, 0x7C, 0x70, 0x03, 0x7A, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xD1, 0x43, 0x0E, 0xF8, 0xE0, 0x06, 0xE4, 0x20, 0x0E, 0xE7, 0xE0, 0x06, 0xF6, 0x10, 0x0E, 0xF2, 0xC0, 0x0E, 0xE1, 0x90, 0x0F, 0xEF, 0x50, 0x0F, 0xF4, 0x30, 0x83, 0x81, 0xC8, 0x01, 0x1F, 0xDC, 0x40, 0x1C, 0xE4, 0xA1, 0x1C, 0xC2, 0x61, 0x1D, 0xDC, 0x40, 0x1C, 0xE4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x06, 0x70, 0x78, 0x17, 0x21, 0x50, 0x13, 0x61, 0x03, 0xD0, 0x70, 0xF9, 0xCE, 0xE3, 0x07, 0x48, 0x03, 0x44, 0x98, 0x5F, 0xDC, 0xB6, 0x21, 0x6C, 0xC3, 0xE5, 0x3B, 0x8F, 0x2F, 0x04, 0x54, 0x51, 0x10, 0x51, 0xE9, 0x00, 0x43, 0x49, 0x18, 0x80, 0x80, 0xF9, 0xC5, 0x6D, 0x5B, 0xC2, 0x36, 0x5C, 0xBE, 0xF3, 0xF8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0E, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8F, 0xDC, 0xB6, 0x29, 0x48, 0xC3, 0xE5, 0x3B, 0x8F, 0x2F, 0x44, 0x04, 0x30, 0x11, 0x21, 0xD0, 0x0C, 0x0B, 0x61, 0x07, 0xCE, 0x70, 0xF9, 0xCE, 0xE3, 0x0F, 0xCE, 0x64, 0xFB, 0xC5, 0x6D, 0x1B, 0x81, 0x33, 0x5C, 0xBE, 0xF3, 0xF8, 0x83, 0x33, 0xDD, 0x7E, 0x71, 0xDB, 0x66, 0x50, 0x0D, 0x97, 0xEF, 0x3C, 0xBE, 0x04, 0x30, 0xCF, 0x42, 0x94, 0x44, 0x45, 0x2C, 0x7E, 0x71, 0xDB, 0x56, 0x60, 0x0D, 0x97, 0xEF, 0x3C, 0xFE, 0x44, 0x5C, 0x13, 0x15, 0x11, 0xEC, 0xE4, 0x44, 0x84, 0x5F, 0xDC, 0xB6, 0x05, 0x48, 0xC3, 0xE5, 0x3B, 0x8F, 0x3F, 0x1D, 0x11, 0x01, 0x0C, 0xE2, 0xE0, 0x23, 0xB7, 0x6D, 0x02, 0xCF, 0x70, 0xF9, 0xCE, 0xE3, 0x53, 0x0D, 0x10, 0x61, 0x7E, 0x71, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x4C, 0xCE, 0xC3, 0xA8, 0x2D, 0x8F, 0x11, 0xAE, 0xF3, 0xBC, 0x56, 0xC8, 0x9E, 0xA9, 0x69, 0x44, 0x58, 0x49, 0x4C, 0xBC, 0x30, 0x00, 0x00, 0x60, 0x00, 0x05, 0x00, 0x2F, 0x0C, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4C, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xA4, 0x30, 0x00, 0x00, 0x42, 0x43, 0xC0, 0xDE, 0x21, 0x0C, 0x00, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x0B, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xC8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0C, 0x25, 0x05, 0x08, 0x19, 0x1E, 0x04, 0x8B, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0B, 0x42, 0xC4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4B, 0x0A, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xA5, 0x00, 0x19, 0x32, 0x42, 0xE4, 0x48, 0x0E, 0x90, 0x11, 0x23, 0xC4, 0x50, 0x41, 0x51, 0x81, 0x8C, 0xE1, 0x83, 0xE5, 0x8A, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1B, 0x8C, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x40, 0x02, 0xA8, 0x0D, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x20, 0x6D, 0x30, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x09, 0xA8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4C, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xA4, 0x84, 0x04, 0x13, 0x23, 0xE3, 0x84, 0xA1, 0x90, 0x14, 0x12, 0x4C, 0x8C, 0x8C, 0x0B, 0x84, 0xC4, 0x4C, 0x10, 0xB0, 0xC1, 0x08, 0x40, 0x09, 0x00, 0x0A, 0xE6, 0x08, 0xC0, 0xA0, 0x0C, 0xC3, 0x30, 0x10, 0x31, 0x03, 0x50, 0x06, 0x63, 0x30, 0xE8, 0x28, 0x84, 0x31, 0x18, 0x06, 0x25, 0x05, 0x31, 0x06, 0xC3, 0x30, 0x0C, 0xC3, 0xA0, 0x65, 0x8E, 0x00, 0xA1, 0xE6, 0x9E, 0xE1, 0xF2, 0x27, 0xEC, 0x21, 0x24, 0x3F, 0x04, 0x9A, 0x61, 0x21, 0x50, 0xE0, 0x94, 0x05, 0x18, 0x9E, 0x61, 0x18, 0x0C, 0xC3, 0x30, 0x1A, 0x82, 0x6E, 0x1A, 0x2E, 0x7F, 0xC2, 0x1E, 0x42, 0xF2, 0x57, 0x42, 0x5A, 0x89, 0xC9, 0x2F, 0x6E, 0x1B, 0x15, 0x86, 0x61, 0x18, 0x43, 0x61, 0xA4, 0xE1, 0x79, 0x0C, 0xC3, 0x30, 0x86, 0x61, 0x30, 0x68, 0x2A, 0x86, 0x31, 0x18, 0x86, 0x61, 0x50, 0x75, 0xD4, 0x70, 0xF9, 0x13, 0xF6, 0x10, 0x92, 0xCF, 0x6D, 0x54, 0xB1, 0x12, 0x93, 0x5F, 0xDC, 0x36, 0x22, 0x0C, 0xC3, 0x30, 0x0A, 0x71, 0x0D, 0xCF, 0x40, 0xD8, 0x51, 0xC3, 0xE5, 0x4F, 0xD8, 0x43, 0x48, 0x3E, 0xB7, 0x51, 0xC5, 0x4A, 0x4C, 0x3E, 0x72, 0xDB, 0x88, 0x18, 0x86, 0x61, 0x28, 0x84, 0x36, 0x3C, 0x03, 0x6D, 0x73, 0x04, 0x41, 0x31, 0x9E, 0xA1, 0x19, 0x86, 0x8E, 0xBC, 0x81, 0x80, 0x61, 0x04, 0xC2, 0x98, 0xA9, 0x0D, 0xC6, 0x81, 0x1D, 0xC2, 0x61, 0x1E, 0xE6, 0xC1, 0x0D, 0x68, 0xA1, 0x1C, 0xF0, 0x81, 0x1E, 0xEA, 0x41, 0x1E, 0xCA, 0x41, 0x0E, 0x48, 0x81, 0x0F, 0xEC, 0xA1, 0x1C, 0xC6, 0x81, 0x1E, 0xDE, 0x41, 0x1E, 0xF8, 0xC0, 0x1C, 0xD8, 0xE1, 0x1D, 0xC2, 0x81, 0x1E, 0xD8, 0x00, 0x0C, 0xE8, 0xC0, 0x0F, 0xC0, 0xC0, 0x0F, 0xF4, 0x40, 0x0F, 0xDA, 0x21, 0x1D, 0xE0, 0x61, 0x1E, 0x7E, 0x81, 0x1E, 0xF2, 0x01, 0x1E, 0xCA, 0x01, 0x05, 0xC3, 0x4C, 0x62, 0x30, 0x0E, 0xEC, 0x10, 0x0E, 0xF3, 0x30, 0x0F, 0x6E, 0x40, 0x0B, 0xE5, 0x80, 0x0F, 0xF4, 0x50, 0x0F, 0xF2, 0x50, 0x0E, 0x72, 0x40, 0x0A, 0x7C, 0x60, 0x0F, 0xE5, 0x30, 0x0E, 0xF4, 0xF0, 0x0E, 0xF2, 0xC0, 0x07, 0xE6, 0xC0, 0x0E, 0xEF, 0x10, 0x0E, 0xF4, 0xC0, 0x06, 0x60, 0x40, 0x07, 0x7E, 0x00, 0x06, 0x7E, 0x80, 0x84, 0x50, 0xA4, 0x71, 0x26, 0x32, 0x18, 0x07, 0x76, 0x08, 0x87, 0x79, 0x98, 0x07, 0x37, 0x90, 0x85, 0x5B, 0xA0, 0x85, 0x72, 0xC0, 0x07, 0x7A, 0xA8, 0x07, 0x79, 0x28, 0x07, 0x39, 0x20, 0x05, 0x3E, 0xB0, 0x87, 0x72, 0x18, 0x07, 0x7A, 0x78, 0x07, 0x79, 0xE0, 0x03, 0x73, 0x60, 0x87, 0x77, 0x08, 0x07, 0x7A, 0x60, 0x03, 0x30, 0xA0, 0x03, 0x3F, 0x00, 0x03, 0x3F, 0x40, 0x41, 0x48, 0xE5, 0x05, 0x3F, 0x1A, 0x86, 0xC1, 0xA0, 0xF3, 0x26, 0x69, 0x8A, 0x28, 0x61, 0xF2, 0x59, 0x80, 0x79, 0x16, 0x22, 0x62, 0x27, 0x60, 0x22, 0x50, 0x30, 0x50, 0x3A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xC0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xC0, 0x87, 0x0D, 0xAF, 0x50, 0x0E, 0x6D, 0xD0, 0x0E, 0x7A, 0x50, 0x0E, 0x6D, 0x00, 0x0F, 0x7A, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x71, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x78, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x71, 0x60, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xD0, 0x06, 0xE9, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x90, 0x0E, 0x76, 0x40, 0x07, 0x7A, 0x60, 0x07, 0x74, 0xD0, 0x06, 0xE6, 0x10, 0x07, 0x76, 0xA0, 0x07, 0x73, 0x20, 0x07, 0x6D, 0x60, 0x0E, 0x73, 0x20, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xD0, 0x06, 0xE6, 0x60, 0x07, 0x74, 0xA0, 0x07, 0x76, 0x40, 0x07, 0x6D, 0xE0, 0x0E, 0x78, 0xA0, 0x07, 0x71, 0x60, 0x07, 0x7A, 0x30, 0x07, 0x72, 0xA0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3C, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x79, 0x0E, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xF2, 0x24, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xE4, 0x59, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xC8, 0x03, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x90, 0x67, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x4F, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1E, 0x0C, 0x08, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3C, 0x1B, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x79, 0x3C, 0x20, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x02, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x32, 0x1E, 0x98, 0x14, 0x19, 0x11, 0x4C, 0x90, 0x8C, 0x09, 0x26, 0x47, 0xC6, 0x04, 0x43, 0x1A, 0x4A, 0x60, 0x04, 0xA0, 0x18, 0x8A, 0xA0, 0x38, 0x0A, 0xA3, 0x10, 0x0A, 0x82, 0xBA, 0x11, 0x00, 0x22, 0x67, 0x00, 0xC8, 0x9C, 0x01, 0x20, 0x74, 0x06, 0x80, 0xD4, 0x19, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x1A, 0x03, 0x4C, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0B, 0x73, 0x3B, 0x03, 0xB1, 0x2B, 0x93, 0x9B, 0x4B, 0x7B, 0x73, 0x03, 0x99, 0x71, 0xB9, 0x01, 0x41, 0xA1, 0x0B, 0x3B, 0x9B, 0x7B, 0x91, 0x2A, 0x62, 0x2A, 0x0A, 0x9A, 0x2A, 0xFA, 0x9A, 0xB9, 0x81, 0x79, 0x31, 0x4B, 0x73, 0x0B, 0x63, 0x4B, 0xD9, 0x10, 0x04, 0x13, 0x84, 0x61, 0x99, 0x20, 0x0C, 0xCC, 0x06, 0x61, 0x20, 0x26, 0x08, 0x43, 0xB3, 0x41, 0x18, 0x0C, 0x0A, 0x63, 0x73, 0x1B, 0x06, 0xC4, 0x20, 0x26, 0x08, 0x64, 0x40, 0x11, 0x98, 0x20, 0x0C, 0xCE, 0x04, 0x61, 0x78, 0x36, 0x08, 0x44, 0xB3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06, 0x86, 0x70, 0x36, 0x04, 0xCF, 0x04, 0xC1, 0x0C, 0xAA, 0x09, 0x42, 0x37, 0x6D, 0x58, 0x88, 0x68, 0x21, 0x88, 0x81, 0x91, 0x24, 0xC9, 0xD9, 0x10, 0x4C, 0x13, 0x04, 0x34, 0xB0, 0x26, 0x08, 0x03, 0xB4, 0x01, 0x21, 0xAA, 0x85, 0x20, 0x06, 0x0B, 0xD8, 0x10, 0x5C, 0x13, 0x04, 0x35, 0xB8, 0x36, 0x20, 0x44, 0xB6, 0x10, 0xC4, 0x40, 0x00, 0x1B, 0x02, 0x6D, 0x03, 0x01, 0x51, 0xD8, 0x36, 0x41, 0x10, 0x00, 0x1E, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x13, 0x84, 0x21, 0x9A, 0x20, 0x0C, 0xD2, 0x86, 0x01, 0x0C, 0xC0, 0x60, 0xD8, 0x20, 0x7C, 0x61, 0xB0, 0xA1, 0xE8, 0x3C, 0x80, 0x13, 0x83, 0x2A, 0x6C, 0x6C, 0x76, 0x6D, 0x2E, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x53, 0x82, 0xA0, 0x0A, 0x19, 0x9E, 0x8B, 0x5D, 0x99, 0xDC, 0x5C, 0xDA, 0x9B, 0xDB, 0x94, 0x80, 0x68, 0x42, 0x86, 0xE7, 0x62, 0x17, 0xC6, 0x66, 0x57, 0x26, 0x37, 0x25, 0x30, 0xEA, 0x90, 0xE1, 0xB9, 0xCC, 0xA1, 0x85, 0x91, 0x95, 0xC9, 0x35, 0xBD, 0x91, 0x95, 0xB1, 0x4D, 0x09, 0x90, 0x32, 0x64, 0x78, 0x2E, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x82, 0xAD, 0x0E, 0x19, 0x9E, 0x4B, 0x99, 0x1B, 0x9D, 0x5C, 0x1E, 0xD4, 0x5B, 0x9A, 0x1B, 0xDD, 0xDC, 0x94, 0x40, 0x0C, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1C, 0xC4, 0xE1, 0x1C, 0x66, 0x14, 0x01, 0x3D, 0x88, 0x43, 0x38, 0x84, 0xC3, 0x8C, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0C, 0xE6, 0x00, 0x0F, 0xED, 0x10, 0x0E, 0xF4, 0x80, 0x0E, 0x33, 0x0C, 0x42, 0x1E, 0xC2, 0xC1, 0x1D, 0xCE, 0xA1, 0x1C, 0x66, 0x30, 0x05, 0x3D, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1B, 0xCC, 0x03, 0x3D, 0xC8, 0x43, 0x3D, 0x8C, 0x03, 0x3D, 0xCC, 0x78, 0x8C, 0x74, 0x70, 0x07, 0x7B, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7A, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xCC, 0x11, 0x0E, 0xEC, 0x90, 0x0E, 0xE1, 0x30, 0x0F, 0x6E, 0x30, 0x0F, 0xE3, 0xF0, 0x0E, 0xF0, 0x50, 0x0E, 0x33, 0x10, 0xC4, 0x1D, 0xDE, 0x21, 0x1C, 0xD8, 0x21, 0x1D, 0xC2, 0x61, 0x1E, 0x66, 0x30, 0x89, 0x3B, 0xBC, 0x83, 0x3B, 0xD0, 0x43, 0x39, 0xB4, 0x03, 0x3C, 0xBC, 0x83, 0x3C, 0x84, 0x03, 0x3B, 0xCC, 0xF0, 0x14, 0x76, 0x60, 0x07, 0x7B, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xF8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5F, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2C, 0xEE, 0xF0, 0x0E, 0xEE, 0xE0, 0x0E, 0xF5, 0xC0, 0x0E, 0xEC, 0x30, 0x03, 0x62, 0xC8, 0xA1, 0x1C, 0xE4, 0xA1, 0x1C, 0xCC, 0xA1, 0x1C, 0xE4, 0xA1, 0x1C, 0xDC, 0x61, 0x1C, 0xCA, 0x21, 0x1C, 0xC4, 0x81, 0x1D, 0xCA, 0x61, 0x06, 0xD6, 0x90, 0x43, 0x39, 0xC8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xC8, 0x43, 0x39, 0xB8, 0xC3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3B, 0x94, 0xC3, 0x2F, 0xBC, 0x83, 0x3C, 0xFC, 0x82, 0x3B, 0xD4, 0x03, 0x3B, 0xB0, 0xC3, 0x0C, 0xC4, 0x21, 0x07, 0x7C, 0x70, 0x03, 0x7A, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xD1, 0x43, 0x0E, 0xF8, 0xE0, 0x06, 0xE4, 0x20, 0x0E, 0xE7, 0xE0, 0x06, 0xF6, 0x10, 0x0E, 0xF2, 0xC0, 0x0E, 0xE1, 0x90, 0x0F, 0xEF, 0x50, 0x0F, 0xF4, 0x30, 0x83, 0x81, 0xC8, 0x01, 0x1F, 0xDC, 0x40, 0x1C, 0xE4, 0xA1, 0x1C, 0xC2, 0x61, 0x1D, 0xDC, 0x40, 0x1C, 0xE4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x06, 0x70, 0x78, 0x17, 0x21, 0x50, 0x13, 0x61, 0x03, 0xD0, 0x70, 0xF9, 0xCE, 0xE3, 0x07, 0x48, 0x03, 0x44, 0x98, 0x5F, 0xDC, 0xB6, 0x21, 0x6C, 0xC3, 0xE5, 0x3B, 0x8F, 0x2F, 0x04, 0x54, 0x51, 0x10, 0x51, 0xE9, 0x00, 0x43, 0x49, 0x18, 0x80, 0x80, 0xF9, 0xC5, 0x6D, 0x5B, 0xC2, 0x36, 0x5C, 0xBE, 0xF3, 0xF8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0E, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x8F, 0xDC, 0xB6, 0x29, 0x48, 0xC3, 0xE5, 0x3B, 0x8F, 0x2F, 0x44, 0x04, 0x30, 0x11, 0x21, 0xD0, 0x0C, 0x0B, 0x61, 0x07, 0xCE, 0x70, 0xF9, 0xCE, 0xE3, 0x0F, 0xCE, 0x64, 0xFB, 0xC5, 0x6D, 0x1B, 0x81, 0x33, 0x5C, 0xBE, 0xF3, 0xF8, 0x83, 0x33, 0xDD, 0x7E, 0x71, 0xDB, 0x66, 0x50, 0x0D, 0x97, 0xEF, 0x3C, 0xBE, 0x04, 0x30, 0xCF, 0x42, 0x94, 0x44, 0x45, 0x2C, 0x7E, 0x71, 0xDB, 0x56, 0x60, 0x0D, 0x97, 0xEF, 0x3C, 0xFE, 0x44, 0x5C, 0x13, 0x15, 0x11, 0xEC, 0xE4, 0x44, 0x84, 0x5F, 0xDC, 0xB6, 0x05, 0x48, 0xC3, 0xE5, 0x3B, 0x8F, 0x3F, 0x1D, 0x11, 0x01, 0x0C, 0xE2, 0xE0, 0x23, 0xB7, 0x6D, 0x02, 0xCF, 0x70, 0xF9, 0xCE, 0xE3, 0x53, 0x0D, 0x10, 0x61, 0x7E, 0x71, 0xDB, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x71, 0x0A, 0x00, 0x00, 0x13, 0x04, 0x45, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x34, 0x94, 0x46, 0xB1, 0x15, 0x4B, 0xD9, 0x14, 0x52, 0x19, 0x15, 0x4C, 0x39, 0x94, 0x5C, 0xD9, 0xCD, 0x00, 0x94, 0x5B, 0xE9, 0x06, 0x14, 0x5F, 0xC9, 0x94, 0x42, 0xB9, 0x94, 0x4A, 0x19, 0x06, 0x50, 0x53, 0x1E, 0x45, 0x50, 0x06, 0x23, 0x00, 0x25, 0x40, 0xC6, 0x18, 0x01, 0x08, 0x82, 0x20, 0xFE, 0x0B, 0x63, 0x04, 0x20, 0x08, 0x82, 0x20, 0x18, 0x8C, 0x11, 0x80, 0x20, 0x08, 0xB2, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0x48, 0x82, 0xC1, 0x18, 0x01, 0x08, 0x82, 0xA8, 0x18, 0x06, 0x63, 0x04, 0x20, 0x08, 0x86, 0x79, 0x18, 0x8C, 0x11, 0x80, 0x20, 0x08, 0xDE, 0xE0, 0x30, 0x46, 0x00, 0x82, 0x20, 0x28, 0x83, 0xC1, 0x08, 0xC0, 0x18, 0xC1, 0xE8, 0xF6, 0xB1, 0xFC, 0x8D, 0x11, 0x80, 0x20, 0x08, 0xC2, 0xDF, 0x18, 0x01, 0x08, 0x82, 0x20, 0xFD, 0x8D, 0x11, 0xEC, 0x63, 0xC9, 0xAB, 0xDF, 0x0C, 0xC0, 0x18, 0x01, 0xAA, 0xE2, 0xF5, 0xFC, 0x8D, 0x11, 0xBC, 0x33, 0x69, 0xA2, 0xBD, 0x30, 0x46, 0x50, 0xCE, 0x71, 0xB8, 0x8A, 0xC1, 0x18, 0x41, 0x4B, 0xBF, 0xE5, 0x3C, 0x06, 0x63, 0x04, 0x66, 0x6F, 0xA6, 0x74, 0x37, 0x46, 0xF0, 0xD2, 0xF0, 0x7A, 0xFA, 0xC2, 0x18, 0x81, 0xCE, 0x9A, 0x73, 0xFF, 0x8D, 0x11, 0xE8, 0xAC, 0x39, 0x97, 0x60, 0x30, 0x46, 0x90, 0x86, 0xB7, 0x8F, 0x7B, 0x63, 0x04, 0x20, 0x08, 0xFA, 0xA2, 0x18, 0x8C, 0x11, 0xE8, 0x62, 0xA9, 0x87, 0x61, 0x30, 0x46, 0x00, 0x82, 0x20, 0xC8, 0x7E, 0x63, 0x04, 0xAD, 0x39, 0xE7, 0xBC, 0x37, 0x46, 0xA0, 0xB3, 0xE6, 0x1C, 0xFE, 0xC2, 0x18, 0x81, 0xCE, 0x9A, 0x73, 0xF8, 0x8D, 0x11, 0x80, 0x20, 0x08, 0xAA, 0x60, 0x30, 0x46, 0xD0, 0x9A, 0x73, 0x4E, 0x7E, 0x63, 0x04, 0xAD, 0x39, 0xE7, 0xEC, 0x37, 0x46, 0x00, 0x82, 0x20, 0x08, 0x82, 0xC2, 0x18, 0x81, 0xBA, 0xC2, 0xE4, 0xFC, 0x0B, 0x63, 0x04, 0xEA, 0x0A, 0x93, 0xF3, 0x37, 0x46, 0xA0, 0xAE, 0x30, 0x39, 0xFE, 0xC2, 0x18, 0x01, 0x08, 0x82, 0xA0, 0x08, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0xE8, 0x37, 0x46, 0xA0, 0xB3, 0xE6, 0x5C, 0x7F, 0x63, 0x04, 0x66, 0x6F, 0xA6, 0x7C, 0x37, 0x46, 0xC0, 0x9A, 0x73, 0x8E, 0x7F, 0x63, 0x04, 0x3A, 0x6B, 0xCE, 0xE9, 0x37, 0x46, 0xC0, 0x9A, 0x73, 0x4E, 0x7F, 0x63, 0x04, 0x73, 0xCE, 0x9A, 0xF3, 0x37, 0x46, 0x60, 0xCE, 0x39, 0xEB, 0x7F, 0x63, 0x04, 0x27, 0x5D, 0xCA, 0xE9, 0x37, 0x46, 0x20, 0xB6, 0x31, 0x1B, 0x7F, 0x63, 0x04, 0xB5, 0xE9, 0xCB, 0xBE, 0x37, 0x46, 0xB0, 0x8F, 0x25, 0x6F, 0x7F, 0x63, 0x04, 0x20, 0x08, 0x82, 0x38, 0x18, 0x8C, 0x11, 0x80, 0x20, 0x08, 0xE2, 0xDE, 0x18, 0x01, 0x08, 0x82, 0xA4, 0x1B, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0xF0, 0x18, 0x8C, 0x11, 0x80, 0x20, 0x08, 0xA2, 0x64, 0x30, 0x46, 0x00, 0x82, 0x20, 0x88, 0x7F, 0x63, 0x04, 0xBA, 0x3F, 0xCA, 0x2C, 0x18, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xE0, 0xF9, 0x02, 0x2A, 0xE4, 0x01, 0x2F, 0xF0, 0x42, 0x2D, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xF7, 0x0B, 0xA9, 0xB0, 0x07, 0xBD, 0xD0, 0x0B, 0xB6, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x1E, 0x38, 0xA8, 0x42, 0x1F, 0xF8, 0x82, 0x2F, 0xDC, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x78, 0xE1, 0xB0, 0x0A, 0x7F, 0xF0, 0x0B, 0xBF, 0x80, 0x0B, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x40, 0xAC, 0x03, 0x2A, 0x80, 0xC3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x10, 0xEC, 0x90, 0x0A, 0xE2, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x5B, 0x39, 0xB4, 0xC2, 0x20, 0x0E, 0xA3, 0x09, 0x01, 0x30, 0xDC, 0x40, 0x04, 0x64, 0x30, 0x9A, 0x30, 0x04, 0xC3, 0x0D, 0x41, 0x21, 0x06, 0x35, 0x04, 0x3A, 0xCB, 0x10, 0x10, 0xC1, 0x21, 0x46, 0x15, 0x81, 0xC4, 0x05, 0x46, 0x9D, 0x61, 0xD4, 0x88, 0xC1, 0x01, 0x80, 0x20, 0x18, 0x24, 0xF5, 0xC0, 0x0B, 0x41, 0x1C, 0x9C, 0x62, 0xD8, 0x25, 0x86, 0x99, 0x10, 0x0A, 0xF2, 0x31, 0x41, 0x14, 0xE4, 0x63, 0x89, 0x10, 0x1F, 0x43, 0x84, 0xF8, 0x98, 0x70, 0xD0, 0xC7, 0x04, 0x84, 0x3E, 0xB6, 0x29, 0xF4, 0x19, 0x31, 0x78, 0x00, 0x10, 0x04, 0x83, 0x89, 0x1F, 0x7A, 0x21, 0xC3, 0x06, 0xA1, 0x14, 0x4A, 0xC1, 0x1E, 0xEC, 0x01, 0x1C, 0x54, 0x61, 0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x6C, 0x18, 0xE4, 0x63, 0x01, 0x2B, 0xC8, 0xC7, 0x08, 0x42, 0x3E, 0x16, 0xB8, 0x82, 0x7C, 0xAC, 0x28, 0xE4, 0x63, 0x01, 0x2C, 0xC8, 0x67, 0xC4, 0xE0, 0x00, 0x40, 0x10, 0x0C, 0x92, 0x94, 0x80, 0x87, 0xC2, 0x0C, 0x46, 0x0C, 0x0E, 0x00, 0x04, 0xC1, 0x20, 0x51, 0x89, 0x78, 0x20, 0xCE, 0x60, 0xC4, 0xE0, 0x00, 0x40, 0x10, 0x0C, 0x92, 0x95, 0x90, 0x87, 0x01, 0x0D, 0x4C, 0x8A, 0xE2, 0x63, 0x01, 0x46, 0x1F, 0xCB, 0x52, 0x41, 0x3E, 0x16, 0x08, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x26, 0xF6, 0x21, 0xB0, 0x60, 0x1C, 0xE4, 0x63, 0xC1, 0x2E, 0xC0, 0x67, 0xC4, 0xE0, 0x00, 0x40, 0x10, 0x0C, 0x92, 0x99, 0xC8, 0x87, 0xC0, 0x17, 0x46, 0x0C, 0x0E, 0x00, 0x04, 0xC1, 0x20, 0xA1, 0x89, 0x7D, 0x08, 0xE2, 0xC0, 0xC0, 0xE0, 0x15, 0xE4, 0x63, 0x81, 0x26, 0x1F, 0x13, 0x34, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x91, 0x13, 0x20, 0x21, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xA1, 0x13, 0x21, 0x21, 0x98, 0xF0, 0x0B, 0xF0, 0x31, 0x01, 0x1C, 0xE0, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x4E, 0x98, 0x84, 0x10, 0xAC, 0x83, 0x3A, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xE1, 0x13, 0x28, 0x11, 0x58, 0x00, 0x0E, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0x2C, 0x50, 0x22, 0x18, 0x8E, 0x08, 0xD4, 0x41, 0xF8, 0xA6, 0x1B, 0x84, 0x26, 0xB0, 0x40, 0x1D, 0xE4, 0x63, 0x01, 0x3B, 0xC0, 0xC7, 0x82, 0x4D, 0x3E, 0x26, 0x6C, 0xF2, 0xB1, 0x61, 0x93, 0xCF, 0x2C, 0x81, 0x30, 0x50, 0x61, 0x18, 0xC1, 0x7A, 0x0A, 0xC2, 0x40, 0x85, 0x61, 0x04, 0xEB, 0x29, 0x08, 0x03, 0x15, 0x86, 0x11, 0xAC, 0xA7, 0x20, 0x0C, 0x54, 0x18, 0xEA, 0x11, 0x84, 0x8D, 0x30, 0x50, 0x31, 0x90, 0x4A, 0x90, 0x9E, 0x82, 0x70, 0x81, 0x61, 0x16, 0xA8, 0x02, 0x7C, 0x2C, 0xE8, 0x07, 0xF9, 0x98, 0xD0, 0x0F, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x2E, 0x76, 0x42, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x43, 0x2E, 0x78, 0x42, 0x30, 0xC1, 0x0E, 0xE0, 0x63, 0x82, 0x1D, 0xC0, 0xC7, 0x84, 0x20, 0x3E, 0x76, 0x06, 0x81, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xB8, 0x8B, 0xB0, 0x08, 0x2C, 0x48, 0x09, 0xF9, 0x58, 0x10, 0x12, 0xF0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x24, 0x2F, 0x7E, 0x22, 0x20, 0x89, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x48, 0xF4, 0x22, 0x2C, 0x82, 0x5B, 0x30, 0x33, 0x48, 0xE4, 0x63, 0x67, 0x90, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xBF, 0x28, 0x0B, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xBF, 0x30, 0x0B, 0xC1, 0x04, 0x92, 0x80, 0x8F, 0x09, 0x25, 0x01, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xFA, 0x62, 0x2D, 0x84, 0x00, 0x26, 0x5E, 0x62, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xD1, 0x68, 0x8B, 0xC0, 0x82, 0x92, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA5, 0xD1, 0x16, 0xC1, 0x70, 0x44, 0xF0, 0x12, 0xC2, 0x37, 0xDD, 0x20, 0x30, 0x81, 0x05, 0x2F, 0x21, 0x1F, 0x0B, 0x62, 0x02, 0x3E, 0xD6, 0x0A, 0x39, 0x21, 0x1F, 0x6B, 0x05, 0x9D, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAC, 0x31, 0x17, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAD, 0x41, 0x17, 0x82, 0x11, 0x42, 0x7C, 0x8C, 0x10, 0xE2, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xD5, 0x6A, 0xE4, 0x05, 0x31, 0xB0, 0xC3, 0x3B, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x11, 0x1B, 0x7B, 0x11, 0x58, 0xF0, 0x0E, 0xF2, 0x31, 0x21, 0x1E, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x6D, 0xF0, 0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x6D, 0xF4, 0x85, 0x60, 0x42, 0x3C, 0xC8, 0xC7, 0x04, 0x79, 0x90, 0xCF, 0x88, 0xC1, 0x01, 0x80, 0x20, 0x18, 0x60, 0xB2, 0x91, 0x17, 0xEF, 0xE0, 0x1A, 0xA3, 0x09, 0x81, 0x60, 0x01, 0x01, 0x1F, 0x13, 0x08, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xC1, 0x1B, 0xA6, 0x21, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xD1, 0x1B, 0xA7, 0x21, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x95, 0x1B, 0xA7, 0x21, 0x04, 0xD0, 0x63, 0x51, 0x5C, 0xC0, 0xC7, 0x28, 0x7E, 0x80, 0xCF, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xBC, 0xA1, 0x1A, 0x01, 0xD5, 0x0F, 0x20, 0x31, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x78, 0xB0, 0x46, 0x60, 0x01, 0x48, 0xC8, 0xC7, 0x04, 0x91, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xE5, 0xD1, 0x1A, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xE6, 0xE1, 0x1A, 0x82, 0x09, 0x22, 0x21, 0x1F, 0x13, 0x46, 0x42, 0x3E, 0x06, 0x09, 0xF0, 0xB1, 0x48, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xEB, 0x51, 0x1B, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xEC, 0x61, 0x1B, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xE8, 0x61, 0x1B, 0x42, 0xE0, 0x78, 0xF6, 0x81, 0x06, 0x7C, 0x4C, 0x0C, 0x56, 0x02, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xAD, 0x47, 0x6E, 0x90, 0x41, 0xC0, 0x12, 0x2F, 0x31, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x7C, 0xEC, 0x46, 0x60, 0xC1, 0x4B, 0xC8, 0xC7, 0x84, 0x98, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xF4, 0xC1, 0x1B, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xF5, 0xD1, 0x1B, 0x82, 0x09, 0x31, 0x21, 0x1F, 0x13, 0x64, 0x42, 0x3E, 0xF6, 0x09, 0xF0, 0x31, 0x30, 0x10, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x7E, 0x90, 0x87, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x7E, 0x94, 0x87, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xD5, 0x7D, 0x94, 0x87, 0x10, 0xB8, 0x81, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x7E, 0x98, 0x47, 0xE7, 0xE4, 0x04, 0x4F, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xE1, 0x1F, 0xE8, 0x11, 0x58, 0xC0, 0x13, 0xF2, 0x31, 0xC1, 0x27, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x88, 0xA4, 0x87, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x88, 0xA8, 0x87, 0x60, 0x82, 0x4F, 0xC8, 0xC7, 0x84, 0x9F, 0x90, 0x8F, 0xB1, 0x81, 0x00, 0x1F, 0x6B, 0x03, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x9C, 0x48, 0x7C, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xA0, 0x88, 0x7C, 0x08, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0x91, 0x88, 0x7C, 0x08, 0x81, 0x1A, 0x6C, 0xC6, 0x07, 0x7C, 0x20, 0x1F, 0xE3, 0x03, 0x3E, 0x90, 0x8F, 0x09, 0x7E, 0x20, 0x1F, 0x13, 0xFC, 0x40, 0x3E, 0x06, 0x0A, 0xBE, 0x21, 0x1F, 0x03, 0x85, 0xDF, 0x90, 0x8F, 0x09, 0xBC, 0x01, 0x1F, 0x13, 0x7A, 0x03, 0x3E, 0x26, 0x90, 0x82, 0x7C, 0x4C, 0x20, 0x05, 0xF9, 0x98, 0xF0, 0x1B, 0xF0, 0x31, 0x01, 0x3C, 0xE0, 0x63, 0x8A, 0x20, 0x1F, 0x53, 0x04, 0xF9, 0xD8, 0xC3, 0xC5, 0xC7, 0x82, 0x41, 0x3E, 0xD6, 0x06, 0x7C, 0x10, 0x1F, 0x0B, 0x0A, 0xF9, 0x58, 0xE0, 0x07, 0xF0, 0xB1, 0x30, 0x08, 0xE2, 0x63, 0x41, 0x01, 0x1F, 0x43, 0x02, 0xF9, 0x58, 0x40, 0xC0, 0xC7, 0x02, 0xF5, 0x90, 0x8F, 0x95, 0x85, 0x7C, 0xC8, 0xC7, 0xCA, 0x62, 0x3E, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x99, 0xAC, 0x88, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x99, 0xB0, 0x88, 0x60, 0x84, 0x10, 0x1F, 0x23, 0x84, 0xF8, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x35, 0x26, 0x31, 0x42, 0x0C, 0xA4, 0x71, 0x1A, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xA4, 0xC9, 0x8C, 0x04, 0x16, 0x9C, 0x86, 0x7C, 0x4C, 0x48, 0x0D, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xC1, 0x26, 0x34, 0x22, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xD1, 0x26, 0x35, 0x22, 0x98, 0x90, 0x1A, 0xF2, 0x31, 0x41, 0x35, 0xE4, 0x63, 0xB7, 0x20, 0xC0, 0xC7, 0x70, 0x41, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x72, 0xC2, 0x23, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x73, 0xD2, 0x23, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0x6F, 0xD2, 0x23, 0x42, 0xE0, 0x34, 0xF6, 0x9C, 0x08, 0x7C, 0x4C, 0x92, 0x0D, 0xF8, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x25, 0x27, 0x60, 0x12, 0x48, 0xB3, 0x61, 0x1B, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xE0, 0x89, 0x98, 0x04, 0x16, 0xD8, 0x86, 0x7C, 0x4C, 0xC0, 0x0D, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x27, 0x63, 0x22, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xC1, 0x27, 0x64, 0x22, 0x98, 0x80, 0x1B, 0xF2, 0x31, 0x21, 0x37, 0xE4, 0x63, 0xE6, 0x20, 0xC0, 0xC7, 0xCE, 0x41, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA1, 0xB2, 0x26, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA2, 0xC2, 0x26, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0x7E, 0xC2, 0x26, 0x42, 0xE0, 0x70, 0xD6, 0xD9, 0x08, 0x7C, 0x0C, 0x0C, 0xC2, 0x03, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0x85, 0xCA, 0x9B, 0x88, 0x41, 0x20, 0x1E, 0xE5, 0x31, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0xA9, 0xC4, 0x49, 0x60, 0x41, 0x79, 0xC8, 0xC7, 0x84, 0xF3, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAA, 0x22, 0x27, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAB, 0x32, 0x27, 0x82, 0x09, 0xE7, 0x21, 0x1F, 0x13, 0xD0, 0x43, 0x3E, 0x56, 0x0F, 0x02, 0x7C, 0xCC, 0x1E, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x01, 0x2B, 0x7A, 0x22, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x11, 0x2B, 0x7B, 0x22, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xD5, 0x2A, 0x7B, 0x22, 0x04, 0x6C, 0xE0, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xE5, 0x2A, 0x7C, 0xD2, 0x39, 0xEF, 0x21, 0x1F, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xD0, 0x8A, 0x9F, 0x04, 0x16, 0xC8, 0x87, 0x7C, 0x4C, 0xA0, 0x0F, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x71, 0x2B, 0x7F, 0x22, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x81, 0x2B, 0xA0, 0x22, 0x98, 0x40, 0x1F, 0xF2, 0x31, 0xA1, 0x3E, 0xE4, 0x63, 0x22, 0x21, 0xC0, 0xC7, 0x46, 0x42, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBD, 0x72, 0x2A, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBE, 0x82, 0x2A, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xBA, 0x82, 0x2A, 0x42, 0xA0, 0x06, 0x9B, 0xE9, 0x81, 0x1E, 0xC8, 0xC7, 0xF4, 0x40, 0x0F, 0xE4, 0x63, 0x02, 0x1F, 0xC8, 0xC7, 0x04, 0x3E, 0x90, 0x8F, 0xF9, 0x01, 0x9D, 0xC8, 0xC7, 0xFC, 0xA0, 0x4E, 0xE4, 0x63, 0x82, 0x9C, 0xC0, 0xC7, 0x84, 0x39, 0x81, 0x8F, 0x09, 0xA2, 0x20, 0x1F, 0x13, 0x44, 0x41, 0x3E, 0x26, 0xD4, 0x09, 0x7C, 0x4C, 0xB0, 0x13, 0xF8, 0x98, 0x22, 0xC8, 0xC7, 0x14, 0x41, 0x3E, 0xF6, 0x70, 0xF1, 0xB1, 0x60, 0x90, 0x8F, 0xB5, 0x01, 0x1F, 0xC4, 0xC7, 0x82, 0x42, 0x3E, 0x16, 0xF8, 0x01, 0x7C, 0x2C, 0x0C, 0x82, 0xF8, 0x58, 0x50, 0xC0, 0xC7, 0x90, 0x40, 0x3E, 0x16, 0x10, 0xF0, 0xB1, 0xA0, 0x4F, 0xE4, 0x63, 0xAB, 0x01, 0x27, 0xF2, 0xB1, 0x00, 0x4E, 0xE0, 0x63, 0x41, 0x2E, 0xC0, 0xC7, 0x02, 0x02, 0x3E, 0xF6, 0x1F, 0x7F, 0x02, 0x1F, 0x0B, 0x58, 0x45, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF8, 0x4B, 0xB9, 0x04, 0x26, 0x04, 0xF1, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x6A, 0x5F, 0xD2, 0x45, 0x98, 0x0B, 0x1E, 0xF9, 0x91, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x42, 0x66, 0x5D, 0x02, 0x0B, 0x7E, 0x44, 0x3E, 0x26, 0x84, 0x89, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x20, 0x19, 0x76, 0x11, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x28, 0x99, 0x76, 0x11, 0x4C, 0x08, 0x13, 0xF9, 0x98, 0x20, 0x26, 0xF2, 0xB1, 0xB7, 0x10, 0xE0, 0x63, 0x70, 0x21, 0xC0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x95, 0xA1, 0x17, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x95, 0xA9, 0x17, 0x61, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0x93, 0xA9, 0x17, 0x21, 0x68, 0xFA, 0xC2, 0x9C, 0x5F, 0x81, 0x8F, 0x41, 0x6A, 0x02, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x54, 0x06, 0x5F, 0x02, 0xD1, 0x58, 0x13, 0x37, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0x66, 0xF4, 0x25, 0xB0, 0xC0, 0x4D, 0xE4, 0x63, 0x02, 0x9C, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x99, 0xD9, 0x17, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x9A, 0xE1, 0x17, 0xC1, 0x04, 0x38, 0x91, 0x8F, 0x09, 0x71, 0x22, 0x1F, 0xF3, 0x0B, 0x01, 0x3E, 0xF6, 0x17, 0x02, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xC8, 0x99, 0x91, 0x11, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xD0, 0x19, 0x92, 0x11, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xB2, 0x19, 0x92, 0x11, 0x02, 0x87, 0x35, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xBA, 0x99, 0x92, 0xF1, 0xDA, 0x02, 0x4F, 0xF6, 0x64, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x9E, 0x39, 0x99, 0xC0, 0x82, 0x3D, 0x91, 0x8F, 0x09, 0x7D, 0x22, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xC0, 0x06, 0x65, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xC2, 0x26, 0x65, 0x04, 0x13, 0xFA, 0x44, 0x3E, 0x26, 0xF8, 0x89, 0x7C, 0x6C, 0x35, 0x04, 0xF8, 0x18, 0x6B, 0x08, 0xF0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xC3, 0x6C, 0x60, 0x46, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xE3, 0x6C, 0x62, 0x46, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x6A, 0x6C, 0x62, 0x46, 0x08, 0xD2, 0x40, 0x2F, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x22, 0x1B, 0x99, 0xD9, 0xF4, 0xA2, 0x54, 0x50, 0x65, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xB5, 0xA1, 0x99, 0xC0, 0x02, 0x54, 0x91, 0x8F, 0x09, 0xAA, 0x22, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xDA, 0xA6, 0x66, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xDC, 0xC6, 0x66, 0x04, 0x13, 0x54, 0x45, 0x3E, 0x26, 0xAC, 0x8A, 0x7C, 0x0C, 0x37, 0x04, 0xF8, 0x58, 0x6E, 0x08, 0xF0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x63, 0x6E, 0x7A, 0x46, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x83, 0x6E, 0x7C, 0x46, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x0A, 0x6E, 0x7C, 0x46, 0x08, 0xD0, 0xE0, 0x34, 0xEC, 0x0E, 0xEE, 0x40, 0x3E, 0x16, 0xE0, 0x81, 0x7C, 0x2C, 0x0F, 0x50, 0x46, 0x3E, 0x16, 0x94, 0x0C, 0x7C, 0x2C, 0xD8, 0x03, 0xF9, 0x58, 0x60, 0x32, 0xF0, 0xB1, 0x22, 0x90, 0x8F, 0x21, 0x55, 0x7C, 0x2C, 0x10, 0xE4, 0x63, 0x64, 0x30, 0x07, 0xF1, 0xB1, 0x80, 0x90, 0x8F, 0x05, 0x75, 0x00, 0x1F, 0xD3, 0x82, 0xF8, 0x58, 0x50, 0xC0, 0xC7, 0xDA, 0x22, 0x90, 0x8F, 0x05, 0x04, 0x7C, 0x2C, 0x78, 0x19, 0xF9, 0xD8, 0x2A, 0xDC, 0x8C, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x40, 0x9D, 0xB7, 0x09, 0x4C, 0x08, 0xE2, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0xE9, 0xCC, 0x8D, 0x50, 0x16, 0xE6, 0x92, 0x2E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xAC, 0x4E, 0xDD, 0x04, 0x16, 0xA4, 0x8B, 0x7C, 0x4C, 0x58, 0x17, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xE1, 0x3A, 0x76, 0x23, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xF1, 0x3A, 0x77, 0x23, 0x98, 0xB0, 0x2E, 0xF2, 0x31, 0x81, 0x5D, 0xE4, 0x63, 0xF9, 0x21, 0xC0, 0xC7, 0xF4, 0x43, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xB4, 0xE3, 0x37, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xB5, 0xF3, 0x37, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xB1, 0xF3, 0x37, 0x42, 0xD0, 0xBC, 0x85, 0x39, 0x69, 0x03, 0x1F, 0x83, 0xE8, 0x05, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xD1, 0x8E, 0xE8, 0x04, 0x74, 0x51, 0x2F, 0xF8, 0x32, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0xEE, 0x90, 0x4E, 0x60, 0x01, 0xBE, 0xC8, 0xC7, 0x04, 0x7D, 0x91, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBD, 0x53, 0x3A, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBE, 0x63, 0x3A, 0x82, 0x09, 0xFA, 0x22, 0x1F, 0x13, 0xF6, 0x45, 0x3E, 0x86, 0x22, 0x02, 0x7C, 0x2C, 0x45, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x31, 0x3E, 0xAD, 0x23, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x41, 0x3E, 0xAE, 0x23, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x05, 0x3E, 0xAE, 0x23, 0x04, 0x8E, 0x5F, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x15, 0x3E, 0xAF, 0xE3, 0x85, 0x85, 0xC8, 0x94, 0xCC, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xE7, 0x13, 0x3B, 0x81, 0x05, 0x25, 0x23, 0x1F, 0x13, 0x4E, 0x46, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xA8, 0x8F, 0xEC, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xAC, 0xCF, 0xEC, 0x08, 0x26, 0x9C, 0x8C, 0x7C, 0x4C, 0x40, 0x19, 0xF9, 0x58, 0x8D, 0x08, 0xF0, 0x31, 0x1B, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0xFC, 0xE8, 0x8E, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0xFC, 0xEC, 0x8E, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0xFB, 0xEC, 0x8E, 0x10, 0xA4, 0x81, 0x5B, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xE5, 0x3E, 0xBC, 0xB3, 0xB9, 0xC5, 0xCB, 0xC8, 0xCC, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xF4, 0xE3, 0x3B, 0x81, 0x05, 0x32, 0x23, 0x1F, 0x13, 0x68, 0x46, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xDC, 0xCF, 0xEF, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xE0, 0x0F, 0xF8, 0x08, 0x26, 0xD0, 0x8C, 0x7C, 0x4C, 0xA8, 0x19, 0xF9, 0x98, 0x98, 0x08, 0xF0, 0xB1, 0x31, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0xFF, 0x9C, 0x8F, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0xFF, 0xA0, 0x8F, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x95, 0xFE, 0xA0, 0x8F, 0x10, 0xA0, 0xC1, 0x5E, 0xD8, 0x1D, 0xDC, 0x81, 0x7C, 0x2C, 0xC0, 0x03, 0xF9, 0x58, 0x1E, 0xC8, 0x8E, 0x7C, 0x2C, 0x78, 0x1D, 0xF8, 0x58, 0xB0, 0x07, 0xF2, 0xB1, 0x00, 0x76, 0xE0, 0x63, 0x45, 0x20, 0x1F, 0x43, 0xAA, 0xF8, 0x58, 0x20, 0xC8, 0xC7, 0xC8, 0x60, 0x0E, 0xE2, 0x63, 0x01, 0x21, 0x1F, 0x0B, 0xEA, 0x00, 0x3E, 0xA6, 0x05, 0xF1, 0xB1, 0xA0, 0x80, 0x8F, 0x85, 0x45, 0x20, 0x1F, 0x0B, 0x08, 0xF8, 0x58, 0x60, 0x3B, 0xF2, 0xB1, 0xD3, 0xC9, 0x89, 0xF8, 0x58, 0x70, 0x13, 0xF0, 0xB1, 0xA0, 0x15, 0xE2, 0x63, 0x01, 0x11, 0x1F, 0xBB, 0x19, 0xDC, 0x81, 0x8F, 0x05, 0xE5, 0x23, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x6E, 0xC8, 0x7F, 0x02, 0x13, 0x82, 0xF8, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x45, 0x43, 0x22, 0xD4, 0x2A, 0x42, 0xDD, 0xE0, 0xCD, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x3A, 0x44, 0x42, 0x81, 0x05, 0x78, 0x23, 0x1F, 0x13, 0xF4, 0x46, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF4, 0x50, 0x09, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF8, 0x90, 0x09, 0x09, 0x26, 0xE8, 0x8D, 0x7C, 0x4C, 0xD8, 0x1B, 0xF9, 0x18, 0xAA, 0x08, 0xF0, 0xB1, 0x54, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x18, 0xB5, 0x90, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x19, 0xB9, 0x90, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x18, 0xB9, 0x90, 0x10, 0xDC, 0x4A, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0x18, 0xBD, 0x90, 0xA9, 0x3C, 0xA2, 0x53, 0x3A, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x9C, 0x51, 0x0C, 0x05, 0x16, 0x94, 0x8E, 0x7C, 0x4C, 0x38, 0x1D, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xA1, 0x46, 0x32, 0x24, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x46, 0x33, 0x24, 0x98, 0x70, 0x3A, 0xF2, 0x31, 0x01, 0x75, 0xE4, 0x63, 0xB5, 0x22, 0xC0, 0xC7, 0x6C, 0x45, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x70, 0xA4, 0x43, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x71, 0xB4, 0x43, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0x6D, 0xB4, 0x43, 0x42, 0x30, 0x2B, 0x9A, 0x6D, 0x25, 0x04, 0x1F, 0xEB, 0x60, 0x07, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xC1, 0x91, 0x0F, 0xA5, 0x4B, 0x10, 0x3B, 0xB4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x1D, 0x81, 0x51, 0x60, 0x01, 0xED, 0xC8, 0xC7, 0x04, 0xDB, 0x91, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x79, 0x14, 0x46, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x7A, 0x24, 0x46, 0x82, 0x09, 0xB6, 0x23, 0x1F, 0x13, 0x6E, 0x47, 0x3E, 0x46, 0x2E, 0x02, 0x7C, 0xAC, 0x5C, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xF1, 0x47, 0x69, 0x24, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x01, 0x4A, 0x6A, 0x24, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xC5, 0x47, 0x6A, 0x24, 0x04, 0xF3, 0xE2, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xD5, 0x47, 0x6B, 0x24, 0x2E, 0x8E, 0xEF, 0x84, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA3, 0xD4, 0x46, 0x81, 0x05, 0xE1, 0x23, 0x1F, 0x13, 0xC6, 0x47, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x98, 0x92, 0x1B, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x9C, 0xD2, 0x1B, 0x09, 0x26, 0x8C, 0x8F, 0x7C, 0x4C, 0x20, 0x1F, 0xF9, 0x58, 0xBC, 0x08, 0xF0, 0x31, 0x79, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x2B, 0xD9, 0x91, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x2B, 0xDD, 0x91, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0x2A, 0xDD, 0x91, 0x10, 0xBC, 0xCB, 0x66, 0x77, 0x70, 0x07, 0xF2, 0xB1, 0x00, 0x0F, 0xE4, 0x63, 0x79, 0x10, 0x46, 0xF2, 0xB1, 0xC0, 0x87, 0xE0, 0x63, 0xC1, 0x1E, 0xC8, 0xC7, 0x82, 0x1F, 0x82, 0x8F, 0x15, 0x81, 0x7C, 0x0C, 0xA9, 0xE2, 0x63, 0x41, 0xA8, 0xC8, 0xC7, 0xCC, 0x60, 0x0E, 0xE2, 0x63, 0xC1, 0xA8, 0xC8, 0xC7, 0x82, 0x3A, 0x80, 0x8F, 0x69, 0x41, 0x7C, 0x2C, 0x28, 0xE0, 0x63, 0x48, 0x20, 0x1F, 0x0B, 0x08, 0xF8, 0x58, 0x80, 0x46, 0xF2, 0xB1, 0x55, 0x80, 0x23, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x11, 0x4E, 0xA8, 0x14, 0x98, 0x10, 0xC4, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0x5F, 0x62, 0xA5, 0x3F, 0x11, 0xFE, 0x47, 0x84, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x20, 0x27, 0x57, 0x0A, 0x2C, 0x10, 0x21, 0xF9, 0x98, 0x40, 0x42, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xE3, 0x9C, 0x5E, 0x49, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0x9D, 0x60, 0x49, 0x30, 0x81, 0x84, 0xE4, 0x63, 0x42, 0x09, 0xC9, 0xC7, 0x64, 0x46, 0x80, 0x8F, 0xCD, 0x8C, 0x00, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xDA, 0xE9, 0x96, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xDC, 0x09, 0x97, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xD4, 0x09, 0x97, 0x84, 0x20, 0x55, 0x9A, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xD6, 0x29, 0x97, 0xF4, 0xE4, 0x61, 0xA1, 0x17, 0x1A, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x9E, 0x76, 0x29, 0xB0, 0xE0, 0x85, 0xE4, 0x63, 0x42, 0x0C, 0xC9, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x7A, 0xE2, 0x25, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x7A, 0xEA, 0x25, 0xC1, 0x84, 0x18, 0x92, 0x8F, 0x09, 0x32, 0x24, 0x1F, 0xFB, 0x19, 0x01, 0x3E, 0x06, 0x36, 0x02, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xD0, 0x27, 0x72, 0x12, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xD8, 0xA7, 0x72, 0x12, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xBA, 0xA7, 0x72, 0x12, 0x82, 0x53, 0xD1, 0x6C, 0x7B, 0x25, 0xF8, 0x58, 0xA7, 0x43, 0xF0, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x4A, 0x9F, 0xD0, 0x69, 0x57, 0x82, 0x1D, 0xF2, 0xA1, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x40, 0x4A, 0x9D, 0x02, 0x0B, 0x7C, 0x48, 0x3E, 0x26, 0x80, 0x91, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x18, 0xA9, 0x75, 0x12, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x20, 0x29, 0x76, 0x12, 0x4C, 0x00, 0x23, 0xF9, 0x98, 0x10, 0x46, 0xF2, 0x31, 0xB7, 0x11, 0xE0, 0x63, 0x6F, 0x23, 0xC0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x94, 0x9A, 0x27, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x95, 0xA2, 0x27, 0x61, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0x93, 0xA2, 0x27, 0x21, 0x28, 0x17, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0x93, 0xAA, 0x27, 0x5B, 0x71, 0xD0, 0x68, 0x8D, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x68, 0xA9, 0x7B, 0x0A, 0x2C, 0x58, 0x23, 0xF9, 0x98, 0xD0, 0x46, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0xA6, 0xF0, 0x49, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0xA6, 0xF2, 0x49, 0x30, 0xA1, 0x8D, 0xE4, 0x63, 0x82, 0x1B, 0xC9, 0xC7, 0xF6, 0x46, 0x80, 0x8F, 0xF1, 0x8D, 0x00, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x6C, 0x0A, 0xA4, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x6E, 0x2A, 0xA4, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x66, 0x2A, 0xA4, 0x84, 0x60, 0x5C, 0x36, 0xBB, 0x83, 0x3B, 0x90, 0x8F, 0x05, 0x78, 0x20, 0x1F, 0xCB, 0x83, 0x75, 0x92, 0x8F, 0x05, 0xE8, 0x04, 0x1F, 0x0B, 0xF6, 0x40, 0x3E, 0x16, 0xA4, 0x13, 0x7C, 0xAC, 0x08, 0xE4, 0x63, 0x48, 0x15, 0x1F, 0x0B, 0xEA, 0x44, 0x3E, 0x66, 0x06, 0x73, 0x10, 0x1F, 0x0B, 0xEE, 0x44, 0x3E, 0x16, 0xD4, 0x01, 0x7C, 0x4C, 0x0B, 0xE2, 0x63, 0x41, 0x01, 0x1F, 0x43, 0x02, 0xF9, 0x58, 0x40, 0xC0, 0xC7, 0x82, 0x77, 0x92, 0x8F, 0xE1, 0xC4, 0x2A, 0xC4, 0xC7, 0x02, 0x21, 0x3E, 0x86, 0x13, 0xEE, 0x24, 0x1F, 0x13, 0xDE, 0x49, 0x3E, 0x36, 0x4E, 0x21, 0x14, 0x1F, 0x0B, 0xDE, 0x49, 0x3E, 0xF6, 0x4E, 0x41, 0x7C, 0x8C, 0x8E, 0xE0, 0x09, 0x3E, 0x16, 0x0C, 0xF1, 0xB1, 0x3A, 0x1A, 0xE2, 0x63, 0xC2, 0x48, 0xC9, 0xC7, 0x04, 0x92, 0x92, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x76, 0xD5, 0x53, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x77, 0xE5, 0x53, 0x82, 0x11, 0x42, 0x7C, 0x8C, 0x10, 0xE2, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0x5D, 0x8D, 0x15, 0x31, 0xD8, 0x52, 0x2E, 0x8D, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x57, 0x65, 0x15, 0x58, 0x90, 0x4B, 0xF2, 0x31, 0x61, 0x97, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x5F, 0x99, 0x95, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x5F, 0x9D, 0x95, 0x60, 0xC2, 0x2E, 0xC9, 0xC7, 0x04, 0x5E, 0x92, 0x8F, 0xA5, 0x8F, 0x00, 0x1F, 0x53, 0x1F, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x90, 0x96, 0x5B, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x94, 0xD6, 0x5B, 0x09, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0x85, 0xD6, 0x5B, 0x09, 0x81, 0xD3, 0xD8, 0x93, 0x53, 0xF0, 0x31, 0x89, 0x9C, 0xE0, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x69, 0xC9, 0x55, 0x20, 0x95, 0x13, 0x3A, 0x8D, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xA1, 0x5A, 0x74, 0x15, 0x58, 0x80, 0x4E, 0xF2, 0x31, 0x41, 0x9D, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x6B, 0xD5, 0x95, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x6B, 0xD9, 0x95, 0x60, 0x82, 0x3A, 0xC9, 0xC7, 0x84, 0x75, 0x92, 0xCF, 0x88, 0xC1, 0x01, 0x80, 0x20, 0x18, 0x60, 0xAB, 0x25, 0x57, 0xE8, 0x74, 0x5A, 0xA3, 0x09, 0x81, 0x60, 0x01, 0x01, 0x1F, 0x13, 0x08, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x51, 0x5B, 0x7F, 0x25, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x61, 0x5B, 0xA0, 0x25, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x25, 0x5B, 0xA0, 0x25, 0x04, 0x90, 0x67, 0x9F, 0x5A, 0xC1, 0xC7, 0xC4, 0xA0, 0x9E, 0xE0, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0x6D, 0x8D, 0x16, 0x19, 0x04, 0xF6, 0x94, 0x4F, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xEC, 0x56, 0x69, 0x05, 0x16, 0xE4, 0x93, 0x7C, 0x4C, 0xD8, 0x27, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xE1, 0x5B, 0xA6, 0x25, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xF1, 0x5B, 0xA7, 0x25, 0x98, 0xB0, 0x4F, 0xF2, 0x31, 0x81, 0x9F, 0xE4, 0x63, 0x90, 0x00, 0x1F, 0x8B, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x41, 0x5E, 0xAE, 0x25, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x51, 0x5E, 0xAF, 0x25, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x15, 0x5E, 0xAF, 0x25, 0x04, 0x6E, 0xE0, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x25, 0x5E, 0xB0, 0xF5, 0x39, 0x23, 0x65, 0x52, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xA0, 0x97, 0x6C, 0x05, 0x16, 0x98, 0x94, 0x7C, 0x4C, 0x40, 0x29, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x5E, 0xB3, 0x25, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xC1, 0x5E, 0xB4, 0x25, 0x98, 0x80, 0x52, 0xF2, 0x31, 0x21, 0xA5, 0xE4, 0x63, 0x9D, 0x00, 0x1F, 0xF3, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x11, 0x5F, 0xBB, 0x25, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x21, 0x5F, 0xBC, 0x25, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xE5, 0x5E, 0xBC, 0x25, 0x04, 0x6C, 0xB0, 0x19, 0x1F, 0xF0, 0x81, 0x7C, 0x8C, 0x0F, 0xF8, 0x40, 0x3E, 0x26, 0xF8, 0x81, 0x7C, 0x4C, 0xF0, 0x03, 0xF9, 0x18, 0x28, 0xA0, 0x96, 0x7C, 0x0C, 0x14, 0x52, 0x4B, 0x3E, 0x26, 0x98, 0x16, 0x7C, 0x4C, 0x38, 0x2D, 0xF8, 0x98, 0x40, 0x0A, 0xF2, 0x31, 0x81, 0x14, 0xE4, 0x63, 0x42, 0x6A, 0xC1, 0xC7, 0x04, 0xD5, 0x82, 0x8F, 0x29, 0x82, 0x7C, 0x4C, 0x11, 0xE4, 0x63, 0x0F, 0x17, 0x1F, 0x0B, 0x06, 0xF9, 0x58, 0x1B, 0xF8, 0x41, 0x7C, 0x2C, 0x28, 0xE4, 0x63, 0x01, 0x28, 0xC0, 0xC7, 0xC2, 0x20, 0x88, 0x8F, 0x05, 0x05, 0x7C, 0x0C, 0x09, 0xE4, 0x63, 0x01, 0x01, 0x1F, 0x0B, 0x68, 0x4B, 0x3E, 0xA6, 0x0B, 0xBC, 0x25, 0x1F, 0xD3, 0x85, 0xDE, 0x92, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x2E, 0x56, 0x5F, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x2F, 0x66, 0x5F, 0x82, 0x11, 0x42, 0x7C, 0x8C, 0x10, 0xE2, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0x8B, 0xED, 0x17, 0x31, 0xB8, 0x55, 0x5C, 0x8D, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x31, 0x63, 0xFD, 0x15, 0x58, 0x10, 0x57, 0xF2, 0x31, 0x61, 0xAE, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x8D, 0xF9, 0x97, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x8D, 0xFD, 0x97, 0x60, 0xC2, 0x5C, 0xC9, 0xC7, 0x04, 0xBA, 0x92, 0x8F, 0xA1, 0x82, 0x00, 0x1F, 0x4B, 0x05, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF0, 0x98, 0x89, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF4, 0xD8, 0x89, 0x09, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xE5, 0xD8, 0x89, 0x09, 0x81, 0xD3, 0xD8, 0x13, 0x5F, 0xF0, 0x31, 0x89, 0xAF, 0xE0, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x8F, 0xA9, 0x58, 0x20, 0xF5, 0x15, 0x68, 0x8D, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x21, 0x66, 0x2C, 0x16, 0x58, 0x00, 0x5A, 0xF2, 0x31, 0x41, 0xB4, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x99, 0xB5, 0x98, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x99, 0xB9, 0x98, 0x60, 0x82, 0x68, 0xC9, 0xC7, 0x84, 0xD1, 0x92, 0x8F, 0xDD, 0x82, 0x00, 0x1F, 0xC3, 0x05, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xAC, 0x59, 0x8D, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xB0, 0x99, 0x8D, 0x09, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xA1, 0x99, 0x8D, 0x09, 0x81, 0xC3, 0x59, 0x07, 0x62, 0xF0, 0x31, 0x30, 0x58, 0x2D, 0xF8, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xB5, 0x66, 0x39, 0x26, 0x06, 0x01, 0x6B, 0xBD, 0xD6, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x71, 0xB6, 0x63, 0x81, 0x05, 0xAF, 0x25, 0x1F, 0x13, 0x62, 0x4B, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xD0, 0x19, 0x8F, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xD4, 0x59, 0x8F, 0x09, 0x26, 0xC4, 0x96, 0x7C, 0x4C, 0x90, 0x2D, 0xF9, 0x98, 0x39, 0x08, 0xF0, 0xB1, 0x73, 0x10, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x9E, 0x91, 0x99, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x9E, 0x95, 0x99, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xD5, 0x9D, 0x95, 0x99, 0x10, 0xB0, 0x81, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x15, 0x9E, 0x99, 0x59, 0xE7, 0xE4, 0x16, 0x6F, 0x8D, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xE1, 0x67, 0x68, 0x16, 0x58, 0xC0, 0x5B, 0xF2, 0x31, 0xC1, 0xB7, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0xA8, 0xA5, 0x99, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0xA8, 0xA9, 0x99, 0x60, 0x82, 0x6F, 0xC9, 0xC7, 0x84, 0xDF, 0x92, 0x8F, 0xCD, 0x83, 0x00, 0x1F, 0xA3, 0x07, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x9C, 0x5A, 0x9C, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xA0, 0x9A, 0x9C, 0x09, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0x91, 0x9A, 0x9C, 0x09, 0x81, 0x1A, 0x6C, 0xA6, 0x07, 0x7A, 0x20, 0x1F, 0xD3, 0x03, 0x3D, 0x90, 0x8F, 0x09, 0x7C, 0x20, 0x1F, 0x13, 0xF8, 0x40, 0x3E, 0xE6, 0x07, 0x3E, 0x26, 0x1F, 0xF3, 0x83, 0x1F, 0x93, 0x8F, 0x09, 0x3C, 0x06, 0x1F, 0x13, 0x7A, 0x0C, 0x3E, 0x26, 0x88, 0x82, 0x7C, 0x4C, 0x10, 0x05, 0xF9, 0x98, 0xF0, 0x63, 0xF0, 0x31, 0x01, 0xCC, 0xE0, 0x63, 0x8A, 0x20, 0x1F, 0x53, 0x04, 0xF9, 0xD8, 0xC3, 0xC5, 0xC7, 0x82, 0x41, 0x3E, 0xD6, 0x06, 0x7C, 0x10, 0x1F, 0x0B, 0x0A, 0xF9, 0x58, 0xE0, 0x07, 0xF0, 0xB1, 0x30, 0x08, 0xE2, 0x63, 0x41, 0x01, 0x1F, 0x43, 0x02, 0xF9, 0x58, 0x40, 0xC0, 0xC7, 0x82, 0x33, 0x93, 0x8F, 0xA5, 0xCF, 0x2D, 0xC0, 0xC7, 0x02, 0x01, 0x3E, 0x26, 0x17, 0x67, 0x06, 0x1F, 0x0B, 0xE8, 0x4C, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x98, 0x5B, 0xAB, 0x05, 0x26, 0x04, 0xF1, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x6A, 0xDC, 0x62, 0x4D, 0x88, 0x0B, 0x12, 0x3B, 0xB1, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xD2, 0x6D, 0xD6, 0x02, 0x0B, 0x4E, 0x4C, 0x3E, 0x26, 0xA4, 0x98, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x60, 0x37, 0x5A, 0x13, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x68, 0xB7, 0x5A, 0x13, 0x4C, 0x48, 0x31, 0xF9, 0x98, 0xA0, 0x62, 0xF2, 0x31, 0x9F, 0x10, 0xE0, 0x63, 0x3F, 0x21, 0xC0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x79, 0xE3, 0x35, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x79, 0xEB, 0x35, 0x61, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0x77, 0xEB, 0x35, 0x21, 0x68, 0xF6, 0xC2, 0x9C, 0x53, 0x83, 0x8F, 0x41, 0x32, 0x06, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xE4, 0x0D, 0xDC, 0x02, 0xD0, 0x98, 0x31, 0x1B, 0x1B, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0xDF, 0xC4, 0x2D, 0xB0, 0xC0, 0xC6, 0xE4, 0x63, 0x02, 0x8E, 0xC9, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x7D, 0x1B, 0x37, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x7E, 0x23, 0x37, 0xC1, 0x04, 0x1C, 0x93, 0x8F, 0x09, 0x39, 0x26, 0x1F, 0x6B, 0x0B, 0x01, 0x3E, 0xE6, 0x16, 0x02, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x08, 0xB9, 0x75, 0x13, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x10, 0x39, 0x76, 0x13, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xF2, 0x37, 0x76, 0x13, 0x02, 0x47, 0x35, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xFA, 0xB7, 0x76, 0xF3, 0xD6, 0x02, 0xCC, 0xC6, 0x6C, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x92, 0x7B, 0xB7, 0xC0, 0x82, 0x31, 0x93, 0x8F, 0x09, 0x65, 0x26, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x50, 0x0E, 0xDE, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x52, 0x2E, 0xDE, 0x04, 0x13, 0xCA, 0x4C, 0x3E, 0x26, 0x98, 0x99, 0x7C, 0x4C, 0x2F, 0x04, 0xF8, 0xD8, 0x5E, 0x08, 0xF0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xC3, 0xE5, 0xF0, 0x4D, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xE3, 0xE5, 0xF2, 0x4D, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x6A, 0xE5, 0xF2, 0x4D, 0x08, 0xD2, 0x00, 0x2F, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x62, 0x39, 0x7D, 0xDB, 0xF0, 0xA2, 0xCD, 0xE0, 0x6C, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x99, 0xE3, 0xB7, 0xC0, 0x02, 0x38, 0x93, 0x8F, 0x09, 0x72, 0x26, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x6A, 0xAE, 0xDF, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x6C, 0xCE, 0xDF, 0x04, 0x13, 0xE4, 0x4C, 0x3E, 0x26, 0xCC, 0x99, 0x7C, 0xEC, 0x34, 0x04, 0xF8, 0x18, 0x6A, 0x08, 0xF0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x63, 0xE7, 0x4A, 0x4E, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x83, 0xE7, 0x4C, 0x4E, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x0A, 0xE7, 0x4C, 0x4E, 0x08, 0xD0, 0xA0, 0x34, 0xEC, 0x0E, 0xEE, 0x40, 0x3E, 0x16, 0xE0, 0x81, 0x7C, 0x2C, 0x0F, 0xE0, 0x4D, 0x3E, 0x16, 0xB4, 0x1B, 0x7C, 0x2C, 0xD8, 0x03, 0xF9, 0x58, 0xE0, 0x6E, 0xF0, 0xB1, 0x22, 0x90, 0x8F, 0x21, 0x55, 0x7C, 0x2C, 0x10, 0xE4, 0x63, 0x64, 0x30, 0x07, 0xF1, 0xB1, 0x80, 0x90, 0x8F, 0x05, 0x75, 0x00, 0x1F, 0xD3, 0x82, 0xF8, 0x58, 0x50, 0xC0, 0xC7, 0xD6, 0x22, 0x90, 0x8F, 0x05, 0x04, 0x7C, 0x2C, 0xB8, 0x37, 0xF9, 0xD8, 0x2A, 0xFC, 0x9B, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x80, 0xBB, 0x9B, 0x0B, 0x4C, 0x08, 0xE2, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0xDB, 0xED, 0x9C, 0x30, 0x16, 0xAE, 0x16, 0x6B, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xCC, 0x5D, 0xCF, 0x05, 0x16, 0xC4, 0x9A, 0x7C, 0x4C, 0x98, 0x35, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x61, 0x77, 0x3E, 0x27, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x71, 0x77, 0x3F, 0x27, 0x98, 0x30, 0x6B, 0xF2, 0x31, 0x81, 0xD6, 0xE4, 0x63, 0xE8, 0x21, 0xC0, 0xC7, 0xD2, 0x43, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x7C, 0x67, 0x76, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x7D, 0x77, 0x76, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0x79, 0x77, 0x76, 0x42, 0xD0, 0xB4, 0x85, 0x39, 0x31, 0x07, 0x1F, 0x83, 0x78, 0x0D, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xF1, 0x9D, 0xDA, 0x05, 0x72, 0xD1, 0x6B, 0xE0, 0x36, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0xE8, 0xB1, 0x5D, 0x60, 0x01, 0xB8, 0xC9, 0xC7, 0x04, 0x71, 0x93, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA5, 0xD7, 0x76, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xA6, 0xE7, 0x76, 0x82, 0x09, 0xE2, 0x26, 0x1F, 0x13, 0xC6, 0x4D, 0x3E, 0x76, 0x1F, 0x02, 0x7C, 0x0C, 0x3F, 0x04, 0xF8, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x7A, 0x75, 0x27, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xC1, 0x7A, 0x76, 0x27, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x85, 0x7A, 0x76, 0x27, 0x04, 0x0E, 0x5F, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x95, 0x7A, 0x77, 0xE7, 0xFD, 0x84, 0xBA, 0xB5, 0xDB, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAF, 0x97, 0x77, 0x81, 0x05, 0xED, 0x26, 0x1F, 0x13, 0xDE, 0x4D, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xC8, 0x9E, 0xDE, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xCC, 0xDE, 0xDE, 0x09, 0x26, 0xBC, 0x9B, 0x7C, 0x4C, 0x80, 0x37, 0xF9, 0x18, 0x89, 0x08, 0xF0, 0xB1, 0x12, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0xEE, 0x89, 0x9E, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0xEE, 0x8D, 0x9E, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x55, 0xED, 0x8D, 0x9E, 0x10, 0xA4, 0x01, 0x5B, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x65, 0x7B, 0xA4, 0xB7, 0xB1, 0xC5, 0xBD, 0xE9, 0xDB, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBC, 0x67, 0x7A, 0x81, 0x05, 0xFA, 0x26, 0x1F, 0x13, 0xF8, 0x4D, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xFC, 0xDE, 0xE9, 0x09, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0x80, 0x1F, 0xEA, 0x09, 0x26, 0xF0, 0x9B, 0x7C, 0x4C, 0xE8, 0x37, 0xF9, 0x58, 0x8C, 0x08, 0xF0, 0x31, 0x19, 0x11, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0xF9, 0xBD, 0x9E, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0xF9, 0xC1, 0x9E, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x95, 0xF8, 0xC1, 0x9E, 0x10, 0xA0, 0x41, 0x5E, 0xD8, 0x1D, 0xDC, 0x81, 0x7C, 0x2C, 0xC0, 0x03, 0xF9, 0x58, 0x1E, 0xE8, 0x9D, 0x7C, 0x2C, 0xB8, 0x3B, 0xF8, 0x58, 0xB0, 0x07, 0xF2, 0xB1, 0x00, 0xEF, 0xE0, 0x63, 0x45, 0x20, 0x1F, 0x43, 0xAA, 0xF8, 0x58, 0x20, 0xC8, 0xC7, 0xC8, 0x60, 0x0E, 0xE2, 0x63, 0x01, 0x21, 0x1F, 0x0B, 0xEA, 0x00, 0x3E, 0xA6, 0x05, 0xF1, 0xB1, 0xA0, 0x80, 0x8F, 0xFD, 0x44, 0x20, 0x1F, 0x0B, 0x08, 0xF8, 0x58, 0xE0, 0x77, 0xF2, 0x31, 0xF4, 0xB1, 0x09, 0xF8, 0x58, 0xC0, 0x0A, 0xF1, 0xB1, 0x60, 0x88, 0x8F, 0xA5, 0xCA, 0xDF, 0xC1, 0xC7, 0x02, 0xD6, 0x93, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xFE, 0x57, 0x7E, 0x81, 0x09, 0x41, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xDA, 0xBF, 0xF4, 0x53, 0x15, 0x81, 0xE7, 0x7E, 0x6E, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x10, 0x0C, 0xD6, 0x2F, 0xB0, 0xE0, 0xE7, 0xE4, 0x63, 0x42, 0xD8, 0xC9, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x12, 0x0C, 0xD8, 0x4F, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xA3, 0x04, 0x83, 0xF6, 0x13, 0x4C, 0x08, 0x3B, 0xF9, 0x98, 0x20, 0x76, 0xF2, 0x31, 0x3B, 0x11, 0xE0, 0x63, 0x77, 0x22, 0xC0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x15, 0x0C, 0xE8, 0x4F, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x63, 0x05, 0x83, 0xFA, 0x13, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x3A, 0xC1, 0xA0, 0xFE, 0x84, 0x80, 0x56, 0x9A, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x50, 0x30, 0xB0, 0xBF, 0x52, 0x79, 0xD2, 0x8E, 0xED, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x70, 0xC1, 0x00, 0xFF, 0x02, 0x0B, 0xD8, 0x4E, 0x3E, 0x26, 0xB8, 0x9D, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x88, 0xC1, 0x20, 0xFF, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x64, 0x30, 0xD0, 0x3F, 0xC1, 0x04, 0xB7, 0x93, 0x8F, 0x09, 0x6F, 0x27, 0x1F, 0x1B, 0x15, 0x01, 0x3E, 0x46, 0x2A, 0x02, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xB8, 0xC1, 0x20, 0x04, 0x03, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x1C, 0x0C, 0x44, 0x30, 0x10, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xA2, 0xC1, 0x40, 0x04, 0x03, 0x21, 0x90, 0x15, 0xCD, 0x36, 0xF6, 0x83, 0x8F, 0x75, 0x77, 0x07, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x6E, 0x30, 0x28, 0xC1, 0xC0, 0x5C, 0x02, 0xBC, 0xDB, 0xBB, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x7A, 0x30, 0x38, 0xC1, 0x20, 0xB0, 0x60, 0xEF, 0xE4, 0x63, 0x42, 0xDF, 0xC9, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x30, 0x0C, 0x50, 0x30, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x08, 0xC3, 0x20, 0x05, 0x03, 0xC1, 0x84, 0xBE, 0x93, 0x8F, 0x09, 0x7E, 0x27, 0x1F, 0x93, 0x15, 0x01, 0x3E, 0x36, 0x2B, 0x02, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x30, 0xC3, 0x00, 0x06, 0x03, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x33, 0x0C, 0x62, 0x30, 0x10, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x1A, 0xC3, 0x20, 0x06, 0x03, 0x21, 0x80, 0x17, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0x32, 0x0C, 0x64, 0x30, 0x08, 0x17, 0xA7, 0xF4, 0x50, 0x6F, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x35, 0x0C, 0x68, 0x30, 0x08, 0x2C, 0x40, 0x3D, 0xF9, 0x98, 0xA0, 0x7A, 0xF2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xA3, 0x0D, 0x83, 0x1A, 0x0C, 0x84, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xDC, 0x30, 0xB0, 0xC1, 0x40, 0x30, 0x41, 0xF5, 0xE4, 0x63, 0xC2, 0xEA, 0xC9, 0xC7, 0x7E, 0x45, 0x80, 0x8F, 0x81, 0x8B, 0x00, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xE6, 0x30, 0xE8, 0xC1, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x83, 0x0E, 0x03, 0x1F, 0x0C, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xE0, 0x30, 0xF0, 0xC1, 0x40, 0x08, 0xDC, 0x65, 0xB3, 0x3B, 0xB8, 0x03, 0xF9, 0x58, 0x80, 0x07, 0xF2, 0xB1, 0x3C, 0x40, 0xC1, 0x40, 0x3E, 0x16, 0x94, 0x60, 0x00, 0x1F, 0x0B, 0xF6, 0x40, 0x3E, 0x16, 0x98, 0x60, 0x00, 0x1F, 0x2B, 0x02, 0xF9, 0x18, 0x52, 0xC5, 0xC7, 0x02, 0x3F, 0x91, 0x8F, 0x99, 0xC1, 0x1C, 0xC4, 0xC7, 0x02, 0x50, 0x91, 0x8F, 0x05, 0x75, 0x00, 0x1F, 0xD3, 0x82, 0xF8, 0x58, 0x50, 0xC0, 0xC7, 0x90, 0x40, 0x3E, 0x16, 0x10, 0xF0, 0xB1, 0xE0, 0x05, 0x03, 0xF9, 0xD8, 0x2A, 0xDC, 0x60, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x50, 0x31, 0x78, 0xC3, 0x20, 0x30, 0x21, 0x88, 0xCF, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xA5, 0x18, 0xCC, 0x61, 0xC0, 0x27, 0x82, 0xF9, 0xA5, 0xDF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xAB, 0x18, 0xD4, 0x61, 0x10, 0x58, 0x90, 0x7E, 0xF2, 0x31, 0x61, 0xFD, 0xE4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x2B, 0x06, 0x76, 0x18, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xBC, 0x62, 0x70, 0x87, 0x81, 0x60, 0xC2, 0xFA, 0xC9, 0xC7, 0x04, 0xF6, 0x93, 0x8F, 0x81, 0x8C, 0x00, 0x1F, 0x0B, 0x19, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xD0, 0x62, 0xE0, 0x87, 0x81, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x2D, 0x06, 0x7F, 0x18, 0x08, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xC5, 0x62, 0xF0, 0x87, 0x81, 0x10, 0x98, 0x4A, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x95, 0x2C, 0x06, 0xA0, 0x18, 0xDC, 0xC9, 0x33, 0x7F, 0xF6, 0x37, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x2E, 0x06, 0xA2, 0x18, 0x04, 0x16, 0xD8, 0x9F, 0x7C, 0x4C, 0xC0, 0x3F, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x8B, 0xC1, 0x28, 0x06, 0xC2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xBC, 0x18, 0x90, 0x62, 0x20, 0x98, 0x80, 0x7F, 0xF2, 0x31, 0x21, 0xFF, 0xE4, 0x63, 0x2D, 0x23, 0xC0, 0xC7, 0x5C, 0x46, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xE1, 0x18, 0xAC, 0x62, 0x20, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x21, 0x8E, 0x01, 0x2B, 0x06, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xBE, 0x18, 0xB0, 0x62, 0x20, 0x04, 0xA4, 0xA2, 0xD9, 0x66, 0x87, 0x01, 0x7C, 0xAC, 0x0B, 0xC1, 0x00, 0x3E, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0x85, 0x63, 0xF0, 0x8A, 0x01, 0xAE, 0x04, 0x22, 0x18, 0x94, 0x60, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x39, 0x06, 0xB1, 0x18, 0x04, 0x16, 0x94, 0x60, 0x20, 0x1F, 0x13, 0x4E, 0x30, 0x90, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xEA, 0x18, 0xC8, 0x62, 0x20, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0xB1, 0x8E, 0xC1, 0x2C, 0x06, 0x82, 0x09, 0x27, 0x18, 0xC8, 0xC7, 0x04, 0x14, 0x0C, 0xE4, 0x63, 0x3C, 0x23, 0xC0, 0xC7, 0x7A, 0x46, 0x80, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xF0, 0x18, 0xE8, 0x62, 0x20, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x11, 0x8F, 0xC1, 0x2E, 0x06, 0xC2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0xED, 0x18, 0xEC, 0x62, 0x20, 0x04, 0xE2, 0xE2, 0x8C, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xE5, 0x8E, 0x01, 0x2F, 0x06, 0xB3, 0xE2, 0xBC, 0x60, 0x20, 0x83, 0xC1, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0xF4, 0x18, 0xF8, 0x62, 0x10, 0x58, 0x20, 0x83, 0x81, 0x7C, 0x4C, 0xA0, 0xC1, 0x40, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xDC, 0x63, 0xF0, 0x8B, 0x81, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x07, 0x3E, 0x06, 0xE0, 0x18, 0x08, 0x26, 0xD0, 0x60, 0x20, 0x1F, 0x13, 0x6A, 0x30, 0x90, 0x8F, 0xA5, 0x8D, 0x00, 0x1F, 0x53, 0x1B, 0x01, 0x3E, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x70, 0xF4, 0x63, 0x70, 0x8E, 0x81, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x87, 0x3F, 0x06, 0xE8, 0x18, 0x08, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x50, 0xE9, 0x63, 0x80, 0x8E, 0x81, 0x10, 0x80, 0xCB, 0x66, 0x77, 0x70, 0x07, 0xF2, 0xB1, 0x00, 0x0F, 0xE4, 0x63, 0x79, 0x20, 0x8B, 0x81, 0x7C, 0x2C, 0x78, 0xC5, 0x00, 0x3E, 0x16, 0xEC, 0x81, 0x7C, 0x2C, 0x80, 0xC5, 0x00, 0x3E, 0x56, 0x04, 0xF2, 0x31, 0xA4, 0x8A, 0x8F, 0x05, 0x72, 0x22, 0x1F, 0x33, 0x83, 0x39, 0x88, 0x8F, 0x05, 0x74, 0x22, 0x1F, 0x0B, 0xEA, 0x00, 0x3E, 0xA6, 0x05, 0xF1, 0xB1, 0xA0, 0x80, 0x8F, 0x21, 0x81, 0x7C, 0x2C, 0x20, 0xE0, 0x63, 0x81, 0x2D, 0x06, 0xF2, 0x31, 0x9C, 0x58, 0x85, 0xF8, 0x58, 0x20, 0xC4, 0xC7, 0x70, 0xA2, 0x16, 0x03, 0xF9, 0x98, 0x60, 0x8B, 0x81, 0x7C, 0xEC, 0xFC, 0x52, 0x31, 0x90, 0xCF, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x54, 0x31, 0x19, 0xFC, 0x63, 0x10, 0xA0, 0x1F, 0x39, 0x06, 0xE3, 0x18, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x71, 0x93, 0x41, 0x48, 0x06, 0x81, 0x05, 0xB9, 0x18, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x9C, 0x0C, 0x42, 0x32, 0x08, 0x2C, 0xE8, 0xC1, 0x00, 0x3E, 0x26, 0xF4, 0x60, 0x00, 0x9F, 0x11, 0x83, 0x07, 0x00, 0x41, 0x30, 0x98, 0x70, 0x32, 0xC8, 0xC7, 0xA0, 0x0E, 0x03, 0x3A, 0x0C, 0x84, 0x20, 0x1C, 0x83, 0x70, 0x0C, 0x64, 0x32, 0x90, 0xC9, 0x80, 0x1F, 0x03, 0x73, 0x0C, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0xC1, 0xE4, 0x6F, 0x16, 0x03, 0xF9, 0x58, 0xC0, 0xC8, 0xC7, 0x02, 0x3F, 0x0C, 0xE0, 0x63, 0xEA, 0x18, 0x04, 0xF4, 0x31, 0x50, 0x0C, 0x82, 0xF8, 0x18, 0x82, 0xC8, 0xC7, 0x82, 0x7A, 0x0C, 0xE4, 0x63, 0xC1, 0x20, 0x1F, 0x53, 0x14, 0xF9, 0x58, 0x80, 0x8F, 0x81, 0x7C, 0x2C, 0x30, 0xE4, 0x63, 0x0C, 0x23, 0x1F, 0x0B, 0xF6, 0x31, 0x90, 0x8F, 0x05, 0x89, 0x7C, 0x46, 0x0C, 0x0E, 0x00, 0x04, 0xC1, 0x20, 0x69, 0xCB, 0x80, 0x26, 0x83, 0x43, 0x15, 0x83, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x48, 0xDC, 0x32, 0xA8, 0xC9, 0xA0, 0x58, 0xC5, 0x60, 0xC4, 0xE0, 0x00, 0x40, 0x10, 0x0C, 0x92, 0xB7, 0x0C, 0x6C, 0x32, 0x18, 0x58, 0x31, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0xE5, 0x2D, 0x03, 0x98, 0x0C, 0x4A, 0x88, 0x84, 0x46, 0x32, 0x28, 0x21, 0x12, 0x1A, 0xC9, 0x60, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xB9, 0x0C, 0x5C, 0x32, 0x08, 0x2C, 0x38, 0x21, 0xF9, 0x98, 0x70, 0x42, 0xF2, 0xB1, 0x73, 0x0C, 0x86, 0xF8, 0x8C, 0x18, 0x2C, 0x00, 0x08, 0x82, 0xC1, 0x42, 0x97, 0x41, 0x4D, 0x06, 0xE7, 0x18, 0x98, 0x63, 0x50, 0x8E, 0xC1, 0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x90, 0xD8, 0x65, 0xC0, 0x93, 0x41, 0x10, 0x92, 0x81, 0x05, 0xE6, 0x18, 0xC8, 0xC7, 0x82, 0x5A, 0x0C, 0xE0, 0x63, 0x2E, 0xE4, 0x42, 0xF2, 0x31, 0x17, 0x72, 0x21, 0xF9, 0x58, 0xA8, 0x85, 0x9A, 0x7C, 0x6C, 0x08, 0xE0, 0x63, 0xC1, 0x00, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xFE, 0x32, 0x18, 0xCB, 0x20, 0xB0, 0x20, 0x14, 0x03, 0xF9, 0x58, 0x20, 0x93, 0x81, 0x7C, 0xEC, 0x0D, 0xDE, 0x40, 0x3E, 0xF6, 0x06, 0x6F, 0x20, 0x1F, 0x0B, 0x97, 0x70, 0x91, 0x8F, 0x0D, 0x01, 0x7C, 0x2C, 0x18, 0xE0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xC7, 0x69, 0x06, 0x6B, 0x19, 0x04, 0x96, 0x8A, 0x01, 0x4E, 0x06, 0xF2, 0xB1, 0x40, 0x90, 0xCF, 0x88, 0xC1, 0x01, 0x80, 0x20, 0x18, 0x24, 0xA9, 0x19, 0xBC, 0x65, 0x70, 0x2E, 0x3F, 0x18, 0x58, 0x20, 0xD0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xD6, 0x0C, 0xDE, 0x32, 0x08, 0x2C, 0xF0, 0xC9, 0x40, 0x3E, 0xD6, 0x93, 0x41, 0x10, 0x1F, 0x1B, 0x06, 0xF9, 0x58, 0x20, 0xC8, 0xC7, 0xDA, 0x31, 0x08, 0xE2, 0x63, 0x81, 0x4E, 0x06, 0xF2, 0xB1, 0x60, 0x0D, 0x03, 0xF9, 0x98, 0xB0, 0x86, 0x81, 0x7C, 0x6C, 0x58, 0xC3, 0x40, 0x3E, 0xE6, 0x86, 0xC1, 0x10, 0x1F, 0x73, 0xC3, 0x60, 0x88, 0x8F, 0xB9, 0x61, 0x30, 0xC4, 0xC7, 0xB2, 0xB4, 0x0C, 0xE4, 0x63, 0xBF, 0x16, 0xD0, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xDD, 0x0C, 0xFC, 0x32, 0x08, 0x2C, 0x68, 0xCB, 0x40, 0x3E, 0xC6, 0x96, 0x41, 0x10, 0x1F, 0x1B, 0x06, 0xF9, 0x58, 0x20, 0xC8, 0xC7, 0xF8, 0x31, 0x08, 0xE2, 0x63, 0x81, 0x4B, 0x06, 0xF2, 0x31, 0x26, 0x90, 0x8F, 0x31, 0x82, 0x7C, 0x8C, 0x19, 0xE4, 0x63, 0xCF, 0x10, 0x1F, 0x7B, 0x86, 0xF8, 0xD8, 0x33, 0xC4, 0xC7, 0xDA, 0xED, 0x0C, 0xE8, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x47, 0x7A, 0x06, 0xAC, 0x19, 0x04, 0x16, 0xEC, 0x65, 0x20, 0x1F, 0xD3, 0xCB, 0x20, 0x88, 0x8F, 0x0D, 0x83, 0x7C, 0x2C, 0x10, 0xE4, 0x63, 0x2A, 0x19, 0x04, 0xF1, 0xB1, 0x60, 0x27, 0x03, 0xF9, 0xD8, 0x12, 0xC8, 0xC7, 0x16, 0x41, 0x3E, 0xB6, 0x0C, 0xF2, 0x31, 0x67, 0x88, 0x8F, 0x39, 0x43, 0x7C, 0xCC, 0x19, 0xE2, 0x63, 0x77, 0x60, 0x97, 0x81, 0x7C, 0x2C, 0xE0, 0x37, 0xF8, 0x58, 0x70, 0x07, 0xF4, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x3F, 0x03, 0xDE, 0x0C, 0x02, 0x0B, 0x56, 0x33, 0x90, 0x8F, 0xA9, 0x66, 0x10, 0xC4, 0xC7, 0x86, 0x41, 0x3E, 0x16, 0x08, 0xF2, 0x31, 0x9D, 0x0C, 0x82, 0xF8, 0x58, 0x2C, 0xD8, 0x61, 0x20, 0x1F, 0x0B, 0x4E, 0x41, 0x3E, 0x26, 0x0B, 0x78, 0x18, 0xC8, 0xC7, 0x82, 0x54, 0x90, 0x8F, 0xCD, 0x82, 0x1E, 0x06, 0xF2, 0xB1, 0x60, 0x15, 0xE4, 0x63, 0x85, 0x14, 0x1F, 0x23, 0xA4, 0xF8, 0xD8, 0x20, 0xC5, 0xC7, 0x06, 0x45, 0x3E, 0x36, 0x2C, 0xF2, 0xB1, 0x81, 0x91, 0x8F, 0x0D, 0x18, 0x7C, 0x6C, 0xC0, 0xE0, 0x63, 0x03, 0x06, 0x1F, 0x7B, 0x85, 0xBC, 0x0C, 0xE4, 0x63, 0x01, 0xCD, 0xC1, 0xC7, 0x82, 0x57, 0xA0, 0xCF, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x1C, 0x31, 0x1A, 0xD0, 0x67, 0x10, 0x58, 0x30, 0x9E, 0x81, 0x7C, 0x4C, 0x3C, 0x83, 0x20, 0x3E, 0x36, 0x0C, 0xF2, 0xB1, 0x40, 0x90, 0x8F, 0xC9, 0x65, 0x10, 0xC4, 0xC7, 0x30, 0x26, 0x3E, 0x76, 0x31, 0xF1, 0x31, 0x8B, 0x89, 0x8F, 0x0D, 0x84, 0x7C, 0x6C, 0x28, 0xE4, 0x63, 0x83, 0x21, 0x1F, 0x1B, 0x24, 0xF8, 0xD8, 0x20, 0xC1, 0xC7, 0x06, 0x09, 0x3E, 0x46, 0x8F, 0xC1, 0x8D, 0x06, 0x30, 0x18, 0x6E, 0x08, 0xF8, 0x33, 0x00, 0x83, 0x59, 0x86, 0x41, 0x08, 0xAC, 0x2C, 0x83, 0xF9, 0x0C, 0xE4, 0x63, 0x65, 0x19, 0xD0, 0x67, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xC8, 0x34, 0x58, 0xD1, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xA3, 0x4C, 0x03, 0x16, 0x0D, 0x04, 0x23, 0x84, 0xF8, 0x18, 0x21, 0xC4, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0x31, 0x0D, 0x62, 0x34, 0x20, 0x06, 0xFB, 0x0C, 0xEA, 0x33, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x4D, 0x83, 0x19, 0x0D, 0x02, 0x0B, 0x4E, 0x33, 0x90, 0x8F, 0x09, 0xA9, 0x19, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x36, 0x0D, 0x68, 0x34, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x68, 0xD3, 0xA0, 0x46, 0x03, 0xC1, 0x84, 0xFF, 0x0C, 0xE4, 0x63, 0x02, 0x88, 0x06, 0xF2, 0x31, 0x41, 0x44, 0x03, 0xF8, 0x98, 0x30, 0xA2, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x6A, 0xD3, 0x60, 0x47, 0x03, 0x21, 0x60, 0x16, 0x6B, 0x4A, 0x34, 0x80, 0x8F, 0x41, 0xB0, 0x19, 0xC0, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0x38, 0x0D, 0x7C, 0x34, 0x08, 0xA0, 0x11, 0x0D, 0x44, 0x34, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xC3, 0x4E, 0x03, 0x30, 0x0D, 0x02, 0x0B, 0x68, 0x33, 0x90, 0x8F, 0x09, 0xB6, 0x19, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x3C, 0x0D, 0xC2, 0x34, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xD0, 0xD3, 0x40, 0x4C, 0x03, 0xC1, 0x04, 0x16, 0x0D, 0xE4, 0x63, 0x42, 0x8B, 0x06, 0xF2, 0x31, 0xE1, 0x45, 0x03, 0xF8, 0x98, 0x00, 0xA3, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xD2, 0xD3, 0x00, 0x4D, 0x03, 0x21, 0x60, 0x30, 0xCB, 0x64, 0x34, 0x80, 0x8F, 0x71, 0xBD, 0x19, 0xC0, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0x3E, 0x0D, 0xD6, 0x34, 0xF0, 0x02, 0x18, 0x0D, 0x5E, 0x34, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x63, 0x54, 0x83, 0x36, 0x0D, 0x02, 0x0B, 0xC2, 0x33, 0x90, 0x8F, 0x09, 0xE3, 0x19, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x53, 0x0D, 0xDC, 0x34, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x38, 0xD5, 0xE0, 0x4D, 0x03, 0xC1, 0x84, 0x1C, 0x0D, 0xE4, 0x63, 0x82, 0x8E, 0x06, 0xF2, 0x31, 0x81, 0x47, 0x03, 0xF8, 0x98, 0xD0, 0xA3, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x3A, 0xD5, 0xA0, 0x4E, 0x03, 0x21, 0x30, 0x03, 0x66, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0x54, 0x0D, 0xEC, 0x34, 0xC8, 0x98, 0x1D, 0x0D, 0x74, 0x34, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xC3, 0x55, 0x03, 0x3C, 0x0D, 0x02, 0x0B, 0xD8, 0x33, 0x90, 0x8F, 0x09, 0xEE, 0x19, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x58, 0x0D, 0xF2, 0x34, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x90, 0xD5, 0x40, 0x4F, 0x03, 0xC1, 0x04, 0x32, 0x0D, 0xE4, 0x63, 0x42, 0x99, 0x06, 0xF2, 0x31, 0xE1, 0x4C, 0x03, 0xF8, 0x98, 0x80, 0xA6, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x92, 0xD5, 0x00, 0x54, 0x03, 0x21, 0x20, 0x83, 0xCB, 0xE4, 0x40, 0x0E, 0xE4, 0x63, 0x72, 0x20, 0x07, 0xF2, 0x31, 0x3A, 0x58, 0xD3, 0x40, 0x3E, 0x46, 0x07, 0x6C, 0x1A, 0xC8, 0xC7, 0xD6, 0x34, 0x10, 0xE2, 0x63, 0x6C, 0x1A, 0x08, 0xF1, 0x31, 0x43, 0x90, 0x8F, 0x19, 0x82, 0x7C, 0x2C, 0xA1, 0xE2, 0x63, 0xC1, 0x20, 0x1F, 0x1B, 0x03, 0x38, 0x88, 0x8F, 0x05, 0x85, 0x7C, 0x2C, 0x90, 0x03, 0xF8, 0x58, 0x16, 0xC4, 0xC7, 0x82, 0x02, 0x3E, 0x86, 0x04, 0xF2, 0xB1, 0x80, 0x80, 0x8F, 0x05, 0x33, 0x1A, 0xC8, 0xC7, 0x84, 0x19, 0x0D, 0xE4, 0x63, 0xC3, 0x8C, 0x06, 0xF2, 0xB1, 0x61, 0x46, 0x03, 0xF8, 0x58, 0x8A, 0x06, 0x43, 0x7C, 0x8C, 0x46, 0x83, 0x21, 0x3E, 0x36, 0xC8, 0x82, 0x7C, 0x6C, 0x90, 0x05, 0xF9, 0xD8, 0x20, 0x0B, 0xF2, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x6D, 0x5D, 0x83, 0x59, 0x0D, 0x52, 0x34, 0x40, 0xD7, 0x60, 0x34, 0x21, 0x08, 0x2E, 0x30, 0xCA, 0x02, 0xFC, 0x0C, 0xE4, 0x63, 0x02, 0x7E, 0x06, 0xF2, 0x31, 0xA1, 0x4E, 0x03, 0xF8, 0x98, 0x60, 0xA7, 0x01, 0x7C, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xC8, 0xD7, 0x00, 0x5C, 0x03, 0x61, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x7D, 0x0D, 0xC2, 0x35, 0x10, 0x8C, 0x10, 0xE2, 0x63, 0x84, 0x10, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0xF0, 0x35, 0x30, 0xD7, 0x80, 0x18, 0x56, 0x35, 0x50, 0xD5, 0x60, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x7F, 0x0D, 0xD0, 0x35, 0x08, 0x2C, 0xE0, 0xD1, 0x40, 0x3E, 0x26, 0xF8, 0x68, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x42, 0x36, 0x48, 0xD7, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x43, 0x64, 0x03, 0x75, 0x0D, 0x04, 0x13, 0x68, 0x35, 0x90, 0x8F, 0x09, 0xB5, 0x1A, 0xC8, 0xC7, 0x84, 0x5B, 0x0D, 0xE0, 0x63, 0x02, 0xAE, 0x06, 0xF0, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x4A, 0x64, 0x03, 0x78, 0x0D, 0x84, 0x80, 0x59, 0xAC, 0xD1, 0xD5, 0x00, 0x3E, 0x06, 0x95, 0x69, 0x00, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x4A, 0x36, 0x98, 0xD7, 0x20, 0x80, 0x70, 0x35, 0xB8, 0xD5, 0x60, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0x95, 0x0D, 0xEA, 0x35, 0x08, 0x2C, 0x48, 0xD3, 0x40, 0x3E, 0x26, 0xAC, 0x69, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x5C, 0x36, 0xB0, 0xD7, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xE3, 0x65, 0x83, 0x7B, 0x0D, 0x04, 0x13, 0xC2, 0x35, 0x90, 0x8F, 0x09, 0xE2, 0x1A, 0xC8, 0xC7, 0x04, 0x72, 0x0D, 0xE0, 0x63, 0x42, 0xB9, 0x06, 0xF0, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0xEA, 0x65, 0x83, 0x7E, 0x0D, 0x84, 0x80, 0xC1, 0x2C, 0x3B, 0xD7, 0x00, 0x3E, 0xC6, 0xC9, 0x69, 0x00, 0x9F, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x64, 0x36, 0x00, 0xD9, 0xC0, 0x0B, 0xCA, 0x35, 0x20, 0xD7, 0x60, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x9C, 0x0D, 0x44, 0x36, 0x08, 0x2C, 0xB0, 0xD3, 0x40, 0x3E, 0x26, 0xE0, 0x69, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0x76, 0x36, 0x18, 0xD9, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x83, 0x67, 0x03, 0x92, 0x0D, 0x04, 0x13, 0xDC, 0x35, 0x90, 0x8F, 0x09, 0xEF, 0x1A, 0xC8, 0xC7, 0x84, 0x78, 0x0D, 0xE0, 0x63, 0x82, 0xBC, 0x06, 0xF0, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0x8A, 0x67, 0x03, 0x95, 0x0D, 0x84, 0xC0, 0x0C, 0x98, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0xA8, 0x7A, 0x36, 0x58, 0xD9, 0x20, 0x63, 0xE0, 0x35, 0x78, 0xD7, 0x60, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xB1, 0x0D, 0x5A, 0x36, 0x08, 0x2C, 0x08, 0xD5, 0x40, 0x3E, 0x26, 0x8C, 0x6A, 0x20, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xCC, 0x36, 0x70, 0xD9, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xE3, 0x6C, 0x83, 0x97, 0x0D, 0x04, 0x13, 0xF2, 0x35, 0x90, 0x8F, 0x09, 0xFA, 0x1A, 0xC8, 0xC7, 0x04, 0x7E, 0x0D, 0xE0, 0x63, 0x42, 0xBF, 0x06, 0xF0, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x83, 0xEA, 0x6C, 0x83, 0x9A, 0x0D, 0x84, 0x80, 0x0C, 0x2E, 0x93, 0x03, 0x39, 0x90, 0x8F, 0xC9, 0x81, 0x1C, 0xC8, 0xC7, 0xE8, 0x00, 0x64, 0x03, 0xF9, 0x18, 0x1D, 0x84, 0x6C, 0x20, 0x1F, 0x03, 0xD9, 0x40, 0x88, 0x8F, 0x85, 0x6C, 0x20, 0xC4, 0xC7, 0x0C, 0x41, 0x3E, 0x66, 0x08, 0xF2, 0xB1, 0x84, 0x8A, 0x8F, 0x05, 0x83, 0x7C, 0x6C, 0x0C, 0xE0, 0x20, 0x3E, 0x16, 0x14, 0xF2, 0xB1, 0x40, 0x0E, 0xE0, 0x63, 0x59, 0x10, 0x1F, 0x0B, 0x0A, 0xF8, 0x18, 0x12, 0xC8, 0xC7, 0x50, 0x41, 0x5F, 0x03, 0xF8, 0x18, 0x2A, 0xEC, 0x6B, 0x00, 0x9F, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xFE, 0x36, 0x30, 0xDB, 0x40, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x03, 0x74, 0x83, 0xB3, 0x0D, 0x04, 0x23, 0x84, 0xF8, 0x18, 0x21, 0xC4, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0xBF, 0x0D, 0xD8, 0x36, 0x20, 0x86, 0x98, 0x0D, 0x60, 0x36, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x83, 0x74, 0x03, 0xB7, 0x0D, 0x02, 0x0B, 0xC4, 0x35, 0x90, 0x8F, 0x09, 0xE4, 0x1A, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xD3, 0x0D, 0xDE, 0x36, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x40, 0xDD, 0x00, 0x6E, 0x03, 0xC1, 0x04, 0x9D, 0x0D, 0xE4, 0x63, 0xC2, 0xCE, 0x06, 0xF2, 0x31, 0xA1, 0x67, 0x03, 0xF8, 0x98, 0xE0, 0xB3, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x42, 0xDD, 0xC0, 0x6E, 0x03, 0x21, 0x60, 0x16, 0x6B, 0xC0, 0x36, 0x80, 0x8F, 0x41, 0xEB, 0x1A, 0xC0, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0xD5, 0x0D, 0xF2, 0x36, 0x08, 0x20, 0x9F, 0x0D, 0x7A, 0x36, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x76, 0x83, 0xBD, 0x0D, 0x02, 0x0B, 0xDE, 0x35, 0x90, 0x8F, 0x09, 0xF1, 0x1A, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xDA, 0x0D, 0xF8, 0x36, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0xA8, 0xDD, 0xA0, 0x6F, 0x03, 0xC1, 0x84, 0xB3, 0x0D, 0xE4, 0x63, 0x02, 0xDA, 0x06, 0xF2, 0x31, 0x41, 0x6D, 0x03, 0xF8, 0x98, 0xB0, 0xB6, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0xAA, 0xDD, 0x60, 0x74, 0x03, 0x21, 0x60, 0x30, 0xCB, 0xDA, 0x36, 0x80, 0x8F, 0x71, 0xF8, 0x1A, 0xC0, 0x67, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0x2A, 0xDC, 0x0D, 0x4C, 0x37, 0xF0, 0x82, 0xB5, 0x0D, 0xD4, 0x36, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xC3, 0x77, 0x03, 0xD4, 0x0D, 0x02, 0x0B, 0xF8, 0x35, 0x90, 0x8F, 0x09, 0xFE, 0x1A, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x8E, 0xF0, 0x0D, 0x52, 0x37, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x10, 0xDF, 0x40, 0x75, 0x03, 0xC1, 0x04, 0xBA, 0x0D, 0xE4, 0x63, 0x42, 0xDD, 0x06, 0xF2, 0x31, 0xE1, 0x6E, 0x03, 0xF8, 0x98, 0x80, 0xB7, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x12, 0xDF, 0x00, 0x76, 0x03, 0x21, 0x30, 0x03, 0x66, 0xC4, 0x20, 0x01, 0x40, 0x10, 0x0C, 0xAA, 0xF1, 0x0D, 0x62, 0x37, 0xC8, 0x18, 0xBB, 0x0D, 0xEA, 0x36, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x23, 0x7D, 0x83, 0xD9, 0x0D, 0x02, 0x0B, 0x4E, 0x36, 0x90, 0x8F, 0x09, 0x29, 0x1B, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0xF6, 0x0D, 0x68, 0x37, 0x10, 0x46, 0x0C, 0x0C, 0x00, 0x04, 0xC1, 0xE0, 0x68, 0xDF, 0xA0, 0x76, 0x03, 0xC1, 0x84, 0xBF, 0x0D, 0xE4, 0x63, 0x02, 0xE8, 0x06, 0xF2, 0x31, 0x41, 0x74, 0x03, 0xF8, 0x98, 0x30, 0xBA, 0x01, 0x7C, 0x46, 0x0C, 0x12, 0x00, 0x04, 0xC1, 0xA0, 0x6A, 0xDF, 0x60, 0x77, 0x03, 0x21, 0x20, 0x83, 0xCB, 0xE4, 0x40, 0x0E, 0xE4, 0x63, 0x72, 0x20, 0x07, 0xF2, 0x31, 0x3A, 0x30, 0xDD, 0x40, 0x3E, 0x46, 0x07, 0xA7, 0x1B, 0xC8, 0xC7, 0x4C, 0x37, 0x10, 0xE2, 0x63, 0xA7, 0x1B, 0x08, 0xF1, 0x31, 0x43, 0x90, 0x8F, 0x19, 0x82, 0x7C, 0x2C, 0xA1, 0xE2, 0x63, 0xC1, 0x20, 0x1F, 0x1B, 0x03, 0x38, 0x88, 0x8F, 0x05, 0x85, 0x7C, 0x2C, 0x90, 0x03, 0xF8, 0x58, 0x16, 0xC4, 0xC7, 0x82, 0x02, 0x3E, 0x86, 0x04, 0xF2, 0xB1, 0x53, 0x50, 0x05, 0xF8, 0x58, 0x50, 0xC4, 0xC7, 0x82, 0x21, 0x3E, 0x16, 0x88, 0x6E, 0x20, 0x9F, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x58, 0x4A, 0x38, 0x30, 0xDF, 0x40, 0x10, 0x04, 0xB6, 0x0D, 0xD6, 0x36, 0x50, 0xDB, 0xC0, 0x02, 0xD2, 0x0D, 0xE4, 0x63, 0xC1, 0xDA, 0x06, 0xF0, 0xB1, 0x80, 0x80, 0xCF, 0x68, 0x42, 0x4E, 0x00, 0x17, 0x18, 0x76, 0x3A, 0x61, 0x98, 0xF1, 0x6C, 0x20, 0xD0, 0xC7, 0x76, 0x36, 0x10, 0xE8, 0x63, 0x42, 0xDC, 0x06, 0xF2, 0xB1, 0x40, 0x90, 0x8F, 0xB9, 0x6D, 0x40, 0xC4, 0xC7, 0x84, 0x40, 0x3E, 0x06, 0xB7, 0x41, 0x11, 0x1F, 0x13, 0x02, 0xF9, 0x8C, 0x18, 0x18, 0x00, 0x08, 0x82, 0xC1, 0x61, 0xC3, 0x01, 0xFC, 0x06, 0x81, 0x05, 0x77, 0x1B, 0xC8, 0x67, 0xC4, 0xC0, 0x00, 0x40, 0x10, 0x0C, 0x0E, 0x1C, 0x0E, 0xE2, 0x37, 0x08, 0x4C, 0x2D, 0x02, 0xF9, 0x58, 0x00, 0xC9, 0xC7, 0xD6, 0x62, 0x90, 0x8F, 0x05, 0x92, 0x7C, 0x8C, 0x2D, 0x0A, 0xF9, 0x58, 0x40, 0xC9, 0x67, 0xC4, 0xE0, 0x00, 0x40, 0x10, 0x0C, 0x12, 0x1F, 0x0E, 0x48, 0x38, 0x28, 0xD2, 0x37, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0xE4, 0x87, 0x83, 0x12, 0x0E, 0x08, 0xF5, 0x0D, 0x46, 0x0C, 0x0E, 0x00, 0x04, 0xC1, 0x20, 0x01, 0xE3, 0xC0, 0x84, 0x83, 0x61, 0x7D, 0x83, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xC4, 0x38, 0x30, 0xE1, 0x60, 0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x63, 0x8C, 0x83, 0x13, 0x0E, 0x86, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x38, 0xC8, 0x38, 0x40, 0xE1, 0x60, 0x18, 0x31, 0x70, 0x00, 0x10, 0x04, 0x03, 0x48, 0x8C, 0x83, 0xFE, 0x0D, 0xFE, 0x36, 0xD8, 0xDB, 0x40, 0x6F, 0x83, 0x12, 0x0E, 0x06, 0x21, 0x08, 0xDD, 0x80, 0x7F, 0x83, 0x59, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
        return true;
    }

    bytecode = default;
    return false;
}

This works great, but as you can imagine the performance hit on VS is pretty massive. I still need to switch to incremental generators (so right now I can't merge this at all as it's just unusable when typing), but even then, compiling a shader like this and generating the whole source can take a whole second (sometimes less, sometimes more, depends on the shader), so even with an incremental generator, this would result in VS hanging for over a second every time this runs. The idea is to actually only generate this under RegisterImplementationSourceOutput, but given I would still need this empty method to be created for IntelliSense, I'd then also have to use RegisterReferenceSourceOutput to create just an empty version of it, like:

[global::System.CodeDom.Compiler.GeneratedCode("ComputeSharp.SourceGenerators.IShaderGenerator", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCode]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::System.Obsolete("This method is not intended to be used directly by user code")]
readonly bool global::ComputeSharp.__Internals.IShader.TryGetBytecode(int threadsX, int threadsY, int threadsZ, out global::System.ReadOnlySpan<byte> bytecode)
{
    throw new NotImplementedException();
}

Is this feature still expected to make it into VS 17.1? 🙂

@sharwell
Copy link
Member

sharwell commented Dec 1, 2021

this would result in VS hanging for over a second every time this runs

The Visual Studio UI must not block on the completion of source generators for any feature. If you see any delays after converting to incremental source generators, it would indicate a high priority bug.

but given I would still need this empty method to be created for IntelliSense, I'd then also have to use RegisterReferenceSourceOutput to create just an empty version of it, like:

Is it possible to generate a partial method definition in a second file?

@Sergio0694
Copy link
Contributor

Sergio0694 commented Dec 1, 2021

"The Visual Studio UI must not block on the completion of source generators for any feature. If you see any delays after converting to incremental source generators, it would indicate a high priority bug."

Ah, didn't know that behavior was different with incremental generators compared to non incremental ones. Hopefully (if everything goes according to plan) I should be able to switch to incremental ones next week (assuming I don't hit a wall somewhere, I'll certainly try though). I'll let you know if I notice issues there 👍

"Is it possible to generate a partial method definition in a second file?"

I guess so, and in fact with incremental generators I was thinking I would generate each method (from that IShader interface you can see in the snippet I shared) in a different file, given each would have its own terminating node in the pipeline anyway (as each needs different inputs). So yeah it would be totally possible to do this, but my question is: if I only generate a partial method definition and not also one with the actual implementation, wouldn't IntelliSense show an error about a partial method with no implementation? 🤔

@Sergio0694
Copy link
Contributor

Additionally: I would still like this code to only ever run on actual builds, as it would greatly reduce the amount of times the native binaries are copied to %TEMP%, meaning the generator would generate less garbage on your machine. Or at least, it wouldn't fill up your hard disk with garbage that quick 😅

@333fred
Copy link
Member

333fred commented Dec 2, 2021

API Review

  • Most of the generator examples we've seen as motivating examples are v1 generators that, when factored into incremental generators, have perfectly fine performance.
  • Doesn't help with Hot Reload or EnC scenarios, which need full implementation results
    • Only for the application of edits, not for things like intellisense
  • Workaround is available: register 2 generators, one that registers partials with empty bodies, one that provides the real implementation with our existing API
    • If you did it this way, it would require partial consistency, whereas the ReferenceSourceOnly version could make it harder to ensure that these things line up.
      Would have errors
  • Might have been nice if we had done a slightly different design. What if we just did RegisterSourceOutput, and put a flag on it?
    • Would that cause us to have to run generators twice, even if they didn't check that flag?
  • Can RegisterReferenceSourceOutput actually change the reference assembly output?
    • They probably can do that, so we're ok
  • Might need a slightly better name
    • We'll bikeshed over this when we have perf data.

Conclusion

We think the API shape is reasonable (modulo the name), but we would like data on whether it actually helps our motivating generators before shipping the API for real.

@333fred 333fred added api-needs-work API needs work before it is approved, it is NOT ready for implementation and removed api-ready-for-review API is ready for review, it is NOT ready for implementation labels Dec 2, 2021
@jinujoseph jinujoseph modified the milestones: 17.1, 17.2 Mar 2, 2022
@YairHalberstadt
Copy link
Contributor

YairHalberstadt commented Apr 3, 2022

Most of the generator examples we've seen as motivating examples are v1 generators that, when factored into incremental generators, have perfectly fine performance.

I've described the difficulty with moving StrongInject to IncrementalGenerators here. @sharwell did suggest a strategy to make them properly incremental, but the strategy had very strong disadvantages. Furthermore, further analysis showed that this would actually hugely decrease perf, as it would require realizing all public symbols on every single edit, just in case they're needed, which is incredibly expensive.

For my largest user, being able to write a reference implementation would reduce StrongInject overhead when running in the IDE by about 85%.

As such I would benefit hugely from this API.

@jcouv jcouv modified the milestones: 17.2, 17.3 May 14, 2022
@Sergio0694
Copy link
Contributor

Question: what would the UX be in Visual Studio? Specifically, if I have a node that then has both RegisterReferenceSourceOutput with just an empty skeleton, and RegisterImplementationSourceOutput with the full source, will the latter be invoked even if I'm not doing a full build, if I have the generated file opened in solution explorer? That is, it'd be awesome having this API to allow Roslyn to skip expensive generation when the user is just typing, but it would still be nice if it was smart enough to still invoke the full generation output node if the user is specifically looking at the generated file to double check what code is being produced by the generator. In other words, non-builds should still invoke the implementation source output node if the file from the analyzer node is opened in the IDE and the user is looking at it.

Would this be doable, and/or was this planned? 🙂

@lsoft
Copy link

lsoft commented Jun 15, 2022

As @YairHalberstadt, I have difficulties to switch my SG-based DI from old-SG to incremental SG (for same reasons).

If I understand the things correctly, RegisterReferenceSourceOutput will resolve my difficulties completely, as I described here.

I'm really looking forward to this. Thank you.

@jasonmalinowski
Copy link
Member

@Sergio0694 Ideally we'd give you a switcher to switch between both variants, but in absence of that we'd absolutely show implementation over the design time, since you need to be able to set breakpoints in the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api-needs-work API needs work before it is approved, it is NOT ready for implementation Area-Compilers Concept-API This issue involves adding, removing, clarification, or modification of an API. Feature Request New Feature - Source Generators Source Generators
Projects
Status: No status
Development

No branches or pull requests

10 participants