Browse Source

Removed TEXTURETYPE_PALETTE_PIXELART

This doesn't make any sense since the pixel art algorithm uses a box filter to get an average pixel value which isn't possible with indexed textures.
Sam Lantinga 5 days ago
parent
commit
49d51a0d3c
35 changed files with 6865 additions and 7549 deletions
  1. 1097 1282
      src/render/direct3d11/D3D11_PixelShader_Advanced.h
  2. 212 212
      src/render/direct3d11/D3D11_PixelShader_Colors.h
  3. 3 8
      src/render/direct3d11/D3D11_PixelShader_Common.hlsli
  4. 247 247
      src/render/direct3d11/D3D11_PixelShader_Textures.h
  5. 242 242
      src/render/direct3d11/D3D11_VertexShader.h
  6. 8 16
      src/render/direct3d11/SDL_render_d3d11.c
  7. 493 562
      src/render/direct3d12/D3D12_PixelShader_Advanced.h
  8. 8 8
      src/render/direct3d12/D3D12_PixelShader_Colors.h
  9. 3 8
      src/render/direct3d12/D3D12_PixelShader_Common.hlsli
  10. 8 8
      src/render/direct3d12/D3D12_PixelShader_Textures.h
  11. 11 11
      src/render/direct3d12/D3D12_VertexShader_Advanced.h
  12. 11 11
      src/render/direct3d12/D3D12_VertexShader_Color.h
  13. 11 11
      src/render/direct3d12/D3D12_VertexShader_Texture.h
  14. 4 13
      src/render/direct3d12/SDL_render_d3d12.c
  15. 8 16
      src/render/gpu/SDL_render_gpu.c
  16. 3 8
      src/render/gpu/shaders/texture_advanced.frag.hlsl
  17. 7 3
      src/render/metal/SDL_render_metal.m
  18. 4 9
      src/render/metal/SDL_shaders_metal.metal
  19. 500 644
      src/render/metal/SDL_shaders_metal_ios.h
  20. 417 514
      src/render/metal/SDL_shaders_metal_iphonesimulator.h
  21. 1596 491
      src/render/metal/SDL_shaders_metal_macos.h
  22. 500 644
      src/render/metal/SDL_shaders_metal_tvos.h
  23. 1193 2184
      src/render/metal/SDL_shaders_metal_tvsimulator.h
  24. 0 4
      src/render/opengl/SDL_render_gl.c
  25. 1 27
      src/render/opengl/SDL_shaders_gl.c
  26. 0 1
      src/render/opengl/SDL_shaders_gl.h
  27. 2 7
      src/render/opengles2/SDL_render_gles2.c
  28. 0 32
      src/render/opengles2/SDL_shaders_gles2.c
  29. 0 1
      src/render/opengles2/SDL_shaders_gles2.h
  30. 5 13
      src/render/vulkan/SDL_render_vulkan.c
  31. 252 279
      src/render/vulkan/VULKAN_PixelShader_Advanced.h
  32. 9 9
      src/render/vulkan/VULKAN_PixelShader_Colors.h
  33. 0 5
      src/render/vulkan/VULKAN_PixelShader_Common.hlsli
  34. 9 9
      src/render/vulkan/VULKAN_PixelShader_Textures.h
  35. 1 10
      test/testpalette.c

+ 1097 - 1282
src/render/direct3d11/D3D11_PixelShader_Advanced.h

@@ -3,7 +3,7 @@
 // Generated by Microsoft (R) HLSL Shader Compiler 10.1
 //
 //
-// Buffer Definitions: 
+// Buffer Definitions:
 //
 // cbuffer Constants
 // {
@@ -29,12 +29,12 @@
 //
 // Name                                 Type  Format         Dim      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- -------------- ------
-// sampler0                          sampler      NA          NA             s0      1 
-// sampler1                          sampler      NA          NA             s1      1 
-// texture0                          texture  float4          2d             t0      1 
-// texture1                          texture  float4          2d             t1      1 
-// texture2                          texture  float4          2d             t2      1 
-// Constants                         cbuffer      NA          NA            cb0      1 
+// sampler0                          sampler      NA          NA             s0      1
+// sampler1                          sampler      NA          NA             s1      1
+// texture0                          texture  float4          2d             t0      1
+// texture1                          texture  float4          2d             t1      1
+// texture2                          texture  float4          2d             t2      1
+// Constants                         cbuffer      NA          NA            cb0      1
 //
 //
 //
@@ -42,8 +42,8 @@
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
-// SV_POSITION              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
+// SV_POSITION              0   xyzw        0      POS   float
+// TEXCOORD                 0   xy          1     NONE   float   xy
 // COLOR                    0   xyzw        2     NONE   float   xyzw
 //
 //
@@ -68,11 +68,11 @@ dcl_temps 7
 eq r0.xyzw, cb0[0].yzzz, l(0.000000, 3.000000, 2.000000, 1.000000)
 if_nz r0.x
   mov r1.xyzw, l(1.000000,1.000000,1.000000,1.000000)
-else 
+else
   eq r0.x, cb0[0].y, l(1.000000)
   if_nz r0.x
     sample_indexable(texture2d)(float,float,float,float) r1.xyzw, v1.xyxx, t0.xyzw, s0
-  else 
+  else
     eq r0.x, cb0[0].y, l(2.000000)
     if_nz r0.x
       deriv_rtx_coarse r2.xy, v1.xyxx
@@ -96,7 +96,7 @@ else
       add r3.xy, r3.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
       mul r3.xy, r3.xyxx, cb0[1].xyxx
       sample_d_indexable(texture2d)(float,float,float,float) r1.xyzw, r3.xyxx, t0.xyzw, s0, r2.xyxx, r2.zwzz
-    else 
+    else
       eq r0.x, cb0[0].y, l(3.000000)
       if_nz r0.x
         sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t0.xyzw, s0
@@ -104,73 +104,44 @@ else
         mul r2.x, r0.x, l(0.003906)
         mov r2.y, l(0.500000)
         sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r2.xyxx, t1.xyzw, s1
-      else 
+      else
         eq r0.x, cb0[0].y, l(4.000000)
         if_nz r0.x
-          deriv_rtx_coarse r2.xy, v1.xyxx
-          deriv_rty_coarse r2.zw, v1.xxxy
-          add r3.xy, |r2.zwzz|, |r2.xyxx|
-          mul r3.xy, r3.xyxx, cb0[1].zwzz
-          max r3.xy, r3.xyxx, l(0.000010, 0.000010, 0.000000, 0.000000)
-          min r3.xy, r3.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
-          mul r3.zw, r3.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000)
-          mad r3.zw, v1.xxxy, cb0[1].zzzw, -r3.zzzw
-          add r3.xy, -r3.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
-          frc r4.xy, r3.zwzz
-          add r4.zw, -r3.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
-          add r3.xy, -r3.xyxx, r4.xyxx
-          div r4.xy, l(1.000000, 1.000000, 1.000000, 1.000000), r4.zwzz
-          mul_sat r3.xy, r3.xyxx, r4.xyxx
-          mad r4.xy, r3.xyxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000)
-          mul r3.xy, r3.xyxx, r3.xyxx
-          round_ni r3.zw, r3.zzzw
-          mad r3.xy, r4.xyxx, r3.xyxx, r3.zwzz
-          add r3.xy, r3.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
-          mul r3.xy, r3.xyxx, cb0[1].xyxx
-          sample_d_indexable(texture2d)(float,float,float,float) r0.x, r3.xyxx, t0.xyzw, s0, r2.xyxx, r2.zwzz
-          mad r0.x, r0.x, l(255.000000), l(0.500000)
-          mul r2.x, r0.x, l(0.003906)
-          mov r2.y, l(0.500000)
-          sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r2.xyxx, t1.xyzw, s1
-        else 
+          sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
+          sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zxyw, s0
+          add r2.xyz, r2.xyzx, cb0[3].xyzx
+          dp3 r1.x, r2.xyzx, cb0[4].xyzx
+          dp3 r1.y, r2.xyzx, cb0[5].xyzx
+          dp3 r1.z, r2.xyzx, cb0[6].xyzx
+        else
           eq r0.x, cb0[0].y, l(5.000000)
           if_nz r0.x
             sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
-            sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zxyw, s0
+            sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zyxw, s0
             add r2.xyz, r2.xyzx, cb0[3].xyzx
             dp3 r1.x, r2.xyzx, cb0[4].xyzx
             dp3 r1.y, r2.xyzx, cb0[5].xyzx
             dp3 r1.z, r2.xyzx, cb0[6].xyzx
-          else 
+          else
             eq r0.x, cb0[0].y, l(6.000000)
             if_nz r0.x
               sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
-              sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zyxw, s0
+              sample_indexable(texture2d)(float,float,float,float) r2.y, v1.xyxx, t1.yxzw, s0
+              sample_indexable(texture2d)(float,float,float,float) r2.z, v1.xyxx, t2.yzxw, s0
               add r2.xyz, r2.xyzx, cb0[3].xyzx
               dp3 r1.x, r2.xyzx, cb0[4].xyzx
               dp3 r1.y, r2.xyzx, cb0[5].xyzx
               dp3 r1.z, r2.xyzx, cb0[6].xyzx
-            else 
-              eq r0.x, cb0[0].y, l(7.000000)
-              if_nz r0.x
-                sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
-                sample_indexable(texture2d)(float,float,float,float) r2.y, v1.xyxx, t1.yxzw, s0
-                sample_indexable(texture2d)(float,float,float,float) r2.z, v1.xyxx, t2.yzxw, s0
-                add r2.xyz, r2.xyzx, cb0[3].xyzx
-                dp3 r1.x, r2.xyzx, cb0[4].xyzx
-                dp3 r1.y, r2.xyzx, cb0[5].xyzx
-                dp3 r1.z, r2.xyzx, cb0[6].xyzx
-              else 
-                mov r1.xyz, l(1.000000,0,0,0)
-              endif 
-            endif 
-          endif 
-          mov r1.w, l(1.000000)
-        endif 
-      endif 
-    endif 
-  endif 
-endif 
+            else
+              mov r1.xyz, l(1.000000,0,0,0)
+            endif
+          endif
+        endif
+        mov r1.w, l(1.000000)
+      endif
+    endif
+  endif
+endif
 log r2.xyz, |r1.xyzx|
 mul r2.xyz, r2.xyzx, l(0.012683, 0.012683, 0.012683, 0.000000)
 exp r2.xyz, r2.xyzx
@@ -216,9 +187,9 @@ if_nz r0.w
     mul r5.xyz, r5.xyzx, l(2.400000, 2.400000, 2.400000, 0.000000)
     exp r5.xyz, r5.xyzx
     movc r2.xyz, r3.xyzx, r4.xyzx, r5.xyzx
-  endif 
+  endif
   mul r1.xyz, r2.xyzx, cb0[0].wwww
-else 
+else
   if_nz r0.z
     mul r1.xyz, r2.xyzx, cb0[0].wwww
     ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
@@ -230,8 +201,8 @@ else
       exp r4.xyz, r4.xyzx
       mad r4.xyz, r4.xyzx, l(1.055000, 1.055000, 1.055000, 0.000000), l(-0.055000, -0.055000, -0.055000, 0.000000)
       movc_sat r1.xyz, r0.xzwx, r3.xyzx, r4.xyzx
-    endif 
-  else 
+    endif
+  else
     if_nz r0.y
       dp3 r0.x, l(1.660496, -0.587656, -0.072840, 0.000000), r2.xyzx
       dp3 r0.y, l(-0.124547, 1.132895, -0.008348, 0.000000), r2.xyzx
@@ -246,1226 +217,1070 @@ else
         exp r4.xyz, r4.xyzx
         mad r4.xyz, r4.xyzx, l(1.055000, 1.055000, 1.055000, 0.000000), l(-0.055000, -0.055000, -0.055000, 0.000000)
         movc_sat r1.xyz, r0.xyzx, r3.xyzx, r4.xyzx
-      endif 
-    else 
+      endif
+    else
       mul r1.xyz, r2.xyzx, cb0[0].wwww
-    endif 
-  endif 
-endif 
+    endif
+  endif
+endif
 mul o0.xyzw, r1.xyzw, v2.xyzw
-ret 
-// Approximately 189 instruction slots used
+ret
+// Approximately 160 instruction slots used
 #endif
 
 const BYTE g_main[] =
 {
-     68,  88,  66,  67,  21, 212, 
-    190, 204,   0, 233, 124, 222, 
-    179, 192, 161, 234,  41,  79, 
-     56, 168,   1,   0,   0,   0, 
-     84,  28,   0,   0,   5,   0, 
-      0,   0,  52,   0,   0,   0, 
-    168,   4,   0,   0,  28,   5, 
-      0,   0,  80,   5,   0,   0, 
-    184,  27,   0,   0,  82,  68, 
-     69,  70, 108,   4,   0,   0, 
-      1,   0,   0,   0,  52,   1, 
-      0,   0,   6,   0,   0,   0, 
-     60,   0,   0,   0,   0,   5, 
-    255, 255,   0,   1,   0,   0, 
-     68,   4,   0,   0,  82,  68, 
-     49,  49,  60,   0,   0,   0, 
-     24,   0,   0,   0,  32,   0, 
-      0,   0,  40,   0,   0,   0, 
-     36,   0,   0,   0,  12,   0, 
-      0,   0,   0,   0,   0,   0, 
-    252,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0,   5,   1,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0,  14,   1, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-     23,   1,   0,   0,   2,   0, 
-      0,   0,   5,   0,   0,   0, 
-      4,   0,   0,   0, 255, 255, 
-    255, 255,   1,   0,   0,   0, 
-      1,   0,   0,   0,  13,   0, 
-      0,   0,  32,   1,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   2,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0,  41,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-    115,  97, 109, 112, 108, 101, 
-    114,  48,   0, 115,  97, 109, 
-    112, 108, 101, 114,  49,   0, 
-    116, 101, 120, 116, 117, 114, 
-    101,  48,   0, 116, 101, 120, 
-    116, 117, 114, 101,  49,   0, 
-    116, 101, 120, 116, 117, 114, 
-    101,  50,   0,  67, 111, 110, 
-    115, 116,  97, 110, 116, 115, 
-      0, 171,  41,   1,   0,   0, 
-     13,   0,   0,   0,  76,   1, 
-      0,   0, 112,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  84,   3,   0,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,   2,   0,   0,   0, 
-    104,   3,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    140,   3,   0,   0,   4,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 104,   3, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 153,   3, 
-      0,   0,   8,   0,   0,   0, 
-      4,   0,   0,   0,   2,   0, 
-      0,   0, 104,   3,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 164,   3,   0,   0, 
-     12,   0,   0,   0,   4,   0, 
-      0,   0,   2,   0,   0,   0, 
-    104,   3,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    176,   3,   0,   0,  16,   0, 
-      0,   0,  16,   0,   0,   0, 
-      2,   0,   0,   0, 196,   3, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 232,   3, 
-      0,   0,  32,   0,   0,   0, 
-      4,   0,   0,   0,   2,   0, 
-      0,   0, 104,   3,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 247,   3,   0,   0, 
-     36,   0,   0,   0,   4,   0, 
-      0,   0,   2,   0,   0,   0, 
-    104,   3,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-      7,   4,   0,   0,  40,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 104,   3, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,  23,   4, 
-      0,   0,  44,   0,   0,   0, 
-      4,   0,   0,   0,   2,   0, 
-      0,   0, 104,   3,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,  39,   4,   0,   0, 
-     48,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    196,   3,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-     47,   4,   0,   0,  64,   0, 
-      0,   0,  16,   0,   0,   0, 
-      2,   0,   0,   0, 196,   3, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,  54,   4, 
-      0,   0,  80,   0,   0,   0, 
-     16,   0,   0,   0,   2,   0, 
-      0,   0, 196,   3,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,  61,   4,   0,   0, 
-     96,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    196,   3,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   0,   0,   0,   0, 
-    115,  99,  82,  71,  66,  95, 
-    111, 117, 116, 112, 117, 116, 
-      0, 102, 108, 111,  97, 116, 
-      0, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  97,   3, 
-      0,   0, 116, 101, 120, 116, 
-    117, 114, 101,  95, 116, 121, 
-    112, 101,   0, 105, 110, 112, 
-    117, 116,  95, 116, 121, 112, 
-    101,   0,  99, 111, 108, 111, 
-    114,  95, 115,  99,  97, 108, 
-    101,   0, 116, 101, 120, 101, 
-    108,  95, 115, 105, 122, 101, 
-      0, 102, 108, 111,  97, 116, 
-     52,   0, 171, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    187,   3,   0,   0, 116, 111, 
-    110, 101, 109,  97, 112,  95, 
-    109, 101, 116, 104, 111, 100, 
-      0, 116, 111, 110, 101, 109, 
-     97, 112,  95, 102,  97,  99, 
-    116, 111, 114,  49,   0, 116, 
-    111, 110, 101, 109,  97, 112, 
-     95, 102,  97,  99, 116, 111, 
-    114,  50,   0, 115, 100, 114, 
-     95, 119, 104, 105, 116, 101, 
-     95, 112, 111, 105, 110, 116, 
-      0,  89, 111, 102, 102, 115, 
-    101, 116,   0,  82,  99, 111, 
-    101, 102, 102,   0,  71,  99, 
-    111, 101, 102, 102,   0,  66, 
-     99, 111, 101, 102, 102,   0, 
-     77, 105,  99, 114, 111, 115, 
-    111, 102, 116,  32,  40,  82, 
-     41,  32,  72,  76,  83,  76, 
-     32,  83, 104,  97, 100, 101, 
-    114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  49, 
-     48,  46,  49,   0,  73,  83, 
-     71,  78, 108,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,   3, 
-      0,   0, 101,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,   0,   0,   0,  15,  15, 
-      0,   0,  83,  86,  95,  80, 
-     79,  83,  73,  84,  73,  79, 
-     78,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0,  67, 
-     79,  76,  79,  82,   0, 171, 
-     79,  83,  71,  78,  44,   0, 
-      0,   0,   1,   0,   0,   0, 
-      8,   0,   0,   0,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0,  83,  86, 
-     95,  84,  65,  82,  71,  69, 
-     84,   0, 171, 171,  83,  72, 
-     69,  88,  96,  22,   0,   0, 
-     80,   0,   0,   0, 152,   5, 
-      0,   0, 106,   8,   0,   1, 
-     89,   0,   0,   4,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      7,   0,   0,   0,  90,   0, 
-      0,   3,   0,  96,  16,   0, 
-      0,   0,   0,   0,  90,   0, 
-      0,   3,   0,  96,  16,   0, 
-      1,   0,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      0,   0,   0,   0,  85,  85, 
-      0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   1,   0, 
-      0,   0,  85,  85,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   2,   0,   0,   0, 
-     85,  85,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      1,   0,   0,   0,  98,  16, 
-      0,   3, 242,  16,  16,   0, 
-      2,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 104,   0, 
-      0,   2,   7,   0,   0,   0, 
-     24,   0,   0,  11, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-    150, 138,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,  64,  64, 
-      0,   0,   0,  64,   0,   0, 
-    128,  63,  31,   0,   4,   3, 
-     10,   0,  16,   0,   0,   0, 
-      0,   0,  54,   0,   0,   8, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0, 128,  63,  18,   0, 
-      0,   1,  24,   0,   0,   8, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  26, 128,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0, 128,  63,  31,   0, 
-      4,   3,  10,   0,  16,   0, 
-      0,   0,   0,   0,  69,   0, 
-      0, 139, 194,   0,   0, 128, 
-     67,  85,  21,   0, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     18,   0,   0,   1,  24,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  26, 128, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,  64, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-    122,   0,   0,   5,  50,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0, 124,   0,   0,   5, 
-    194,   0,  16,   0,   2,   0, 
-      0,   0,   6,  20,  16,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   9,  50,   0,  16,   0, 
-      3,   0,   0,   0, 230,  10, 
-     16, 128, 129,   0,   0,   0, 
-      2,   0,   0,   0,  70,   0, 
-     16, 128, 129,   0,   0,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,   8,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-    230, 138,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     52,   0,   0,  10,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,   2,  64,   0,   0, 
-    172, 197,  39,  55, 172, 197, 
-     39,  55,   0,   0,   0,   0, 
-      0,   0,   0,   0,  51,   0, 
-      0,  10,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  56,   0,   0,  10, 
-    194,   0,  16,   0,   3,   0, 
-      0,   0,   6,   4,  16,   0, 
-      3,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  63,   0,   0,   0,  63, 
-     50,   0,   0,  11, 194,   0, 
-     16,   0,   3,   0,   0,   0, 
-      6,  20,  16,   0,   1,   0, 
-      0,   0, 166, 142,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0, 166,  14,  16, 128, 
-     65,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,  11, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16, 128, 
-     65,   0,   0,   0,   3,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,  26,   0, 
-      0,   5,  50,   0,  16,   0, 
-      4,   0,   0,   0, 230,  10, 
-     16,   0,   3,   0,   0,   0, 
-      0,   0,   0,  11, 194,   0, 
-     16,   0,   4,   0,   0,   0, 
-      6,   4,  16, 128,  65,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0,   0,   8, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16, 128, 
-     65,   0,   0,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      4,   0,   0,   0,  14,   0, 
-      0,  10,  50,   0,  16,   0, 
-      4,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0, 128,  63, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-    230,  10,  16,   0,   4,   0, 
-      0,   0,  56,  32,   0,   7, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   4,   0,   0,   0, 
-     50,   0,   0,  15,  50,   0, 
-     16,   0,   4,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,   0, 192,   0,   0, 
-      0, 192,   0,   0,   0,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,  64,  64, 
-      0,   0,  64,  64,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,   7,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0,  65,   0, 
-      0,   5, 194,   0,  16,   0, 
-      3,   0,   0,   0, 166,  14, 
-     16,   0,   3,   0,   0,   0, 
-     50,   0,   0,   9,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   4,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0, 230,  10, 
-     16,   0,   3,   0,   0,   0, 
-      0,   0,   0,  10,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,   0,  63,   0,   0, 
-      0,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,  56,   0, 
-      0,   8,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70, 128,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     73,   0,   0, 143, 194,   0, 
-      0, 128,  67,  85,  21,   0, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  70,   0,  16,   0, 
-      2,   0,   0,   0, 230,  10, 
-     16,   0,   2,   0,   0,   0, 
-     18,   0,   0,   1,  24,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  26, 128, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,  64,  64, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0, 139, 194,   0, 
-      0, 128,  67,  85,  21,   0, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  50,   0,   0,   9, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  10,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 127,  67, 
-      1,  64,   0,   0,   0,   0, 
-      0,  63,  56,   0,   0,   7, 
-     18,   0,  16,   0,   2,   0, 
-      0,   0,  10,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 128,  59, 
-     54,   0,   0,   5,  34,   0, 
-     16,   0,   2,   0,   0,   0, 
-      1,  64,   0,   0,   0,   0, 
-      0,  63,  69,   0,   0, 139, 
-    194,   0,   0, 128,  67,  85, 
-     21,   0, 242,   0,  16,   0, 
-      1,   0,   0,   0,  70,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70, 126,  16,   0,   1,   0, 
-      0,   0,   0,  96,  16,   0, 
-      1,   0,   0,   0,  18,   0, 
-      0,   1,  24,   0,   0,   8, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  26, 128,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0, 128,  64,  31,   0, 
-      4,   3,  10,   0,  16,   0, 
-      0,   0,   0,   0, 122,   0, 
-      0,   5,  50,   0,  16,   0, 
-      2,   0,   0,   0,  70,  16, 
-     16,   0,   1,   0,   0,   0, 
-    124,   0,   0,   5, 194,   0, 
-     16,   0,   2,   0,   0,   0, 
-      6,  20,  16,   0,   1,   0, 
-      0,   0,   0,   0,   0,   9, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0, 230,  10,  16, 128, 
-    129,   0,   0,   0,   2,   0, 
-      0,   0,  70,   0,  16, 128, 
-    129,   0,   0,   0,   2,   0, 
-      0,   0,  56,   0,   0,   8, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  52,   0, 
-      0,  10,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0, 172, 197, 
-     39,  55, 172, 197,  39,  55, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  51,   0,   0,  10, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0, 128,  63, 
-      0,   0, 128,  63,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,  10, 194,   0, 
-     16,   0,   3,   0,   0,   0, 
-      6,   4,  16,   0,   3,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  63, 
-      0,   0,   0,  63,  50,   0, 
-      0,  11, 194,   0,  16,   0, 
-      3,   0,   0,   0,   6,  20, 
-     16,   0,   1,   0,   0,   0, 
-    166, 142,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-    166,  14,  16, 128,  65,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,  11,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16, 128,  65,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  26,   0,   0,   5, 
-     50,   0,  16,   0,   4,   0, 
-      0,   0, 230,  10,  16,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,  11, 194,   0,  16,   0, 
-      4,   0,   0,   0,   6,   4, 
-     16, 128,  65,   0,   0,   0, 
-      3,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0,   0,   8,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16, 128,  65,   0, 
-      0,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   4,   0, 
-      0,   0,  14,   0,   0,  10, 
-     50,   0,  16,   0,   4,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0, 128,  63, 230,  10, 
-     16,   0,   4,   0,   0,   0, 
-     56,  32,   0,   7,  50,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      4,   0,   0,   0,  50,   0, 
-      0,  15,  50,   0,  16,   0, 
-      4,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0, 192,   0,   0,   0, 192, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,  64,  64,   0,   0, 
-     64,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,  56,   0, 
-      0,   7,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,  65,   0,   0,   5, 
-    194,   0,  16,   0,   3,   0, 
-      0,   0, 166,  14,  16,   0, 
-      3,   0,   0,   0,  50,   0, 
-      0,   9,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   4,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0, 230,  10,  16,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,  10,  50,   0,  16,   0, 
-      3,   0,   0,   0,  70,   0, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,  63,   0,   0,   0,  63, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-     50,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      3,   0,   0,   0,  70, 128, 
-     32,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  73,   0, 
-      0, 143, 194,   0,   0, 128, 
-     67,  85,  21,   0,  18,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   0,  16,   0,   3,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     70,   0,  16,   0,   2,   0, 
-      0,   0, 230,  10,  16,   0, 
-      2,   0,   0,   0,  50,   0, 
-      0,   9,  18,   0,  16,   0, 
-      0,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0,   0,   0, 
-    127,  67,   1,  64,   0,   0, 
-      0,   0,   0,  63,  56,   0, 
-      0,   7,  18,   0,  16,   0, 
-      2,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0,   0,   0, 
-    128,  59,  54,   0,   0,   5, 
-     34,   0,  16,   0,   2,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0,   0,  63,  69,   0, 
-      0, 139, 194,   0,   0, 128, 
-     67,  85,  21,   0, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   0,  16,   0,   2,   0, 
-      0,   0,  70, 126,  16,   0, 
-      1,   0,   0,   0,   0,  96, 
-     16,   0,   1,   0,   0,   0, 
-     18,   0,   0,   1,  24,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  26, 128, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 160,  64, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0, 139, 194,   0, 
-      0, 128,  67,  85,  21,   0, 
-     18,   0,  16,   0,   2,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0, 139, 
-    194,   0,   0, 128,  67,  85, 
-     21,   0,  98,   0,  16,   0, 
-      2,   0,   0,   0,  70,  16, 
-     16,   0,   1,   0,   0,   0, 
-     38, 125,  16,   0,   1,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   8, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  32,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-     16,   0,   0,   8,  18,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  70, 130,  32,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,  16,   0,   0,   8, 
-     34,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  70, 130, 
-     32,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  16,   0, 
-      0,   8,  66,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-     18,   0,   0,   1,  24,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  26, 128, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 192,  64, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0, 139, 194,   0, 
-      0, 128,  67,  85,  21,   0, 
-     18,   0,  16,   0,   2,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0, 139, 
-    194,   0,   0, 128,  67,  85, 
-     21,   0,  98,   0,  16,   0, 
-      2,   0,   0,   0,  70,  16, 
-     16,   0,   1,   0,   0,   0, 
-    102, 124,  16,   0,   1,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   8, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  32,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-     16,   0,   0,   8,  18,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  70, 130,  32,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,  16,   0,   0,   8, 
-     34,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  70, 130, 
-     32,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  16,   0, 
-      0,   8,  66,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-     18,   0,   0,   1,  24,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  26, 128, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 224,  64, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0, 139, 194,   0, 
-      0, 128,  67,  85,  21,   0, 
-     18,   0,  16,   0,   2,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0, 139, 
-    194,   0,   0, 128,  67,  85, 
-     21,   0,  34,   0,  16,   0, 
-      2,   0,   0,   0,  70,  16, 
-     16,   0,   1,   0,   0,   0, 
-     22, 126,  16,   0,   1,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,  69,   0, 
-      0, 139, 194,   0,   0, 128, 
-     67,  85,  21,   0,  66,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0, 150, 124,  16,   0, 
-      2,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   8, 114,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  70, 130,  32,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,  16,   0,   0,   8, 
-     18,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  70, 130, 
-     32,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,  16,   0, 
-      0,   8,  34,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  32,   0,   0,   0, 
-      0,   0,   5,   0,   0,   0, 
-     16,   0,   0,   8,  66,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  70, 130,  32,   0, 
-      0,   0,   0,   0,   6,   0, 
-      0,   0,  18,   0,   0,   1, 
-     54,   0,   0,   8, 114,   0, 
-     16,   0,   1,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  21,   0,   0,   1, 
-     21,   0,   0,   1,  21,   0, 
-      0,   1,  54,   0,   0,   5, 
-    130,   0,  16,   0,   1,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0, 128,  63,  21,   0, 
-      0,   1,  21,   0,   0,   1, 
-     21,   0,   0,   1,  21,   0, 
-      0,   1,  21,   0,   0,   1, 
-     47,   0,   0,   6, 114,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   2,  16, 128, 129,   0, 
-      0,   0,   1,   0,   0,   0, 
-     56,   0,   0,  10, 114,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,   2,  64,   0,   0, 
-    172, 205,  79,  60, 172, 205, 
-     79,  60, 172, 205,  79,  60, 
-      0,   0,   0,   0,  25,   0, 
-      0,   5, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-      0,   0,   0,  10, 114,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,  86, 191,   0,   0, 
-     86, 191,   0,   0,  86, 191, 
-      0,   0,   0,   0,  52,   0, 
-      0,  10, 114,   0,  16,   0, 
-      3,   0,   0,   0,  70,   2, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  50,   0,   0,  16, 
-    114,   0,  16,   0,   2,   0, 
-      0,   0,  70,   2,  16, 128, 
-     65,   0,   0,   0,   2,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0, 128, 149,  65,   0, 128, 
-    149,  65,   0, 128, 149,  65, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0, 208, 150,  65, 
-      0, 208, 150,  65,   0, 208, 
-    150,  65,   0,   0,   0,   0, 
-     14,   0,   0,   7, 114,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   2,  16,   0,   3,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  47,   0, 
-      0,   6, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16, 128, 129,   0,   0,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-      2,  64,   0,   0, 107, 224, 
-    200,  64, 107, 224, 200,  64, 
-    107, 224, 200,  64,   0,   0, 
-      0,   0,  25,   0,   0,   5, 
-    114,   0,  16,   0,   2,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-      2,  64,   0,   0,   0,  64, 
-     28,  70,   0,  64,  28,  70, 
-      0,  64,  28,  70,   0,   0, 
-      0,   0,  14,   0,   0,   8, 
-    114,   0,  16,   0,   2,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0, 246, 143, 
-     32,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      2,   0,   0,   0,  86,   5, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  70,   2,  16,   0, 
-      1,   0,   0,   0,  57,   0, 
-      0,   8,  18,   0,  16,   0, 
-      0,   0,   0,   0,  10, 128, 
-     32,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,   8, 114,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  86, 133,  32,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,  24,   0,   0,  11, 
-     50,   0,  16,   0,   4,   0, 
-      0,   0,   6, 128,  32,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-      0,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,  16,   0, 
-      0,  10,  18,   0,  16,   0, 
-      5,   0,   0,   0,   2,  64, 
-      0,   0, 140, 157,  32,  63, 
-    200, 151, 168,  62, 249, 104, 
-     49,  61,   0,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  16,   0,   0,  10, 
-     34,   0,  16,   0,   5,   0, 
-      0,   0,   2,  64,   0,   0, 
-    186, 130, 141,  61,  10, 103, 
-    107,  63, 175,  39,  58,  60, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     16,   0,   0,  10,  66,   0, 
-     16,   0,   5,   0,   0,   0, 
-      2,  64,   0,   0, 107,  70, 
-    134,  60,  41,  64, 180,  61, 
-    183,  69, 101,  63,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      5,   0,   0,   0, 166,  10, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   5,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  52,   0, 
-      0,   7, 130,   0,  16,   0, 
-      2,   0,   0,   0,  42,   0, 
-     16,   0,   5,   0,   0,   0, 
-     26,   0,  16,   0,   5,   0, 
-      0,   0,  52,   0,   0,   7, 
-    130,   0,  16,   0,   2,   0, 
-      0,   0,  58,   0,  16,   0, 
-      2,   0,   0,   0,  10,   0, 
-     16,   0,   5,   0,   0,   0, 
-     49,   0,   0,   7, 130,   0, 
-     16,   0,   3,   0,   0,   0, 
-      1,  64,   0,   0,   0,   0, 
-      0,   0,  58,   0,  16,   0, 
-      2,   0,   0,   0,  50,   0, 
-      0,  13, 194,   0,  16,   0, 
-      4,   0,   0,   0,  86, 137, 
-     32,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0, 246,  15, 
-     16,   0,   2,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,  14,   0,   0,   7, 
-    130,   0,  16,   0,   2,   0, 
-      0,   0,  42,   0,  16,   0, 
-      4,   0,   0,   0,  58,   0, 
-     16,   0,   4,   0,   0,   0, 
-     56,   0,   0,   7, 114,   0, 
-     16,   0,   6,   0,   0,   0, 
-    246,  15,  16,   0,   2,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      5,   0,   0,   0, 246,  15, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   6,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  16,   0, 
-      0,  10,  18,   0,  16,   0, 
-      6,   0,   0,   0,   2,  64, 
-      0,   0,  34, 139, 212,  63, 
-    160, 112,  22, 191,  35,  45, 
-    149, 189,   0,   0,   0,   0, 
-     70,   2,  16,   0,   5,   0, 
-      0,   0,  16,   0,   0,  10, 
-     34,   0,  16,   0,   6,   0, 
-      0,   0,   2,  64,   0,   0, 
-    127,  18, 255, 189, 180,   2, 
-    145,  63,  13, 198,   8, 188, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   5,   0,   0,   0, 
-     16,   0,   0,  10,  66,   0, 
-     16,   0,   6,   0,   0,   0, 
-      2,  64,   0,   0, 179, 183, 
-    148, 188, 205,   5, 206, 189, 
-     60,  51, 143,  63,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      5,   0,   0,   0, 166,  10, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   6,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  55,   0, 
-      0,   9, 226,   0,  16,   0, 
-      4,   0,   0,   0,  86,   5, 
-     16,   0,   4,   0,   0,   0, 
-      6,   9,  16,   0,   5,   0, 
-      0,   0,   6,   9,  16,   0, 
-      2,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      3,   0,   0,   0,   6,   0, 
-     16,   0,   4,   0,   0,   0, 
-     70,   2,  16,   0,   3,   0, 
-      0,   0, 150,   7,  16,   0, 
-      4,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      2,   0,   0,   0,   6,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   3,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  31,   0, 
-      4,   3,  58,   0,  16,   0, 
-      0,   0,   0,   0,  57,   0, 
-      0,  11,  18,   0,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     10, 128,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     31,   0,   4,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     29,   0,   0,  10, 114,   0, 
-     16,   0,   3,   0,   0,   0, 
-      2,  64,   0,   0, 230, 174, 
-     37,  61, 230, 174,  37,  61, 
-    230, 174,  37,  61,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      4,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-      2,  64,   0,   0, 145, 131, 
-    158,  61, 145, 131, 158,  61, 
-    145, 131, 158,  61,   0,   0, 
-      0,   0,   0,   0,   0,  10, 
-    114,   0,  16,   0,   5,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,   2,  64, 
-      0,   0, 174,  71,  97,  61, 
-    174,  71,  97,  61, 174,  71, 
-     97,  61,   0,   0,   0,   0, 
-     56,   0,   0,  11, 114,   0, 
-     16,   0,   5,   0,   0,   0, 
-     70,   2,  16, 128, 129,   0, 
-      0,   0,   5,   0,   0,   0, 
-      2,  64,   0,   0, 111, 167, 
-    114,  63, 111, 167, 114,  63, 
-    111, 167, 114,  63,   0,   0, 
-      0,   0,  47,   0,   0,   5, 
-    114,   0,  16,   0,   5,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      5,   0,   0,   0,  70,   2, 
-     16,   0,   5,   0,   0,   0, 
-      2,  64,   0,   0, 154, 153, 
-     25,  64, 154, 153,  25,  64, 
-    154, 153,  25,  64,   0,   0, 
-      0,   0,  25,   0,   0,   5, 
-    114,   0,  16,   0,   5,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  55,   0, 
-      0,   9, 114,   0,  16,   0, 
-      2,   0,   0,   0,  70,   2, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   4,   0, 
-      0,   0,  70,   2,  16,   0, 
-      5,   0,   0,   0,  21,   0, 
-      0,   1,  56,   0,   0,   8, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0, 246, 143, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  18,   0, 
-      0,   1,  31,   0,   4,   3, 
-     42,   0,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0, 246, 143, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  57,   0, 
-      0,  11,  18,   0,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     10, 128,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     31,   0,   0,   3,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     29,   0,   0,  10, 210,   0, 
-     16,   0,   0,   0,   0,   0, 
-      2,  64,   0,   0,  28,  46, 
-     77,  59,   0,   0,   0,   0, 
-     28,  46,  77,  59,  28,  46, 
-     77,  59,   6,   9,  16,   0, 
-      1,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      3,   0,   0,   0,  70,   2, 
-     16,   0,   1,   0,   0,   0, 
-      2,  64,   0,   0,  82, 184, 
-     78,  65,  82, 184,  78,  65, 
-     82, 184,  78,  65,   0,   0, 
-      0,   0,  47,   0,   0,   6, 
-    114,   0,  16,   0,   4,   0, 
-      0,   0,  70,   2,  16, 128, 
-    129,   0,   0,   0,   1,   0, 
-      0,   0,  56,   0,   0,  10, 
-    114,   0,  16,   0,   4,   0, 
-      0,   0,  70,   2,  16,   0, 
-      4,   0,   0,   0,   2,  64, 
-      0,   0,  85,  85, 213,  62, 
-     85,  85, 213,  62,  85,  85, 
-    213,  62,   0,   0,   0,   0, 
-     25,   0,   0,   5, 114,   0, 
-     16,   0,   4,   0,   0,   0, 
-     70,   2,  16,   0,   4,   0, 
-      0,   0,  50,   0,   0,  15, 
-    114,   0,  16,   0,   4,   0, 
-      0,   0,  70,   2,  16,   0, 
-      4,   0,   0,   0,   2,  64, 
-      0,   0,  61,  10, 135,  63, 
-     61,  10, 135,  63,  61,  10, 
-    135,  63,   0,   0,   0,   0, 
-      2,  64,   0,   0, 174,  71, 
-     97, 189, 174,  71,  97, 189, 
-    174,  71,  97, 189,   0,   0, 
-      0,   0,  55,  32,   0,   9, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0, 134,   3,  16,   0, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   4,   0, 
-      0,   0,  21,   0,   0,   1, 
-     18,   0,   0,   1,  31,   0, 
-      4,   3,  26,   0,  16,   0, 
-      0,   0,   0,   0,  16,   0, 
-      0,  10,  18,   0,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,  34, 139, 212,  63, 
-    160, 112,  22, 191,  35,  45, 
-    149, 189,   0,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,  16,   0,   0,  10, 
-     34,   0,  16,   0,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-    127,  18, 255, 189, 180,   2, 
-    145,  63,  13, 198,   8, 188, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   2,   0,   0,   0, 
-     16,   0,   0,  10,  66,   0, 
-     16,   0,   0,   0,   0,   0, 
-      2,  64,   0,   0, 179, 183, 
-    148, 188, 205,   5, 206, 189, 
-     60,  51, 143,  63,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,   8, 114,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   0,   0,   0,   0, 
-    246, 143,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     57,   0,   0,  11,  18,   0, 
-     16,   0,   0,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  10, 128,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  31,   0,   0,   3, 
-     10,   0,  16,   0,   0,   0, 
-      0,   0,  29,   0,   0,  10, 
-    114,   0,  16,   0,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-     28,  46,  77,  59,  28,  46, 
-     77,  59,  28,  46,  77,  59, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   1,   0,   0,   0, 
-     56,   0,   0,  10, 114,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,   2,  16,   0,   1,   0, 
-      0,   0,   2,  64,   0,   0, 
-     82, 184,  78,  65,  82, 184, 
-     78,  65,  82, 184,  78,  65, 
-      0,   0,   0,   0,  47,   0, 
-      0,   6, 114,   0,  16,   0, 
-      4,   0,   0,   0,  70,   2, 
-     16, 128, 129,   0,   0,   0, 
-      1,   0,   0,   0,  56,   0, 
-      0,  10, 114,   0,  16,   0, 
-      4,   0,   0,   0,  70,   2, 
-     16,   0,   4,   0,   0,   0, 
-      2,  64,   0,   0,  85,  85, 
-    213,  62,  85,  85, 213,  62, 
-     85,  85, 213,  62,   0,   0, 
-      0,   0,  25,   0,   0,   5, 
-    114,   0,  16,   0,   4,   0, 
-      0,   0,  70,   2,  16,   0, 
-      4,   0,   0,   0,  50,   0, 
-      0,  15, 114,   0,  16,   0, 
-      4,   0,   0,   0,  70,   2, 
-     16,   0,   4,   0,   0,   0, 
-      2,  64,   0,   0,  61,  10, 
-    135,  63,  61,  10, 135,  63, 
-     61,  10, 135,  63,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-    174,  71,  97, 189, 174,  71, 
-     97, 189, 174,  71,  97, 189, 
-      0,   0,   0,   0,  55,  32, 
-      0,   9, 114,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   3,   0, 
-      0,   0,  70,   2,  16,   0, 
-      4,   0,   0,   0,  21,   0, 
-      0,   1,  18,   0,   0,   1, 
-     56,   0,   0,   8, 114,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0, 246, 143,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  21,   0,   0,   1, 
-     21,   0,   0,   1,  21,   0, 
-      0,   1,  56,   0,   0,   7, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  70,  30, 
-     16,   0,   2,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 148,   0,   0,   0, 
-    189,   0,   0,   0,   7,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0, 118,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  12,   0, 
-      0,   0,  14,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  11,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,  10,   0,   0,   0, 
-      7,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+     68,  88,  66,  67, 189, 249,
+      3, 160, 168,  14, 177, 240,
+    224, 229,  45, 241, 216, 176,
+    187, 190,   1,   0,   0,   0,
+    172,  24,   0,   0,   5,   0,
+      0,   0,  52,   0,   0,   0,
+    168,   4,   0,   0,  28,   5,
+      0,   0,  80,   5,   0,   0,
+     16,  24,   0,   0,  82,  68,
+     69,  70, 108,   4,   0,   0,
+      1,   0,   0,   0,  52,   1,
+      0,   0,   6,   0,   0,   0,
+     60,   0,   0,   0,   0,   5,
+    255, 255,   0,   1,   0,   0,
+     68,   4,   0,   0,  82,  68,
+     49,  49,  60,   0,   0,   0,
+     24,   0,   0,   0,  32,   0,
+      0,   0,  40,   0,   0,   0,
+     36,   0,   0,   0,  12,   0,
+      0,   0,   0,   0,   0,   0,
+    252,   0,   0,   0,   3,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   1,   0,
+      0,   0,   5,   1,   0,   0,
+      3,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   1,   0,   0,   0,
+      1,   0,   0,   0,  14,   1,
+      0,   0,   2,   0,   0,   0,
+      5,   0,   0,   0,   4,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0,   1,   0,
+      0,   0,  13,   0,   0,   0,
+     23,   1,   0,   0,   2,   0,
+      0,   0,   5,   0,   0,   0,
+      4,   0,   0,   0, 255, 255,
+    255, 255,   1,   0,   0,   0,
+      1,   0,   0,   0,  13,   0,
+      0,   0,  32,   1,   0,   0,
+      2,   0,   0,   0,   5,   0,
+      0,   0,   4,   0,   0,   0,
+    255, 255, 255, 255,   2,   0,
+      0,   0,   1,   0,   0,   0,
+     13,   0,   0,   0,  41,   1,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   1,   0,   0,   0,
+    115,  97, 109, 112, 108, 101,
+    114,  48,   0, 115,  97, 109,
+    112, 108, 101, 114,  49,   0,
+    116, 101, 120, 116, 117, 114,
+    101,  48,   0, 116, 101, 120,
+    116, 117, 114, 101,  49,   0,
+    116, 101, 120, 116, 117, 114,
+    101,  50,   0,  67, 111, 110,
+    115, 116,  97, 110, 116, 115,
+      0, 171,  41,   1,   0,   0,
+     13,   0,   0,   0,  76,   1,
+      0,   0, 112,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  84,   3,   0,   0,
+      0,   0,   0,   0,   4,   0,
+      0,   0,   2,   0,   0,   0,
+    104,   3,   0,   0,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    140,   3,   0,   0,   4,   0,
+      0,   0,   4,   0,   0,   0,
+      2,   0,   0,   0, 104,   3,
+      0,   0,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 153,   3,
+      0,   0,   8,   0,   0,   0,
+      4,   0,   0,   0,   2,   0,
+      0,   0, 104,   3,   0,   0,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 164,   3,   0,   0,
+     12,   0,   0,   0,   4,   0,
+      0,   0,   2,   0,   0,   0,
+    104,   3,   0,   0,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    176,   3,   0,   0,  16,   0,
+      0,   0,  16,   0,   0,   0,
+      2,   0,   0,   0, 196,   3,
+      0,   0,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 232,   3,
+      0,   0,  32,   0,   0,   0,
+      4,   0,   0,   0,   2,   0,
+      0,   0, 104,   3,   0,   0,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 247,   3,   0,   0,
+     36,   0,   0,   0,   4,   0,
+      0,   0,   2,   0,   0,   0,
+    104,   3,   0,   0,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+      7,   4,   0,   0,  40,   0,
+      0,   0,   4,   0,   0,   0,
+      2,   0,   0,   0, 104,   3,
+      0,   0,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0,  23,   4,
+      0,   0,  44,   0,   0,   0,
+      4,   0,   0,   0,   2,   0,
+      0,   0, 104,   3,   0,   0,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0,  39,   4,   0,   0,
+     48,   0,   0,   0,  16,   0,
+      0,   0,   2,   0,   0,   0,
+    196,   3,   0,   0,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+     47,   4,   0,   0,  64,   0,
+      0,   0,  16,   0,   0,   0,
+      2,   0,   0,   0, 196,   3,
+      0,   0,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0,  54,   4,
+      0,   0,  80,   0,   0,   0,
+     16,   0,   0,   0,   2,   0,
+      0,   0, 196,   3,   0,   0,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    255, 255, 255, 255,   0,   0,
+      0,   0,  61,   4,   0,   0,
+     96,   0,   0,   0,  16,   0,
+      0,   0,   2,   0,   0,   0,
+    196,   3,   0,   0,   0,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0, 255, 255,
+    255, 255,   0,   0,   0,   0,
+    115,  99,  82,  71,  66,  95,
+    111, 117, 116, 112, 117, 116,
+      0, 102, 108, 111,  97, 116,
+      0, 171,   0,   0,   3,   0,
+      1,   0,   1,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  97,   3,
+      0,   0, 116, 101, 120, 116,
+    117, 114, 101,  95, 116, 121,
+    112, 101,   0, 105, 110, 112,
+    117, 116,  95, 116, 121, 112,
+    101,   0,  99, 111, 108, 111,
+    114,  95, 115,  99,  97, 108,
+    101,   0, 116, 101, 120, 101,
+    108,  95, 115, 105, 122, 101,
+      0, 102, 108, 111,  97, 116,
+     52,   0, 171, 171,   1,   0,
+      3,   0,   1,   0,   4,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+    187,   3,   0,   0, 116, 111,
+    110, 101, 109,  97, 112,  95,
+    109, 101, 116, 104, 111, 100,
+      0, 116, 111, 110, 101, 109,
+     97, 112,  95, 102,  97,  99,
+    116, 111, 114,  49,   0, 116,
+    111, 110, 101, 109,  97, 112,
+     95, 102,  97,  99, 116, 111,
+    114,  50,   0, 115, 100, 114,
+     95, 119, 104, 105, 116, 101,
+     95, 112, 111, 105, 110, 116,
+      0,  89, 111, 102, 102, 115,
+    101, 116,   0,  82,  99, 111,
+    101, 102, 102,   0,  71,  99,
+    111, 101, 102, 102,   0,  66,
+     99, 111, 101, 102, 102,   0,
+     77, 105,  99, 114, 111, 115,
+    111, 102, 116,  32,  40,  82,
+     41,  32,  72,  76,  83,  76,
+     32,  83, 104,  97, 100, 101,
+    114,  32,  67, 111, 109, 112,
+    105, 108, 101, 114,  32,  49,
+     48,  46,  49,   0,  73,  83,
+     71,  78, 108,   0,   0,   0,
+      3,   0,   0,   0,   8,   0,
+      0,   0,  80,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   3,   0,   0,   0,
+      0,   0,   0,   0,  15,   0,
+      0,   0,  92,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+      1,   0,   0,   0,   3,   3,
+      0,   0, 101,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+      2,   0,   0,   0,  15,  15,
+      0,   0,  83,  86,  95,  80,
+     79,  83,  73,  84,  73,  79,
+     78,   0,  84,  69,  88,  67,
+     79,  79,  82,  68,   0,  67,
+     79,  76,  79,  82,   0, 171,
+     79,  83,  71,  78,  44,   0,
+      0,   0,   1,   0,   0,   0,
+      8,   0,   0,   0,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   3,   0,
+      0,   0,   0,   0,   0,   0,
+     15,   0,   0,   0,  83,  86,
+     95,  84,  65,  82,  71,  69,
+     84,   0, 171, 171,  83,  72,
+     69,  88, 184,  18,   0,   0,
+     80,   0,   0,   0, 174,   4,
+      0,   0, 106,   8,   0,   1,
+     89,   0,   0,   4,  70, 142,
+     32,   0,   0,   0,   0,   0,
+      7,   0,   0,   0,  90,   0,
+      0,   3,   0,  96,  16,   0,
+      0,   0,   0,   0,  90,   0,
+      0,   3,   0,  96,  16,   0,
+      1,   0,   0,   0,  88,  24,
+      0,   4,   0, 112,  16,   0,
+      0,   0,   0,   0,  85,  85,
+      0,   0,  88,  24,   0,   4,
+      0, 112,  16,   0,   1,   0,
+      0,   0,  85,  85,   0,   0,
+     88,  24,   0,   4,   0, 112,
+     16,   0,   2,   0,   0,   0,
+     85,  85,   0,   0,  98,  16,
+      0,   3,  50,  16,  16,   0,
+      1,   0,   0,   0,  98,  16,
+      0,   3, 242,  16,  16,   0,
+      2,   0,   0,   0, 101,   0,
+      0,   3, 242,  32,  16,   0,
+      0,   0,   0,   0, 104,   0,
+      0,   2,   7,   0,   0,   0,
+     24,   0,   0,  11, 242,   0,
+     16,   0,   0,   0,   0,   0,
+    150, 138,  32,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,  64,  64,
+      0,   0,   0,  64,   0,   0,
+    128,  63,  31,   0,   4,   3,
+     10,   0,  16,   0,   0,   0,
+      0,   0,  54,   0,   0,   8,
+    242,   0,  16,   0,   1,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0, 128,  63,   0,   0,
+    128,  63,   0,   0, 128,  63,
+      0,   0, 128,  63,  18,   0,
+      0,   1,  24,   0,   0,   8,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  26, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,  64,   0,   0,
+      0,   0, 128,  63,  31,   0,
+      4,   3,  10,   0,  16,   0,
+      0,   0,   0,   0,  69,   0,
+      0, 139, 194,   0,   0, 128,
+     67,  85,  21,   0, 242,   0,
+     16,   0,   1,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0,  70, 126,  16,   0,
+      0,   0,   0,   0,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     18,   0,   0,   1,  24,   0,
+      0,   8,  18,   0,  16,   0,
+      0,   0,   0,   0,  26, 128,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,  64,
+      0,   0,   0,   0,   0,  64,
+     31,   0,   4,   3,  10,   0,
+     16,   0,   0,   0,   0,   0,
+    122,   0,   0,   5,  50,   0,
+     16,   0,   2,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0, 124,   0,   0,   5,
+    194,   0,  16,   0,   2,   0,
+      0,   0,   6,  20,  16,   0,
+      1,   0,   0,   0,   0,   0,
+      0,   9,  50,   0,  16,   0,
+      3,   0,   0,   0, 230,  10,
+     16, 128, 129,   0,   0,   0,
+      2,   0,   0,   0,  70,   0,
+     16, 128, 129,   0,   0,   0,
+      2,   0,   0,   0,  56,   0,
+      0,   8,  50,   0,  16,   0,
+      3,   0,   0,   0,  70,   0,
+     16,   0,   3,   0,   0,   0,
+    230, 138,  32,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+     52,   0,   0,  10,  50,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   0,  16,   0,   3,   0,
+      0,   0,   2,  64,   0,   0,
+    172, 197,  39,  55, 172, 197,
+     39,  55,   0,   0,   0,   0,
+      0,   0,   0,   0,  51,   0,
+      0,  10,  50,   0,  16,   0,
+      3,   0,   0,   0,  70,   0,
+     16,   0,   3,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+    128,  63,   0,   0, 128,  63,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  56,   0,   0,  10,
+    194,   0,  16,   0,   3,   0,
+      0,   0,   6,   4,  16,   0,
+      3,   0,   0,   0,   2,  64,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,  63,   0,   0,   0,  63,
+     50,   0,   0,  11, 194,   0,
+     16,   0,   3,   0,   0,   0,
+      6,  20,  16,   0,   1,   0,
+      0,   0, 166, 142,  32,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0, 166,  14,  16, 128,
+     65,   0,   0,   0,   3,   0,
+      0,   0,   0,   0,   0,  11,
+     50,   0,  16,   0,   3,   0,
+      0,   0,  70,   0,  16, 128,
+     65,   0,   0,   0,   3,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0, 128,  63,   0,   0,
+    128,  63,   0,   0,   0,   0,
+      0,   0,   0,   0,  26,   0,
+      0,   5,  50,   0,  16,   0,
+      4,   0,   0,   0, 230,  10,
+     16,   0,   3,   0,   0,   0,
+      0,   0,   0,  11, 194,   0,
+     16,   0,   4,   0,   0,   0,
+      6,   4,  16, 128,  65,   0,
+      0,   0,   3,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0, 128,  63,   0,   0,
+    128,  63,   0,   0,   0,   8,
+     50,   0,  16,   0,   3,   0,
+      0,   0,  70,   0,  16, 128,
+     65,   0,   0,   0,   3,   0,
+      0,   0,  70,   0,  16,   0,
+      4,   0,   0,   0,  14,   0,
+      0,  10,  50,   0,  16,   0,
+      4,   0,   0,   0,   2,  64,
+      0,   0,   0,   0, 128,  63,
+      0,   0, 128,  63,   0,   0,
+    128,  63,   0,   0, 128,  63,
+    230,  10,  16,   0,   4,   0,
+      0,   0,  56,  32,   0,   7,
+     50,   0,  16,   0,   3,   0,
+      0,   0,  70,   0,  16,   0,
+      3,   0,   0,   0,  70,   0,
+     16,   0,   4,   0,   0,   0,
+     50,   0,   0,  15,  50,   0,
+     16,   0,   4,   0,   0,   0,
+     70,   0,  16,   0,   3,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0,   0, 192,   0,   0,
+      0, 192,   0,   0,   0,   0,
+      0,   0,   0,   0,   2,  64,
+      0,   0,   0,   0,  64,  64,
+      0,   0,  64,  64,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     56,   0,   0,   7,  50,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   0,  16,   0,   3,   0,
+      0,   0,  70,   0,  16,   0,
+      3,   0,   0,   0,  65,   0,
+      0,   5, 194,   0,  16,   0,
+      3,   0,   0,   0, 166,  14,
+     16,   0,   3,   0,   0,   0,
+     50,   0,   0,   9,  50,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   0,  16,   0,   4,   0,
+      0,   0,  70,   0,  16,   0,
+      3,   0,   0,   0, 230,  10,
+     16,   0,   3,   0,   0,   0,
+      0,   0,   0,  10,  50,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   0,  16,   0,   3,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0,   0,  63,   0,   0,
+      0,  63,   0,   0,   0,   0,
+      0,   0,   0,   0,  56,   0,
+      0,   8,  50,   0,  16,   0,
+      3,   0,   0,   0,  70,   0,
+     16,   0,   3,   0,   0,   0,
+     70, 128,  32,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+     73,   0,   0, 143, 194,   0,
+      0, 128,  67,  85,  21,   0,
+    242,   0,  16,   0,   1,   0,
+      0,   0,  70,   0,  16,   0,
+      3,   0,   0,   0,  70, 126,
+     16,   0,   0,   0,   0,   0,
+      0,  96,  16,   0,   0,   0,
+      0,   0,  70,   0,  16,   0,
+      2,   0,   0,   0, 230,  10,
+     16,   0,   2,   0,   0,   0,
+     18,   0,   0,   1,  24,   0,
+      0,   8,  18,   0,  16,   0,
+      0,   0,   0,   0,  26, 128,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,  64,
+      0,   0,   0,   0,  64,  64,
+     31,   0,   4,   3,  10,   0,
+     16,   0,   0,   0,   0,   0,
+     69,   0,   0, 139, 194,   0,
+      0, 128,  67,  85,  21,   0,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  70,  16,  16,   0,
+      1,   0,   0,   0,  70, 126,
+     16,   0,   0,   0,   0,   0,
+      0,  96,  16,   0,   0,   0,
+      0,   0,  50,   0,   0,   9,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  10,   0,  16,   0,
+      0,   0,   0,   0,   1,  64,
+      0,   0,   0,   0, 127,  67,
+      1,  64,   0,   0,   0,   0,
+      0,  63,  56,   0,   0,   7,
+     18,   0,  16,   0,   2,   0,
+      0,   0,  10,   0,  16,   0,
+      0,   0,   0,   0,   1,  64,
+      0,   0,   0,   0, 128,  59,
+     54,   0,   0,   5,  34,   0,
+     16,   0,   2,   0,   0,   0,
+      1,  64,   0,   0,   0,   0,
+      0,  63,  69,   0,   0, 139,
+    194,   0,   0, 128,  67,  85,
+     21,   0, 242,   0,  16,   0,
+      1,   0,   0,   0,  70,   0,
+     16,   0,   2,   0,   0,   0,
+     70, 126,  16,   0,   1,   0,
+      0,   0,   0,  96,  16,   0,
+      1,   0,   0,   0,  18,   0,
+      0,   1,  24,   0,   0,   8,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  26, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,  64,   0,   0,
+      0,   0, 128,  64,  31,   0,
+      4,   3,  10,   0,  16,   0,
+      0,   0,   0,   0,  69,   0,
+      0, 139, 194,   0,   0, 128,
+     67,  85,  21,   0,  18,   0,
+     16,   0,   2,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0,  70, 126,  16,   0,
+      0,   0,   0,   0,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     69,   0,   0, 139, 194,   0,
+      0, 128,  67,  85,  21,   0,
+     98,   0,  16,   0,   2,   0,
+      0,   0,  70,  16,  16,   0,
+      1,   0,   0,   0,  38, 125,
+     16,   0,   1,   0,   0,   0,
+      0,  96,  16,   0,   0,   0,
+      0,   0,   0,   0,   0,   8,
+    114,   0,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  70, 130,
+     32,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,  16,   0,
+      0,   8,  18,   0,  16,   0,
+      1,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     70, 130,  32,   0,   0,   0,
+      0,   0,   4,   0,   0,   0,
+     16,   0,   0,   8,  34,   0,
+     16,   0,   1,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  70, 130,  32,   0,
+      0,   0,   0,   0,   5,   0,
+      0,   0,  16,   0,   0,   8,
+     66,   0,  16,   0,   1,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  70, 130,
+     32,   0,   0,   0,   0,   0,
+      6,   0,   0,   0,  18,   0,
+      0,   1,  24,   0,   0,   8,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  26, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,  64,   0,   0,
+      0,   0, 160,  64,  31,   0,
+      4,   3,  10,   0,  16,   0,
+      0,   0,   0,   0,  69,   0,
+      0, 139, 194,   0,   0, 128,
+     67,  85,  21,   0,  18,   0,
+     16,   0,   2,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0,  70, 126,  16,   0,
+      0,   0,   0,   0,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     69,   0,   0, 139, 194,   0,
+      0, 128,  67,  85,  21,   0,
+     98,   0,  16,   0,   2,   0,
+      0,   0,  70,  16,  16,   0,
+      1,   0,   0,   0, 102, 124,
+     16,   0,   1,   0,   0,   0,
+      0,  96,  16,   0,   0,   0,
+      0,   0,   0,   0,   0,   8,
+    114,   0,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  70, 130,
+     32,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,  16,   0,
+      0,   8,  18,   0,  16,   0,
+      1,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     70, 130,  32,   0,   0,   0,
+      0,   0,   4,   0,   0,   0,
+     16,   0,   0,   8,  34,   0,
+     16,   0,   1,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  70, 130,  32,   0,
+      0,   0,   0,   0,   5,   0,
+      0,   0,  16,   0,   0,   8,
+     66,   0,  16,   0,   1,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  70, 130,
+     32,   0,   0,   0,   0,   0,
+      6,   0,   0,   0,  18,   0,
+      0,   1,  24,   0,   0,   8,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  26, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,  64,   0,   0,
+      0,   0, 192,  64,  31,   0,
+      4,   3,  10,   0,  16,   0,
+      0,   0,   0,   0,  69,   0,
+      0, 139, 194,   0,   0, 128,
+     67,  85,  21,   0,  18,   0,
+     16,   0,   2,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0,  70, 126,  16,   0,
+      0,   0,   0,   0,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     69,   0,   0, 139, 194,   0,
+      0, 128,  67,  85,  21,   0,
+     34,   0,  16,   0,   2,   0,
+      0,   0,  70,  16,  16,   0,
+      1,   0,   0,   0,  22, 126,
+     16,   0,   1,   0,   0,   0,
+      0,  96,  16,   0,   0,   0,
+      0,   0,  69,   0,   0, 139,
+    194,   0,   0, 128,  67,  85,
+     21,   0,  66,   0,  16,   0,
+      2,   0,   0,   0,  70,  16,
+     16,   0,   1,   0,   0,   0,
+    150, 124,  16,   0,   2,   0,
+      0,   0,   0,  96,  16,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   8, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     70, 130,  32,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+     16,   0,   0,   8,  18,   0,
+     16,   0,   1,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  70, 130,  32,   0,
+      0,   0,   0,   0,   4,   0,
+      0,   0,  16,   0,   0,   8,
+     34,   0,  16,   0,   1,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  70, 130,
+     32,   0,   0,   0,   0,   0,
+      5,   0,   0,   0,  16,   0,
+      0,   8,  66,   0,  16,   0,
+      1,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     70, 130,  32,   0,   0,   0,
+      0,   0,   6,   0,   0,   0,
+     18,   0,   0,   1,  54,   0,
+      0,   8, 114,   0,  16,   0,
+      1,   0,   0,   0,   2,  64,
+      0,   0,   0,   0, 128,  63,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     21,   0,   0,   1,  21,   0,
+      0,   1,  21,   0,   0,   1,
+     54,   0,   0,   5, 130,   0,
+     16,   0,   1,   0,   0,   0,
+      1,  64,   0,   0,   0,   0,
+    128,  63,  21,   0,   0,   1,
+     21,   0,   0,   1,  21,   0,
+      0,   1,  21,   0,   0,   1,
+     47,   0,   0,   6, 114,   0,
+     16,   0,   2,   0,   0,   0,
+     70,   2,  16, 128, 129,   0,
+      0,   0,   1,   0,   0,   0,
+     56,   0,   0,  10, 114,   0,
+     16,   0,   2,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,   2,  64,   0,   0,
+    172, 205,  79,  60, 172, 205,
+     79,  60, 172, 205,  79,  60,
+      0,   0,   0,   0,  25,   0,
+      0,   5, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+      0,   0,   0,  10, 114,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0,  86, 191,   0,   0,
+     86, 191,   0,   0,  86, 191,
+      0,   0,   0,   0,  52,   0,
+      0,  10, 114,   0,  16,   0,
+      3,   0,   0,   0,  70,   2,
+     16,   0,   3,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  50,   0,   0,  16,
+    114,   0,  16,   0,   2,   0,
+      0,   0,  70,   2,  16, 128,
+     65,   0,   0,   0,   2,   0,
+      0,   0,   2,  64,   0,   0,
+      0, 128, 149,  65,   0, 128,
+    149,  65,   0, 128, 149,  65,
+      0,   0,   0,   0,   2,  64,
+      0,   0,   0, 208, 150,  65,
+      0, 208, 150,  65,   0, 208,
+    150,  65,   0,   0,   0,   0,
+     14,   0,   0,   7, 114,   0,
+     16,   0,   2,   0,   0,   0,
+     70,   2,  16,   0,   3,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  47,   0,
+      0,   6, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16, 128, 129,   0,   0,   0,
+      2,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+      2,  64,   0,   0, 107, 224,
+    200,  64, 107, 224, 200,  64,
+    107, 224, 200,  64,   0,   0,
+      0,   0,  25,   0,   0,   5,
+    114,   0,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+      2,  64,   0,   0,   0,  64,
+     28,  70,   0,  64,  28,  70,
+      0,  64,  28,  70,   0,   0,
+      0,   0,  14,   0,   0,   8,
+    114,   0,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0, 246, 143,
+     32,   0,   0,   0,   0,   0,
+      2,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      2,   0,   0,   0,  86,   5,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      1,   0,   0,   0,  57,   0,
+      0,   8,  18,   0,  16,   0,
+      0,   0,   0,   0,  10, 128,
+     32,   0,   0,   0,   0,   0,
+      2,   0,   0,   0,   1,  64,
+      0,   0,   0,   0,   0,   0,
+     56,   0,   0,   8, 114,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  86, 133,  32,   0,
+      0,   0,   0,   0,   2,   0,
+      0,   0,  24,   0,   0,  11,
+     50,   0,  16,   0,   4,   0,
+      0,   0,   6, 128,  32,   0,
+      0,   0,   0,   0,   2,   0,
+      0,   0,   2,  64,   0,   0,
+      0,   0, 128,  63,   0,   0,
+      0,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,  16,   0,
+      0,  10,  18,   0,  16,   0,
+      5,   0,   0,   0,   2,  64,
+      0,   0, 140, 157,  32,  63,
+    200, 151, 168,  62, 249, 104,
+     49,  61,   0,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  16,   0,   0,  10,
+     34,   0,  16,   0,   5,   0,
+      0,   0,   2,  64,   0,   0,
+    186, 130, 141,  61,  10, 103,
+    107,  63, 175,  39,  58,  60,
+      0,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     16,   0,   0,  10,  66,   0,
+     16,   0,   5,   0,   0,   0,
+      2,  64,   0,   0, 107,  70,
+    134,  60,  41,  64, 180,  61,
+    183,  69, 101,  63,   0,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      5,   0,   0,   0, 166,  10,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   5,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  52,   0,
+      0,   7, 130,   0,  16,   0,
+      2,   0,   0,   0,  42,   0,
+     16,   0,   5,   0,   0,   0,
+     26,   0,  16,   0,   5,   0,
+      0,   0,  52,   0,   0,   7,
+    130,   0,  16,   0,   2,   0,
+      0,   0,  58,   0,  16,   0,
+      2,   0,   0,   0,  10,   0,
+     16,   0,   5,   0,   0,   0,
+     49,   0,   0,   7, 130,   0,
+     16,   0,   3,   0,   0,   0,
+      1,  64,   0,   0,   0,   0,
+      0,   0,  58,   0,  16,   0,
+      2,   0,   0,   0,  50,   0,
+      0,  13, 194,   0,  16,   0,
+      4,   0,   0,   0,  86, 137,
+     32,   0,   0,   0,   0,   0,
+      2,   0,   0,   0, 246,  15,
+     16,   0,   2,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0, 128,  63,   0,   0,
+    128,  63,  14,   0,   0,   7,
+    130,   0,  16,   0,   2,   0,
+      0,   0,  42,   0,  16,   0,
+      4,   0,   0,   0,  58,   0,
+     16,   0,   4,   0,   0,   0,
+     56,   0,   0,   7, 114,   0,
+     16,   0,   6,   0,   0,   0,
+    246,  15,  16,   0,   2,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      5,   0,   0,   0, 246,  15,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   6,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  16,   0,
+      0,  10,  18,   0,  16,   0,
+      6,   0,   0,   0,   2,  64,
+      0,   0,  34, 139, 212,  63,
+    160, 112,  22, 191,  35,  45,
+    149, 189,   0,   0,   0,   0,
+     70,   2,  16,   0,   5,   0,
+      0,   0,  16,   0,   0,  10,
+     34,   0,  16,   0,   6,   0,
+      0,   0,   2,  64,   0,   0,
+    127,  18, 255, 189, 180,   2,
+    145,  63,  13, 198,   8, 188,
+      0,   0,   0,   0,  70,   2,
+     16,   0,   5,   0,   0,   0,
+     16,   0,   0,  10,  66,   0,
+     16,   0,   6,   0,   0,   0,
+      2,  64,   0,   0, 179, 183,
+    148, 188, 205,   5, 206, 189,
+     60,  51, 143,  63,   0,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      5,   0,   0,   0, 166,  10,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   6,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  55,   0,
+      0,   9, 226,   0,  16,   0,
+      4,   0,   0,   0,  86,   5,
+     16,   0,   4,   0,   0,   0,
+      6,   9,  16,   0,   5,   0,
+      0,   0,   6,   9,  16,   0,
+      2,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      3,   0,   0,   0,   6,   0,
+     16,   0,   4,   0,   0,   0,
+     70,   2,  16,   0,   3,   0,
+      0,   0, 150,   7,  16,   0,
+      4,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      2,   0,   0,   0,   6,   0,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   3,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  31,   0,
+      4,   3,  58,   0,  16,   0,
+      0,   0,   0,   0,  57,   0,
+      0,  11,  18,   0,  16,   0,
+      0,   0,   0,   0,   2,  64,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     10, 128,  32,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     31,   0,   4,   3,  10,   0,
+     16,   0,   0,   0,   0,   0,
+     29,   0,   0,  10, 114,   0,
+     16,   0,   3,   0,   0,   0,
+      2,  64,   0,   0, 230, 174,
+     37,  61, 230, 174,  37,  61,
+    230, 174,  37,  61,   0,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      4,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+      2,  64,   0,   0, 145, 131,
+    158,  61, 145, 131, 158,  61,
+    145, 131, 158,  61,   0,   0,
+      0,   0,   0,   0,   0,  10,
+    114,   0,  16,   0,   5,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,   2,  64,
+      0,   0, 174,  71,  97,  61,
+    174,  71,  97,  61, 174,  71,
+     97,  61,   0,   0,   0,   0,
+     56,   0,   0,  11, 114,   0,
+     16,   0,   5,   0,   0,   0,
+     70,   2,  16, 128, 129,   0,
+      0,   0,   5,   0,   0,   0,
+      2,  64,   0,   0, 111, 167,
+    114,  63, 111, 167, 114,  63,
+    111, 167, 114,  63,   0,   0,
+      0,   0,  47,   0,   0,   5,
+    114,   0,  16,   0,   5,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      5,   0,   0,   0,  70,   2,
+     16,   0,   5,   0,   0,   0,
+      2,  64,   0,   0, 154, 153,
+     25,  64, 154, 153,  25,  64,
+    154, 153,  25,  64,   0,   0,
+      0,   0,  25,   0,   0,   5,
+    114,   0,  16,   0,   5,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  55,   0,
+      0,   9, 114,   0,  16,   0,
+      2,   0,   0,   0,  70,   2,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   4,   0,
+      0,   0,  70,   2,  16,   0,
+      5,   0,   0,   0,  21,   0,
+      0,   1,  56,   0,   0,   8,
+    114,   0,  16,   0,   1,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0, 246, 143,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  18,   0,
+      0,   1,  31,   0,   4,   3,
+     42,   0,  16,   0,   0,   0,
+      0,   0,  56,   0,   0,   8,
+    114,   0,  16,   0,   1,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0, 246, 143,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  57,   0,
+      0,  11,  18,   0,  16,   0,
+      0,   0,   0,   0,   2,  64,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     10, 128,  32,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     31,   0,   0,   3,  10,   0,
+     16,   0,   0,   0,   0,   0,
+     29,   0,   0,  10, 210,   0,
+     16,   0,   0,   0,   0,   0,
+      2,  64,   0,   0,  28,  46,
+     77,  59,   0,   0,   0,   0,
+     28,  46,  77,  59,  28,  46,
+     77,  59,   6,   9,  16,   0,
+      1,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      3,   0,   0,   0,  70,   2,
+     16,   0,   1,   0,   0,   0,
+      2,  64,   0,   0,  82, 184,
+     78,  65,  82, 184,  78,  65,
+     82, 184,  78,  65,   0,   0,
+      0,   0,  47,   0,   0,   6,
+    114,   0,  16,   0,   4,   0,
+      0,   0,  70,   2,  16, 128,
+    129,   0,   0,   0,   1,   0,
+      0,   0,  56,   0,   0,  10,
+    114,   0,  16,   0,   4,   0,
+      0,   0,  70,   2,  16,   0,
+      4,   0,   0,   0,   2,  64,
+      0,   0,  85,  85, 213,  62,
+     85,  85, 213,  62,  85,  85,
+    213,  62,   0,   0,   0,   0,
+     25,   0,   0,   5, 114,   0,
+     16,   0,   4,   0,   0,   0,
+     70,   2,  16,   0,   4,   0,
+      0,   0,  50,   0,   0,  15,
+    114,   0,  16,   0,   4,   0,
+      0,   0,  70,   2,  16,   0,
+      4,   0,   0,   0,   2,  64,
+      0,   0,  61,  10, 135,  63,
+     61,  10, 135,  63,  61,  10,
+    135,  63,   0,   0,   0,   0,
+      2,  64,   0,   0, 174,  71,
+     97, 189, 174,  71,  97, 189,
+    174,  71,  97, 189,   0,   0,
+      0,   0,  55,  32,   0,   9,
+    114,   0,  16,   0,   1,   0,
+      0,   0, 134,   3,  16,   0,
+      0,   0,   0,   0,  70,   2,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   4,   0,
+      0,   0,  21,   0,   0,   1,
+     18,   0,   0,   1,  31,   0,
+      4,   3,  26,   0,  16,   0,
+      0,   0,   0,   0,  16,   0,
+      0,  10,  18,   0,  16,   0,
+      0,   0,   0,   0,   2,  64,
+      0,   0,  34, 139, 212,  63,
+    160, 112,  22, 191,  35,  45,
+    149, 189,   0,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0,  16,   0,   0,  10,
+     34,   0,  16,   0,   0,   0,
+      0,   0,   2,  64,   0,   0,
+    127,  18, 255, 189, 180,   2,
+    145,  63,  13, 198,   8, 188,
+      0,   0,   0,   0,  70,   2,
+     16,   0,   2,   0,   0,   0,
+     16,   0,   0,  10,  66,   0,
+     16,   0,   0,   0,   0,   0,
+      2,  64,   0,   0, 179, 183,
+    148, 188, 205,   5, 206, 189,
+     60,  51, 143,  63,   0,   0,
+      0,   0,  70,   2,  16,   0,
+      2,   0,   0,   0,  56,   0,
+      0,   8, 114,   0,  16,   0,
+      1,   0,   0,   0,  70,   2,
+     16,   0,   0,   0,   0,   0,
+    246, 143,  32,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+     57,   0,   0,  11,  18,   0,
+     16,   0,   0,   0,   0,   0,
+      2,  64,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  10, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  31,   0,   0,   3,
+     10,   0,  16,   0,   0,   0,
+      0,   0,  29,   0,   0,  10,
+    114,   0,  16,   0,   0,   0,
+      0,   0,   2,  64,   0,   0,
+     28,  46,  77,  59,  28,  46,
+     77,  59,  28,  46,  77,  59,
+      0,   0,   0,   0,  70,   2,
+     16,   0,   1,   0,   0,   0,
+     56,   0,   0,  10, 114,   0,
+     16,   0,   3,   0,   0,   0,
+     70,   2,  16,   0,   1,   0,
+      0,   0,   2,  64,   0,   0,
+     82, 184,  78,  65,  82, 184,
+     78,  65,  82, 184,  78,  65,
+      0,   0,   0,   0,  47,   0,
+      0,   6, 114,   0,  16,   0,
+      4,   0,   0,   0,  70,   2,
+     16, 128, 129,   0,   0,   0,
+      1,   0,   0,   0,  56,   0,
+      0,  10, 114,   0,  16,   0,
+      4,   0,   0,   0,  70,   2,
+     16,   0,   4,   0,   0,   0,
+      2,  64,   0,   0,  85,  85,
+    213,  62,  85,  85, 213,  62,
+     85,  85, 213,  62,   0,   0,
+      0,   0,  25,   0,   0,   5,
+    114,   0,  16,   0,   4,   0,
+      0,   0,  70,   2,  16,   0,
+      4,   0,   0,   0,  50,   0,
+      0,  15, 114,   0,  16,   0,
+      4,   0,   0,   0,  70,   2,
+     16,   0,   4,   0,   0,   0,
+      2,  64,   0,   0,  61,  10,
+    135,  63,  61,  10, 135,  63,
+     61,  10, 135,  63,   0,   0,
+      0,   0,   2,  64,   0,   0,
+    174,  71,  97, 189, 174,  71,
+     97, 189, 174,  71,  97, 189,
+      0,   0,   0,   0,  55,  32,
+      0,   9, 114,   0,  16,   0,
+      1,   0,   0,   0,  70,   2,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   3,   0,
+      0,   0,  70,   2,  16,   0,
+      4,   0,   0,   0,  21,   0,
+      0,   1,  18,   0,   0,   1,
+     56,   0,   0,   8, 114,   0,
+     16,   0,   1,   0,   0,   0,
+     70,   2,  16,   0,   2,   0,
+      0,   0, 246, 143,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  21,   0,   0,   1,
+     21,   0,   0,   1,  21,   0,
+      0,   1,  56,   0,   0,   7,
+    242,  32,  16,   0,   0,   0,
+      0,   0,  70,  14,  16,   0,
+      1,   0,   0,   0,  70,  30,
+     16,   0,   2,   0,   0,   0,
+     62,   0,   0,   1,  83,  84,
+     65,  84, 148,   0,   0,   0,
+    160,   0,   0,   0,   7,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,  95,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  11,   0,
+      0,   0,  13,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  10,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   4,   0,
+      0,   0,  10,   0,   0,   0,
+      5,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
       0,   0,   0,   0
 };

+ 212 - 212
src/render/direct3d11/D3D11_PixelShader_Colors.h

@@ -3,7 +3,7 @@
 // Generated by Microsoft (R) HLSL Shader Compiler 10.1
 //
 //
-// Buffer Definitions: 
+// Buffer Definitions:
 //
 // cbuffer Constants
 // {
@@ -29,7 +29,7 @@
 //
 // Name                                 Type  Format         Dim      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- -------------- ------
-// Constants                         cbuffer      NA          NA            cb0      1 
+// Constants                         cbuffer      NA          NA            cb0      1
 //
 //
 //
@@ -37,8 +37,8 @@
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
-// SV_POSITION              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float       
+// SV_POSITION              0   xyzw        0      POS   float
+// TEXCOORD                 0   xy          1     NONE   float
 // COLOR                    0   xyzw        2     NONE   float   xyzw
 //
 //
@@ -73,218 +73,218 @@ dcl_temps 1
 mov r0.x, cb0[0].w
 mov r0.w, l(1.000000)
 mul o0.xyzw, r0.xxxw, v2.xyzw
-ret 
+ret
 // Approximately 4 instruction slots used
 #endif
 
 const BYTE g_main[] =
 {
-     68,  88,  66,  67, 131,   2, 
-     46, 215, 253,  13, 129,  98, 
-    132, 106, 250, 166, 217, 206, 
-      9, 154,   1,   0,   0,   0, 
-    224,   4,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    172,   0,   0,   0,  56,   1, 
-      0,   0, 180,   1,   0,   0, 
-     56,   4,   0,   0, 172,   4, 
-      0,   0,  65, 111, 110,  57, 
-    108,   0,   0,   0, 108,   0, 
-      0,   0,   0,   2, 255, 255, 
-     60,   0,   0,   0,  48,   0, 
-      0,   0,   1,   0,  36,   0, 
-      0,   0,  48,   0,   0,   0, 
-     48,   0,   0,   0,  36,   0, 
-      0,   0,  48,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   2, 
-    255, 255,  31,   0,   0,   2, 
-      0,   0,   0, 128,   1,   0, 
-     15, 176,   5,   0,   0,   3, 
-      0,   0,   7, 128,   1,   0, 
-    228, 176,   0,   0, 255, 160, 
-      1,   0,   0,   2,   0,   0, 
-      8, 128,   1,   0, 255, 176, 
-      1,   0,   0,   2,   0,   8, 
-     15, 128,   0,   0, 228, 128, 
-    255, 255,   0,   0,  83,  72, 
-     68,  82, 132,   0,   0,   0, 
-     64,   0,   0,   0,  33,   0, 
-      0,   0,  89,   0,   0,   4, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     98,  16,   0,   3, 242,  16, 
-     16,   0,   2,   0,   0,   0, 
-    101,   0,   0,   3, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-    104,   0,   0,   2,   1,   0, 
-      0,   0,  54,   0,   0,   6, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  58, 128,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  54,   0,   0,   5, 
-    130,   0,  16,   0,   0,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0, 128,  63,  56,   0, 
-      0,   7, 242,  32,  16,   0, 
-      0,   0,   0,   0,   6,  12, 
-     16,   0,   0,   0,   0,   0, 
-     70,  30,  16,   0,   2,   0, 
-      0,   0,  62,   0,   0,   1, 
-     83,  84,  65,  84, 116,   0, 
-      0,   0,   4,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  82,  68, 
-     69,  70, 124,   2,   0,   0, 
-      1,   0,   0,   0,  72,   0, 
-      0,   0,   1,   0,   0,   0, 
-     28,   0,   0,   0,   0,   4, 
-    255, 255,   0,   1,   0,   0, 
-     84,   2,   0,   0,  60,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-     67, 111, 110, 115, 116,  97, 
-    110, 116, 115,   0, 171, 171, 
-     60,   0,   0,   0,  13,   0, 
-      0,   0,  96,   0,   0,   0, 
-    112,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    152,   1,   0,   0,   0,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-    184,   1,   0,   0,   4,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-    197,   1,   0,   0,   8,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-    208,   1,   0,   0,  12,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-    220,   1,   0,   0,  16,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-    248,   1,   0,   0,  32,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-      7,   2,   0,   0,  36,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-     23,   2,   0,   0,  40,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-     39,   2,   0,   0,  44,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-     55,   2,   0,   0,  48,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-     63,   2,   0,   0,  64,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-     70,   2,   0,   0,  80,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-     77,   2,   0,   0,  96,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-    115,  99,  82,  71,  66,  95, 
-    111, 117, 116, 112, 117, 116, 
-      0, 171, 171, 171,   0,   0, 
-      3,   0,   1,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 116, 101, 120, 116, 
-    117, 114, 101,  95, 116, 121, 
-    112, 101,   0, 105, 110, 112, 
-    117, 116,  95, 116, 121, 112, 
-    101,   0,  99, 111, 108, 111, 
-    114,  95, 115,  99,  97, 108, 
-    101,   0, 116, 101, 120, 101, 
-    108,  95, 115, 105, 122, 101, 
-      0, 171,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    116, 111, 110, 101, 109,  97, 
-    112,  95, 109, 101, 116, 104, 
-    111, 100,   0, 116, 111, 110, 
-    101, 109,  97, 112,  95, 102, 
-     97,  99, 116, 111, 114,  49, 
-      0, 116, 111, 110, 101, 109, 
-     97, 112,  95, 102,  97,  99, 
-    116, 111, 114,  50,   0, 115, 
-    100, 114,  95, 119, 104, 105, 
-    116, 101,  95, 112, 111, 105, 
-    110, 116,   0,  89, 111, 102, 
-    102, 115, 101, 116,   0,  82, 
-     99, 111, 101, 102, 102,   0, 
-     71,  99, 111, 101, 102, 102, 
-      0,  66,  99, 111, 101, 102, 
-    102,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  49,  48,  46,  49,   0, 
-     73,  83,  71,  78, 108,   0, 
-      0,   0,   3,   0,   0,   0, 
-      8,   0,   0,   0,  80,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0,  92,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,   0,   0,   0, 101,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   2,   0,   0,   0, 
-     15,  15,   0,   0,  83,  86, 
-     95,  80,  79,  83,  73,  84, 
-     73,  79,  78,   0,  84,  69, 
-     88,  67,  79,  79,  82,  68, 
-      0,  67,  79,  76,  79,  82, 
-      0, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  65,  82, 
+     68,  88,  66,  67, 131,   2,
+     46, 215, 253,  13, 129,  98,
+    132, 106, 250, 166, 217, 206,
+      9, 154,   1,   0,   0,   0,
+    224,   4,   0,   0,   6,   0,
+      0,   0,  56,   0,   0,   0,
+    172,   0,   0,   0,  56,   1,
+      0,   0, 180,   1,   0,   0,
+     56,   4,   0,   0, 172,   4,
+      0,   0,  65, 111, 110,  57,
+    108,   0,   0,   0, 108,   0,
+      0,   0,   0,   2, 255, 255,
+     60,   0,   0,   0,  48,   0,
+      0,   0,   1,   0,  36,   0,
+      0,   0,  48,   0,   0,   0,
+     48,   0,   0,   0,  36,   0,
+      0,   0,  48,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+      0,   0,   0,   0,   0,   2,
+    255, 255,  31,   0,   0,   2,
+      0,   0,   0, 128,   1,   0,
+     15, 176,   5,   0,   0,   3,
+      0,   0,   7, 128,   1,   0,
+    228, 176,   0,   0, 255, 160,
+      1,   0,   0,   2,   0,   0,
+      8, 128,   1,   0, 255, 176,
+      1,   0,   0,   2,   0,   8,
+     15, 128,   0,   0, 228, 128,
+    255, 255,   0,   0,  83,  72,
+     68,  82, 132,   0,   0,   0,
+     64,   0,   0,   0,  33,   0,
+      0,   0,  89,   0,   0,   4,
+     70, 142,  32,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+     98,  16,   0,   3, 242,  16,
+     16,   0,   2,   0,   0,   0,
+    101,   0,   0,   3, 242,  32,
+     16,   0,   0,   0,   0,   0,
+    104,   0,   0,   2,   1,   0,
+      0,   0,  54,   0,   0,   6,
+     18,   0,  16,   0,   0,   0,
+      0,   0,  58, 128,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  54,   0,   0,   5,
+    130,   0,  16,   0,   0,   0,
+      0,   0,   1,  64,   0,   0,
+      0,   0, 128,  63,  56,   0,
+      0,   7, 242,  32,  16,   0,
+      0,   0,   0,   0,   6,  12,
+     16,   0,   0,   0,   0,   0,
+     70,  30,  16,   0,   2,   0,
+      0,   0,  62,   0,   0,   1,
+     83,  84,  65,  84, 116,   0,
+      0,   0,   4,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,
+      0,   0,   2,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      2,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  82,  68,
+     69,  70, 124,   2,   0,   0,
+      1,   0,   0,   0,  72,   0,
+      0,   0,   1,   0,   0,   0,
+     28,   0,   0,   0,   0,   4,
+    255, 255,   0,   1,   0,   0,
+     84,   2,   0,   0,  60,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   1,   0,   0,   0,
+     67, 111, 110, 115, 116,  97,
+    110, 116, 115,   0, 171, 171,
+     60,   0,   0,   0,  13,   0,
+      0,   0,  96,   0,   0,   0,
+    112,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+    152,   1,   0,   0,   0,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+    184,   1,   0,   0,   4,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+    197,   1,   0,   0,   8,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+    208,   1,   0,   0,  12,   0,
+      0,   0,   4,   0,   0,   0,
+      2,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+    220,   1,   0,   0,  16,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0, 232,   1,
+      0,   0,   0,   0,   0,   0,
+    248,   1,   0,   0,  32,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+      7,   2,   0,   0,  36,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+     23,   2,   0,   0,  40,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+     39,   2,   0,   0,  44,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 168,   1,
+      0,   0,   0,   0,   0,   0,
+     55,   2,   0,   0,  48,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0, 232,   1,
+      0,   0,   0,   0,   0,   0,
+     63,   2,   0,   0,  64,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0, 232,   1,
+      0,   0,   0,   0,   0,   0,
+     70,   2,   0,   0,  80,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0, 232,   1,
+      0,   0,   0,   0,   0,   0,
+     77,   2,   0,   0,  96,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0, 232,   1,
+      0,   0,   0,   0,   0,   0,
+    115,  99,  82,  71,  66,  95,
+    111, 117, 116, 112, 117, 116,
+      0, 171, 171, 171,   0,   0,
+      3,   0,   1,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0, 116, 101, 120, 116,
+    117, 114, 101,  95, 116, 121,
+    112, 101,   0, 105, 110, 112,
+    117, 116,  95, 116, 121, 112,
+    101,   0,  99, 111, 108, 111,
+    114,  95, 115,  99,  97, 108,
+    101,   0, 116, 101, 120, 101,
+    108,  95, 115, 105, 122, 101,
+      0, 171,   1,   0,   3,   0,
+      1,   0,   4,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+    116, 111, 110, 101, 109,  97,
+    112,  95, 109, 101, 116, 104,
+    111, 100,   0, 116, 111, 110,
+    101, 109,  97, 112,  95, 102,
+     97,  99, 116, 111, 114,  49,
+      0, 116, 111, 110, 101, 109,
+     97, 112,  95, 102,  97,  99,
+    116, 111, 114,  50,   0, 115,
+    100, 114,  95, 119, 104, 105,
+    116, 101,  95, 112, 111, 105,
+    110, 116,   0,  89, 111, 102,
+    102, 115, 101, 116,   0,  82,
+     99, 111, 101, 102, 102,   0,
+     71,  99, 111, 101, 102, 102,
+      0,  66,  99, 111, 101, 102,
+    102,   0,  77, 105,  99, 114,
+    111, 115, 111, 102, 116,  32,
+     40,  82,  41,  32,  72,  76,
+     83,  76,  32,  83, 104,  97,
+    100, 101, 114,  32,  67, 111,
+    109, 112, 105, 108, 101, 114,
+     32,  49,  48,  46,  49,   0,
+     73,  83,  71,  78, 108,   0,
+      0,   0,   3,   0,   0,   0,
+      8,   0,   0,   0,  80,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   3,   0,
+      0,   0,   0,   0,   0,   0,
+     15,   0,   0,   0,  92,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   3,   0,
+      0,   0,   1,   0,   0,   0,
+      3,   0,   0,   0, 101,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   3,   0,
+      0,   0,   2,   0,   0,   0,
+     15,  15,   0,   0,  83,  86,
+     95,  80,  79,  83,  73,  84,
+     73,  79,  78,   0,  84,  69,
+     88,  67,  79,  79,  82,  68,
+      0,  67,  79,  76,  79,  82,
+      0, 171,  79,  83,  71,  78,
+     44,   0,   0,   0,   1,   0,
+      0,   0,   8,   0,   0,   0,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,   0,   0,
+      0,   0,  15,   0,   0,   0,
+     83,  86,  95,  84,  65,  82,
      71,  69,  84,   0, 171, 171
 };

+ 3 - 8
src/render/direct3d11/D3D11_PixelShader_Common.hlsli

@@ -21,10 +21,9 @@ static const float TEXTURETYPE_NONE = 0;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
-static const float TEXTURETYPE_NV12 = 5;
-static const float TEXTURETYPE_NV21 = 6;
-static const float TEXTURETYPE_YUV = 7;
+static const float TEXTURETYPE_NV12 = 4;
+static const float TEXTURETYPE_NV21 = 5;
+static const float TEXTURETYPE_YUV = 6;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -150,10 +149,6 @@ float4 GetInputColor(PixelShaderInput input)
     } else if (texture_type == TEXTURETYPE_PALETTE) {
         float index = texture0.Sample(sampler0, input.tex).r * 255;
         rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
-    } else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
-        float2 uv = GetPixelArtUV(input);
-        float index = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex)).r * 255;
-        rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
     } else if (texture_type == TEXTURETYPE_NV12) {
         float3 yuv;
         yuv.x = texture0.Sample(sampler0, input.tex).r;

+ 247 - 247
src/render/direct3d11/D3D11_PixelShader_Textures.h

@@ -3,7 +3,7 @@
 // Generated by Microsoft (R) HLSL Shader Compiler 10.1
 //
 //
-// Buffer Definitions: 
+// Buffer Definitions:
 //
 // cbuffer Constants
 // {
@@ -29,9 +29,9 @@
 //
 // Name                                 Type  Format         Dim      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- -------------- ------
-// sampler0                          sampler      NA          NA             s0      1 
-// texture0                          texture  float4          2d             t0      1 
-// Constants                         cbuffer      NA          NA            cb0      1 
+// sampler0                          sampler      NA          NA             s0      1
+// texture0                          texture  float4          2d             t0      1
+// Constants                         cbuffer      NA          NA            cb0      1
 //
 //
 //
@@ -39,8 +39,8 @@
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
-// SV_POSITION              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
+// SV_POSITION              0   xyzw        0      POS   float
+// TEXCOORD                 0   xy          1     NONE   float   xy
 // COLOR                    0   xyzw        2     NONE   float   xyzw
 //
 //
@@ -62,7 +62,7 @@
 //
 // Target Sampler Source Sampler  Source Resource
 // -------------- --------------- ----------------
-// s0             s0              t0               
+// s0             s0              t0
 //
 //
 // Level9 shader bytecode:
@@ -88,250 +88,250 @@ dcl_temps 1
 sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 mul r0.xyz, r0.xyzx, cb0[0].wwww
 mul o0.xyzw, r0.xyzw, v2.xyzw
-ret 
+ret
 // Approximately 4 instruction slots used
 #endif
 
 const BYTE g_main[] =
 {
-     68,  88,  66,  67,  98, 171, 
-    127, 123,  23, 170, 245,  47, 
-     35, 199,  24, 186, 200, 109, 
-    190, 201,   1,   0,   0,   0, 
-    160,   5,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    220,   0,   0,   0, 168,   1, 
-      0,   0,  36,   2,   0,   0, 
-    248,   4,   0,   0, 108,   5, 
-      0,   0,  65, 111, 110,  57, 
-    156,   0,   0,   0, 156,   0, 
-      0,   0,   0,   2, 255, 255, 
-    104,   0,   0,   0,  52,   0, 
-      0,   0,   1,   0,  40,   0, 
-      0,   0,  52,   0,   0,   0, 
-     52,   0,   1,   0,  36,   0, 
-      0,   0,  52,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   2, 255, 255, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,   3, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   1,   0,  15, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   0,   8,  15, 160, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 176, 
-      0,   8, 228, 160,   5,   0, 
-      0,   3,   0,   0,   7, 128, 
-      0,   0, 228, 128,   0,   0, 
-    255, 160,   5,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-    228, 128,   1,   0, 228, 176, 
-      1,   0,   0,   2,   0,   8, 
-     15, 128,   0,   0, 228, 128, 
-    255, 255,   0,   0,  83,  72, 
-     68,  82, 196,   0,   0,   0, 
-     64,   0,   0,   0,  49,   0, 
-      0,   0,  89,   0,   0,   4, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     90,   0,   0,   3,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   0,   0,   0,   0, 
-     85,  85,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      1,   0,   0,   0,  98,  16, 
-      0,   3, 242,  16,  16,   0, 
-      2,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 104,   0, 
-      0,   2,   1,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   8, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0, 246, 143,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  56,   0,   0,   7, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  70,  30, 
-     16,   0,   2,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 116,   0,   0,   0, 
-      4,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  82,  68,  69,  70, 
-    204,   2,   0,   0,   1,   0, 
-      0,   0, 152,   0,   0,   0, 
-      3,   0,   0,   0,  28,   0, 
-      0,   0,   0,   4, 255, 255, 
-      0,   1,   0,   0, 164,   2, 
-      0,   0, 124,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0, 133,   0, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-    142,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0, 115,  97, 109, 112, 
-    108, 101, 114,  48,   0, 116, 
-    101, 120, 116, 117, 114, 101, 
-     48,   0,  67, 111, 110, 115, 
-    116,  97, 110, 116, 115,   0, 
-    142,   0,   0,   0,  13,   0, 
-      0,   0, 176,   0,   0,   0, 
-    112,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    232,   1,   0,   0,   0,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-      8,   2,   0,   0,   4,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-     21,   2,   0,   0,   8,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-     32,   2,   0,   0,  12,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-     44,   2,   0,   0,  16,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,   0,   0,   0,   0, 
-     72,   2,   0,   0,  32,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-     87,   2,   0,   0,  36,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-    103,   2,   0,   0,  40,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-    119,   2,   0,   0,  44,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 248,   1, 
-      0,   0,   0,   0,   0,   0, 
-    135,   2,   0,   0,  48,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,   0,   0,   0,   0, 
-    143,   2,   0,   0,  64,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,   0,   0,   0,   0, 
-    150,   2,   0,   0,  80,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,   0,   0,   0,   0, 
-    157,   2,   0,   0,  96,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,   0,   0,   0,   0, 
-    115,  99,  82,  71,  66,  95, 
-    111, 117, 116, 112, 117, 116, 
-      0, 171, 171, 171,   0,   0, 
-      3,   0,   1,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 116, 101, 120, 116, 
-    117, 114, 101,  95, 116, 121, 
-    112, 101,   0, 105, 110, 112, 
-    117, 116,  95, 116, 121, 112, 
-    101,   0,  99, 111, 108, 111, 
-    114,  95, 115,  99,  97, 108, 
-    101,   0, 116, 101, 120, 101, 
-    108,  95, 115, 105, 122, 101, 
-      0, 171,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    116, 111, 110, 101, 109,  97, 
-    112,  95, 109, 101, 116, 104, 
-    111, 100,   0, 116, 111, 110, 
-    101, 109,  97, 112,  95, 102, 
-     97,  99, 116, 111, 114,  49, 
-      0, 116, 111, 110, 101, 109, 
-     97, 112,  95, 102,  97,  99, 
-    116, 111, 114,  50,   0, 115, 
-    100, 114,  95, 119, 104, 105, 
-    116, 101,  95, 112, 111, 105, 
-    110, 116,   0,  89, 111, 102, 
-    102, 115, 101, 116,   0,  82, 
-     99, 111, 101, 102, 102,   0, 
-     71,  99, 111, 101, 102, 102, 
-      0,  66,  99, 111, 101, 102, 
-    102,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  49,  48,  46,  49,   0, 
-     73,  83,  71,  78, 108,   0, 
-      0,   0,   3,   0,   0,   0, 
-      8,   0,   0,   0,  80,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0,  92,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,   3,   0,   0, 101,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   2,   0,   0,   0, 
-     15,  15,   0,   0,  83,  86, 
-     95,  80,  79,  83,  73,  84, 
-     73,  79,  78,   0,  84,  69, 
-     88,  67,  79,  79,  82,  68, 
-      0,  67,  79,  76,  79,  82, 
-      0, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  65,  82, 
+     68,  88,  66,  67,  98, 171,
+    127, 123,  23, 170, 245,  47,
+     35, 199,  24, 186, 200, 109,
+    190, 201,   1,   0,   0,   0,
+    160,   5,   0,   0,   6,   0,
+      0,   0,  56,   0,   0,   0,
+    220,   0,   0,   0, 168,   1,
+      0,   0,  36,   2,   0,   0,
+    248,   4,   0,   0, 108,   5,
+      0,   0,  65, 111, 110,  57,
+    156,   0,   0,   0, 156,   0,
+      0,   0,   0,   2, 255, 255,
+    104,   0,   0,   0,  52,   0,
+      0,   0,   1,   0,  40,   0,
+      0,   0,  52,   0,   0,   0,
+     52,   0,   1,   0,  36,   0,
+      0,   0,  52,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,
+      0,   0,   0,   2, 255, 255,
+     31,   0,   0,   2,   0,   0,
+      0, 128,   0,   0,   3, 176,
+     31,   0,   0,   2,   0,   0,
+      0, 128,   1,   0,  15, 176,
+     31,   0,   0,   2,   0,   0,
+      0, 144,   0,   8,  15, 160,
+     66,   0,   0,   3,   0,   0,
+     15, 128,   0,   0, 228, 176,
+      0,   8, 228, 160,   5,   0,
+      0,   3,   0,   0,   7, 128,
+      0,   0, 228, 128,   0,   0,
+    255, 160,   5,   0,   0,   3,
+      0,   0,  15, 128,   0,   0,
+    228, 128,   1,   0, 228, 176,
+      1,   0,   0,   2,   0,   8,
+     15, 128,   0,   0, 228, 128,
+    255, 255,   0,   0,  83,  72,
+     68,  82, 196,   0,   0,   0,
+     64,   0,   0,   0,  49,   0,
+      0,   0,  89,   0,   0,   4,
+     70, 142,  32,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+     90,   0,   0,   3,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     88,  24,   0,   4,   0, 112,
+     16,   0,   0,   0,   0,   0,
+     85,  85,   0,   0,  98,  16,
+      0,   3,  50,  16,  16,   0,
+      1,   0,   0,   0,  98,  16,
+      0,   3, 242,  16,  16,   0,
+      2,   0,   0,   0, 101,   0,
+      0,   3, 242,  32,  16,   0,
+      0,   0,   0,   0, 104,   0,
+      0,   2,   1,   0,   0,   0,
+     69,   0,   0,   9, 242,   0,
+     16,   0,   0,   0,   0,   0,
+     70,  16,  16,   0,   1,   0,
+      0,   0,  70, 126,  16,   0,
+      0,   0,   0,   0,   0,  96,
+     16,   0,   0,   0,   0,   0,
+     56,   0,   0,   8, 114,   0,
+     16,   0,   0,   0,   0,   0,
+     70,   2,  16,   0,   0,   0,
+      0,   0, 246, 143,  32,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  56,   0,   0,   7,
+    242,  32,  16,   0,   0,   0,
+      0,   0,  70,  14,  16,   0,
+      0,   0,   0,   0,  70,  30,
+     16,   0,   2,   0,   0,   0,
+     62,   0,   0,   1,  83,  84,
+     65,  84, 116,   0,   0,   0,
+      4,   0,   0,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,   2,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  82,  68,  69,  70,
+    204,   2,   0,   0,   1,   0,
+      0,   0, 152,   0,   0,   0,
+      3,   0,   0,   0,  28,   0,
+      0,   0,   0,   4, 255, 255,
+      0,   1,   0,   0, 164,   2,
+      0,   0, 124,   0,   0,   0,
+      3,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+      1,   0,   0,   0, 133,   0,
+      0,   0,   2,   0,   0,   0,
+      5,   0,   0,   0,   4,   0,
+      0,   0, 255, 255, 255, 255,
+      0,   0,   0,   0,   1,   0,
+      0,   0,  13,   0,   0,   0,
+    142,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   1,   0,
+      0,   0, 115,  97, 109, 112,
+    108, 101, 114,  48,   0, 116,
+    101, 120, 116, 117, 114, 101,
+     48,   0,  67, 111, 110, 115,
+    116,  97, 110, 116, 115,   0,
+    142,   0,   0,   0,  13,   0,
+      0,   0, 176,   0,   0,   0,
+    112,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+    232,   1,   0,   0,   0,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+      8,   2,   0,   0,   4,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+     21,   2,   0,   0,   8,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+     32,   2,   0,   0,  12,   0,
+      0,   0,   4,   0,   0,   0,
+      2,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+     44,   2,   0,   0,  16,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0,  56,   2,
+      0,   0,   0,   0,   0,   0,
+     72,   2,   0,   0,  32,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+     87,   2,   0,   0,  36,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+    103,   2,   0,   0,  40,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+    119,   2,   0,   0,  44,   0,
+      0,   0,   4,   0,   0,   0,
+      0,   0,   0,   0, 248,   1,
+      0,   0,   0,   0,   0,   0,
+    135,   2,   0,   0,  48,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0,  56,   2,
+      0,   0,   0,   0,   0,   0,
+    143,   2,   0,   0,  64,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0,  56,   2,
+      0,   0,   0,   0,   0,   0,
+    150,   2,   0,   0,  80,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0,  56,   2,
+      0,   0,   0,   0,   0,   0,
+    157,   2,   0,   0,  96,   0,
+      0,   0,  16,   0,   0,   0,
+      0,   0,   0,   0,  56,   2,
+      0,   0,   0,   0,   0,   0,
+    115,  99,  82,  71,  66,  95,
+    111, 117, 116, 112, 117, 116,
+      0, 171, 171, 171,   0,   0,
+      3,   0,   1,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0, 116, 101, 120, 116,
+    117, 114, 101,  95, 116, 121,
+    112, 101,   0, 105, 110, 112,
+    117, 116,  95, 116, 121, 112,
+    101,   0,  99, 111, 108, 111,
+    114,  95, 115,  99,  97, 108,
+    101,   0, 116, 101, 120, 101,
+    108,  95, 115, 105, 122, 101,
+      0, 171,   1,   0,   3,   0,
+      1,   0,   4,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+    116, 111, 110, 101, 109,  97,
+    112,  95, 109, 101, 116, 104,
+    111, 100,   0, 116, 111, 110,
+    101, 109,  97, 112,  95, 102,
+     97,  99, 116, 111, 114,  49,
+      0, 116, 111, 110, 101, 109,
+     97, 112,  95, 102,  97,  99,
+    116, 111, 114,  50,   0, 115,
+    100, 114,  95, 119, 104, 105,
+    116, 101,  95, 112, 111, 105,
+    110, 116,   0,  89, 111, 102,
+    102, 115, 101, 116,   0,  82,
+     99, 111, 101, 102, 102,   0,
+     71,  99, 111, 101, 102, 102,
+      0,  66,  99, 111, 101, 102,
+    102,   0,  77, 105,  99, 114,
+    111, 115, 111, 102, 116,  32,
+     40,  82,  41,  32,  72,  76,
+     83,  76,  32,  83, 104,  97,
+    100, 101, 114,  32,  67, 111,
+    109, 112, 105, 108, 101, 114,
+     32,  49,  48,  46,  49,   0,
+     73,  83,  71,  78, 108,   0,
+      0,   0,   3,   0,   0,   0,
+      8,   0,   0,   0,  80,   0,
+      0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   3,   0,
+      0,   0,   0,   0,   0,   0,
+     15,   0,   0,   0,  92,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   3,   0,
+      0,   0,   1,   0,   0,   0,
+      3,   3,   0,   0, 101,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   3,   0,
+      0,   0,   2,   0,   0,   0,
+     15,  15,   0,   0,  83,  86,
+     95,  80,  79,  83,  73,  84,
+     73,  79,  78,   0,  84,  69,
+     88,  67,  79,  79,  82,  68,
+      0,  67,  79,  76,  79,  82,
+      0, 171,  79,  83,  71,  78,
+     44,   0,   0,   0,   1,   0,
+      0,   0,   8,   0,   0,   0,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,   0,   0,
+      0,   0,  15,   0,   0,   0,
+     83,  86,  95,  84,  65,  82,
      71,  69,  84,   0, 171, 171
 };

+ 242 - 242
src/render/direct3d11/D3D11_VertexShader.h

@@ -3,7 +3,7 @@
 // Generated by Microsoft (R) HLSL Shader Compiler 10.1
 //
 //
-// Buffer Definitions: 
+// Buffer Definitions:
 //
 // cbuffer VertexShaderConstants
 // {
@@ -18,7 +18,7 @@
 //
 // Name                                 Type  Format         Dim      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- -------------- ------
-// VertexShaderConstants             cbuffer      NA          NA            cb0      1 
+// VertexShaderConstants             cbuffer      NA          NA            cb0      1
 //
 //
 //
@@ -26,8 +26,8 @@
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
-// POSITION                 0   xyz         0     NONE   float   xyz 
-// TEXCOORD                 0   xy          1     NONE   float   xy  
+// POSITION                 0   xyz         0     NONE   float   xyz
+// TEXCOORD                 0   xy          1     NONE   float   xy
 // COLOR                    0   xyzw        2     NONE   float   xyzw
 //
 //
@@ -36,7 +36,7 @@
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_POSITION              0   xyzw        0      POS   float   xyzw
-// TEXCOORD                 0   xy          1     NONE   float   xy  
+// TEXCOORD                 0   xy          1     NONE   float   xy
 // COLOR                    0   xyzw        2     NONE   float   xyzw
 //
 //
@@ -93,247 +93,247 @@ mad r1.xyzw, r0.zzzz, cb0[6].xyzw, r1.xyzw
 mad o0.xyzw, r0.wwww, cb0[7].xyzw, r1.xyzw
 mov o1.xy, v1.xyxx
 mov o2.xyzw, v2.xyzw
-ret 
+ret
 // Approximately 11 instruction slots used
 #endif
 
 const BYTE g_main[] =
 {
-     68,  88,  66,  67, 152, 172, 
-     81,  45, 198, 200,  12,  38, 
-    143,   4, 178, 228, 158, 175, 
-    169,  64,   1,   0,   0,   0, 
-    140,   5,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    108,   1,   0,   0,  52,   3, 
-      0,   0, 176,   3,   0,   0, 
-    168,   4,   0,   0,  24,   5, 
-      0,   0,  65, 111, 110,  57, 
-     44,   1,   0,   0,  44,   1, 
-      0,   0,   0,   2, 254, 255, 
-    248,   0,   0,   0,  52,   0, 
-      0,   0,   1,   0,  36,   0, 
-      0,   0,  48,   0,   0,   0, 
-     48,   0,   0,   0,  36,   0, 
-      1,   0,  48,   0,   0,   0, 
-      0,   0,   8,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   2, 254, 255, 
-     31,   0,   0,   2,   5,   0, 
-      0, 128,   0,   0,  15, 144, 
-     31,   0,   0,   2,   5,   0, 
-      1, 128,   1,   0,  15, 144, 
-     31,   0,   0,   2,   5,   0, 
-      2, 128,   2,   0,  15, 144, 
-      5,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0,  85, 144, 
-      2,   0, 228, 160,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      0,   0,   0, 144,   1,   0, 
-    228, 160,   0,   0, 228, 128, 
-      4,   0,   0,   4,   0,   0, 
-     15, 128,   0,   0, 170, 144, 
-      3,   0, 228, 160,   0,   0, 
-    228, 128,   2,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-    228, 128,   4,   0, 228, 160, 
-      5,   0,   0,   3,   1,   0, 
-     15, 128,   0,   0,  85, 128, 
-      6,   0, 228, 160,   4,   0, 
-      0,   4,   1,   0,  15, 128, 
-      0,   0,   0, 128,   5,   0, 
-    228, 160,   1,   0, 228, 128, 
-      4,   0,   0,   4,   1,   0, 
-     15, 128,   0,   0, 170, 128, 
-      7,   0, 228, 160,   1,   0, 
-    228, 128,   4,   0,   0,   4, 
-      0,   0,  15, 128,   0,   0, 
-    255, 128,   8,   0, 228, 160, 
-      1,   0, 228, 128,   4,   0, 
-      0,   4,   0,   0,   3, 192, 
-      0,   0, 255, 128,   0,   0, 
-    228, 160,   0,   0, 228, 128, 
-      1,   0,   0,   2,   0,   0, 
-     12, 192,   0,   0, 228, 128, 
-      1,   0,   0,   2,   0,   0, 
-      3, 224,   1,   0, 228, 144, 
-      1,   0,   0,   2,   1,   0, 
-     15, 224,   2,   0, 228, 144, 
-    255, 255,   0,   0,  83,  72, 
-     68,  82, 192,   1,   0,   0, 
-     64,   0,   1,   0, 112,   0, 
-      0,   0,  89,   0,   0,   4, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   8,   0,   0,   0, 
-     95,   0,   0,   3, 114,  16, 
-     16,   0,   0,   0,   0,   0, 
-     95,   0,   0,   3,  50,  16, 
-     16,   0,   1,   0,   0,   0, 
-     95,   0,   0,   3, 242,  16, 
-     16,   0,   2,   0,   0,   0, 
-    103,   0,   0,   4, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3,  50,  32,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      2,   0,   0,   0, 104,   0, 
-      0,   2,   2,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     86,  21,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,   6,  16,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   0,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-    166,  26,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   8, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,   5,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   5,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-    166,  10,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   6,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  50,   0, 
-      0,  10, 242,  32,  16,   0, 
-      0,   0,   0,   0, 246,  15, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   7,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  54,   0,   0,   5, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  54,   0, 
-      0,   5, 242,  32,  16,   0, 
-      2,   0,   0,   0,  70,  30, 
-     16,   0,   2,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 116,   0,   0,   0, 
-     11,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      6,   0,   0,   0,   8,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  82,  68,  69,  70, 
-    240,   0,   0,   0,   1,   0, 
-      0,   0,  84,   0,   0,   0, 
-      1,   0,   0,   0,  28,   0, 
-      0,   0,   0,   4, 254, 255, 
-      0,   1,   0,   0, 198,   0, 
-      0,   0,  60,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0,  86, 101, 
-    114, 116, 101, 120,  83, 104, 
-     97, 100, 101, 114,  67, 111, 
-    110, 115, 116,  97, 110, 116, 
-    115,   0, 171, 171,  60,   0, 
-      0,   0,   2,   0,   0,   0, 
-    108,   0,   0,   0, 128,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 156,   0, 
-      0,   0,   0,   0,   0,   0, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0, 164,   0,   0,   0, 
-      0,   0,   0,   0, 180,   0, 
-      0,   0,  64,   0,   0,   0, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0, 164,   0,   0,   0, 
-      0,   0,   0,   0, 109, 111, 
-    100, 101, 108,   0, 171, 171, 
-      2,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 112, 114, 
-    111, 106, 101,  99, 116, 105, 
-    111, 110,  65, 110, 100,  86, 
-    105, 101, 119,   0,  77, 105, 
-     99, 114, 111, 115, 111, 102, 
-    116,  32,  40,  82,  41,  32, 
-     72,  76,  83,  76,  32,  83, 
-    104,  97, 100, 101, 114,  32, 
-     67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  49,  48,  46, 
-     49,   0, 171, 171,  73,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   7,   7, 
-      0,   0,  89,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,   3, 
-      0,   0,  98,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,   0,   0,   0,  15,  15, 
-      0,   0,  80,  79,  83,  73, 
-     84,  73,  79,  78,   0,  84, 
-     69,  88,  67,  79,  79,  82, 
-     68,   0,  67,  79,  76,  79, 
-     82,   0,  79,  83,  71,  78, 
-    108,   0,   0,   0,   3,   0, 
-      0,   0,   8,   0,   0,   0, 
-     80,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     92,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
-      0,   0,   3,  12,   0,   0, 
-    101,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   2,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  80,  79,  83, 
-     73,  84,  73,  79,  78,   0, 
-     84,  69,  88,  67,  79,  79, 
-     82,  68,   0,  67,  79,  76, 
+     68,  88,  66,  67, 152, 172,
+     81,  45, 198, 200,  12,  38,
+    143,   4, 178, 228, 158, 175,
+    169,  64,   1,   0,   0,   0,
+    140,   5,   0,   0,   6,   0,
+      0,   0,  56,   0,   0,   0,
+    108,   1,   0,   0,  52,   3,
+      0,   0, 176,   3,   0,   0,
+    168,   4,   0,   0,  24,   5,
+      0,   0,  65, 111, 110,  57,
+     44,   1,   0,   0,  44,   1,
+      0,   0,   0,   2, 254, 255,
+    248,   0,   0,   0,  52,   0,
+      0,   0,   1,   0,  36,   0,
+      0,   0,  48,   0,   0,   0,
+     48,   0,   0,   0,  36,   0,
+      1,   0,  48,   0,   0,   0,
+      0,   0,   8,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   2, 254, 255,
+     31,   0,   0,   2,   5,   0,
+      0, 128,   0,   0,  15, 144,
+     31,   0,   0,   2,   5,   0,
+      1, 128,   1,   0,  15, 144,
+     31,   0,   0,   2,   5,   0,
+      2, 128,   2,   0,  15, 144,
+      5,   0,   0,   3,   0,   0,
+     15, 128,   0,   0,  85, 144,
+      2,   0, 228, 160,   4,   0,
+      0,   4,   0,   0,  15, 128,
+      0,   0,   0, 144,   1,   0,
+    228, 160,   0,   0, 228, 128,
+      4,   0,   0,   4,   0,   0,
+     15, 128,   0,   0, 170, 144,
+      3,   0, 228, 160,   0,   0,
+    228, 128,   2,   0,   0,   3,
+      0,   0,  15, 128,   0,   0,
+    228, 128,   4,   0, 228, 160,
+      5,   0,   0,   3,   1,   0,
+     15, 128,   0,   0,  85, 128,
+      6,   0, 228, 160,   4,   0,
+      0,   4,   1,   0,  15, 128,
+      0,   0,   0, 128,   5,   0,
+    228, 160,   1,   0, 228, 128,
+      4,   0,   0,   4,   1,   0,
+     15, 128,   0,   0, 170, 128,
+      7,   0, 228, 160,   1,   0,
+    228, 128,   4,   0,   0,   4,
+      0,   0,  15, 128,   0,   0,
+    255, 128,   8,   0, 228, 160,
+      1,   0, 228, 128,   4,   0,
+      0,   4,   0,   0,   3, 192,
+      0,   0, 255, 128,   0,   0,
+    228, 160,   0,   0, 228, 128,
+      1,   0,   0,   2,   0,   0,
+     12, 192,   0,   0, 228, 128,
+      1,   0,   0,   2,   0,   0,
+      3, 224,   1,   0, 228, 144,
+      1,   0,   0,   2,   1,   0,
+     15, 224,   2,   0, 228, 144,
+    255, 255,   0,   0,  83,  72,
+     68,  82, 192,   1,   0,   0,
+     64,   0,   1,   0, 112,   0,
+      0,   0,  89,   0,   0,   4,
+     70, 142,  32,   0,   0,   0,
+      0,   0,   8,   0,   0,   0,
+     95,   0,   0,   3, 114,  16,
+     16,   0,   0,   0,   0,   0,
+     95,   0,   0,   3,  50,  16,
+     16,   0,   1,   0,   0,   0,
+     95,   0,   0,   3, 242,  16,
+     16,   0,   2,   0,   0,   0,
+    103,   0,   0,   4, 242,  32,
+     16,   0,   0,   0,   0,   0,
+      1,   0,   0,   0, 101,   0,
+      0,   3,  50,  32,  16,   0,
+      1,   0,   0,   0, 101,   0,
+      0,   3, 242,  32,  16,   0,
+      2,   0,   0,   0, 104,   0,
+      0,   2,   2,   0,   0,   0,
+     56,   0,   0,   8, 242,   0,
+     16,   0,   0,   0,   0,   0,
+     86,  21,  16,   0,   0,   0,
+      0,   0,  70, 142,  32,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,  50,   0,   0,  10,
+    242,   0,  16,   0,   0,   0,
+      0,   0,   6,  16,  16,   0,
+      0,   0,   0,   0,  70, 142,
+     32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  70,  14,
+     16,   0,   0,   0,   0,   0,
+     50,   0,   0,  10, 242,   0,
+     16,   0,   0,   0,   0,   0,
+    166,  26,  16,   0,   0,   0,
+      0,   0,  70, 142,  32,   0,
+      0,   0,   0,   0,   2,   0,
+      0,   0,  70,  14,  16,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   8, 242,   0,  16,   0,
+      0,   0,   0,   0,  70,  14,
+     16,   0,   0,   0,   0,   0,
+     70, 142,  32,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+     56,   0,   0,   8, 242,   0,
+     16,   0,   1,   0,   0,   0,
+     86,   5,  16,   0,   0,   0,
+      0,   0,  70, 142,  32,   0,
+      0,   0,   0,   0,   5,   0,
+      0,   0,  50,   0,   0,  10,
+    242,   0,  16,   0,   1,   0,
+      0,   0,   6,   0,  16,   0,
+      0,   0,   0,   0,  70, 142,
+     32,   0,   0,   0,   0,   0,
+      4,   0,   0,   0,  70,  14,
+     16,   0,   1,   0,   0,   0,
+     50,   0,   0,  10, 242,   0,
+     16,   0,   1,   0,   0,   0,
+    166,  10,  16,   0,   0,   0,
+      0,   0,  70, 142,  32,   0,
+      0,   0,   0,   0,   6,   0,
+      0,   0,  70,  14,  16,   0,
+      1,   0,   0,   0,  50,   0,
+      0,  10, 242,  32,  16,   0,
+      0,   0,   0,   0, 246,  15,
+     16,   0,   0,   0,   0,   0,
+     70, 142,  32,   0,   0,   0,
+      0,   0,   7,   0,   0,   0,
+     70,  14,  16,   0,   1,   0,
+      0,   0,  54,   0,   0,   5,
+     50,  32,  16,   0,   1,   0,
+      0,   0,  70,  16,  16,   0,
+      1,   0,   0,   0,  54,   0,
+      0,   5, 242,  32,  16,   0,
+      2,   0,   0,   0,  70,  30,
+     16,   0,   2,   0,   0,   0,
+     62,   0,   0,   1,  83,  84,
+     65,  84, 116,   0,   0,   0,
+     11,   0,   0,   0,   2,   0,
+      0,   0,   0,   0,   0,   0,
+      6,   0,   0,   0,   8,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   1,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   2,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,  82,  68,  69,  70,
+    240,   0,   0,   0,   1,   0,
+      0,   0,  84,   0,   0,   0,
+      1,   0,   0,   0,  28,   0,
+      0,   0,   0,   4, 254, 255,
+      0,   1,   0,   0, 198,   0,
+      0,   0,  60,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+      1,   0,   0,   0,  86, 101,
+    114, 116, 101, 120,  83, 104,
+     97, 100, 101, 114,  67, 111,
+    110, 115, 116,  97, 110, 116,
+    115,   0, 171, 171,  60,   0,
+      0,   0,   2,   0,   0,   0,
+    108,   0,   0,   0, 128,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 156,   0,
+      0,   0,   0,   0,   0,   0,
+     64,   0,   0,   0,   2,   0,
+      0,   0, 164,   0,   0,   0,
+      0,   0,   0,   0, 180,   0,
+      0,   0,  64,   0,   0,   0,
+     64,   0,   0,   0,   2,   0,
+      0,   0, 164,   0,   0,   0,
+      0,   0,   0,   0, 109, 111,
+    100, 101, 108,   0, 171, 171,
+      2,   0,   3,   0,   4,   0,
+      4,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 112, 114,
+    111, 106, 101,  99, 116, 105,
+    111, 110,  65, 110, 100,  86,
+    105, 101, 119,   0,  77, 105,
+     99, 114, 111, 115, 111, 102,
+    116,  32,  40,  82,  41,  32,
+     72,  76,  83,  76,  32,  83,
+    104,  97, 100, 101, 114,  32,
+     67, 111, 109, 112, 105, 108,
+    101, 114,  32,  49,  48,  46,
+     49,   0, 171, 171,  73,  83,
+     71,  78, 104,   0,   0,   0,
+      3,   0,   0,   0,   8,   0,
+      0,   0,  80,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+      0,   0,   0,   0,   7,   7,
+      0,   0,  89,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+      1,   0,   0,   0,   3,   3,
+      0,   0,  98,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      0,   0,   3,   0,   0,   0,
+      2,   0,   0,   0,  15,  15,
+      0,   0,  80,  79,  83,  73,
+     84,  73,  79,  78,   0,  84,
+     69,  88,  67,  79,  79,  82,
+     68,   0,  67,  79,  76,  79,
+     82,   0,  79,  83,  71,  78,
+    108,   0,   0,   0,   3,   0,
+      0,   0,   8,   0,   0,   0,
+     80,   0,   0,   0,   0,   0,
+      0,   0,   1,   0,   0,   0,
+      3,   0,   0,   0,   0,   0,
+      0,   0,  15,   0,   0,   0,
+     92,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,   1,   0,
+      0,   0,   3,  12,   0,   0,
+    101,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,
+      3,   0,   0,   0,   2,   0,
+      0,   0,  15,   0,   0,   0,
+     83,  86,  95,  80,  79,  83,
+     73,  84,  73,  79,  78,   0,
+     84,  69,  88,  67,  79,  79,
+     82,  68,   0,  67,  79,  76,
      79,  82,   0, 171
 };

+ 8 - 16
src/render/direct3d11/SDL_render_d3d11.c

@@ -70,10 +70,9 @@ static const float TONEMAP_CHROME = 2;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
-static const float TEXTURETYPE_NV12 = 5;
-static const float TEXTURETYPE_NV21 = 6;
-static const float TEXTURETYPE_YUV = 7;
+static const float TEXTURETYPE_NV12 = 4;
+static const float TEXTURETYPE_NV21 = 5;
+static const float TEXTURETYPE_YUV = 6;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -2190,11 +2189,7 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
 
         switch (texture->format) {
         case SDL_PIXELFORMAT_INDEX8:
-            if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-                constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
-            } else {
-                constants->texture_type = TEXTURETYPE_PALETTE;
-            }
+            constants->texture_type = TEXTURETYPE_PALETTE;
             constants->input_type = INPUTTYPE_UNSPECIFIED;
             break;
         case SDL_PIXELFORMAT_YV12:
@@ -2217,6 +2212,10 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
         default:
             if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
                 constants->texture_type = TEXTURETYPE_RGB_PIXELART;
+                constants->texture_width = texture->w;
+                constants->texture_height = texture->h;
+                constants->texel_width = 1.0f / constants->texture_width;
+                constants->texel_height = 1.0f / constants->texture_height;
             } else {
                 constants->texture_type = TEXTURETYPE_RGB;
             }
@@ -2231,13 +2230,6 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
             break;
         }
 
-        if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-            constants->texture_width = texture->w;
-            constants->texture_height = texture->h;
-            constants->texel_width = 1.0f / constants->texture_width;
-            constants->texel_height = 1.0f / constants->texture_height;
-        }
-
         constants->sdr_white_point = texture->SDR_white_point;
 
         if (renderer->target) {

File diff suppressed because it is too large
+ 493 - 562
src/render/direct3d12/D3D12_PixelShader_Advanced.h


+ 8 - 8
src/render/direct3d12/D3D12_PixelShader_Colors.h

@@ -4,8 +4,8 @@
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
-; SV_Position              0   xyzw        0      POS   float       
-; TEXCOORD                 0   xy          1     NONE   float       
+; SV_Position              0   xyzw        0      POS   float
+; TEXCOORD                 0   xy          1     NONE   float
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
@@ -17,7 +17,7 @@
 ;
 ; shader hash: 8ae1603dec7cda8e7dc3dd934e8ac75b
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ; Pixel Shader
 ; DepthOutput=0
@@ -28,15 +28,15 @@
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Position              0          noperspective       
-; TEXCOORD                 0                 linear       
-; COLOR                    0                 linear       
+; SV_Position              0          noperspective
+; TEXCOORD                 0                 linear
+; COLOR                    0                 linear
 ;
 ; Output signature:
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Target                0                              
+; SV_Target                0
 ;
 ; Buffer Definitions:
 ;
@@ -59,7 +59,7 @@
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Bcoeff;                                ; Offset:   96
-;   
+;
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;
 ; }

+ 3 - 8
src/render/direct3d12/D3D12_PixelShader_Common.hlsli

@@ -22,10 +22,9 @@ static const float TEXTURETYPE_NONE = 0;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
-static const float TEXTURETYPE_NV12 = 5;
-static const float TEXTURETYPE_NV21 = 6;
-static const float TEXTURETYPE_YUV = 7;
+static const float TEXTURETYPE_NV12 = 4;
+static const float TEXTURETYPE_NV21 = 5;
+static const float TEXTURETYPE_YUV = 6;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -151,10 +150,6 @@ float4 GetInputColor(PixelShaderInput input)
     } else if (texture_type == TEXTURETYPE_PALETTE) {
         float index = texture0.Sample(sampler0, input.tex).r * 255;
         rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
-    } else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
-        float2 uv = GetPixelArtUV(input);
-        float index = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex)).r * 255;
-        rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
     } else if (texture_type == TEXTURETYPE_NV12) {
         float3 yuv;
         yuv.x = texture0.Sample(sampler0, input.tex).r;

+ 8 - 8
src/render/direct3d12/D3D12_PixelShader_Textures.h

@@ -4,8 +4,8 @@
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
-; SV_Position              0   xyzw        0      POS   float       
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; SV_Position              0   xyzw        0      POS   float
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
@@ -17,7 +17,7 @@
 ;
 ; shader hash: 659264befb13335624a11d2c002170a6
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ; Pixel Shader
 ; DepthOutput=0
@@ -28,15 +28,15 @@
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Position              0          noperspective       
-; TEXCOORD                 0                 linear       
-; COLOR                    0                 linear       
+; SV_Position              0          noperspective
+; TEXCOORD                 0                 linear
+; COLOR                    0                 linear
 ;
 ; Output signature:
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Target                0                              
+; SV_Target                0
 ;
 ; Buffer Definitions:
 ;
@@ -59,7 +59,7 @@
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Bcoeff;                                ; Offset:   96
-;   
+;
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;
 ; }

+ 11 - 11
src/render/direct3d12/D3D12_VertexShader_Advanced.h

@@ -4,8 +4,8 @@
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
-; POSITION                 0   xyz         0     NONE   float   xyz 
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; POSITION                 0   xyz         0     NONE   float   xyz
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ; shader hash: d7bcf20f2a5db21d5ba810d89983d7fd
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ; Vertex Shader
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ; Output signature:
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Position              0          noperspective       
-; TEXCOORD                 0                 linear       
-; COLOR                    0                 linear       
+; SV_Position              0          noperspective
+; TEXCOORD                 0                 linear
+; COLOR                    0                 linear
 ;
 ; Buffer Definitions:
 ;
@@ -50,7 +50,7 @@
 ;   {
 ;
 ;       row_major float4x4 mpv;                       ; Offset:    0
-;   
+;
 ;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ; }

+ 11 - 11
src/render/direct3d12/D3D12_VertexShader_Color.h

@@ -4,8 +4,8 @@
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
-; POSITION                 0   xyz         0     NONE   float   xyz 
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; POSITION                 0   xyz         0     NONE   float   xyz
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ; shader hash: 6855ad6b0e7d04a14cff9d3ae06dc84d
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ; Vertex Shader
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ; Output signature:
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Position              0          noperspective       
-; TEXCOORD                 0                 linear       
-; COLOR                    0                 linear       
+; SV_Position              0          noperspective
+; TEXCOORD                 0                 linear
+; COLOR                    0                 linear
 ;
 ; Buffer Definitions:
 ;
@@ -50,7 +50,7 @@
 ;   {
 ;
 ;       row_major float4x4 mpv;                       ; Offset:    0
-;   
+;
 ;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ; }

+ 11 - 11
src/render/direct3d12/D3D12_VertexShader_Texture.h

@@ -4,8 +4,8 @@
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
-; POSITION                 0   xyz         0     NONE   float   xyz 
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; POSITION                 0   xyz         0     NONE   float   xyz
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
-; TEXCOORD                 0   xy          1     NONE   float   xy  
+; TEXCOORD                 0   xy          1     NONE   float   xy
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ; shader hash: c6001978fd780410844d97ce5efb7d9e
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ; Vertex Shader
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ; Output signature:
 ;
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
-; SV_Position              0          noperspective       
-; TEXCOORD                 0                 linear       
-; COLOR                    0                 linear       
+; SV_Position              0          noperspective
+; TEXCOORD                 0                 linear
+; COLOR                    0                 linear
 ;
 ; Buffer Definitions:
 ;
@@ -50,7 +50,7 @@
 ;   {
 ;
 ;       row_major float4x4 mpv;                       ; Offset:    0
-;   
+;
 ;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ; }

+ 4 - 13
src/render/direct3d12/SDL_render_d3d12.c

@@ -71,10 +71,9 @@ static const float TONEMAP_CHROME = 2;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
-static const float TEXTURETYPE_NV12 = 5;
-static const float TEXTURETYPE_NV21 = 6;
-static const float TEXTURETYPE_YUV = 7;
+static const float TEXTURETYPE_NV12 = 4;
+static const float TEXTURETYPE_NV21 = 5;
+static const float TEXTURETYPE_YUV = 6;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -2600,15 +2599,7 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
 
         switch (texture->format) {
         case SDL_PIXELFORMAT_INDEX8:
-            if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-                constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
-                constants->texture_width = texture->w;
-                constants->texture_height = texture->h;
-                constants->texel_width = 1.0f / constants->texture_width;
-                constants->texel_height = 1.0f / constants->texture_height;
-            } else {
-                constants->texture_type = TEXTURETYPE_PALETTE;
-            }
+            constants->texture_type = TEXTURETYPE_PALETTE;
             constants->input_type = INPUTTYPE_UNSPECIFIED;
             break;
         case SDL_PIXELFORMAT_YV12:

+ 8 - 16
src/render/gpu/SDL_render_gpu.c

@@ -71,10 +71,9 @@ static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_RGBA = 3;
 static const float TEXTURETYPE_RGBA_PIXELART = 4;
 static const float TEXTURETYPE_PALETTE = 5;
-static const float TEXTURETYPE_PALETTE_PIXELART = 6;
-static const float TEXTURETYPE_NV12 = 7;
-static const float TEXTURETYPE_NV21 = 8;
-static const float TEXTURETYPE_YUV = 9;
+static const float TEXTURETYPE_NV12 = 6;
+static const float TEXTURETYPE_NV21 = 7;
+static const float TEXTURETYPE_YUV = 8;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -831,11 +830,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
     default:
         switch (texture->format) {
         case SDL_PIXELFORMAT_INDEX8:
-            if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-                constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
-            } else {
-                constants->texture_type = TEXTURETYPE_PALETTE;
-            }
+            constants->texture_type = TEXTURETYPE_PALETTE;
             break;
         case SDL_PIXELFORMAT_BGRX32:
         case SDL_PIXELFORMAT_RGBX32:
@@ -851,6 +846,10 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
         case SDL_PIXELFORMAT_RGBA64_FLOAT:
             if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
                 constants->texture_type = TEXTURETYPE_RGBA_PIXELART;
+                constants->texture_width = texture->w;
+                constants->texture_height = texture->h;
+                constants->texel_width = 1.0f / constants->texture_width;
+                constants->texel_height = 1.0f / constants->texture_height;
             } else {
                 constants->texture_type = TEXTURETYPE_RGBA;
             }
@@ -870,13 +869,6 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
         break;
     }
 
-    if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-        constants->texture_width = texture->w;
-        constants->texture_height = texture->h;
-        constants->texel_width = 1.0f / constants->texture_width;
-        constants->texel_height = 1.0f / constants->texture_height;
-    }
-
     constants->sdr_white_point = texture->SDR_white_point;
 
     if (renderer->target) {

+ 3 - 8
src/render/gpu/shaders/texture_advanced.frag.hlsl

@@ -44,10 +44,9 @@ static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_RGBA = 3;
 static const float TEXTURETYPE_RGBA_PIXELART = 4;
 static const float TEXTURETYPE_PALETTE = 5;
-static const float TEXTURETYPE_PALETTE_PIXELART = 6;
-static const float TEXTURETYPE_NV12 = 7;
-static const float TEXTURETYPE_NV21 = 8;
-static const float TEXTURETYPE_YUV = 9;
+static const float TEXTURETYPE_NV12 = 6;
+static const float TEXTURETYPE_NV21 = 7;
+static const float TEXTURETYPE_YUV = 8;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -159,10 +158,6 @@ float4 GetInputColor(PSInput input)
     } else if (texture_type == TEXTURETYPE_PALETTE) {
         float index = texture0.Sample(sampler0, input.v_uv).r * 255;
         rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
-    } else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
-        float2 uv = GetPixelArtUV(input);
-        float index = texture0.SampleGrad(sampler0, uv, ddx(input.v_uv), ddy(input.v_uv)).r * 255;
-        rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
     } else if (texture_type == TEXTURETYPE_NV12) {
         float3 yuv;
         yuv.x = texture0.Sample(sampler0, input.v_uv).r;

+ 7 - 3
src/render/metal/SDL_render_metal.m

@@ -1333,9 +1333,10 @@ static const float TONEMAP_CHROME = 2;
 //static const float TEXTURETYPE_NONE = 0;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
-static const float TEXTURETYPE_NV12 = 3;
-static const float TEXTURETYPE_NV21 = 4;
-static const float TEXTURETYPE_YUV = 5;
+static const float TEXTURETYPE_PALETTE = 3;
+static const float TEXTURETYPE_NV12 = 4;
+static const float TEXTURETYPE_NV21 = 5;
+static const float TEXTURETYPE_YUV = 6;
 
 //static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -1391,6 +1392,9 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand
 
     if (texture) {
         switch (texture->format) {
+        case SDL_PIXELFORMAT_INDEX8:
+            constants->texture_type = TEXTURETYPE_PALETTE;
+            break;
         case SDL_PIXELFORMAT_YV12:
         case SDL_PIXELFORMAT_IYUV:
             constants->texture_type = TEXTURETYPE_YUV;

+ 4 - 9
src/render/metal/SDL_shaders_metal.metal

@@ -13,11 +13,10 @@ using namespace metal;
 #define TEXTURETYPE_NONE        0
 #define TEXTURETYPE_RGB         1
 #define TEXTURETYPE_RGB_PIXELART 2
-#define TEXTURETYPE_PALETTE     1
-#define TEXTURETYPE_PALETTE_PIXELART 2
-#define TEXTURETYPE_NV12        3
-#define TEXTURETYPE_NV21        4
-#define TEXTURETYPE_YUV         5
+#define TEXTURETYPE_PALETTE     3
+#define TEXTURETYPE_NV12        4
+#define TEXTURETYPE_NV21        5
+#define TEXTURETYPE_YUV         6
 
 #define INPUTTYPE_UNSPECIFIED   0
 #define INPUTTYPE_SRGB          1
@@ -273,10 +272,6 @@ fragment float4 SDL_Palette_fragment(CopyVertexOutput vert [[stage_in]],
     if (c.texture_type == TEXTURETYPE_PALETTE) {
         float index = tex0.sample(s0, vert.texcoord).r * 255;
         rgba = tex1.sample(s1, float2((index + 0.5) / 256, 0.5));
-    } else if (c.texture_type == TEXTURETYPE_PALETTE_PIXELART) {
-        float2 uv = GetPixelArtUV(vert.texcoord, c.texel_size);
-        float index = tex0.sample(s0, uv, gradient2d(dfdx(vert.texcoord), dfdy(vert.texcoord))).r * 255;
-        rgba = tex1.sample(s1, float2((index + 0.5) / 256, 0.5));
     } else {
         // Unexpected texture type, use magenta error color
         rgba = float4(1.0, 0.0, 1.0, 1.0);

File diff suppressed because it is too large
+ 500 - 644
src/render/metal/SDL_shaders_metal_ios.h


File diff suppressed because it is too large
+ 417 - 514
src/render/metal/SDL_shaders_metal_iphonesimulator.h


File diff suppressed because it is too large
+ 1596 - 491
src/render/metal/SDL_shaders_metal_macos.h


File diff suppressed because it is too large
+ 500 - 644
src/render/metal/SDL_shaders_metal_tvos.h


File diff suppressed because it is too large
+ 1193 - 2184
src/render/metal/SDL_shaders_metal_tvsimulator.h


+ 0 - 4
src/render/opengl/SDL_render_gl.c

@@ -1201,10 +1201,6 @@ static bool SetCopyState(GL_RenderData *data, const SDL_RenderCommand *cmd)
 
     if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
         switch (shader) {
-        case SHADER_PALETTE:
-            shader = SHADER_PALETTE_PIXELART;
-            shader_params = texturedata->texel_size;
-            break;
         case SHADER_RGB:
             shader = SHADER_RGB_PIXELART;
             shader_params = texturedata->texel_size;

+ 1 - 27
src/render/opengl/SDL_shaders_gl.c

@@ -280,31 +280,6 @@ static struct {
         "#version 130\n"
     },
 
-    // SHADER_PALETTE_PIXELART
-    {
-        // vertex shader
-        TEXTURE_VERTEX_SHADER,
-        // fragment shader
-"varying vec4 v_color;\n"
-"varying vec2 v_texCoord;\n"
-"uniform sampler2D tex0;\n"
-"uniform sampler2D tex1;\n"
-"uniform vec4 texel_size;\n"
-"\n"
-"void main()\n"
-"{\n"
-"    vec2 boxSize = clamp(fwidth(v_texCoord) * texel_size.zw, 1e-5, 1.0);\n"
-"    vec2 tx = v_texCoord * texel_size.zw - 0.5 * boxSize;\n"
-"    vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n"
-"    vec2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;\n"
-"    float index = textureGrad(tex0, uv, dFdx(v_texCoord), dFdy(v_texCoord)).r * 255.0;\n"
-"    gl_FragColor = texture2D(tex1, vec2((index + 0.5) / 256.0, 0.5));\n"
-"    gl_FragColor *= v_color;\n"
-"}",
-        // fragment version
-        "#version 130\n"
-    },
-
     // SHADER_RGB
     {
         // vertex shader
@@ -632,8 +607,7 @@ void GL_SelectShader(GL_ShaderContext *ctx, GL_Shader shader, const float *shade
     ctx->glUseProgramObjectARB(program);
 
     if (shader_params && shader_params != ctx->shader_params[shader]) {
-        if (shader == SHADER_PALETTE_PIXELART ||
-            shader == SHADER_RGB_PIXELART ||
+        if (shader == SHADER_RGB_PIXELART ||
             shader == SHADER_RGBA_PIXELART) {
             location = ctx->glGetUniformLocationARB(program, "texel_size");
             if (location >= 0) {

+ 0 - 1
src/render/opengl/SDL_shaders_gl.h

@@ -32,7 +32,6 @@ typedef enum
     SHADER_NONE,
     SHADER_SOLID,
     SHADER_PALETTE,
-    SHADER_PALETTE_PIXELART,
     SHADER_RGB,
     SHADER_RGBA,
     SHADER_RGB_PIXELART,

+ 2 - 7
src/render/opengles2/SDL_render_gles2.c

@@ -634,12 +634,7 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
         ftype = GLES2_SHADER_FRAGMENT_SOLID;
         break;
     case GLES2_IMAGESOURCE_TEXTURE_INDEX8:
-        if (scale_mode == SDL_SCALEMODE_PIXELART) {
-            ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART;
-            shader_params = tdata->texel_size;
-        } else {
-            ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE;
-        }
+        ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE;
         break;
     case GLES2_IMAGESOURCE_TEXTURE_ABGR:
         if (scale_mode == SDL_SCALEMODE_PIXELART) {
@@ -772,7 +767,7 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
         }
         else
 #endif
-        if (ftype >= GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART) {
+        if (ftype >= GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART) {
             data->glUniform4f(program->uniform_locations[GLES2_UNIFORM_TEXEL_SIZE], shader_params[0], shader_params[1], shader_params[2], shader_params[3]);
         }
         program->shader_params = shader_params;

+ 0 - 32
src/render/opengles2/SDL_shaders_gles2.c

@@ -94,13 +94,6 @@ static const char GLES2_Fragment_Solid[] =
 "varying mediump vec4 v_color;\n"                               \
 "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n"             \
 
-#define PALETTE_PIXELART_SHADER_PROLOGUE                        \
-"uniform sampler2D u_texture;\n"                                \
-"uniform sampler2D u_palette;\n"                                \
-"uniform mediump vec4 u_texel_size;\n"                          \
-"varying mediump vec4 v_color;\n"                               \
-"varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n"             \
-
 #define RGB_SHADER_PROLOGUE                                     \
 "uniform sampler2D u_texture;\n"                                \
 "varying mediump vec4 v_color;\n"                               \
@@ -113,14 +106,6 @@ static const char GLES2_Fragment_Solid[] =
 "varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n"             \
 
 #ifdef OPENGLES_300 // This is required for fwidth() and textureGrad()
-#define PALETTE_PIXELART_GETCOLOR                                                               \
-"    mediump vec2 boxSize = clamp(fwidth(v_texCoord) * u_texel_size.zw, 1e-5, 1.0);\n"          \
-"    mediump vec2 tx = v_texCoord * u_texel_size.zw - 0.5 * boxSize;\n"                         \
-"    mediump vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n"          \
-"    mediump vec2 uv = (floor(tx) + 0.5 + txOffset) * u_texel_size.xy;\n"                       \
-"    mediump float index = textureGrad(u_texture, uv, dFdx(v_texCoord), dFdy(v_texCoord)).r * 255.0;\n" \
-"    SDL_TEXCOORD_PRECISION vec2 paletteCoords = vec2((index + 0.5) / 256.0, 0.5);\n"           \
-"    mediump vec4 color = texture2D(u_palette, paletteCoords);\n"
 #define RGB_PIXELART_GETCOLOR                                                                   \
 "    mediump vec2 boxSize = clamp(fwidth(v_texCoord) * u_texel_size.zw, 1e-5, 1.0);\n"          \
 "    mediump vec2 tx = v_texCoord * u_texel_size.zw - 0.5 * boxSize;\n"                         \
@@ -128,10 +113,6 @@ static const char GLES2_Fragment_Solid[] =
 "    mediump vec2 uv = (floor(tx) + 0.5 + txOffset) * u_texel_size.xy;\n"                       \
 "    mediump vec4 color = textureGrad(u_texture, uv, dFdx(v_texCoord), dFdy(v_texCoord));\n"
 #else
-#define PALETTE_PIXELART_GETCOLOR                                                               \
-"    mediump float index = texture2D(u_texture, v_texCoord).r * 255.0;\n"                       \
-"    SDL_TEXCOORD_PRECISION vec2 paletteCoords = vec2((index + 0.5) / 256.0, 0.5);\n"           \
-"    mediump vec4 color = texture2D(u_palette, paletteCoords);\n"
 #define RGB_PIXELART_GETCOLOR                                                                   \
 "    mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
 #endif
@@ -202,17 +183,6 @@ static const char GLES2_Fragment_TextureBGR[] =
 "}\n"
 ;
 
-static const char GLES2_Fragment_TexturePalette_PixelArt[] =
-    PALETTE_PIXELART_SHADER_PROLOGUE
-"\n"
-"void main()\n"
-"{\n"
-    PALETTE_PIXELART_GETCOLOR
-"    gl_FragColor = color;\n"
-"    gl_FragColor *= v_color;\n"
-"}\n"
-;
-
 static const char GLES2_Fragment_TextureABGR_PixelArt[] =
     RGB_PIXELART_SHADER_PROLOGUE
 "\n"
@@ -485,8 +455,6 @@ const char *GLES2_GetShader(GLES2_ShaderType type)
         return GLES2_Fragment_TextureRGB;
     case GLES2_SHADER_FRAGMENT_TEXTURE_BGR:
         return GLES2_Fragment_TextureBGR;
-    case GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART:
-        return GLES2_Fragment_TexturePalette_PixelArt;
     case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART:
         return GLES2_Fragment_TextureABGR_PixelArt;
     case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART:

+ 0 - 1
src/render/opengles2/SDL_shaders_gles2.h

@@ -44,7 +44,6 @@ typedef enum
     GLES2_SHADER_FRAGMENT_TEXTURE_ARGB,
     GLES2_SHADER_FRAGMENT_TEXTURE_BGR,
     GLES2_SHADER_FRAGMENT_TEXTURE_RGB,
-    GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART,
     GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART,
     GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART,
     GLES2_SHADER_FRAGMENT_TEXTURE_BGR_PIXELART,

+ 5 - 13
src/render/vulkan/SDL_render_vulkan.c

@@ -185,7 +185,6 @@ static const float TONEMAP_CHROME = 2;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -3424,26 +3423,19 @@ static void VULKAN_SetupShaderConstants(SDL_Renderer *renderer, const SDL_Render
         }
 
         if (texture->format == SDL_PIXELFORMAT_INDEX8) {
-            if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-                constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
-            } else {
-                constants->texture_type = TEXTURETYPE_PALETTE;
-            }
+            constants->texture_type = TEXTURETYPE_PALETTE;
         } else {
             if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
                 constants->texture_type = TEXTURETYPE_RGB_PIXELART;
+                constants->texture_width = texture->w;
+                constants->texture_height = texture->h;
+                constants->texel_width = 1.0f / constants->texture_width;
+                constants->texel_height = 1.0f / constants->texture_height;
             } else {
                 constants->texture_type = TEXTURETYPE_RGB;
             }
         }
 
-        if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
-            constants->texture_width = texture->w;
-            constants->texture_height = texture->h;
-            constants->texel_width = 1.0f / constants->texture_width;
-            constants->texel_height = 1.0f / constants->texture_height;
-        }
-
         constants->sdr_white_point = texture->SDR_white_point;
 
         if (renderer->target) {

+ 252 - 279
src/render/vulkan/VULKAN_PixelShader_Advanced.h

@@ -1,9 +1,9 @@
 	// 1113.1.1
 	 #pragma once
 const uint32_t VULKAN_PixelShader_Advanced[] = {
-	0x07230203,0x00010000,0x0008000b,0x00000577,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x07230203,0x00010000,0x0008000b,0x00000510,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
-	0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000023e,0x00000241,0x00000245,
+	0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000221,0x00000224,0x00000228,
 	0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
 	0x6e69616d,0x00000000,0x00050005,0x00000079,0x736e6f43,0x746e6174,0x00000073,0x00070006,
 	0x00000079,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000079,
@@ -15,8 +15,8 @@ const uint32_t VULKAN_PixelShader_Advanced[] = {
 	0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000079,0x00000008,0x5f726473,
 	0x74696877,0x6f705f65,0x00746e69,0x00030005,0x0000007b,0x00000000,0x00050005,0x0000011f,
 	0x74786574,0x30657275,0x00000000,0x00050005,0x00000146,0x74786574,0x31657275,0x00000000,
-	0x00050005,0x0000023e,0x75706e69,0x65742e74,0x00000078,0x00050005,0x00000241,0x75706e69,
-	0x6f632e74,0x00726f6c,0x00070005,0x00000245,0x746e6540,0x6f507972,0x4f746e69,0x75707475,
+	0x00050005,0x00000221,0x75706e69,0x65742e74,0x00000078,0x00050005,0x00000224,0x75706e69,
+	0x6f632e74,0x00726f6c,0x00070005,0x00000228,0x746e6540,0x6f507972,0x4f746e69,0x75707475,
 	0x00000074,0x00050048,0x00000079,0x00000000,0x00000023,0x00000000,0x00050048,0x00000079,
 	0x00000001,0x00000023,0x00000004,0x00050048,0x00000079,0x00000002,0x00000023,0x00000008,
 	0x00050048,0x00000079,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000079,0x00000004,
@@ -26,8 +26,8 @@ const uint32_t VULKAN_PixelShader_Advanced[] = {
 	0x00000002,0x00040047,0x0000007b,0x00000022,0x00000000,0x00040047,0x0000007b,0x00000021,
 	0x00000000,0x00040047,0x0000011f,0x00000022,0x00000000,0x00040047,0x0000011f,0x00000021,
 	0x00000001,0x00040047,0x00000146,0x00000022,0x00000000,0x00040047,0x00000146,0x00000021,
-	0x00000002,0x00040047,0x0000023e,0x0000001e,0x00000000,0x00040047,0x00000241,0x0000001e,
-	0x00000001,0x00040047,0x00000245,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,
+	0x00000002,0x00040047,0x00000221,0x0000001e,0x00000000,0x00040047,0x00000224,0x0000001e,
+	0x00000001,0x00040047,0x00000228,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,
 	0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x0000000f,0x00000006,
 	0x00000003,0x00040017,0x00000018,0x00000006,0x00000004,0x00040017,0x00000019,0x00000006,
 	0x00000002,0x0004002b,0x00000006,0x00000036,0x3d25aee6,0x00020014,0x00000037,0x0004002b,
@@ -69,277 +69,250 @@ const uint32_t VULKAN_PixelShader_Advanced[] = {
 	0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,
 	0x0000011d,0x0000011c,0x00040020,0x0000011e,0x00000000,0x0000011d,0x0004003b,0x0000011e,
 	0x0000011f,0x00000000,0x0004002b,0x00000006,0x0000013a,0x40400000,0x0004002b,0x00000006,
-	0x00000144,0x437f0000,0x0004003b,0x0000011e,0x00000146,0x00000000,0x0004002b,0x00000006,
-	0x00000151,0x40800000,0x0004002b,0x0000007c,0x00000177,0x00000003,0x0004002b,0x0000007c,
-	0x00000187,0x00000000,0x00040020,0x00000239,0x00000001,0x00000018,0x00040020,0x0000023d,
-	0x00000001,0x00000019,0x0004003b,0x0000023d,0x0000023e,0x00000001,0x0004003b,0x00000239,
-	0x00000241,0x00000001,0x00040020,0x00000244,0x00000003,0x00000018,0x0004003b,0x00000244,
-	0x00000245,0x00000003,0x0005002c,0x00000019,0x0000052b,0x000000fd,0x000000fd,0x0004002b,
-	0x00000006,0x0000052c,0x3b800000,0x0006002c,0x0000000f,0x0000052e,0x00000061,0x00000061,
-	0x00000061,0x0006002c,0x0000000f,0x0000052f,0x00000068,0x00000068,0x00000068,0x0006002c,
-	0x0000000f,0x00000534,0x00000088,0x00000088,0x00000088,0x0004002b,0x00000006,0x0000053a,
-	0x3f72a76f,0x0004002b,0x00000006,0x0000053b,0x3d9e8391,0x0007002c,0x00000018,0x0000053d,
-	0x00000088,0x00000064,0x00000064,0x00000088,0x0004002b,0x00000006,0x0000053e,0xbd6147ae,
-	0x00030001,0x00000018,0x00000576,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
-	0x000200f8,0x00000005,0x0004003d,0x00000019,0x0000023f,0x0000023e,0x0004003d,0x00000018,
-	0x00000242,0x00000241,0x00050041,0x0000007e,0x000002c5,0x0000007b,0x000000e8,0x0004003d,
-	0x00000006,0x000002c6,0x000002c5,0x000500b4,0x00000037,0x000002c7,0x000002c6,0x00000088,
-	0x000300f7,0x0000030e,0x00000000,0x000400fa,0x000002c7,0x000002c8,0x000002cd,0x000200f8,
-	0x000002c8,0x0004003d,0x0000011d,0x000002c9,0x0000011f,0x00050057,0x00000018,0x000002cc,
-	0x000002c9,0x0000023f,0x000200f9,0x0000030e,0x000200f8,0x000002cd,0x00050041,0x0000007e,
-	0x000002ce,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002cf,0x000002ce,0x000500b4,
-	0x00000037,0x000002d0,0x000002cf,0x00000094,0x000300f7,0x0000030d,0x00000000,0x000400fa,
-	0x000002d0,0x000002d1,0x000002dd,0x000200f8,0x000002d1,0x000400d1,0x00000019,0x00000318,
-	0x0000023f,0x00050041,0x000000ed,0x00000319,0x0000007b,0x000000ec,0x0004003d,0x00000018,
-	0x0000031a,0x00000319,0x0007004f,0x00000019,0x0000031b,0x0000031a,0x0000031a,0x00000002,
-	0x00000003,0x00050085,0x00000019,0x0000031c,0x00000318,0x0000031b,0x0008000c,0x00000019,
-	0x0000031d,0x00000001,0x0000002b,0x0000031c,0x000000f3,0x000000f4,0x00050041,0x000000ed,
-	0x00000320,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x00000321,0x00000320,0x0007004f,
-	0x00000019,0x00000322,0x00000321,0x00000321,0x00000002,0x00000003,0x0005008e,0x00000019,
-	0x00000325,0x0000031d,0x000000fd,0x0004007f,0x00000019,0x0000052d,0x00000325,0x0008000c,
-	0x00000019,0x00000326,0x00000001,0x00000032,0x0000023f,0x00000322,0x0000052d,0x00050083,
-	0x00000019,0x00000329,0x000000f4,0x0000031d,0x0006000c,0x00000019,0x0000032b,0x00000001,
-	0x0000000a,0x00000326,0x0008000c,0x00000019,0x0000032c,0x00000001,0x00000031,0x00000329,
-	0x000000f4,0x0000032b,0x0006000c,0x00000019,0x0000032e,0x00000001,0x00000008,0x00000326,
-	0x00050081,0x00000019,0x00000330,0x0000032e,0x0000052b,0x00050081,0x00000019,0x00000332,
-	0x00000330,0x0000032c,0x00050041,0x000000ed,0x00000333,0x0000007b,0x000000ec,0x0004003d,
-	0x00000018,0x00000334,0x00000333,0x0007004f,0x00000019,0x00000335,0x00000334,0x00000334,
-	0x00000000,0x00000001,0x00050085,0x00000019,0x00000336,0x00000332,0x00000335,0x0004003d,
-	0x0000011d,0x000002d4,0x0000011f,0x000400cf,0x00000019,0x000002d8,0x0000023f,0x000400d0,
-	0x00000019,0x000002db,0x0000023f,0x00080058,0x00000018,0x000002dc,0x000002d4,0x00000336,
-	0x00000004,0x000002d8,0x000002db,0x000200f9,0x0000030d,0x000200f8,0x000002dd,0x00050041,
-	0x0000007e,0x000002de,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002df,0x000002de,
-	0x000500b4,0x00000037,0x000002e0,0x000002df,0x0000013a,0x000300f7,0x0000030c,0x00000000,
-	0x000400fa,0x000002e0,0x000002e1,0x000002ee,0x000200f8,0x000002e1,0x0004003d,0x0000011d,
-	0x000002e2,0x0000011f,0x00050057,0x00000018,0x000002e5,0x000002e2,0x0000023f,0x00050051,
-	0x00000006,0x000002e6,0x000002e5,0x00000000,0x0004003d,0x0000011d,0x000002e8,0x00000146,
-	0x0008000c,0x00000006,0x000002ea,0x00000001,0x00000032,0x000002e6,0x00000144,0x000000fd,
-	0x00050085,0x00000006,0x000002eb,0x000002ea,0x0000052c,0x00050050,0x00000019,0x000002ec,
-	0x000002eb,0x000000fd,0x00050057,0x00000018,0x000002ed,0x000002e8,0x000002ec,0x000200f9,
-	0x0000030c,0x000200f8,0x000002ee,0x00050041,0x0000007e,0x000002ef,0x0000007b,0x000000e8,
-	0x0004003d,0x00000006,0x000002f0,0x000002ef,0x000500b4,0x00000037,0x000002f1,0x000002f0,
-	0x00000151,0x000300f7,0x0000030b,0x00000000,0x000400fa,0x000002f1,0x000002f2,0x00000306,
-	0x000200f8,0x000002f2,0x000400d1,0x00000019,0x00000340,0x0000023f,0x00050041,0x000000ed,
-	0x00000341,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x00000342,0x00000341,0x0007004f,
-	0x00000019,0x00000343,0x00000342,0x00000342,0x00000002,0x00000003,0x00050085,0x00000019,
-	0x00000344,0x00000340,0x00000343,0x0008000c,0x00000019,0x00000345,0x00000001,0x0000002b,
-	0x00000344,0x000000f3,0x000000f4,0x00050041,0x000000ed,0x00000348,0x0000007b,0x000000ec,
-	0x0004003d,0x00000018,0x00000349,0x00000348,0x0007004f,0x00000019,0x0000034a,0x00000349,
-	0x00000349,0x00000002,0x00000003,0x0005008e,0x00000019,0x0000034d,0x00000345,0x000000fd,
-	0x0004007f,0x00000019,0x0000052a,0x0000034d,0x0008000c,0x00000019,0x0000034e,0x00000001,
-	0x00000032,0x0000023f,0x0000034a,0x0000052a,0x00050083,0x00000019,0x00000351,0x000000f4,
-	0x00000345,0x0006000c,0x00000019,0x00000353,0x00000001,0x0000000a,0x0000034e,0x0008000c,
-	0x00000019,0x00000354,0x00000001,0x00000031,0x00000351,0x000000f4,0x00000353,0x0006000c,
-	0x00000019,0x00000356,0x00000001,0x00000008,0x0000034e,0x00050081,0x00000019,0x00000358,
-	0x00000356,0x0000052b,0x00050081,0x00000019,0x0000035a,0x00000358,0x00000354,0x00050041,
-	0x000000ed,0x0000035b,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x0000035c,0x0000035b,
-	0x0007004f,0x00000019,0x0000035d,0x0000035c,0x0000035c,0x00000000,0x00000001,0x00050085,
-	0x00000019,0x0000035e,0x0000035a,0x0000035d,0x0004003d,0x0000011d,0x000002f5,0x0000011f,
-	0x000400cf,0x00000019,0x000002f9,0x0000023f,0x000400d0,0x00000019,0x000002fc,0x0000023f,
-	0x00080058,0x00000018,0x000002fd,0x000002f5,0x0000035e,0x00000004,0x000002f9,0x000002fc,
-	0x00050051,0x00000006,0x000002fe,0x000002fd,0x00000000,0x0004003d,0x0000011d,0x00000300,
-	0x00000146,0x0008000c,0x00000006,0x00000302,0x00000001,0x00000032,0x000002fe,0x00000144,
-	0x000000fd,0x00050085,0x00000006,0x00000303,0x00000302,0x0000052c,0x00050050,0x00000019,
-	0x00000304,0x00000303,0x000000fd,0x00050057,0x00000018,0x00000305,0x00000300,0x00000304,
-	0x000200f9,0x0000030b,0x000200f8,0x00000306,0x000200f9,0x0000030b,0x000200f8,0x0000030b,
-	0x000700f5,0x00000018,0x00000542,0x00000305,0x000002f2,0x0000053d,0x00000306,0x000200f9,
-	0x0000030c,0x000200f8,0x0000030c,0x000700f5,0x00000018,0x00000541,0x000002ed,0x000002e1,
-	0x00000542,0x0000030b,0x000200f9,0x0000030d,0x000200f8,0x0000030d,0x000700f5,0x00000018,
-	0x00000540,0x000002dc,0x000002d1,0x00000541,0x0000030c,0x000200f9,0x0000030e,0x000200f8,
-	0x0000030e,0x000700f5,0x00000018,0x0000053f,0x000002cc,0x000002c8,0x00000540,0x0000030d,
-	0x00050041,0x0000007e,0x0000025b,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000025c,
-	0x0000025b,0x000500b4,0x00000037,0x0000025d,0x0000025c,0x0000013a,0x000300f7,0x00000268,
-	0x00000000,0x000400fa,0x0000025d,0x0000025e,0x00000268,0x000200f8,0x0000025e,0x0008004f,
-	0x0000000f,0x00000260,0x0000053f,0x0000053f,0x00000000,0x00000001,0x00000002,0x0006000c,
-	0x0000000f,0x00000365,0x00000001,0x00000004,0x00000260,0x0007000c,0x0000000f,0x00000366,
-	0x00000001,0x0000001a,0x00000365,0x0000005f,0x00050083,0x0000000f,0x00000368,0x00000366,
-	0x0000052e,0x0007000c,0x0000000f,0x00000369,0x00000001,0x00000028,0x00000368,0x00000065,
-	0x0006000c,0x0000000f,0x0000036b,0x00000001,0x00000004,0x00000260,0x0007000c,0x0000000f,
-	0x0000036c,0x00000001,0x0000001a,0x0000036b,0x0000005f,0x0005008e,0x0000000f,0x0000036d,
-	0x0000036c,0x00000069,0x00050083,0x0000000f,0x0000036f,0x0000052f,0x0000036d,0x00050088,
-	0x0000000f,0x00000372,0x00000369,0x0000036f,0x0006000c,0x0000000f,0x00000373,0x00000001,
-	0x00000004,0x00000372,0x0007000c,0x0000000f,0x00000374,0x00000001,0x0000001a,0x00000373,
-	0x00000076,0x0005008e,0x0000000f,0x00000375,0x00000374,0x00000070,0x00050041,0x0000007e,
-	0x00000376,0x0000007b,0x0000007d,0x0004003d,0x00000006,0x00000377,0x00000376,0x00060050,
-	0x0000000f,0x00000378,0x00000377,0x00000377,0x00000377,0x00050088,0x0000000f,0x00000379,
-	0x00000375,0x00000378,0x00050051,0x00000006,0x00000263,0x00000379,0x00000000,0x00060052,
-	0x00000018,0x000004d6,0x00000263,0x0000053f,0x00000000,0x00050051,0x00000006,0x00000265,
-	0x00000379,0x00000001,0x00060052,0x00000018,0x000004d8,0x00000265,0x000004d6,0x00000001,
-	0x00050051,0x00000006,0x00000267,0x00000379,0x00000002,0x00060052,0x00000018,0x000004da,
-	0x00000267,0x000004d8,0x00000002,0x000200f9,0x00000268,0x000200f8,0x00000268,0x000700f5,
-	0x00000018,0x00000543,0x0000053f,0x0000030e,0x000004da,0x0000025e,0x00050041,0x0000007e,
-	0x00000269,0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000026a,0x00000269,0x000500b7,
-	0x00000037,0x0000026b,0x0000026a,0x00000064,0x000300f7,0x00000276,0x00000000,0x000400fa,
-	0x0000026b,0x0000026c,0x00000276,0x000200f8,0x0000026c,0x0008004f,0x0000000f,0x0000026e,
-	0x00000543,0x00000543,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x0000037e,
-	0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000037f,0x0000037e,0x000500b4,0x00000037,
-	0x00000380,0x0000037f,0x00000088,0x000300f7,0x000003b4,0x00000000,0x000400fa,0x00000380,
-	0x00000381,0x00000386,0x000200f8,0x00000381,0x00050041,0x0000007e,0x00000382,0x0000007b,
-	0x0000008c,0x0004003d,0x00000006,0x00000383,0x00000382,0x0005008e,0x0000000f,0x00000385,
-	0x0000026e,0x00000383,0x000200f9,0x000003b4,0x000200f8,0x00000386,0x00050041,0x0000007e,
-	0x00000387,0x0000007b,0x00000085,0x0004003d,0x00000006,0x00000388,0x00000387,0x000500b4,
-	0x00000037,0x00000389,0x00000388,0x00000094,0x000300f7,0x000003b3,0x00000000,0x000400fa,
-	0x00000389,0x0000038a,0x000003b3,0x000200f8,0x0000038a,0x00050041,0x0000007e,0x0000038b,
-	0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000038c,0x0000038b,0x000500b4,0x00000037,
-	0x0000038d,0x0000038c,0x00000094,0x000300f7,0x00000391,0x00000000,0x000400fa,0x0000038d,
-	0x0000038e,0x00000391,0x000200f8,0x0000038e,0x00050090,0x0000000f,0x00000390,0x0000026e,
-	0x000000ac,0x000200f9,0x00000391,0x000200f8,0x00000391,0x000700f5,0x0000000f,0x00000544,
-	0x0000026e,0x0000038a,0x00000390,0x0000038e,0x00050051,0x00000006,0x00000393,0x00000544,
-	0x00000000,0x00050051,0x00000006,0x00000395,0x00000544,0x00000001,0x00050051,0x00000006,
-	0x00000397,0x00000544,0x00000002,0x0007000c,0x00000006,0x00000398,0x00000001,0x00000028,
-	0x00000395,0x00000397,0x0007000c,0x00000006,0x00000399,0x00000001,0x00000028,0x00000393,
-	0x00000398,0x000500ba,0x00000037,0x0000039b,0x00000399,0x00000064,0x000300f7,0x000003ab,
-	0x00000000,0x000400fa,0x0000039b,0x0000039c,0x000003ab,0x000200f8,0x0000039c,0x00050041,
-	0x0000007e,0x0000039d,0x0000007b,0x0000008c,0x0004003d,0x00000006,0x0000039e,0x0000039d,
-	0x0008000c,0x00000006,0x000003a1,0x00000001,0x00000032,0x0000039e,0x00000399,0x00000088,
-	0x00050041,0x0000007e,0x000003a2,0x0000007b,0x000000c5,0x0004003d,0x00000006,0x000003a3,
-	0x000003a2,0x0008000c,0x00000006,0x000003a6,0x00000001,0x00000032,0x000003a3,0x00000399,
-	0x00000088,0x00050088,0x00000006,0x000003a7,0x000003a1,0x000003a6,0x0005008e,0x0000000f,
-	0x000003aa,0x00000544,0x000003a7,0x000200f9,0x000003ab,0x000200f8,0x000003ab,0x000700f5,
-	0x0000000f,0x00000545,0x00000544,0x00000391,0x000003aa,0x0000039c,0x00050041,0x0000007e,
-	0x000003ac,0x0000007b,0x00000098,0x0004003d,0x00000006,0x000003ad,0x000003ac,0x000500b4,
-	0x00000037,0x000003ae,0x000003ad,0x00000094,0x000300f7,0x000003b2,0x00000000,0x000400fa,
-	0x000003ae,0x000003af,0x000003b2,0x000200f8,0x000003af,0x00050090,0x0000000f,0x000003b1,
-	0x00000545,0x000000e1,0x000200f9,0x000003b2,0x000200f8,0x000003b2,0x000700f5,0x0000000f,
-	0x00000548,0x00000545,0x000003ab,0x000003b1,0x000003af,0x000200f9,0x000003b3,0x000200f8,
-	0x000003b3,0x000700f5,0x0000000f,0x00000547,0x0000026e,0x00000386,0x00000548,0x000003b2,
-	0x000200f9,0x000003b4,0x000200f8,0x000003b4,0x000700f5,0x0000000f,0x00000546,0x00000385,
-	0x00000381,0x00000547,0x000003b3,0x00050051,0x00000006,0x00000271,0x00000546,0x00000000,
-	0x00060052,0x00000018,0x000004df,0x00000271,0x00000543,0x00000000,0x00050051,0x00000006,
-	0x00000273,0x00000546,0x00000001,0x00060052,0x00000018,0x000004e1,0x00000273,0x000004df,
-	0x00000001,0x00050051,0x00000006,0x00000275,0x00000546,0x00000002,0x00060052,0x00000018,
-	0x000004e3,0x00000275,0x000004e1,0x00000002,0x000200f9,0x00000276,0x000200f8,0x00000276,
-	0x000700f5,0x00000018,0x0000054e,0x00000543,0x00000268,0x000004e3,0x000003b4,0x00050041,
-	0x0000007e,0x00000277,0x0000007b,0x00000098,0x0004003d,0x00000006,0x00000278,0x00000277,
-	0x000500b4,0x00000037,0x00000279,0x00000278,0x00000088,0x000300f7,0x000002b7,0x00000000,
-	0x000400fa,0x00000279,0x0000027a,0x00000287,0x000200f8,0x0000027a,0x0008004f,0x0000000f,
-	0x0000027c,0x0000054e,0x0000054e,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
-	0x000003bc,0x0000007b,0x00000187,0x0004003d,0x00000006,0x000003bd,0x000003bc,0x000500b7,
-	0x00000037,0x000003be,0x000003bd,0x00000064,0x000300f7,0x000003cc,0x00000000,0x000400fa,
-	0x000003be,0x000003bf,0x000003cc,0x000200f8,0x000003bf,0x00050051,0x00000006,0x000003c1,
-	0x0000054e,0x00000000,0x000500bc,0x00000037,0x000003d5,0x000003c1,0x00000036,0x000300f7,
-	0x000003df,0x00000000,0x000400fa,0x000003d5,0x000003d6,0x000003d9,0x000200f8,0x000003d6,
-	0x00050085,0x00000006,0x000003d8,0x000003c1,0x0000053b,0x000200f9,0x000003df,0x000200f8,
-	0x000003d9,0x00050081,0x00000006,0x000003db,0x000003c1,0x00000040,0x0006000c,0x00000006,
-	0x000003dc,0x00000001,0x00000004,0x000003db,0x00050085,0x00000006,0x000003dd,0x000003dc,
-	0x0000053a,0x0007000c,0x00000006,0x000003de,0x00000001,0x0000001a,0x000003dd,0x00000045,
-	0x000200f9,0x000003df,0x000200f8,0x000003df,0x000700f5,0x00000006,0x00000565,0x000003d8,
-	0x000003d6,0x000003de,0x000003d9,0x00050051,0x00000006,0x000003c5,0x0000054e,0x00000001,
-	0x000500bc,0x00000037,0x000003e4,0x000003c5,0x00000036,0x000300f7,0x000003ee,0x00000000,
-	0x000400fa,0x000003e4,0x000003e5,0x000003e8,0x000200f8,0x000003e5,0x00050085,0x00000006,
-	0x000003e7,0x000003c5,0x0000053b,0x000200f9,0x000003ee,0x000200f8,0x000003e8,0x00050081,
-	0x00000006,0x000003ea,0x000003c5,0x00000040,0x0006000c,0x00000006,0x000003eb,0x00000001,
-	0x00000004,0x000003ea,0x00050085,0x00000006,0x000003ec,0x000003eb,0x0000053a,0x0007000c,
-	0x00000006,0x000003ed,0x00000001,0x0000001a,0x000003ec,0x00000045,0x000200f9,0x000003ee,
-	0x000200f8,0x000003ee,0x000700f5,0x00000006,0x00000567,0x000003e7,0x000003e5,0x000003ed,
-	0x000003e8,0x00050051,0x00000006,0x000003c9,0x0000054e,0x00000002,0x000500bc,0x00000037,
-	0x000003f3,0x000003c9,0x00000036,0x000300f7,0x000003fd,0x00000000,0x000400fa,0x000003f3,
-	0x000003f4,0x000003f7,0x000200f8,0x000003f4,0x00050085,0x00000006,0x000003f6,0x000003c9,
-	0x0000053b,0x000200f9,0x000003fd,0x000200f8,0x000003f7,0x00050081,0x00000006,0x000003f9,
-	0x000003c9,0x00000040,0x0006000c,0x00000006,0x000003fa,0x00000001,0x00000004,0x000003f9,
-	0x00050085,0x00000006,0x000003fb,0x000003fa,0x0000053a,0x0007000c,0x00000006,0x000003fc,
-	0x00000001,0x0000001a,0x000003fb,0x00000045,0x000200f9,0x000003fd,0x000200f8,0x000003fd,
-	0x000700f5,0x00000006,0x00000569,0x000003f6,0x000003f4,0x000003fc,0x000003f7,0x00060050,
-	0x0000000f,0x00000575,0x00000565,0x00000567,0x00000569,0x000200f9,0x000003cc,0x000200f8,
-	0x000003cc,0x000700f5,0x0000000f,0x0000056b,0x0000027c,0x0000027a,0x00000575,0x000003fd,
-	0x00050041,0x0000007e,0x000003ce,0x0000007b,0x00000177,0x0004003d,0x00000006,0x000003cf,
-	0x000003ce,0x0005008e,0x0000000f,0x000003d0,0x0000056b,0x000003cf,0x00050051,0x00000006,
-	0x0000027f,0x000003d0,0x00000000,0x00050051,0x00000006,0x00000281,0x000003d0,0x00000001,
-	0x00050051,0x00000006,0x00000283,0x000003d0,0x00000002,0x00050051,0x00000006,0x00000285,
-	0x0000054e,0x00000003,0x00070050,0x00000018,0x0000053c,0x0000027f,0x00000281,0x00000283,
-	0x00000285,0x000200f9,0x000002b7,0x000200f8,0x00000287,0x00050041,0x0000007e,0x00000288,
-	0x0000007b,0x00000098,0x0004003d,0x00000006,0x00000289,0x00000288,0x000500b4,0x00000037,
-	0x0000028a,0x00000289,0x00000094,0x000300f7,0x000002b6,0x00000000,0x000400fa,0x0000028a,
-	0x0000028b,0x00000298,0x000200f8,0x0000028b,0x0008004f,0x0000000f,0x0000028d,0x0000054e,
-	0x0000054e,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x00000406,0x0000007b,
-	0x00000177,0x0004003d,0x00000006,0x00000407,0x00000406,0x0005008e,0x0000000f,0x00000408,
-	0x0000028d,0x00000407,0x00050041,0x0000007e,0x00000409,0x0000007b,0x00000187,0x0004003d,
-	0x00000006,0x0000040a,0x00000409,0x000500b7,0x00000037,0x0000040b,0x0000040a,0x00000064,
-	0x000400a8,0x00000037,0x0000040c,0x0000040b,0x000300f7,0x0000041e,0x00000000,0x000400fa,
-	0x0000040c,0x0000040d,0x0000041e,0x000200f8,0x0000040d,0x00050051,0x00000006,0x0000040f,
-	0x00000408,0x00000000,0x000500bc,0x00000037,0x00000423,0x0000040f,0x0000004b,0x000300f7,
-	0x0000042d,0x00000000,0x000400fa,0x00000423,0x00000424,0x00000427,0x000200f8,0x00000424,
-	0x00050085,0x00000006,0x00000426,0x0000040f,0x0000003c,0x000200f9,0x0000042d,0x000200f8,
-	0x00000427,0x0006000c,0x00000006,0x00000429,0x00000001,0x00000004,0x0000040f,0x0007000c,
-	0x00000006,0x0000042a,0x00000001,0x0000001a,0x00000429,0x00000054,0x0008000c,0x00000006,
-	0x0000042c,0x00000001,0x00000032,0x0000042a,0x00000043,0x0000053e,0x000200f9,0x0000042d,
-	0x000200f8,0x0000042d,0x000700f5,0x00000006,0x0000055a,0x00000426,0x00000424,0x0000042c,
-	0x00000427,0x00050051,0x00000006,0x00000413,0x00000408,0x00000001,0x000500bc,0x00000037,
-	0x00000432,0x00000413,0x0000004b,0x000300f7,0x0000043c,0x00000000,0x000400fa,0x00000432,
-	0x00000433,0x00000436,0x000200f8,0x00000433,0x00050085,0x00000006,0x00000435,0x00000413,
-	0x0000003c,0x000200f9,0x0000043c,0x000200f8,0x00000436,0x0006000c,0x00000006,0x00000438,
-	0x00000001,0x00000004,0x00000413,0x0007000c,0x00000006,0x00000439,0x00000001,0x0000001a,
-	0x00000438,0x00000054,0x0008000c,0x00000006,0x0000043b,0x00000001,0x00000032,0x00000439,
-	0x00000043,0x0000053e,0x000200f9,0x0000043c,0x000200f8,0x0000043c,0x000700f5,0x00000006,
-	0x0000055c,0x00000435,0x00000433,0x0000043b,0x00000436,0x00050051,0x00000006,0x00000417,
-	0x00000408,0x00000002,0x000500bc,0x00000037,0x00000441,0x00000417,0x0000004b,0x000300f7,
-	0x0000044b,0x00000000,0x000400fa,0x00000441,0x00000442,0x00000445,0x000200f8,0x00000442,
-	0x00050085,0x00000006,0x00000444,0x00000417,0x0000003c,0x000200f9,0x0000044b,0x000200f8,
-	0x00000445,0x0006000c,0x00000006,0x00000447,0x00000001,0x00000004,0x00000417,0x0007000c,
-	0x00000006,0x00000448,0x00000001,0x0000001a,0x00000447,0x00000054,0x0008000c,0x00000006,
-	0x0000044a,0x00000001,0x00000032,0x00000448,0x00000043,0x0000053e,0x000200f9,0x0000044b,
-	0x000200f8,0x0000044b,0x000700f5,0x00000006,0x0000055e,0x00000444,0x00000442,0x0000044a,
-	0x00000445,0x00060050,0x0000000f,0x00000574,0x0000055a,0x0000055c,0x0000055e,0x0008000c,
-	0x0000000f,0x0000041d,0x00000001,0x0000002b,0x00000574,0x00000065,0x00000534,0x000200f9,
-	0x0000041e,0x000200f8,0x0000041e,0x000700f5,0x0000000f,0x00000560,0x00000408,0x0000028b,
-	0x0000041d,0x0000044b,0x00050051,0x00000006,0x00000290,0x00000560,0x00000000,0x00050051,
-	0x00000006,0x00000292,0x00000560,0x00000001,0x00050051,0x00000006,0x00000294,0x00000560,
-	0x00000002,0x00050051,0x00000006,0x00000296,0x0000054e,0x00000003,0x00070050,0x00000018,
-	0x00000539,0x00000290,0x00000292,0x00000294,0x00000296,0x000200f9,0x000002b6,0x000200f8,
-	0x00000298,0x00050041,0x0000007e,0x00000299,0x0000007b,0x00000098,0x0004003d,0x00000006,
-	0x0000029a,0x00000299,0x000500b4,0x00000037,0x0000029b,0x0000029a,0x0000013a,0x000300f7,
-	0x000002b5,0x00000000,0x000400fa,0x0000029b,0x0000029c,0x000002b2,0x000200f8,0x0000029c,
-	0x0008004f,0x0000000f,0x0000029e,0x0000054e,0x0000054e,0x00000000,0x00000001,0x00000002,
-	0x00050090,0x0000000f,0x0000029f,0x0000029e,0x000000e1,0x00050051,0x00000006,0x000002a1,
-	0x0000029f,0x00000000,0x00060052,0x00000018,0x00000509,0x000002a1,0x00000576,0x00000000,
-	0x00050051,0x00000006,0x000002a3,0x0000029f,0x00000001,0x00060052,0x00000018,0x0000050b,
-	0x000002a3,0x00000509,0x00000001,0x00050051,0x00000006,0x000002a5,0x0000029f,0x00000002,
-	0x00060052,0x00000018,0x0000050d,0x000002a5,0x0000050b,0x00000002,0x0008004f,0x0000000f,
-	0x000002a7,0x0000050d,0x0000050d,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
-	0x00000454,0x0000007b,0x00000177,0x0004003d,0x00000006,0x00000455,0x00000454,0x0005008e,
-	0x0000000f,0x00000456,0x000002a7,0x00000455,0x00050041,0x0000007e,0x00000457,0x0000007b,
-	0x00000187,0x0004003d,0x00000006,0x00000458,0x00000457,0x000500b7,0x00000037,0x00000459,
-	0x00000458,0x00000064,0x000400a8,0x00000037,0x0000045a,0x00000459,0x000300f7,0x0000046c,
-	0x00000000,0x000400fa,0x0000045a,0x0000045b,0x0000046c,0x000200f8,0x0000045b,0x00050051,
-	0x00000006,0x0000045d,0x00000456,0x00000000,0x000500bc,0x00000037,0x00000471,0x0000045d,
-	0x0000004b,0x000300f7,0x0000047b,0x00000000,0x000400fa,0x00000471,0x00000472,0x00000475,
-	0x000200f8,0x00000472,0x00050085,0x00000006,0x00000474,0x0000045d,0x0000003c,0x000200f9,
-	0x0000047b,0x000200f8,0x00000475,0x0006000c,0x00000006,0x00000477,0x00000001,0x00000004,
-	0x0000045d,0x0007000c,0x00000006,0x00000478,0x00000001,0x0000001a,0x00000477,0x00000054,
-	0x0008000c,0x00000006,0x0000047a,0x00000001,0x00000032,0x00000478,0x00000043,0x0000053e,
-	0x000200f9,0x0000047b,0x000200f8,0x0000047b,0x000700f5,0x00000006,0x0000054f,0x00000474,
-	0x00000472,0x0000047a,0x00000475,0x00050051,0x00000006,0x00000461,0x00000456,0x00000001,
-	0x000500bc,0x00000037,0x00000480,0x00000461,0x0000004b,0x000300f7,0x0000048a,0x00000000,
-	0x000400fa,0x00000480,0x00000481,0x00000484,0x000200f8,0x00000481,0x00050085,0x00000006,
-	0x00000483,0x00000461,0x0000003c,0x000200f9,0x0000048a,0x000200f8,0x00000484,0x0006000c,
-	0x00000006,0x00000486,0x00000001,0x00000004,0x00000461,0x0007000c,0x00000006,0x00000487,
-	0x00000001,0x0000001a,0x00000486,0x00000054,0x0008000c,0x00000006,0x00000489,0x00000001,
-	0x00000032,0x00000487,0x00000043,0x0000053e,0x000200f9,0x0000048a,0x000200f8,0x0000048a,
-	0x000700f5,0x00000006,0x00000551,0x00000483,0x00000481,0x00000489,0x00000484,0x00050051,
-	0x00000006,0x00000465,0x00000456,0x00000002,0x000500bc,0x00000037,0x0000048f,0x00000465,
-	0x0000004b,0x000300f7,0x00000499,0x00000000,0x000400fa,0x0000048f,0x00000490,0x00000493,
-	0x000200f8,0x00000490,0x00050085,0x00000006,0x00000492,0x00000465,0x0000003c,0x000200f9,
-	0x00000499,0x000200f8,0x00000493,0x0006000c,0x00000006,0x00000495,0x00000001,0x00000004,
-	0x00000465,0x0007000c,0x00000006,0x00000496,0x00000001,0x0000001a,0x00000495,0x00000054,
-	0x0008000c,0x00000006,0x00000498,0x00000001,0x00000032,0x00000496,0x00000043,0x0000053e,
-	0x000200f9,0x00000499,0x000200f8,0x00000499,0x000700f5,0x00000006,0x00000553,0x00000492,
-	0x00000490,0x00000498,0x00000493,0x00060050,0x0000000f,0x00000573,0x0000054f,0x00000551,
-	0x00000553,0x0008000c,0x0000000f,0x0000046b,0x00000001,0x0000002b,0x00000573,0x00000065,
-	0x00000534,0x000200f9,0x0000046c,0x000200f8,0x0000046c,0x000700f5,0x0000000f,0x00000555,
-	0x00000456,0x0000029c,0x0000046b,0x00000499,0x00050051,0x00000006,0x000002aa,0x00000555,
-	0x00000000,0x00050051,0x00000006,0x000002ac,0x00000555,0x00000001,0x00050051,0x00000006,
-	0x000002ae,0x00000555,0x00000002,0x00050051,0x00000006,0x000002b0,0x0000054e,0x00000003,
-	0x00070050,0x00000018,0x00000535,0x000002aa,0x000002ac,0x000002ae,0x000002b0,0x000200f9,
-	0x000002b5,0x000200f8,0x000002b2,0x0008004f,0x0000000f,0x0000049f,0x0000054e,0x0000054e,
-	0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x000004a0,0x0000007b,0x00000177,
-	0x0004003d,0x00000006,0x000004a1,0x000004a0,0x0005008e,0x0000000f,0x000004a2,0x0000049f,
-	0x000004a1,0x00050051,0x00000006,0x000004a4,0x000004a2,0x00000000,0x00050051,0x00000006,
-	0x000004a6,0x000004a2,0x00000001,0x00050051,0x00000006,0x000004a8,0x000004a2,0x00000002,
-	0x00050051,0x00000006,0x000004aa,0x0000054e,0x00000003,0x00070050,0x00000018,0x00000530,
-	0x000004a4,0x000004a6,0x000004a8,0x000004aa,0x000200f9,0x000002b5,0x000200f8,0x000002b5,
-	0x000700f5,0x00000018,0x00000572,0x00000535,0x0000046c,0x00000530,0x000002b2,0x000200f9,
-	0x000002b6,0x000200f8,0x000002b6,0x000700f5,0x00000018,0x00000571,0x00000539,0x0000041e,
-	0x00000572,0x000002b5,0x000200f9,0x000002b7,0x000200f8,0x000002b7,0x000700f5,0x00000018,
-	0x00000570,0x0000053c,0x000003cc,0x00000571,0x000002b6,0x00050085,0x00000018,0x000002bb,
-	0x00000570,0x00000242,0x0003003e,0x00000245,0x000002bb,0x000100fd,0x00010038
+	0x00000144,0x437f0000,0x0004003b,0x0000011e,0x00000146,0x00000000,0x0004002b,0x0000007c,
+	0x0000015a,0x00000003,0x0004002b,0x0000007c,0x0000016a,0x00000000,0x00040020,0x0000021c,
+	0x00000001,0x00000018,0x00040020,0x00000220,0x00000001,0x00000019,0x0004003b,0x00000220,
+	0x00000221,0x00000001,0x0004003b,0x0000021c,0x00000224,0x00000001,0x00040020,0x00000227,
+	0x00000003,0x00000018,0x0004003b,0x00000227,0x00000228,0x00000003,0x0004002b,0x00000006,
+	0x000004c5,0x3b800000,0x0005002c,0x00000019,0x000004c7,0x000000fd,0x000000fd,0x0006002c,
+	0x0000000f,0x000004c8,0x00000061,0x00000061,0x00000061,0x0006002c,0x0000000f,0x000004c9,
+	0x00000068,0x00000068,0x00000068,0x0006002c,0x0000000f,0x000004ce,0x00000088,0x00000088,
+	0x00000088,0x0004002b,0x00000006,0x000004d4,0x3f72a76f,0x0004002b,0x00000006,0x000004d5,
+	0x3d9e8391,0x0007002c,0x00000018,0x000004d7,0x00000088,0x00000064,0x00000064,0x00000088,
+	0x0004002b,0x00000006,0x000004d8,0xbd6147ae,0x00030001,0x00000018,0x0000050f,0x00050036,
+	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x00000019,
+	0x00000222,0x00000221,0x0004003d,0x00000018,0x00000225,0x00000224,0x00050041,0x0000007e,
+	0x000002a5,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002a6,0x000002a5,0x000500b4,
+	0x00000037,0x000002a7,0x000002a6,0x00000088,0x000300f7,0x000002d5,0x00000000,0x000400fa,
+	0x000002a7,0x000002a8,0x000002ad,0x000200f8,0x000002a8,0x0004003d,0x0000011d,0x000002a9,
+	0x0000011f,0x00050057,0x00000018,0x000002ac,0x000002a9,0x00000222,0x000200f9,0x000002d5,
+	0x000200f8,0x000002ad,0x00050041,0x0000007e,0x000002ae,0x0000007b,0x000000e8,0x0004003d,
+	0x00000006,0x000002af,0x000002ae,0x000500b4,0x00000037,0x000002b0,0x000002af,0x00000094,
+	0x000300f7,0x000002d4,0x00000000,0x000400fa,0x000002b0,0x000002b1,0x000002bd,0x000200f8,
+	0x000002b1,0x000400d1,0x00000019,0x000002df,0x00000222,0x00050041,0x000000ed,0x000002e0,
+	0x0000007b,0x000000ec,0x0004003d,0x00000018,0x000002e1,0x000002e0,0x0007004f,0x00000019,
+	0x000002e2,0x000002e1,0x000002e1,0x00000002,0x00000003,0x00050085,0x00000019,0x000002e3,
+	0x000002df,0x000002e2,0x0008000c,0x00000019,0x000002e4,0x00000001,0x0000002b,0x000002e3,
+	0x000000f3,0x000000f4,0x00050041,0x000000ed,0x000002e7,0x0000007b,0x000000ec,0x0004003d,
+	0x00000018,0x000002e8,0x000002e7,0x0007004f,0x00000019,0x000002e9,0x000002e8,0x000002e8,
+	0x00000002,0x00000003,0x0005008e,0x00000019,0x000002ec,0x000002e4,0x000000fd,0x0004007f,
+	0x00000019,0x000004c6,0x000002ec,0x0008000c,0x00000019,0x000002ed,0x00000001,0x00000032,
+	0x00000222,0x000002e9,0x000004c6,0x00050083,0x00000019,0x000002f0,0x000000f4,0x000002e4,
+	0x0006000c,0x00000019,0x000002f2,0x00000001,0x0000000a,0x000002ed,0x0008000c,0x00000019,
+	0x000002f3,0x00000001,0x00000031,0x000002f0,0x000000f4,0x000002f2,0x0006000c,0x00000019,
+	0x000002f5,0x00000001,0x00000008,0x000002ed,0x00050081,0x00000019,0x000002f7,0x000002f5,
+	0x000004c7,0x00050081,0x00000019,0x000002f9,0x000002f7,0x000002f3,0x00050041,0x000000ed,
+	0x000002fa,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x000002fb,0x000002fa,0x0007004f,
+	0x00000019,0x000002fc,0x000002fb,0x000002fb,0x00000000,0x00000001,0x00050085,0x00000019,
+	0x000002fd,0x000002f9,0x000002fc,0x0004003d,0x0000011d,0x000002b4,0x0000011f,0x000400cf,
+	0x00000019,0x000002b8,0x00000222,0x000400d0,0x00000019,0x000002bb,0x00000222,0x00080058,
+	0x00000018,0x000002bc,0x000002b4,0x000002fd,0x00000004,0x000002b8,0x000002bb,0x000200f9,
+	0x000002d4,0x000200f8,0x000002bd,0x00050041,0x0000007e,0x000002be,0x0000007b,0x000000e8,
+	0x0004003d,0x00000006,0x000002bf,0x000002be,0x000500b4,0x00000037,0x000002c0,0x000002bf,
+	0x0000013a,0x000300f7,0x000002d3,0x00000000,0x000400fa,0x000002c0,0x000002c1,0x000002ce,
+	0x000200f8,0x000002c1,0x0004003d,0x0000011d,0x000002c2,0x0000011f,0x00050057,0x00000018,
+	0x000002c5,0x000002c2,0x00000222,0x00050051,0x00000006,0x000002c6,0x000002c5,0x00000000,
+	0x0004003d,0x0000011d,0x000002c8,0x00000146,0x0008000c,0x00000006,0x000002ca,0x00000001,
+	0x00000032,0x000002c6,0x00000144,0x000000fd,0x00050085,0x00000006,0x000002cb,0x000002ca,
+	0x000004c5,0x00050050,0x00000019,0x000002cc,0x000002cb,0x000000fd,0x00050057,0x00000018,
+	0x000002cd,0x000002c8,0x000002cc,0x000200f9,0x000002d3,0x000200f8,0x000002ce,0x000200f9,
+	0x000002d3,0x000200f8,0x000002d3,0x000700f5,0x00000018,0x000004db,0x000002cd,0x000002c1,
+	0x000004d7,0x000002ce,0x000200f9,0x000002d4,0x000200f8,0x000002d4,0x000700f5,0x00000018,
+	0x000004da,0x000002bc,0x000002b1,0x000004db,0x000002d3,0x000200f9,0x000002d5,0x000200f8,
+	0x000002d5,0x000700f5,0x00000018,0x000004d9,0x000002ac,0x000002a8,0x000004da,0x000002d4,
+	0x00050041,0x0000007e,0x0000023e,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000023f,
+	0x0000023e,0x000500b4,0x00000037,0x00000240,0x0000023f,0x0000013a,0x000300f7,0x0000024b,
+	0x00000000,0x000400fa,0x00000240,0x00000241,0x0000024b,0x000200f8,0x00000241,0x0008004f,
+	0x0000000f,0x00000243,0x000004d9,0x000004d9,0x00000000,0x00000001,0x00000002,0x0006000c,
+	0x0000000f,0x00000304,0x00000001,0x00000004,0x00000243,0x0007000c,0x0000000f,0x00000305,
+	0x00000001,0x0000001a,0x00000304,0x0000005f,0x00050083,0x0000000f,0x00000307,0x00000305,
+	0x000004c8,0x0007000c,0x0000000f,0x00000308,0x00000001,0x00000028,0x00000307,0x00000065,
+	0x0006000c,0x0000000f,0x0000030a,0x00000001,0x00000004,0x00000243,0x0007000c,0x0000000f,
+	0x0000030b,0x00000001,0x0000001a,0x0000030a,0x0000005f,0x0005008e,0x0000000f,0x0000030c,
+	0x0000030b,0x00000069,0x00050083,0x0000000f,0x0000030e,0x000004c9,0x0000030c,0x00050088,
+	0x0000000f,0x00000311,0x00000308,0x0000030e,0x0006000c,0x0000000f,0x00000312,0x00000001,
+	0x00000004,0x00000311,0x0007000c,0x0000000f,0x00000313,0x00000001,0x0000001a,0x00000312,
+	0x00000076,0x0005008e,0x0000000f,0x00000314,0x00000313,0x00000070,0x00050041,0x0000007e,
+	0x00000315,0x0000007b,0x0000007d,0x0004003d,0x00000006,0x00000316,0x00000315,0x00060050,
+	0x0000000f,0x00000317,0x00000316,0x00000316,0x00000316,0x00050088,0x0000000f,0x00000318,
+	0x00000314,0x00000317,0x00050051,0x00000006,0x00000246,0x00000318,0x00000000,0x00060052,
+	0x00000018,0x00000471,0x00000246,0x000004d9,0x00000000,0x00050051,0x00000006,0x00000248,
+	0x00000318,0x00000001,0x00060052,0x00000018,0x00000473,0x00000248,0x00000471,0x00000001,
+	0x00050051,0x00000006,0x0000024a,0x00000318,0x00000002,0x00060052,0x00000018,0x00000475,
+	0x0000024a,0x00000473,0x00000002,0x000200f9,0x0000024b,0x000200f8,0x0000024b,0x000700f5,
+	0x00000018,0x000004dc,0x000004d9,0x000002d5,0x00000475,0x00000241,0x00050041,0x0000007e,
+	0x0000024c,0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000024d,0x0000024c,0x000500b7,
+	0x00000037,0x0000024e,0x0000024d,0x00000064,0x000300f7,0x00000259,0x00000000,0x000400fa,
+	0x0000024e,0x0000024f,0x00000259,0x000200f8,0x0000024f,0x0008004f,0x0000000f,0x00000251,
+	0x000004dc,0x000004dc,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x0000031d,
+	0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000031e,0x0000031d,0x000500b4,0x00000037,
+	0x0000031f,0x0000031e,0x00000088,0x000300f7,0x00000353,0x00000000,0x000400fa,0x0000031f,
+	0x00000320,0x00000325,0x000200f8,0x00000320,0x00050041,0x0000007e,0x00000321,0x0000007b,
+	0x0000008c,0x0004003d,0x00000006,0x00000322,0x00000321,0x0005008e,0x0000000f,0x00000324,
+	0x00000251,0x00000322,0x000200f9,0x00000353,0x000200f8,0x00000325,0x00050041,0x0000007e,
+	0x00000326,0x0000007b,0x00000085,0x0004003d,0x00000006,0x00000327,0x00000326,0x000500b4,
+	0x00000037,0x00000328,0x00000327,0x00000094,0x000300f7,0x00000352,0x00000000,0x000400fa,
+	0x00000328,0x00000329,0x00000352,0x000200f8,0x00000329,0x00050041,0x0000007e,0x0000032a,
+	0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000032b,0x0000032a,0x000500b4,0x00000037,
+	0x0000032c,0x0000032b,0x00000094,0x000300f7,0x00000330,0x00000000,0x000400fa,0x0000032c,
+	0x0000032d,0x00000330,0x000200f8,0x0000032d,0x00050090,0x0000000f,0x0000032f,0x00000251,
+	0x000000ac,0x000200f9,0x00000330,0x000200f8,0x00000330,0x000700f5,0x0000000f,0x000004dd,
+	0x00000251,0x00000329,0x0000032f,0x0000032d,0x00050051,0x00000006,0x00000332,0x000004dd,
+	0x00000000,0x00050051,0x00000006,0x00000334,0x000004dd,0x00000001,0x00050051,0x00000006,
+	0x00000336,0x000004dd,0x00000002,0x0007000c,0x00000006,0x00000337,0x00000001,0x00000028,
+	0x00000334,0x00000336,0x0007000c,0x00000006,0x00000338,0x00000001,0x00000028,0x00000332,
+	0x00000337,0x000500ba,0x00000037,0x0000033a,0x00000338,0x00000064,0x000300f7,0x0000034a,
+	0x00000000,0x000400fa,0x0000033a,0x0000033b,0x0000034a,0x000200f8,0x0000033b,0x00050041,
+	0x0000007e,0x0000033c,0x0000007b,0x0000008c,0x0004003d,0x00000006,0x0000033d,0x0000033c,
+	0x0008000c,0x00000006,0x00000340,0x00000001,0x00000032,0x0000033d,0x00000338,0x00000088,
+	0x00050041,0x0000007e,0x00000341,0x0000007b,0x000000c5,0x0004003d,0x00000006,0x00000342,
+	0x00000341,0x0008000c,0x00000006,0x00000345,0x00000001,0x00000032,0x00000342,0x00000338,
+	0x00000088,0x00050088,0x00000006,0x00000346,0x00000340,0x00000345,0x0005008e,0x0000000f,
+	0x00000349,0x000004dd,0x00000346,0x000200f9,0x0000034a,0x000200f8,0x0000034a,0x000700f5,
+	0x0000000f,0x000004de,0x000004dd,0x00000330,0x00000349,0x0000033b,0x00050041,0x0000007e,
+	0x0000034b,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000034c,0x0000034b,0x000500b4,
+	0x00000037,0x0000034d,0x0000034c,0x00000094,0x000300f7,0x00000351,0x00000000,0x000400fa,
+	0x0000034d,0x0000034e,0x00000351,0x000200f8,0x0000034e,0x00050090,0x0000000f,0x00000350,
+	0x000004de,0x000000e1,0x000200f9,0x00000351,0x000200f8,0x00000351,0x000700f5,0x0000000f,
+	0x000004e1,0x000004de,0x0000034a,0x00000350,0x0000034e,0x000200f9,0x00000352,0x000200f8,
+	0x00000352,0x000700f5,0x0000000f,0x000004e0,0x00000251,0x00000325,0x000004e1,0x00000351,
+	0x000200f9,0x00000353,0x000200f8,0x00000353,0x000700f5,0x0000000f,0x000004df,0x00000324,
+	0x00000320,0x000004e0,0x00000352,0x00050051,0x00000006,0x00000254,0x000004df,0x00000000,
+	0x00060052,0x00000018,0x0000047a,0x00000254,0x000004dc,0x00000000,0x00050051,0x00000006,
+	0x00000256,0x000004df,0x00000001,0x00060052,0x00000018,0x0000047c,0x00000256,0x0000047a,
+	0x00000001,0x00050051,0x00000006,0x00000258,0x000004df,0x00000002,0x00060052,0x00000018,
+	0x0000047e,0x00000258,0x0000047c,0x00000002,0x000200f9,0x00000259,0x000200f8,0x00000259,
+	0x000700f5,0x00000018,0x000004e7,0x000004dc,0x0000024b,0x0000047e,0x00000353,0x00050041,
+	0x0000007e,0x0000025a,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000025b,0x0000025a,
+	0x000500b4,0x00000037,0x0000025c,0x0000025b,0x00000088,0x000300f7,0x0000029a,0x00000000,
+	0x000400fa,0x0000025c,0x0000025d,0x0000026a,0x000200f8,0x0000025d,0x0008004f,0x0000000f,
+	0x0000025f,0x000004e7,0x000004e7,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
+	0x0000035b,0x0000007b,0x0000016a,0x0004003d,0x00000006,0x0000035c,0x0000035b,0x000500b7,
+	0x00000037,0x0000035d,0x0000035c,0x00000064,0x000300f7,0x0000036b,0x00000000,0x000400fa,
+	0x0000035d,0x0000035e,0x0000036b,0x000200f8,0x0000035e,0x00050051,0x00000006,0x00000360,
+	0x000004e7,0x00000000,0x000500bc,0x00000037,0x00000374,0x00000360,0x00000036,0x000300f7,
+	0x0000037e,0x00000000,0x000400fa,0x00000374,0x00000375,0x00000378,0x000200f8,0x00000375,
+	0x00050085,0x00000006,0x00000377,0x00000360,0x000004d5,0x000200f9,0x0000037e,0x000200f8,
+	0x00000378,0x00050081,0x00000006,0x0000037a,0x00000360,0x00000040,0x0006000c,0x00000006,
+	0x0000037b,0x00000001,0x00000004,0x0000037a,0x00050085,0x00000006,0x0000037c,0x0000037b,
+	0x000004d4,0x0007000c,0x00000006,0x0000037d,0x00000001,0x0000001a,0x0000037c,0x00000045,
+	0x000200f9,0x0000037e,0x000200f8,0x0000037e,0x000700f5,0x00000006,0x000004fe,0x00000377,
+	0x00000375,0x0000037d,0x00000378,0x00050051,0x00000006,0x00000364,0x000004e7,0x00000001,
+	0x000500bc,0x00000037,0x00000383,0x00000364,0x00000036,0x000300f7,0x0000038d,0x00000000,
+	0x000400fa,0x00000383,0x00000384,0x00000387,0x000200f8,0x00000384,0x00050085,0x00000006,
+	0x00000386,0x00000364,0x000004d5,0x000200f9,0x0000038d,0x000200f8,0x00000387,0x00050081,
+	0x00000006,0x00000389,0x00000364,0x00000040,0x0006000c,0x00000006,0x0000038a,0x00000001,
+	0x00000004,0x00000389,0x00050085,0x00000006,0x0000038b,0x0000038a,0x000004d4,0x0007000c,
+	0x00000006,0x0000038c,0x00000001,0x0000001a,0x0000038b,0x00000045,0x000200f9,0x0000038d,
+	0x000200f8,0x0000038d,0x000700f5,0x00000006,0x00000500,0x00000386,0x00000384,0x0000038c,
+	0x00000387,0x00050051,0x00000006,0x00000368,0x000004e7,0x00000002,0x000500bc,0x00000037,
+	0x00000392,0x00000368,0x00000036,0x000300f7,0x0000039c,0x00000000,0x000400fa,0x00000392,
+	0x00000393,0x00000396,0x000200f8,0x00000393,0x00050085,0x00000006,0x00000395,0x00000368,
+	0x000004d5,0x000200f9,0x0000039c,0x000200f8,0x00000396,0x00050081,0x00000006,0x00000398,
+	0x00000368,0x00000040,0x0006000c,0x00000006,0x00000399,0x00000001,0x00000004,0x00000398,
+	0x00050085,0x00000006,0x0000039a,0x00000399,0x000004d4,0x0007000c,0x00000006,0x0000039b,
+	0x00000001,0x0000001a,0x0000039a,0x00000045,0x000200f9,0x0000039c,0x000200f8,0x0000039c,
+	0x000700f5,0x00000006,0x00000502,0x00000395,0x00000393,0x0000039b,0x00000396,0x00060050,
+	0x0000000f,0x0000050e,0x000004fe,0x00000500,0x00000502,0x000200f9,0x0000036b,0x000200f8,
+	0x0000036b,0x000700f5,0x0000000f,0x00000504,0x0000025f,0x0000025d,0x0000050e,0x0000039c,
+	0x00050041,0x0000007e,0x0000036d,0x0000007b,0x0000015a,0x0004003d,0x00000006,0x0000036e,
+	0x0000036d,0x0005008e,0x0000000f,0x0000036f,0x00000504,0x0000036e,0x00050051,0x00000006,
+	0x00000262,0x0000036f,0x00000000,0x00050051,0x00000006,0x00000264,0x0000036f,0x00000001,
+	0x00050051,0x00000006,0x00000266,0x0000036f,0x00000002,0x00050051,0x00000006,0x00000268,
+	0x000004e7,0x00000003,0x00070050,0x00000018,0x000004d6,0x00000262,0x00000264,0x00000266,
+	0x00000268,0x000200f9,0x0000029a,0x000200f8,0x0000026a,0x00050041,0x0000007e,0x0000026b,
+	0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000026c,0x0000026b,0x000500b4,0x00000037,
+	0x0000026d,0x0000026c,0x00000094,0x000300f7,0x00000299,0x00000000,0x000400fa,0x0000026d,
+	0x0000026e,0x0000027b,0x000200f8,0x0000026e,0x0008004f,0x0000000f,0x00000270,0x000004e7,
+	0x000004e7,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x000003a5,0x0000007b,
+	0x0000015a,0x0004003d,0x00000006,0x000003a6,0x000003a5,0x0005008e,0x0000000f,0x000003a7,
+	0x00000270,0x000003a6,0x00050041,0x0000007e,0x000003a8,0x0000007b,0x0000016a,0x0004003d,
+	0x00000006,0x000003a9,0x000003a8,0x000500b7,0x00000037,0x000003aa,0x000003a9,0x00000064,
+	0x000400a8,0x00000037,0x000003ab,0x000003aa,0x000300f7,0x000003bd,0x00000000,0x000400fa,
+	0x000003ab,0x000003ac,0x000003bd,0x000200f8,0x000003ac,0x00050051,0x00000006,0x000003ae,
+	0x000003a7,0x00000000,0x000500bc,0x00000037,0x000003c2,0x000003ae,0x0000004b,0x000300f7,
+	0x000003cc,0x00000000,0x000400fa,0x000003c2,0x000003c3,0x000003c6,0x000200f8,0x000003c3,
+	0x00050085,0x00000006,0x000003c5,0x000003ae,0x0000003c,0x000200f9,0x000003cc,0x000200f8,
+	0x000003c6,0x0006000c,0x00000006,0x000003c8,0x00000001,0x00000004,0x000003ae,0x0007000c,
+	0x00000006,0x000003c9,0x00000001,0x0000001a,0x000003c8,0x00000054,0x0008000c,0x00000006,
+	0x000003cb,0x00000001,0x00000032,0x000003c9,0x00000043,0x000004d8,0x000200f9,0x000003cc,
+	0x000200f8,0x000003cc,0x000700f5,0x00000006,0x000004f3,0x000003c5,0x000003c3,0x000003cb,
+	0x000003c6,0x00050051,0x00000006,0x000003b2,0x000003a7,0x00000001,0x000500bc,0x00000037,
+	0x000003d1,0x000003b2,0x0000004b,0x000300f7,0x000003db,0x00000000,0x000400fa,0x000003d1,
+	0x000003d2,0x000003d5,0x000200f8,0x000003d2,0x00050085,0x00000006,0x000003d4,0x000003b2,
+	0x0000003c,0x000200f9,0x000003db,0x000200f8,0x000003d5,0x0006000c,0x00000006,0x000003d7,
+	0x00000001,0x00000004,0x000003b2,0x0007000c,0x00000006,0x000003d8,0x00000001,0x0000001a,
+	0x000003d7,0x00000054,0x0008000c,0x00000006,0x000003da,0x00000001,0x00000032,0x000003d8,
+	0x00000043,0x000004d8,0x000200f9,0x000003db,0x000200f8,0x000003db,0x000700f5,0x00000006,
+	0x000004f5,0x000003d4,0x000003d2,0x000003da,0x000003d5,0x00050051,0x00000006,0x000003b6,
+	0x000003a7,0x00000002,0x000500bc,0x00000037,0x000003e0,0x000003b6,0x0000004b,0x000300f7,
+	0x000003ea,0x00000000,0x000400fa,0x000003e0,0x000003e1,0x000003e4,0x000200f8,0x000003e1,
+	0x00050085,0x00000006,0x000003e3,0x000003b6,0x0000003c,0x000200f9,0x000003ea,0x000200f8,
+	0x000003e4,0x0006000c,0x00000006,0x000003e6,0x00000001,0x00000004,0x000003b6,0x0007000c,
+	0x00000006,0x000003e7,0x00000001,0x0000001a,0x000003e6,0x00000054,0x0008000c,0x00000006,
+	0x000003e9,0x00000001,0x00000032,0x000003e7,0x00000043,0x000004d8,0x000200f9,0x000003ea,
+	0x000200f8,0x000003ea,0x000700f5,0x00000006,0x000004f7,0x000003e3,0x000003e1,0x000003e9,
+	0x000003e4,0x00060050,0x0000000f,0x0000050d,0x000004f3,0x000004f5,0x000004f7,0x0008000c,
+	0x0000000f,0x000003bc,0x00000001,0x0000002b,0x0000050d,0x00000065,0x000004ce,0x000200f9,
+	0x000003bd,0x000200f8,0x000003bd,0x000700f5,0x0000000f,0x000004f9,0x000003a7,0x0000026e,
+	0x000003bc,0x000003ea,0x00050051,0x00000006,0x00000273,0x000004f9,0x00000000,0x00050051,
+	0x00000006,0x00000275,0x000004f9,0x00000001,0x00050051,0x00000006,0x00000277,0x000004f9,
+	0x00000002,0x00050051,0x00000006,0x00000279,0x000004e7,0x00000003,0x00070050,0x00000018,
+	0x000004d3,0x00000273,0x00000275,0x00000277,0x00000279,0x000200f9,0x00000299,0x000200f8,
+	0x0000027b,0x00050041,0x0000007e,0x0000027c,0x0000007b,0x00000098,0x0004003d,0x00000006,
+	0x0000027d,0x0000027c,0x000500b4,0x00000037,0x0000027e,0x0000027d,0x0000013a,0x000300f7,
+	0x00000298,0x00000000,0x000400fa,0x0000027e,0x0000027f,0x00000295,0x000200f8,0x0000027f,
+	0x0008004f,0x0000000f,0x00000281,0x000004e7,0x000004e7,0x00000000,0x00000001,0x00000002,
+	0x00050090,0x0000000f,0x00000282,0x00000281,0x000000e1,0x00050051,0x00000006,0x00000284,
+	0x00000282,0x00000000,0x00060052,0x00000018,0x000004a4,0x00000284,0x0000050f,0x00000000,
+	0x00050051,0x00000006,0x00000286,0x00000282,0x00000001,0x00060052,0x00000018,0x000004a6,
+	0x00000286,0x000004a4,0x00000001,0x00050051,0x00000006,0x00000288,0x00000282,0x00000002,
+	0x00060052,0x00000018,0x000004a8,0x00000288,0x000004a6,0x00000002,0x0008004f,0x0000000f,
+	0x0000028a,0x000004a8,0x000004a8,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
+	0x000003f3,0x0000007b,0x0000015a,0x0004003d,0x00000006,0x000003f4,0x000003f3,0x0005008e,
+	0x0000000f,0x000003f5,0x0000028a,0x000003f4,0x00050041,0x0000007e,0x000003f6,0x0000007b,
+	0x0000016a,0x0004003d,0x00000006,0x000003f7,0x000003f6,0x000500b7,0x00000037,0x000003f8,
+	0x000003f7,0x00000064,0x000400a8,0x00000037,0x000003f9,0x000003f8,0x000300f7,0x0000040b,
+	0x00000000,0x000400fa,0x000003f9,0x000003fa,0x0000040b,0x000200f8,0x000003fa,0x00050051,
+	0x00000006,0x000003fc,0x000003f5,0x00000000,0x000500bc,0x00000037,0x00000410,0x000003fc,
+	0x0000004b,0x000300f7,0x0000041a,0x00000000,0x000400fa,0x00000410,0x00000411,0x00000414,
+	0x000200f8,0x00000411,0x00050085,0x00000006,0x00000413,0x000003fc,0x0000003c,0x000200f9,
+	0x0000041a,0x000200f8,0x00000414,0x0006000c,0x00000006,0x00000416,0x00000001,0x00000004,
+	0x000003fc,0x0007000c,0x00000006,0x00000417,0x00000001,0x0000001a,0x00000416,0x00000054,
+	0x0008000c,0x00000006,0x00000419,0x00000001,0x00000032,0x00000417,0x00000043,0x000004d8,
+	0x000200f9,0x0000041a,0x000200f8,0x0000041a,0x000700f5,0x00000006,0x000004e8,0x00000413,
+	0x00000411,0x00000419,0x00000414,0x00050051,0x00000006,0x00000400,0x000003f5,0x00000001,
+	0x000500bc,0x00000037,0x0000041f,0x00000400,0x0000004b,0x000300f7,0x00000429,0x00000000,
+	0x000400fa,0x0000041f,0x00000420,0x00000423,0x000200f8,0x00000420,0x00050085,0x00000006,
+	0x00000422,0x00000400,0x0000003c,0x000200f9,0x00000429,0x000200f8,0x00000423,0x0006000c,
+	0x00000006,0x00000425,0x00000001,0x00000004,0x00000400,0x0007000c,0x00000006,0x00000426,
+	0x00000001,0x0000001a,0x00000425,0x00000054,0x0008000c,0x00000006,0x00000428,0x00000001,
+	0x00000032,0x00000426,0x00000043,0x000004d8,0x000200f9,0x00000429,0x000200f8,0x00000429,
+	0x000700f5,0x00000006,0x000004ea,0x00000422,0x00000420,0x00000428,0x00000423,0x00050051,
+	0x00000006,0x00000404,0x000003f5,0x00000002,0x000500bc,0x00000037,0x0000042e,0x00000404,
+	0x0000004b,0x000300f7,0x00000438,0x00000000,0x000400fa,0x0000042e,0x0000042f,0x00000432,
+	0x000200f8,0x0000042f,0x00050085,0x00000006,0x00000431,0x00000404,0x0000003c,0x000200f9,
+	0x00000438,0x000200f8,0x00000432,0x0006000c,0x00000006,0x00000434,0x00000001,0x00000004,
+	0x00000404,0x0007000c,0x00000006,0x00000435,0x00000001,0x0000001a,0x00000434,0x00000054,
+	0x0008000c,0x00000006,0x00000437,0x00000001,0x00000032,0x00000435,0x00000043,0x000004d8,
+	0x000200f9,0x00000438,0x000200f8,0x00000438,0x000700f5,0x00000006,0x000004ec,0x00000431,
+	0x0000042f,0x00000437,0x00000432,0x00060050,0x0000000f,0x0000050c,0x000004e8,0x000004ea,
+	0x000004ec,0x0008000c,0x0000000f,0x0000040a,0x00000001,0x0000002b,0x0000050c,0x00000065,
+	0x000004ce,0x000200f9,0x0000040b,0x000200f8,0x0000040b,0x000700f5,0x0000000f,0x000004ee,
+	0x000003f5,0x0000027f,0x0000040a,0x00000438,0x00050051,0x00000006,0x0000028d,0x000004ee,
+	0x00000000,0x00050051,0x00000006,0x0000028f,0x000004ee,0x00000001,0x00050051,0x00000006,
+	0x00000291,0x000004ee,0x00000002,0x00050051,0x00000006,0x00000293,0x000004e7,0x00000003,
+	0x00070050,0x00000018,0x000004cf,0x0000028d,0x0000028f,0x00000291,0x00000293,0x000200f9,
+	0x00000298,0x000200f8,0x00000295,0x0008004f,0x0000000f,0x0000043e,0x000004e7,0x000004e7,
+	0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x0000043f,0x0000007b,0x0000015a,
+	0x0004003d,0x00000006,0x00000440,0x0000043f,0x0005008e,0x0000000f,0x00000441,0x0000043e,
+	0x00000440,0x00050051,0x00000006,0x00000443,0x00000441,0x00000000,0x00050051,0x00000006,
+	0x00000445,0x00000441,0x00000001,0x00050051,0x00000006,0x00000447,0x00000441,0x00000002,
+	0x00050051,0x00000006,0x00000449,0x000004e7,0x00000003,0x00070050,0x00000018,0x000004ca,
+	0x00000443,0x00000445,0x00000447,0x00000449,0x000200f9,0x00000298,0x000200f8,0x00000298,
+	0x000700f5,0x00000018,0x0000050b,0x000004cf,0x0000040b,0x000004ca,0x00000295,0x000200f9,
+	0x00000299,0x000200f8,0x00000299,0x000700f5,0x00000018,0x0000050a,0x000004d3,0x000003bd,
+	0x0000050b,0x00000298,0x000200f9,0x0000029a,0x000200f8,0x0000029a,0x000700f5,0x00000018,
+	0x00000509,0x000004d6,0x0000036b,0x0000050a,0x00000299,0x00050085,0x00000018,0x0000029e,
+	0x00000509,0x00000225,0x0003003e,0x00000228,0x0000029e,0x000100fd,0x00010038
 };

+ 9 - 9
src/render/vulkan/VULKAN_PixelShader_Colors.h

@@ -1,7 +1,7 @@
 	// 1113.1.1
 	 #pragma once
 const uint32_t VULKAN_PixelShader_Colors[] = {
-	0x07230203,0x00010000,0x0008000b,0x000000a4,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x07230203,0x00010000,0x0008000b,0x000000a3,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
 	0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000049,0x0000004d,0x00030010,
 	0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,0x6e69616d,
@@ -31,13 +31,13 @@ const uint32_t VULKAN_PixelShader_Colors[] = {
 	0x0004002b,0x0000001b,0x0000001c,0x00000003,0x00040020,0x0000001d,0x00000002,0x00000006,
 	0x0004002b,0x00000006,0x00000033,0x3f800000,0x00040020,0x0000003f,0x00000001,0x00000007,
 	0x0004003b,0x0000003f,0x00000049,0x00000001,0x00040020,0x0000004c,0x00000003,0x00000007,
-	0x0004003b,0x0000004c,0x0000004d,0x00000003,0x0006002c,0x00000015,0x000000a2,0x00000033,
+	0x0004003b,0x0000004c,0x0000004d,0x00000003,0x0006002c,0x00000015,0x000000a1,0x00000033,
 	0x00000033,0x00000033,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
-	0x00000005,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050041,0x0000001d,0x00000081,
-	0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000082,0x00000081,0x0005008e,0x00000015,
-	0x00000083,0x000000a2,0x00000082,0x00050051,0x00000006,0x00000085,0x00000083,0x00000000,
-	0x00050051,0x00000006,0x00000087,0x00000083,0x00000001,0x00050051,0x00000006,0x00000089,
-	0x00000083,0x00000002,0x00070050,0x00000007,0x000000a3,0x00000085,0x00000087,0x00000089,
-	0x00000033,0x00050085,0x00000007,0x0000007b,0x000000a3,0x0000004a,0x0003003e,0x0000004d,
-	0x0000007b,0x000100fd,0x00010038
+	0x00000005,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050041,0x0000001d,0x00000080,
+	0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000081,0x00000080,0x0005008e,0x00000015,
+	0x00000082,0x000000a1,0x00000081,0x00050051,0x00000006,0x00000084,0x00000082,0x00000000,
+	0x00050051,0x00000006,0x00000086,0x00000082,0x00000001,0x00050051,0x00000006,0x00000088,
+	0x00000082,0x00000002,0x00070050,0x00000007,0x000000a2,0x00000084,0x00000086,0x00000088,
+	0x00000033,0x00050085,0x00000007,0x0000007a,0x000000a2,0x0000004a,0x0003003e,0x0000004d,
+	0x0000007a,0x000100fd,0x00010038
 };

+ 0 - 5
src/render/vulkan/VULKAN_PixelShader_Common.hlsli

@@ -20,7 +20,6 @@ static const float TEXTURETYPE_NONE = 0;
 static const float TEXTURETYPE_RGB = 1;
 static const float TEXTURETYPE_RGB_PIXELART = 2;
 static const float TEXTURETYPE_PALETTE = 3;
-static const float TEXTURETYPE_PALETTE_PIXELART = 4;
 
 static const float INPUTTYPE_UNSPECIFIED = 0;
 static const float INPUTTYPE_SRGB = 1;
@@ -139,10 +138,6 @@ float4 GetInputColor(PixelShaderInput input)
     } else if (texture_type == TEXTURETYPE_PALETTE) {
         float index = texture0.Sample(sampler0, input.tex).r * 255;
         rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
-    } else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
-        float2 uv = GetPixelArtUV(input);
-        float index = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex)).r * 255;
-        rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
     } else {
         // Error!
         rgba.r = 1.0;

+ 9 - 9
src/render/vulkan/VULKAN_PixelShader_Textures.h

@@ -1,7 +1,7 @@
 	// 1113.1.1
 	 #pragma once
 const uint32_t VULKAN_PixelShader_Textures[] = {
-	0x07230203,0x00010000,0x0008000b,0x000000ab,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x07230203,0x00010000,0x0008000b,0x000000aa,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
 	0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000004c,0x0000004f,0x00000053,
 	0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
@@ -40,13 +40,13 @@ const uint32_t VULKAN_PixelShader_Textures[] = {
 	0x00000052,0x00000003,0x00000007,0x0004003b,0x00000052,0x00000053,0x00000003,0x00050036,
 	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x0000000d,
 	0x0000004d,0x0000004c,0x0004003d,0x00000007,0x00000050,0x0000004f,0x0004003d,0x00000034,
-	0x0000007b,0x00000036,0x00050057,0x00000007,0x0000007e,0x0000007b,0x0000004d,0x0008004f,
-	0x00000015,0x00000087,0x0000007e,0x0000007e,0x00000000,0x00000001,0x00000002,0x00050041,
-	0x0000001d,0x00000088,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000089,0x00000088,
-	0x0005008e,0x00000015,0x0000008a,0x00000087,0x00000089,0x00050051,0x00000006,0x0000008c,
-	0x0000008a,0x00000000,0x00050051,0x00000006,0x0000008e,0x0000008a,0x00000001,0x00050051,
-	0x00000006,0x00000090,0x0000008a,0x00000002,0x00050051,0x00000006,0x00000092,0x0000007e,
-	0x00000003,0x00070050,0x00000007,0x000000aa,0x0000008c,0x0000008e,0x00000090,0x00000092,
-	0x00050085,0x00000007,0x00000082,0x000000aa,0x00000050,0x0003003e,0x00000053,0x00000082,
+	0x0000007a,0x00000036,0x00050057,0x00000007,0x0000007d,0x0000007a,0x0000004d,0x0008004f,
+	0x00000015,0x00000086,0x0000007d,0x0000007d,0x00000000,0x00000001,0x00000002,0x00050041,
+	0x0000001d,0x00000087,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000088,0x00000087,
+	0x0005008e,0x00000015,0x00000089,0x00000086,0x00000088,0x00050051,0x00000006,0x0000008b,
+	0x00000089,0x00000000,0x00050051,0x00000006,0x0000008d,0x00000089,0x00000001,0x00050051,
+	0x00000006,0x0000008f,0x00000089,0x00000002,0x00050051,0x00000006,0x00000091,0x0000007d,
+	0x00000003,0x00070050,0x00000007,0x000000a9,0x0000008b,0x0000008d,0x0000008f,0x00000091,
+	0x00050085,0x00000007,0x00000081,0x000000a9,0x00000050,0x0003003e,0x00000053,0x00000081,
 	0x000100fd,0x00010038
 };

+ 1 - 10
test/testpalette.c

@@ -452,7 +452,6 @@ int main(int argc, char *argv[])
 {
     SDL_Window *window = NULL;
     int i, return_code = -1;
-    bool pixelart = false;
 
     SDLTest_TrackAllocations();
 
@@ -460,10 +459,8 @@ int main(int argc, char *argv[])
         if (SDL_strcmp(argv[1], "--renderer") == 0 && argv[i + 1]) {
             ++i;
             SDL_SetHint(SDL_HINT_RENDER_DRIVER, argv[i]);
-        } else if (SDL_strcmp(argv[1], "--pixelart") == 0) {
-            pixelart = true;
         } else {
-            SDL_Log("Usage: %s [--pixelart]", argv[0]);
+            SDL_Log("Usage: %s [--renderer driver]", argv[0]);
             return_code = 1;
             goto quit;
         }
@@ -475,12 +472,6 @@ int main(int argc, char *argv[])
         goto quit;
     }
 
-    if (pixelart) {
-        SDL_SetDefaultTextureScaleMode(renderer, SDL_SCALEMODE_PIXELART);
-    } else {
-        SDL_SetDefaultTextureScaleMode(renderer, SDL_SCALEMODE_NEAREST);
-    }
-
     if (!CreateTextures()) {
         SDL_Log("Couldn't create textures: %s", SDL_GetError());
         return_code = 3;

Some files were not shown because too many files changed in this diff