Tutorial: Rendering Text

The following sections provide a tutorial on how to create a program to render text. The program is intended as a utility to support adding instrumentation, such as debug text, to your apps. The color, size, and location of the text are set in the code. The font, and available set of characters, are fixed, and determined by the contents of a texture (.dds) file.

Creating a project

First, create a new project for Xbox One by using a template supplied with the XDK.

To create a new project

  1. On your development PC, in Visual Studio 2017, open the New Project window by selecting File > New > Project… Under Installed > Templates > Visual C++ > Xbox One > XDK > <Your XDK version>, select the Direct3D 11 Game template.
    Do not use spaces or other non-alphanumeric characters in the project name. Enter an appropriate name, such as TextDisplay.

Adding pixel and vertex shaders

Next, add source code for the pixel shader and vertex shader.

To add source code for a pixel shader

  1. Select the project in the Solution Explorer.
  2. On the Project menu, click Add New Item…
  3. Select HLSL in the tree, and then select Pixel Shader File (.hlsl).
  4. Click Add.
  5. Replace the default code for the pixel shader with the following:
      //--------------------------------------------------------------------------------------
      //
      // This is a pixel shader used to render text sprites.
      //
      // Copyright (c) Microsoft Corporation. All rights reserved.
      //--------------------------------------------------------------------------------------
          
      struct VS_OUTPUT
      {
        float4 Diffuse    : COLOR0;         // vertex diffuse color
        float2 TexCoord   : TEXCOORD0;      // vertex position
        float4 Position   : SV_Position;    // vertex position
      };
            
      Texture2D tex2D;
            
      SamplerState linearSampler
      {
        Filter= MIN_MAG_MIP_LINEAR;
        AddressU = WRAP;
        AddressV = Wrap;
      };
          
      float4 main( VS_OUTPUT In ) : SV_Target
      {
        float alpha = tex2D.Sample( linearSampler, In.TexCoord ).r;
        return In.Diffuse * float4( 1, 1, 1, alpha );
      }  
    
  6. Save the pixel shader file.
  7. Right-click PixelShader.hlsl in the Solution Explorer and choose Properties from the context menu.
  8. For Configuration, select All Configurations, and then select HLSL Compiler > All Options in the tree control.
  9. Set Header File Name to PixelShader.h.
  10. Set Header Variable Name to g_ps_main.
  11. Clear the value for Object File Name.
  12. Set Shader Model to Shader Model 5.0 (/5_0).
  13. Verify your changes, and then click OK.

To add source code for a vertex shader

  1. Select the project in the Solution Explorer.
  2. On the Project menu, click Add New Item…
  3. Select HLSL in the Add New Item dialog box, and select Vertex Shader File (.hlsl).
  4. Click Add.
  5. Replace the default code for the vertex shader with the following:
      //--------------------------------------------------------------------------------------
      //
      // This is the vertex shader used for sprite rendering.
      //
      // Copyright (c) Microsoft Corporation. All rights reserved.
      //--------------------------------------------------------------------------------------
          
      cbuffer cb0
      {
        row_major float4x4 mWorldViewProj : packoffset(c0);
      };
          
      struct VS_INPUT
      {
        float2 Position   : POSITION;       // vertex position
        float4 Diffuse    : COLOR0;         // vertex diffuse color
        float2 TexCoord   : TEXCOORD0;      // vertex position
      };
          
      struct VS_OUTPUT
      {
        float4 Diffuse    : COLOR0;         // vertex diffuse color
        float2 TexCoord   : TEXCOORD0;      // vertex position
        float4 Position   : SV_Position;    // vertex position
      };
          
      VS_OUTPUT main( VS_INPUT In )
      {
        VS_OUTPUT Out;
          
        float4 Position = mul( float4( In.Position.xy, 0, 1 ), mWorldViewProj );
        Out.Position = Position;
        Out.Diffuse = In.Diffuse;
        Out.TexCoord = In.TexCoord;
          
        return Out;
      }  
    
  6. Save the vertex shader file.
  7. Right-click VertexShader.hlsl in the Solution Explorer and choose Properties from the context menu.
  8. Select All Configurations for Configurations, and then select HLSL Compiler > All Options in the tree control.
  9. Set Header File Name to VertexShader.h.
  10. Set Header Variable Name to g_vs_main.
  11. Clear the value for Object File Name.
  12. Set Shader Model to Shader Model 5.0 (/5_0).
  13. Open Game.h in the editor.
  14. Add the following #include, using, and struct statements to Game.h, after the #include “StepTimer.h” statement:

    C++

      #include "PixelShader.h"
      #include "VertexShader.h"
          
      using namespace DirectX;
      using namespace DirectX::PackedVector;
          
      struct UIVERTEX
      {
        XMFLOAT2    Position;
        XMUBYTEN4   Color;
        XMFLOAT2    TexCoord;
      };  
    

Adding declarations for the text methods

Next, still in Game.h, add declarations to the header file.

To add declarations to the header file to draw text

  1. Add the following declarations to the end of the private section of the Game class.

    C++

      //
      // Declarations for drawing text
      //
          
      Microsoft::WRL::ComPtr<ID3D11InputLayout>         m_InputLayout;
      Microsoft::WRL::ComPtr<ID3D11Buffer>              m_VertexBuffer;
      Microsoft::WRL::ComPtr<ID3D11Buffer>              m_IndexBuffer;
      Microsoft::WRL::ComPtr<ID3D11Buffer>              m_ConstantBuffer;
      Microsoft::WRL::ComPtr<ID3D11VertexShader>        m_VertexShader;
      Microsoft::WRL::ComPtr<ID3D11PixelShader>         m_PixelShader;
      Microsoft::WRL::ComPtr<ID3D11SamplerState>        m_SamplerState;
      Microsoft::WRL::ComPtr<ID3D11SamplerState>        m_SamplerStatePoint;
      Microsoft::WRL::ComPtr<ID3D11ShaderResourceView>  m_TextureRV;
      Microsoft::WRL::ComPtr<ID3D11BlendState>          m_BlendStateAlpha;
      Microsoft::WRL::ComPtr<ID3D11BlendState>          m_BlendStateSolid;
      Microsoft::WRL::ComPtr<ID3D11DepthStencilState>   m_DepthStencilState;
      Microsoft::WRL::ComPtr<ID3D11RasterizerState>     m_RasterizerState;
            
      XMVECTOR                    m_vQuadOffset;
      UIVERTEX*                   m_pLockedVBData;
      WORD*                       m_pLockedIBData;
      UINT                        m_QuadCount;
      UINT                        m_StartQuadIndex;
      UINT                        m_MaxQuadCount;
          
      VOID AddQuad( CXMVECTOR vUpperLeft, CXMVECTOR vSize, FXMVECTOR vTexCoord, FXMVECTOR vTexCoordSize, const FLOAT ColorRGBA[4] );
      VOID StartQuads();
      VOID FlushQuads( BOOL FlushQuadCount );
      VOID DrawText( INT X, INT Y, FLOAT Size, WCHAR* strText, const FLOAT ColorRGBA[4] );  
    
  2. Save Game.h.

Add the text texture file

For this sample the texture file is stored in memory (not as a texture file), and is defined in the header file ui2.h. The file is an encoded version of the following image.

Note that there are additional shapes in this image, beyond the text characters, which can be used for further instrumentation methods, which are described in a later tutorial.

To add the texture as a header file

  1. Under the Project menu select Add New Item… to bring up the Add New Item dialog. Select Installed > Visual C++ > Code and Header File (.h).
  2. Name the header file ui2.h.
  3. Copy and paste the following code into ui2.h.

    Note To select and copy a code snippet from the documentation, click the Copy button if it is available; if not, triple-click the first line of code, then press Ctrl+C or right-click and select Copy.

    C++

            static const DWORD ui2_dds[] = {
              0x20534444, 0x0000007c, 0x00081007, 0x00000100, 0x00000100, 0x00008000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000004, 0x31545844, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xf7de0841, 0x50604000, 0x0000f7be, 0x60705855, 0x00000000, 0x00000000,
              0xffff0861, 0x40404000, 0x0020ffff, 0x5c000055, 0xf7be0821, 0x60559500, 0x0000f79e, 0x585c5555,
              0x00009cd3, 0xd5555555, 0x0841e75c, 0x8001b555, 0x0000ffdf, 0x57000055, 0xef5d0000, 0x1a152900,
              0xef7d0000, 0x50505000, 0x0000ffdf, 0x56000055, 0xef9d1082, 0x58552500, 0x0000f7de, 0x58565555,
              0xbdd70000, 0x40404000, 0x0000ffff, 0x58000055, 0xffff0000, 0x00555500, 0x0000ffdf, 0x55707055,
              0xce590000, 0x80808000, 0xffff0861, 0x05555500, 0xffff0000, 0x00555500, 0x0000ffdf, 0x55c0c055,
              0xef7d0000, 0x80000000, 0x0841ffff, 0xc003b555, 0xffff0821, 0x00555500, 0x0821ffff, 0x6b607e55,
              0x0000f7be, 0x25252555, 0xdefb0000, 0x01010100, 0x0000ce59, 0xd5d5d555, 0x0000ffdf, 0x70707055,
              0x0020ffff, 0x55353555, 0xf7be0000, 0x40555500, 0x0000ffdf, 0x58000055, 0xffff0000, 0x00050500,
              0x00000000, 0x00000000, 0xef9d0000, 0x00555500, 0x0000ffff, 0x0d000055, 0xce590000, 0x02020200,
              0x0821ffff, 0x35353555, 0xffff0861, 0x01010100, 0x0821ffff, 0x0d35d555, 0x0000f79e, 0x575c7055,
              0xbdd70000, 0x40404000, 0x0020ffff, 0x58585855, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0821ffdf, 0x0d0d0d55, 0x0000e75c, 0x585c5455, 0x0821ffff, 0x1595d555, 0xf7de0000, 0x15151500,
              0x0000f7be, 0x25252555, 0x0841f7be, 0x70585455, 0x00000000, 0x00000000, 0x0000ffff, 0x72727255,
              0x0020e73c, 0x15d55555, 0xef7d0000, 0x25555800, 0x0020ffdf, 0x2500e055, 0x0821ffff, 0x58565555,
              0x0000e73c, 0x95959555, 0xf7be0000, 0x05555500, 0x0841f7be, 0x95000055, 0x18a3ffff, 0x60505755,
              0x00000000, 0x00000000, 0x0861f7be, 0x6241c98d, 0x18c3ffff, 0x0d89c143, 0x00009cd3, 0x57555555,
              0xffff1062, 0x40404040, 0x0821ffff, 0x005c5c5c, 0xe71c0000, 0x95584040, 0x0841ffff, 0x55565c58,
              0xef7d0821, 0x50506040, 0x0821f7de, 0x56545c70, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xef7d0000, 0x50505050, 0x0000e73c, 0x56565656, 0xce590841, 0x00000040, 0x1082ffff, 0x42426070,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58585858, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xce590000, 0x80808080, 0xffff1082, 0x05050505, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x0d0d2535, 0x0841ef7d, 0x57565450, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000f7be, 0x25252525, 0xdefb0000, 0x01010101, 0x0000ce59, 0xd5d5d5d5, 0x0000ffdf, 0x70707070,
              0x00000000, 0x00000000, 0xdefb0000, 0x40404040, 0x0000f7be, 0x58585858, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffdf, 0x0d0d0d0d, 0xce590000, 0x02020202,
              0x0821ffff, 0x35353535, 0x1082ffff, 0x24945454, 0x0000e73c, 0x54586083, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58585858, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841ffff, 0xcdcdcd8d, 0x0000ef5d, 0x43627050, 0x1062ffff, 0xcd852535, 0x0841f7be, 0x41414342,
              0x0000f7be, 0x25252525, 0x18e3f79e, 0x070b8240, 0x0000dedb, 0x54575555, 0x0000ffff, 0x72727272,
              0x0000ffff, 0x090d0d25, 0x0000e73c, 0x5557565c, 0xef7d0000, 0x00000080, 0x0861ef5d, 0xc3424070,
              0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505, 0x0000632c, 0xd5555555, 0x20e4ffff, 0x60434342,
              0x0841ffff, 0x1595d555, 0x1062ffff, 0x005c5850, 0x0000f7be, 0x00352505, 0x0841ffff, 0x585c5456,
              0xffff1062, 0x40404040, 0x0821ffff, 0x5c5c5c00, 0x0000e73c, 0xd5150b80, 0xf7de1082, 0x25050900,
              0x0000f7be, 0x05050d0d, 0x0861ffdf, 0x54565757, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xef7d0000, 0x50505050, 0x0000e73c, 0x56565656, 0x00000000, 0x00000000, 0x20e4ffff, 0x62434343,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58580000, 0xffff0000, 0x00005555, 0xffff0000, 0x00000101,
              0xce590000, 0x80808080, 0xffff1082, 0x05055555, 0xffff0000, 0x00005555, 0xef7d0000, 0x00000505,
              0xffdf1062, 0x50585858, 0x00008c71, 0x54565757, 0x0000ffff, 0x55090955, 0x0020f79e, 0x42404055,
              0x0000f7be, 0x25252525, 0xf79e0000, 0x01015555, 0x0000ffdf, 0xd5d50000, 0x0000ffdf, 0x70707070,
              0x00000000, 0x00000000, 0xdefb0000, 0x40404040, 0x0000f7be, 0x58585858, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffdf, 0x0d0d0d0d, 0x0000632c, 0x56565454,
              0x0821ffff, 0x35353535, 0x18a3ffff, 0xd4340c08, 0x0841ffff, 0x60585655, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58585858, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841ffff, 0xcdcdcdcd, 0x1082ffff, 0x25058dc9, 0x10a2ffff, 0x50736149, 0xffff1082, 0x14141414,
              0x0000f7be, 0x25252525, 0x1082ffff, 0x57579737, 0xef7d1082, 0x96150509, 0x0000ffff, 0x72727272,
              0x0841ffff, 0x0d090909, 0x000031a6, 0x54575555, 0x00000000, 0x00000000, 0x0861f7be, 0x42c3c3c3,
              0x0000e73c, 0x95959595, 0xf79e0000, 0x05555505, 0x1062ffff, 0x55e00035, 0x0000f7be, 0x55555c70,
              0x0841f7de, 0xc98d0525, 0x0000f7de, 0x55555700, 0xffff0020, 0x00000055, 0x0000f79e, 0xc3426070,
              0xffff1062, 0x40404040, 0x0821ffff, 0x005c5c5c, 0x0000ffff, 0x00b5d555, 0x0000f7be, 0x5c706060,
              0xef5d0861, 0x00004060, 0x0000e75c, 0x03006058, 0xffff0000, 0x55020000, 0xffff0861, 0x15280000,
              0xef7d0000, 0x50505050, 0x0000f7be, 0x00565656, 0x18c3ffff, 0x000d9555, 0x1062ffdf, 0x575c5070,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x00585858, 0xffff0000, 0x55000000, 0xef9d0000, 0x15000000,
              0xce590000, 0x80808080, 0xffff1082, 0x05050505, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xef5d0000, 0x00806050, 0x0000f7de, 0x0380705c, 0x0000ffff, 0x00575555, 0x0841f79e, 0x40424242,
              0x0000f7be, 0x25252525, 0xdefb0000, 0x01010101, 0x0000ce59, 0xd5d5d5d5, 0x0000ffdf, 0x70707070,
              0x0020ffff, 0x35555555, 0xef7d0000, 0x55404040, 0x0000f7de, 0x00585858, 0xffff0000, 0x05000000,
              0xffdf0000, 0x40800000, 0x0000ffff, 0x00575555, 0x0841ef7d, 0x4083090d, 0x000031a6, 0x55555754,
              0x0821ffff, 0x35353535, 0xffff1062, 0x01010101, 0xffff0020, 0x80605896, 0xf7be0000, 0x25090200,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x00585858, 0xffff0000, 0x55000000, 0x0000f7de, 0x60555555,
              0x0841ffff, 0xcdcdcdcd, 0xffdf0020, 0x00004060, 0x0020ffff, 0x55555c58, 0xffff1082, 0x14141414,
              0x0000f7be, 0x25252525, 0xce590000, 0x02020202, 0x0000ef7d, 0x15250d01, 0x0000f79e, 0x70707070,
              0x18a3ffdf, 0x55152505, 0x0000f79e, 0x00705c56, 0xffff0821, 0x55608000, 0x0861ffff, 0x56587060,
              0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ef9d, 0x55555543, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe71c0000, 0x00000054,
              0xffff0841, 0x00000040, 0xffff0000, 0x00000055, 0x0000ffff, 0x55555580, 0x0000ffff, 0x55555557,
              0x00000000, 0x00000000, 0x00007bcf, 0x55555525, 0xffff0000, 0x00000055, 0xe75c0000, 0x00000029,
              0xef7d0000, 0x00000050, 0xffff0000, 0x00000055, 0x0841ffff, 0x55555578, 0x00000000, 0x00000000,
              0xbdd70000, 0x00000040, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xef9d0000, 0x00000015,
              0xce590000, 0x00000080, 0xffff0841, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000ad75, 0x55555525, 0xffff0000, 0x00000055, 0xce990000, 0x00000029,
              0x0000f7be, 0x55555525, 0xdefb0000, 0x00000001, 0x0000ce59, 0x555555d5, 0x0000ffdf, 0x55555570,
              0x0020ffff, 0x55555535, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000005,
              0xef7d0000, 0x00000080, 0x0000ffff, 0x55555502, 0xdefb0000, 0x00000009, 0x00000000, 0x00000000,
              0x0020ffff, 0x55555535, 0xffff0841, 0x00000001, 0x00000000, 0x00000000, 0x0020ffff, 0x555555c2,
              0xbdd70000, 0x00000040, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0x0000f7de, 0x55555560,
              0x0020ffff, 0x555555cd, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffff0841, 0x00000014,
              0x0000f7be, 0x55555525, 0xce590000, 0x00000002, 0xce590000, 0x00000080, 0x0000ffdf, 0x55555570,
              0x00000000, 0x00000000, 0xef7d0000, 0x00000058, 0x0000ffff, 0x555555e0, 0x00000000, 0x00000000,
              0x0000e73c, 0x55555595, 0xef7d0000, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000f7de, 0x35555555, 0x0000f7de, 0x5c555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xce590000, 0x80000000, 0xffff0841, 0x05000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe75c0000, 0x56000000, 0x0020ffff, 0xe0555555,
              0x00000000, 0x00000000, 0xef7d0000, 0x58000000, 0x0020ffff, 0xe0555555, 0x00000000, 0x00000000,
              0xffff0841, 0x40000000, 0xffff0000, 0x55000000, 0xe75c0000, 0x95000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xf79e0841, 0x58000000, 0xffff0000, 0x95000000, 0xe75c0020, 0x02000000,
              0x0000ffdf, 0x03555555, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xef9d0000, 0x55000000,
              0x0000f7be, 0x25555555, 0xdefb0000, 0x01000000, 0x00000000, 0x00000000, 0x0000ffdf, 0x70555555,
              0xffdf0841, 0x94000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe73c0000, 0x58000000,
              0x0000f79e, 0x43555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0821ffff, 0x85555555,
              0xffdf0000, 0x58000000, 0x0000ffff, 0x56555555, 0x00000000, 0x00000000, 0x0000f7de, 0xc3555555,
              0xe73c0000, 0x54000000, 0x0000632c, 0x57555555, 0x00000000, 0x00000000, 0x0000ffff, 0x89555555,
              0x0000f7be, 0x25555555, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0x0000ffff, 0x60555555,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xce590000, 0x80808080, 0xffff1082, 0x05050505,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xe73c0821, 0x50506040, 0x0821ffff, 0x56565800, 0x0020ffff, 0x5555f580,
              0x18a3ffdf, 0x05251555, 0x0000f79e, 0x565c7000, 0xffff0821, 0x00806055, 0x0861ffdf, 0x40705856,
              0xffff1062, 0x40404040, 0x0821ffff, 0x5c5c5c00, 0x0000ffff, 0x15152d00, 0x0841ffff, 0x58585c56,
              0x0000ef5d, 0x353515d5, 0x0000ffff, 0x54547800, 0xffdf0861, 0x00008055, 0x0020ffff, 0x55555e5c,
              0x0000ffdf, 0x55555503, 0xef7d0000, 0x40404055, 0x0000f7de, 0x58585800, 0xef9d0000, 0x00000055,
              0x0000f7be, 0x25252525, 0xdefb0000, 0x01010101, 0x00000000, 0x00000000, 0x0000ffdf, 0x70707070,
              0x0000f79e, 0x25050d09, 0x0841ffff, 0x54565755, 0x0000632c, 0xd5555555, 0x0020ef9d, 0x706243c1,
              0x10a2ffdf, 0xc9c94141, 0x0000ef9d, 0x35155555, 0x0000f7de, 0x50585555, 0x18c3ffff, 0x49cdcd85,
              0x0841f7be, 0x55d51525, 0xef7d1062, 0x96150509, 0x0020e73c, 0x0d251555, 0x1082ef9d, 0x55545870,
              0x10a2ffff, 0x55953505, 0x0861ffff, 0x60505c56, 0xe73c0841, 0x60400000, 0x1062f7be, 0x54587043,
              0x0000f7be, 0x55555525, 0xffff0000, 0x00000055, 0x0000ffff, 0x0d35d500, 0x0841ffff, 0x565c7060,
              0x0000e73c, 0x95955555, 0x0861ffff, 0x5e000f55, 0x10a2ffff, 0x2500e055, 0xf79e0000, 0x01020000,
              0x0000ffdf, 0x35353535, 0x0821ffff, 0xc82cdc5c, 0x0000f7be, 0x35008055, 0x0000ef5d, 0x505c5755,
              0x0000632c, 0xd5555555, 0x0020f79e, 0x8003b555, 0xffff0841, 0x00555500, 0x0841f7de, 0x7b705e55,
              0x0000e73c, 0x95555555, 0x0841f7be, 0x60020d55, 0x0000ffff, 0x2d80f8d5, 0xffff1082, 0x05050505,
              0x0000ffff, 0xd5555555, 0x0861f7de, 0x60032555, 0xf7be0020, 0x60559500, 0x0821ffff, 0x5c565555,
              0x0000f7be, 0x55252555, 0xf79e0000, 0x50555550, 0x0000f7de, 0x56000056, 0x0000ffdf, 0x55c0c055,
              0x0841ffff, 0x0909090d, 0x000031a6, 0x55555754, 0x00000000, 0x00000000, 0x41e8ffdf, 0xc1c14343,
              0xffff1062, 0x40404040, 0x0821ffff, 0x00005c5c, 0x18c3ffdf, 0x70800935, 0x0020ffff, 0x5555565c,
              0xffff0841, 0x00008040, 0x0000e75c, 0xb5030070, 0xef7d0821, 0x55950200, 0x0000ef5d, 0x5c555555,
              0x00000000, 0x00000000, 0xdefb0000, 0x40404040, 0x0000f7be, 0x58585858, 0x00000000, 0x00000000,
              0x0000f7be, 0x25252525, 0xdefb0000, 0x01010101, 0x00000000, 0x00000000, 0x0000ffdf, 0x70707070,
              0x0841ffff, 0x55d59515, 0xef7d0821, 0x15250509, 0x0841ffff, 0x253515d5, 0xef5d0821, 0x02010905,
              0x10a2ffdf, 0x05058d8d, 0xef5d0841, 0x50506060, 0x18e3ffdf, 0x61637050, 0x1082ffff, 0x73616149,
              0x00000000, 0x00000000, 0x0841ef5d, 0x25350501, 0xf7be0000, 0x25052596, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x250d01c2, 0x0020e75c, 0x7040810d, 0x0000ffff, 0x55555557,
              0x00000000, 0x00000000, 0x0020ef9d, 0x25955555, 0x0841e73c, 0x5c704001, 0x00000000, 0x00000000,
              0x00009cd3, 0xd5555555, 0x0020ffff, 0x022d5555, 0x0000ffff, 0x00003535, 0x0020f7de, 0x5c5c5c54,
              0x0000ffdf, 0x35353535, 0x0000f7be, 0x5c5c5c70, 0x0000ad75, 0x5555d595, 0x0000ffdf, 0x60606070,
              0x0861ffff, 0x35351595, 0x0821ffff, 0x5c5c5870, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841ef9d, 0x05252515, 0x0000e73c, 0x54545c58, 0x0000a514, 0x95959515, 0xffff1082, 0x05050505,
              0x0000ef7d, 0x25253515, 0x0861ffff, 0x00545c58, 0x0841ffff, 0x00d5d595, 0x0020ffff, 0x70705058,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0x0000e73c, 0x56565656, 0x00000000, 0x00000000,
              0x0000ffff, 0x250d0d09, 0x0000e73c, 0x5c565755, 0xef7d0000, 0x80000000, 0x1082e75c, 0x704042c3,
              0xffff1062, 0x40404040, 0x0861ffff, 0x5c5c5c5c, 0x0821ef7d, 0x05098340, 0xf7de0841, 0x01020000,
              0x000031a6, 0xc5555555, 0x00000000, 0x00000000, 0x0841ffff, 0x5555d52d, 0xf7be1082, 0x25252505,
              0x00000000, 0x00000000, 0xdefb0000, 0x40404040, 0x0000f7be, 0x58585858, 0x00000000, 0x00000000,
              0xffdf0861, 0x40606060, 0xef9d0861, 0x09010101, 0x00009cd3, 0x15d55555, 0x0861ffff, 0x58505070,
              0x00000000, 0x00000000, 0x0000f7be, 0x0d0983c2, 0x18c3ffff, 0x42c18d05, 0x00009cd3, 0x55555557,
              0x0821f79e, 0x35252505, 0x0841ef5d, 0x424acb8f, 0x0841ffdf, 0x8d8dc941, 0x0000e71c, 0x50507272,
              0x0020ffff, 0x95555555, 0x1062ffdf, 0x5862c10d, 0x18e3f79e, 0x250d0140, 0x0841ffff, 0x5c565555,
              0x00000000, 0x00000000, 0xe71c0000, 0x40404040, 0x0000f7de, 0x58585858, 0x00000000, 0x00000000,
              0x0000d6ba, 0x15d55555, 0x0841ffdf, 0x5860830d, 0xef7d0000, 0x00000002, 0x00000000, 0x00000000,
              0x0861ffdf, 0x25253515, 0x1082ffff, 0x56565470, 0x0000ffff, 0x35353535, 0x0000ffdf, 0x5c5c5c5c,
              0x0000ffdf, 0x35353535, 0x0000ffff, 0x5c5c5c5c, 0x0821ce79, 0x15d55555, 0x0821f7be, 0x50706060,
              0x0861ffff, 0x95153535, 0x0821ffff, 0x70585c5c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841f79e, 0x35250505, 0x0821f7be, 0x5c545456, 0x1082ffff, 0x15d5d5d5, 0xffff1082, 0x05050505,
              0x0841ffdf, 0x15352525, 0x0841ffff, 0x585c5400, 0xffff0000, 0x00000055, 0x0020ffff, 0x55555570,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0x0000e73c, 0x56565656, 0x00000000, 0x00000000,
              0x0020e73c, 0x5555d515, 0xf79e0000, 0x00585525, 0x0861ffff, 0x0d800025, 0x0000ef9d, 0x5c555658,
              0xffff0861, 0x00404040, 0x0821ffff, 0x555c5c5c, 0xf7de0841, 0x00008040, 0x0861f7be, 0x55c26050,
              0x0020ffff, 0x55d53535, 0x1062ffff, 0x550b005e, 0x1062ffdf, 0x55e00035, 0x0821f79e, 0x55555c50,
              0x00000000, 0x00000000, 0xdefb0000, 0x00404040, 0x0000f7be, 0x55585858, 0x00000000, 0x00000000,
              0x0000b596, 0x5555d515, 0xef9d0000, 0x00585525, 0x0000f7de, 0x55e00025, 0xf79e0000, 0x00000209,
              0x00000000, 0x00000000, 0x0000ef7d, 0x55352505, 0x0841f7de, 0x55585060, 0x00000000, 0x00000000,
              0x0821f7be, 0x55151535, 0x0000f7be, 0x55707060, 0xef7d0821, 0x00605050, 0x0821ffff, 0x555c5c58,
              0xf7be1082, 0x00945060, 0x0020e73c, 0x55555754, 0x0000d6ba, 0x5555d515, 0xf7be1082, 0x00961505,
              0x00000000, 0x00000000, 0xdefb0000, 0x00404040, 0x0000f7be, 0x55585858, 0x00000000, 0x00000000,
              0x0000ffff, 0x550d0d25, 0xf7be0841, 0x00555501, 0xffff0000, 0x00555500, 0xef9d0000, 0x00151500,
              0xe73c0020, 0x00004060, 0xffff0020, 0x00565509, 0x0000f7be, 0x555ea00b, 0x0841ffff, 0x55c2c05c,
              0x0000f7de, 0x55353535, 0x0000ffff, 0x55b608e0, 0x0841ffff, 0x55e00025, 0xffff0000, 0x00000209,
              0x0000632c, 0x555555d5, 0x0020f79e, 0x55b50380, 0x0000ffff, 0x55000057, 0x1082ffff, 0x555e707f,
              0x0020ef7d, 0x5555d515, 0x0000ffdf, 0x550b0070, 0x0841ef9d, 0x55dce009, 0xffff1062, 0x00050505,
              0xef7d0000, 0x00000080, 0xef7d0841, 0x00605695, 0xffff0000, 0x00555500, 0xffff0000, 0x000a252a,
              0x00000000, 0x00000000, 0xef7d0000, 0x00505050, 0x0000e73c, 0x55565656, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000f7be, 0x5555d535, 0x1082ffff, 0x556d82c0,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000f7de, 0x35353555, 0x0000f7de, 0x5c5c5c55, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959555, 0xffdf0000, 0x25252500, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ef7d, 0x03030355, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404000, 0x0020ffff, 0x58585855, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x55353555, 0xffff0000, 0x00555500, 0xffdf0000, 0x25252500, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xf7be0000, 0x58000000, 0x0841ffff, 0x78555555, 0xffff0841, 0x05000000,
              0x0000ffdf, 0x35353535, 0x0000ffff, 0xdc5c5c5c, 0x0020ffff, 0x82555555, 0x0000ce59, 0x57555555,
              0x0020ffff, 0x35555555, 0xffff0000, 0x55000000, 0x0000ffdf, 0x70555555, 0x00000000, 0x00000000,
              0x0000e73c, 0x95555555, 0xffff0000, 0x55000000, 0xffff0000, 0x95000000, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58585858, 0xdefb0020, 0x40000000, 0x0821ffff, 0x58555555,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x25252525, 0x00000000, 0x00000000,
              0xef5d0000, 0x58000000, 0x0020f7de, 0x0d555555, 0x0020bdd7, 0x17555555, 0x0841ffff, 0x58555555,
              0x0000f7de, 0x35555555, 0x0000ffff, 0xdc555555, 0x0020ffff, 0x82555555, 0x0000ce59, 0x57555555,
              0x00000000, 0x00000000, 0xef7d0000, 0x58000000, 0x0000ffff, 0xe0555555, 0x00000000, 0x00000000,
              0x0000f7de, 0x35555555, 0x0020ffff, 0xdc555555, 0x0000f7de, 0x80555555, 0x00009cd3, 0x57555555,
              0x00000000, 0x00000000, 0xffdf0020, 0x58000000, 0x0000f7be, 0xf8555555, 0xffff0000, 0x05000000,
              0x00000000, 0x00000000, 0x0000ef5d, 0x42555555, 0xef7d0000, 0x58000000, 0xffdf0000, 0x25000000,
              0x00000000, 0x00000000, 0xe73c0000, 0x58000000, 0x0000f7de, 0x80555555, 0xe75c0020, 0x02000000,
              0xef7d0000, 0x50000000, 0x0821ffff, 0x000d0d55, 0xffff0861, 0x55000000, 0x0000ffdf, 0x70555555,
              0x0000f7de, 0x35555555, 0x0000f7de, 0x5c555555, 0x0000e73c, 0x95555555, 0xef7d0000, 0x05000000,
              0x0000f7de, 0x09555555, 0x00009cd3, 0x57555555, 0x00000000, 0x00000000, 0xf7be0841, 0x14000000,
              0x0000ef7d, 0x25359555, 0x0861ffff, 0x54586002, 0x0020ffff, 0xd5952d80, 0xffff1082, 0x05050505,
              0x0000ffdf, 0x35353535, 0x0020ffdf, 0x5870882c, 0x0020f7de, 0x95953500, 0x0000ef7d, 0x5050585c,
              0x0020ffff, 0x55555535, 0x0000ffdf, 0xd5d5d500, 0x0000ffdf, 0x70707070, 0x00000000, 0x00000000,
              0x0000e73c, 0x55555595, 0xffff0000, 0x00000055, 0xffff0000, 0x94949495, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0821ffff, 0xd8585858, 0x0821e73c, 0x70420905, 0xce590821, 0x00000001,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x25252525, 0x00000000, 0x00000000,
              0x0841f7be, 0x0d0d0d0d, 0x0861f7de, 0x961c0003, 0xef5d18c3, 0x05155951, 0x0000f7be, 0x43434060,
              0x0000ffdf, 0x35353535, 0x0020ffdf, 0x5870882c, 0x0020f7de, 0x95953500, 0x0000ef7d, 0x5050585c,
              0xef7d1062, 0x50604000, 0xef9d0000, 0x01092555, 0x0841ffff, 0xd5952500, 0x0000f79e, 0x60705856,
              0x0000ffdf, 0x35353535, 0x18c3f7be, 0x5c50c02c, 0x0841f7de, 0x55d53500, 0x0821f7de, 0x6070505c,
              0x0861ffff, 0x25359555, 0xef9d0000, 0x01092555, 0x1082ffff, 0xd5950d80, 0xffff0000, 0x05050505,
              0x00000000, 0x00000000, 0x0861e75c, 0xc2020242, 0x0000e73c, 0x55575800, 0x0000f7be, 0x55636360,
              0x0821b5b6, 0x15159555, 0x0000f79e, 0x70586000, 0xffff0000, 0x00008055, 0xf7de0841, 0x00000201,
              0xef7d0000, 0x00000050, 0x0841ffff, 0x0d0d0d00, 0xffff1062, 0x00000055, 0x0000ffdf, 0x55555570,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0x0000ffdf, 0x1535250d, 0x0841f7de, 0x585c5456, 0xb5b60000, 0x40800000, 0x0861f7be, 0x5c507063,
              0xe75c0000, 0x50505050, 0xce590000, 0x01010101, 0xce590000, 0x80808080, 0xffff1082, 0x05050505,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0x00000000, 0x00000000, 0x0000ce59, 0xd5d5d5d5, 0x0000ffdf, 0x70707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x94949494, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0000f79e, 0x98280038, 0x1082ffff, 0x705c5654, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x25252525, 0x00000000, 0x00000000,
              0xef5d0000, 0x58585858, 0xbdd70020, 0x40404040, 0x0020ffff, 0x5c5c5c58, 0x0000ffdf, 0x43434343,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0xffff1082, 0x50505050, 0x0000a514, 0x54565654, 0x00000000, 0x00000000, 0x0821f79e, 0x60404060,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000, 0x0821f79e, 0x60604060,
              0xf7de1062, 0x50505050, 0x0000ef7d, 0x56565656, 0xef7d0000, 0x80808080, 0xffff0000, 0x05050505,
              0x00000000, 0x00000000, 0x0000ef5d, 0x42424242, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x555555d5, 0x0821ffff, 0x55b50380, 0x1062ffff, 0x2d00e057, 0x0020e73c, 0x58545555,
              0x00000000, 0x00000000, 0x0841ffff, 0x0d0d0d0d, 0x0000632c, 0x57575757, 0x00000000, 0x00000000,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0x00008430, 0x5555d515, 0x0000f7be, 0xc3426070, 0x1082ffff, 0x8d052515, 0x0000f79e, 0x55575654,
              0x0841ffff, 0xd5153525, 0x0020f7de, 0x00705c54, 0x0821ffff, 0xe08d35d5, 0xffff1082, 0x05050505,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0x00000000, 0x00000000, 0x0000ce59, 0xd5d5d5d5, 0x0000ffdf, 0x70707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x94949494, 0x00000000, 0x00000000,
              0xbdd70000, 0x40404040, 0x0020ffff, 0x58585858, 0x10a2f7de, 0x150509c2, 0x0000f7be, 0x705c5755,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x25252525, 0x00000000, 0x00000000,
              0xef5d0000, 0x58585858, 0xbdd70000, 0x40404040, 0x0821ffff, 0x5c5c5c5c, 0x0000ffdf, 0x43434343,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x5c5c5c5c, 0x0000e73c, 0x95959595, 0xef7d0000, 0x05050505,
              0xef7d1062, 0x00406050, 0xef9d0000, 0x55250901, 0x0841ffff, 0x002595d5, 0x0000f79e, 0x56587060,
              0x0000ffdf, 0x35353535, 0x0000ffdf, 0x08e0585c, 0x0000f7de, 0x002595d5, 0x0861ffdf, 0x56585070,
              0x0020ffdf, 0xd5352505, 0x1082ffff, 0x00585456, 0x1082ffdf, 0xf0893595, 0xffff0000, 0x05050505,
              0x00000000, 0x00000000, 0x0000ef5d, 0x42424242, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0841, 0x40400000, 0xffdf0000, 0x550a0000, 0x0000ffff, 0x002d9595, 0x0861ffff, 0x565c5850,
              0x00000000, 0x00000000, 0x0821f7be, 0x25050d0d, 0x0020ffff, 0x005e5755, 0x0020ffff, 0x70755555,
              0x0000f7be, 0xd5153535, 0x0861f7be, 0x00505c5c, 0x0861ffdf, 0xb08b2515, 0xef7d0000, 0x05050505,
              0x00000000, 0x00000000, 0x0861f7be, 0x25050d81, 0xef7d0841, 0x05251694, 0x00000000, 0x00000000,
              0x0000e73c, 0x95555555, 0x0000ffff, 0x5f55550b, 0x0841ffff, 0x2d95d5dc, 0x0841f7be, 0x54585050,
              0x0000f7de, 0x55555535, 0x0000f7de, 0x5555555c, 0x0000e73c, 0x55555595, 0xef7d0000, 0x00000005,
              0x00000000, 0x00000000, 0x0000ce59, 0x555555d5, 0x0000ffdf, 0x55555570, 0x00000000, 0x00000000,
              0xef7d0000, 0xa0000000, 0x000031a6, 0x97555555, 0x20e4ffdf, 0x4241c1c1, 0x00000000, 0x00000000,
              0xbdd70000, 0x00000040, 0x0000ffff, 0x55555558, 0x00009cd3, 0x555555d5, 0x0000f7be, 0x555555c0,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf0000, 0x00000025, 0x00000000, 0x00000000,
              0xef5d0000, 0x00000058, 0xbdd70000, 0x00000040, 0x0020ffff, 0x5555555c, 0x0000ffdf, 0x55555543,
              0x0000f7de, 0x55555535, 0x0000f7de, 0x5555555c, 0x0000e73c, 0x55555595, 0xef7d0000, 0x00000005,
              0x00000000, 0x00000000, 0xef7d0000, 0x00000058, 0x0000ffff, 0x555555e0, 0x00000000, 0x00000000,
              0x0000ffdf, 0x35353535, 0x0000ffff, 0x5c5c5cbc, 0xef7d0000, 0x00000095, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0821ffff, 0x5555550b, 0x0000b5b6, 0x9595959c, 0xffff0000, 0x05050505,
              0x00000000, 0x00000000, 0x0000ef5d, 0x55555542, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x555555d5, 0xe75c0000, 0x00000056, 0x0000f7de, 0x555555e0, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x00000080, 0x0020ffff, 0x55555502, 0x0000ffdf, 0x55555570,
              0x00000000, 0x00000000, 0xffff0000, 0x00000056, 0x00009cd3, 0x5555551c, 0xef7d0000, 0x00000005,
              0x00000000, 0x00000000, 0x0000f7de, 0x55555535, 0x0000ffff, 0x55555558, 0x00000000, 0x00000000,
              0xbdf70000, 0x00008040, 0xf79e0000, 0x00005655, 0xf7be0841, 0x00002555, 0x0000ffff, 0x55555557,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x5555f525, 0xffff0000, 0x00005555, 0x0000f79e, 0x55555e70, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000f7de, 0x55553535, 0x0000f7de, 0x55555c5c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xef7d0000, 0x00008080, 0xffff0000, 0x00000505,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0861f7de, 0x95155555, 0x10a2ffff, 0x5f002d55, 0x1062ffff, 0x7070707b, 0x00000000, 0x00000000,
              0xdefb0821, 0x00404000, 0x0841ffff, 0x555e000b, 0x1062ffff, 0x25098078, 0x0020ffff, 0x5c565555,
              0x0000632c, 0x559595d5, 0x0841ffff, 0x555e000b, 0x10a2ffff, 0x350d0070, 0x0000e75c, 0x5c545755,
              0x00000000, 0x00000000, 0x0020ce59, 0x95555555, 0x0000f79e, 0x00000309, 0x0000632c, 0x57575757,
              0x00000000, 0x00000000, 0x0861ffff, 0x72020202, 0xffff0000, 0x00555555, 0xffff0861, 0x00010101,
              0x00000000, 0x00000000, 0x18c3ffdf, 0x60810dd5, 0x0841ffff, 0x55570000, 0x0841ffff, 0x555b585f,
              0xffff0000, 0x00404040, 0xffff0000, 0x00555555, 0x0000ffff, 0xd5000000, 0x0861f7be, 0x50707070,
              0x000073ae, 0x15d55555, 0x0000f7be, 0x5060032d, 0x0841ffdf, 0x952500c0, 0x0841f7de, 0x585c5455,
              0xffff0841, 0x40800000, 0x0861ffff, 0x5c70022d, 0x0861ef7d, 0x150d0060, 0x0821f7be, 0x5c545755,
              0x0000defb, 0x15d55555, 0x0841ffff, 0x5860032d, 0x18c3ffff, 0x15250070, 0xef5d0861, 0x09010000,
              0x00000000, 0x00000000, 0xdefb0000, 0x40404040, 0x0000f7be, 0x58585858, 0x00000000, 0x00000000,
              0xce590841, 0x40000000, 0x18a3ffff, 0x58c009b5, 0x0000ffdf, 0x55950080, 0x1062ffff, 0x72505c57,
              0x0020f7be, 0xc1c14355, 0x0821ffff, 0x15955555, 0x0821ffff, 0x50585555, 0x0821f7be, 0xcd8d0555,
              0xef7d1062, 0x80405000, 0x0000ef9d, 0x60505c55, 0x0000e73c, 0x2515d555, 0x0020ef7d, 0x54587055,
              0x0000ffff, 0x35250d55, 0xef9d0000, 0x09010200, 0x00000000, 0x00000000, 0x0861ef5d, 0x7043c155,
              0xffdf0000, 0x00606000, 0xffff0000, 0x00555500, 0x0000ffff, 0x35000055, 0x0000ffff, 0x58707055,
              0x00000000, 0x00000000, 0x0000632c, 0xd5d5d5d5, 0x0841ffff, 0x70707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841f7be, 0x05353535, 0x0000ef9d, 0x545c5c5c,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff, 0x8b253535, 0x0020f7be, 0x5556545c,
              0x00000000, 0x00000000, 0x0000ef5d, 0x43890535, 0x0000f7be, 0x0d0d0f0c, 0x0000632c, 0x57575757,
              0x00000000, 0x00000000, 0x0841ffff, 0x72727272, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x351595d5, 0x0861f7be, 0x9c5c5850, 0xffff0000, 0x95000000, 0x000031a6, 0x57555555,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xf79e1062, 0x98506040, 0x0841ffff, 0x5555565c,
              0xe75c0020, 0x00008080, 0x0000ef5d, 0x03c07050, 0x0841ffff, 0x8a3595d5, 0x1062ffff, 0x55565c58,
              0xffff0020, 0x60606060, 0xef7d0821, 0x01010101, 0x00008430, 0x15959515, 0x18a3ffdf, 0x70705050,
              0x0000f7be, 0x05052535, 0x0000f7be, 0x5656545c, 0x00008c71, 0x55d59515, 0x0841f7de, 0x60707050,
              0x00000000, 0x00000000, 0xd6ba0000, 0x40404040, 0xffff0000, 0x09090909, 0x00000000, 0x00000000,
              0x0000e73c, 0x8d0d0535, 0x0841ef7d, 0x35955754, 0x1082f79e, 0x57545809, 0x0000e73c, 0x63636260,
              0x0000ef7d, 0x0d0d8989, 0x0821e71c, 0x85052535, 0x0000e75c, 0x41636270, 0x0821f79e, 0x614149c9,
              0x00000000, 0x00000000, 0x18c3f7be, 0x350501c2, 0x0000ef7d, 0x7040830d, 0x00009cd3, 0x55555557,
              0xef7d0020, 0x00008040, 0x0841ffff, 0x42607058, 0x0000ffff, 0x253595d5, 0xf79e0841, 0x02010905,
              0x00000000, 0x00000000, 0xce590020, 0x40000000, 0xef7d18e3, 0x05155450, 0xce590821, 0x00000001,
              0x00000000, 0x00000000, 0x0000632c, 0xd5d5d5d5, 0x0841ffff, 0x70707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7de, 0x35d55555, 0x1062ffff, 0x5c70c30d, 0x00009cd3, 0x55555557,
              0x00000000, 0x00000000, 0x0000ffff, 0x55550909, 0x0841ffff, 0x350bc070, 0x0020ffff, 0x5c565555,
              0x0000e75c, 0x05359555, 0x0821ef9d, 0x57545870, 0x0000ffdf, 0x0d0d0d0d, 0x0000632c, 0x57575757,
              0x00000000, 0x00000000, 0x0020ffff, 0x55550202, 0x18c3ffff, 0x250b805c, 0x0000ef5d, 0x5c565555,
              0x0020ffff, 0x35353535, 0x0000e73c, 0x5850c00c, 0xffdf0000, 0x00806055, 0x10a2f79e, 0x60705054,
              0x00000000, 0x00000000, 0xd6da0020, 0x40800000, 0x0861ffff, 0x5c507243, 0x00000000, 0x00000000,
              0x0000d6ba, 0x15d55555, 0x0821f7be, 0x5870030d, 0x0821f7be, 0x25038040, 0x0020ef5d, 0x505c5555,
              0x0841ffff, 0x55559535, 0xf7be0020, 0x58552509, 0x0841ef7d, 0x58c02d15, 0xf7de0000, 0x25252525,
              0xffff1082, 0x50505050, 0x0000e73c, 0x56565656, 0x00000000, 0x00000000, 0x0000ffff, 0x60606060,
              0x00000000, 0x00000000, 0xbdd70000, 0x40404040, 0xf7be0000, 0x09090909, 0x00000000, 0x00000000,
              0x0841f7be, 0xcdc9c9cd, 0x0821ffff, 0x25252535, 0x0000d6ba, 0x17975757, 0x0000f7be, 0x62606062,
              0x0841ffff, 0x35252505, 0x18c3ffff, 0x726b4fcd, 0x18a3ffff, 0x85cdcd49, 0x1082ffff, 0x52527373,
              0x00000000, 0x00000000, 0x1082f7de, 0x62c10d25, 0x0861ef5d, 0x09034070, 0x0000ce59, 0x56555555,
              0x00000000, 0x00000000, 0x0000ef9d, 0x050d0983, 0x0861ffdf, 0x60c28905, 0x0000632c, 0x55555557,
              0xef7d0000, 0x80000000, 0x1062ffff, 0x70c30925, 0x0000ffdf, 0x5555575c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000632c, 0xd5d5d5d5, 0x0841ffff, 0x70707070, 0x00000000, 0x00000000,
              0xef7d0000, 0x80000000, 0x1082ffff, 0x5062c10d, 0xce590000, 0x00000002, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xef7d0000, 0x60404040, 0x0000ef5d, 0x58505058,
              0xffff0861, 0x00005050, 0xffff0000, 0x00005555, 0x0000ffff, 0x0d0d0000, 0x0841f7be, 0x55556060,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000f7be, 0x25351535, 0x0020ffff, 0x5c5c585c,
              0x0020ffff, 0xd5951535, 0x10a2ffff, 0x50585c5c, 0x0000ffff, 0xd5555555, 0x0000f7de, 0x70606262,
              0x00000000, 0x00000000, 0xf79e0841, 0x54585060, 0x0000e73c, 0x55575654, 0x00000000, 0x00000000,
              0x0020ffff, 0x35353535, 0x0000ef9d, 0x585c545c, 0x0000a534, 0x9555d515, 0x10a2ffff, 0x50707070,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0020ef9d, 0x251595d5, 0xf7be10a2, 0x01090505,
              0x0000ef9d, 0x15352505, 0x0000ffff, 0x585c5456, 0x0841f7be, 0x1595d555, 0x0841ffff, 0x5c507070,
              0x00000000, 0x00000000, 0x0000e73c, 0x55559595, 0x0000ffdf, 0x55555c5c, 0x00000000, 0x00000000,
              0x0821f7be, 0x3525058d, 0x0861f7de, 0x5cd71535, 0x1062ffdf, 0x5570c026, 0x0000f7de, 0x55030363,
              0x0841f7be, 0x55151535, 0x0821ffff, 0x55585070, 0x0000e73c, 0x55352505, 0x0000f7be, 0x555c5858,
              0x0821e75c, 0x55053595, 0x0841ef7d, 0x55565c50, 0x0841ffff, 0x55d51525, 0x0861ffff, 0x5560505c,
              0x00000000, 0x00000000, 0x0841ffff, 0x35951535, 0xf7be0000, 0x01090525, 0x00000000, 0x00000000,
              0x0000ffff, 0x55252535, 0x0000ffdf, 0x55000058, 0xffff0000, 0x00555500, 0xffdf0000, 0x00252500,
              0xffff0841, 0x00404000, 0xffff0841, 0x00555500, 0x0020ffff, 0x55000070, 0x0821ffff, 0x55c0c055,
              0x0861ffff, 0x55353515, 0x0000ffff, 0x55000058, 0xffff0000, 0x00555500, 0x0000f7de, 0x555c5c55,
              0x0000b5b6, 0x55d59595, 0xf7de0000, 0x0056550a, 0xef9d0020, 0x00255558, 0x0020e73c, 0x55555754,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffdf, 0x550d0d0d, 0x0000632c, 0x55575757,
              0x000031a6, 0x55d59595, 0xf79e0000, 0x0056550a, 0x0841ffff, 0x55788009, 0x0000ffff, 0x55555556,
              0x00000000, 0x00000000, 0xef5d0841, 0x00605495, 0x0841f7be, 0x55c00035, 0x0821ffff, 0x55555658,
              0x00000000, 0x00000000, 0x0841f79e, 0x5540c283, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xce590841, 0x00000040, 0x0861ffff, 0x552d0260, 0x0841ffff, 0x55e00035, 0x0000ffff, 0x55555658,
              0x00008c71, 0x55951515, 0xf7be1062, 0x00565502, 0x18e3ffff, 0x555cc009, 0xce590000, 0x00000002,
              0x0000ffff, 0x555555d5, 0x0841ffff, 0x552d0360, 0x18a3ffff, 0x55700025, 0x0000d6ba, 0x55555754,
              0x00000000, 0x00000000, 0x0000f7de, 0x55353535, 0xef7d0000, 0x00050505, 0x00000000, 0x00000000,
              0x0000ce59, 0x55555595, 0x0020ef9d, 0x552d0260, 0x10a2ffff, 0x55e000d5, 0xbdd70000, 0x00000101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x25255555, 0x0841ffff, 0x78c00925, 0x000094b2, 0x55555754, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0821ffff, 0x15955555, 0x0020ef9d, 0x545c5555, 0x0841ffff, 0x58505555,
              0x00000000, 0x00000000, 0x0020ef9d, 0x03255555, 0x0000ffdf, 0x00805858, 0xf7de0020, 0x09020000,
              0x0000e73c, 0xc9255555, 0x0000ef7d, 0xc9705555, 0x00000000, 0x00000000, 0x0020e71c, 0x410d5555,
              0x00000000, 0x00000000, 0xce590000, 0x80000000, 0xef7d0020, 0x01020000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0841f7be, 0x01255555, 0xf7de0000, 0x95250000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xce590000, 0x40400000, 0xffdf0000, 0x09090000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff, 0x032dd555, 0x0841f79e, 0x57707255,
              0x0000ef5d, 0xd5252555, 0x1062ffff, 0x82605755, 0x000031a6, 0x57555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505000, 0x0020ffff, 0x57000055, 0xffff0000, 0x00050500,
              0x0020ffff, 0x55353555, 0xffff0000, 0x00555500, 0xffff0000, 0x26252500, 0x00000000, 0x00000000,
              0x0841f7de, 0x35058d55, 0x0000bdf7, 0x54575555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7be, 0x25252555, 0x0000ffdf, 0x70707055, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0020ffdf, 0x05253535, 0x0020defb, 0x151796d6, 0x0020e73c, 0x54545c58,
              0x00008c71, 0x9595d555, 0x10a2ffdf, 0x50505060, 0x0000f7be, 0x585858d8, 0xef7d0000, 0x0000000a,
              0x10a2ffff, 0x73737361, 0x0841f79e, 0x25252505, 0x0861f7be, 0x2517d555, 0x0000ef5d, 0x57545872,
              0x00000000, 0x00000000, 0x0841f7de, 0x05253595, 0xe73c0000, 0x16250509, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0821ef5d, 0x426060c2, 0x0000f7be, 0x890d0509, 0x00004228, 0x55565457,
              0x0000f7be, 0xd5351555, 0x0861e75c, 0x4b409e95, 0x18a3ffff, 0xc50dd45c, 0xf79e1062, 0x02050900,
              0x00000000, 0x00000000, 0x0841f79e, 0x052515d5, 0x0861ffff, 0x57545860, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f79e, 0x55d5350d, 0x0020ffff, 0x62705856, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0xce590000, 0x02020202, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffff0821, 0x26262626, 0x00000000, 0x00000000,
              0xd6da0000, 0x00008040, 0x0020f7de, 0x6370585c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7be, 0x25555555, 0x0000ffdf, 0x70555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0020e71c, 0x35d55525, 0x10a2ffff, 0x54585050, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0821ffff, 0x55552535, 0x0020f7be, 0x41c90000, 0x18c3ffff, 0x85250000, 0x0841ffff, 0x5555c0c0,
              0x000031a6, 0x555555d5, 0x0861ffff, 0x350d8360, 0x0000f7be, 0xc0585858, 0x00000000, 0x00000000,
              0x0841f7be, 0x5535c961, 0x0841ef7d, 0x9570c905, 0x18c3f7be, 0x5c5061cd, 0x00000000, 0x00000000,
              0x000031a6, 0xd5555555, 0xf7de1082, 0x05261498, 0x0861f7be, 0x35058dc1, 0x000094b2, 0x54575555,
              0xf7de0841, 0x60000000, 0x1082ffdf, 0x080201c3, 0x1062e75c, 0x56565042, 0x0020ffff, 0x0d555555,
              0x0000632c, 0x57555555, 0x18c3f79e, 0x42c10575, 0x0020ffff, 0x0d89635d, 0xef7d0000, 0x02000000,
              0x00000000, 0x00000000, 0x18c3ffff, 0xc1c1890d, 0x000031a6, 0x55555557, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1062ffdf, 0x8981c143, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x0d0d5555, 0xffff0000, 0x55550000, 0xffff0000, 0x55550000, 0xffff0000, 0x15150000,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0xce590000, 0x02020202, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffff0821, 0x26262626, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0861f7de, 0x35058dc1, 0x000094b2, 0x54575555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7be, 0x55252525, 0x0000ffdf, 0x55707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000d69a, 0x55555525, 0x0000ce59, 0x55555557, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xef7d0821, 0x00545800, 0x0000ffff, 0x58000063, 0x18c3ffff, 0x610000cd, 0x0020ffff, 0x55707055,
              0x00000000, 0x00000000, 0x0000632c, 0xd5d5d5d5, 0x18c3f79e, 0xdc1c0800, 0x0000f7be, 0x50585c57,
              0x00000000, 0x00000000, 0x18e3ffff, 0x73498535, 0x0000f7be, 0x7363c936, 0x0020e73c, 0x0505c970,
              0x0841f7be, 0x253515d5, 0x0020f7be, 0x57545c58, 0x0020ef7d, 0x55d59515, 0x1062ffff, 0x72505c54,
              0x10a2f79e, 0xc1c1810d, 0x0841f79e, 0x55d51537, 0x0861f7be, 0x8260505c, 0x0000e73c, 0xc189090d,
              0x00000000, 0x00000000, 0x9cf30000, 0x00000024, 0x0000ffff, 0x555555e5, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xf79e1062, 0x94949494, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0821ffff, 0x81898989, 0x00000000, 0x00000000,
              0xdefb0000, 0x00004040, 0xffff0000, 0x00005555, 0xffff0000, 0x00005555, 0xffdf0000, 0x00000909,
              0x0020ffff, 0x0d555555, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x15000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0xce590000, 0x02020202, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffff0821, 0x26262626, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0821, 0x00008040, 0xffdf1082, 0x26050901, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020df1b, 0x151595d5, 0xf7de1082, 0x01010909, 0x0841ffdf, 0x58507263, 0x00000000, 0x00000000,
              0xbdd70000, 0x40400000, 0x1082ffff, 0x005e5555, 0xf7de0000, 0x55698989, 0x0020ffdf, 0x565c5850,
              0x0000e73c, 0x892515d5, 0x0020ef7d, 0x55575458, 0x0020ffdf, 0xc9637373, 0x0841ffff, 0xc9852525,
              0x0841f79e, 0x5555550d, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ef7d, 0x55555543,
              0x0000ffff, 0x350d0981, 0x0020ffff, 0x005c5755, 0x0861ffff, 0x002d0509, 0x10a2ffff, 0x60585062,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x1082ffff, 0x25050d89, 0xef7d0821, 0x01020000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xce590000, 0x80000000, 0x0841ffff, 0x706243c1, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x5555550d, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000015,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0xce590000, 0x02020202, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffff0821, 0x26262626, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffdf1082, 0x60509814, 0x000073ae, 0x54575555,
              0x00000000, 0x00000000, 0x0000f7be, 0x25252555, 0x0000ffdf, 0x70707055, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7be, 0x25252555, 0x0000ffdf, 0x70707055, 0x00000000, 0x00000000,
              0x0000f7be, 0x55555535, 0x0000ffff, 0x555555d6, 0xffff0000, 0x00000009, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0861, 0x0000005a, 0x0821ffff, 0x555c5ce0, 0x00000000, 0x00000000,
              0x0000df1b, 0x55555543, 0x00000000, 0x00000000, 0xffdf0000, 0x00000060, 0x0000ef5d, 0x55555570,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000632c, 0x555555d5, 0xffff0000, 0x00000056, 0x0821ffff, 0x55555578, 0x0000ffff, 0x55555582,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0020e75c, 0x5555d515, 0x0000ffff, 0x2d036058, 0x0841ffff, 0x70575555,
              0x0000f7be, 0x25d55555, 0x0000ef7d, 0x60020d35, 0x0821e73c, 0x55555458, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x50505050, 0x0821ffff, 0x00575757, 0xffff0000, 0x05000000,
              0x0020ffff, 0x35555555, 0xffff0000, 0x55000000, 0xffff0020, 0x25262626, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841f7be, 0x55559515, 0xf7de0841, 0x26050901,
              0x00000000, 0x00000000, 0x0020e71c, 0x35d55525, 0x10a2ffff, 0x54585050, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000f7be, 0x95d55525, 0x10a2ffff, 0x54585050, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xf7be0841, 0x14000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff, 0x0b555555, 0xffdf0000, 0x09000000,
              0xdefb0000, 0x40000000, 0xf7be0000, 0x95000000, 0x000031a6, 0x57555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95555555, 0x0000ffdf, 0x5c5555d5, 0x0000ef7d, 0x55555572,
              0x0000defb, 0x55555525, 0x000073ae, 0x5555555c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xce590000, 0x80000000, 0x0000ffff, 0x60555555, 0xffff0841, 0x50000000, 0xffff0000, 0x01000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x00000050, 0xffff0000, 0x00000055, 0xffff0000, 0x00000005,
              0x0020ffff, 0x55555535, 0xffff0000, 0x00000055, 0xffdf0000, 0x00000025, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000ef9d, 0x950d5555, 0x0020ef7d, 0x505c5555, 0xf7be0841, 0x00000014,
              0x00000000, 0x00000000, 0x0000d69a, 0x55555525, 0x0000ce59, 0x55555557, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000d69a, 0x55555525, 0x0000ce59, 0x55555557, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841f7be, 0x15955555, 0xf7de0841, 0x01090526,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000ffdf, 0x353515d5, 0x18c3ffff, 0x54545800, 0xffdf0000, 0x00000009,
              0xdefb0000, 0x00000040, 0x0841f7be, 0xd5d53500, 0x0841ef5d, 0x50505854, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959595, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xce590000, 0x00008080, 0x0841ffdf, 0x61616060, 0x1062ffff, 0x95950505, 0x0020ffff, 0x56545454,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841ffff, 0x353535f5, 0x0861ffff, 0x57570002, 0x0000ffdf, 0x952d00e0, 0x0000ef7d, 0x70505c55,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000e71c, 0x555555c3, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ef7d, 0x2515d555, 0x0841ef9d, 0x5678000d, 0x1062f7be, 0x553500e0, 0x0000ffff, 0x72585655,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xf7de1082, 0x14985060, 0x00008430, 0x55555754,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959555, 0x0000f7de, 0x5c5c5c55, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0020e73c, 0x95951515, 0x0000f79e, 0x58585c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000defb, 0x15159595, 0x0000ffff, 0x5c5c5c58, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959595, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0000, 0x60606000, 0x0000ffdf, 0x70707055, 0x00000000, 0x00000000,
              0x00009cd3, 0x555595d5, 0x0000ffff, 0x55555c72, 0xffff0861, 0x00009060, 0xef7d0000, 0x00000002,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841f7be, 0x25555555, 0x10a2ffff, 0x78426555,
              0xf7be0000, 0x60582800, 0xf7be0000, 0x25020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe75c1082, 0x50408080, 0x1082ffdf, 0x565c5050,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x1082ef9d, 0x494dcd05, 0x0841f7be, 0x72c30935, 0x0841ffff, 0x55f580e0, 0x18a3ffdf, 0xcd4d4961,
              0x00000000, 0x00000000, 0xffdf0000, 0x60000000, 0x0000e71c, 0x70555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0821, 0x40800000, 0xffdf1082, 0x01090526, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x0d555555, 0x0000f7be, 0x00959595, 0x0000ffdf, 0x005c5c5c, 0xffff0000, 0x15000000,
              0xef7d0000, 0x80800000, 0x0841f7be, 0x00003595, 0x0020ef7d, 0x57575458, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000c638, 0x55559515, 0x0841f7be, 0x0303705c, 0xffff0841, 0x01010000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959595, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0000, 0x00000060, 0x0000ffdf, 0x55555570, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffdf0000, 0x60000000, 0xffff0841, 0x25566000, 0xffff0020, 0x00022556, 0xce590000, 0x00000002,
              0x000031a6, 0x555555d5, 0x0020ef9d, 0x55d52502, 0x0841ffff, 0x2d827057, 0x0000ffff, 0x78575555,
              0x00000000, 0x00000000, 0x0861f7de, 0x3515d555, 0xf79e0000, 0x01092596, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x25955555, 0xef7d0000, 0x55950000, 0x0000f7be, 0x78555555, 0x0000ffff, 0x63495555,
              0x0821ef5d, 0x49494949, 0x0841ef9d, 0x72505050, 0x00000000, 0x00000000, 0x18a3ffdf, 0xcdc5c5c5,
              0x00000000, 0x00000000, 0x2104ffff, 0x0303010d, 0x4a49ffff, 0x00008040, 0x000031a6, 0x57575555,
              0x00000000, 0x00000000, 0xffdf0000, 0x60000000, 0x0000ffdf, 0x70555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0861f7be, 0xc18d0535, 0x000094b2, 0x55555754, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020ffff, 0x5555550d, 0x0000f7be, 0x95959500, 0x0000ffdf, 0x5c5c5c00, 0xffff0000, 0x00000015,
              0x00000000, 0x00000000, 0x0841ffff, 0x95d59535, 0xffff0841, 0x09090901, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xd6ba0000, 0x40404080, 0x0841ef9d, 0x5c545c70, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959595, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0000, 0x60000000, 0x0000ffdf, 0x70555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xf7de0841, 0x00000060, 0xffff0841, 0x00605625, 0xffff0020, 0x56250200, 0xce590000, 0x02000000,
              0x000031a6, 0xd5555555, 0x0020ef9d, 0x0225d555, 0x0841ffff, 0x5770822d, 0x0821ffff, 0x55555778,
              0x00000000, 0x00000000, 0x0020f7be, 0x55550525, 0x0000ef9d, 0x55555656, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x5555cd8d, 0x0000c638, 0x55555525, 0xffdf0861, 0x00005855, 0x0821ffdf, 0x55555c70,
              0x1082f79e, 0x2505cd4d, 0xf7be0000, 0x02605896, 0x0000ffff, 0x55e080f5, 0x18a3ffff, 0x7261494d,
              0x00000000, 0x00000000, 0xffdf1062, 0x00605854, 0x0000ffff, 0x5578c080, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0000, 0x00606060, 0x0000ffdf, 0x55707070, 0x00000000, 0x00000000,
              0xd6da0000, 0x40800000, 0x0020f7de, 0x5c587063, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x56000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000,
              0x0000632c, 0x57555555, 0x0000e73c, 0x55959595, 0x0000f7de, 0x555c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x35351515, 0x1082ffff, 0x54545c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000ad75, 0x95959515, 0x0841ffff, 0x5058585c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x95959595, 0x0000ffdf, 0x5c5c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0000, 0x00606060, 0x0000ffdf, 0x55707070, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841f7be, 0x55555525, 0x10a2ffff, 0x55654278,
              0xf7be0000, 0x00285860, 0xf7be0000, 0x00000225, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000ffdf, 0x550d0d0d, 0xffff0000, 0x00010101, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020e73c, 0x5555d515, 0x0841f79e, 0x550d0078, 0x0861ffdf, 0x55e00035, 0x0821ffff, 0x55555658,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841f7de, 0x558d0535, 0x0000bdf7, 0x55555754, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x00000056, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055,
              0x0000632c, 0x55555557, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffdf0020, 0x00008040, 0x0000ffdf, 0x550b0078, 0xffdf0000, 0x00090900,
              0xdefb0000, 0x00404000, 0x0841f7be, 0x55c00035, 0x0020f79e, 0x55555c58, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x55959595, 0x0000f7de, 0x555c5c5c, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000018c3, 0xd5555555,
              0x084194b2, 0x2d555555, 0x0861defb, 0x00ad5555, 0x1082ef9d, 0x0002f555, 0xf7be10a2, 0x5555aa00,
              0x10a2f7be, 0x0000aa55, 0xf79e1082, 0x5555aa00, 0x1082f7be, 0x00a05755, 0x0821df1b, 0x807e5555,
              0x6b6d0841, 0x09000000, 0x00000020, 0x57555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xe71c0861, 0x60800000, 0xef7d0000, 0x55555600, 0xffff0000, 0x55555500,
              0xe75c1062, 0x95250900, 0x00003186, 0x56555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00002965, 0x75555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000d69a, 0x2dd55555, 0x1082ffff, 0x000bd555, 0x0000ef9d, 0x00000a55,
              0xf79e0000, 0x55555500, 0x0000f7de, 0x0000fa55, 0x1082ef9d, 0x805e5555, 0x0000a534, 0x57555555,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000841, 0x95555555, 0xd69a1062, 0x58800000, 0x18c3f7be, 0x00022dd5,
              0xf7be94b2, 0x55555558, 0xf7deffff, 0x00000002, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xe71cffff, 0x00000080,
              0x6b4df7be, 0x00000078, 0x2104ffff, 0x00e05e55, 0x0020c618, 0x78575555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xe71c0861, 0x60800000, 0xef9d18e3, 0x55555658, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xce79ffff, 0x000000c0, 0xef7d1082, 0x95250902, 0x00003186, 0x56555555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008c51, 0x35d55555,
              0x18c3defb, 0x40426975, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x1062f79e, 0x030db555, 0x7befffff, 0x00000009, 0xad55ffff, 0xc0000000, 0x2965ffff, 0x5f000000,
              0x0841ffdf, 0xd5000000, 0x5aebffff, 0x2d000000, 0xffff0000, 0x55555555, 0x10a2ef9d, 0x0000e05c,
              0xe75c0000, 0x09020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000630c, 0x35555555, 0x0000e73c, 0x000b2dd5, 0xa534ffff, 0x00000009, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x630cffdf, 0x00008060, 0x0841ef7d, 0x80785e55,
              0x000073ae, 0x57555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe71c0861, 0x60800000,
              0xef9d18e3, 0x55555658, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xce79ffff, 0x000000c0, 0xef7d1082, 0x95250902, 0x00003186, 0x56555555,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00009cd3, 0x35d55555, 0xf7be2104, 0x55565860,
              0x2104ffff, 0x60606060, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1062f79e, 0x090d35d5,
              0xe75cffff, 0x00000002, 0x0841ffdf, 0x5e708000, 0x0000e73c, 0x55555778, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0000e73c, 0x555555d5, 0x0020f7be, 0x55d52d02, 0x5aabffff, 0x09020000,
              0xf79e0000, 0x55559525, 0x0841b5b6, 0x54575555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000a534, 0x35d55555,
              0xef9d2104, 0x55565860, 0xf7deffff, 0x00000002, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffffce79, 0x55555595,
              0x0000f7de, 0x80e0785e, 0x9cf30020, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe71c0861, 0x60800000, 0xef9d18e3, 0x55555658,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xce79ffff, 0x000000c0, 0xef7d1082, 0x95250902,
              0x00003186, 0x56555555, 0x00000000, 0x00000000, 0x00004208, 0x35d55555, 0x39c70020, 0x01000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00009cd3, 0x35d55555, 0x18c3f79e, 0x00020925, 0xffff0000, 0x55555555,
              0x2104ffff, 0x60606060, 0x00000000, 0x00000000, 0x0000d69a, 0x3595d555, 0x7befffff, 0x00000201,
              0x0841ffdf, 0x5870c080, 0x0000d6ba, 0x55555557, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0821e71c, 0x55d5350d,
              0x73aeffff, 0x03000000, 0xef7d18c3, 0x15250509, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000736e, 0x35d55555, 0xf79e2124, 0x55565860,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xef7dffff, 0x00000080, 0x0000f7be, 0x80e0785e, 0x4a490000, 0x02000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xe71c0861, 0x60800000, 0xef9d18e3, 0x55555658, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xce79ffff, 0x000000c0,
              0xef7d1082, 0x95250902, 0x00003186, 0x56555555, 0x0841ad75, 0x95959595, 0x0020f7be, 0x80e0785e,
              0x00206b4d, 0x56555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000a534, 0x35d55555, 0x18c3f79e, 0x00020925, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x2104ffff, 0x60606060, 0x00000000, 0x00000000, 0x1082ffff, 0x0d052535, 0xad55ffff, 0xc0000000,
              0x0000e73c, 0x5557565c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000f7de, 0x250d0903, 0x3166ffff, 0x000080c0, 0x00009492, 0x56575555, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00002945, 0xd5555555, 0x0841ef7d, 0x03092d35, 0xffdfffff, 0x00000002,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xad55ffff, 0x00000080, 0x0841ef7d, 0x60785c57, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xef7d0000, 0x54545458, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xce79ffff, 0x000000c0, 0xef5d0000, 0x01010102, 0xef5d0841, 0x80808080, 0xe73cffff, 0x03030383,
              0x0020ffff, 0x80e0785e, 0x00206b4d, 0x56555555, 0x00000000, 0x00000000, 0x0000ad55, 0x35d55555,
              0x0000f7de, 0x00020b2d, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x8c71ffff, 0x80000000,
              0x18a3f7be, 0x575c7060, 0x00000000, 0x00000000, 0x0000ef9d, 0x01010909, 0x2965ffff, 0x4040c0c0,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020f7be, 0x15353525, 0xffff0000, 0x55555555, 0x0000e71c, 0x54545656, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x0841defb, 0x253595d5, 0xc638ffff, 0x00000201, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x528af7de, 0x00008060, 0x0000b596, 0x5c565755,
              0x00000000, 0x00000000, 0xffff0000, 0x54545454, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x01010101, 0xef5d0841, 0x80808080, 0xce59ffff, 0x02020202,
              0xffffef7d, 0x55555595, 0x0020ffff, 0x80e0785e, 0x0821ad75, 0x37d55555, 0x0000f7de, 0x00020b2d,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x738effff, 0x80000000, 0xdf1b0861, 0x02092595,
              0x31a60000, 0x00000002, 0x00000000, 0x00000000, 0xf79e0000, 0x54545454, 0x0841ffdf, 0xc0404040,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0020f7de, 0x35151515, 0xffff0000, 0x55555555, 0xe75c0000, 0x01010101, 0x00000000, 0x00000000,
              0x000010a2, 0x15d55555, 0x0020ef5d, 0x0203090d, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x18a3f7be, 0x6070585c,
              0x00000000, 0x00000000, 0xe75c1062, 0x80605854, 0xa514ffff, 0x02000000, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xf79e18e3, 0x25955555, 0x0841c658, 0x55555654, 0xe71c0841, 0x80808080, 0xc638ffff, 0x02020202,
              0xffff0000, 0x55555555, 0xffffef7d, 0x55555595, 0x2945f7be, 0x0000002e, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0x738effff, 0x80000000, 0x0861ffff, 0x575e78e0, 0x000031a6, 0x55555557,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000f7de, 0x0d0d0909, 0x5aebffff, 0x0080c040,
              0x0000e73c, 0x57555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0000ffff, 0x0d252535, 0xffffef7d, 0x95555555, 0x00009cf3, 0x57565454, 0x00000000, 0x00000000,
              0x0821d6ba, 0x3595d5d5, 0xce59ffff, 0x00020201, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x4a49f79e, 0x0080c040,
              0x528a0821, 0x01020000, 0x00003186, 0x55555595, 0xef7d1082, 0x80605856, 0xa514ffff, 0x02000000,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xf79e18e3, 0x25955555,
              0xe73c1062, 0x00000209, 0x00000000, 0x00000000, 0x00205acb, 0x55555595, 0x0020ffff, 0xb52d0b02,
              0xffffef7d, 0x56555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x6b6dffff, 0x80000000, 0x0861ffff, 0x575e78e0, 0x000031a6, 0x55555557, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1082ef9d, 0x95153525, 0xffff0000, 0x55555555,
              0x0020f7be, 0x70585c56, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdefb0000, 0x80000000,
              0x0000f7be, 0x00020309, 0x18c3f7be, 0x6040c080, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841ef5d, 0x0d252535, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xef5dffff, 0x000080c0,
              0x0841d69a, 0x5c5c5456, 0x00000000, 0x00000000, 0x00003186, 0x55555595, 0xef7d1082, 0x80605856,
              0xa514ffff, 0x02000000, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xf79e18e3, 0x25955555, 0xe73c1062, 0x00000209,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00206b4d, 0x55555595,
              0x0020ffff, 0xb52d0b02, 0xffffef7d, 0x56555555, 0xffff0000, 0x55555555, 0xa534ffff, 0xc0000000,
              0x0841ffff, 0x575e78e0, 0x00002965, 0x55555557, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000a534, 0x555555d5, 0x10a2ef9d, 0x0d090300,
              0x5aabffff, 0x00008060, 0x0821e71c, 0x705c5755, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdefb0000, 0x80000000, 0x0000e73c, 0x00030d35,
              0x8c71ffff, 0x80000000, 0x0000e75c, 0x57565870, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x10a2f7be, 0x09090d0d, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x1082f79e, 0x50585858, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00003186, 0x55555595,
              0xef7d1082, 0x80605856, 0xa514ffff, 0x02000000, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xf79e18e3, 0x25955555, 0xe73c1062, 0x00000209, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00206b4d, 0x55555595, 0x0020ffff, 0xb52d0b02, 0xa534ffdf, 0xc0000000, 0x0841ffff, 0x575e78e0,
              0x00002945, 0x55555557, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe75c0000, 0x00008060,
              0xf79e0000, 0x58565555, 0x73aeffff, 0x000000c0, 0x0000f7de, 0x00807857, 0x0020f7be, 0x007e5555,
              0x0020f7de, 0x00d55555, 0x0000ffff, 0x002bd555, 0x0000f7be, 0x0000022d, 0x8c71ffff, 0x80000000,
              0xf79e0000, 0x02092595, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x3186f79e, 0x01010109, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x0861ef7d, 0x70707070, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00003186, 0x55555595, 0xef7d1082, 0x80605856, 0xa514ffff, 0x02000000, 0xffff0000, 0x55555555,
              0xf79e18e3, 0x25955555, 0xe73c1062, 0x00000209, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00206b4d, 0x55555595, 0x0841f7be, 0x55557be2, 0x00002945, 0x55555557,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0841b5b6, 0x55555535, 0xef7d18c3, 0x00605655, 0x3166ffff, 0x0b000000, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffffef7d, 0x95555555, 0x18c3f7be, 0x5e800000, 0x0000e75c, 0x555758e0,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xf79e528a, 0x54545454, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xf79e0861, 0x25252525, 0x00000821, 0x57575555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00003186, 0x55555595, 0xef7d0000, 0x00000056, 0xffff0000, 0x00000055,
              0x0841c658, 0x55555558, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0000, 0x40000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000,
              0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000,
              0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000, 0xffff0000, 0x55000000,
              0xffff0000, 0x55000000, 0xffff0000, 0x15000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00009492, 0x555555b5, 0x0000e71c, 0x5555550a,
              0xe75c0000, 0x00000055, 0x00009cf3, 0x555555e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xef7d31a6, 0x54545454, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x1062ef9d, 0x70707070, 0x00000821, 0x57575757, 0xd6ba0861, 0x58000000, 0x1082defb, 0x80555555,
              0x00008c71, 0x57555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xc6380841, 0x60000000, 0xdefb1062, 0x55000000,
              0x0841ffdf, 0x56555555, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x18c3f7be, 0x0d0d0909, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x10a2ef7d, 0x58585050, 0x00000000, 0x00000000, 0xf79e0861, 0x58585858, 0xce59ffff, 0x00000080,
              0xf7be2104, 0x95250902, 0x000039c7, 0x56555555, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xce590821, 0x60800000, 0x18c3ffff, 0x00020b2d, 0xfffff7be, 0x95959595,
              0xc6380861, 0x01010101, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010155,
              0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055,
              0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055, 0xffff0000, 0x00000055,
              0xffff0000, 0x54545455, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0861ef9d, 0x3525250d, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xf79effff, 0x40800000,
              0x0861defb, 0x56545c5c, 0x00000000, 0x00000000, 0x0821f7be, 0xd5b52d0d, 0x94b2ffdf, 0x03000000,
              0xb596ffff, 0x00000080, 0xef7d18c3, 0x95250902, 0x00005acb, 0x57555555, 0x00000000, 0x00000000,
              0xce590821, 0x60800000, 0x18c3ffff, 0x00020b2d, 0xffff0000, 0x55555555, 0x2124f79e, 0x70c00000,
              0x0841ad95, 0x55555654, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x0821bdf7, 0xd5951535, 0xc638ffff, 0x03020000, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x5aebf7be, 0x40c08000,
              0x08218c71, 0x55555756, 0x00000000, 0x00000000, 0x000018e3, 0x555555d5, 0x0000ffff, 0xd5b52d0b,
              0xffdf73ae, 0x56555555, 0x9cd3ffff, 0x00000080, 0xe75c1082, 0x95250902, 0xbdf70841, 0x60800000,
              0x18c3ffff, 0x00020b2d, 0xffff0000, 0x55555555, 0x2124ef9d, 0x70c00000, 0xd6da0841, 0x00000209,
              0x00000000, 0x00000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x000018c3, 0x5555d515, 0x18a3f79e, 0x0d090302, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x20e4ffff, 0x5c587060,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001082, 0x55555595,
              0x0841ffff, 0xd5b52d0b, 0xa534ffff, 0x03000000, 0x8c71ffff, 0x00000080, 0x6b6df7be, 0x00000025,
              0xffff0000, 0x55555555, 0xef5d10a2, 0x25955555, 0xd6da0841, 0x00000209, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x1062ef7d, 0xd5953525, 0xce79ffff, 0x01020000, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x632cf7be, 0x40800000, 0x0020c638, 0x5557565c,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00002945, 0x555555d5, 0x0861f7be, 0x35352d0b, 0xf7deffff, 0x02020000, 0xffff0000, 0x55555555,
              0x8430f7de, 0x40408000, 0xdefb1062, 0x00000209, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x29450000, 0x00000080, 0x18c3f7de, 0x352d0903, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xce59ffff, 0x80000000, 0x1082ef5d, 0x565c7060, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xbdf70020, 0x60800000, 0x1082ffff, 0x00020b2d, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0x8c71ffff, 0x00000080, 0xe75c0861, 0x95250902, 0x31a60000, 0x02000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008c71, 0x5555d535, 0x0000f7de, 0x2d0b0200,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffdfffff, 0x80000000, 0x1062ffff, 0x5e78e080, 0x00004a69, 0x55555556, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0821bdd7, 0x35d55555,
              0x1062ffff, 0x00020b2d, 0xffff0000, 0x55555555, 0xef7d18c3, 0x25955555, 0x10a2ffdf, 0xd5b52f00,
              0xa534ffff, 0x03000000, 0x8c71ffff, 0x00000080, 0xe75c0861, 0x95250902, 0x31a60000, 0x02000000,
              0x00000000, 0x00000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0841c638, 0x5555d535,
              0x0000f7de, 0x2d0b0200, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xdefbffff, 0x80000000,
              0x1082ffff, 0x5e78e080, 0x0000632c, 0x5555575c, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0821bdd7, 0x35d55555, 0x0020ffff, 0x00020b2d,
              0xffff0000, 0x55555555, 0xf7be2124, 0x25955555, 0xef7d1082, 0x00000209, 0x00002945, 0x555555d5,
              0x0861ffff, 0xd5b52d0b, 0x738effff, 0x02000000, 0x8c71ffff, 0x00000080, 0xe75c0861, 0x95250902,
              0x31a60000, 0x02000000, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00008430, 0x5555d535, 0x1082f7be, 0xd52d0b00, 0xc638ffff, 0x09000000, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0x8430f7de, 0x60000000, 0x18c3ef9d, 0x555e7080,
              0x42080020, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2104f7be, 0x0d0d0d25, 0xffff0000, 0x55555555,
              0xf7be31a6, 0x25955555, 0xef7d10a2, 0x00000209, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x000031a6, 0x555555d5, 0x0861ffff, 0xd5b52d0b, 0x738effff, 0x02000000, 0xc638ffff, 0x000000c0,
              0xc6180861, 0x01010102, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x01010101,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0xffff0000, 0x54545454, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00002965, 0x555555d5, 0x0841df1b, 0x5555b50b, 0x0000e75c, 0xb50b0000,
              0xbdf7ffff, 0x29000000, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555,
              0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffff0000, 0x55555555, 0xffdfffff, 0x80000000,
              0xf7be9492, 0x25555555, 0x1082f79e, 0x57788000, 0x0861e75c, 0x55555778, 0x00000821, 0x55555557,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xe73c1082, 0x00585858, 0x18e3ef7d, 0x55800000,
              0x0000e73c, 0x55575e78, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x000031a6, 0x555555d5, 0x1082ffff, 0x55b52d0b, 0xef7d2104, 0x00555555,
              0xbdd70861, 0x00010101, 0xffff0000, 0x40404040, 0xffff0000, 0x55555555, 0xffff0000, 0x55555501,
              0xffff0000, 0x55555500, 0xffff0000, 0x55555500, 0xffff0000, 0x55555500, 0xffff0000, 0x55555500,
              0xffff0000, 0x55555500, 0xffff0000, 0x55555500, 0xffff0000, 0x55555500, 0xffff0000, 0x55555500,
              0xffff0000, 0x55555554, 0xffff0000, 0x15151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001082, 0x55555535,
              0x1062c658, 0x5555552d, 0x1062e75c, 0x55552f00, 0x0841ef7d, 0x55bf0000, 0x20e4ffff, 0x55aa0000,
              0xef5d2104, 0x00555555, 0x18c3f7de, 0x55aa0000, 0x1082ef7d, 0x557f0000, 0x1062e71c, 0x55557a00,
              0x082194b2, 0x55555578, 0x000018a3, 0x55555557, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0xffff0000, 0x00404040, 0xffff0000, 0x00555555, 0xffff0000, 0x00555555,
              0xffff0000, 0x00555555, 0xffff0000, 0x00555555, 0xffff0000, 0x00555555, 0xffff0000, 0x00555555,
              0xffff0000, 0x00555555, 0xffff0000, 0x00555555, 0xffff0000, 0x00555555, 0xffff0000, 0x00555555,
              0xffff0000, 0x00555555, 0xffff0000, 0x00151515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
              };  
    
    1. Save ui2.h.
  4. In the Game.cpp file, add the following line after the other #include statements:

    C++

            #include "ui2.h"  
    

Add support for packed vectors

To add support for packed vectors, an additional header file should be included in pch.h.

To add support for packed vectors

  1. Open up the header file pch.h.
  2. After the other #include statements, add:

    C++

            #include <directxpackedvector.h>  
    

Initializing the resources

Next, initialize all the resources needed by adding source code to Game.cpp.

To add text resources to Game.cpp

  1. Open Game.cpp.
  2. Locate the definition for the function CreateResources.
  3. Add the following code at the end of CreateResources:

    C++

      //
      //	Set an arbitrary limit to the number of quads
      //
      m_MaxQuadCount = 1000;
      //
      //  Initialize the counts
      //
      m_QuadCount = 0;
      m_StartQuadIndex = 0;
      m_pLockedVBData = NULL;
      m_pLockedIBData = NULL;
      m_vQuadOffset = XMVectorZero();
      HRESULT hr;
          
      DX::ThrowIfFailed( m_d3dDevice->CreateVertexShader( g_vs_main,
        sizeof( g_vs_main ),
        NULL,
        m_VertexShader.GetAddressOf() )
        );
          
      DX::ThrowIfFailed( m_d3dDevice->CreatePixelShader( g_ps_main,
        sizeof( g_ps_main ),
        NULL,
        m_PixelShader.GetAddressOf() )
        );
          
      const D3D11_INPUT_ELEMENT_DESC Layout[] =
      {
        { "POSITION",   0,  DXGI_FORMAT_R32G32_FLOAT,           0,  0,      D3D11_INPUT_PER_VERTEX_DATA,    0 },
        { "COLOR",      0,  DXGI_FORMAT_R8G8B8A8_UNORM,         0,  8,      D3D11_INPUT_PER_VERTEX_DATA,    0 },
        { "TEXCOORD",   0,  DXGI_FORMAT_R32G32_FLOAT,           0,  12,     D3D11_INPUT_PER_VERTEX_DATA,    0 },
      };
      UINT NumElements = ARRAYSIZE( Layout );
          
      DX::ThrowIfFailed(m_d3dDevice->CreateInputLayout( Layout, NumElements, g_vs_main, sizeof( g_vs_main ), m_InputLayout.GetAddressOf()) );
          
      D3D11_BLEND_DESC BlendDesc;
      ZeroMemory( &BlendDesc, sizeof( D3D11_BLEND_DESC ) );
      BlendDesc.RenderTarget[0].BlendEnable = TRUE;
      BlendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
      BlendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
      BlendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
      BlendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_SRC_ALPHA;
      BlendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
      BlendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
      BlendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
      DX::ThrowIfFailed(m_d3dDevice->CreateBlendState( &BlendDesc, m_BlendStateAlpha.GetAddressOf() ) );
          
      BlendDesc.RenderTarget[0].BlendEnable = FALSE;
      DX::ThrowIfFailed( m_d3dDevice->CreateBlendState( &BlendDesc, m_BlendStateSolid.GetAddressOf() ) );
          
      D3D11_SAMPLER_DESC SamplerDesc;
      ZeroMemory( &SamplerDesc, sizeof(D3D11_SAMPLER_DESC) );
      SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
      SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
      SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
      SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;
      SamplerDesc.MaxLOD = D3D11_FLOAT32_MAX;
      DX::ThrowIfFailed(m_d3dDevice->CreateSamplerState( &SamplerDesc, m_SamplerState.GetAddressOf() ) );
          
          
      SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
      SamplerDesc.MaxLOD = D3D11_FLOAT32_MAX;
      DX::ThrowIfFailed(m_d3dDevice->CreateSamplerState( &SamplerDesc, m_SamplerStatePoint.GetAddressOf() ) );
          
      D3D11_DEPTH_STENCIL_DESC DSDesc;
      ZeroMemory( &DSDesc, sizeof(D3D11_DEPTH_STENCIL_DESC) );
      DSDesc.DepthEnable = FALSE;
      DSDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
      DSDesc.DepthFunc = D3D11_COMPARISON_LESS;
      DSDesc.StencilEnable = FALSE;
      DSDesc.StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK;
      DSDesc.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;
      DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilState( &DSDesc, m_DepthStencilState.GetAddressOf() ) );
          
          
      D3D11_RASTERIZER_DESC RasterizerDesc;
      ZeroMemory( &RasterizerDesc, sizeof(D3D11_RASTERIZER_DESC) );
      RasterizerDesc.FillMode = D3D11_FILL_SOLID;
      RasterizerDesc.CullMode = D3D11_CULL_BACK;
      RasterizerDesc.FrontCounterClockwise = FALSE;
      RasterizerDesc.DepthClipEnable = TRUE;
      DX::ThrowIfFailed(m_d3dDevice->CreateRasterizerState( &RasterizerDesc, m_RasterizerState.GetAddressOf() ) );
          
          
      D3D11_BUFFER_DESC VBDesc;
      VBDesc.ByteWidth = m_MaxQuadCount * 4 * sizeof(UIVERTEX);
      VBDesc.Usage = D3D11_USAGE_DYNAMIC;
      VBDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
      VBDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
      VBDesc.MiscFlags = 0;
      DX::ThrowIfFailed(m_d3dDevice->CreateBuffer( &VBDesc, NULL, m_VertexBuffer.GetAddressOf() ) );
          
          
      D3D11_BUFFER_DESC IBDesc;
      IBDesc.ByteWidth = m_MaxQuadCount * 6 * sizeof(WORD);
      IBDesc.Usage = D3D11_USAGE_DYNAMIC;
      IBDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
      IBDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
      IBDesc.MiscFlags = 0;
      DX::ThrowIfFailed(m_d3dDevice->CreateBuffer( &IBDesc, NULL, m_IndexBuffer.GetAddressOf()));
          
          
      D3D11_BUFFER_DESC CBDesc;
      CBDesc.ByteWidth = sizeof(CONSTANTBUFFER);
      CBDesc.Usage = D3D11_USAGE_DYNAMIC;
      CBDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
      CBDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
      CBDesc.MiscFlags = 0;
      DX::ThrowIfFailed(m_d3dDevice->CreateBuffer( &CBDesc, NULL, m_ConstantBuffer.GetAddressOf() ) );
          
      //
      //	Load the .dds header as a texture
      //
      hr =  LoadRawDDS( m_d3dDevice.Get(), ui2_dds, DXGI_FORMAT_BC1_UNORM, 256, 256, 512, m_TextureRV.GetAddressOf() );  
    

Add code to load in the texture

Next, add the code for the function LoadRawDDS along with the constant buffer and some global constants. The global constants set the text color, the blend factor, and the list of supported characters (which obviously must match exactly the characters in the texture header).

To add the LoadRawDDS function, the constant buffer struct, and the constants

  1. At the top of the Game.cpp file, after the using namespace entries, add the following code:

    C++

    struct CONSTANTBUFFER
    {
      XMFLOAT4X4      m_WorldViewProjection;
    };
          
          
    HRESULT LoadRawDDS( ID3D11Device* pd3dDevice, const void* pDDSFile, DXGI_FORMAT Format, UINT32 Width, UINT32 Height, UINT32 RowPitchBytes, ID3D11ShaderResourceView** ppSRView )
    {
      D3D11_SUBRESOURCE_DATA InitData = {};
      InitData.pSysMem = (BYTE*)pDDSFile + 128;
      InitData.SysMemPitch = RowPitchBytes;
          
      D3D11_TEXTURE2D_DESC TexDesc = {};
      TexDesc.Width = Width;
      TexDesc.Height = Height;
      TexDesc.MipLevels = 1;
      TexDesc.ArraySize = 1;
      TexDesc.SampleDesc.Count = 1;
      TexDesc.Format = Format;
      TexDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
      TexDesc.Usage = D3D11_USAGE_IMMUTABLE;
          
      ID3D11Texture2D* pTex2D = nullptr;
      HRESULT hr = pd3dDevice->CreateTexture2D( &TexDesc, &InitData, &pTex2D );
      if (FAILED(hr))
      {
        return hr;
      }
          
      hr = pd3dDevice->CreateShaderResourceView( pTex2D, nullptr, ppSRView );
      pTex2D->Release();
          
      return hr;
    }
          
    static const FLOAT g_BlendFactor[4] = { 1, 1, 1, 1 };
    //
    //  Text color in RGBA float format (0 to 1.0f values)
    //
    const FLOAT g_textColor[] = { 0.09f, 0.89f, 0.89f, 1.000f };
    //
    //  Supported character set
    //
    static const WCHAR* strCharTable = L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()-=[]\\;',./_+{}|:\"<>?`~";  
    

Rendering the text

Next, add source code to Game.cpp that will render the text.

To add source code to render text

  1. Locate the definition of the method Game::Render in Game.cpp.
    Look for the following comment: // TODO: Add your rendering code here
  2. Replace the comment with the following code:

    C++

      //
      //	Begin the text rendering
      //
      //
      // Get dimensions of viewport
      //
      D3D11_VIEWPORT Viewport;
      UINT NumViewports = 1;
      m_d3dContext->RSGetViewports( &NumViewports, &Viewport );
          
      //
      // Set up shader constants
      //
      D3D11_MAPPED_SUBRESOURCE MappedCB;
      DX::ThrowIfFailed(m_d3dContext->Map( m_ConstantBuffer.Get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &MappedCB ));
          
      CONSTANTBUFFER* pCB = (CONSTANTBUFFER*)MappedCB.pData;
      XMMATRIX Scaling = XMMatrixScaling( 2.0f / (FLOAT)Viewport.Width, -2.0f / (FLOAT)Viewport.Height, 0 );
      Scaling *= XMMatrixTranslation( -1.0f, 1.0f, 0 );
      XMStoreFloat4x4( &pCB->m_WorldViewProjection, Scaling );
      m_d3dContext->Unmap( m_ConstantBuffer.Get(), 0 );
      m_d3dContext->VSSetConstantBuffers( 0, 1, m_ConstantBuffer.GetAddressOf() );
          
      //
      // Set up shaders
      //
      m_d3dContext->IASetInputLayout( m_InputLayout.Get() );
      m_d3dContext->VSSetShader( m_VertexShader.Get(), NULL, 0 );
      m_d3dContext->PSSetShader( m_PixelShader.Get(), NULL, 0 );
      m_d3dContext->OMSetBlendState( m_BlendStateAlpha.Get(), g_BlendFactor, 0xFFFFFFFF );
      m_d3dContext->RSSetState( m_RasterizerState.Get() );
      m_d3dContext->OMSetDepthStencilState( m_DepthStencilState.Get(), 0 );
          
      //
      // Set texture
      //
      m_d3dContext->PSSetShaderResources( 0, 1, m_TextureRV.GetAddressOf() );
      m_d3dContext->PSSetSamplers( 0, 1, m_SamplerState.GetAddressOf() );
          
      StartQuads();
          
      //
      //	All calls to DrawText go in here
      //
          
      DrawText(200,170,20, L"All the supported characters:", g_textColor);
      DrawText(200,200,20, (WCHAR*)strCharTable, g_textColor);
      DrawText(200,300,30, L"Sample text output\nwith a newline",g_textColor);
      DrawText(200,400,60, L"BIG LETTERS",g_textColor);
          
      //
      //	End the text rendering, by calling FlushQuads
      //
      FlushQuads( TRUE );  
    

Add the code to handle quads

This sample uses quads (rectangular cut-outs from the supplied texture). Three methods need to be added to the code to handle quads: StartQuads, AddQuad, and FlushQuads.

To add code to support quads

  1. At the end of the Game.cpp file, add the following code:

    C++

      VOID Game::AddQuad( CXMVECTOR vUpperLeft, CXMVECTOR vSize, FXMVECTOR vTexCoord, FXMVECTOR vTexCoordSize, const FLOAT ColorRGBA[4] )
      {
        if( ( m_QuadCount + m_StartQuadIndex ) >= m_MaxQuadCount )
          return;
          
        const XMVECTOR Vec10 = { 1.0f, 0, 0, 0 };
        const XMVECTOR Vec01 = { 0, 1.0f, 0, 0 };
          
        const INT BaseVertex = ( m_QuadCount + m_StartQuadIndex ) * 4;
        UIVERTEX* pCurrentQuad = m_pLockedVBData + BaseVertex;
          
        XMVECTOR vColor;
          
        vColor.m128_f32[0] = ColorRGBA[0];		// red
        vColor.m128_f32[1] = ColorRGBA[1];		// green
        vColor.m128_f32[2] = ColorRGBA[2];		// blue
        vColor.m128_f32[3] = ColorRGBA[3];		// alpha
          
        const XMVECTOR vOffsetUpperLeft = m_vQuadOffset + vUpperLeft;
          
        XMStoreFloat2( &pCurrentQuad[0].Position, vOffsetUpperLeft );
        XMStoreUByteN4( &pCurrentQuad[0].Color, vColor );
        XMStoreFloat2( &pCurrentQuad[0].TexCoord, vTexCoord );
          
        XMStoreFloat2( &pCurrentQuad[1].Position, vOffsetUpperLeft + vSize * Vec10 );
        XMStoreUByteN4( &pCurrentQuad[1].Color, vColor );
        XMStoreFloat2( &pCurrentQuad[1].TexCoord, vTexCoord + vTexCoordSize * Vec10 );
          
        XMStoreFloat2( &pCurrentQuad[2].Position, vOffsetUpperLeft + vSize * Vec01 );
        XMStoreUByteN4( &pCurrentQuad[2].Color, vColor );
        XMStoreFloat2( &pCurrentQuad[2].TexCoord, vTexCoord + vTexCoordSize * Vec01 );
          
        XMStoreFloat2( &pCurrentQuad[3].Position, vOffsetUpperLeft + vSize );
        XMStoreUByteN4( &pCurrentQuad[3].Color, vColor );
        XMStoreFloat2( &pCurrentQuad[3].TexCoord, vTexCoord + vTexCoordSize );
          
        const INT BaseIndex = ( m_QuadCount + m_StartQuadIndex ) * 6;
        WORD* pCurrentQuadIndices = m_pLockedIBData + BaseIndex;
        pCurrentQuadIndices[0] = 0 + (WORD)BaseVertex;
        pCurrentQuadIndices[1] = 1 + (WORD)BaseVertex;
        pCurrentQuadIndices[2] = 2 + (WORD)BaseVertex;
        pCurrentQuadIndices[3] = 2 + (WORD)BaseVertex;
        pCurrentQuadIndices[4] = 1 + (WORD)BaseVertex;
        pCurrentQuadIndices[5] = 3 + (WORD)BaseVertex;
          
        ++m_QuadCount;
      }
          
      VOID Game::StartQuads()
      {
        D3D11_MAP MapType = D3D11_MAP_WRITE_DISCARD;
        if( m_StartQuadIndex > 0 )
        {
          MapType = D3D11_MAP_WRITE_NO_OVERWRITE;
        }
          
        D3D11_MAPPED_SUBRESOURCE MappedVB;
        DX::ThrowIfFailed(m_d3dContext->Map( m_VertexBuffer.Get(), 0, MapType, 0, &MappedVB ));
        m_pLockedVBData = (UIVERTEX*)MappedVB.pData;
          
        D3D11_MAPPED_SUBRESOURCE MappedIB;
        DX::ThrowIfFailed(m_d3dContext->Map( m_IndexBuffer.Get(), 0, MapType, 0, &MappedIB ));
        m_pLockedIBData = (WORD*)MappedIB.pData;
      }
          
      VOID Game::FlushQuads( BOOL FlushQuadCount )
      {
        if( m_pLockedVBData != NULL )
        {
          m_d3dContext->Unmap( m_VertexBuffer.Get(), 0 );
          m_pLockedVBData = NULL;
        }
          
        if( m_pLockedIBData != NULL )
        {
          m_d3dContext->Unmap( m_IndexBuffer.Get(), 0 );
          m_pLockedIBData = NULL;
        }
          
        if( m_QuadCount == 0 )
        {
          return;
        }
        //
        // Draw quads
        //
        m_d3dContext->IASetIndexBuffer( m_IndexBuffer.Get(), DXGI_FORMAT_R16_UINT, 0 );
        UINT Strides[] = { sizeof(UIVERTEX) };
        UINT Offsets[] = { 0 };
        m_d3dContext->IASetVertexBuffers( 0, 1, m_VertexBuffer.GetAddressOf(), Strides, Offsets );
        m_d3dContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
        m_d3dContext->DrawIndexed( m_QuadCount * 6, m_StartQuadIndex * 6, 0 );
          
        if( FlushQuadCount )
        {
          m_StartQuadIndex = 0;
          m_QuadCount = 0;
        }
        else
        {
          m_StartQuadIndex += m_QuadCount;
          if( m_StartQuadIndex >= m_MaxQuadCount )
          {
            m_StartQuadIndex = 0;
          }
          m_QuadCount = 0;
        }
      }  
    

Add a method to draw the text

Finally, a method is added that uses the AddQuad method to load the required text into the vertex buffer. Note the special case handling of the space and newline in the code that follows.

To add the DrawText method

  1. At the end of the Game.cpp file, add the following code:

    C++

      VOID Game::DrawText( INT X, INT Y, FLOAT Size, WCHAR* strText, const FLOAT ColorRGBA[4] )
      {
        const INT TableColumns = 16;
        const INT TableRows = 6;
        const FLOAT TableVSize = 156.0f / 256.0f;
        const FLOAT TableVOffset = 0.5f / 256.0f;
        const XMVECTOR vTexCoordSize = { 1.0f / (FLOAT)TableColumns, TableVSize / (FLOAT)TableRows, 0, 0 };
          
        const FLOAT fCharAspect = 0.6f;
        const XMVECTOR vCharSize = XMVectorSet( Size * fCharAspect, Size, 0, 0 );
        const XMVECTOR vCharSpacing = vCharSize * XMVectorSet( 1, 0, 0, 0 );
        XMVECTOR vCursor = XMVectorSet( (FLOAT)X, (FLOAT)Y, 0, 0 );
          
        const WCHAR* strCursor = strText;
        while( *strCursor != L'\0' )
        {
          WCHAR CurrentChar = *strCursor;
          switch( CurrentChar )
          {
            //
            //	Handle a space
            //
            case L' ':
              vCursor += vCharSpacing;
              break;
            //
            //	Handle a newline
            //
            case L'\n':
              vCursor += vCharSize;
              vCursor = XMVectorSetX( vCursor, (FLOAT)X );
              break;
            //
            //	Handle all other characters
            //
            default:
            {
              const WCHAR* strFound = wcschr( strCharTable, CurrentChar );
              if( strFound != NULL )
              {
                size_t Index = strFound - strCharTable;
                FLOAT fRow = (FLOAT)( Index / TableColumns ) / (FLOAT)TableRows;
                FLOAT fColumn = (FLOAT)( Index % TableColumns ) / (FLOAT)TableColumns;
                XMVECTOR vTexCoord = XMVectorSet( fColumn, fRow * TableVSize + TableVOffset, 0, 0 );
                AddQuad( vCursor, vCharSize, vTexCoord, vTexCoordSize, ColorRGBA );
             }
             vCursor += vCharSpacing;
             break;
           }
          }
          ++strCursor;
        }
      }  
    

Building and deploying

If you’ve completed the preceding steps in this tutorial, you can now build and deploy your app to the dev kit.

To build and deploy your app

  1. Use Connect (xbconnect.exe) to set the default remote console, or set the IP address of the console in the project properties.
  2. On the Build menu, click Build Solution (or alternatively, select Start Debugging from the Debug menu, and skip the next steps).
    Wait for building to finish.
  3. On the Build menu, click Deploy Solution.
  4. On the dev console, navigate to the My games & apps page, select Games, and then TextDisplay.

See also

Project Templates in Visual Studio for Xbox One Development

Tutorial: Rendering Rectangles and Ellipses