Browse Source

Reduce the size of the D3D12 vertex shader constants

This is needed to add more fragment shader constants in the future as we're already at our 64 size limit
Sam Lantinga 2 weeks ago
parent
commit
524ba0a4ad

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

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -17,7 +17,7 @@
 ;
 ;
 ; shader hash: d37677952ab198af41892c76b2b3f57f
 ; shader hash: d37677952ab198af41892c76b2b3f57f
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Pixel Shader
 ; Pixel Shader
 ; DepthOutput=0
 ; DepthOutput=0
@@ -28,15 +28,15 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; SV_Target                0                              
+; SV_Target                0
 ;
 ;
 ; Buffer Definitions:
 ; Buffer Definitions:
 ;
 ;
@@ -59,7 +59,7 @@
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Bcoeff;                                ; Offset:   96
 ;       float4 Bcoeff;                                ; Offset:   96
-;   
+;
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;
 ;
 ; }
 ; }
@@ -754,8 +754,8 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_main[] = {
 const unsigned char g_main[] = {
-  0x44, 0x58, 0x42, 0x43, 0x7a, 0x3f, 0xbb, 0x04, 0x7c, 0x42, 0xa1, 0xc2,
-  0x86, 0xb0, 0xe6, 0xd1, 0xf2, 0x15, 0xf6, 0x3a, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0xe1, 0x0c, 0x84, 0x18, 0x6c, 0x2e, 0x61, 0x58,
+  0xa5, 0x44, 0x7c, 0x83, 0x48, 0x27, 0x81, 0x76, 0x01, 0x00, 0x00, 0x00,
   0x24, 0x23, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x24, 0x23, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x64, 0x02, 0x00, 0x00, 0x64, 0x03, 0x00, 0x00, 0x28, 0x0d, 0x00, 0x00,
   0x64, 0x02, 0x00, 0x00, 0x64, 0x03, 0x00, 0x00, 0x28, 0x0d, 0x00, 0x00,
@@ -814,7 +814,7 @@ const unsigned char g_main[] = {
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

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

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -17,7 +17,7 @@
 ;
 ;
 ; shader hash: 8ae1603dec7cda8e7dc3dd934e8ac75b
 ; shader hash: 8ae1603dec7cda8e7dc3dd934e8ac75b
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Pixel Shader
 ; Pixel Shader
 ; DepthOutput=0
 ; DepthOutput=0
@@ -28,15 +28,15 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; SV_Target                0                              
+; SV_Target                0
 ;
 ;
 ; Buffer Definitions:
 ; Buffer Definitions:
 ;
 ;
@@ -59,7 +59,7 @@
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Bcoeff;                                ; Offset:   96
 ;       float4 Bcoeff;                                ; Offset:   96
-;   
+;
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;
 ;
 ; }
 ; }
@@ -153,8 +153,8 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_main[] = {
 const unsigned char g_main[] = {
-  0x44, 0x58, 0x42, 0x43, 0x0c, 0x89, 0x37, 0xfc, 0xa7, 0xc5, 0x6d, 0x31,
-  0x77, 0x6a, 0x38, 0x2e, 0xf6, 0x09, 0x10, 0x93, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x2f, 0xc1, 0x95, 0xba, 0xb3, 0x28, 0xb3, 0x57,
+  0x1c, 0xb0, 0x48, 0x8a, 0x8b, 0xf0, 0x9c, 0x51, 0x01, 0x00, 0x00, 0x00,
   0xcc, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0xcc, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x04, 0x02, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x9c, 0x09, 0x00, 0x00,
   0x04, 0x02, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x9c, 0x09, 0x00, 0x00,
@@ -201,7 +201,7 @@ const unsigned char g_main[] = {
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
   0x40, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00,
   0x40, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00,
   0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
   0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,

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

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -17,7 +17,7 @@
 ;
 ;
 ; shader hash: 659264befb13335624a11d2c002170a6
 ; shader hash: 659264befb13335624a11d2c002170a6
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Pixel Shader
 ; Pixel Shader
 ; DepthOutput=0
 ; DepthOutput=0
@@ -28,15 +28,15 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; SV_Target                0                              
+; SV_Target                0
 ;
 ;
 ; Buffer Definitions:
 ; Buffer Definitions:
 ;
 ;
@@ -59,7 +59,7 @@
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Rcoeff;                                ; Offset:   64
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Gcoeff;                                ; Offset:   80
 ;       float4 Bcoeff;                                ; Offset:   96
 ;       float4 Bcoeff;                                ; Offset:   96
-;   
+;
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;   } Constants;                                      ; Offset:    0 Size:   112
 ;
 ;
 ; }
 ; }
@@ -181,8 +181,8 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_main[] = {
 const unsigned char g_main[] = {
-  0x44, 0x58, 0x42, 0x43, 0x7b, 0xf8, 0x17, 0xd8, 0xe4, 0xbc, 0xb5, 0x92,
-  0xe1, 0x9d, 0x9b, 0xd1, 0x6e, 0x3f, 0xa1, 0x48, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0xb3, 0x69, 0x88, 0xa8, 0x1b, 0xbd, 0xf8, 0x6c,
+  0x94, 0xe3, 0xf8, 0x24, 0xa1, 0xa0, 0x04, 0x23, 0x01, 0x00, 0x00, 0x00,
   0xf4, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0xf4, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
   0x34, 0x02, 0x00, 0x00, 0xdc, 0x02, 0x00, 0x00, 0x48, 0x0b, 0x00, 0x00,
   0x34, 0x02, 0x00, 0x00, 0xdc, 0x02, 0x00, 0x00, 0x48, 0x0b, 0x00, 0x00,
@@ -235,7 +235,7 @@ const unsigned char g_main[] = {
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

+ 3 - 3
src/render/direct3d12/D3D12_RootSig_Advanced.h

@@ -3,8 +3,8 @@ Disassembly failed
 #endif
 #endif
 
 
 const unsigned char g_AdvancedRS[] = {
 const unsigned char g_AdvancedRS[] = {
-  0x44, 0x58, 0x42, 0x43, 0x85, 0x5c, 0x53, 0xa5, 0xbb, 0xd0, 0x20, 0x6e,
-  0x30, 0x9a, 0xfe, 0xb0, 0x85, 0x44, 0x08, 0x30, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x8d, 0x48, 0xf0, 0x63, 0x01, 0xb4, 0x8c, 0xf4,
+  0xd4, 0xa4, 0xb8, 0x11, 0xb0, 0xec, 0x0b, 0x59, 0x01, 0x00, 0x00, 0x00,
   0x24, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0x24, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -15,7 +15,7 @@ const unsigned char g_AdvancedRS[] = {
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

+ 3 - 3
src/render/direct3d12/D3D12_RootSig_Color.h

@@ -3,14 +3,14 @@ Disassembly failed
 #endif
 #endif
 
 
 const unsigned char g_ColorRS[] = {
 const unsigned char g_ColorRS[] = {
-  0x44, 0x58, 0x42, 0x43, 0x7e, 0x46, 0xa0, 0x92, 0xc6, 0x80, 0xfa, 0x5c,
-  0x26, 0x9e, 0x8f, 0x06, 0x1f, 0x7e, 0x05, 0x4c, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x0c, 0xbe, 0x22, 0x40, 0x4f, 0xd2, 0x56, 0x49,
+  0x31, 0xaa, 0x69, 0x8d, 0x8d, 0xaf, 0x83, 0x2a, 0x01, 0x00, 0x00, 0x00,
   0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00
 };
 };

+ 3 - 3
src/render/direct3d12/D3D12_RootSig_Texture.h

@@ -3,8 +3,8 @@ Disassembly failed
 #endif
 #endif
 
 
 const unsigned char g_TextureRS[] = {
 const unsigned char g_TextureRS[] = {
-  0x44, 0x58, 0x42, 0x43, 0x6b, 0xa0, 0x2b, 0xde, 0x8e, 0xc5, 0xfd, 0x89,
-  0x5f, 0xc1, 0x50, 0x3e, 0x67, 0xdb, 0xdd, 0x97, 0x01, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0xf1, 0x21, 0x00, 0x8f, 0xd4, 0x37, 0xfc, 0xfe,
+  0x90, 0xa2, 0xbe, 0x02, 0x82, 0xec, 0xc4, 0xf2, 0x01, 0x00, 0x00, 0x00,
   0xcc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0xcc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x52, 0x54, 0x53, 0x30, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -13,7 +13,7 @@ const unsigned char g_TextureRS[] = {
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

+ 4 - 5
src/render/direct3d12/D3D12_Shader_Common.hlsli

@@ -2,8 +2,7 @@
 
 
 cbuffer VertexShaderConstants : register(b0)
 cbuffer VertexShaderConstants : register(b0)
 {
 {
-    matrix model;
-    matrix projectionAndView;
+    matrix mpv;
 };
 };
 
 
 #define ColorRS \
 #define ColorRS \
@@ -11,7 +10,7 @@ cbuffer VertexShaderConstants : register(b0)
     "DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "DENY_HULL_SHADER_ROOT_ACCESS )," \
     "DENY_HULL_SHADER_ROOT_ACCESS )," \
-    "RootConstants(num32BitConstants=32, b0)," \
+    "RootConstants(num32BitConstants=16, b0)," \
     "RootConstants(num32BitConstants=28, b1)"\
     "RootConstants(num32BitConstants=28, b1)"\
 
 
 #define TextureRS \
 #define TextureRS \
@@ -19,7 +18,7 @@ cbuffer VertexShaderConstants : register(b0)
     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
-    "RootConstants(num32BitConstants=32, b0),"\
+    "RootConstants(num32BitConstants=16, b0),"\
     "RootConstants(num32BitConstants=28, b1),"\
     "RootConstants(num32BitConstants=28, b1),"\
     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
     "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
     "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
@@ -29,7 +28,7 @@ cbuffer VertexShaderConstants : register(b0)
     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
-    "RootConstants(num32BitConstants=32, b0),"\
+    "RootConstants(num32BitConstants=16, b0),"\
     "RootConstants(num32BitConstants=28, b1),"\
     "RootConstants(num32BitConstants=28, b1),"\
     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
     "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
     "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\

+ 1 - 3
src/render/direct3d12/D3D12_VertexShader.hlsl

@@ -21,9 +21,7 @@ VertexShaderOutput mainColor(VertexShaderInput input)
     float4 pos = float4(input.pos, 1.0f);
     float4 pos = float4(input.pos, 1.0f);
 
 
     // Transform the vertex position into projected space.
     // Transform the vertex position into projected space.
-    pos = mul(pos, model);
-    pos = mul(pos, projectionAndView);
-    output.pos = pos;
+    output.pos = mul(pos, mpv);
 
 
     // Pass through texture coordinates and color values without transformation
     // Pass through texture coordinates and color values without transformation
     output.tex = input.tex;
     output.tex = input.tex;

+ 255 - 320
src/render/direct3d12/D3D12_VertexShader_Advanced.h

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
-; shader hash: 43d0262eee2eff04f0e583174479cd9b
+; shader hash: d7bcf20f2a5db21d5ba810d89983d7fd
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Vertex Shader
 ; Vertex Shader
 ; OutputPositionPresent=1
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ;
 ; Output signature:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Buffer Definitions:
 ;
 ;
@@ -49,10 +49,9 @@
 ;   struct hostlayout.VertexShaderConstants
 ;   struct hostlayout.VertexShaderConstants
 ;   {
 ;   {
 ;
 ;
-;       row_major float4x4 model;                     ; Offset:    0
-;       row_major float4x4 projectionAndView;         ; Offset:   64
-;   
-;   } VertexShaderConstants;                          ; Offset:    0 Size:   128
+;       row_major float4x4 mpv;                       ; Offset:    0
+;
+;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ;
 ; }
 ; }
 ;
 ;
@@ -85,7 +84,7 @@ target triple = "dxil-ms-dx"
 
 
 %dx.types.Handle = type { i8* }
 %dx.types.Handle = type { i8* }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
-%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
+%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
 
 
 define void @mainAdvanced() {
 define void @mainAdvanced() {
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
@@ -134,46 +133,10 @@ define void @mainAdvanced() {
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %46 = fadd fast float %45, %30
   %46 = fadd fast float %45, %30
-  %47 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
-  %48 = extractvalue %dx.types.CBufRet.f32 %47, 0
-  %49 = extractvalue %dx.types.CBufRet.f32 %47, 1
-  %50 = extractvalue %dx.types.CBufRet.f32 %47, 2
-  %51 = extractvalue %dx.types.CBufRet.f32 %47, 3
-  %52 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 5)  ; CBufferLoadLegacy(handle,regIndex)
-  %53 = extractvalue %dx.types.CBufRet.f32 %52, 0
-  %54 = extractvalue %dx.types.CBufRet.f32 %52, 1
-  %55 = extractvalue %dx.types.CBufRet.f32 %52, 2
-  %56 = extractvalue %dx.types.CBufRet.f32 %52, 3
-  %57 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 6)  ; CBufferLoadLegacy(handle,regIndex)
-  %58 = extractvalue %dx.types.CBufRet.f32 %57, 0
-  %59 = extractvalue %dx.types.CBufRet.f32 %57, 1
-  %60 = extractvalue %dx.types.CBufRet.f32 %57, 2
-  %61 = extractvalue %dx.types.CBufRet.f32 %57, 3
-  %62 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 7)  ; CBufferLoadLegacy(handle,regIndex)
-  %63 = extractvalue %dx.types.CBufRet.f32 %62, 0
-  %64 = extractvalue %dx.types.CBufRet.f32 %62, 1
-  %65 = extractvalue %dx.types.CBufRet.f32 %62, 2
-  %66 = extractvalue %dx.types.CBufRet.f32 %62, 3
-  %67 = fmul fast float %48, %34
-  %68 = call float @dx.op.tertiary.f32(i32 46, float %38, float %53, float %67)  ; FMad(a,b,c)
-  %69 = call float @dx.op.tertiary.f32(i32 46, float %42, float %58, float %68)  ; FMad(a,b,c)
-  %70 = call float @dx.op.tertiary.f32(i32 46, float %46, float %63, float %69)  ; FMad(a,b,c)
-  %71 = fmul fast float %49, %34
-  %72 = call float @dx.op.tertiary.f32(i32 46, float %38, float %54, float %71)  ; FMad(a,b,c)
-  %73 = call float @dx.op.tertiary.f32(i32 46, float %42, float %59, float %72)  ; FMad(a,b,c)
-  %74 = call float @dx.op.tertiary.f32(i32 46, float %46, float %64, float %73)  ; FMad(a,b,c)
-  %75 = fmul fast float %50, %34
-  %76 = call float @dx.op.tertiary.f32(i32 46, float %38, float %55, float %75)  ; FMad(a,b,c)
-  %77 = call float @dx.op.tertiary.f32(i32 46, float %42, float %60, float %76)  ; FMad(a,b,c)
-  %78 = call float @dx.op.tertiary.f32(i32 46, float %46, float %65, float %77)  ; FMad(a,b,c)
-  %79 = fmul fast float %51, %34
-  %80 = call float @dx.op.tertiary.f32(i32 46, float %38, float %56, float %79)  ; FMad(a,b,c)
-  %81 = call float @dx.op.tertiary.f32(i32 46, float %42, float %61, float %80)  ; FMad(a,b,c)
-  %82 = call float @dx.op.tertiary.f32(i32 46, float %46, float %66, float %81)  ; FMad(a,b,c)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %70)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %74)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %78)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
@@ -216,7 +179,7 @@ attributes #2 = { nounwind readonly }
 !3 = !{!"vs", i32 6, i32 0}
 !3 = !{!"vs", i32 6, i32 0}
 !4 = !{null, null, !5, null}
 !4 = !{null, null, !5, null}
 !5 = !{!6}
 !5 = !{!6}
-!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
+!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !8 = !{void ()* @mainAdvanced, !"mainAdvanced", !9, !4, null}
 !8 = !{void ()* @mainAdvanced, !"mainAdvanced", !9, !4, null}
 !9 = !{!10, !18, null}
 !9 = !{!10, !18, null}
@@ -236,12 +199,12 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_mainAdvanced[] = {
 const unsigned char g_mainAdvanced[] = {
-  0x44, 0x58, 0x42, 0x43, 0x91, 0x0c, 0xa2, 0xad, 0x1f, 0x01, 0x55, 0xe6,
-  0xb1, 0xc7, 0xaf, 0xae, 0xee, 0x58, 0x2f, 0x33, 0x01, 0x00, 0x00, 0x00,
-  0x64, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x15, 0xfa, 0xe2, 0x27, 0x02, 0x03, 0xa4, 0x6d,
+  0xf0, 0xbc, 0x35, 0xb4, 0x3b, 0x0e, 0xc6, 0xe3, 0x01, 0x00, 0x00, 0x00,
+  0x18, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
-  0x88, 0x02, 0x00, 0x00, 0x88, 0x03, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00,
-  0x5c, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
+  0x88, 0x02, 0x00, 0x00, 0x88, 0x03, 0x00, 0x00, 0x0c, 0x0a, 0x00, 0x00,
+  0x28, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -299,7 +262,7 @@ const unsigned char g_mainAdvanced[] = {
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -311,10 +274,10 @@ const unsigned char g_mainAdvanced[] = {
   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
   0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xb0, 0x06, 0x00, 0x00,
-  0x60, 0x00, 0x01, 0x00, 0xac, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
-  0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x98, 0x06, 0x00, 0x00,
-  0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x7c, 0x06, 0x00, 0x00,
+  0x60, 0x00, 0x01, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
+  0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x06, 0x00, 0x00,
+  0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00,
   0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
   0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
   0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
   0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
   0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
   0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
@@ -340,7 +303,7 @@ const unsigned char g_mainAdvanced[] = {
   0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03,
   0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03,
   0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a,
   0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a,
   0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99,
   0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99,
-  0x24, 0x24, 0x58, 0x4b, 0x37, 0x1d, 0x08, 0x00, 0x13, 0x14, 0x72, 0xc0,
+  0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
   0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
   0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
   0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
   0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
   0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
   0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
@@ -359,66 +322,187 @@ const unsigned char g_mainAdvanced[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01,
   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
-  0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
+  0x12, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
   0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
   0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
-  0x0c, 0x05, 0x28, 0x50, 0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0x05,
-  0x18, 0x50, 0x1e, 0x85, 0x51, 0xba, 0x01, 0x45, 0x41, 0xa5, 0x24, 0x46,
-  0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0x62, 0x0d, 0xd0, 0x9d, 0x01, 0x20,
-  0x3c, 0x03, 0x40, 0x79, 0x2c, 0x87, 0x61, 0x9e, 0xe7, 0x01, 0x20, 0x30,
-  0x00, 0x00, 0x10, 0x01, 0x21, 0x10, 0x0c, 0x40, 0x50, 0x00, 0x00, 0x00,
-  0x79, 0x18, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
+  0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0xe5,
+  0x51, 0x10, 0x25, 0x57, 0x14, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x0c, 0x8a,
+  0xa0, 0x10, 0xe8, 0xce, 0x00, 0x10, 0x9e, 0x01, 0xa0, 0x3c, 0x96, 0xc3,
+  0x30, 0xcf, 0xf3, 0x00, 0x10, 0x18, 0x00, 0x00, 0x88, 0x80, 0x10, 0x08,
+  0x06, 0x20, 0x28, 0x00, 0x79, 0x18, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+  0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
+  0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7,
+  0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c,
+  0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
+  0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02,
+  0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60, 0x19, 0x2b, 0xab, 0x32,
+  0x39, 0xba, 0x32, 0xbc, 0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37,
+  0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40,
+  0x08, 0x65, 0x21, 0x88, 0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00,
+  0x1c, 0x60, 0x82, 0x70, 0x61, 0x1c, 0xda, 0xe0, 0xec, 0x26, 0x08, 0x84,
+  0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04, 0x82, 0x99,
+  0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15,
+  0x61, 0x5d, 0x1b, 0x04, 0x06, 0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10,
+  0x80, 0x0d, 0xc0, 0x86, 0x81, 0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18,
+  0x36, 0x6f, 0x82, 0x90, 0x69, 0x1b, 0x02, 0x30, 0x20, 0xd3, 0x16, 0x96,
+  0xe6, 0x16, 0x44, 0x66, 0x17, 0xe6, 0x36, 0x56, 0x46, 0x46, 0x04, 0xea,
+  0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13, 0x84,
+  0x82, 0xda, 0x10, 0x10, 0x13, 0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6, 0x86,
+  0x85, 0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88,
+  0x32, 0x40, 0x03, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
+  0x13, 0x84, 0xc2, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x65, 0x50, 0x03, 0x32,
+  0x28, 0x03, 0x33, 0x28, 0x83, 0x61, 0x0d, 0x86, 0x32, 0x60, 0x03, 0x16,
+  0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10, 0xcf,
+  0x06, 0xa1, 0x82, 0x83, 0x0d, 0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06, 0x66,
+  0x50, 0x06, 0xc3, 0x1b, 0x48, 0x65, 0x10, 0x07, 0x1b, 0x86, 0x34, 0x68,
+  0x03, 0x39, 0xe0, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
+  0xf6, 0xe6, 0xb6, 0x61, 0x21, 0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c, 0xde,
+  0x60, 0x78, 0x03, 0xa2, 0x0c, 0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01, 0x19,
+  0x94, 0x81, 0x19, 0xac, 0xc1, 0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1, 0x86,
+  0x45, 0x72, 0x03, 0x32, 0x28, 0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d, 0xa4,
+  0x32, 0x88, 0x83, 0x0d, 0x43, 0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18, 0xe6,
+  0x00, 0x0f, 0x80, 0x0d, 0xc5, 0x26, 0x06, 0x79, 0xf0, 0x00, 0x34, 0xcc,
+  0xd8, 0xde, 0xc2, 0xe8, 0xe6, 0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd, 0x6d,
+  0x8e, 0x6e, 0x6e, 0x82, 0x40, 0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8,
+  0xc8, 0x68, 0xcc, 0xa5, 0x9d, 0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08, 0x69,
+  0x03, 0xb2, 0x07, 0x7c, 0xd0, 0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28, 0x84,
+  0x42, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba,
+  0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed,
+  0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3,
+  0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2,
+  0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19,
+  0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9,
+  0x29, 0x81, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8,
+  0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0x90,
+  0x79, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6,
+  0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf, 0xa5,
+  0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a,
+  0x90, 0x07, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca,
+  0xe4, 0xe6, 0xa6, 0x04, 0xa1, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
+  0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
+  0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
+  0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
+  0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce,
+  0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b,
+  0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c,
+  0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07,
+  0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11,
+  0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0,
+  0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8,
+  0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b,
+  0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b,
+  0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87,
+  0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07,
+  0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87,
+  0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81,
+  0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30,
+  0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4,
+  0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca,
+  0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39,
+  0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b,
+  0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b,
+  0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87,
+  0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87,
+  0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40,
+  0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00,
+  0x1a, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10,
+  0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6,
+  0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01,
+  0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3,
+  0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09,
+  0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
+  0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f,
+  0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0c, 0x03,
+  0x20, 0x8d, 0x36, 0x54, 0x40, 0x23, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xd7, 0xbc, 0xf2, 0x0f, 0x2a, 0x5d, 0xb2, 0x1d,
+  0x5b, 0xa8, 0x10, 0xd8, 0x99, 0x83, 0xd7, 0xfd, 0x44, 0x58, 0x49, 0x4c,
+  0xe8, 0x07, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0xfa, 0x01, 0x00, 0x00,
+  0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0xd0, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
+  0xf1, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
+  0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
+  0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
+  0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88,
+  0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42,
+  0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
+  0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07,
+  0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20,
+  0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00,
+  0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42,
+  0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
+  0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04,
+  0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14,
+  0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00,
+  0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29,
+  0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1,
+  0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95,
+  0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e,
+  0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab,
+  0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11,
+  0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
+  0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a,
+  0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7,
+  0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00,
+  0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
+  0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
+  0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
+  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
+  0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
+  0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
+  0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
+  0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
+  0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
+  0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
+  0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
+  0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
+  0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
+  0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
+  0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+  0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
+  0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
+  0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x04,
+  0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0xf0,
+  0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e, 0x07, 0x80, 0xc0, 0x00,
+  0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00,
+  0x79, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
   0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
   0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
   0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
   0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
   0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
   0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
-  0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
-  0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
-  0x84, 0x98, 0x20, 0x60, 0x1b, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc,
-  0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30,
-  0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88,
-  0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70,
-  0x69, 0x2c, 0xda, 0xde, 0xc8, 0xca, 0xd8, 0x26, 0x08, 0x84, 0x32, 0x41,
-  0x20, 0x96, 0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10,
-  0xcd, 0x04, 0x81, 0x70, 0x26, 0x08, 0x51, 0xb6, 0x41, 0x41, 0x22, 0x89,
-  0xaa, 0x08, 0xeb, 0xba, 0x30, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-  0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x56, 0x69, 0x65, 0x77, 0x13,
-  0x04, 0xe2, 0xd9, 0xa0, 0x20, 0x9a, 0x44, 0x55, 0x9b, 0x75, 0x5d, 0xd8,
-  0x86, 0x81, 0xc9, 0xb8, 0x0d, 0x03, 0x01, 0x75, 0x13, 0x04, 0x01, 0xd8,
-  0x00, 0x6c, 0x18, 0x08, 0x30, 0x00, 0x83, 0x0d, 0x41, 0x18, 0x6c, 0x18,
-  0x86, 0x4f, 0x0c, 0x26, 0x08, 0x19, 0xb7, 0x21, 0x20, 0x03, 0x32, 0x6d,
-  0x61, 0x69, 0x6e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x44,
-  0xa0, 0x9e, 0xa6, 0x92, 0xa8, 0x92, 0x9e, 0x9c, 0x26, 0x08, 0x05, 0x35,
-  0x41, 0x28, 0xaa, 0x0d, 0x01, 0x31, 0x41, 0x28, 0xac, 0x0d, 0x42, 0x65,
-  0x6d, 0x58, 0x88, 0x33, 0x40, 0x83, 0x34, 0x50, 0x83, 0x34, 0x18, 0xd6,
-  0x80, 0x48, 0x03, 0x36, 0x20, 0x42, 0x55, 0x84, 0x35, 0xf4, 0xf4, 0x24,
-  0x45, 0x34, 0x41, 0x28, 0xae, 0x0d, 0x42, 0x55, 0x6d, 0x58, 0x06, 0x37,
-  0x40, 0x83, 0x34, 0x50, 0x83, 0x34, 0x18, 0xde, 0x60, 0x48, 0x03, 0x38,
-  0x60, 0x31, 0xf4, 0xc4, 0xf4, 0x24, 0x35, 0x41, 0x28, 0xb0, 0x09, 0x02,
-  0x01, 0x6d, 0x10, 0x2a, 0x3a, 0xd8, 0xb0, 0x48, 0x72, 0x80, 0x06, 0x69,
-  0xa0, 0x06, 0x69, 0x30, 0xcc, 0x81, 0x94, 0x06, 0x75, 0xb0, 0x61, 0x68,
-  0x83, 0x38, 0xb0, 0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69,
-  0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x16, 0x02, 0x0f, 0xd0, 0x60, 0x0d, 0xd4,
-  0x60, 0x0e, 0x86, 0x39, 0x20, 0xd2, 0xa0, 0x0e, 0x36, 0x2c, 0x83, 0x1b,
-  0xa0, 0x41, 0x1a, 0xa8, 0xc1, 0x1b, 0x0c, 0x6f, 0x30, 0xa4, 0x01, 0x1c,
-  0x6c, 0x58, 0x24, 0x39, 0x40, 0x83, 0x34, 0x50, 0x83, 0x37, 0x18, 0xe6,
-  0x40, 0x4a, 0x83, 0x3a, 0xd8, 0x30, 0xe4, 0x81, 0x1e, 0xec, 0xc1, 0x86,
-  0xe1, 0x0e, 0xf8, 0x00, 0xd8, 0x50, 0x7c, 0x66, 0xd0, 0x07, 0x0f, 0x40,
-  0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0x6e, 0x82, 0x40, 0x44, 0x2c, 0xd2,
-  0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08, 0x84, 0x44, 0x63, 0x2e, 0xed, 0xec,
-  0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda, 0xd9, 0xd7, 0x1c, 0xdd, 0x04, 0x81,
-  0x98, 0x36, 0x20, 0x7f, 0x00, 0x0a, 0xa1, 0x20, 0x0a, 0xa3, 0x70, 0x91,
-  0x42, 0x29, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73,
-  0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, 0xe4, 0xe6,
-  0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, 0xbb, 0x30,
-  0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, 0x65, 0x0e,
-  0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0x4a, 0x80,
-  0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, 0x1b, 0x2b,
-  0x9b, 0x9b, 0x12, 0x38, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0xe0, 0xca,
-  0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0xa6,
-  0x08, 0x9d, 0x18, 0xd4, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b,
-  0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x90, 0x41, 0x1d, 0x32,
-  0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba,
-  0xb9, 0x29, 0x41, 0x1f, 0x74, 0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73,
-  0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x12, 0x94, 0x02, 0x00, 0x00, 0x00, 0x00,
+  0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
+  0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88,
+  0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08,
+  0x65, 0x03, 0x42, 0x2c, 0x0c, 0x41, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36,
+  0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04,
+  0x01, 0x20, 0xd3, 0x16, 0x96, 0xe6, 0x16, 0x44, 0x66, 0x17, 0xe6, 0x36,
+  0x56, 0x46, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69,
+  0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02,
+  0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0x33, 0x36, 0x2c, 0x44, 0x65, 0x5d,
+  0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x11, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a,
+  0x92, 0x22, 0x9a, 0x20, 0x14, 0xd1, 0x06, 0x41, 0xd3, 0x36, 0x2c, 0x43,
+  0x67, 0x5d, 0xd8, 0x35, 0x78, 0xc3, 0xf5, 0x4d, 0x10, 0x08, 0x86, 0xc5,
+  0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0xa1, 0x90, 0x26, 0x08, 0x44, 0xb3,
+  0x41, 0xd0, 0xc8, 0x60, 0xc3, 0x12, 0x06, 0x62, 0x60, 0x5d, 0xd8, 0x35,
+  0x8c, 0x41, 0x18, 0x5c, 0x65, 0xb0, 0x61, 0xe0, 0xc0, 0xc0, 0x0c, 0xb8,
+  0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x6d,
+  0x58, 0x08, 0x34, 0xb0, 0x32, 0x6c, 0x0c, 0x86, 0x31, 0x20, 0xae, 0x32,
+  0xd8, 0xb0, 0x0c, 0x9d, 0x75, 0x61, 0xde, 0xe0, 0x0d, 0xd7, 0xb7, 0x61,
+  0x09, 0x03, 0x31, 0xb0, 0x2e, 0xcc, 0x1b, 0xc6, 0x20, 0x0c, 0xae, 0x32,
+  0xd8, 0x30, 0xa4, 0x81, 0x1a, 0xac, 0xc1, 0x86, 0xe1, 0x0c, 0xd8, 0x00,
+  0xd8, 0x50, 0x4c, 0x54, 0x1b, 0x40, 0x40, 0x15, 0x36, 0x36, 0xbb, 0x36,
+  0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf,
+  0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21,
+  0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x18, 0x75,
+  0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8,
+  0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9,
+  0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0xc1, 0x53, 0x87, 0x0c, 0xcf,
+  0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c, 0x8a, 0x2e, 0x8c, 0xae, 0x6c,
+  0x4a, 0x10, 0xd5, 0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83,
+  0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12, 0xb4, 0x01, 0x00, 0x00, 0x00,
   0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
   0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
   0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
   0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
   0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
   0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
@@ -454,200 +538,51 @@ const unsigned char g_mainAdvanced[] = {
   0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
   0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
   0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
   0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
   0x6d, 0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54, 0x40, 0x23, 0x10, 0x03,
   0x6d, 0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54, 0x40, 0x23, 0x10, 0x03,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
-  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xd0, 0x26, 0x2e,
-  0xee, 0x2e, 0xff, 0x04, 0xf0, 0xe5, 0x83, 0x17, 0x44, 0x79, 0xcd, 0x9b,
-  0x44, 0x58, 0x49, 0x4c, 0x00, 0x09, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
-  0x40, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0xe8, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
-  0x21, 0x0c, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
-  0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
-  0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
-  0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
-  0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b,
-  0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5,
-  0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50,
-  0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06,
-  0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff,
-  0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff,
-  0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f,
-  0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-  0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00,
-  0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09,
-  0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3,
-  0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c,
-  0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0,
-  0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80,
-  0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c,
-  0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18,
-  0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19,
-  0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c,
-  0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
-  0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
-  0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
-  0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b,
-  0x37, 0x1d, 0x08, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
-  0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
-  0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
-  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
-  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20,
-  0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0,
-  0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
-  0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10,
-  0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20,
-  0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0,
-  0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60,
-  0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
-  0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
-  0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80,
-  0x02, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0,
-  0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e,
-  0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41,
-  0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
-  0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
-  0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7,
-  0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c,
-  0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
-  0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8,
-  0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x9b,
-  0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c, 0x0c, 0x41, 0x0c, 0x0d,
-  0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x8c, 0xda,
-  0x10, 0x44, 0x13, 0x04, 0x01, 0x20, 0xd3, 0x16, 0x96, 0xe6, 0x16, 0x44,
-  0x66, 0x17, 0xe6, 0x36, 0x56, 0x46, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89,
-  0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10,
-  0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0x33, 0x36,
-  0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x11, 0xa1, 0x2a,
-  0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd1, 0x06, 0x41,
-  0xd3, 0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8, 0x35, 0x78, 0xc3, 0xf5, 0x4d,
-  0x10, 0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0xa1, 0x90,
-  0x26, 0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8, 0x60, 0xc3, 0x12, 0x06, 0x62,
-  0x60, 0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18, 0x5c, 0x65, 0xb0, 0x61, 0xe0,
-  0xc0, 0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5, 0xd1,
-  0xa5, 0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34, 0xb0, 0x32, 0x6c, 0x0c, 0x86,
-  0x31, 0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c, 0x9d, 0x75, 0x61, 0xde, 0xe0,
-  0x0d, 0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31, 0xb0, 0x2e, 0xcc, 0x1b, 0xc6,
-  0x20, 0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4, 0x81, 0x1a, 0xac, 0xc1, 0x86,
-  0xe1, 0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c, 0x54, 0x1b, 0x40, 0x40, 0x15,
-  0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41,
-  0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d,
-  0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93,
-  0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca,
-  0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32, 0x3c,
-  0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0xc1,
-  0x53, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c, 0x8a,
-  0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5, 0x21, 0xc3, 0x73, 0x29, 0x73,
-  0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12, 0xb4,
-  0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
-  0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
-  0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
-  0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
-  0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
-  0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
-  0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
-  0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
-  0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
-  0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
-  0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
-  0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
-  0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
-  0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
-  0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
-  0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
-  0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
-  0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
-  0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
-  0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
-  0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
-  0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
-  0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
-  0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
-  0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
-  0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
-  0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
-  0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
-  0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
-  0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
-  0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
-  0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
-  0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
-  0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
-  0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54,
-  0x40, 0x23, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
-  0xcf, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x00, 0x00, 0x44, 0x8a, 0xab, 0x14, 0x0a, 0x61, 0x06, 0xa0,
-  0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00,
-  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1,
-  0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xdd, 0x21, 0x5d, 0x8f, 0x31,
-  0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x87, 0x4c, 0x18, 0x71, 0x8c,
-  0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x25, 0x54, 0xf6, 0x20, 0x23,
-  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0x81, 0x52, 0x69, 0x51, 0x32,
-  0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18, 0x2c, 0xdc, 0x36, 0x29,
-  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88, 0x01, 0xd3, 0x71, 0xc8,
-  0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x18, 0x34, 0x5d, 0x57,
-  0x31, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x90, 0x81, 0xe3, 0x79,
-  0x4a, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x3c, 0xdf,
-  0x57, 0x39, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3,
-  0x80, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
-  0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69,
-  0x30, 0x3d, 0x66, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a,
-  0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06,
-  0x8d, 0x1b, 0x60, 0x54, 0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10,
-  0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08,
-  0x82, 0x41, 0x33, 0x07, 0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a,
-  0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2,
-  0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x07, 0x0f, 0xce, 0xe0, 0x7a,
-  0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xf2, 0x00, 0x0d, 0xae,
-  0x25, 0xb0, 0xe0, 0x80, 0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00,
-  0x04, 0xc1, 0xe0, 0xe1, 0x83, 0x35, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01,
-  0x40, 0x10, 0x0c, 0x9e, 0x3e, 0x60, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0,
-  0x63, 0xd9, 0x27, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40,
-  0xe1, 0x0d, 0xbe, 0x2a, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27,
-  0x14, 0xe0, 0xe0, 0x8b, 0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2,
-  0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x14, 0xe6, 0x60, 0x0c,
-  0xb0, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0xa0, 0x83,
-  0x31, 0xa0, 0x02, 0x0b, 0x20, 0xe8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
-  0x41, 0x83, 0x0a, 0x72, 0xe0, 0x06, 0x74, 0x30, 0x9a, 0x10, 0x00, 0xa3,
-  0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70,
-  0x00, 0x20, 0x08, 0x06, 0x4d, 0x2b, 0xdc, 0xc1, 0x1c, 0xe8, 0xc1, 0x68,
-  0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10,
-  0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0xb2, 0xc0, 0x07, 0x78,
-  0xc0, 0x0a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83,
-  0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0xdc,
-  0x42, 0x28, 0xf4, 0x81, 0x2c, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10,
-  0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0xd8, 0x14, 0x06, 0xf2, 0x19,
-  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x17, 0x56, 0xc1, 0x7b, 0x82,
-  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x7a, 0x81, 0x15, 0xb6, 0x25,
-  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x17, 0x5a, 0x01, 0x3b,
-  0x02, 0xb3, 0xca, 0x40, 0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xf0,
-  0x80, 0xc3, 0x2b, 0x88, 0x81, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82,
-  0xc1, 0x13, 0x0e, 0xb0, 0xf0, 0x39, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20,
-  0x18, 0x3c, 0xe2, 0x10, 0x0b, 0x9c, 0x12, 0x58, 0x96, 0x06, 0xf2, 0x19,
-  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x1c, 0x66, 0xc1, 0x0c, 0xaa,
-  0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x72, 0xa0, 0x85, 0x31,
-  0x88, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xcc, 0xa1, 0x16,
-  0xc0, 0xa0, 0x09, 0x8c, 0x6b, 0x03, 0xf9, 0x8c, 0x18, 0x20, 0x00, 0x08,
-  0x82, 0xc1, 0x83, 0x0e, 0xb7, 0xa0, 0x06, 0x58, 0x30, 0x62, 0x80, 0x00,
-  0x20, 0x08, 0x06, 0x4f, 0x3a, 0xe0, 0xc2, 0x19, 0x50, 0xc1, 0x88, 0x01,
-  0x02, 0x80, 0x20, 0x18, 0x3c, 0xea, 0x90, 0x0b, 0x64, 0x00, 0x05, 0x23,
-  0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a,
-  0x80, 0x43, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4,
-  0x02, 0x3a, 0xa0, 0x03, 0x2d, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
-  0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0xf8, 0x42, 0x31, 0x62, 0x90,
-  0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0xc3, 0x2f,
-  0x04, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa4,
-  0x03, 0x3a, 0x80, 0x43, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
-  0xd2, 0x0e, 0xb9, 0x90, 0x0e, 0xe8, 0x40, 0x0b, 0xac, 0x30, 0x62, 0x90,
-  0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0xc2, 0x38, 0xa0, 0x03, 0x38,
-  0xc4, 0xc2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xed, 0x90, 0x0b,
-  0xe3, 0x80, 0x0e, 0xb4, 0x00, 0x0b, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
-  0x80, 0xb4, 0x43, 0x2e, 0x8c, 0x03, 0x3a, 0xf8, 0xc2, 0x2b, 0x8c, 0x18,
-  0x24, 0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x30, 0x0e, 0xe8, 0xf0,
-  0x0b, 0xae, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
+  0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+  0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+  0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a,
+  0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
+  0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
+  0x20, 0x18, 0x18, 0x1d, 0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x86, 0x97, 0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08,
+  0x82, 0x81, 0xf1, 0x29, 0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82,
+  0x60, 0x60, 0x80, 0xc1, 0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00,
+  0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09,
+  0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90,
+  0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06,
+  0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
+  0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
+  0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
+  0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
+  0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54,
+  0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2,
+  0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
+  0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
+  0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
+  0x10, 0x04, 0x83, 0x07, 0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
+  0x00, 0x41, 0x30, 0x78, 0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80,
+  0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
+  0x03, 0x34, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
+  0x3e, 0x48, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
+  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a,
+  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b,
+  0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
+  0x10, 0x04, 0x83, 0x87, 0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
+  0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b,
+  0x20, 0xe8, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76,
+  0x40, 0x0a, 0xa4, 0xc0, 0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
+  0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07,
+  0xc5, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4,
+  0x40, 0x0a, 0x7b, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92,
+  0x0a, 0x76, 0x50, 0x0a, 0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0,
+  0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f,
+  0x40, 0x0a, 0x7c, 0xd0, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
+  0xa4, 0x82, 0x1d, 0xfc, 0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07,
+  0x6b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1,
+  0x1f, 0x90, 0xc2, 0x1e, 0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 };

+ 257 - 322
src/render/direct3d12/D3D12_VertexShader_Color.h

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
-; shader hash: 22777bc5faf6e057f2d52677384e5530
+; shader hash: 6855ad6b0e7d04a14cff9d3ae06dc84d
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Vertex Shader
 ; Vertex Shader
 ; OutputPositionPresent=1
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ;
 ; Output signature:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Buffer Definitions:
 ;
 ;
@@ -49,10 +49,9 @@
 ;   struct hostlayout.VertexShaderConstants
 ;   struct hostlayout.VertexShaderConstants
 ;   {
 ;   {
 ;
 ;
-;       row_major float4x4 model;                     ; Offset:    0
-;       row_major float4x4 projectionAndView;         ; Offset:   64
-;   
-;   } VertexShaderConstants;                          ; Offset:    0 Size:   128
+;       row_major float4x4 mpv;                       ; Offset:    0
+;
+;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ;
 ; }
 ; }
 ;
 ;
@@ -85,7 +84,7 @@ target triple = "dxil-ms-dx"
 
 
 %dx.types.Handle = type { i8* }
 %dx.types.Handle = type { i8* }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
-%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
+%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
 
 
 define void @mainColor() {
 define void @mainColor() {
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
@@ -134,46 +133,10 @@ define void @mainColor() {
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %46 = fadd fast float %45, %30
   %46 = fadd fast float %45, %30
-  %47 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
-  %48 = extractvalue %dx.types.CBufRet.f32 %47, 0
-  %49 = extractvalue %dx.types.CBufRet.f32 %47, 1
-  %50 = extractvalue %dx.types.CBufRet.f32 %47, 2
-  %51 = extractvalue %dx.types.CBufRet.f32 %47, 3
-  %52 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 5)  ; CBufferLoadLegacy(handle,regIndex)
-  %53 = extractvalue %dx.types.CBufRet.f32 %52, 0
-  %54 = extractvalue %dx.types.CBufRet.f32 %52, 1
-  %55 = extractvalue %dx.types.CBufRet.f32 %52, 2
-  %56 = extractvalue %dx.types.CBufRet.f32 %52, 3
-  %57 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 6)  ; CBufferLoadLegacy(handle,regIndex)
-  %58 = extractvalue %dx.types.CBufRet.f32 %57, 0
-  %59 = extractvalue %dx.types.CBufRet.f32 %57, 1
-  %60 = extractvalue %dx.types.CBufRet.f32 %57, 2
-  %61 = extractvalue %dx.types.CBufRet.f32 %57, 3
-  %62 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 7)  ; CBufferLoadLegacy(handle,regIndex)
-  %63 = extractvalue %dx.types.CBufRet.f32 %62, 0
-  %64 = extractvalue %dx.types.CBufRet.f32 %62, 1
-  %65 = extractvalue %dx.types.CBufRet.f32 %62, 2
-  %66 = extractvalue %dx.types.CBufRet.f32 %62, 3
-  %67 = fmul fast float %48, %34
-  %68 = call float @dx.op.tertiary.f32(i32 46, float %38, float %53, float %67)  ; FMad(a,b,c)
-  %69 = call float @dx.op.tertiary.f32(i32 46, float %42, float %58, float %68)  ; FMad(a,b,c)
-  %70 = call float @dx.op.tertiary.f32(i32 46, float %46, float %63, float %69)  ; FMad(a,b,c)
-  %71 = fmul fast float %49, %34
-  %72 = call float @dx.op.tertiary.f32(i32 46, float %38, float %54, float %71)  ; FMad(a,b,c)
-  %73 = call float @dx.op.tertiary.f32(i32 46, float %42, float %59, float %72)  ; FMad(a,b,c)
-  %74 = call float @dx.op.tertiary.f32(i32 46, float %46, float %64, float %73)  ; FMad(a,b,c)
-  %75 = fmul fast float %50, %34
-  %76 = call float @dx.op.tertiary.f32(i32 46, float %38, float %55, float %75)  ; FMad(a,b,c)
-  %77 = call float @dx.op.tertiary.f32(i32 46, float %42, float %60, float %76)  ; FMad(a,b,c)
-  %78 = call float @dx.op.tertiary.f32(i32 46, float %46, float %65, float %77)  ; FMad(a,b,c)
-  %79 = fmul fast float %51, %34
-  %80 = call float @dx.op.tertiary.f32(i32 46, float %38, float %56, float %79)  ; FMad(a,b,c)
-  %81 = call float @dx.op.tertiary.f32(i32 46, float %42, float %61, float %80)  ; FMad(a,b,c)
-  %82 = call float @dx.op.tertiary.f32(i32 46, float %46, float %66, float %81)  ; FMad(a,b,c)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %70)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %74)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %78)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
@@ -216,7 +179,7 @@ attributes #2 = { nounwind readonly }
 !3 = !{!"vs", i32 6, i32 0}
 !3 = !{!"vs", i32 6, i32 0}
 !4 = !{null, null, !5, null}
 !4 = !{null, null, !5, null}
 !5 = !{!6}
 !5 = !{!6}
-!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
+!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !8 = !{void ()* @mainColor, !"mainColor", !9, !4, null}
 !8 = !{void ()* @mainColor, !"mainColor", !9, !4, null}
 !9 = !{!10, !18, null}
 !9 = !{!10, !18, null}
@@ -236,12 +199,12 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_mainColor[] = {
 const unsigned char g_mainColor[] = {
-  0x44, 0x58, 0x42, 0x43, 0x08, 0x6a, 0x80, 0xf4, 0x14, 0x38, 0xea, 0xcf,
-  0x8d, 0x73, 0xcd, 0x6e, 0xff, 0x5e, 0x8f, 0x30, 0x01, 0x00, 0x00, 0x00,
-  0xa4, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x6f, 0x4d, 0x80, 0xc9, 0x37, 0xa3, 0xc4, 0xa6,
+  0x8c, 0x16, 0xdc, 0xdb, 0x15, 0x5f, 0x4e, 0x30, 0x01, 0x00, 0x00, 0x00,
+  0x58, 0x11, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
-  0x88, 0x02, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x88, 0x09, 0x00, 0x00,
-  0xa4, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
+  0x88, 0x02, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x54, 0x09, 0x00, 0x00,
+  0x70, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -295,12 +258,12 @@ const unsigned char g_mainColor[] = {
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x48, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54,
-  0xa8, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0xaa, 0x01, 0x00, 0x00,
+  0x74, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x9d, 0x01, 0x00, 0x00,
   0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
   0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0x90, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
-  0xa1, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x5c, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
+  0x94, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
   0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
   0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
   0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
   0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
   0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
@@ -325,7 +288,7 @@ const unsigned char g_mainColor[] = {
   0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
   0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
   0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a,
   0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a,
   0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7,
   0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7,
-  0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b, 0x37, 0x1d, 0x08, 0x00,
+  0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00,
   0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
   0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
   0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
   0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
   0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
   0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
@@ -344,191 +307,62 @@ const unsigned char g_mainColor[] = {
   0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
   0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
   0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
   0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
   0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x40, 0x16, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
-  0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
-  0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x28, 0x50, 0x04, 0x85, 0x50, 0x06,
-  0xe5, 0x50, 0x12, 0x05, 0x18, 0x50, 0x1e, 0x85, 0x51, 0xba, 0x01, 0x45,
-  0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0x62, 0x0d,
-  0xd0, 0x9d, 0x01, 0x20, 0x3c, 0x03, 0x40, 0x79, 0x2c, 0x87, 0x61, 0x9e,
-  0xe7, 0x01, 0x20, 0x30, 0x00, 0x00, 0x10, 0x01, 0x21, 0x10, 0x0c, 0x40,
-  0x50, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00,
-  0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec,
-  0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7,
-  0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c,
-  0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c,
-  0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02,
-  0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60, 0x1b, 0x2b, 0xab, 0x32,
-  0x39, 0xba, 0x32, 0xbc, 0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37,
-  0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40,
-  0x08, 0x65, 0x21, 0x88, 0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00,
-  0x1c, 0x60, 0x82, 0x70, 0x69, 0x2c, 0xda, 0xde, 0xc8, 0xca, 0xd8, 0x26,
-  0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04,
-  0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x26, 0x08, 0x51, 0xb6,
-  0x41, 0x41, 0x22, 0x89, 0xaa, 0x08, 0xeb, 0xba, 0x30, 0x46, 0x70, 0x72,
-  0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x56,
-  0x69, 0x65, 0x77, 0x13, 0x04, 0xe2, 0xd9, 0xa0, 0x20, 0x9a, 0x44, 0x55,
-  0x9b, 0x75, 0x5d, 0xd8, 0x86, 0x81, 0xc9, 0xb8, 0x0d, 0x03, 0x01, 0x75,
-  0x13, 0x04, 0x01, 0xd8, 0x00, 0x6c, 0x18, 0x08, 0x30, 0x00, 0x83, 0x0d,
-  0x41, 0x18, 0x6c, 0x18, 0x86, 0x4f, 0x0c, 0x26, 0x08, 0x19, 0xb7, 0x21,
-  0x20, 0x03, 0x26, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
-  0x44, 0xa0, 0x9e, 0xa6, 0x92, 0xa8, 0x92, 0x9e, 0x9c, 0x26, 0x08, 0x05,
-  0x35, 0x41, 0x28, 0xaa, 0x0d, 0x01, 0x31, 0x41, 0x28, 0xac, 0x0d, 0x42,
-  0x65, 0x6d, 0x58, 0x88, 0x33, 0x40, 0x83, 0x34, 0x50, 0x83, 0x34, 0x18,
-  0xd6, 0x80, 0x48, 0x03, 0x36, 0x20, 0x42, 0x55, 0x84, 0x35, 0xf4, 0xf4,
-  0x24, 0x45, 0x34, 0x41, 0x28, 0xae, 0x0d, 0x42, 0x55, 0x6d, 0x58, 0x06,
-  0x37, 0x40, 0x83, 0x34, 0x50, 0x83, 0x34, 0x18, 0xde, 0x60, 0x48, 0x03,
-  0x38, 0x60, 0x31, 0xf4, 0xc4, 0xf4, 0x24, 0x35, 0x41, 0x28, 0xb0, 0x09,
-  0x02, 0x01, 0x6d, 0x10, 0x2a, 0x3a, 0xd8, 0xb0, 0x48, 0x72, 0x80, 0x06,
-  0x69, 0xa0, 0x06, 0x69, 0x30, 0xcc, 0x81, 0x94, 0x06, 0x75, 0xb0, 0x61,
-  0x68, 0x83, 0x38, 0xb0, 0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73,
-  0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x16, 0x02, 0x0f, 0xd0, 0x60, 0x0d,
-  0xd4, 0x60, 0x0e, 0x86, 0x39, 0x20, 0xd2, 0xa0, 0x0e, 0x36, 0x2c, 0x83,
-  0x1b, 0xa0, 0x41, 0x1a, 0xa8, 0xc1, 0x1b, 0x0c, 0x6f, 0x30, 0xa4, 0x01,
-  0x1c, 0x6c, 0x58, 0x24, 0x39, 0x40, 0x83, 0x34, 0x50, 0x83, 0x37, 0x18,
-  0xe6, 0x40, 0x4a, 0x83, 0x3a, 0xd8, 0x30, 0xe4, 0x81, 0x1e, 0xec, 0xc1,
-  0x86, 0xe1, 0x0e, 0xf8, 0x00, 0xd8, 0x50, 0x7c, 0x66, 0xd0, 0x07, 0x0f,
-  0x40, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0x6e, 0x82, 0x40, 0x44, 0x2c,
-  0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08, 0x84, 0x44, 0x63, 0x2e, 0xed,
-  0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda, 0xd9, 0xd7, 0x1c, 0xdd, 0x04,
-  0x81, 0x98, 0x36, 0x20, 0x7f, 0x00, 0x0a, 0xa1, 0x20, 0x0a, 0xa3, 0x70,
-  0x91, 0x42, 0x29, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b,
-  0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, 0xe4,
-  0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, 0xbb,
-  0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, 0x65,
-  0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0x4a,
-  0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, 0x1b,
-  0x2b, 0x9b, 0x9b, 0x12, 0x38, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0xe0,
-  0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6,
-  0xa6, 0x08, 0x9d, 0x18, 0xd4, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb,
-  0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x90, 0x41, 0x1d,
-  0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37,
-  0xba, 0xb9, 0x29, 0x41, 0x1f, 0x74, 0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab,
-  0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x12, 0x94, 0x02, 0x00, 0x00, 0x00,
-  0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c,
-  0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3,
-  0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6,
-  0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e,
-  0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43,
-  0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03,
-  0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48,
-  0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20,
-  0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e,
-  0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d,
-  0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89,
-  0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83,
-  0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68,
-  0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90,
-  0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78,
-  0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98,
-  0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5,
-  0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c,
-  0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c,
-  0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43,
-  0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43,
-  0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82,
-  0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70,
-  0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60,
-  0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x98, 0x81, 0x3c, 0xe4,
-  0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e, 0xf0, 0x00, 0x00, 0x00,
-  0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97,
-  0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25,
-  0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce,
-  0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0,
-  0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
-  0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
-  0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3,
-  0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7,
-  0x6d, 0x00, 0x09, 0x03, 0x20, 0x0d, 0xe7, 0x2c, 0x4e, 0x04, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x22, 0x77, 0x7b, 0xc5, 0xfa, 0xf6, 0xe0, 0x57,
-  0xf2, 0xd5, 0x26, 0x77, 0x38, 0x4e, 0x55, 0x30, 0x44, 0x58, 0x49, 0x4c,
-  0xf8, 0x08, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x3e, 0x02, 0x00, 0x00,
-  0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0xe0, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00,
-  0x35, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
-  0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49,
-  0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19,
-  0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42,
-  0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88,
-  0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42,
-  0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c,
-  0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00,
-  0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07,
-  0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20,
-  0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00,
-  0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42,
-  0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00,
-  0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04,
-  0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14,
-  0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00,
-  0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29,
-  0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1,
-  0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95,
-  0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e,
-  0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab,
-  0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11,
-  0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10,
-  0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a,
-  0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7,
-  0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b, 0x37, 0x1d, 0x08, 0x00,
-  0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79,
-  0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e,
-  0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
-  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07,
-  0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
-  0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07,
-  0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07,
-  0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07,
-  0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07,
-  0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07,
-  0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07,
-  0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20,
-  0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34,
-  0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4,
-  0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-  0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
+  0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14,
   0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
   0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22,
-  0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80, 0x02, 0x65, 0x50, 0x04,
-  0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0xf0,
-  0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e, 0x07, 0x80, 0xc0, 0x00,
-  0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00,
-  0x79, 0x18, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
-  0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
-  0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
-  0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
-  0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98,
-  0x20, 0x10, 0xc8, 0x06, 0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88,
-  0x64, 0xc3, 0x80, 0x24, 0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08,
-  0x65, 0x03, 0x42, 0x2c, 0x0c, 0x41, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36,
-  0x10, 0x00, 0xf0, 0x00, 0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04,
-  0x01, 0x60, 0xd2, 0x16, 0x96, 0xe6, 0x36, 0xf4, 0xc6, 0xf6, 0x26, 0x47,
-  0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38,
-  0x13, 0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10,
-  0xcb, 0x06, 0x41, 0x33, 0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64,
-  0xc4, 0xb5, 0x11, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a,
-  0x20, 0x14, 0xd1, 0x06, 0x41, 0xd3, 0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8,
-  0x35, 0x78, 0xc3, 0xf5, 0x4d, 0x10, 0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3,
-  0x93, 0xd4, 0x04, 0xa1, 0x90, 0x26, 0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8,
-  0x60, 0xc3, 0x12, 0x06, 0x62, 0x60, 0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18,
-  0x5c, 0x65, 0xb0, 0x61, 0xe0, 0xc0, 0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d,
-  0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34,
-  0xb0, 0x32, 0x6c, 0x0c, 0x86, 0x31, 0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c,
-  0x9d, 0x75, 0x61, 0xde, 0xe0, 0x0d, 0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31,
-  0xb0, 0x2e, 0xcc, 0x1b, 0xc6, 0x20, 0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4,
-  0x81, 0x1a, 0xac, 0xc1, 0x86, 0xe1, 0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c,
-  0x54, 0x1b, 0x40, 0x40, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2,
-  0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c,
-  0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1,
-  0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c,
-  0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6,
-  0x04, 0x49, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9,
-  0xb1, 0xb2, 0xb9, 0x29, 0xc1, 0x53, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad,
-  0xec, 0x2e, 0x89, 0x6c, 0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5,
-  0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73,
-  0xa3, 0x9b, 0x9b, 0x12, 0xb4, 0x01, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
+  0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50, 0x04, 0x85, 0x50, 0x06,
+  0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x25, 0x57, 0x14, 0x54, 0x4a, 0x62,
+  0x04, 0xa0, 0x0c, 0x8a, 0xa0, 0x10, 0xe8, 0xce, 0x00, 0x10, 0x9e, 0x01,
+  0xa0, 0x3c, 0x96, 0xc3, 0x30, 0xcf, 0xf3, 0x00, 0x10, 0x18, 0x00, 0x00,
+  0x88, 0x80, 0x10, 0x08, 0x06, 0x20, 0x28, 0x00, 0x79, 0x18, 0x00, 0x00,
+  0x91, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
+  0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
+  0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
+  0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
+  0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
+  0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60,
+  0x19, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc, 0x29, 0xb4, 0x30, 0xb2,
+  0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0x09,
+  0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88, 0x81, 0x01, 0x36, 0x04,
+  0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70, 0x61, 0x1c, 0xda, 0xe0,
+  0xec, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3, 0x34, 0x0d,
+  0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x36, 0x20,
+  0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04, 0x06, 0xdb, 0x30, 0x10,
+  0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86, 0x81, 0xe0, 0xb8, 0x0d,
+  0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90, 0x69, 0x1b, 0x02, 0x30,
+  0x60, 0xd2, 0x16, 0x96, 0xe6, 0x36, 0xf4, 0xc6, 0xf6, 0x26, 0x47, 0x04,
+  0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13,
+  0x84, 0x82, 0xda, 0x10, 0x10, 0x13, 0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6,
+  0x86, 0x85, 0x18, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c,
+  0x88, 0x32, 0x40, 0x03, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
+  0x44, 0x13, 0x84, 0xc2, 0xda, 0x20, 0x54, 0xd5, 0x86, 0x65, 0x50, 0x03,
+  0x32, 0x28, 0x03, 0x33, 0x28, 0x83, 0x61, 0x0d, 0x86, 0x32, 0x60, 0x03,
+  0x16, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10,
+  0xcf, 0x06, 0xa1, 0x82, 0x83, 0x0d, 0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06,
+  0x66, 0x50, 0x06, 0xc3, 0x1b, 0x48, 0x65, 0x10, 0x07, 0x1b, 0x86, 0x34,
+  0x68, 0x03, 0x39, 0xe0, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46,
+  0x97, 0xf6, 0xe6, 0xb6, 0x61, 0x21, 0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c,
+  0xde, 0x60, 0x78, 0x03, 0xa2, 0x0c, 0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01,
+  0x19, 0x94, 0x81, 0x19, 0xac, 0xc1, 0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1,
+  0x86, 0x45, 0x72, 0x03, 0x32, 0x28, 0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d,
+  0xa4, 0x32, 0x88, 0x83, 0x0d, 0x43, 0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18,
+  0xe6, 0x00, 0x0f, 0x80, 0x0d, 0xc5, 0x26, 0x06, 0x79, 0xf0, 0x00, 0x34,
+  0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0xe6, 0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd,
+  0x6d, 0x8e, 0x6e, 0x6e, 0x82, 0x40, 0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe,
+  0xd8, 0xc8, 0x68, 0xcc, 0xa5, 0x9d, 0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08,
+  0x69, 0x03, 0xb2, 0x07, 0x7c, 0xd0, 0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28,
+  0x84, 0x42, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37,
+  0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e,
+  0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63,
+  0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0,
+  0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48,
+  0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2,
+  0xb9, 0x29, 0x81, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c,
+  0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a,
+  0x90, 0x79, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8,
+  0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf,
+  0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e,
+  0x4a, 0x90, 0x07, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8,
+  0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xa1, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
   0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
   0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66,
   0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
   0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07,
   0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
   0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10,
@@ -563,75 +397,176 @@ const unsigned char g_mainColor[] = {
   0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
   0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
   0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f,
   0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f,
   0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x09, 0x03,
   0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x09, 0x03,
-  0x20, 0x0d, 0xe7, 0x2c, 0x4e, 0x04, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
-  0xcf, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x00, 0x00, 0x44, 0x8a, 0xab, 0x14, 0x0a, 0x61, 0x06, 0xa0,
-  0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00,
-  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1,
-  0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xdd, 0x21, 0x5d, 0x8f, 0x31,
-  0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x87, 0x4c, 0x18, 0x71, 0x8c,
-  0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x25, 0x54, 0xf6, 0x20, 0x23,
-  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0x81, 0x52, 0x69, 0x51, 0x32,
-  0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18, 0x2c, 0xdc, 0x36, 0x29,
-  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88, 0x01, 0xd3, 0x71, 0xc8,
-  0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x18, 0x34, 0x5d, 0x57,
-  0x31, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x90, 0x81, 0xe3, 0x79,
-  0x4a, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x3c, 0xdf,
-  0x57, 0x39, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3,
-  0x80, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
-  0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69,
-  0x30, 0x3d, 0x66, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a,
-  0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06,
-  0x8d, 0x1b, 0x60, 0x54, 0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10,
-  0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08,
-  0x82, 0x41, 0x33, 0x07, 0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a,
-  0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2,
-  0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x07, 0x0f, 0xce, 0xe0, 0x7a,
-  0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xf2, 0x00, 0x0d, 0xae,
-  0x25, 0xb0, 0xe0, 0x80, 0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00,
-  0x04, 0xc1, 0xe0, 0xe1, 0x83, 0x35, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01,
-  0x40, 0x10, 0x0c, 0x9e, 0x3e, 0x60, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0,
-  0x63, 0xd9, 0x27, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40,
-  0xe1, 0x0d, 0xbe, 0x2a, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27,
-  0x14, 0xe0, 0xe0, 0x8b, 0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2,
-  0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x14, 0xe6, 0x60, 0x0c,
-  0xb0, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0xa0, 0x83,
-  0x31, 0xa0, 0x02, 0x0b, 0x20, 0xe8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
-  0x41, 0x83, 0x0a, 0x72, 0xe0, 0x06, 0x74, 0x30, 0x9a, 0x10, 0x00, 0xa3,
-  0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70,
-  0x00, 0x20, 0x08, 0x06, 0x4d, 0x2b, 0xdc, 0xc1, 0x1c, 0xe8, 0xc1, 0x68,
-  0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10,
-  0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0xb2, 0xc0, 0x07, 0x78,
-  0xc0, 0x0a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83,
-  0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0xdc,
-  0x42, 0x28, 0xf4, 0x81, 0x2c, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10,
-  0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0xd8, 0x14, 0x06, 0xf2, 0x19,
-  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x17, 0x56, 0xc1, 0x7b, 0x82,
-  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x7a, 0x81, 0x15, 0xb6, 0x25,
-  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x17, 0x5a, 0x01, 0x3b,
-  0x02, 0xb3, 0xca, 0x40, 0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xf0,
-  0x80, 0xc3, 0x2b, 0x88, 0x81, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82,
-  0xc1, 0x13, 0x0e, 0xb0, 0xf0, 0x39, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20,
-  0x18, 0x3c, 0xe2, 0x10, 0x0b, 0x9c, 0x12, 0x58, 0x96, 0x06, 0xf2, 0x19,
-  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x1c, 0x66, 0xc1, 0x0c, 0xaa,
-  0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x72, 0xa0, 0x85, 0x31,
-  0x88, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xcc, 0xa1, 0x16,
-  0xc0, 0xa0, 0x09, 0x8c, 0x6b, 0x03, 0xf9, 0x8c, 0x18, 0x20, 0x00, 0x08,
-  0x82, 0xc1, 0x83, 0x0e, 0xb7, 0xa0, 0x06, 0x58, 0x30, 0x62, 0x80, 0x00,
-  0x20, 0x08, 0x06, 0x4f, 0x3a, 0xe0, 0xc2, 0x19, 0x50, 0xc1, 0x88, 0x01,
-  0x02, 0x80, 0x20, 0x18, 0x3c, 0xea, 0x90, 0x0b, 0x64, 0x00, 0x05, 0x23,
-  0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a,
-  0x80, 0x43, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4,
-  0x02, 0x3a, 0xa0, 0x03, 0x2d, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
-  0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0xf8, 0x42, 0x31, 0x62, 0x90,
-  0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0xc3, 0x2f,
-  0x04, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa4,
-  0x03, 0x3a, 0x80, 0x43, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
-  0xd2, 0x0e, 0xb9, 0x90, 0x0e, 0xe8, 0x40, 0x0b, 0xac, 0x30, 0x62, 0x90,
-  0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0xc2, 0x38, 0xa0, 0x03, 0x38,
-  0xc4, 0xc2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xed, 0x90, 0x0b,
-  0xe3, 0x80, 0x0e, 0xb4, 0x00, 0x0b, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
-  0x80, 0xb4, 0x43, 0x2e, 0x8c, 0x03, 0x3a, 0xf8, 0xc2, 0x2b, 0x8c, 0x18,
-  0x24, 0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x30, 0x0e, 0xe8, 0xf0,
-  0x0b, 0xae, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
+  0x20, 0x0d, 0xe7, 0x2c, 0x4e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x68, 0x55, 0xad, 0x6b, 0x0e, 0x7d, 0x04, 0xa1, 0x4c, 0xff, 0x9d, 0x3a,
+  0xe0, 0x6d, 0xc8, 0x4d, 0x44, 0x58, 0x49, 0x4c, 0xe0, 0x07, 0x00, 0x00,
+  0x60, 0x00, 0x01, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
+  0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00,
+  0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00,
+  0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
+  0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39,
+  0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62,
+  0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14,
+  0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20,
+  0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90,
+  0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a,
+  0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d,
+  0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff,
+  0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00,
+  0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06,
+  0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+  0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84,
+  0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c,
+  0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66,
+  0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14,
+  0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f,
+  0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6,
+  0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42,
+  0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42,
+  0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4,
+  0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03,
+  0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a,
+  0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99,
+  0x24, 0x14, 0x58, 0xba, 0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0,
+  0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0,
+  0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d,
+  0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
+  0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78,
+  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a,
+  0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
+  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74,
+  0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
+  0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6,
+  0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78,
+  0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76,
+  0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01,
+  0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90,
+  0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50,
+  0x0e, 0xc5, 0x50, 0x80, 0x01, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24,
+  0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1,
+  0x1c, 0x86, 0x79, 0x9e, 0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84,
+  0x40, 0x30, 0x00, 0x41, 0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
+  0x63, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
+  0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
+  0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
+  0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
+  0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0x98, 0x20, 0x10, 0xc8, 0x06,
+  0x61, 0x30, 0x28, 0xd8, 0xcd, 0x4d, 0x10, 0x88, 0x64, 0xc3, 0x80, 0x24,
+  0xc4, 0x04, 0x01, 0x9b, 0x08, 0x4c, 0x10, 0x08, 0x65, 0x03, 0x42, 0x2c,
+  0x0c, 0x41, 0x0c, 0x0d, 0xb0, 0x21, 0x70, 0x36, 0x10, 0x00, 0xf0, 0x00,
+  0x13, 0x84, 0x8c, 0xda, 0x10, 0x44, 0x13, 0x04, 0x01, 0x60, 0xd2, 0x16,
+  0x96, 0xe6, 0x36, 0xf4, 0xc6, 0xf6, 0x26, 0x47, 0x04, 0xea, 0x69, 0x2a,
+  0x89, 0x2a, 0xe9, 0xc9, 0x69, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9,
+  0x10, 0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x41, 0x33,
+  0x36, 0x2c, 0x44, 0x65, 0x5d, 0xd8, 0x35, 0x64, 0xc4, 0xb5, 0x11, 0xa1,
+  0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd1, 0x06,
+  0x41, 0xd3, 0x36, 0x2c, 0x43, 0x67, 0x5d, 0xd8, 0x35, 0x78, 0xc3, 0xf5,
+  0x4d, 0x10, 0x08, 0x86, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0xa1,
+  0x90, 0x26, 0x08, 0x44, 0xb3, 0x41, 0xd0, 0xc8, 0x60, 0xc3, 0x12, 0x06,
+  0x62, 0x60, 0x5d, 0xd8, 0x35, 0x8c, 0x41, 0x18, 0x5c, 0x65, 0xb0, 0x61,
+  0xe0, 0xc0, 0xc0, 0x0c, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5,
+  0xd1, 0xa5, 0xbd, 0xb9, 0x6d, 0x58, 0x08, 0x34, 0xb0, 0x32, 0x6c, 0x0c,
+  0x86, 0x31, 0x20, 0xae, 0x32, 0xd8, 0xb0, 0x0c, 0x9d, 0x75, 0x61, 0xde,
+  0xe0, 0x0d, 0xd7, 0xb7, 0x61, 0x09, 0x03, 0x31, 0xb0, 0x2e, 0xcc, 0x1b,
+  0xc6, 0x20, 0x0c, 0xae, 0x32, 0xd8, 0x30, 0xa4, 0x81, 0x1a, 0xac, 0xc1,
+  0x86, 0xe1, 0x0c, 0xd8, 0x00, 0xd8, 0x50, 0x4c, 0x54, 0x1b, 0x40, 0x40,
+  0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29,
+  0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd,
+  0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b,
+  0x93, 0x9b, 0x12, 0x18, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
+  0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x49, 0x19, 0x32,
+  0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29,
+  0xc1, 0x53, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c,
+  0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x10, 0xd5, 0x21, 0xc3, 0x73, 0x29,
+  0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x9b, 0x9b, 0x12,
+  0xb4, 0x01, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
+  0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
+  0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
+  0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
+  0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30,
+  0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8,
+  0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b,
+  0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76,
+  0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e,
+  0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e,
+  0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61,
+  0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4,
+  0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76,
+  0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37,
+  0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76,
+  0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71,
+  0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e,
+  0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1,
+  0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61,
+  0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90,
+  0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8,
+  0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc,
+  0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8,
+  0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b,
+  0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a,
+  0x98, 0x81, 0x3c, 0xe4, 0x80, 0x0f, 0x6e, 0x40, 0x0f, 0xe5, 0xd0, 0x0e,
+  0xf0, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
+  0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44,
+  0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05,
+  0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34,
+  0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c,
+  0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
+  0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
+  0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
+  0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x09, 0x03, 0x20, 0x0d, 0xe7, 0x2c,
+  0x4e, 0x04, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+  0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+  0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a,
+  0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
+  0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
+  0x20, 0x18, 0x18, 0x1d, 0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x86, 0x97, 0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08,
+  0x82, 0x81, 0xf1, 0x29, 0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82,
+  0x60, 0x60, 0x80, 0xc1, 0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00,
+  0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09,
+  0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90,
+  0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06,
+  0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
+  0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
+  0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
+  0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
+  0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54,
+  0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2,
+  0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
+  0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
+  0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
+  0x10, 0x04, 0x83, 0x07, 0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
+  0x00, 0x41, 0x30, 0x78, 0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80,
+  0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
+  0x03, 0x34, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
+  0x3e, 0x48, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
+  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a,
+  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b,
+  0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
+  0x10, 0x04, 0x83, 0x87, 0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
+  0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b,
+  0x20, 0xe8, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76,
+  0x40, 0x0a, 0xa4, 0xc0, 0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
+  0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07,
+  0xc5, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4,
+  0x40, 0x0a, 0x7b, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92,
+  0x0a, 0x76, 0x50, 0x0a, 0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0,
+  0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f,
+  0x40, 0x0a, 0x7c, 0xd0, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
+  0xa4, 0x82, 0x1d, 0xfc, 0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07,
+  0x6b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1,
+  0x1f, 0x90, 0xc2, 0x1e, 0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 };

+ 130 - 195
src/render/direct3d12/D3D12_VertexShader_Texture.h

@@ -4,8 +4,8 @@
 ;
 ;
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
 ;
 ;
@@ -14,12 +14,12 @@
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; Name                 Index   Mask Register SysValue  Format   Used
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; -------------------- ----- ------ -------- -------- ------- ------
 ; SV_Position              0   xyzw        0      POS   float   xyzw
 ; 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
 ; COLOR                    0   xyzw        2     NONE   float   xyzw
 ;
 ;
-; shader hash: 7f8c3671c1e371d576491c30d501882a
+; shader hash: c6001978fd780410844d97ce5efb7d9e
 ;
 ;
-; Pipeline Runtime Information: 
+; Pipeline Runtime Information:
 ;
 ;
 ; Vertex Shader
 ; Vertex Shader
 ; OutputPositionPresent=1
 ; OutputPositionPresent=1
@@ -29,17 +29,17 @@
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; Name                 Index             InterpMode DynIdx
 ; -------------------- ----- ---------------------- ------
 ; -------------------- ----- ---------------------- ------
-; POSITION                 0                              
-; TEXCOORD                 0                              
-; COLOR                    0                              
+; POSITION                 0
+; TEXCOORD                 0
+; COLOR                    0
 ;
 ;
 ; Output signature:
 ; Output signature:
 ;
 ;
 ; Name                 Index             InterpMode DynIdx
 ; 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:
 ; Buffer Definitions:
 ;
 ;
@@ -49,10 +49,9 @@
 ;   struct hostlayout.VertexShaderConstants
 ;   struct hostlayout.VertexShaderConstants
 ;   {
 ;   {
 ;
 ;
-;       row_major float4x4 model;                     ; Offset:    0
-;       row_major float4x4 projectionAndView;         ; Offset:   64
-;   
-;   } VertexShaderConstants;                          ; Offset:    0 Size:   128
+;       row_major float4x4 mpv;                       ; Offset:    0
+;
+;   } VertexShaderConstants;                          ; Offset:    0 Size:    64
 ;
 ;
 ; }
 ; }
 ;
 ;
@@ -85,7 +84,7 @@ target triple = "dxil-ms-dx"
 
 
 %dx.types.Handle = type { i8* }
 %dx.types.Handle = type { i8* }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
 %dx.types.CBufRet.f32 = type { float, float, float, float }
-%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
+%hostlayout.VertexShaderConstants = type { [4 x <4 x float>] }
 
 
 define void @mainTexture() {
 define void @mainTexture() {
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
   %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
@@ -134,46 +133,10 @@ define void @mainTexture() {
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
   %46 = fadd fast float %45, %30
   %46 = fadd fast float %45, %30
-  %47 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
-  %48 = extractvalue %dx.types.CBufRet.f32 %47, 0
-  %49 = extractvalue %dx.types.CBufRet.f32 %47, 1
-  %50 = extractvalue %dx.types.CBufRet.f32 %47, 2
-  %51 = extractvalue %dx.types.CBufRet.f32 %47, 3
-  %52 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 5)  ; CBufferLoadLegacy(handle,regIndex)
-  %53 = extractvalue %dx.types.CBufRet.f32 %52, 0
-  %54 = extractvalue %dx.types.CBufRet.f32 %52, 1
-  %55 = extractvalue %dx.types.CBufRet.f32 %52, 2
-  %56 = extractvalue %dx.types.CBufRet.f32 %52, 3
-  %57 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 6)  ; CBufferLoadLegacy(handle,regIndex)
-  %58 = extractvalue %dx.types.CBufRet.f32 %57, 0
-  %59 = extractvalue %dx.types.CBufRet.f32 %57, 1
-  %60 = extractvalue %dx.types.CBufRet.f32 %57, 2
-  %61 = extractvalue %dx.types.CBufRet.f32 %57, 3
-  %62 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 7)  ; CBufferLoadLegacy(handle,regIndex)
-  %63 = extractvalue %dx.types.CBufRet.f32 %62, 0
-  %64 = extractvalue %dx.types.CBufRet.f32 %62, 1
-  %65 = extractvalue %dx.types.CBufRet.f32 %62, 2
-  %66 = extractvalue %dx.types.CBufRet.f32 %62, 3
-  %67 = fmul fast float %48, %34
-  %68 = call float @dx.op.tertiary.f32(i32 46, float %38, float %53, float %67)  ; FMad(a,b,c)
-  %69 = call float @dx.op.tertiary.f32(i32 46, float %42, float %58, float %68)  ; FMad(a,b,c)
-  %70 = call float @dx.op.tertiary.f32(i32 46, float %46, float %63, float %69)  ; FMad(a,b,c)
-  %71 = fmul fast float %49, %34
-  %72 = call float @dx.op.tertiary.f32(i32 46, float %38, float %54, float %71)  ; FMad(a,b,c)
-  %73 = call float @dx.op.tertiary.f32(i32 46, float %42, float %59, float %72)  ; FMad(a,b,c)
-  %74 = call float @dx.op.tertiary.f32(i32 46, float %46, float %64, float %73)  ; FMad(a,b,c)
-  %75 = fmul fast float %50, %34
-  %76 = call float @dx.op.tertiary.f32(i32 46, float %38, float %55, float %75)  ; FMad(a,b,c)
-  %77 = call float @dx.op.tertiary.f32(i32 46, float %42, float %60, float %76)  ; FMad(a,b,c)
-  %78 = call float @dx.op.tertiary.f32(i32 46, float %46, float %65, float %77)  ; FMad(a,b,c)
-  %79 = fmul fast float %51, %34
-  %80 = call float @dx.op.tertiary.f32(i32 46, float %38, float %56, float %79)  ; FMad(a,b,c)
-  %81 = call float @dx.op.tertiary.f32(i32 46, float %42, float %61, float %80)  ; FMad(a,b,c)
-  %82 = call float @dx.op.tertiary.f32(i32 46, float %46, float %66, float %81)  ; FMad(a,b,c)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %70)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %74)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %78)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
-  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %34)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %38)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %42)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
+  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %46)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
   call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
@@ -216,7 +179,7 @@ attributes #2 = { nounwind readonly }
 !3 = !{!"vs", i32 6, i32 0}
 !3 = !{!"vs", i32 6, i32 0}
 !4 = !{null, null, !5, null}
 !4 = !{null, null, !5, null}
 !5 = !{!6}
 !5 = !{!6}
-!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
+!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 64, null}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 !8 = !{void ()* @mainTexture, !"mainTexture", !9, !4, null}
 !8 = !{void ()* @mainTexture, !"mainTexture", !9, !4, null}
 !9 = !{!10, !18, null}
 !9 = !{!10, !18, null}
@@ -236,12 +199,12 @@ attributes #2 = { nounwind readonly }
 #endif
 #endif
 
 
 const unsigned char g_mainTexture[] = {
 const unsigned char g_mainTexture[] = {
-  0x44, 0x58, 0x42, 0x43, 0x12, 0xd5, 0x3f, 0xab, 0x0b, 0x9f, 0x8a, 0x6b,
-  0x65, 0x92, 0xc1, 0x03, 0x4c, 0xf8, 0xe0, 0x55, 0x01, 0x00, 0x00, 0x00,
-  0x00, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0x44, 0x58, 0x42, 0x43, 0x9d, 0xf0, 0x72, 0x12, 0x6c, 0x2b, 0x04, 0x9d,
+  0x85, 0xd2, 0xd2, 0x4a, 0x39, 0x19, 0x03, 0x4d, 0x01, 0x00, 0x00, 0x00,
+  0xb8, 0x11, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
   0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00,
-  0x88, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0xe0, 0x09, 0x00, 0x00,
-  0xfc, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
+  0x88, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0xb0, 0x09, 0x00, 0x00,
+  0xcc, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -297,17 +260,17 @@ const unsigned char g_mainTexture[] = {
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x05, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
   0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-  0x53, 0x54, 0x41, 0x54, 0xa8, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
-  0xaa, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0x90, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
-  0x21, 0x0c, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
+  0x53, 0x54, 0x41, 0x54, 0x78, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
+  0x9e, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
+  0x21, 0x0c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
   0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
   0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
   0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
   0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
   0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
@@ -332,8 +295,8 @@ const unsigned char g_mainTexture[] = {
   0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
   0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
   0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
   0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
   0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
   0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
-  0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b,
-  0x37, 0x1d, 0x08, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
+  0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba,
+  0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
   0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
   0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
   0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
   0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
   0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
   0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
@@ -351,67 +314,63 @@ const unsigned char g_mainTexture[] = {
   0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x12, 0x00, 0x00, 0x00,
   0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
   0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
-  0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x28, 0x50,
-  0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0x05, 0x18, 0x50, 0x1e, 0x85,
-  0x51, 0xba, 0x01, 0x45, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08,
-  0x0a, 0x81, 0x62, 0x0d, 0xd0, 0x9d, 0x01, 0x20, 0x3c, 0x03, 0x40, 0x79,
-  0x2c, 0x87, 0x61, 0x9e, 0xe7, 0x01, 0x20, 0x30, 0x00, 0x00, 0x10, 0x01,
-  0x21, 0x10, 0x0c, 0x40, 0x50, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00,
-  0x9c, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44,
-  0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24, 0xc6, 0xe5, 0xc6, 0x45,
-  0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04, 0xa5, 0x46, 0x86, 0x2c,
-  0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43, 0x10, 0x4c, 0x10, 0x08,
-  0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8, 0x20, 0x10, 0x04, 0x05,
-  0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e, 0x84, 0x98, 0x20, 0x60,
-  0x1b, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc, 0x29, 0xb4, 0x30, 0xb2,
-  0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0xb9, 0x09,
-  0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88, 0x81, 0x01, 0x36, 0x04,
-  0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70, 0x69, 0x2c, 0xda, 0xde,
-  0xc8, 0xca, 0xd8, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96, 0x0d, 0xc3,
-  0x34, 0x0d, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70,
-  0x26, 0x08, 0x51, 0xb6, 0x41, 0x41, 0x22, 0x89, 0xaa, 0x08, 0xeb, 0xba,
-  0x30, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-  0x41, 0x6e, 0x64, 0x56, 0x69, 0x65, 0x77, 0x13, 0x04, 0xe2, 0xd9, 0xa0,
-  0x20, 0x9a, 0x44, 0x55, 0x9b, 0x75, 0x5d, 0xd8, 0x86, 0x81, 0xc9, 0xb8,
-  0x0d, 0x03, 0x01, 0x75, 0x13, 0x04, 0x01, 0xd8, 0x00, 0x6c, 0x18, 0x08,
-  0x30, 0x00, 0x83, 0x0d, 0x41, 0x18, 0x6c, 0x18, 0x86, 0x4f, 0x0c, 0x26,
-  0x08, 0x19, 0xb7, 0x21, 0x20, 0x03, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x54,
-  0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x44, 0xa0, 0x9e, 0xa6, 0x92, 0xa8,
-  0x92, 0x9e, 0x9c, 0x26, 0x08, 0x05, 0x35, 0x41, 0x28, 0xaa, 0x0d, 0x01,
-  0x31, 0x41, 0x28, 0xac, 0x0d, 0x42, 0x65, 0x6d, 0x58, 0x88, 0x33, 0x40,
-  0x83, 0x34, 0x50, 0x83, 0x34, 0x18, 0xd6, 0x80, 0x48, 0x03, 0x36, 0x20,
-  0x42, 0x55, 0x84, 0x35, 0xf4, 0xf4, 0x24, 0x45, 0x34, 0x41, 0x28, 0xae,
-  0x0d, 0x42, 0x55, 0x6d, 0x58, 0x06, 0x37, 0x40, 0x83, 0x34, 0x50, 0x83,
-  0x34, 0x18, 0xde, 0x60, 0x48, 0x03, 0x38, 0x60, 0x31, 0xf4, 0xc4, 0xf4,
-  0x24, 0x35, 0x41, 0x28, 0xb0, 0x09, 0x02, 0x01, 0x6d, 0x10, 0x2a, 0x3a,
-  0xd8, 0xb0, 0x48, 0x72, 0x80, 0x06, 0x69, 0xa0, 0x06, 0x69, 0x30, 0xcc,
-  0x81, 0x94, 0x06, 0x75, 0xb0, 0x61, 0x68, 0x83, 0x38, 0xb0, 0x03, 0x2e,
-  0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1b,
-  0x16, 0x02, 0x0f, 0xd0, 0x60, 0x0d, 0xd4, 0x60, 0x0e, 0x86, 0x39, 0x20,
-  0xd2, 0xa0, 0x0e, 0x36, 0x2c, 0x83, 0x1b, 0xa0, 0x41, 0x1a, 0xa8, 0xc1,
-  0x1b, 0x0c, 0x6f, 0x30, 0xa4, 0x01, 0x1c, 0x6c, 0x58, 0x24, 0x39, 0x40,
-  0x83, 0x34, 0x50, 0x83, 0x37, 0x18, 0xe6, 0x40, 0x4a, 0x83, 0x3a, 0xd8,
-  0x30, 0xe4, 0x81, 0x1e, 0xec, 0xc1, 0x86, 0xe1, 0x0e, 0xf8, 0x00, 0xd8,
-  0x50, 0x7c, 0x66, 0xd0, 0x07, 0x0f, 0x40, 0xc3, 0x8c, 0xed, 0x2d, 0x8c,
-  0x6e, 0x6e, 0x82, 0x40, 0x44, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26,
-  0x08, 0x84, 0x44, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c,
-  0xda, 0xd9, 0xd7, 0x1c, 0xdd, 0x04, 0x81, 0x98, 0x36, 0x20, 0x7f, 0x00,
-  0x0a, 0xa1, 0x20, 0x0a, 0xa3, 0x70, 0x91, 0x42, 0x29, 0x54, 0x61, 0x63,
-  0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55,
-  0xc8, 0xf0, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04,
-  0x44, 0x13, 0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29,
-  0x41, 0x51, 0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae,
-  0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91,
-  0x2b, 0x9b, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x38, 0x95,
-  0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8,
-  0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x9d, 0x18, 0xd4, 0x21,
-  0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3,
-  0x2b, 0x9b, 0x12, 0x90, 0x41, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a,
-  0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x41, 0x1f, 0x74,
-  0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b,
-  0x12, 0x94, 0x02, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
+  0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x18, 0x50,
+  0x04, 0x85, 0x50, 0x06, 0xe5, 0x50, 0x12, 0xe5, 0x51, 0x10, 0x25, 0x57,
+  0x14, 0x54, 0x4a, 0x62, 0x04, 0xa0, 0x0c, 0x8a, 0xa0, 0x10, 0xe8, 0xce,
+  0x00, 0x10, 0x9e, 0x01, 0xa0, 0x3c, 0x96, 0xc3, 0x30, 0xcf, 0xf3, 0x00,
+  0x10, 0x18, 0x00, 0x00, 0x88, 0x80, 0x10, 0x08, 0x06, 0x20, 0x28, 0x00,
+  0x79, 0x18, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90,
+  0x46, 0x02, 0x13, 0x44, 0x8f, 0x0c, 0x6f, 0xec, 0xed, 0x4d, 0x0c, 0x24,
+  0xc6, 0xe5, 0xc6, 0x45, 0x66, 0x06, 0x06, 0xc7, 0x25, 0xc6, 0x06, 0x04,
+  0xa5, 0x46, 0x86, 0x2c, 0x2c, 0xe6, 0xa6, 0x4c, 0x26, 0x27, 0x65, 0x43,
+  0x10, 0x4c, 0x10, 0x08, 0x63, 0x82, 0x40, 0x1c, 0x1b, 0x84, 0x81, 0xd8,
+  0x20, 0x10, 0x04, 0x05, 0xbb, 0xb9, 0x09, 0x02, 0x81, 0x6c, 0x18, 0x0e,
+  0x84, 0x98, 0x20, 0x60, 0x19, 0x2b, 0xab, 0x32, 0x39, 0xba, 0x32, 0xbc,
+  0x29, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa1, 0x37, 0xb7, 0x39, 0xba, 0x30,
+  0x37, 0xba, 0xb9, 0x09, 0x02, 0x91, 0x6c, 0x40, 0x08, 0x65, 0x21, 0x88,
+  0x81, 0x01, 0x36, 0x04, 0xcd, 0x06, 0x02, 0x00, 0x1c, 0x60, 0x82, 0x70,
+  0x61, 0x1c, 0xda, 0xe0, 0xec, 0x26, 0x08, 0x84, 0x32, 0x41, 0x20, 0x96,
+  0x0d, 0xc3, 0x34, 0x0d, 0x13, 0x04, 0x82, 0x99, 0x20, 0x10, 0xcd, 0x04,
+  0x81, 0x70, 0x36, 0x20, 0x48, 0x24, 0x51, 0x15, 0x61, 0x5d, 0x1b, 0x04,
+  0x06, 0xdb, 0x30, 0x10, 0x50, 0x36, 0x41, 0x10, 0x80, 0x0d, 0xc0, 0x86,
+  0x81, 0xe0, 0xb8, 0x0d, 0x41, 0xb7, 0x61, 0x18, 0x36, 0x6f, 0x82, 0x90,
+  0x69, 0x1b, 0x02, 0x30, 0xe0, 0xd2, 0x16, 0x96, 0xe6, 0x46, 0x55, 0x86,
+  0x47, 0x57, 0x27, 0x57, 0x46, 0x04, 0xea, 0x69, 0x2a, 0x89, 0x2a, 0xe9,
+  0xc9, 0x69, 0x82, 0x50, 0x4c, 0x13, 0x84, 0x82, 0xda, 0x10, 0x10, 0x13,
+  0x84, 0xa2, 0xda, 0x20, 0x54, 0xd6, 0x86, 0x85, 0x18, 0x03, 0x32, 0x28,
+  0x03, 0x33, 0x28, 0x83, 0xe1, 0x0c, 0x88, 0x32, 0x40, 0x03, 0x22, 0x54,
+  0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0xc2, 0xda, 0x20,
+  0x54, 0xd5, 0x86, 0x65, 0x50, 0x03, 0x32, 0x28, 0x03, 0x33, 0x28, 0x83,
+  0x61, 0x0d, 0x86, 0x32, 0x60, 0x03, 0x16, 0x43, 0x4f, 0x4c, 0x4f, 0x52,
+  0x13, 0x84, 0xe2, 0x9a, 0x20, 0x10, 0xcf, 0x06, 0xa1, 0x82, 0x83, 0x0d,
+  0x8b, 0xe4, 0x06, 0x64, 0x50, 0x06, 0x66, 0x50, 0x06, 0xc3, 0x1b, 0x48,
+  0x65, 0x10, 0x07, 0x1b, 0x86, 0x34, 0x68, 0x03, 0x39, 0xe0, 0x32, 0x65,
+  0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0x61, 0x21,
+  0xe8, 0x80, 0x0c, 0xce, 0xc0, 0x0c, 0xde, 0x60, 0x78, 0x03, 0xa2, 0x0c,
+  0xe2, 0x60, 0xc3, 0x32, 0xa8, 0x01, 0x19, 0x94, 0x81, 0x19, 0xac, 0xc1,
+  0xb0, 0x06, 0x43, 0x19, 0xb0, 0xc1, 0x86, 0x45, 0x72, 0x03, 0x32, 0x28,
+  0x03, 0x33, 0x58, 0x83, 0xe1, 0x0d, 0xa4, 0x32, 0x88, 0x83, 0x0d, 0x43,
+  0x1d, 0xd8, 0xc1, 0x1d, 0x6c, 0x18, 0xe6, 0x00, 0x0f, 0x80, 0x0d, 0xc5,
+  0x26, 0x06, 0x79, 0xf0, 0x00, 0x34, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0xe6,
+  0x26, 0x08, 0x04, 0xc4, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x6e, 0x82, 0x40,
+  0x44, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8, 0xc8, 0x68, 0xcc, 0xa5, 0x9d,
+  0x7d, 0xcd, 0xd1, 0x4d, 0x10, 0x08, 0x69, 0x03, 0xb2, 0x07, 0x7c, 0xd0,
+  0x07, 0x7e, 0xf0, 0x07, 0x17, 0x28, 0x84, 0x42, 0x15, 0x36, 0x36, 0xbb,
+  0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c,
+  0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34,
+  0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14,
+  0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde,
+  0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2,
+  0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29, 0x81, 0x53, 0x89, 0x0c,
+  0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c,
+  0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0x90, 0x79, 0x75, 0xc8, 0xf0, 0x5c,
+  0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6,
+  0x04, 0x60, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f,
+  0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x07, 0x5d, 0xc8, 0xf0,
+  0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xa1,
+  0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
   0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
   0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88,
   0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
   0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73,
   0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
   0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e,
@@ -447,12 +406,12 @@ const unsigned char g_mainTexture[] = {
   0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
   0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
   0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
   0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
   0x13, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
   0x13, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
-  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x8c, 0x36, 0x71,
-  0xc1, 0xe3, 0x71, 0xd5, 0x76, 0x49, 0x1c, 0x30, 0xd5, 0x01, 0x88, 0x2a,
-  0x44, 0x58, 0x49, 0x4c, 0xfc, 0x08, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
-  0x3f, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0xe4, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
-  0x21, 0x0c, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
+  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x19, 0x78,
+  0xfd, 0x78, 0x04, 0x10, 0x84, 0x4d, 0x97, 0xce, 0x5e, 0xfb, 0x7d, 0x9e,
+  0x44, 0x58, 0x49, 0x4c, 0xe4, 0x07, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00,
+  0xf9, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0xcc, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
+  0x21, 0x0c, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
   0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
   0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
   0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
   0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
   0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02,
@@ -477,8 +436,8 @@ const unsigned char g_mainTexture[] = {
   0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
   0x31, 0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e,
   0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
   0x04, 0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6,
   0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
   0x05, 0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80,
-  0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b,
-  0x37, 0x1d, 0x08, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
+  0x81, 0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x14, 0x58, 0xba,
+  0xe9, 0x40, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87,
   0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
   0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50,
   0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
   0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30,
   0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
   0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0,
@@ -499,7 +458,7 @@ const unsigned char g_mainTexture[] = {
   0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00,
   0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
   0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47,
   0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80,
   0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0e, 0xc5, 0x50, 0x80,
-  0x02, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0,
+  0x01, 0x65, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0,
   0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e,
   0x08, 0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e,
   0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41,
   0x07, 0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41,
   0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
@@ -571,20 +530,20 @@ const unsigned char g_mainTexture[] = {
   0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
   0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
   0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
   0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00,
   0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
   0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0b, 0x03, 0x20, 0x4d, 0x4b, 0x5c,
-  0x13, 0x15, 0x11, 0x00, 0x61, 0x20, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00,
+  0x13, 0x15, 0x11, 0x00, 0x61, 0x20, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
   0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
   0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x44, 0x8a, 0xab, 0x14, 0x0a, 0x61, 0x06, 0xa0, 0xec, 0x4a, 0x8e, 0x4a,
+  0x44, 0x4a, 0xa1, 0x10, 0x66, 0x00, 0x8a, 0xab, 0xec, 0x4a, 0x8e, 0x4a,
   0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
   0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
   0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
   0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80,
-  0x20, 0x18, 0x18, 0xdd, 0x21, 0x5d, 0x8f, 0x31, 0x62, 0x90, 0x00, 0x20,
-  0x08, 0x06, 0x86, 0x87, 0x4c, 0x18, 0x71, 0x8c, 0x18, 0x24, 0x00, 0x08,
-  0x82, 0x81, 0xf1, 0x25, 0x54, 0xf6, 0x20, 0x23, 0x06, 0x09, 0x00, 0x82,
-  0x60, 0x60, 0x80, 0x81, 0x52, 0x69, 0x51, 0x32, 0x62, 0x90, 0x00, 0x20,
-  0x08, 0x06, 0x46, 0x18, 0x2c, 0xdc, 0x36, 0x29, 0x23, 0x06, 0x09, 0x00,
-  0x82, 0x60, 0x60, 0x88, 0x01, 0xd3, 0x71, 0xc8, 0x32, 0x62, 0x90, 0x00,
-  0x20, 0x08, 0x06, 0xc6, 0x18, 0x34, 0x5d, 0x57, 0x31, 0x23, 0x06, 0x09,
-  0x00, 0x82, 0x60, 0x60, 0x90, 0x81, 0xe3, 0x79, 0x4a, 0x33, 0x62, 0x90,
-  0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x3c, 0xdf, 0x57, 0x39, 0x23, 0x06,
+  0x20, 0x18, 0x18, 0x1d, 0x22, 0x5d, 0xcf, 0x31, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x86, 0x97, 0x4c, 0x18, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08,
+  0x82, 0x81, 0xf1, 0x29, 0x54, 0xf6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82,
+  0x60, 0x60, 0x80, 0xc1, 0x52, 0x69, 0x91, 0x32, 0x62, 0x90, 0x00, 0x20,
+  0x08, 0x06, 0x46, 0x18, 0x30, 0xdc, 0x36, 0x2d, 0x23, 0x06, 0x09, 0x00,
+  0x82, 0x60, 0x60, 0x88, 0x41, 0xd3, 0x71, 0x08, 0x33, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0xc6, 0x18, 0x38, 0x5d, 0x57, 0x35, 0x23, 0x06, 0x09,
+  0x00, 0x82, 0x60, 0x60, 0x90, 0xc1, 0xe3, 0x79, 0x8a, 0x33, 0x62, 0x90,
+  0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x40, 0xdf, 0x57, 0x3d, 0x23, 0x06,
   0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
   0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42,
   0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
   0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
   0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
   0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30,
@@ -594,52 +553,28 @@ const unsigned char g_mainTexture[] = {
   0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
   0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07,
   0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
   0x5d, 0xb6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
   0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
   0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00,
-  0x10, 0x04, 0x83, 0x07, 0x0f, 0xce, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
-  0x00, 0x41, 0x30, 0x78, 0xf2, 0x00, 0x0d, 0xae, 0x25, 0xb0, 0xe0, 0x80,
+  0x10, 0x04, 0x83, 0x07, 0x0f, 0xc8, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04,
+  0x00, 0x41, 0x30, 0x78, 0xf2, 0xa0, 0x0c, 0xae, 0x25, 0xb0, 0xe0, 0x80,
   0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
   0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1,
-  0x83, 0x35, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
-  0x3e, 0x60, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
-  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0xe1, 0x0d, 0xbe, 0x2a,
-  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xe0, 0xe0, 0x8b,
+  0x03, 0x34, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
+  0x3e, 0x48, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f,
+  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0x81, 0x0d, 0xbe, 0x2a,
+  0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xda, 0xe0, 0x8b,
   0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
   0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00,
-  0x10, 0x04, 0x83, 0x87, 0x14, 0xe6, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
-  0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0xa0, 0x83, 0x31, 0xa0, 0x02, 0x0b,
-  0x20, 0xe8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x83, 0x0a, 0x72,
-  0xe0, 0x06, 0x74, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a,
-  0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06,
-  0x4d, 0x2b, 0xdc, 0xc1, 0x1c, 0xe8, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26,
-  0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01,
-  0x80, 0x20, 0x18, 0x34, 0xb2, 0xc0, 0x07, 0x78, 0xc0, 0x0a, 0xa3, 0x09,
-  0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c,
-  0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0xdc, 0x42, 0x28, 0xf4, 0x81,
-  0x2c, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2,
-  0x68, 0x02, 0x31, 0xd8, 0x14, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10,
-  0x04, 0x83, 0x87, 0x17, 0x56, 0xc1, 0x7b, 0x82, 0x11, 0x03, 0x04, 0x00,
-  0x41, 0x30, 0x78, 0x7a, 0x81, 0x15, 0xb6, 0x25, 0x18, 0x31, 0x40, 0x00,
-  0x10, 0x04, 0x83, 0xc7, 0x17, 0x5a, 0x01, 0x3b, 0x02, 0xb3, 0xca, 0x40,
-  0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xf0, 0x80, 0xc3, 0x2b, 0x88,
-  0x81, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0xc1, 0x13, 0x0e, 0xb0,
-  0xf0, 0x39, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x3c, 0xe2, 0x10,
-  0x0b, 0x9c, 0x12, 0x58, 0x96, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10,
-  0x04, 0x83, 0x87, 0x1c, 0x66, 0xc1, 0x0c, 0xaa, 0x60, 0xc4, 0x00, 0x01,
-  0x40, 0x10, 0x0c, 0x9e, 0x72, 0xa0, 0x85, 0x31, 0x88, 0x82, 0x11, 0x03,
-  0x04, 0x00, 0x41, 0x30, 0x78, 0xcc, 0xa1, 0x16, 0xc0, 0xa0, 0x09, 0x8c,
-  0x6b, 0x03, 0xf9, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0xc1, 0x83, 0x0e,
-  0xb7, 0xa0, 0x06, 0x58, 0x30, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x4f,
-  0x3a, 0xe0, 0xc2, 0x19, 0x50, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18,
-  0x3c, 0xea, 0x90, 0x0b, 0x64, 0x00, 0x05, 0x23, 0x06, 0x09, 0x00, 0x82,
-  0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0x80, 0x43, 0x33, 0x62,
-  0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0x03,
-  0x2d, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e,
-  0xa0, 0x03, 0x3a, 0xf8, 0x42, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06,
-  0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0xc3, 0x2f, 0x04, 0x23, 0x06, 0x09,
-  0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa4, 0x03, 0x3a, 0x80, 0x43,
-  0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x90,
-  0x0e, 0xe8, 0x40, 0x0b, 0xac, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06,
-  0x48, 0x3b, 0xe4, 0xc2, 0x38, 0xa0, 0x03, 0x38, 0xc4, 0xc2, 0x88, 0x41,
-  0x02, 0x80, 0x20, 0x18, 0x20, 0xed, 0x90, 0x0b, 0xe3, 0x80, 0x0e, 0xb4,
-  0x00, 0x0b, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e,
-  0x8c, 0x03, 0x3a, 0xf8, 0xc2, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82,
-  0x01, 0xd2, 0x0e, 0xb9, 0x30, 0x0e, 0xe8, 0xf0, 0x0b, 0xae, 0x80, 0x00,
-  0x00, 0x00, 0x00, 0x00
+  0x10, 0x04, 0x83, 0x87, 0x14, 0xe0, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00,
+  0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0x88, 0x83, 0x31, 0xa0, 0x02, 0x0b,
+  0x20, 0xe8, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76,
+  0x40, 0x0a, 0xa4, 0xc0, 0x07, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
+  0x20, 0xa9, 0x60, 0x07, 0xa4, 0x40, 0x0a, 0x70, 0x90, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0x40, 0x0a, 0xa4, 0xa0, 0x07,
+  0xc5, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0xa4,
+  0x40, 0x0a, 0x7b, 0x10, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x92,
+  0x0a, 0x76, 0x50, 0x0a, 0xa4, 0xc0, 0x07, 0x69, 0x30, 0x62, 0x90, 0x00,
+  0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0x41, 0x29, 0x90, 0x02, 0x1c, 0xa0,
+  0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa9, 0x60, 0x07, 0x7f,
+  0x40, 0x0a, 0x7c, 0xd0, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
+  0xa4, 0x82, 0x1d, 0xfc, 0x01, 0x29, 0xc0, 0x01, 0x1b, 0x8c, 0x18, 0x24,
+  0x00, 0x08, 0x82, 0x01, 0x92, 0x0a, 0x76, 0xf0, 0x07, 0xa4, 0xa0, 0x07,
+  0x6b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x2a, 0xd8, 0xc1,
+  0x1f, 0x90, 0xc2, 0x1e, 0xa8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 };

+ 9 - 10
src/render/direct3d12/SDL_render_d3d12.c

@@ -59,8 +59,7 @@ extern "C" {
 // Vertex shader, common values
 // Vertex shader, common values
 typedef struct
 typedef struct
 {
 {
-    Float4X4 model;
-    Float4X4 projectionAndView;
+    Float4X4 mpv;
 } D3D12_VertexShaderConstants;
 } D3D12_VertexShaderConstants;
 
 
 // These should mirror the definitions in D3D12_PixelShader_Common.hlsli
 // These should mirror the definitions in D3D12_PixelShader_Common.hlsli
@@ -232,7 +231,7 @@ typedef struct
     D3D12_SRVPoolNode srvPoolNodes[SDL_D3D12_MAX_NUM_TEXTURES];
     D3D12_SRVPoolNode srvPoolNodes[SDL_D3D12_MAX_NUM_TEXTURES];
 
 
     // Vertex buffer constants
     // Vertex buffer constants
-    D3D12_VertexShaderConstants vertexShaderConstantsData;
+    Float4X4 projectionAndView;
 
 
     // Cached renderer properties
     // Cached renderer properties
     DXGI_MODE_ROTATION rotation;
     DXGI_MODE_ROTATION rotation;
@@ -2449,9 +2448,7 @@ static bool D3D12_UpdateViewport(SDL_Renderer *renderer)
      * set here (as of this writing, on Dec 26, 2013).  When done, store it
      * set here (as of this writing, on Dec 26, 2013).  When done, store it
      * for eventual transfer to the GPU.
      * for eventual transfer to the GPU.
      */
      */
-    data->vertexShaderConstantsData.projectionAndView = MatrixMultiply(
-        view,
-        projection);
+    data->projectionAndView = MatrixMultiply(view, projection);
 
 
     /* Update the Direct3D viewport, which seems to be aligned to the
     /* Update the Direct3D viewport, which seems to be aligned to the
      * swap buffer's coordinate space, which is always in either
      * swap buffer's coordinate space, which is always in either
@@ -2694,12 +2691,14 @@ static bool D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *
         rendererData->currentSampler = *sampler;
         rendererData->currentSampler = *sampler;
     }
     }
 
 
-    if (updateSubresource == true || SDL_memcmp(&rendererData->vertexShaderConstantsData.model, newmatrix, sizeof(*newmatrix)) != 0) {
-        SDL_memcpy(&rendererData->vertexShaderConstantsData.model, newmatrix, sizeof(*newmatrix));
+    if (updateSubresource == true) {
+        D3D12_VertexShaderConstants vertex_constants;
+        // Our model matrix is always identity
+        vertex_constants.mpv = rendererData->projectionAndView;
         ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(rendererData->commandList,
         ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(rendererData->commandList,
                  0,
                  0,
-                 32,
-                 &rendererData->vertexShaderConstantsData,
+                 sizeof(vertex_constants) / sizeof(float),
+                 &vertex_constants,
                  0);
                  0);
     }
     }