From 0ec7f5ed92b6b9720c80669b2de3aa3c40967153 Mon Sep 17 00:00:00 2001
From: Mike Pall <mike>
Date: Thu, 13 Jan 2011 02:35:29 +0100
Subject: FFI: Add 64 bit integer comparisons and pointer comparisons.

---
 src/buildvm_x64.h    | 1851 +++++++++++++++++++++--------------------
 src/buildvm_x64win.h | 1971 +++++++++++++++++++++----------------------
 src/buildvm_x86.dasc |   56 +-
 src/buildvm_x86.h    | 2250 +++++++++++++++++++++++++-------------------------
 src/lib_ffi.c        |  126 ++-
 src/lj_crecord.h     |    1 +
 src/lj_errmsg.h      |    3 +
 src/lj_meta.c        |   40 +-
 src/lj_meta.h        |    1 +
 src/lj_obj.h         |    2 +-
 src/lj_record.c      |   29 +
 11 files changed, 3309 insertions(+), 3021 deletions(-)

diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 16bcc65b..5739e65a 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP	0
 #define DASM_SECTION_CODE_SUB	1
 #define DASM_MAXSECTION		2
-static const unsigned char build_actionlist[14438] = {
+static const unsigned char build_actionlist[14610] = {
   254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
   76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
   252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -79,328 +79,330 @@ static const unsigned char build_actionlist[14438] = {
   182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120,
   253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244,
   4,248,45,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,
-  137,194,137,252,239,137,92,36,28,232,251,1,4,252,233,244,3,248,46,65,141,
-  4,199,252,233,244,247,248,47,65,141,4,199,141,44,252,234,149,252,233,244,
-  248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,44,
-  252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,
-  24,137,151,233,137,252,234,137,252,253,137,92,36,28,232,251,1,5,139,149,233,
-  133,192,15,132,244,40,248,42,137,193,41,208,137,89,252,244,141,152,233,255,
-  184,237,252,233,244,27,248,50,139,108,36,24,137,149,233,141,52,194,137,252,
-  239,137,92,36,28,232,251,1,6,139,149,233,252,233,244,42,248,51,141,76,202,
-  8,248,28,137,76,36,4,137,4,36,131,252,233,8,139,108,36,24,137,149,233,137,
-  206,141,20,193,137,252,239,137,92,36,28,232,251,1,7,139,149,233,139,76,36,
-  4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244,52,137,202,137,
-  90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,
-  255,36,252,238,248,53,139,108,36,24,137,149,233,137,206,137,252,239,137,92,
-  36,28,232,251,1,8,139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,
-  16,65,252,255,164,253,252,238,233,248,54,255,129,252,248,239,15,130,244,55,
-  139,106,4,129,252,253,239,15,131,244,55,139,90,252,252,137,68,36,4,137,106,
-  252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,
-  193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
-  4,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,137,252,233,
-  193,252,249,15,131,252,249,252,254,15,132,244,249,255,184,237,252,247,213,
-  57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,
-  248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,66,252,248,
-  252,233,244,58,248,3,184,237,252,233,244,2,248,59,129,252,248,239,15,130,
-  244,55,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252,248,1,139,
-  42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,58,65,
-  139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105,
-  201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,
-  244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,58,248,5,139,
-  105,4,129,252,253,239,15,132,244,58,139,1,137,106,252,252,137,66,252,248,
-  252,233,244,58,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,
-  244,253,189,237,248,7,252,247,213,65,139,172,253,174,233,252,233,244,2,248,
-  60,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,
-  42,131,189,233,0,15,133,244,55,129,122,253,12,239,15,133,244,55,139,66,8,
-  137,133,233,139,90,252,252,199,66,252,252,237,137,106,252,248,252,246,133,
-  233,235,15,132,244,247,128,165,233,235,255,65,139,134,233,65,137,174,233,
-  137,133,233,248,1,252,233,244,58,248,61,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,133,244,55,137,213,139,50,141,82,8,139,124,36,24,232,251,
-  1,9,137,252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,58,
-  248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,255,15,135,244,55,
-  255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,129,
-  252,248,239,15,130,244,55,139,90,252,252,129,122,253,4,239,15,133,244,249,
-  139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,122,
-  253,4,239,15,135,244,55,65,131,190,233,0,15,133,244,55,65,139,174,233,65,
-  59,174,233,255,15,130,244,247,232,244,66,248,1,139,108,36,24,137,149,233,
-  137,92,36,28,137,214,137,252,239,232,251,1,10,139,149,233,252,233,244,2,248,
-  67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15,
-  133,244,55,139,108,36,24,137,149,233,255,137,149,233,139,90,252,252,139,50,
-  141,82,8,137,252,239,137,92,36,28,232,251,1,11,139,149,233,133,192,15,132,
-  244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,68,184,
-  237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,
-  237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,255,139,42,129,122,
-  253,4,239,15,133,244,55,255,131,189,233,0,15,133,244,55,255,139,106,252,248,
-  139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,
-  184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,
-  239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,90,252,252,255,252,
-  242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,242,
-  15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,193,
-  224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,72,139,40,72,137,42,
-  252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,239,137,213,137,
-  198,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,237,252,233,
-  244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129,122,253,4,239,
-  15,133,244,55,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,
-  237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,
-  8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,74,
-  8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131,229,1,1,252,
-  235,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239,
-  15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,90,8,137,106,
-  8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,76,129,252,248,239,
-  15,130,244,55,139,42,139,90,252,252,137,92,36,28,137,44,36,129,122,253,4,
-  239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,233,235,15,135,244,
-  55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,141,92,193,
-  252,240,59,157,233,15,135,244,55,137,157,233,139,108,36,24,137,149,233,131,
-  194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244,249,248,2,72,
-  139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,
-  139,60,36,232,244,24,65,199,134,233,237,255,139,108,36,24,139,28,36,139,149,
-  233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,
-  233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,
-  15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68,
-  57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92,36,
-  28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195,237,
-  255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,233,131,
-  252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,12,
-  36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,
-  233,244,4,248,77,139,106,252,248,139,173,233,139,90,252,252,137,92,36,28,
-  137,44,36,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,55,
-  139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,92,193,252,
-  248,59,157,233,15,135,244,55,137,157,233,139,108,36,24,137,149,233,137,149,
-  233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,255,72,139,
-  4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139,
-  60,36,232,244,24,65,199,134,233,237,139,108,36,24,139,28,36,139,149,233,129,
-  252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68,
-  137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,
-  244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,
-  252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,4,49,201,
-  252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,239,232,
-  251,1,13,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,
-  28,36,139,149,233,252,233,244,4,248,78,139,108,36,24,72,252,247,133,233,237,
-  15,132,244,55,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,137,
-  133,233,176,235,136,133,233,252,233,244,16,255,248,64,139,90,252,252,221,
-  90,252,248,252,233,244,58,248,79,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,
-  193,248,63,139,90,252,252,252,242,15,17,66,252,248,255,248,79,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63,248,
-  64,139,90,252,252,221,90,252,248,255,248,58,184,237,248,69,137,68,36,4,248,
-  56,252,247,195,237,15,133,244,253,248,5,56,67,252,255,15,135,244,252,15,182,
-  75,252,253,72,252,247,209,141,20,202,139,3,15,182,204,15,182,232,131,195,
-  4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,252,244,237,131,192,1,
-  252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,
-  14,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248,
-  83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
-  242,15,16,2,232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81,
-  129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,
-  82,252,233,244,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4,
-  239,15,135,244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,
-  241,252,233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,
-  248,239,255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,
-  252,233,244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244,
-  64,248,91,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
-  2,217,252,242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55,
-  255,129,122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,
-  217,252,250,217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,
-  217,252,250,217,201,217,252,243,252,233,244,64,248,94,129,252,248,239,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,255,221,2,217,232,217,252,243,
-  252,233,244,64,255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,252,242,15,16,2,255,137,213,232,251,1,14,137,252,234,252,233,
-  244,63,255,248,96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,252,242,15,16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,63,
-  255,248,97,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,244,63,248,98,
-  255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,
-  248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,
-  2,139,106,252,248,220,141,233,252,233,244,64,255,248,100,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,221,2,221,66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,15,130,
-  244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,
-  55,221,66,8,221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,248,
-  239,15,130,244,55,139,106,4,129,252,253,239,15,135,244,55,139,90,252,252,
-  139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
-  15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
-  0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
-  44,36,219,4,36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,
-  0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,
-  252,233,244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,
-  244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
-  242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216,
-  12,36,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,
-  1,255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,16,2,255,248,103,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253,
-  0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,104,252,242,15,92,224,
-  248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,104,220,
-  252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,
-  136,244,249,248,2,184,237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,
-  106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,
-  201,252,233,244,1,255,248,105,129,252,248,239,15,130,244,55,129,122,253,4,
-  239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,
-  252,248,223,224,158,15,138,244,1,221,217,252,233,244,64,255,248,106,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
-  15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,
-  63,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,
-  64,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,
-  234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,
-  93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
-  15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,
-  76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,
-  216,252,233,244,55,255,248,110,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,133,244,55,139,42,255,252,242,15,42,133,233,252,233,244,63,255,219,
-  133,233,252,233,244,64,255,248,111,129,252,248,239,15,133,244,55,129,122,
-  253,4,239,15,133,244,55,139,42,139,90,252,252,131,189,233,1,15,130,244,72,
-  15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,44,36,219,4,36,
-  252,233,244,64,255,248,112,65,139,174,233,65,59,174,233,15,130,244,247,232,
-  244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,
-  255,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,55,137,108,36,4,
-  255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,244,55,255,199,68,
-  36,8,1,0,0,0,72,141,68,36,4,248,113,139,108,36,24,137,149,233,139,84,36,8,
-  72,137,198,137,252,239,137,92,36,28,232,251,1,17,139,149,233,139,90,252,252,
-  199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,65,139,174,233,65,
-  59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,4,252,255,252,255,252,
-  255,252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,
-  255,252,242,15,44,106,16,137,108,36,4,255,221,66,16,219,92,36,4,255,248,1,
-  129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,
-  108,36,8,139,173,233,255,252,242,15,44,74,8,255,139,68,36,4,57,197,15,130,
-  244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,
-  115,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113,
-  248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,
-  2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,
-  0,0,252,233,244,3,248,115,49,192,252,233,244,4,248,116,129,252,248,239,15,
-  130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,255,
-  129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,
-  252,242,15,44,66,8,255,221,66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,
-  244,115,131,189,233,1,15,130,244,115,15,133,244,117,65,57,134,233,15,130,
-  244,117,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,77,0,131,197,
-  1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,113,248,118,129,252,248,
-  239,255,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,
-  66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,
-  244,115,65,57,134,233,15,130,244,119,129,197,239,137,92,36,4,137,68,36,8,
-  65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,
-  244,1,137,216,139,92,36,4,252,233,244,113,248,120,129,252,248,239,15,130,
-  244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122,
-  253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,255,15,130,244,119,
-  129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,
-  15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,
-  131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,
-  36,4,252,233,244,113,248,121,129,252,248,239,15,130,244,55,255,65,139,174,
-  233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,
-  244,55,139,42,139,133,233,65,57,134,233,15,130,244,119,129,197,239,137,92,
-  36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,
-  249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,
-  2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,113,
-  248,122,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,
-  213,139,58,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63,
-  255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,
-  126,197,252,242,15,42,197,252,233,244,63,255,248,124,129,252,248,239,15,130,
-  244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,
-  72,15,110,205,252,242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194,
-  252,240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255,
-  252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,
-  233,244,1,255,248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,
-  193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,
-  205,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,
-  15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,
-  248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
-  242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
-  197,255,15,205,252,233,244,125,255,248,130,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,
-  110,205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,125,252,
-  242,15,42,197,252,233,244,63,255,248,126,139,68,36,4,252,233,244,55,255,248,
-  131,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
-  253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
-  102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,
-  197,102,15,126,201,255,211,229,137,193,252,233,244,125,255,248,132,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
-  15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
-  110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,
-  126,201,255,211,252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
+  137,194,137,252,239,137,92,36,28,232,251,1,4,252,233,244,3,248,46,255,131,
+  252,235,4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,
+  28,232,251,1,5,252,233,244,3,255,248,47,65,141,4,199,252,233,244,247,248,
+  48,65,141,4,199,141,44,252,234,149,252,233,244,248,248,49,141,4,194,137,197,
+  252,233,244,248,248,50,141,4,194,248,1,141,44,252,234,248,2,141,12,202,68,
+  15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137,252,234,137,
+  252,253,137,92,36,28,232,251,1,6,139,149,233,133,192,15,132,244,40,248,42,
+  137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,27,248,51,255,
+  139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,251,1,7,
+  139,149,233,252,233,244,42,248,52,141,76,202,8,248,28,137,76,36,4,137,4,36,
+  131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137,252,239,137,
+  92,36,28,232,251,1,8,139,149,233,139,76,36,4,139,4,36,139,105,252,248,131,
+  192,1,65,57,215,15,132,244,53,137,202,137,90,252,252,139,157,233,139,11,15,
+  182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,54,139,108,36,
+  24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,9,139,149,233,139,
+  67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233,
+  248,55,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,
+  244,56,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,252,248,
+  131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,
+  248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,57,248,58,129,252,
+  248,239,15,130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252,
+  254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,
+  247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,90,252,
+  252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233,
+  244,2,248,60,129,252,248,239,15,130,244,56,139,106,4,139,90,252,252,129,252,
+  253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,
+  252,252,237,255,15,132,244,59,65,139,134,233,199,66,252,252,237,137,106,252,
+  248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
+  133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
+  3,255,252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1,
+  137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,
+  244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,65,139,172,
+  253,174,233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122,
+  253,4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,
+  239,15,133,244,56,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,
+  137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,65,
+  139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,59,248,62,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,50,141,
+  82,8,139,124,36,24,232,251,1,10,137,252,234,72,139,40,139,90,252,252,72,137,
+  106,252,248,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253,
+  4,239,255,15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252,
+  233,244,65,255,248,66,129,252,248,239,15,130,244,56,139,90,252,252,129,122,
+  253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
+  233,244,59,248,3,129,122,253,4,239,15,135,244,56,65,131,190,233,0,15,133,
+  244,56,65,139,174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139,
+  108,36,24,137,149,233,137,92,36,28,137,214,137,252,239,232,251,1,11,139,149,
+  233,252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,
+  1,129,122,253,4,239,15,133,244,56,139,108,36,24,137,149,233,255,137,149,233,
+  139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1,12,139,
+  149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,
+  72,137,2,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1,
+  248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,
+  56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244,
+  56,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,
+  66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,
+  56,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,
+  252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,
+  133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,
+  244,73,72,139,40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244,
+  73,137,252,239,137,213,137,198,232,251,1,13,137,252,234,133,192,15,133,244,
+  1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,
+  139,42,129,122,253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139,
+  90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,
+  66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248,
+  239,15,130,244,56,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,
+  252,237,235,131,229,1,1,252,235,252,233,244,27,248,76,129,252,248,239,15,
+  130,244,56,129,122,253,12,239,15,133,244,56,255,139,106,4,137,106,12,199,
+  66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,
+  233,244,1,248,77,129,252,248,239,15,130,244,56,139,42,139,90,252,252,137,
+  92,36,28,137,44,36,129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133,
+  244,56,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,255,59,141,
+  233,15,132,244,56,248,1,141,92,193,252,240,59,157,233,15,135,244,56,137,157,
+  233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,
+  221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,
+  8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,
+  255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,
+  4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,
+  252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,
+  5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,
+  2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,
+  255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244,14,248,
+  8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,
+  2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,
+  232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,78,139,106,252,248,139,
+  173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,
+  56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141,233,
+  15,132,244,56,248,1,141,92,193,252,248,59,157,233,15,135,244,56,137,157,233,
+  139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221,57,203,
+  15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,
+  15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108,
+  36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,
+  233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,
+  26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,72,
+  139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,
+  7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252,233,244,
+  14,248,8,137,222,137,252,239,232,251,1,14,248,9,139,12,36,68,137,185,233,
+  137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,79,
+  139,108,36,24,72,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68,
+  194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,
+  244,16,255,248,65,139,90,252,252,221,90,252,248,252,233,244,59,248,80,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,
+  72,184,237,237,102,72,15,110,200,15,84,193,248,64,139,90,252,252,252,242,
+  15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,221,2,217,225,248,64,248,65,139,90,252,252,221,90,252,248,255,
+  248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244,253,248,
+  5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,
+  139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,
+  6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,
+  252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248,
+  82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,
+  15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64,
+  255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
+  221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85,
+  252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217,
+  252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253,
+  4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244,
+  65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65,
+  248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56,
+  221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
+  65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
+  244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,
+  232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251,
+  1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251,1,17,
+  137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252,248,252,242,
+  15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233,252,233,244,
+  65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243,252,233,244,
+  65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
+  129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253,221,217,252,
+  233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239,
+  15,135,244,56,139,90,252,252,139,2,137,106,252,252,137,66,252,248,209,229,
+  129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,
+  3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,
+  252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,229,252,
+  255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,
+  17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,244,
+  2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,
+  237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,
+  2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,184,52,
+  4,0,0,209,229,252,233,244,1,255,248,104,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,90,252,
+  252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,
+  244,105,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,
+  255,217,192,232,244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66,
+  252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,
+  3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
+  244,1,255,217,252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,
+  56,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
+  233,244,65,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,
+  74,8,232,244,108,252,233,244,64,255,248,107,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,
+  66,8,232,244,108,252,233,244,65,255,248,109,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
+  15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252,242,15,16,
+  76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,110,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
+  16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,
+  15,135,244,56,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,
+  1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42,
+  133,233,252,233,244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,
+  248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139,42,139,90,252,252,
+  131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233,
+  244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139,174,233,65,
+  59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56,
+  129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255,
+  0,0,0,15,135,244,56,137,108,36,4,255,221,2,219,92,36,4,129,124,36,4,252,255,
+  0,0,0,15,135,244,56,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,114,139,108,
+  36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,28,232,251,
+  1,18,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,
+  244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,
+  1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,
+  56,15,134,244,247,129,122,253,20,239,255,252,242,15,44,106,16,137,108,36,
+  4,255,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,56,129,
+  122,253,12,239,15,135,244,56,139,42,137,108,36,8,139,173,233,255,252,242,
+  15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,
+  253,248,3,139,108,36,8,41,200,15,140,244,116,141,172,253,13,233,131,192,1,
+  248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,141,68,40,
+  1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,
+  233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192,
+  252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139,174,233,65,59,
+  174,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244,
+  56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221,
+  66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116,131,189,233,1,15,
+  130,244,116,15,133,244,118,65,57,134,233,15,130,244,118,15,182,141,233,65,
+  139,174,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,
+  139,134,233,252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,65,
+  139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,
+  15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,65,57,134,233,15,
+  130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,248,1,255,
+  15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,
+  252,233,244,114,248,121,129,252,248,239,15,130,244,56,65,139,174,233,65,59,
+  174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
+  42,139,133,233,65,57,134,233,255,15,130,244,120,129,197,239,137,92,36,4,137,
+  68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,
+  15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,
+  3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,122,
+  129,252,248,239,15,130,244,56,255,65,139,174,233,65,59,174,233,15,130,244,
+  247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,65,
+  57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158,
+  233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,
+  131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,
+  1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,123,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,58,232,251,1,19,
+  137,252,234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,
+  237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,
+  197,252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253,
+  4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
+  242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194,252,240,248,1,57,
+  208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,
+  242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
+  16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
+  252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,
+  189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,
+  15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,
+  237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,
+  244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
+  244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
+  102,15,126,197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244,
+  64,255,248,127,139,68,36,4,252,233,244,56,255,248,132,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,
+  56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
   242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,
-  211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
+  211,229,137,193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
   15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
-  194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,
-  193,252,233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
-  242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,
-  15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,
-  244,125,248,117,184,237,252,233,244,55,248,119,184,237,248,55,139,108,36,
-  24,139,90,252,252,137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,
-  137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,252,239,252,255,
-  144,233,139,149,233,133,192,15,143,244,69,248,1,255,139,141,233,41,209,193,
-  252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,
-  11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,
-  252,247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,
-  234,252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,
-  248,5,190,237,137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,
-  66,93,72,137,108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,
-  252,248,137,252,239,137,133,233,232,251,1,19,139,149,233,139,133,233,41,208,
-  193,232,3,131,192,1,72,139,108,36,8,85,195,248,136,255,65,15,182,134,233,
-  168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252,
-  255,142,233,252,233,244,247,255,248,137,65,15,182,134,233,168,235,15,133,
-  244,251,252,233,244,247,248,138,65,15,182,134,233,168,235,15,133,244,251,
-  168,235,15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244,
-  251,248,1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,20,
-  248,3,139,149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,
-  67,252,254,65,252,255,164,253,252,238,233,248,139,131,195,4,139,77,232,137,
-  76,36,4,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133,
-  233,141,4,194,139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233,
-  73,137,174,233,137,92,36,28,232,251,1,21,252,233,244,3,255,248,141,137,92,
-  36,28,255,248,142,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,
-  139,108,36,24,137,149,233,137,133,233,137,222,137,252,239,232,251,1,22,199,
-  68,36,28,0,0,0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233,
-  41,208,72,137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,143,
-  255,65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,
-  81,80,15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,
-  240,68,139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,
-  142,233,72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,
-  242,68,15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,
-  252,242,68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,
-  242,68,15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,
-  17,109,168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,
-  252,242,15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,
-  137,174,233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,
-  232,251,1,23,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,
-  233,139,153,233,252,233,244,247,255,248,144,255,72,131,196,16,248,1,76,139,
-  108,36,8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,
-  69,139,191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,
-  3,15,182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,
-  139,68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,
-  198,232,251,1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,
-  11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,
-  217,108,36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,15,110,208,
-  72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
-  134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
-  72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,
-  15,92,200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184,
+  194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,
+  137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122,
+  253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,
+  252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
+  242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,
+  252,233,244,126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,
+  16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
+  202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,
+  126,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,
+  189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
+  102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118,
+  184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,24,139,90,252,252,
+  137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,
+  252,248,59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233,
+  133,192,15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
+  141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,11,15,182,252,233,
+  15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,252,247,195,237,
+  15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244,
+  27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,248,5,190,237,
+  137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137,
+  108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137,
+  252,239,137,133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3,
+  131,192,1,72,139,108,36,8,85,195,248,137,255,65,15,182,134,233,168,235,15,
+  133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142,
+  233,252,233,244,247,255,248,138,65,15,182,134,233,168,235,15,133,244,251,
+  252,233,244,247,248,139,65,15,182,134,233,168,235,15,133,244,251,168,235,
+  15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248,
+  1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,21,248,3,139,
+  149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254,
+  65,252,255,164,253,252,238,233,248,140,131,195,4,139,77,232,137,76,36,4,252,
+  233,244,4,248,141,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,
+  139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233,
+  137,92,36,28,232,251,1,22,252,233,244,3,255,248,142,137,92,36,28,255,248,
+  143,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,
+  137,149,233,137,133,233,137,222,137,252,239,232,251,1,23,199,68,36,28,0,0,
+  0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,
+  137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65,
+  85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,
+  15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68,
+  139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233,
+  72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,
+  15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,
+  68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,
+  15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,
+  168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,
+  15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,
+  233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,
+  1,24,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139,
+  153,233,252,233,244,247,255,248,145,255,72,131,196,16,248,1,76,139,108,36,
+  8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,
+  191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,
+  182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,
+  68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,
+  232,251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,
+  36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,
+  108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,
+  184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,
+  244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,
+  184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,
+  15,92,200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,
   0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,
-  252,252,217,108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,
+  252,252,217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,
   110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,
   217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
   15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,
-  194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,4,137,68,
+  194,252,242,15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68,
   36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,
-  217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208,
+  217,108,36,4,139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208,
   72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
   134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,
   184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,
-  15,92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,
+  15,92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,
   15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,
   15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,
   15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,
@@ -408,12 +410,12 @@ static const unsigned char build_actionlist[14438] = {
   89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,
   92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,
   4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
-  36,4,222,201,222,252,233,195,255,248,88,217,252,234,222,201,248,149,217,84,
+  36,4,222,201,222,252,233,195,255,248,89,217,252,234,222,201,248,150,217,84,
   36,252,248,129,124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,
-  0,0,128,252,255,15,132,244,248,248,150,217,192,217,252,252,220,252,233,217,
+  0,0,128,252,255,15,132,244,248,248,151,217,192,217,252,252,220,252,233,217,
   201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
-  217,252,238,195,255,248,107,255,248,151,252,242,15,45,193,252,242,15,42,208,
-  102,15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,
+  217,252,238,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208,
+  102,15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142,
   244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,
   244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,
   232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,
@@ -431,27 +433,27 @@ static const unsigned char build_actionlist[14438] = {
   208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,
   48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,
   102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,
-  192,15,132,244,3,15,87,192,195,248,153,255,131,252,255,1,15,130,244,82,15,
-  132,244,84,131,252,255,3,15,130,244,104,15,135,244,248,252,242,15,81,192,
+  192,15,132,244,3,15,87,192,195,248,154,255,131,252,255,1,15,130,244,83,15,
+  132,244,85,131,252,255,3,15,130,244,105,15,135,244,248,252,242,15,81,192,
   195,248,2,252,242,15,17,68,36,252,248,221,68,36,252,248,131,252,255,5,15,
-  135,244,248,15,132,244,247,232,244,88,252,233,244,253,248,1,232,244,149,255,
+  135,244,248,15,132,244,247,232,244,89,252,233,244,253,248,1,232,244,150,255,
   252,233,244,253,248,2,131,252,255,7,15,132,244,247,15,135,244,248,217,252,
   237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,
   252,233,244,253,248,2,131,252,255,9,15,132,244,247,15,135,244,248,217,252,
   236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,
   253,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,252,233,
   244,253,248,1,217,252,242,221,216,248,7,221,92,36,252,248,252,242,15,16,68,
-  36,252,248,195,255,139,124,36,12,221,68,36,4,131,252,255,1,15,130,244,82,
-  15,132,244,84,131,252,255,3,15,130,244,104,15,135,244,248,217,252,250,195,
-  248,2,131,252,255,5,15,130,244,88,15,132,244,149,131,252,255,7,15,132,244,
+  36,252,248,195,255,139,124,36,12,221,68,36,4,131,252,255,1,15,130,244,83,
+  15,132,244,85,131,252,255,3,15,130,244,105,15,135,244,248,217,252,250,195,
+  248,2,131,252,255,5,15,130,244,89,15,132,244,150,131,252,255,7,15,132,244,
   247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,
   201,217,252,241,195,248,2,131,252,255,9,15,132,244,247,255,15,135,244,248,
   217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,255,
   11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,
-  195,255,248,9,204,255,248,154,255,131,252,255,1,15,132,244,247,15,135,244,
+  195,255,248,9,204,255,248,155,255,131,252,255,1,15,132,244,247,15,135,244,
   248,252,242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,131,252,255,3,
   15,132,244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,
-  195,248,2,131,252,255,5,15,130,244,148,15,132,244,107,131,252,255,7,15,132,
+  195,248,2,131,252,255,5,15,130,244,149,15,132,244,108,131,252,255,7,15,132,
   244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,
   248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,131,252,255,9,
   15,135,244,248,252,242,15,17,68,36,252,248,252,242,15,17,76,36,252,240,221,
@@ -461,15 +463,15 @@ static const unsigned char build_actionlist[14438] = {
   15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221,
   68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
   195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
-  222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,
-  244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
+  222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,149,15,132,
+  244,108,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
   248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
   217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
   15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
   252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
   248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
-  244,248,217,201,248,2,221,216,195,255,248,155,137,252,248,83,15,162,137,6,
-  137,94,4,137,78,8,137,86,12,91,195,248,156,255,85,72,137,229,83,72,137,252,
+  244,248,217,201,248,2,221,216,195,255,248,156,137,252,248,83,15,162,137,6,
+  137,94,4,137,78,8,137,86,12,91,195,248,157,255,85,72,137,229,83,72,137,252,
   251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,
   248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,
   244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,
@@ -477,116 +479,123 @@ static const unsigned char build_actionlist[14438] = {
   233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,
   251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,
   147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,255,72,
-  139,93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,
-  194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,
-  255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233,
-  223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,
-  254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,
-  16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,
-  244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,
-  15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,
-  15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,
-  233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,
-  57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
-  57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,
-  15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,
-  0,0,255,252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,
-  15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,
-  15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,
-  221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,
-  195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,
-  4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,
-  3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,
-  139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
-  65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,
-  108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
-  252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72,
-  184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,
-  217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,
-  15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,
-  248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
-  252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,194,137,
-  213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,
-  252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,
-  15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,
-  4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,
-  242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,
-  255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,
-  244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,
-  220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,
-  234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,
-  65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,
-  255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,
-  4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,
-  15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,
-  252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,
-  234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,
-  15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,
-  242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
-  252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,
-  4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,
-  221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,
-  252,234,221,4,194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,
-  107,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,141,52,194,137,
-  194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,25,139,149,233,133,
-  192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72,139,4,252,234,72,
-  137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
-  252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3,
-  15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,15,191,
-  192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,202,255,
-  252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,202,255,
-  72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,
-  16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,105,252,
-  248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,182,232,
-  131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,
-  133,233,139,173,233,72,139,69,0,72,137,4,202,139,3,15,182,204,15,182,232,
-  131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,
-  141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,
-  4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,
-  15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,
-  252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,
-  213,65,141,190,233,255,232,251,1,26,137,252,234,252,233,244,1,255,72,252,
-  247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,
-  8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,
-  15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,
-  235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,
-  232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,
-  15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
-  25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
-  65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
-  255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,149,
-  233,141,52,202,137,252,239,232,251,1,27,139,149,233,248,1,139,3,15,182,204,
-  15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,
-  139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,
-  36,28,232,251,1,28,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
-  139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
-  139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131,
-  244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,
-  132,244,249,248,2,137,252,239,137,198,232,251,1,29,139,149,233,15,182,75,
-  252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,
-  193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137,
-  252,239,232,251,1,30,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139,
-  108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244,
-  249,248,2,65,139,52,135,137,252,239,232,251,1,31,139,149,233,15,182,75,252,
-  253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,
-  232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,30,15,183,67,252,
-  254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,
-  233,65,139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173,
-  233,65,139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,
-  252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,
-  251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,
-  193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,
-  253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,
-  182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,
-  132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,252,253,
-  248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
-  244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247,
-  208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,
-  158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,
-  133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,
-  182,67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,
-  232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,
-  68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
+  139,93,252,248,201,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,
+  124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,
+  46,4,202,255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,
+  252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,
+  67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,
+  4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,
+  239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,
+  4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,
+  248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,
+  253,131,233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,
+  248,5,255,129,252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,
+  46,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,
+  139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,
+  252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,
+  189,1,0,0,0,255,252,233,244,45,255,248,3,129,252,253,239,15,133,244,2,252,
+  233,244,46,255,72,252,247,208,139,108,202,4,131,195,4,129,252,253,239,15,
+  133,244,249,139,12,202,65,59,12,135,255,139,108,202,4,131,195,4,129,252,253,
+  239,15,135,244,249,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,
+  65,221,4,199,255,72,252,247,208,139,108,202,4,131,195,4,57,197,255,15,133,
+  244,249,15,183,67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,
+  232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,129,252,253,239,15,133,
+  244,2,252,233,244,46,255,15,132,244,248,129,252,253,239,15,132,244,46,15,
+  183,67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,
+  195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,
+  253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,
+  137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,
+  15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,44,194,72,
+  137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
+  252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,
+  3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,129,
+  124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,194,72,184,237,237,102,
+  72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
+  202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,
+  242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
+  202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
+  238,248,2,129,124,253,194,4,239,15,133,244,51,139,60,194,137,213,232,251,
+  1,19,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233,244,
+  1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,
+  47,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,
+  220,4,199,255,129,124,253,252,234,4,239,15,135,244,48,255,252,242,65,15,16,
+  4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124,
+  253,252,234,4,239,15,135,244,50,129,124,253,194,4,239,15,135,244,50,255,252,
+  242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,
+  242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199,
+  255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36,
+  252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,
+  220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252,
+  234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255,
+  65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
+  255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94,
+  4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242,
+  15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,
+  252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,
+  234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65,
+  15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,
+  242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,
+  248,158,232,244,149,255,252,233,244,158,255,232,244,108,255,15,182,252,236,
+  15,182,192,139,124,36,24,137,151,233,141,52,194,137,194,41,252,234,248,33,
+  137,252,253,137,92,36,28,232,251,1,26,139,149,233,133,192,15,133,244,42,15,
+  182,107,252,255,15,182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,
+  182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,
+  247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,
+  131,195,4,193,232,16,65,252,255,36,252,238,255,15,191,192,252,242,15,42,192,
+  252,242,15,17,4,202,255,223,67,252,254,221,28,202,255,252,242,65,15,16,4,
+  199,252,242,15,17,4,202,255,65,221,4,199,221,28,202,255,72,252,247,208,137,
+  68,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
+  238,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,
+  193,8,57,193,15,134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
+  65,252,255,36,252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,
+  72,139,69,0,72,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
+  65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,233,
+  0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
+  246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,
+  4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,15,134,
+  244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,190,233,
+  255,232,251,1,27,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
+  248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,237,252,
+  246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,
+  4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,244,1,
+  128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,27,137,
+  252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,255,
+  139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,
+  247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,3,15,
+  182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,156,
+  253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,149,233,141,52,
+  202,137,252,239,232,251,1,28,139,149,233,248,1,139,3,15,182,204,15,182,232,
+  131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,36,
+  24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,28,232,
+  251,1,29,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,
+  182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,
+  36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131,244,251,
+  248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,132,244,
+  249,248,2,137,252,239,137,198,232,251,1,30,139,149,233,15,182,75,252,253,
+  137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,
+  16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,239,
+  232,251,1,31,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139,108,36,
+  24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244,249,248,
+  2,65,139,52,135,137,252,239,232,251,1,32,139,149,233,15,182,75,252,253,137,
+  4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
+  252,255,36,252,238,248,3,137,252,239,232,251,1,31,15,183,67,252,254,72,252,
+  247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
+  4,135,252,233,244,159,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
+  4,135,252,233,244,160,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
+  239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
+  252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
+  15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
+  239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
+  232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
+  244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,252,253,248,
+  3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
+  36,139,4,194,252,233,244,159,255,15,182,252,236,15,182,192,72,252,247,208,
+  65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,159,
+  139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
+  244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
+  67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,
+  131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,
+  194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
   141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
   34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,
   139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,
@@ -600,10 +609,10 @@ static const unsigned char build_actionlist[14438] = {
   2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
   65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,
   246,129,233,235,15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124,
-  253,194,4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,
+  253,194,4,239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,
   65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,
   255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,
-  234,4,239,15,133,244,37,139,44,252,234,248,159,139,141,233,35,136,233,105,
+  234,4,239,15,133,244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,
   201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,
   233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,
   233,235,15,133,244,253,248,3,15,182,67,252,253,72,139,44,194,72,137,41,139,
@@ -612,7 +621,7 @@ static const unsigned char build_actionlist[14438] = {
   244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
   139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,
   6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,36,24,137,151,233,72,141,
-  20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,32,139,149,233,139,108,
+  20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,33,139,149,233,139,108,
   36,8,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
   233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
   234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
@@ -627,12 +636,12 @@ static const unsigned char build_actionlist[14438] = {
   193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,137,47,65,131,199,8,131,
   232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,
   4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,24,137,151,233,137,252,
-  238,137,194,137,252,253,137,92,36,28,232,251,1,33,139,149,233,15,182,75,252,
+  238,137,194,137,252,253,137,92,36,28,232,251,1,34,139,149,233,15,182,75,252,
   253,252,233,244,1,248,7,255,128,165,233,235,65,139,134,233,65,137,174,233,
   137,133,233,252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,
-  202,15,133,244,51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,
+  202,15,133,244,52,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,
   233,15,182,205,131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,
-  139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252,
+  139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,139,90,252,252,
   252,247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,
   1,15,132,244,249,248,2,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232,
   1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,244,
@@ -681,8 +690,8 @@ static const unsigned char build_actionlist[14438] = {
   252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,
   5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,
   255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,
-  140,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,
-  15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,
+  141,255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
+  15,135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,
   15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
   237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
   17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
@@ -695,7 +704,7 @@ static const unsigned char build_actionlist[14438] = {
   4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174,233,76,137,36,
   36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,253,131,233,
   139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
-  137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,142,
+  137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,143,
   255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,244,23,15,182,
   139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,252,233,245,255,
   248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
@@ -750,6 +759,7 @@ enum {
   GLOB_cont_condt,
   GLOB_cont_condf,
   GLOB_vmeta_equal,
+  GLOB_vmeta_equal_cd,
   GLOB_vmeta_arith_vn,
   GLOB_vmeta_arith_nv,
   GLOB_vmeta_unm,
@@ -903,6 +913,7 @@ static const char *const globnames[] = {
   "cont_condt",
   "cont_condf",
   "vmeta_equal",
+  "vmeta_equal_cd",
   "vmeta_arith_vn",
   "vmeta_arith_nv",
   "vmeta_unm",
@@ -1025,6 +1036,7 @@ static const char *const extnames[] = {
   "lj_meta_tset",
   "lj_meta_comp",
   "lj_meta_equal",
+  "lj_meta_equal_cd@8",
   "lj_meta_arith",
   "lj_meta_len@8",
   "lj_meta_call",
@@ -1098,371 +1110,374 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 1094, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
   dasm_put(Dst, 1266, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1365, Dt1(->base), Dt1(->base), FRAME_CONT);
-  dasm_put(Dst, 1488, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
-  dasm_put(Dst, 1666, 1+1, LJ_TISTRUECOND, 1+1);
-  dasm_put(Dst, 1772, ~LJ_TNUMX);
+  dasm_put(Dst, 1365);
+#if LJ_HASFFI
+  dasm_put(Dst, 1385, Dt1(->base));
+#endif
+  dasm_put(Dst, 1416, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
+  dasm_put(Dst, 1530, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+  dasm_put(Dst, 1715, 1+1, ~LJ_TNUMX);
   if (cmov) {
-  dasm_put(Dst, 1780);
+  dasm_put(Dst, 1813);
   } else {
-  dasm_put(Dst, 1784);
+  dasm_put(Dst, 1817);
   }
-  dasm_put(Dst, 1793, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
-  dasm_put(Dst, 1872, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
-  dasm_put(Dst, 1930, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
-  dasm_put(Dst, 1999, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
-  dasm_put(Dst, 2068, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 2154);
+  dasm_put(Dst, 1826, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+  dasm_put(Dst, 1905, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
+  dasm_put(Dst, 1963, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
+  dasm_put(Dst, 2032, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
+  dasm_put(Dst, 2101, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 2187);
   if (sse) {
-    dasm_put(Dst, 2159);
+    dasm_put(Dst, 2192);
   } else {
-    dasm_put(Dst, 2169);
+    dasm_put(Dst, 2202);
   }
-  dasm_put(Dst, 2176, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 2245, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
-  dasm_put(Dst, 2314, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
-  dasm_put(Dst, 2402, LJ_TTAB);
+  dasm_put(Dst, 2209, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 2278, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+  dasm_put(Dst, 2347, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
+  dasm_put(Dst, 2435, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2414, Dt6(->metatable));
+  dasm_put(Dst, 2447, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2423, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2456, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 2486, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 2519, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 2519, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2596, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2552, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2629, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2414, Dt6(->metatable));
+  dasm_put(Dst, 2447, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2616, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2649, Dt8(->upvalue[0]), LJ_TFUNC);
   if (sse) {
-    dasm_put(Dst, 2637);
+    dasm_put(Dst, 2670);
   } else {
-    dasm_put(Dst, 2647);
+    dasm_put(Dst, 2680);
   }
-  dasm_put(Dst, 2654, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
-  dasm_put(Dst, 2719, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
-  dasm_put(Dst, 2808, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 2895, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
-  dasm_put(Dst, 3010, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
-  dasm_put(Dst, 3105, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3171, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3260, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3370, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+  dasm_put(Dst, 2687, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2752, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2841, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 2928, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3043, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3138, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3204, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3293, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3403, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (sse) {
-    dasm_put(Dst, 3397, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 3430, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 3461, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3494, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3497, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3530, 1+1, FRAME_TYPE, LJ_TNIL);
   if (sse) {
-    dasm_put(Dst, 3592, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3654, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3625, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3687, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3684, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3743, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3717, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3776, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3770, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3839, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3896, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3959, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4049);
+  dasm_put(Dst, 3803, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3872, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3992, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4082);
   if (sse) {
-  dasm_put(Dst, 4061, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4094, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4086);
+  dasm_put(Dst, 4119);
   if (sse) {
-  dasm_put(Dst, 4100, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4133, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4125);
+  dasm_put(Dst, 4158);
   if (sse) {
-  dasm_put(Dst, 4139, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4172, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4164);
+  dasm_put(Dst, 4197);
   if (sse) {
-    dasm_put(Dst, 4180, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4213, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4219, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4252, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4252, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4317, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4285, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4350, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4416);
+    dasm_put(Dst, 4449);
   } else {
-    dasm_put(Dst, 4422);
+    dasm_put(Dst, 4455);
   }
-  dasm_put(Dst, 4429);
+  dasm_put(Dst, 4462);
   if (sse) {
-    dasm_put(Dst, 4454);
+    dasm_put(Dst, 4487);
   } else {
-    dasm_put(Dst, 4460);
+    dasm_put(Dst, 4493);
   }
-  dasm_put(Dst, 4463, 1+2);
+  dasm_put(Dst, 4496, 1+2);
   if (sse) {
-    dasm_put(Dst, 4472);
+    dasm_put(Dst, 4505);
   } else {
-    dasm_put(Dst, 4480);
+    dasm_put(Dst, 4513);
   }
-  dasm_put(Dst, 4488);
+  dasm_put(Dst, 4521);
   if (sse) {
-    dasm_put(Dst, 4491, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+    dasm_put(Dst, 4524, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
   } else {
-    dasm_put(Dst, 4518);
+    dasm_put(Dst, 4551);
   }
-  dasm_put(Dst, 4535);
+  dasm_put(Dst, 4568);
   if (sse) {
-    dasm_put(Dst, 4551, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4584, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4576, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4609, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4598);
+  dasm_put(Dst, 4631);
   if (sse) {
-    dasm_put(Dst, 4620);
+    dasm_put(Dst, 4653);
   } else {
-    dasm_put(Dst, 4646);
+    dasm_put(Dst, 4679);
   }
-  dasm_put(Dst, 4663, 1+2);
+  dasm_put(Dst, 4696, 1+2);
   if (sse) {
-    dasm_put(Dst, 4703);
+    dasm_put(Dst, 4736);
   } else {
-    dasm_put(Dst, 4711);
+    dasm_put(Dst, 4744);
   }
-  dasm_put(Dst, 4721, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4754, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4773, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4806, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4820, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 4861, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4894, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
   }
   if (sse) {
-  dasm_put(Dst, 4932, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4965, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
   }
   if (!sse) {
-    dasm_put(Dst, 5003);
+    dasm_put(Dst, 5036);
   }
-  dasm_put(Dst, 5012, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5045, 1+1, LJ_TSTR);
   if (sse) {
-    dasm_put(Dst, 5034, Dt5(->len));
+    dasm_put(Dst, 5067, Dt5(->len));
   } else {
-    dasm_put(Dst, 5045, Dt5(->len));
+    dasm_put(Dst, 5078, Dt5(->len));
   }
-  dasm_put(Dst, 5053, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5086, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (sse) {
-    dasm_put(Dst, 5091);
+    dasm_put(Dst, 5124);
   } else {
-    dasm_put(Dst, 5101);
+    dasm_put(Dst, 5134);
   }
-  dasm_put(Dst, 5112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5145, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5149);
+    dasm_put(Dst, 5182);
   } else {
-    dasm_put(Dst, 5171);
+    dasm_put(Dst, 5204);
   }
-  dasm_put(Dst, 5191, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
-  dasm_put(Dst, 2154);
+  dasm_put(Dst, 5224, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 2187);
   if (sse) {
-    dasm_put(Dst, 5300);
+    dasm_put(Dst, 5333);
   } else {
-    dasm_put(Dst, 5311);
+    dasm_put(Dst, 5344);
   }
-  dasm_put(Dst, 5319, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+  dasm_put(Dst, 5352, LJ_TSTR, LJ_TISNUM, Dt5(->len));
   if (sse) {
-    dasm_put(Dst, 5349);
+    dasm_put(Dst, 5382);
   } else {
   }
-  dasm_put(Dst, 5356, sizeof(GCstr)-1);
-  dasm_put(Dst, 5431, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 5492, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5389, sizeof(GCstr)-1);
+  dasm_put(Dst, 5464, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 5525, LJ_TSTR, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5513);
+    dasm_put(Dst, 5546);
   } else {
-    dasm_put(Dst, 5520);
+    dasm_put(Dst, 5553);
   }
-  dasm_put(Dst, 5532, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5600, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 5667, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 5740, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5825, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 5899, 1+1, LJ_TTAB);
+  dasm_put(Dst, 5565, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5633, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 5700, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 5773, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5858, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 5932, 1+1, LJ_TTAB);
   if (sse) {
-    dasm_put(Dst, 5966);
+    dasm_put(Dst, 5999);
   } else {
   }
   if (sse) {
-    dasm_put(Dst, 5976, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+    dasm_put(Dst, 6009, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
   if (sse) {
-  dasm_put(Dst, 6028, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6061, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6071, LJ_TISNUM);
+  dasm_put(Dst, 6104, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6098);
+  dasm_put(Dst, 6131);
   } else {
   }
-  dasm_put(Dst, 6115);
+  dasm_put(Dst, 6148);
   if (sse) {
-  dasm_put(Dst, 6123, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6156, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6071, LJ_TISNUM);
+  dasm_put(Dst, 6104, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6166);
+  dasm_put(Dst, 6199);
   } else {
   }
-  dasm_put(Dst, 6115);
+  dasm_put(Dst, 6148);
   if (sse) {
-  dasm_put(Dst, 6183, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6216, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6071, LJ_TISNUM);
+  dasm_put(Dst, 6104, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6226);
+  dasm_put(Dst, 6259);
   } else {
   }
-  dasm_put(Dst, 6115);
+  dasm_put(Dst, 6148);
   if (sse) {
-  dasm_put(Dst, 6243, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6276, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6286);
+  dasm_put(Dst, 6319);
   if (sse) {
-  dasm_put(Dst, 6293, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6326, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6336);
+  dasm_put(Dst, 6369);
   if (sse) {
-    dasm_put(Dst, 6340);
+    dasm_put(Dst, 6373);
   } else {
   }
-  dasm_put(Dst, 6352);
+  dasm_put(Dst, 6385);
   if (sse) {
-  dasm_put(Dst, 6363, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6396, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6432);
+  dasm_put(Dst, 6465);
   if (sse) {
-  dasm_put(Dst, 6441, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6474, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6510);
+  dasm_put(Dst, 6543);
   if (sse) {
-  dasm_put(Dst, 6520, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6553, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6589);
+  dasm_put(Dst, 6622);
   if (sse) {
-  dasm_put(Dst, 6599, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6632, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6668);
+  dasm_put(Dst, 6701);
   if (sse) {
-  dasm_put(Dst, 6677, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6710, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6746, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 6824, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 6951, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 6779, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 6857, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 6984, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 6990, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7023, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 7023, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7077, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7056, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7110, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7144, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7177, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7191);
+  dasm_put(Dst, 7224);
 #if LJ_HASJIT
-  dasm_put(Dst, 7018);
+  dasm_put(Dst, 7051);
 #endif
-  dasm_put(Dst, 7198);
+  dasm_put(Dst, 7231);
 #if LJ_HASJIT
-  dasm_put(Dst, 7201);
+  dasm_put(Dst, 7234);
 #endif
-  dasm_put(Dst, 7211, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7244, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7244);
+  dasm_put(Dst, 7277);
 #endif
-  dasm_put(Dst, 7249, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7282, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7280, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 7313, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 7519);
+  dasm_put(Dst, 7552);
 #if LJ_HASJIT
-  dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 7555, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 7622);
+  dasm_put(Dst, 7655);
   if (!sse) {
-  dasm_put(Dst, 7625);
+  dasm_put(Dst, 7658);
   }
-  dasm_put(Dst, 7670, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7703, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7756);
+  dasm_put(Dst, 7789);
   }
-  dasm_put(Dst, 7801, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 7834, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7887);
+  dasm_put(Dst, 7920);
   }
-  dasm_put(Dst, 7926, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7959, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (sse) {
-    dasm_put(Dst, 8015, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 8048, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
-    dasm_put(Dst, 8129);
+    dasm_put(Dst, 8162);
   }
-  dasm_put(Dst, 8176);
+  dasm_put(Dst, 8209);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8253);
+    dasm_put(Dst, 8286);
   }
-  dasm_put(Dst, 8256);
-  dasm_put(Dst, 8341, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
-  dasm_put(Dst, 8442, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
-  dasm_put(Dst, 8616);
+  dasm_put(Dst, 8289);
+  dasm_put(Dst, 8374, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 8475, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+  dasm_put(Dst, 8649);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8657);
-    dasm_put(Dst, 8727);
-    dasm_put(Dst, 8799);
+    dasm_put(Dst, 8690);
+    dasm_put(Dst, 8760);
+    dasm_put(Dst, 8832);
   } else {
-    dasm_put(Dst, 8851);
-    dasm_put(Dst, 8943);
+    dasm_put(Dst, 8884);
+    dasm_put(Dst, 8976);
   }
-  dasm_put(Dst, 8989);
+  dasm_put(Dst, 9022);
 #endif
-  dasm_put(Dst, 8993);
+  dasm_put(Dst, 9026);
   if (sse) {
-    dasm_put(Dst, 8996, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9081, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9029, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9114, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9209);
-    dasm_put(Dst, 9292);
+    dasm_put(Dst, 9242);
+    dasm_put(Dst, 9325);
     if (cmov) {
-    dasm_put(Dst, 9347);
+    dasm_put(Dst, 9380);
     } else {
-    dasm_put(Dst, 9366);
+    dasm_put(Dst, 9399);
     }
-    dasm_put(Dst, 8989);
+    dasm_put(Dst, 9022);
   }
-  dasm_put(Dst, 9407);
+  dasm_put(Dst, 9440);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9431, DtE(->spadj));
+  dasm_put(Dst, 9464, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9447, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
-  dasm_put(Dst, 9526, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
+  dasm_put(Dst, 9480, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
+  dasm_put(Dst, 9559, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9581);
+  dasm_put(Dst, 9614);
 #endif
 }
 
@@ -1470,7 +1485,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
 static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 {
   int vk = 0;
-  dasm_put(Dst, 1770, defop);
+  dasm_put(Dst, 9622, defop);
 
   switch (op) {
 
@@ -1479,623 +1494,641 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 9589, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9624, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9610);
+      dasm_put(Dst, 9645);
     } else {
-      dasm_put(Dst, 9625);
+      dasm_put(Dst, 9660);
       if (cmov) {
-      dasm_put(Dst, 9635);
+      dasm_put(Dst, 9670);
       } else {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9676);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9648);
+      dasm_put(Dst, 9683);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 9287);
+      dasm_put(Dst, 9320);
       break;
     case BC_ISLE:
-      dasm_put(Dst, 5894);
+      dasm_put(Dst, 5927);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9653);
+      dasm_put(Dst, 9688);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9658, -BCBIAS_J*4);
+    dasm_put(Dst, 9693, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9693, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9728, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9719);
+      dasm_put(Dst, 9754);
     } else {
-      dasm_put(Dst, 9731);
+      dasm_put(Dst, 9766);
       if (cmov) {
-      dasm_put(Dst, 9635);
+      dasm_put(Dst, 9670);
       } else {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9676);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9738);
+      dasm_put(Dst, 9773);
     } else {
-      dasm_put(Dst, 9747);
+      dasm_put(Dst, 9782);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9756, -BCBIAS_J*4);
+      dasm_put(Dst, 9791, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4502);
+      }
     } else {
-      dasm_put(Dst, 9771, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4502);
+      }
+      dasm_put(Dst, 9806, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9786, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9821);
+      if (LJ_HASFFI) {
+	dasm_put(Dst, 9824, LJ_TCDATA, LJ_TCDATA);
+      }
+      dasm_put(Dst, 9843, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 9844);
+	dasm_put(Dst, 9899);
       } else {
-	dasm_put(Dst, 9848);
+	dasm_put(Dst, 9903);
       }
-      dasm_put(Dst, 9854);
+      dasm_put(Dst, 9909);
+    } else if (LJ_HASFFI) {
+      dasm_put(Dst, 9914, LJ_TCDATA);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9859, LJ_TSTR);
+    dasm_put(Dst, 9929, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9742);
+      dasm_put(Dst, 9777);
     } else {
-      dasm_put(Dst, 2803);
+      dasm_put(Dst, 2836);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9884, LJ_TISNUM);
+    dasm_put(Dst, 9956, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9898);
+      dasm_put(Dst, 9972);
     } else {
-      dasm_put(Dst, 9911);
+      dasm_put(Dst, 9985);
       if (cmov) {
-      dasm_put(Dst, 9635);
+      dasm_put(Dst, 9670);
       } else {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9676);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9919);
-    goto iseqne_test;
+    dasm_put(Dst, 9993);
+    if (!LJ_HASFFI) goto iseqne_test;
+    if (vk) {
+      dasm_put(Dst, 10007, -BCBIAS_J*4, LJ_TCDATA);
+    } else {
+      dasm_put(Dst, 10058, LJ_TCDATA, -BCBIAS_J*4);
+    }
+    break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9931, LJ_TISTRUECOND);
+    dasm_put(Dst, 10103, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9943);
+      dasm_put(Dst, 10115);
     } else {
-      dasm_put(Dst, 9948);
+      dasm_put(Dst, 10120);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9953);
+      dasm_put(Dst, 10125);
     }
-    dasm_put(Dst, 9964, -BCBIAS_J*4);
+    dasm_put(Dst, 10136, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9997);
+    dasm_put(Dst, 10169);
     break;
   case BC_NOT:
-    dasm_put(Dst, 10026, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 10198, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 10063, LJ_TISNUM);
+    dasm_put(Dst, 10235, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10074, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 10246, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 10099);
+      dasm_put(Dst, 10271);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10108, LJ_TSTR);
+    dasm_put(Dst, 10280, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10122, Dt5(->len));
+      dasm_put(Dst, 10294, Dt5(->len));
     } else {
-      dasm_put(Dst, 10140, Dt5(->len));
+      dasm_put(Dst, 10312, Dt5(->len));
     }
-    dasm_put(Dst, 10149, LJ_TTAB);
+    dasm_put(Dst, 10321, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10191);
+      dasm_put(Dst, 10363);
     } else {
     }
-    dasm_put(Dst, 10200);
+    dasm_put(Dst, 10372);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10230);
+    dasm_put(Dst, 10402);
     } else {
-    dasm_put(Dst, 10245);
+    dasm_put(Dst, 10417);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10266);
+    dasm_put(Dst, 10438);
     } else {
-    dasm_put(Dst, 10281);
+    dasm_put(Dst, 10453);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10312);
+    dasm_put(Dst, 10484);
     } else {
-    dasm_put(Dst, 10326);
+    dasm_put(Dst, 10498);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10334);
+    dasm_put(Dst, 10506);
     } else {
-    dasm_put(Dst, 10349);
+    dasm_put(Dst, 10521);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10358);
+    dasm_put(Dst, 10530);
     } else {
-    dasm_put(Dst, 10373);
+    dasm_put(Dst, 10545);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10382);
+    dasm_put(Dst, 10554);
     } else {
-    dasm_put(Dst, 10396);
+    dasm_put(Dst, 10568);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10404);
+    dasm_put(Dst, 10576);
     } else {
-    dasm_put(Dst, 10419);
+    dasm_put(Dst, 10591);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10428);
+    dasm_put(Dst, 10600);
     } else {
-    dasm_put(Dst, 10443);
+    dasm_put(Dst, 10615);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10452);
+    dasm_put(Dst, 10624);
     } else {
-    dasm_put(Dst, 10466);
+    dasm_put(Dst, 10638);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10474);
+    dasm_put(Dst, 10646);
     } else {
-    dasm_put(Dst, 10489);
+    dasm_put(Dst, 10661);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10498);
+    dasm_put(Dst, 10670);
     } else {
-    dasm_put(Dst, 10513);
+    dasm_put(Dst, 10685);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10522);
+    dasm_put(Dst, 10694);
     } else {
-    dasm_put(Dst, 10536);
+    dasm_put(Dst, 10708);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10544);
+    dasm_put(Dst, 10716);
     } else {
-    dasm_put(Dst, 10559);
+    dasm_put(Dst, 10731);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10568);
+    dasm_put(Dst, 10740);
     } else {
-    dasm_put(Dst, 10583);
+    dasm_put(Dst, 10755);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10592);
+    dasm_put(Dst, 10764);
     } else {
-    dasm_put(Dst, 10606);
+    dasm_put(Dst, 10778);
     }
       break;
     }
-    dasm_put(Dst, 10614);
+    dasm_put(Dst, 10786);
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10544);
+    dasm_put(Dst, 10716);
     } else {
-    dasm_put(Dst, 10559);
+    dasm_put(Dst, 10731);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10568);
+    dasm_put(Dst, 10740);
     } else {
-    dasm_put(Dst, 10583);
+    dasm_put(Dst, 10755);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10592);
+    dasm_put(Dst, 10764);
     } else {
-    dasm_put(Dst, 10606);
+    dasm_put(Dst, 10778);
     }
       break;
     }
-    dasm_put(Dst, 10620);
+    dasm_put(Dst, 10792);
     break;
   case BC_POW:
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10382);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10218, LJ_TISNUM);
+    dasm_put(Dst, 10390, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10544);
+    dasm_put(Dst, 10716);
     } else {
-    dasm_put(Dst, 10559);
+    dasm_put(Dst, 10731);
     }
       break;
     case 1:
-    dasm_put(Dst, 10254, LJ_TISNUM);
+    dasm_put(Dst, 10426, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10568);
+    dasm_put(Dst, 10740);
     } else {
-    dasm_put(Dst, 10583);
+    dasm_put(Dst, 10755);
     }
       break;
     default:
-    dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10592);
+    dasm_put(Dst, 10764);
     } else {
-    dasm_put(Dst, 10606);
+    dasm_put(Dst, 10778);
     }
       break;
     }
-    dasm_put(Dst, 10625);
+    dasm_put(Dst, 10797);
     if (sse) {
-    dasm_put(Dst, 10092);
+    dasm_put(Dst, 10264);
     } else {
-    dasm_put(Dst, 10104);
+    dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10629, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10801, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10713, LJ_TSTR);
+    dasm_put(Dst, 10885, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 10713, LJ_TCDATA);
+    dasm_put(Dst, 10885, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10750);
+      dasm_put(Dst, 10922);
     } else {
-      dasm_put(Dst, 10765);
+      dasm_put(Dst, 10937);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10773);
+      dasm_put(Dst, 10945);
     } else {
-      dasm_put(Dst, 10787);
+      dasm_put(Dst, 10959);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10795);
+    dasm_put(Dst, 10967);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10824, LJ_TNIL);
+    dasm_put(Dst, 10996, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10872, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11044, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10913, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 11009);
+    dasm_put(Dst, 11085, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 11181);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 11021, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 11193, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 11117);
+    dasm_put(Dst, 11289);
     if (sse) {
-      dasm_put(Dst, 11122);
+      dasm_put(Dst, 11294);
     } else {
-      dasm_put(Dst, 9914);
+      dasm_put(Dst, 9988);
     }
-    dasm_put(Dst, 11130, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11302, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11139);
+      dasm_put(Dst, 11311);
     } else {
-      dasm_put(Dst, 11145);
+      dasm_put(Dst, 11317);
     }
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11148, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11320, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11188, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11360, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11244, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11416, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11311, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11483, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11435, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11607, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11534, Dt7(->env));
+    dasm_put(Dst, 11706, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11554, Dt7(->env));
+    dasm_put(Dst, 11726, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11574, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11746, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11607);
+      dasm_put(Dst, 11779);
     } else {
     }
-    dasm_put(Dst, 11628, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11713, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 11800, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11885, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11742, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11827, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11914, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11999, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11899, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11995, LJ_TNIL);
+    dasm_put(Dst, 12071, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12167, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 12012, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 12184, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11607);
+      dasm_put(Dst, 11779);
     } else {
     }
-    dasm_put(Dst, 12045, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 12125, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12217, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 12297, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12189, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 12266, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12353, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12361, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 12438, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12525, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12445, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12540, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12617, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12712, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12588, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12738, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12760, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12910, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 10214);
+    dasm_put(Dst, 10386);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12758);
+      dasm_put(Dst, 12930);
     }
-    dasm_put(Dst, 12763, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12935, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12758);
+    dasm_put(Dst, 12930);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12806, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12924, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12978, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 13096, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12998, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 13170, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 13070, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 13242, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 13122);
+      dasm_put(Dst, 13294);
     } else {
-      dasm_put(Dst, 13128);
+      dasm_put(Dst, 13300);
     }
-    dasm_put(Dst, 13134);
+    dasm_put(Dst, 13306);
     if (sse) {
-      dasm_put(Dst, 10092);
+      dasm_put(Dst, 10264);
     } else {
-      dasm_put(Dst, 10104);
+      dasm_put(Dst, 10276);
     }
-    dasm_put(Dst, 13147, -BCBIAS_J*4);
+    dasm_put(Dst, 13319, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 13201);
+      dasm_put(Dst, 13373);
     }
-    dasm_put(Dst, 13207, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 13379, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 13286, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 13458, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 13387, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 13554, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 13559, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 13726, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12758);
+    dasm_put(Dst, 12930);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13624);
+      dasm_put(Dst, 13796);
     }
-    dasm_put(Dst, 13628, FRAME_TYPE);
+    dasm_put(Dst, 13800, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13647);
+      dasm_put(Dst, 13819);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13701);
+      dasm_put(Dst, 13873);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13711);
+      dasm_put(Dst, 13883);
     default:
       break;
     }
-    dasm_put(Dst, 13722, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13894, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13770, LJ_TNIL);
+      dasm_put(Dst, 13942, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13781, LJ_TNIL);
+      dasm_put(Dst, 13953, LJ_TNIL);
     }
-    dasm_put(Dst, 13788, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13960, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13812);
+      dasm_put(Dst, 13984);
     }
-    dasm_put(Dst, 4546);
+    dasm_put(Dst, 4579);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2103,7 +2136,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2115,57 +2148,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 13837);
+    dasm_put(Dst, 14009);
     if (!vk) {
-      dasm_put(Dst, 13841, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 14013, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13860);
+    dasm_put(Dst, 14032);
     if (!vk) {
-      dasm_put(Dst, 13864, LJ_TISNUM);
+      dasm_put(Dst, 14036, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13873);
+      dasm_put(Dst, 14045);
       if (vk) {
-	dasm_put(Dst, 13885);
+	dasm_put(Dst, 14057);
       } else {
-	dasm_put(Dst, 13904);
+	dasm_put(Dst, 14076);
       }
-      dasm_put(Dst, 13909);
+      dasm_put(Dst, 14081);
     } else {
-      dasm_put(Dst, 13922);
+      dasm_put(Dst, 14094);
       if (vk) {
-	dasm_put(Dst, 13928);
+	dasm_put(Dst, 14100);
       } else {
-	dasm_put(Dst, 13944);
+	dasm_put(Dst, 14116);
       }
-      dasm_put(Dst, 13952);
+      dasm_put(Dst, 14124);
       if (cmov) {
-      dasm_put(Dst, 9635);
+      dasm_put(Dst, 9670);
       } else {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9676);
       }
       if (!cmov) {
-	dasm_put(Dst, 13957);
+	dasm_put(Dst, 14129);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13963, -BCBIAS_J*4);
+      dasm_put(Dst, 14135, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13973, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 14145, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13987, -BCBIAS_J*4);
+      dasm_put(Dst, 14159, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13983, BC_JLOOP);
+      dasm_put(Dst, 14155, BC_JLOOP);
     }
-    dasm_put(Dst, 9670);
+    dasm_put(Dst, 9705);
     if (sse) {
-      dasm_put(Dst, 13997);
+      dasm_put(Dst, 14169);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2174,33 +2207,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 14008, LJ_TNIL);
+    dasm_put(Dst, 14180, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 14023, BC_JLOOP);
+      dasm_put(Dst, 14195, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14037, -BCBIAS_J*4);
+      dasm_put(Dst, 14209, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9974);
+    dasm_put(Dst, 10146);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9672);
+    dasm_put(Dst, 9707);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 14053, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 14225, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 14094, -BCBIAS_J*4);
+    dasm_put(Dst, 14266, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2214,7 +2247,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 14120, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14292, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2224,47 +2257,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 14141, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 14313, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 14172, BC_JLOOP);
+      dasm_put(Dst, 14344, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9672);
+      dasm_put(Dst, 9707);
     }
-    dasm_put(Dst, 14181, LJ_TNIL);
+    dasm_put(Dst, 14353, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 8991);
+    dasm_put(Dst, 9024);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 14203, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 14375, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 14172, BC_JLOOP);
+      dasm_put(Dst, 14344, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14300, -4+PC2PROTO(k));
+      dasm_put(Dst, 14472, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 14325, LJ_TNIL);
+    dasm_put(Dst, 14497, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 14347, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 14519, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14377);
+      dasm_put(Dst, 14549);
     } else {
-      dasm_put(Dst, 14381);
+      dasm_put(Dst, 14553);
     }
-    dasm_put(Dst, 14389, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14561, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14399);
+      dasm_put(Dst, 14571);
     } else {
-      dasm_put(Dst, 14404, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14576, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14410, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14582, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2292,7 +2325,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14436);
+  dasm_put(Dst, 14608);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index a0cad3b6..578bc904 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP	0
 #define DASM_SECTION_CODE_SUB	1
 #define DASM_MAXSECTION		2
-static const unsigned char build_actionlist[14342] = {
+static const unsigned char build_actionlist[14509] = {
   254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
   141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
   36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -79,293 +79,295 @@ static const unsigned char build_actionlist[14342] = {
   43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,
   253,4,239,252,233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139,
   108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,
-  252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,
-  234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,
-  4,194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,
-  70,252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,
-  116,36,100,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,
-  208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248,50,139,108,
-  36,96,137,149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149,
-  233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,
-  252,233,8,139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,
-  116,36,100,232,251,1,7,139,149,233,139,76,36,84,139,68,36,80,139,105,252,
-  248,131,192,1,57,215,15,132,244,52,137,202,137,114,252,252,139,181,233,139,
-  14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,248,53,139,108,
-  36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,8,139,149,
-  233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,
-  233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,239,15,
-  131,244,55,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,
-  248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,
-  252,248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,56,248,57,129,
-  252,248,239,15,130,244,55,139,106,4,137,252,233,193,252,249,15,131,252,249,
-  252,254,15,132,244,249,255,184,237,252,247,213,57,232,255,15,71,197,255,15,
-  134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,
-  114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,184,237,
-  252,233,244,2,248,59,129,252,248,239,15,130,244,55,139,106,4,139,114,252,
-  252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,
-  237,199,66,252,252,237,255,15,132,244,58,139,131,233,199,66,252,252,237,137,
-  106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,
-  239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,
-  133,244,3,255,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,58,
-  139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,253,239,
-  15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,
-  172,253,171,233,252,233,244,2,248,60,255,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,133,244,55,139,42,131,189,233,0,15,133,244,55,129,122,253,
-  12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,252,252,
-  237,137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,
-  139,131,233,137,171,233,137,133,233,248,1,252,233,244,58,248,61,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,213,68,141,66,8,139,
-  18,139,76,36,96,232,251,1,9,137,252,234,72,139,40,139,114,252,252,72,137,
-  106,252,248,252,233,244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,
-  4,239,255,15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,
-  233,244,64,255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,129,122,
-  253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
-  233,244,58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,
-  55,139,171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,108,36,
-  96,137,149,233,137,116,36,100,137,252,233,232,251,1,10,139,149,233,252,233,
-  244,2,248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,
-  4,239,15,133,244,55,139,108,36,96,137,149,233,255,137,149,233,139,114,252,
-  252,68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,11,139,149,233,
-  133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,
-  2,248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,
-  66,252,252,237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,255,139,
-  42,129,122,253,4,239,15,133,244,55,255,131,189,233,0,15,133,244,55,255,139,
-  106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
-  199,66,12,237,184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,114,
-  252,252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,
-  88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,
-  131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,72,
-  139,40,72,137,42,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,
-  233,137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,
-  184,237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129,
-  122,253,4,239,15,133,244,55,255,139,106,252,248,139,133,233,139,114,252,252,
-  199,66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,
-  252,238,221,90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,
-  244,55,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,
-  229,1,1,252,238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,
-  253,12,239,15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,
-  114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,
-  252,248,239,15,130,244,55,139,42,139,114,252,252,137,116,36,100,137,108,36,
-  80,129,122,253,4,239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,
-  233,235,15,135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,
-  55,248,1,141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,
-  36,96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,
-  206,15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,
-  15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,255,139,
-  108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,
-  139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
-  4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,
-  1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,
-  252,237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,
-  255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,
-  252,252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,
-  252,233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,
-  251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,77,139,106,252,248,139,
-  173,233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,
-  133,244,55,255,128,189,233,235,15,135,244,55,139,141,233,15,132,244,247,59,
-  141,233,15,132,244,55,248,1,141,116,193,252,248,59,181,233,15,135,244,55,
-  137,181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,
-  41,252,245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,
-  131,252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,
-  131,233,237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,
-  244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,
-  244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,
-  205,248,5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,
-  70,1,248,7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,
-  13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76,
-  36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,
-  233,252,233,244,4,248,78,139,108,36,96,72,252,247,133,233,237,15,132,244,
-  55,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,
-  235,136,133,233,252,233,244,16,255,248,64,139,114,252,252,221,90,252,248,
-  252,233,244,58,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,
-  63,139,114,252,252,252,242,15,17,66,252,248,255,248,79,129,252,248,239,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63,248,64,139,
-  114,252,252,221,90,252,248,255,248,58,184,237,248,69,137,68,36,84,248,56,
-  252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,
-  78,252,253,72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,
-  4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,1,252,
-  233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,
-  255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  252,242,15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129,122,
-  253,4,239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,
-  255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
-  15,16,2,232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,
-  252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,
-  252,233,244,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,
-  252,233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,
-  239,255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,
-  233,244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,
-  244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,
-  91,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,
-  252,242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,
-  122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,
-  250,217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,
-  253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,
-  217,201,217,252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,
-  255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  252,242,15,16,2,255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248,
-  96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
-  15,16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129,
-  252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
-  255,137,213,232,251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129,
-  252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
-  139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220,
-  141,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122,
-  253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217,
-  252,243,252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217,
-  252,253,221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139,
-  106,4,129,252,253,239,15,135,244,55,139,114,252,252,139,2,137,106,252,252,
-  137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,
-  132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,
-  252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,
-  139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,
-  252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,69,248,
-  3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,
-  252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,
-  15,17,66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,
-  248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,
-  252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
-  255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,
-  221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,
-  132,244,250,255,15,40,224,232,244,104,252,242,15,92,224,248,1,252,242,15,
-  17,66,252,248,252,242,15,17,34,255,217,192,232,244,104,220,252,233,248,1,
-  221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,
-  248,2,184,237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233,
-  244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,
-  1,255,248,105,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,129,122,253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,
-  224,158,15,138,244,1,221,217,252,233,244,64,255,248,106,129,252,248,239,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,63,255,248,
-  106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
-  253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,
-  108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
-  15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,
-  239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,
-  197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,
-  129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,
-  248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,
-  55,255,248,110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,
-  55,139,42,255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,
-  244,64,255,248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,
-  244,55,139,42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,
-  255,252,242,15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233,
-  244,64,255,248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,
-  129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,
-  15,44,42,129,252,253,252,255,0,0,0,15,135,244,55,137,108,36,84,255,221,2,
-  219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1,
-  0,0,0,72,141,68,36,84,248,113,139,108,36,96,137,149,233,68,139,68,36,32,72,
-  137,194,137,252,233,137,116,36,100,232,251,1,17,139,149,233,139,114,252,252,
-  199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171,
-  233,15,130,244,247,232,244,66,248,1,199,68,36,84,252,255,252,255,252,255,
-  252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255,
-  252,242,15,44,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,
-  122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108,
-  36,32,139,173,233,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,
-  251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115,
-  141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,248,
-  5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,
+  252,233,244,3,248,46,255,131,252,238,4,139,108,36,96,137,149,233,137,252,
+  233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,47,141,
+  4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233,244,248,
+  248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141,44,252,
+  234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,
+  139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,
+  139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,244,141,
+  176,233,184,237,252,233,244,27,248,51,255,139,108,36,96,137,149,233,141,20,
+  194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,233,244,42,248,
+  52,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,
+  96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,
+  8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,
+  15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,
+  182,205,131,198,4,252,255,36,252,235,248,54,139,108,36,96,137,149,233,137,
+  202,137,252,233,137,116,36,100,232,251,1,9,139,149,233,139,70,252,252,15,
+  182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,55,129,252,
+  248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139,114,
+  252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,232,2,15,
+  132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,
+  1,15,133,244,1,248,2,139,68,36,84,252,233,244,57,248,58,129,252,248,239,15,
+  130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,
+  244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,
+  248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,
+  252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233,244,2,248,
+  60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129,252,253,239,
+  15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,
+  237,255,15,132,244,59,139,131,233,199,66,252,252,237,137,106,252,248,139,
+  141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,
+  250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,
+  252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1,137,106,
+  252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,244,1,
+  129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,
+  233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122,253,4,
+  239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239,15,
+  133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,106,
+  252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,139,131,233,
+  137,171,233,137,133,233,248,1,252,233,244,59,248,62,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,133,244,56,137,213,68,141,66,8,139,18,139,76,
+  36,96,232,251,1,10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,
+  252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253,4,239,255,
+  15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252,233,244,65,
+  255,248,66,129,252,248,239,15,130,244,56,139,114,252,252,129,122,253,4,239,
+  15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,
+  59,248,3,129,122,253,4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,
+  171,233,59,171,233,255,15,130,244,247,232,244,67,248,1,139,108,36,96,137,
+  149,233,137,116,36,100,137,252,233,232,251,1,11,139,149,233,252,233,244,2,
+  248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129,122,253,4,239,
+  15,133,244,56,139,108,36,96,137,149,233,255,137,149,233,139,114,252,252,68,
+  141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,12,139,149,233,133,192,
+  15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,
+  69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1,248,3,199,66,
+  252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56,255,139,42,
+  129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244,56,255,139,106,
+  252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,
+  66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,114,252,
+  252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,
+  193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,
+  244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,72,139,
+  40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,252,233,
+  137,213,137,194,232,251,1,13,137,252,234,133,192,15,133,244,1,248,73,184,
+  237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,139,42,129,122,
+  253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199,
+  66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,
+  238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,
+  56,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,
+  1,1,252,238,252,233,244,27,248,76,129,252,248,239,15,130,244,56,129,122,253,
+  12,239,15,133,244,56,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,
+  8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,77,129,252,
+  248,239,15,130,244,56,139,42,139,114,252,252,137,116,36,100,137,108,36,80,
+  129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133,244,56,128,189,233,
+  235,15,135,244,56,139,141,233,15,132,244,247,255,59,141,233,15,132,244,56,
+  248,1,141,116,193,252,240,59,181,233,15,135,244,56,137,181,233,139,108,36,
+  96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,
+  15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,
+  133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,255,139,108,
+  36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
+  142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,
+  193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,
+  72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,
+  237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255,
+  252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
+  252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,
+  233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,
+  1,0,139,116,36,80,139,149,233,252,233,244,4,248,78,139,106,252,248,139,173,
+  233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,
+  244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141,
+  233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56,137,
+  181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252,
+  245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252,
+  238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,
+  237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,
+  248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
+  141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,
+  5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,
+  7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,
+  244,14,248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,76,36,80,137,
+  185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252,
+  233,244,4,248,79,139,108,36,96,72,252,247,133,233,237,15,132,244,56,255,137,
+  149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,
+  133,233,252,233,244,16,255,248,65,139,114,252,252,221,90,252,248,252,233,
+  244,59,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,64,139,
+  114,252,252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252,
+  252,221,90,252,248,255,248,59,184,237,248,70,137,68,36,84,248,57,252,247,
+  198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,
+  72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,
+  7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,81,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,
+  252,233,244,64,248,82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,252,242,15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,
+  85,252,233,244,64,255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,
+  239,15,135,244,56,221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,
+  65,248,84,255,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,221,2,232,244,85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,217,252,237,221,2,217,252,241,252,233,
+  244,65,248,87,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,217,252,236,221,2,217,252,241,252,233,244,65,248,88,129,252,248,239,255,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,89,252,233,244,
+  65,248,90,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,217,252,254,252,233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,217,252,255,252,233,244,65,248,92,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,
+  216,252,233,244,65,248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,
+  239,15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,
+  243,252,233,244,65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
+  252,243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,
+  239,15,135,244,56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
+  16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,
+  137,213,232,251,1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,
+  232,251,1,17,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252,
+  248,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233,
+  252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243,
+  252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253,
+  221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129,
+  252,253,239,15,135,244,56,139,114,252,252,139,2,137,106,252,252,137,66,252,
+  248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,
+  184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,
+  41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252,
+  252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
+  2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15,
+  87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
+  15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
+  66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
+  255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,104,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,
+  248,104,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
+  244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242,15,17,66,
+  252,248,252,242,15,17,34,255,217,192,232,244,105,220,252,233,248,1,221,90,
+  252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
+  237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
+  4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
+  106,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
+  253,12,239,15,135,244,56,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
+  138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
+  15,16,2,252,242,15,16,74,8,232,244,108,252,233,244,64,255,248,107,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,
+  15,135,244,56,221,2,221,66,8,232,244,108,252,233,244,65,255,248,109,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,
+  2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135,
+  244,56,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,
+  244,1,255,248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
+  244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,
+  252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252,242,
+  15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248,
+  111,129,252,248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42,
+  255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,244,65,255,
+  248,112,129,252,248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139,
+  42,139,114,252,252,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,
+  15,42,197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255,
+  248,113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,
+  239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129,
+  252,253,252,255,0,0,0,15,135,244,56,137,108,36,84,255,221,2,219,92,36,84,
+  129,124,36,84,252,255,0,0,0,15,135,244,56,255,199,68,36,32,1,0,0,0,72,141,
+  68,36,84,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,
+  252,233,137,116,36,100,232,251,1,18,139,149,233,139,114,252,252,199,66,252,
+  252,237,137,66,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130,
+  244,247,232,244,67,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,
+  252,248,239,15,130,244,56,15,134,244,247,129,122,253,20,239,255,252,242,15,
+  44,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,
+  4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,137,108,36,32,
+  139,173,233,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,
+  248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116,141,
+  172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,248,5,
+  15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,
   7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,
-  233,244,3,248,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244,
-  55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253,
-  4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15,
-  44,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115,
-  131,189,233,1,15,130,244,115,15,133,244,117,57,131,233,15,130,244,117,15,
+  233,244,3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,
+  56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253,
+  4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,
+  44,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,116,
+  131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,
   182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,
-  133,244,1,139,131,233,252,233,244,113,248,118,129,252,248,239,255,15,130,
-  244,55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,
-  4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,244,115,57,131,233,
-  15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,
+  133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,255,15,130,
+  244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122,253,
+  4,239,15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,57,131,233,
+  15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,
   15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,
-  36,84,252,233,244,113,248,120,129,252,248,239,15,130,244,55,139,171,233,59,
-  171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,
-  42,139,133,233,57,131,233,255,15,130,244,119,129,197,239,137,116,36,84,137,
+  36,84,252,233,244,114,248,121,129,252,248,239,15,130,244,56,139,171,233,59,
+  171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
+  42,139,133,233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,84,137,
   68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,
   130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
-  3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,113,248,121,
-  129,252,248,239,15,130,244,55,255,139,171,233,59,171,233,15,130,244,247,232,
-  244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233,
-  15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,
+  3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,114,248,122,
+  129,252,248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,
+  244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,
+  15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,
   244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,
   122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
-  1,137,252,240,139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130,
-  244,55,129,122,253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252,
-  234,255,252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130,
-  244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,
+  1,137,252,240,139,116,36,84,252,233,244,114,248,123,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,133,244,56,137,213,139,10,232,251,1,19,137,252,
+  234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,
   72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,
-  244,63,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
+  244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
+  244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
   102,15,126,197,255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,
-  125,129,120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193,
-  102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,
+  126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,242,15,88,193,
+  102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,
   237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,
-  16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,
+  16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,
   102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,
-  242,15,88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,
-  15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255,
-  248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
+  242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72,
+  15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,126,255,
+  248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,
   242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
-  197,255,252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248,
-  126,139,68,36,84,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,
+  197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244,64,255,248,
+  127,139,68,36,84,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
   15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
   194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,
-  193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
+  193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253,
+  4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,
   242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,
   15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,
-  233,244,125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
+  233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,
   74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
   137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,
-  125,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,
+  126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,
   189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
-  102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248,
-  135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,
-  253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
+  102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,126,255,248,
+  136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
+  253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
   102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,
-  197,102,15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252,
-  233,244,55,248,119,184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,
+  197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118,184,237,252,
+  233,244,56,248,120,184,237,248,56,139,108,36,96,139,114,252,252,137,116,36,
   100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
   59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
-  15,143,244,69,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
+  15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
   139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,
   131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,
   15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,
   252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,
-  232,251,1,0,139,149,233,49,192,252,233,244,1,248,66,93,72,137,108,36,32,139,
+  232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137,108,36,32,139,
   108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
-  133,233,232,251,1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
-  139,108,36,32,85,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168,
+  133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
+  139,108,36,32,85,195,248,137,255,15,182,131,233,168,235,15,133,244,251,168,
   235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,
-  255,248,137,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,138,
+  255,248,138,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,139,
   15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,
   233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,
-  233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,
+  233,137,252,242,137,252,233,232,251,1,21,248,3,139,149,233,248,4,15,182,78,
   252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,
-  233,248,139,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,140,255,139,
+  233,248,140,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,141,255,139,
   106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,
   137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,
-  1,21,252,233,244,3,255,248,141,137,116,36,100,255,248,142,255,137,116,36,
+  1,22,252,233,244,3,255,248,142,137,116,36,100,255,248,143,255,137,116,36,
   100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,
-  133,233,137,252,242,137,252,233,232,251,1,22,199,68,36,100,0,0,0,0,255,131,
+  133,233,137,252,242,137,252,233,232,251,1,23,199,68,36,100,0,0,0,0,255,131,
   230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,
-  78,252,253,193,232,3,131,192,1,252,255,229,248,143,255,65,85,65,84,65,83,
+  78,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65,85,65,84,65,83,
   65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,
   248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,
   233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,
@@ -375,8 +377,8 @@ static const unsigned char build_actionlist[14342] = {
   125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,
   252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,
   17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,
-  149,233,72,141,148,253,36,233,141,139,233,232,251,1,23,72,139,141,233,72,
-  129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,144,
+  149,233,72,141,148,253,36,233,141,139,233,232,251,1,24,72,139,141,233,72,
+  129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,145,
   255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,
   102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,
   15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,
@@ -385,25 +387,25 @@ static const unsigned char build_actionlist[14342] = {
   139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
   204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139,
   68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232,
-  251,1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
+  251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
   4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
-  36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,15,110,208,72,184,
+  36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,
   237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
   247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
   237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
-  200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
+  200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
   11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
-  217,108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,
+  217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208,
   72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
   134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
   72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
-  15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,
+  15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,
   0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
-  139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208,72,184,237,237,
+  139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208,72,184,237,237,
   102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
   15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
   72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
-  86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184,
+  86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15,94,193,72,184,
   237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
   15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
   242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
@@ -411,12 +413,12 @@ static const unsigned char build_actionlist[14342] = {
   15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
   217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
   252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
-  252,233,195,255,248,88,217,252,234,222,201,248,149,217,84,36,8,129,124,36,
+  252,233,195,255,248,89,217,252,234,222,201,248,150,217,84,36,8,129,124,36,
   8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,
-  248,150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
-  217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,255,
-  248,151,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
-  15,138,244,255,248,152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
+  248,151,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
+  217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,
+  248,152,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
+  15,138,244,255,248,153,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
   133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
   244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
   3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
@@ -433,27 +435,27 @@ static const unsigned char build_actionlist[14342] = {
   110,208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,
   208,48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,
   4,102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,
-  192,15,132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,82,15,
-  132,244,84,131,252,250,3,15,130,244,104,15,135,244,248,252,242,15,81,192,
+  192,15,132,244,3,15,87,192,195,248,154,255,131,252,250,1,15,130,244,83,15,
+  132,244,85,131,252,250,3,15,130,244,105,15,135,244,248,252,242,15,81,192,
   195,248,2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,
-  88,15,132,244,247,232,244,88,80,252,233,244,253,248,1,232,244,149,255,80,
+  88,15,132,244,247,232,244,89,80,252,233,244,253,248,1,232,244,150,255,80,
   252,233,244,253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,
   237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,
   252,233,244,253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,
   236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,
   253,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,
   244,253,248,1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,
-  195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,82,15,132,244,84,
-  131,252,250,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,
-  250,5,15,130,244,88,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244,
+  195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,83,15,132,244,85,
+  131,252,250,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,131,252,
+  250,5,15,130,244,89,15,132,244,150,131,252,250,7,15,132,244,247,15,135,244,
   248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,
   195,248,2,131,252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,
   201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,
   247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,
-  9,204,255,248,154,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,
+  9,204,255,248,155,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,
   242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,
   244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,
-  248,2,65,131,252,248,5,15,130,244,148,15,132,244,107,65,131,252,248,7,15,
+  248,2,65,131,252,248,5,15,130,244,149,15,132,244,108,65,131,252,248,7,15,
   132,244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,
   195,248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,65,131,252,
   248,9,15,135,244,248,252,242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,
@@ -463,253 +465,260 @@ static const unsigned char build_actionlist[14342] = {
   242,15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,
   252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,
   248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,
-  249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,107,131,252,248,7,15,
+  249,195,248,2,131,252,248,5,15,130,244,149,15,132,244,108,131,252,248,7,15,
   132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,217,225,
   195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248,
   1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,
   135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209,
   221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
   2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
-  248,2,221,216,195,255,248,155,137,200,86,72,137,214,83,15,162,137,6,137,94,
-  4,137,78,8,137,86,12,91,94,195,248,156,255,85,72,137,229,83,72,137,203,139,
+  248,2,221,216,195,255,248,156,137,200,86,72,137,214,83,15,162,137,6,137,94,
+  4,137,78,8,137,86,12,91,94,195,248,157,255,85,72,137,229,83,72,137,203,139,
   131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,
   139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,
   2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,
   233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40,
   155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139,
-  93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,
-  4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,
-  221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,
-  224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,
-  141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
-  252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,
-  251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,
-  4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,
-  244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,
-  2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,
+  93,252,248,201,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,
+  253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,
+  202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,
+  233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,
+  252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,
+  232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,
+  135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,
+  102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,
+  255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,
+  134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,129,
+  252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,57,108,
   202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,
   15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,
   244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,
-  252,233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,
-  244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,
-  248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,
-  252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,
-  239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,
-  44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,
-  182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137,
-  44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
-  255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,
-  4,239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,
-  200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,
-  124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,
-  233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,
-  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,
-  253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,
-  42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,
-  15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,
-  4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,
-  252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,
-  255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,
-  124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,
-  4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,
-  92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,
-  92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,
-  242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,
-  252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,
-  252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,
-  252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,
-  4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,
-  16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,
-  15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,
-  242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,
-  252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,
-  255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,
-  194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,
-  252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,
-  248,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244,
-  42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,
-  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,
-  247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192,
-  252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,
-  252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,
-  4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
-  141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,
-  57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,
-  69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,
-  233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,
-  233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
-  16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,
-  246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,
-  234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,
-  139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,
-  248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
-  235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,
-  213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,
-  252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,
-  242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,
-  233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
-  252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,
-  132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,
-  1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
-  72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,
-  252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,
+  252,233,244,45,255,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,
+  72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,
+  12,202,59,12,135,255,139,108,202,4,131,198,4,129,252,253,239,15,135,244,249,
+  255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,
+  247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
+  141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,
+  15,132,244,248,129,252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,
+  134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,
+  15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,
+  254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
+  16,252,255,36,252,235,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,
+  194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
+  193,232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,135,244,49,255,
+  252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,
+  17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,
+  244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,
+  4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239,15,133,244,
+  51,139,12,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252,234,255,
+  15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,
+  253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,252,234,252,242,15,88,
+  4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,
+  48,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,
+  234,255,129,124,253,252,234,4,239,15,135,244,50,129,124,253,194,4,239,15,
+  135,244,50,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,
+  234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
+  234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
+  199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
+  4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,
+  221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,
+  255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,
+  194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,
+  4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,
+  4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
+  15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
+  242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
+  242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
+  234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,158,232,244,
+  149,255,252,233,244,158,255,232,244,108,255,15,182,252,236,15,182,192,139,
+  76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,137,116,
+  36,100,232,251,1,26,139,149,233,133,192,15,133,244,42,15,182,110,252,255,
+  15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
+  68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+  255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,
+  70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,
+  4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,
+  232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,
+  4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,
+  252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202,139,6,15,
+  182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,
+  248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,
+  137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,
+  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,
+  129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,
+  135,213,141,139,233,255,232,251,1,27,137,252,234,252,233,244,1,255,72,252,
+  247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,
+  199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,
+  15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,
+  1,27,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,
+  255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
+  252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,
+  253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,
+  202,137,252,233,232,251,1,28,139,149,233,248,1,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,
+  137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,
+  1,29,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,36,96,
+  137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,248,1,65,
+  137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,
+  2,137,252,233,137,194,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,
   199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,
-  100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,
-  255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29,139,149,233,
-  15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,
-  5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247,
-  208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,
-  244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,
-  253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,
-  232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254,
-  72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,
-  139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173,233,
-  139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,
-  4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
-  252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
-  15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
-  239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,
-  232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,
-  249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,
-  255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
-  36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247,208,
-  139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,158,
-  139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
-  244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
-  70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,
-  4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
-  233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,
-  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,
-  44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,
-  15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,
-  139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,
-  199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,
-  252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,
-  251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,
-  253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,
-  139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,
-  233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,
-  4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,
-  233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,
-  236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
-  244,37,139,44,252,234,248,159,139,141,233,35,136,233,105,201,239,198,133,
-  233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
-  251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
-  244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,
-  15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,
-  132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139,
-  76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,
-  233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,
-  36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,
-  80,137,252,234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108,36,
-  32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137,
-  133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
-  239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
-  233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
-  253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,
-  232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,
-  252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,
-  165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,
-  244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,
-  133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,
-  252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,
-  139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,
-  36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
-  248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,
-  100,232,251,1,33,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,
-  165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,
-  84,255,129,124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,
-  252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,
-  252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,
-  15,133,244,28,248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,
-  137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,
-  193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,
-  68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,
-  233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,
-  133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,
-  191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,
-  133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,
-  239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,
-  41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,
-  252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,
-  14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36,
-  80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198,
-  4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244,
-  250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137,
-  108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180,
-  253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252,
-  248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
-  248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233,
-  72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244,
-  2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244,
-  251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253,
-  202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253,
-  134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,
-  198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253,
-  134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36,
-  80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251,
-  141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131,
-  199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,
-  2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,
-  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,
-  68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,
-  197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,
-  72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,
-  244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,
-  252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,
-  6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,
-  133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,
-  72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,
-  182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,
-  248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,
-  209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,
-  182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,
-  237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,
-  7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,
-  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140,
-  255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,
-  135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,
-  16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,
-  15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,
-  24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,
-  247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,
-  255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,
-  252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,
-  46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,
-  247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,
-  134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,
-  139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,
-  108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,
-  102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,
-  233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,
-  68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,
-  255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
-  252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253,
-  43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12,202,59,141,233,
-  15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,
-  254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,
-  244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,
-  252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,
-  137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,
-  57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,
-  192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,
-  3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,
-  106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,
-  136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,
-  233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,
-  255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,
-  252,252,252,233,244,12,255,254,0
+  36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,31,
+  15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,139,139,
+  233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,
+  137,252,233,232,251,1,32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,
+  4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+  248,3,137,252,233,232,251,1,31,15,183,70,252,254,72,252,247,208,252,233,244,
+  2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,
+  255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,160,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,
+  44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,
+  242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,
+  15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,
+  40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+  255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,
+  233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,252,233,
+  244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,159,
+  255,15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,
+  4,239,15,133,244,34,139,44,252,234,248,159,139,141,233,35,136,233,105,201,
+  239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,
+  250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,41,72,137,44,
+  194,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  252,235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,
+  137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,
+  129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,
+  124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,
+  35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,
+  44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,
+  15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,
+  44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,
+  233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
+  1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,
+  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
+  233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,
+  78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,
+  194,252,233,244,160,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
+  233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
+  247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,
+  248,160,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
+  129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
+  15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
+  70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
+  193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
+  80,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,80,252,233,244,
+  2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
+  252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199,68,36,84,237,
+  137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
+  137,116,36,100,232,251,1,33,139,149,233,139,108,36,32,137,193,252,233,244,
+  2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
+  255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
+  44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
+  15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
+  72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
+  235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
+  15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
+  233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
+  80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
+  244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
+  15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
+  137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
+  137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,34,139,
+  149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
+  233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
+  202,4,239,139,44,202,15,133,244,52,141,84,202,8,137,114,252,252,139,181,233,
+  139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
+  202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,
+  139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
+  68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
+  199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
+  1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
+  4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
+  253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
+  233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
+  137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
+  141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
+  224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
+  133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
+  205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
+  252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
+  15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192,
+  255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,
+  68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,
+  84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+  36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,
+  41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,
+  239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,
+  72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,
+  244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
+  124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
+  244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
+  248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+  36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,
+  244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,141,
+  12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,
+  57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,193,
+  8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,
+  8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,
+  41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,139,
+  108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,131,
+  199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,
+  233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,252,
+  233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,
+  255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,
+  248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252,
+  248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,
+  248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
+  56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
+  202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
+  8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,
+  252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,
+  252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12,202,
+  255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,
+  139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,
+  15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
+  249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
+  65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
+  221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,
+  244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,
+  131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,
+  233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,
+  105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,
+  1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,
+  139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,
+  137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,
+  102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,
+  127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,
+  233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,
+  134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+  255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,
+  143,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15,
+  182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,
+  255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,
+  2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
+  248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
+  182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
+  249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
+  252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
+  15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,
+  131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,
+  139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,
+  233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,233,255,15,135,
+  244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,
+  237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,
+  244,12,255,254,0
 };
 
 enum {
@@ -749,6 +758,7 @@ enum {
   GLOB_cont_condt,
   GLOB_cont_condf,
   GLOB_vmeta_equal,
+  GLOB_vmeta_equal_cd,
   GLOB_vmeta_arith_vn,
   GLOB_vmeta_arith_nv,
   GLOB_vmeta_unm,
@@ -902,6 +912,7 @@ static const char *const globnames[] = {
   "cont_condt",
   "cont_condf",
   "vmeta_equal",
+  "vmeta_equal_cd",
   "vmeta_arith_vn",
   "vmeta_arith_nv",
   "vmeta_unm",
@@ -1024,6 +1035,7 @@ static const char *const extnames[] = {
   "lj_meta_tset",
   "lj_meta_comp",
   "lj_meta_equal",
+  "lj_meta_equal_cd@8",
   "lj_meta_arith",
   "lj_meta_len@8",
   "lj_meta_call",
@@ -1097,372 +1109,375 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 1066, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
   dasm_put(Dst, 1239, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1339, Dt1(->base), Dt1(->base), FRAME_CONT);
-  dasm_put(Dst, 1464, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
-  dasm_put(Dst, 1642, 1+1, LJ_TISTRUECOND, 1+1);
-  dasm_put(Dst, 1748, ~LJ_TNUMX);
+  dasm_put(Dst, 1339);
+#if LJ_HASFFI
+  dasm_put(Dst, 1359, Dt1(->base));
+#endif
+  dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
+  dasm_put(Dst, 1506, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+  dasm_put(Dst, 1691, 1+1, ~LJ_TNUMX);
   if (cmov) {
-  dasm_put(Dst, 1756);
+  dasm_put(Dst, 1789);
   } else {
-  dasm_put(Dst, 1760);
+  dasm_put(Dst, 1793);
   }
-  dasm_put(Dst, 1769, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
-  dasm_put(Dst, 1848, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
-  dasm_put(Dst, 1905, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
-  dasm_put(Dst, 1973, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
-  dasm_put(Dst, 2042, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 2127);
+  dasm_put(Dst, 1802, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+  dasm_put(Dst, 1881, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
+  dasm_put(Dst, 1938, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
+  dasm_put(Dst, 2006, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK));
+  dasm_put(Dst, 2075, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 2160);
   if (sse) {
-    dasm_put(Dst, 2132);
+    dasm_put(Dst, 2165);
   } else {
-    dasm_put(Dst, 2142);
+    dasm_put(Dst, 2175);
   }
-  dasm_put(Dst, 2149, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 2215, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
-  dasm_put(Dst, 2282, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
-  dasm_put(Dst, 2371, LJ_TTAB);
+  dasm_put(Dst, 2182, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 2248, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+  dasm_put(Dst, 2315, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
+  dasm_put(Dst, 2404, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2383, Dt6(->metatable));
+  dasm_put(Dst, 2416, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2392, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2425, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 2455, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 2488, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 2488, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2565, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2521, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2598, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2383, Dt6(->metatable));
+  dasm_put(Dst, 2416, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2585, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2618, Dt8(->upvalue[0]), LJ_TFUNC);
   if (sse) {
-    dasm_put(Dst, 2606);
+    dasm_put(Dst, 2639);
   } else {
-    dasm_put(Dst, 2616);
+    dasm_put(Dst, 2649);
   }
-  dasm_put(Dst, 2623, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
-  dasm_put(Dst, 2687, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
-  dasm_put(Dst, 2777, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 2865, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
-  dasm_put(Dst, 2978, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
-  dasm_put(Dst, 3076, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3143, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3231, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3343, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+  dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2720, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 2898, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3011, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3109, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3176, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3264, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3376, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (sse) {
-    dasm_put(Dst, 3370, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 3403, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 3434, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3467, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3470, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3503, 1+1, FRAME_TYPE, LJ_TNIL);
   if (sse) {
-    dasm_put(Dst, 3564, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3626, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3597, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3659, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3656, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3715, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3689, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3748, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3742, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3811, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3868, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3931, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4021);
+  dasm_put(Dst, 3775, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3844, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3901, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3964, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4054);
   if (sse) {
-  dasm_put(Dst, 4033, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4066, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4058);
+  dasm_put(Dst, 4091);
   if (sse) {
-  dasm_put(Dst, 4072, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4105, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4097);
+  dasm_put(Dst, 4130);
   if (sse) {
-  dasm_put(Dst, 4111, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4144, 1+1, LJ_TISNUM);
   } else {
   }
-  dasm_put(Dst, 4136);
+  dasm_put(Dst, 4169);
   if (sse) {
-    dasm_put(Dst, 4152, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4185, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4191, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4224, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4224, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4289, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4257, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4322, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4388);
+    dasm_put(Dst, 4421);
   } else {
-    dasm_put(Dst, 4394);
+    dasm_put(Dst, 4427);
   }
-  dasm_put(Dst, 4403);
+  dasm_put(Dst, 4436);
   if (sse) {
-    dasm_put(Dst, 4428);
+    dasm_put(Dst, 4461);
   } else {
-    dasm_put(Dst, 4434);
+    dasm_put(Dst, 4467);
   }
-  dasm_put(Dst, 4437, 1+2);
+  dasm_put(Dst, 4470, 1+2);
   if (sse) {
-    dasm_put(Dst, 4446);
+    dasm_put(Dst, 4479);
   } else {
-    dasm_put(Dst, 4454);
+    dasm_put(Dst, 4487);
   }
-  dasm_put(Dst, 4462);
+  dasm_put(Dst, 4495);
   if (sse) {
-    dasm_put(Dst, 4465, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+    dasm_put(Dst, 4498, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
   } else {
-    dasm_put(Dst, 4492);
+    dasm_put(Dst, 4525);
   }
-  dasm_put(Dst, 4511);
+  dasm_put(Dst, 4544);
   if (sse) {
-    dasm_put(Dst, 4527, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4560, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4552, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4585, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4574);
+  dasm_put(Dst, 4607);
   if (sse) {
-    dasm_put(Dst, 4596);
+    dasm_put(Dst, 4629);
   } else {
-    dasm_put(Dst, 4622);
+    dasm_put(Dst, 4655);
   }
-  dasm_put(Dst, 4639, 1+2);
+  dasm_put(Dst, 4672, 1+2);
   if (sse) {
-    dasm_put(Dst, 4679);
+    dasm_put(Dst, 4712);
   } else {
-    dasm_put(Dst, 4687);
+    dasm_put(Dst, 4720);
   }
-  dasm_put(Dst, 4697, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4730, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4749, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4782, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4796, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4829, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 4837, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4870, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
   }
   if (sse) {
-  dasm_put(Dst, 4908, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4941, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
   }
   if (!sse) {
-    dasm_put(Dst, 4979);
+    dasm_put(Dst, 5012);
   }
-  dasm_put(Dst, 4988, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5021, 1+1, LJ_TSTR);
   if (sse) {
-    dasm_put(Dst, 5010, Dt5(->len));
+    dasm_put(Dst, 5043, Dt5(->len));
   } else {
-    dasm_put(Dst, 5021, Dt5(->len));
+    dasm_put(Dst, 5054, Dt5(->len));
   }
-  dasm_put(Dst, 5029, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5062, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (sse) {
-    dasm_put(Dst, 5067);
+    dasm_put(Dst, 5100);
   } else {
-    dasm_put(Dst, 5077);
+    dasm_put(Dst, 5110);
   }
-  dasm_put(Dst, 5090, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5123, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5125);
+    dasm_put(Dst, 5158);
   } else {
-    dasm_put(Dst, 5147);
+    dasm_put(Dst, 5180);
   }
-  dasm_put(Dst, 5167, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
-  dasm_put(Dst, 2127);
+  dasm_put(Dst, 5200, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 2160);
   if (sse) {
-    dasm_put(Dst, 5275);
+    dasm_put(Dst, 5308);
   } else {
-    dasm_put(Dst, 5286);
+    dasm_put(Dst, 5319);
   }
-  dasm_put(Dst, 5294, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+  dasm_put(Dst, 5327, LJ_TSTR, LJ_TISNUM, Dt5(->len));
   if (sse) {
-    dasm_put(Dst, 5324);
+    dasm_put(Dst, 5357);
   } else {
   }
-  dasm_put(Dst, 5331, sizeof(GCstr)-1);
-  dasm_put(Dst, 5406, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 5465, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5364, sizeof(GCstr)-1);
+  dasm_put(Dst, 5439, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 5498, LJ_TSTR, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5486);
+    dasm_put(Dst, 5519);
   } else {
-    dasm_put(Dst, 5493);
+    dasm_put(Dst, 5526);
   }
-  dasm_put(Dst, 5505, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5570, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 5633, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 5704, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5789, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 5859, 1+1, LJ_TTAB);
+  dasm_put(Dst, 5538, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5603, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 5666, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 5737, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5822, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 5892, 1+1, LJ_TTAB);
   if (sse) {
-    dasm_put(Dst, 5927);
+    dasm_put(Dst, 5960);
   } else {
   }
   if (sse) {
-    dasm_put(Dst, 5937, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+    dasm_put(Dst, 5970, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
   if (sse) {
-  dasm_put(Dst, 5989, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6022, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6032, LJ_TISNUM);
+  dasm_put(Dst, 6065, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6059);
+  dasm_put(Dst, 6092);
   } else {
   }
-  dasm_put(Dst, 6076);
+  dasm_put(Dst, 6109);
   if (sse) {
-  dasm_put(Dst, 6084, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6117, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6032, LJ_TISNUM);
+  dasm_put(Dst, 6065, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6127);
+  dasm_put(Dst, 6160);
   } else {
   }
-  dasm_put(Dst, 6076);
+  dasm_put(Dst, 6109);
   if (sse) {
-  dasm_put(Dst, 6144, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6177, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6032, LJ_TISNUM);
+  dasm_put(Dst, 6065, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6187);
+  dasm_put(Dst, 6220);
   } else {
   }
-  dasm_put(Dst, 6076);
+  dasm_put(Dst, 6109);
   if (sse) {
-  dasm_put(Dst, 6204, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6237, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6247);
+  dasm_put(Dst, 6280);
   if (sse) {
-  dasm_put(Dst, 6254, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6287, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6297);
+  dasm_put(Dst, 6330);
   if (sse) {
-    dasm_put(Dst, 6301);
+    dasm_put(Dst, 6334);
   } else {
   }
-  dasm_put(Dst, 6313);
+  dasm_put(Dst, 6346);
   if (sse) {
-  dasm_put(Dst, 6324, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6357, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6393);
+  dasm_put(Dst, 6426);
   if (sse) {
-  dasm_put(Dst, 6402, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6435, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6471);
+  dasm_put(Dst, 6504);
   if (sse) {
-  dasm_put(Dst, 6481, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6514, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6550);
+  dasm_put(Dst, 6583);
   if (sse) {
-  dasm_put(Dst, 6560, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6593, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6629);
+  dasm_put(Dst, 6662);
   if (sse) {
-  dasm_put(Dst, 6638, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+  dasm_put(Dst, 6671, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
   } else {
   }
-  dasm_put(Dst, 6707, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 6785, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 6912, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 6740, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 6818, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 6945, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 6951, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 6984, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 6982, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7033, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7015, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7066, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7100, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7133, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7147);
+  dasm_put(Dst, 7180);
 #if LJ_HASJIT
-  dasm_put(Dst, 6977);
+  dasm_put(Dst, 7010);
 #endif
-  dasm_put(Dst, 7154);
+  dasm_put(Dst, 7187);
 #if LJ_HASJIT
-  dasm_put(Dst, 7157);
+  dasm_put(Dst, 7190);
 #endif
-  dasm_put(Dst, 7167, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7200, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7201);
+  dasm_put(Dst, 7234);
 #endif
-  dasm_put(Dst, 7206, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7239, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7237, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 7270, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 7467);
+  dasm_put(Dst, 7500);
 #if LJ_HASJIT
-  dasm_put(Dst, 7470, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
-  dasm_put(Dst, 7612);
+  dasm_put(Dst, 7503, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 7645);
 #endif
-  dasm_put(Dst, 7638);
+  dasm_put(Dst, 7671);
   if (!sse) {
-  dasm_put(Dst, 7641);
+  dasm_put(Dst, 7674);
   }
-  dasm_put(Dst, 7686, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7719, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7772);
+  dasm_put(Dst, 7805);
   }
-  dasm_put(Dst, 7817, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 7850, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7903);
+  dasm_put(Dst, 7936);
   }
-  dasm_put(Dst, 7942, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7975, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (sse) {
-    dasm_put(Dst, 8031, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 8064, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
-    dasm_put(Dst, 8145);
+    dasm_put(Dst, 8178);
   }
-  dasm_put(Dst, 8192);
+  dasm_put(Dst, 8225);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8266);
+    dasm_put(Dst, 8299);
   }
-  dasm_put(Dst, 8269);
-  dasm_put(Dst, 8354, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
-  dasm_put(Dst, 8455, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
-  dasm_put(Dst, 8623);
+  dasm_put(Dst, 8302);
+  dasm_put(Dst, 8387, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 8488, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+  dasm_put(Dst, 8656);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8664);
-    dasm_put(Dst, 8734);
-    dasm_put(Dst, 8807);
+    dasm_put(Dst, 8697);
+    dasm_put(Dst, 8767);
+    dasm_put(Dst, 8840);
   } else {
-    dasm_put(Dst, 8857);
-    dasm_put(Dst, 8949);
+    dasm_put(Dst, 8890);
+    dasm_put(Dst, 8982);
   }
-  dasm_put(Dst, 8995);
+  dasm_put(Dst, 9028);
 #endif
-  dasm_put(Dst, 8999);
+  dasm_put(Dst, 9032);
   if (sse) {
-    dasm_put(Dst, 9002, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9091, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9035, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9124, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9215);
-    dasm_put(Dst, 9298);
+    dasm_put(Dst, 9248);
+    dasm_put(Dst, 9331);
     if (cmov) {
-    dasm_put(Dst, 9353);
+    dasm_put(Dst, 9386);
     } else {
-    dasm_put(Dst, 9372);
+    dasm_put(Dst, 9405);
     }
-    dasm_put(Dst, 8995);
+    dasm_put(Dst, 9028);
   }
-  dasm_put(Dst, 9413);
+  dasm_put(Dst, 9446);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 9441, DtE(->spadj));
+  dasm_put(Dst, 9474, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9456, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
-  dasm_put(Dst, 9537, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
+  dasm_put(Dst, 9489, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
+  dasm_put(Dst, 9570, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
 #if LJ_TARGET_WINDOWS
 #endif
-  dasm_put(Dst, 9550);
+  dasm_put(Dst, 9583);
 #endif
 }
 
@@ -1470,7 +1485,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
 static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 {
   int vk = 0;
-  dasm_put(Dst, 1746, defop);
+  dasm_put(Dst, 9591, defop);
 
   switch (op) {
 
@@ -1479,623 +1494,641 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 9558, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9579);
+      dasm_put(Dst, 9614);
     } else {
-      dasm_put(Dst, 9594);
+      dasm_put(Dst, 9629);
       if (cmov) {
-      dasm_put(Dst, 9604);
+      dasm_put(Dst, 9639);
       } else {
-      dasm_put(Dst, 9610);
+      dasm_put(Dst, 9645);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9617);
+      dasm_put(Dst, 9652);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 9293);
+      dasm_put(Dst, 9326);
       break;
     case BC_ISLE:
-      dasm_put(Dst, 5854);
+      dasm_put(Dst, 5887);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9622);
+      dasm_put(Dst, 9657);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9627, -BCBIAS_J*4);
+    dasm_put(Dst, 9662, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9661, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9696, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9687);
+      dasm_put(Dst, 9722);
     } else {
-      dasm_put(Dst, 9699);
+      dasm_put(Dst, 9734);
       if (cmov) {
-      dasm_put(Dst, 9604);
+      dasm_put(Dst, 9639);
       } else {
-      dasm_put(Dst, 9610);
+      dasm_put(Dst, 9645);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9706);
+      dasm_put(Dst, 9741);
     } else {
-      dasm_put(Dst, 9715);
+      dasm_put(Dst, 9750);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9724, -BCBIAS_J*4);
+      dasm_put(Dst, 9759, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4476);
+      }
     } else {
-      dasm_put(Dst, 9739, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4476);
+      }
+      dasm_put(Dst, 9774, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9754, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9567);
+      if (LJ_HASFFI) {
+	dasm_put(Dst, 9789, LJ_TCDATA, LJ_TCDATA);
+      }
+      dasm_put(Dst, 9808, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 9812);
+	dasm_put(Dst, 9864);
       } else {
-	dasm_put(Dst, 9816);
+	dasm_put(Dst, 9868);
       }
-      dasm_put(Dst, 9822);
+      dasm_put(Dst, 9874);
+    } else if (LJ_HASFFI) {
+      dasm_put(Dst, 9879, LJ_TCDATA);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9827, LJ_TSTR);
+    dasm_put(Dst, 9894, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9710);
+      dasm_put(Dst, 9745);
     } else {
-      dasm_put(Dst, 2772);
+      dasm_put(Dst, 2805);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9851, LJ_TISNUM);
+    dasm_put(Dst, 9920, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9865);
+      dasm_put(Dst, 9936);
     } else {
-      dasm_put(Dst, 9877);
+      dasm_put(Dst, 9948);
       if (cmov) {
-      dasm_put(Dst, 9604);
+      dasm_put(Dst, 9639);
       } else {
-      dasm_put(Dst, 9610);
+      dasm_put(Dst, 9645);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9884);
-    goto iseqne_test;
+    dasm_put(Dst, 9955);
+    if (!LJ_HASFFI) goto iseqne_test;
+    if (vk) {
+      dasm_put(Dst, 9969, -BCBIAS_J*4, LJ_TCDATA);
+    } else {
+      dasm_put(Dst, 10019, LJ_TCDATA, -BCBIAS_J*4);
+    }
+    break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9896, LJ_TISTRUECOND);
+    dasm_put(Dst, 10063, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9908);
+      dasm_put(Dst, 10075);
     } else {
-      dasm_put(Dst, 9913);
+      dasm_put(Dst, 10080);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9918);
+      dasm_put(Dst, 10085);
     }
-    dasm_put(Dst, 9929, -BCBIAS_J*4);
+    dasm_put(Dst, 10096, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9961);
+    dasm_put(Dst, 10128);
     break;
   case BC_NOT:
-    dasm_put(Dst, 9989, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 10156, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 10025, LJ_TISNUM);
+    dasm_put(Dst, 10192, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10036, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 10203, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 10061);
+      dasm_put(Dst, 10228);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10070, LJ_TSTR);
+    dasm_put(Dst, 10237, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10084, Dt5(->len));
+      dasm_put(Dst, 10251, Dt5(->len));
     } else {
-      dasm_put(Dst, 10102, Dt5(->len));
+      dasm_put(Dst, 10269, Dt5(->len));
     }
-    dasm_put(Dst, 10111, LJ_TTAB);
+    dasm_put(Dst, 10278, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10152);
+      dasm_put(Dst, 10319);
     } else {
     }
-    dasm_put(Dst, 10161);
+    dasm_put(Dst, 10328);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10191);
+    dasm_put(Dst, 10358);
     } else {
-    dasm_put(Dst, 10205);
+    dasm_put(Dst, 10372);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10225);
+    dasm_put(Dst, 10392);
     } else {
-    dasm_put(Dst, 10239);
+    dasm_put(Dst, 10406);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10269);
+    dasm_put(Dst, 10436);
     } else {
-    dasm_put(Dst, 10283);
+    dasm_put(Dst, 10450);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10291);
+    dasm_put(Dst, 10458);
     } else {
-    dasm_put(Dst, 10305);
+    dasm_put(Dst, 10472);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10313);
+    dasm_put(Dst, 10480);
     } else {
-    dasm_put(Dst, 10327);
+    dasm_put(Dst, 10494);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10335);
+    dasm_put(Dst, 10502);
     } else {
-    dasm_put(Dst, 10349);
+    dasm_put(Dst, 10516);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10357);
+    dasm_put(Dst, 10524);
     } else {
-    dasm_put(Dst, 10371);
+    dasm_put(Dst, 10538);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10379);
+    dasm_put(Dst, 10546);
     } else {
-    dasm_put(Dst, 10393);
+    dasm_put(Dst, 10560);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10401);
+    dasm_put(Dst, 10568);
     } else {
-    dasm_put(Dst, 10415);
+    dasm_put(Dst, 10582);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10423);
+    dasm_put(Dst, 10590);
     } else {
-    dasm_put(Dst, 10437);
+    dasm_put(Dst, 10604);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10445);
+    dasm_put(Dst, 10612);
     } else {
-    dasm_put(Dst, 10459);
+    dasm_put(Dst, 10626);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10467);
+    dasm_put(Dst, 10634);
     } else {
-    dasm_put(Dst, 10481);
+    dasm_put(Dst, 10648);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10489);
+    dasm_put(Dst, 10656);
     } else {
-    dasm_put(Dst, 10503);
+    dasm_put(Dst, 10670);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10511);
+    dasm_put(Dst, 10678);
     } else {
-    dasm_put(Dst, 10525);
+    dasm_put(Dst, 10692);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10533);
+    dasm_put(Dst, 10700);
     } else {
-    dasm_put(Dst, 10547);
+    dasm_put(Dst, 10714);
     }
       break;
     }
-    dasm_put(Dst, 10555);
+    dasm_put(Dst, 10722);
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10489);
+    dasm_put(Dst, 10656);
     } else {
-    dasm_put(Dst, 10503);
+    dasm_put(Dst, 10670);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10511);
+    dasm_put(Dst, 10678);
     } else {
-    dasm_put(Dst, 10525);
+    dasm_put(Dst, 10692);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10533);
+    dasm_put(Dst, 10700);
     } else {
-    dasm_put(Dst, 10547);
+    dasm_put(Dst, 10714);
     }
       break;
     }
-    dasm_put(Dst, 10561);
+    dasm_put(Dst, 10728);
     break;
   case BC_POW:
-    dasm_put(Dst, 10171);
+    dasm_put(Dst, 10338);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10179, LJ_TISNUM);
+    dasm_put(Dst, 10346, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10489);
+    dasm_put(Dst, 10656);
     } else {
-    dasm_put(Dst, 10503);
+    dasm_put(Dst, 10670);
     }
       break;
     case 1:
-    dasm_put(Dst, 10213, LJ_TISNUM);
+    dasm_put(Dst, 10380, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10511);
+    dasm_put(Dst, 10678);
     } else {
-    dasm_put(Dst, 10525);
+    dasm_put(Dst, 10692);
     }
       break;
     default:
-    dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10533);
+    dasm_put(Dst, 10700);
     } else {
-    dasm_put(Dst, 10547);
+    dasm_put(Dst, 10714);
     }
       break;
     }
-    dasm_put(Dst, 10566);
+    dasm_put(Dst, 10733);
     if (sse) {
-    dasm_put(Dst, 10054);
+    dasm_put(Dst, 10221);
     } else {
-    dasm_put(Dst, 10066);
+    dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10570, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10737, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10653, LJ_TSTR);
+    dasm_put(Dst, 10820, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 10653, LJ_TCDATA);
+    dasm_put(Dst, 10820, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10688);
+      dasm_put(Dst, 10855);
     } else {
-      dasm_put(Dst, 10703);
+      dasm_put(Dst, 10870);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10711);
+      dasm_put(Dst, 10878);
     } else {
-      dasm_put(Dst, 10724);
+      dasm_put(Dst, 10891);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10731);
+    dasm_put(Dst, 10898);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10759, LJ_TNIL);
+    dasm_put(Dst, 10926, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10806, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 10973, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10846, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 10937);
+    dasm_put(Dst, 11013, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 11104);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 10949, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 11116, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 11042);
+    dasm_put(Dst, 11209);
     if (sse) {
-      dasm_put(Dst, 11047);
+      dasm_put(Dst, 11214);
     } else {
-      dasm_put(Dst, 9880);
+      dasm_put(Dst, 9951);
     }
-    dasm_put(Dst, 11054, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11221, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11063);
+      dasm_put(Dst, 11230);
     } else {
-      dasm_put(Dst, 11069);
+      dasm_put(Dst, 11236);
     }
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11072, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11239, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11111, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11278, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11166, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11333, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11232, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11399, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11354, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11521, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11449, Dt7(->env));
+    dasm_put(Dst, 11616, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11468, Dt7(->env));
+    dasm_put(Dst, 11635, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11487, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11654, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11520);
+      dasm_put(Dst, 11687);
     } else {
     }
-    dasm_put(Dst, 11541, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11625, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 11708, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11792, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11654, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11738, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11821, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11905, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11809, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11904, LJ_TNIL);
+    dasm_put(Dst, 11976, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12071, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 11921, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 12088, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11520);
+      dasm_put(Dst, 11687);
     } else {
     }
-    dasm_put(Dst, 11954, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 12033, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12121, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 12200, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12095, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 12171, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12259, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12262, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 12338, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12426, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12350, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12444, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12517, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12611, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12490, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12633, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12657, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12800, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 10175);
+    dasm_put(Dst, 10342);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12651);
+      dasm_put(Dst, 12818);
     }
-    dasm_put(Dst, 12656, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12823, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12651);
+    dasm_put(Dst, 12818);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12698, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12813, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12865, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 12980, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12884, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 13051, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 12955, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 13122, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 13001);
+      dasm_put(Dst, 13168);
     } else {
-      dasm_put(Dst, 13007);
+      dasm_put(Dst, 13174);
     }
-    dasm_put(Dst, 13013);
+    dasm_put(Dst, 13180);
     if (sse) {
-      dasm_put(Dst, 10054);
+      dasm_put(Dst, 10221);
     } else {
-      dasm_put(Dst, 10066);
+      dasm_put(Dst, 10233);
     }
-    dasm_put(Dst, 13026, -BCBIAS_J*4);
+    dasm_put(Dst, 13193, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 13078);
+      dasm_put(Dst, 13245);
     }
-    dasm_put(Dst, 13084, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+    dasm_put(Dst, 13251, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 13156, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 13323, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 13256, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 13416, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 13423, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 13583, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12651);
+    dasm_put(Dst, 12818);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13482);
+      dasm_put(Dst, 13649);
     }
-    dasm_put(Dst, 13486, FRAME_TYPE);
+    dasm_put(Dst, 13653, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13505);
+      dasm_put(Dst, 13672);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13557);
+      dasm_put(Dst, 13724);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13567);
+      dasm_put(Dst, 13734);
     default:
       break;
     }
-    dasm_put(Dst, 13578, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13745, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13622, LJ_TNIL);
+      dasm_put(Dst, 13789, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13631, LJ_TNIL);
+      dasm_put(Dst, 13798, LJ_TNIL);
     }
-    dasm_put(Dst, 13638, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13805, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13662);
+      dasm_put(Dst, 13829);
     }
-    dasm_put(Dst, 4522);
+    dasm_put(Dst, 4555);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2103,7 +2136,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2115,57 +2148,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 13687);
+    dasm_put(Dst, 13854);
     if (!vk) {
-      dasm_put(Dst, 13691, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 13858, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13710);
+    dasm_put(Dst, 13877);
     if (!vk) {
-      dasm_put(Dst, 13714, LJ_TISNUM);
+      dasm_put(Dst, 13881, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13723);
+      dasm_put(Dst, 13890);
       if (vk) {
-	dasm_put(Dst, 13735);
+	dasm_put(Dst, 13902);
       } else {
-	dasm_put(Dst, 13754);
+	dasm_put(Dst, 13921);
       }
-      dasm_put(Dst, 13759);
+      dasm_put(Dst, 13926);
     } else {
-      dasm_put(Dst, 13772);
+      dasm_put(Dst, 13939);
       if (vk) {
-	dasm_put(Dst, 13778);
+	dasm_put(Dst, 13945);
       } else {
-	dasm_put(Dst, 13794);
+	dasm_put(Dst, 13961);
       }
-      dasm_put(Dst, 13802);
+      dasm_put(Dst, 13969);
       if (cmov) {
-      dasm_put(Dst, 9604);
+      dasm_put(Dst, 9639);
       } else {
-      dasm_put(Dst, 9610);
+      dasm_put(Dst, 9645);
       }
       if (!cmov) {
-	dasm_put(Dst, 13807);
+	dasm_put(Dst, 13974);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13813, -BCBIAS_J*4);
+      dasm_put(Dst, 13980, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13823, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 13990, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13837, -BCBIAS_J*4);
+      dasm_put(Dst, 14004, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13833, BC_JLOOP);
+      dasm_put(Dst, 14000, BC_JLOOP);
     }
-    dasm_put(Dst, 9639);
+    dasm_put(Dst, 9674);
     if (sse) {
-      dasm_put(Dst, 13847);
+      dasm_put(Dst, 14014);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2174,33 +2207,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 13858, LJ_TNIL);
+    dasm_put(Dst, 14025, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 13873, BC_JLOOP);
+      dasm_put(Dst, 14040, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13887, -BCBIAS_J*4);
+      dasm_put(Dst, 14054, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9939);
+    dasm_put(Dst, 10106);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9641);
+    dasm_put(Dst, 9676);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13903, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
+    dasm_put(Dst, 14070, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 14012, -BCBIAS_J*4);
+    dasm_put(Dst, 14179, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2214,7 +2247,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 14037, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14204, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2224,47 +2257,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 14058, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 14225, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 14088, BC_JLOOP);
+      dasm_put(Dst, 14255, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9676);
     }
-    dasm_put(Dst, 14097, LJ_TNIL);
+    dasm_put(Dst, 14264, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 8997);
+    dasm_put(Dst, 9030);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 14119, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 14286, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 14088, BC_JLOOP);
+      dasm_put(Dst, 14255, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14210, -4+PC2PROTO(k));
+      dasm_put(Dst, 14377, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 14233, LJ_TNIL);
+    dasm_put(Dst, 14400, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 14255, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 14422, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14285);
+      dasm_put(Dst, 14452);
     } else {
-      dasm_put(Dst, 14289);
+      dasm_put(Dst, 14456);
     }
-    dasm_put(Dst, 14297, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14464, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14306);
+      dasm_put(Dst, 14473);
     } else {
-      dasm_put(Dst, 14310, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14477, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14315, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14482, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2292,7 +2325,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14340);
+  dasm_put(Dst, 14507);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 9666dfca..3ffabe6f 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -1042,6 +1042,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |  call extern lj_meta_equal	// (lua_State *L, GCobj *o1, *o2, int ne)
   |  // 0/1 or TValue * (metamethod) returned in eax (RC).
   |  jmp <3
+  |
+  |->vmeta_equal_cd:
+#if LJ_HASFFI
+  |  sub PC, 4
+  |  mov L:RB, SAVE_L
+  |  mov L:RB->base, BASE
+  |  mov FCARG1, L:RB
+  |  mov FCARG2, dword [PC-4]
+  |  mov SAVE_PC, PC
+  |  call extern lj_meta_equal_cd@8	// (lua_State *L, BCIns op)
+  |  // 0/1 or TValue * (metamethod) returned in eax (RC).
+  |  jmp <3
+#endif
   |
   |//-- Arithmetic metamethods ---------------------------------------------
   |
@@ -3593,7 +3606,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
       |  movzx RD, PC_RD
       |  branchPC RD
       |2:				// NE: Fallthrough to next instruction.
+      if (!LJ_HASFFI) {
+	|3:
+      }
     } else {
+      if (!LJ_HASFFI) {
+	|3:
+      }
       |2:				// NE: Branch to the target.
       |  movzx RD, PC_RD
       |  branchPC RD
@@ -3603,6 +3622,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     |
     if (op == BC_ISEQV || op == BC_ISNEV) {
       |5:  // Either or both types are not numbers.
+      if (LJ_HASFFI) {
+	|  cmp RB, LJ_TCDATA; je ->vmeta_equal_cd
+	|  checktp RA, LJ_TCDATA; je ->vmeta_equal_cd
+      }
       |  checktp RA, RB			// Compare types.
       |  jne <2				// Not the same type?
       |  cmp RB, LJ_TISPRI
@@ -3629,13 +3652,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 	|  mov RB, 1			// ne = 1
       }
       |  jmp ->vmeta_equal		// Handle __eq metamethod.
+    } else if (LJ_HASFFI) {
+      |3:
+      |  cmp RB, LJ_TCDATA; jne <2
+      |  jmp ->vmeta_equal_cd
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
     |  ins_AND	// RA = src, RD = str const, JMP with RD = target
+    |  mov RB, [BASE+RA*8+4]
     |  add PC, 4
-    |  checkstr RA, >2
+    |  cmp RB, LJ_TSTR; jne >3
     |  mov RA, [BASE+RA*8]
     |  cmp RA, [KBASE+RD*4]
   iseqne_test:
@@ -3648,8 +3676,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
     |  ins_AD	// RA = src, RD = num const, JMP with RD = target
+    |  mov RB, [BASE+RA*8+4]
     |  add PC, 4
-    |  checknum RA, >2
+    |  cmp RB, LJ_TISNUM; ja >3
     if (sse) {
       |  movsd xmm0, qword [KBASE+RD*8]
       |  ucomisd xmm0, qword [BASE+RA*8]
@@ -3662,9 +3691,28 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
     |  ins_AND	// RA = src, RD = primitive type (~), JMP with RD = target
+    |  mov RB, [BASE+RA*8+4]
     |  add PC, 4
-    |  checktp RA, RD
-    goto iseqne_test;
+    |  cmp RB, RD
+    if (!LJ_HASFFI) goto iseqne_test;
+    if (vk) {
+      |  jne >3
+      |  movzx RD, PC_RD
+      |  branchPC RD
+      |2:
+      |  ins_next
+      |3:
+      |  cmp RB, LJ_TCDATA; jne <2
+      |  jmp ->vmeta_equal_cd
+    } else {
+      |  je >2
+      |  cmp RB, LJ_TCDATA; je ->vmeta_equal_cd
+      |  movzx RD, PC_RD
+      |  branchPC RD
+      |2:
+      |  ins_next
+    }
+    break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index ef8ba886..abdadbe2 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP	0
 #define DASM_SECTION_CODE_SUB	1
 #define DASM_MAXSECTION		2
-static const unsigned char build_actionlist[15694] = {
+static const unsigned char build_actionlist[15861] = {
   254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
   76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
   20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -79,372 +79,373 @@ static const unsigned char build_actionlist[15694] = {
   171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,
   129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108,
   36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,
-  251,1,4,252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,
-  44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,
-  49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,
-  48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,
-  149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,
-  137,193,41,208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248,
-  50,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,
-  1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,20,137,
-  68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,
-  44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,
-  68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,52,137,202,137,114,252,
-  252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
-  248,53,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,
-  1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,
-  253,171,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,
-  239,15,131,244,55,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,
-  106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,
-  105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
-  20,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237,
-  252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,
-  2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,
-  137,66,252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106,
-  4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,
-  248,2,133,252,237,199,66,252,252,237,15,132,244,58,139,131,233,199,66,252,
-  252,237,255,137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,
-  248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,
-  137,233,133,201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239,
-  255,15,132,244,58,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,
-  6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,
-  7,252,247,213,139,172,253,171,233,252,233,244,2,248,60,129,252,248,239,15,
-  130,244,55,255,129,122,253,4,239,15,133,244,55,139,42,131,189,233,0,15,133,
-  244,55,129,122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,
-  252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,
-  128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,255,252,233,244,
-  58,248,61,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,
-  2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,
-  1,9,137,252,234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,
-  252,252,233,244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,
-  15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,
-  255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,129,122,253,4,239,
-  15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,
-  58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,55,139,
-  171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,108,36,48,137,
-  149,233,137,116,36,24,137,252,233,232,251,1,10,139,149,233,252,233,244,2,
-  248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,
-  15,133,244,55,139,108,36,48,137,149,233,255,137,149,233,139,114,252,252,139,
-  2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1,11,
-  139,149,233,133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137,
-  66,252,252,139,106,16,139,66,20,137,42,137,66,4,248,68,184,237,252,233,244,
-  69,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244,
-  58,248,70,129,252,248,239,15,130,244,55,255,139,42,129,122,253,4,239,15,133,
-  244,55,255,131,189,233,0,15,133,244,55,255,139,106,252,248,139,133,233,139,
-  114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,
-  244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,
-  55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,252,242,15,16,66,
-  8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,
-  242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,
-  36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,
-  3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,137,42,137,
-  66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,233,137,213,
-  137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,237,252,
-  233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129,122,253,4,
-  239,15,133,244,55,255,139,106,252,248,139,133,233,139,114,252,252,199,66,
-  252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,
-  221,90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,
-  141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,
-  1,252,238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,
-  12,239,15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,
-  8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252,
-  248,239,15,130,244,55,139,42,139,114,252,252,137,116,36,24,137,44,36,129,
-  122,253,4,239,15,133,244,55,131,189,233,0,15,133,244,55,128,189,233,235,15,
-  135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,
-  141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,
-  149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244,
-  249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,
-  8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,
-  244,24,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,252,248,
-  239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,
-  41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137,
-  213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,
-  15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68,
-  36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244,
-  13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137,
-  142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12,
-  36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
-  252,233,244,4,248,77,139,106,252,248,139,173,233,139,114,252,252,137,116,
-  36,24,137,44,36,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,
-  55,139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,116,193,
-  252,248,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,149,233,137,
-  149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,
-  68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,
-  244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,
-  233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,
-  248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
-  141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5,
-  139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,
-  6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,
-  244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,
-  12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
-  252,233,244,4,248,78,139,108,36,48,252,247,133,233,237,15,132,244,55,255,
-  137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136,
-  133,233,252,233,244,16,255,248,64,139,114,252,252,221,90,252,248,252,233,
-  244,58,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,
-  84,193,248,63,139,114,252,252,252,242,15,17,66,252,248,255,248,79,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63,
-  248,64,139,114,252,252,221,90,252,248,255,248,58,184,237,248,69,137,68,36,
-  20,248,56,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,
-  15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,
-  198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237,131,192,1,252,
-  233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233,244,14,255,248,
-  80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
-  15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129,122,253,4,
-  239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,255,129,
-  252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,
-  232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244,55,129,122,
-  253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,252,233,
-  244,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,15,130,
-  244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,252,
-  233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,239,
-  255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,233,
-  244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,91,
-  129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,
-  242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,122,
-  253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,
-  217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217,
-  201,217,252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129,122,
-  253,4,239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255,
-  248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
-  242,15,16,2,252,242,15,17,4,36,255,248,95,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,135,244,55,221,2,221,28,36,255,137,213,232,251,1,14,137,
-  252,234,252,233,244,64,255,248,96,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,252,242,15,16,2,252,242,15,17,4,36,255,248,96,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,221,28,36,255,
-  137,213,232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15,
-  17,4,36,255,248,97,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234,252,233,244,64,
-  248,98,255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,
-  63,255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,221,2,139,106,252,248,220,141,233,252,233,244,64,255,248,100,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
-  244,55,221,2,221,66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,
-  244,55,221,66,8,221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,
-  248,239,15,130,244,55,139,106,4,129,252,253,239,15,135,244,55,139,114,252,
-  252,139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,
-  255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,
-  32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,
-  137,108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15,
-  128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,
-  26,255,184,237,252,233,244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,
-  238,252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,
-  205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221,
-  2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252,
-  184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,248,103,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,255,139,106,4,139,
-  114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,
-  224,232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,
-  15,17,34,255,217,192,232,244,104,220,252,233,248,1,221,90,252,248,221,26,
-  255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,
-  244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,
-  228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,105,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
-  15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,
-  217,252,233,244,64,255,248,106,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
-  242,15,16,74,8,232,244,107,252,233,244,63,255,248,106,129,252,248,239,15,
-  130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,108,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,
-  248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,
-  252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,
-  1,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,221,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,
-  239,15,135,244,251,221,68,252,234,252,248,255,219,252,233,219,209,221,217,
-  255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,
-  88,255,248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,
-  55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,
-  234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,
-  95,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,221,2,189,2,0,0,0,248,1,57,197,15,131,244,
-  64,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,252,248,
-  255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,
-  244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244,55,255,248,
-  110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42,
-  255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,244,64,255,
-  248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139,
-  42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242,
-  15,42,197,252,233,244,63,255,137,108,36,16,219,68,36,16,252,233,244,64,255,
-  248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248,
-  239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,44,42,129,
-  252,253,252,255,0,0,0,15,135,244,55,137,108,36,20,255,221,2,219,92,36,20,
-  129,124,36,20,252,255,0,0,0,15,135,244,55,255,199,68,36,8,1,0,0,0,141,68,
-  36,20,248,113,139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36,
-  24,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137,66,252,
-  248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232,244,
-  66,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239,15,
-  130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,44,106,16,137,
-  108,36,20,255,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15,133,244,
-  55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,12,139,173,233,255,
-  252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139,68,36,20,
-  57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12,41,
-  200,15,140,244,115,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,
-  252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,
-  232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,
-  3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,233,244,4,248,116,129,
-  252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,66,
-  248,1,255,129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,
-  139,42,255,252,242,15,44,66,8,255,221,66,8,219,92,36,20,139,68,36,20,255,
-  133,192,15,142,244,115,131,189,233,1,15,130,244,115,15,133,244,117,57,131,
-  233,15,130,244,117,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,
-  131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,113,248,118,129,
-  252,248,239,255,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,
-  66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,
-  244,115,57,131,233,15,130,244,119,129,197,239,137,116,36,20,137,68,36,8,139,
-  179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,
-  252,240,139,116,36,20,252,233,244,113,248,120,129,252,248,239,15,130,244,
-  55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,
-  15,133,244,55,139,42,139,133,233,57,131,233,255,15,130,244,119,129,197,239,
-  137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,
-  131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,
-  248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,
-  233,244,113,248,121,129,252,248,239,15,130,244,55,255,139,171,233,59,171,
-  233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,
-  139,133,233,57,131,233,15,130,244,119,129,197,239,137,116,36,20,137,68,36,
-  8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,
-  248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
-  3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,113,248,122,
-  129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,213,139,
-  10,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63,255,137,
-  4,36,219,4,36,252,233,244,64,255,248,123,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,
-  102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,
-  233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,219,4,36,
-  252,233,244,64,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,
-  81,252,242,15,88,193,102,15,126,197,255,248,124,129,252,248,239,15,130,244,
-  55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,
-  16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252,240,248,1,57,208,15,
-  134,244,125,129,120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,
-  15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44,36,
-  255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244,55,129,
-  122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,
-  102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,127,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,
-  192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,
-  193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,
-  128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,
-  15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,
-  102,15,126,197,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,
-  36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221,0,
-  216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248,239,15,130,244,55,
-  129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,
-  205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,129,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,
-  0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,233,244,125,255,
-  248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,
-  242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,
-  193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,
-  139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,
-  248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36,20,252,233,
-  244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,
-  8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,
-  15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
-  36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,193,252,233,
-  244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,
-  244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,
-  8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,
-  15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,248,239,
-  15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
-  55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
-  36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,237,137,193,252,
-  233,244,125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
-  135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
-  74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
-  242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,129,252,248,
-  239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
-  244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,
-  68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,253,137,193,
-  252,233,244,125,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,
-  15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,
-  16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
-  252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,134,129,252,
-  248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
-  15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
-  36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,197,137,
-  193,252,233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253,
-  4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
+  251,1,4,252,233,244,3,248,46,255,131,252,238,4,139,108,36,48,137,149,233,
+  137,252,233,139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,
+  47,141,4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233,
+  244,248,248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141,
+  44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,
+  70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
+  251,1,6,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,
+  244,141,176,233,184,237,252,233,244,27,248,51,255,139,108,36,48,137,149,233,
+  141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,233,252,233,244,
+  42,248,52,141,76,202,8,248,28,137,76,36,20,137,68,36,16,131,252,233,8,141,
+  4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,
+  36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131,
+  192,1,57,215,15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15,
+  182,252,233,15,182,205,131,198,4,252,255,36,171,248,54,139,108,36,48,137,
+  149,233,137,202,137,252,233,137,116,36,24,232,251,1,9,139,149,233,139,70,
+  252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248,55,129,
+  252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139,
+  114,252,252,137,68,36,20,137,106,252,252,139,42,137,106,252,248,131,232,2,
+  15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,
+  105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,20,252,233,244,57,248,
+  58,129,252,248,239,15,130,244,56,139,106,4,184,237,252,247,213,57,232,255,
+  15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,
+  132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,
+  244,59,248,60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129,
+  252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
+  66,252,252,237,15,132,244,59,139,131,233,199,66,252,252,237,255,137,106,252,
+  248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
+  133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
+  3,252,233,244,59,248,5,139,105,4,129,252,253,239,255,15,132,244,59,139,1,
+  137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,
+  244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,
+  171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,255,129,122,253,
+  4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239,
+  15,133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,
+  106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,
+  137,171,233,137,133,233,248,1,255,252,233,244,59,248,62,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,133,244,56,139,2,139,108,36,48,137,68,36,
+  4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,10,137,252,234,139,40,
+  139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,244,59,248,
+  63,129,252,248,239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252,
+  242,15,16,2,252,233,244,64,255,221,2,252,233,244,65,255,248,66,129,252,248,
+  239,15,130,244,56,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,
+  248,2,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,129,122,253,
+  4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,
+  15,130,244,247,232,244,67,248,1,139,108,36,48,137,149,233,137,116,36,24,137,
+  252,233,232,251,1,11,139,149,233,252,233,244,2,248,68,129,252,248,239,15,
+  130,244,56,15,132,244,248,248,1,129,122,253,4,239,15,133,244,56,139,108,36,
+  48,137,149,233,255,137,149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,
+  131,194,8,137,84,36,8,137,116,36,24,232,251,1,12,139,149,233,133,192,15,132,
+  244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139,
+  66,20,137,42,137,66,4,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252,
+  233,244,1,248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239,
+  15,130,244,56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233,
+  0,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199,66,252,
+  252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239,
+  15,135,244,56,139,114,252,252,255,252,242,15,16,66,8,189,0,0,252,240,63,102,
+  15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,
+  15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248,139,
+  4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
+  253,4,239,15,132,244,73,139,40,139,64,4,137,42,137,66,4,252,233,244,69,248,
+  2,131,189,233,0,15,132,244,73,137,252,233,137,213,137,194,232,251,1,13,137,
+  252,234,133,192,15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,
+  252,248,239,15,130,244,56,139,42,129,122,253,4,239,15,133,244,56,255,139,
+  106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
+  255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,
+  233,244,70,248,75,129,252,248,239,15,130,244,56,141,74,8,131,232,1,190,237,
+  248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,27,248,
+  76,129,252,248,239,15,130,244,56,129,122,253,12,239,15,133,244,56,255,139,
+  106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,
+  131,232,2,190,237,252,233,244,1,248,77,129,252,248,239,15,130,244,56,139,
+  42,139,114,252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,56,
+  131,189,233,0,15,133,244,56,128,189,233,235,15,135,244,56,139,141,233,15,
+  132,244,247,255,59,141,233,15,132,244,56,248,1,141,116,193,252,240,59,181,
+  233,15,135,244,56,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,
+  233,141,108,194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,
+  70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,
+  3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,
+  255,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,
+  4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
+  4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
+  4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,
+  2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,
+  252,255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,
+  66,252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,
+  137,66,4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,
+  252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,78,139,106,252,
+  248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,
+  133,244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,
+  141,233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56,
+  137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,
+  252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,
+  46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,
+  201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,139,108,36,48,139,
+  52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,
+  233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,
+  59,133,233,15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,
+  4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,
+  116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,
+  248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,12,36,137,185,233,137,
+  252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,79,
+  139,108,36,48,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68,194,
+  252,248,137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,
+  255,248,65,139,114,252,252,221,90,252,248,252,233,244,59,248,80,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,102,15,
+  252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,64,139,114,252,
+  252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252,252,221,
+  90,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252,247,198,237,
+  15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247,
+  209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+  171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248,
+  252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248,
+  82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,
+  15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64,
+  255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
+  221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85,
+  252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239,
+  15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217,
+  252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253,
+  4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244,
+  65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65,
+  248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56,
+  221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
+  65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
+  244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,252,242,15,
+  17,4,36,255,248,96,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
+  244,56,221,2,221,28,36,255,137,213,232,251,1,15,137,252,234,252,233,244,65,
+  255,248,97,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
+  252,242,15,16,2,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,221,2,221,28,36,255,137,213,232,251,1,
+  16,137,252,234,252,233,244,65,255,248,98,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,252,242,15,16,2,252,242,15,17,4,36,255,248,98,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,221,28,
+  36,255,137,213,232,251,1,17,137,252,234,252,233,244,65,248,99,255,248,100,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
+  16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,64,255,248,100,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252,
+  248,220,141,233,252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,
+  66,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8,
+  221,2,217,252,253,221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,
+  56,139,106,4,129,252,253,239,15,135,244,56,139,114,252,252,139,2,137,106,
+  252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,
+  9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,
+  248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,
+  36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,
+  63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
+  244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
+  248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81,
+  252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,
+  90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,
+  233,244,1,255,248,104,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,114,252,252,209,229,129,
+  252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,105,252,242,
+  15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
+  244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
+  4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,3,129,252,245,0,
+  0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
+  252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,130,244,56,129,
+  122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,66,8,221,
+  2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,65,255,248,
+  107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
+  253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,232,244,108,252,
+  233,244,64,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,232,244,108,252,
+  233,244,65,255,248,109,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,
+  253,252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252,
+  242,15,93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,221,2,189,2,0,0,0,248,1,57,197,15,
+  131,244,65,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,
+  252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,246,196,
+  1,15,132,244,248,217,201,248,2,221,216,88,255,248,110,129,252,248,239,15,
+  130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,2,0,0,0,248,
+  1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252,
+  242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,
+  248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124,253,252,234,252,252,239,
+  15,135,244,251,221,68,252,234,252,248,255,219,252,233,218,209,221,217,255,
+  80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,
+  255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42,133,233,252,233,
+  244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,248,239,15,133,
+  244,56,129,122,253,4,239,15,133,244,56,139,42,139,114,252,252,131,189,233,
+  1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233,244,64,255,137,
+  108,36,16,219,68,36,16,252,233,244,65,255,248,113,139,171,233,59,171,233,
+  15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56,129,122,253,
+  4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135,
+  244,56,137,108,36,20,255,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,
+  135,244,56,255,199,68,36,8,1,0,0,0,141,68,36,20,248,114,139,108,36,48,137,
+  149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,18,139,149,233,139,
+  114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,115,139,
+  171,233,59,171,233,15,130,244,247,232,244,67,248,1,199,68,36,20,252,255,252,
+  255,252,255,252,255,129,252,248,239,15,130,244,56,15,134,244,247,129,122,
+  253,20,239,255,252,242,15,44,106,16,137,108,36,20,255,221,66,16,219,92,36,
+  20,255,248,1,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,
+  56,139,42,137,108,36,12,139,173,233,255,252,242,15,44,74,8,255,221,66,8,219,
+  92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,
+  15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,116,141,172,253,13,233,
+  131,192,1,248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,
+  141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
+  254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
+  116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,139,171,233,
+  59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244,
+  56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221,
+  66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15,
+  130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,182,141,233,139,171,
+  233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,
+  252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,
+  171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
+  42,139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239,
+  137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,
+  232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248,
+  121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,
+  244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,
+  255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,
+  233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,
+  90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
+  1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252,248,239,15,130,
+  244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122,
+  253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,15,130,244,120,129,
+  197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,
+  76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
+  252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,
+  36,20,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,122,253,4,
+  239,15,133,244,56,137,213,139,10,232,251,1,19,137,252,234,255,252,242,15,
+  42,192,252,233,244,64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,
+  252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,
+  189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
+  197,252,242,15,42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36,
+  16,221,28,36,219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,
+  56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,
+  205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,
+  0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252,
+  240,248,1,57,208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,
+  242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
+  221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129,252,248,239,
+  15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,56,
+  67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
+  248,128,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
+  16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,
+  36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
+  252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
+  221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
+  49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129,252,248,
+  239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,
+  56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
+  248,130,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
+  2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,
+  233,244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
+  135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
+  252,242,15,88,193,102,15,126,197,255,248,131,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,0,0,192,89,216,68,36,16,
+  221,28,36,139,44,36,255,252,247,213,255,248,126,252,242,15,42,197,252,233,
+  244,64,255,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,139,68,36,
+  20,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56,129,122,253,4,
+  239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,
+  15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
+  252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,
+  248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,
+  15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
+  36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,
+  193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253,
+  4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,
   242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,
-  88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,135,
-  129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,
-  12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,
+  88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,
+  129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,
+  12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,
   221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
-  205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,184,237,
-  248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194,
-  252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,
-  137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,69,248,1,255,139,
-  141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,
-  248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
-  248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213,
-  141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,252,234,
-  252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,
-  233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233,
-  255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,139,
-  133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,255,15,182,
-  131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,
-  247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235,15,
-  133,244,251,252,233,244,247,248,138,15,182,131,233,168,235,15,133,244,251,
-  168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,
-  251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251,1,
-  20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15,
-  183,70,252,254,252,255,164,253,171,233,248,139,131,198,4,139,77,232,137,76,
-  36,20,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133,233,
-  141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137,
-  171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,141,137,116,36,24,
-  255,248,142,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139,
-  108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,22,199,
-  68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233,
-  41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,143,
-  255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,
-  125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,
-  233,137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,17,117,208,
-  252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,
-  15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147,
-  233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233,
-  232,251,1,23,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139,
-  177,233,255,248,144,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248,
-  139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68,
-  36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251,
-  1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,
-  37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
-  139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,15,115,
-  210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,
-  202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
+  252,237,137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56,
+  129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
+  15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
+  252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
+  255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
+  129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,
+  68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,
+  255,211,252,253,137,193,252,233,244,126,255,248,135,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,
+  242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
+  81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
+  201,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,
+  216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
+  36,255,211,197,137,193,252,233,244,126,255,248,136,129,252,248,239,15,130,
+  244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,
+  242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
+  81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
+  201,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
+  56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,
+  216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
+  36,255,211,205,137,193,252,233,244,126,248,118,184,237,252,233,244,56,248,
+  120,184,237,248,56,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,
+  141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,
+  244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,70,248,1,
+  255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,
+  133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,
+  36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,
+  247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,
+  252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
+  49,192,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,137,116,36,24,
+  137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,20,139,
+  149,233,139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,137,
+  255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,
+  15,132,244,247,252,255,139,233,252,233,244,247,255,248,138,15,182,131,233,
+  168,235,15,133,244,251,252,233,244,247,248,139,15,182,131,233,168,235,15,
+  133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235,
+  15,132,244,251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,
+  232,251,1,21,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,
+  252,15,183,70,252,254,252,255,164,253,171,233,248,140,131,198,4,139,77,232,
+  137,76,36,20,252,233,244,4,248,141,255,139,106,252,248,139,173,233,15,182,
+  133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,
+  233,137,171,233,137,116,36,24,232,251,1,22,252,233,244,3,255,248,142,137,
+  116,36,24,255,248,143,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,
+  248,139,108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,
+  1,23,199,68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,
+  133,233,41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,
+  248,144,255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,
+  248,137,125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,
+  137,131,233,137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,
+  17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,
+  252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,
+  139,147,233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,
+  139,233,232,251,1,24,139,141,233,129,225,239,137,204,137,169,233,139,149,
+  233,139,177,233,255,248,145,255,133,192,15,136,244,249,137,68,36,20,139,122,
+  252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,
+  15,182,204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,
+  139,68,36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,
+  251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
+  4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
+  36,4,139,68,36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,
+  115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,
+  84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
   15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,
   81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
-  248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,
+  248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,
   255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
-  36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
+  36,8,195,255,248,147,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
   0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,
   46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
   15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,
-  194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,
+  194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255,
   217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,
-  108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,102,15,252,
+  108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,148,102,15,252,
   239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,
   15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
   85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,
   15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,
-  92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15,
+  92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15,
   94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,
   15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,
   244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,
@@ -453,10 +454,10 @@ static const unsigned char build_actionlist[15694] = {
   195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,
   252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,
   137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,
-  255,248,88,217,252,234,222,201,248,149,217,84,36,4,129,124,36,4,0,0,128,127,
-  15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,150,217,192,
+  255,248,89,217,252,234,222,201,248,150,217,84,36,4,129,124,36,4,0,0,128,127,
+  15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,151,217,192,
   217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,
-  217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,219,84,36,4,219,68,
+  217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68,
   36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,
   244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,
   0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
@@ -465,14 +466,14 @@ static const unsigned char build_actionlist[15694] = {
   222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,
   216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,
   61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,
-  0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,255,217,232,255,
+  0,252,255,15,132,244,250,217,252,241,252,233,244,151,248,9,255,217,232,255,
   223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,
   221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,
   252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,
   248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,
   133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,
-  68,36,4,195,255,248,107,255,248,151,252,242,15,45,193,252,242,15,42,208,102,
-  15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,244,
+  68,36,4,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208,102,
+  15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142,244,
   252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,
   1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,
   15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,
@@ -491,30 +492,30 @@ static const unsigned char build_actionlist[15694] = {
   102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,
   196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192,
   102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87,
-  192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,153,255,
+  192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,154,255,
   139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,
-  248,232,244,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131,
-  252,248,3,15,132,244,247,15,135,244,248,232,244,104,255,252,233,244,253,248,
+  248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131,
+  252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,244,253,248,
   1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,
-  68,36,4,131,252,248,5,15,130,244,88,15,132,244,149,248,2,131,252,248,7,15,
+  68,36,4,131,252,248,5,15,130,244,89,15,132,244,150,248,2,131,252,248,7,15,
   132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,
   232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,
   248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,
   252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,
-  221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,82,15,132,
-  244,84,131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,
-  131,252,248,5,15,130,244,88,15,132,244,149,131,252,248,7,15,132,244,247,15,
+  221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,83,15,132,
+  244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,
+  131,252,248,5,15,130,244,89,15,132,244,150,131,252,248,7,15,132,244,247,15,
   135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,
   252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252,
   236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,
   132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,
-  255,248,9,204,255,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,242,
+  255,248,9,204,255,248,155,255,139,68,36,20,252,242,15,16,68,36,4,252,242,
   15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,
   193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,
   233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
   193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,
-  5,15,132,244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,232,
-  244,107,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,
+  5,15,132,244,247,255,15,135,244,248,232,244,149,252,233,244,7,248,1,90,232,
+  244,108,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,
   184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,
   1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,
   7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,
@@ -523,16 +524,16 @@ static const unsigned char build_actionlist[15694] = {
   1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,
   221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,
   1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,
-  195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,107,
+  195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,149,15,132,244,108,
   131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,
   221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,
   252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,
   132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
   252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
   248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
-  244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,
+  244,248,217,201,248,2,221,216,195,255,248,156,156,90,137,209,129,252,242,
   0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
-  162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,156,
+  162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,157,
   255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131,
   252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,
   1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233,
@@ -547,230 +548,236 @@ static const unsigned char build_actionlist[15694] = {
   253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
   221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
   15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,
-  248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,
-  15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
-  132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
-  2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
-  233,244,45,255,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,
-  139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,
-  252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,
-  131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,
-  131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,
-  15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,
-  198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,
-  137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
-  255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,
-  239,15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,
-  15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
-  202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,
-  242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
-  202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
-  2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,
-  252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,
-  78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,
-  234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,
-  221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,
-  242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,
-  124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,
-  252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,
-  252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,
-  255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,
-  234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,
-  36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,
-  220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,
-  220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,
-  252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,
-  4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,
-  221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,
-  255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,
-  199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,
-  252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,
-  16,12,194,255,221,4,252,234,221,4,194,255,248,157,232,244,148,255,252,233,
-  244,157,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,
-  76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,
-  24,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,
-  78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,
-  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,
-  139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,
-  4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,
-  4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
-  4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,
-  68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,
-  1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,
-  106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,
-  4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,
-  12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,
-  15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,
-  235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233,
-  244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,
-  133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,
-  15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,
-  233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,
-  232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,
-  16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
-  25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,
-  4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,
-  180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,
-  20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182,
-  232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,
-  4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,
-  36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,
-  36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,
-  1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,
-  132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78,
+  248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,255,129,252,253,
+  239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,57,108,202,4,15,
+  133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,
+  244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,
+  246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,
+  45,255,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,252,247,208,
+  139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,
+  255,139,108,202,4,131,198,4,129,252,253,239,15,135,244,249,255,252,242,15,
+  16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,139,108,
+  202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,141,180,253,134,
+  233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
+  248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,15,132,244,248,129,
+  252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,134,233,248,2,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,
+  4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,
+  108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,
+  248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
+  139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,
+  129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,171,255,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,
+  4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,242,15,
+  17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,
+  244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,
+  4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,51,
+  139,12,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252,234,255,137,
+  4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1,255,15,182,
+  252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,
+  15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,
+  253,252,234,4,239,15,135,244,48,255,252,242,15,16,4,199,252,242,15,88,4,252,
+  234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,
+  50,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,252,234,252,242,
+  15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,
+  15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,
+  15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,
+  252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,
+  234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,
+  199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,
+  4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,
+  16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,
+  15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,
+  242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
+  252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,
+  255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,
+  234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,
+  4,194,255,248,158,232,244,149,255,252,233,244,158,255,232,244,108,255,15,
+  182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,
+  108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149,233,133,
+  192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,
+  44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,
+  193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,
+  4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
+  15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,
+  202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,
+  255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,
+  16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,
+  248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,
+  198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,133,233,139,
+  173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,
+  232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,141,
+  233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,
+  132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239,129,252,248,
+  239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,
+  232,251,1,27,137,252,234,252,233,244,1,255,252,247,208,139,106,252,248,139,
+  172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,
+  235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+  252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,
+  244,1,137,213,137,194,141,139,233,232,251,1,27,137,252,234,252,233,244,1,
+  255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,
+  233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,
+  253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
+  232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,
+  15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,28,139,149,233,
+  248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
+  252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,
+  4,137,44,36,137,149,233,137,116,36,24,232,251,1,29,139,149,233,15,182,78,
   252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
-  193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,
-  232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,
-  139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,
-  20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,
-  68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
-  171,248,3,137,252,233,232,251,1,30,15,183,70,252,254,252,247,208,252,233,
-  244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,
-  255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,255,
-  15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,
-  252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,
-  242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219,
-  4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,
-  253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,
-  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,
-  233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,
-  78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,
-  4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,
-  252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,
-  234,248,158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,
-  239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,
-  251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,
-  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,
-  70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,
-  244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,
-  3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,
-  15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,
-  129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,
-  248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
-  2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,
-  35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,
-  252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,
-  129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,
-  244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,
-  133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,
-  139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,
-  189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39,
-  15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,
-  139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,137,171,233,137,
-  141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,252,
-  247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,
-  248,159,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
-  129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
-  15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
-  70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182,
-  232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,2,
-  137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,252,
-  233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,
-  15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,68,
-  36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,36,
-  8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108,36,
-  12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137,
-  133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
-  239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
-  233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
-  253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
-  232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
-  255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,
-  244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,
-  252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,1,141,12,202,139,105,
-  252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,20,131,232,1,15,
-  132,244,250,1,252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,
-  233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,
-  15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,
-  232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,
-  36,8,137,44,36,137,116,36,24,232,251,1,33,139,149,233,15,182,78,252,253,252,
-  233,244,1,248,7,255,128,165,233,235,139,131,233,137,171,233,137,133,233,252,
-  233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244,
-  51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
-  205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129,
-  121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237,
-  15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249,
-  248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,
-  133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251,
-  248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
-  248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141,
-  12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,129,252,
-  238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,139,114,252,252,
-  252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,202,8,139,105,232,
-  139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,
-  65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,
-  184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,
-  233,15,182,205,131,198,4,252,255,36,171,255,137,124,36,16,137,92,36,20,139,
-  108,202,252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,
-  1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,
-  15,42,192,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,
-  199,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,
-  141,180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,
-  182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,
-  252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,
-  252,248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,
-  233,139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,
-  8,137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,
-  233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,
-  129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,
-  133,244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,
-  252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
-  255,36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,
-  244,1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,
-  12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,
-  57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,
-  137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,
-  65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,
-  204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,
-  0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,
-  36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252,
-  248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
-  252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,
-  20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,
-  233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,
-  237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139,
-  44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,
-  133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,
-  255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70,
-  252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
-  252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
-  232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
-  252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,
-  15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,
-  239,102,131,172,253,43,233,1,15,132,244,140,255,141,12,202,255,129,121,253,
-  4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,129,
-  252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,252,
-  242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,
-  249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,
-  65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,
-  247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,253,
-  134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,
-  248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,
-  202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,
-  105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137,
-  65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137,147,233,
-  137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,15,182,232,
-  131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237,129,229,239,
-  102,131,172,253,43,233,1,15,132,244,142,255,139,190,233,139,108,36,48,141,
-  12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,
-  2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,
-  192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,
-  122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,200,59,141,
-  233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,
-  248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,
-  252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,
-  2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
-  36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,
-  244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,252,248,137,
-  149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,137,124,36,4,
-  137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,
-  233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,
-  114,252,252,252,233,244,12,255,254,0
+  193,232,16,252,255,36,171,255,139,108,36,48,137,149,233,139,139,233,59,139,
+  233,137,116,36,24,15,131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,
+  11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,
+  4,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,
+  6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,
+  0,0,252,233,244,2,248,5,137,252,233,232,251,1,31,15,183,70,252,254,252,233,
+  244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,
+  137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,32,139,
+  149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,
+  182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,31,
+  15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,
+  139,173,233,139,4,135,252,233,244,159,255,252,247,208,139,106,252,248,139,
+  173,233,139,4,135,252,233,244,160,255,15,182,252,236,15,182,192,129,124,253,
+  252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,
+  251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,
+  193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,15,131,
+  244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,
+  4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
+  232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,
+  246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,
+  252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,
+  244,159,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,
+  234,4,239,15,133,244,34,139,44,252,234,248,159,139,141,233,35,136,233,105,
+  201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,
+  244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,
+  4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15,182,232,131,198,4,
+  193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68,194,4,237,252,233,
+  244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,
+  132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,
+  236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,
+  133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,
+  139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,139,
+  141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,199,
+  68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,
+  234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,
+  255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
+  4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,
+  202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,
+  232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,
+  246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,
+  253,194,4,239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,
+  139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,
+  182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,
+  133,244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,201,239,198,
+  133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,
+  244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,
+  133,244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,
+  1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,
+  189,233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,
+  244,37,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
+  255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
+  248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,
+  4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,
+  33,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,
+  139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,
+  192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,
+  131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,
+  246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,
+  8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,
+  189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,
+  15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,
+  233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,
+  199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,
+  2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,
+  41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,
+  111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,
+  15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,
+  36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,34,139,149,
+  233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,
+  137,171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,
+  4,239,139,44,202,15,133,244,52,141,84,202,8,137,114,252,252,139,181,233,139,
+  14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,
+  215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,139,114,
+  252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,
+  131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,
+  4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,
+  189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,
+  131,198,4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,
+  252,253,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
+  233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
+  137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
+  141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,
+  65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,
+  65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,
+  139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,
+  137,124,36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,
+  233,131,198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,
+  15,132,244,250,255,252,242,15,42,192,255,219,68,202,252,248,255,139,108,199,
+  4,137,108,202,12,139,44,199,137,108,202,8,131,192,1,255,137,68,202,252,248,
+  248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,20,139,124,36,
+  16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,
+  131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,
+  133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,
+  253,141,92,24,1,139,175,233,139,135,233,137,44,202,137,68,202,4,139,175,233,
+  139,135,233,137,108,202,8,137,68,202,12,137,92,202,252,248,252,233,244,2,
+  248,7,255,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,
+  244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,
+  253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,
+  253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,
+  131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252,235,141,180,253,
+  134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36,
+  16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251,
+  141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,
+  139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,
+  215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,
+  3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+  36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,
+  193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,
+  244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
+  131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,
+  137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,
+  149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,
+  252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,
+  1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,
+  252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,
+  248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,
+  106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,
+  252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,
+  204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,
+  237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,
+  7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,
+  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,
+  255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,
+  135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,
+  16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,
+  15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,
+  24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,
+  247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,
+  255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,
+  252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,
+  46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,
+  247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,
+  134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,
+  128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,
+  134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
+  137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,143,
+  255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,
+  142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,
+  248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
+  255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
+  248,139,108,36,48,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
+  182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
+  249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
+  252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
+  15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131,
+  192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,189,
+  233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,
+  133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,21,199,131,
+  233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
+  141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
 };
 
 enum {
@@ -810,6 +817,7 @@ enum {
   GLOB_cont_condt,
   GLOB_cont_condf,
   GLOB_vmeta_equal,
+  GLOB_vmeta_equal_cd,
   GLOB_vmeta_arith_vn,
   GLOB_vmeta_arith_nv,
   GLOB_vmeta_unm,
@@ -963,6 +971,7 @@ static const char *const globnames[] = {
   "cont_condt",
   "cont_condf",
   "vmeta_equal",
+  "vmeta_equal_cd",
   "vmeta_arith_vn",
   "vmeta_arith_nv",
   "vmeta_unm",
@@ -1085,6 +1094,7 @@ static const char *const extnames[] = {
   "lj_meta_tset",
   "lj_meta_comp",
   "lj_meta_equal",
+  "lj_meta_equal_cd@8",
   "lj_meta_arith",
   "lj_meta_len@8",
   "lj_meta_call",
@@ -1160,428 +1170,432 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
   dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
-  dasm_put(Dst, 1358, Dt1(->base), Dt1(->base), FRAME_CONT);
-  dasm_put(Dst, 1482, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC);
-  dasm_put(Dst, 1663, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
+  dasm_put(Dst, 1358);
+#if LJ_HASFFI
+  dasm_put(Dst, 1373, Dt1(->base));
+#endif
+  dasm_put(Dst, 1404, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
+  dasm_put(Dst, 1524, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+  dasm_put(Dst, 1712, 1+1, ~LJ_TNUMX);
   if (cmov) {
-  dasm_put(Dst, 1765);
+  dasm_put(Dst, 1799);
   } else {
-  dasm_put(Dst, 1769);
+  dasm_put(Dst, 1803);
   }
-  dasm_put(Dst, 1778, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
-  dasm_put(Dst, 1861, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
-  dasm_put(Dst, 1919, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
-  dasm_put(Dst, 1982, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
-  dasm_put(Dst, 2054, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 1812, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
+  dasm_put(Dst, 1895, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+  dasm_put(Dst, 1953, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
+  dasm_put(Dst, 2016, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+  dasm_put(Dst, 2088, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 2147);
+    dasm_put(Dst, 2181);
   } else {
-    dasm_put(Dst, 2157);
+    dasm_put(Dst, 2191);
   }
-  dasm_put(Dst, 2164, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 2230, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
-  dasm_put(Dst, 2297, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
-  dasm_put(Dst, 2402, LJ_TTAB);
+  dasm_put(Dst, 2198, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 2264, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
+  dasm_put(Dst, 2331, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
+  dasm_put(Dst, 2436, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2414, Dt6(->metatable));
+  dasm_put(Dst, 2448, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2423, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+  dasm_put(Dst, 2457, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 2486);
+    dasm_put(Dst, 2520);
   } else {
-    dasm_put(Dst, 2525);
+    dasm_put(Dst, 2559);
   }
-  dasm_put(Dst, 2543, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
-  dasm_put(Dst, 2624, 1+1, LJ_TTAB);
+  dasm_put(Dst, 2577, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+  dasm_put(Dst, 2658, 1+1, LJ_TTAB);
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
-  dasm_put(Dst, 2414, Dt6(->metatable));
+  dasm_put(Dst, 2448, Dt6(->metatable));
 #endif
-  dasm_put(Dst, 2644, Dt8(->upvalue[0]), LJ_TFUNC);
+  dasm_put(Dst, 2678, Dt8(->upvalue[0]), LJ_TFUNC);
   if (sse) {
-    dasm_put(Dst, 2665);
+    dasm_put(Dst, 2699);
   } else {
-    dasm_put(Dst, 2675);
+    dasm_put(Dst, 2709);
   }
-  dasm_put(Dst, 2682, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
-  dasm_put(Dst, 2746, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
-  dasm_put(Dst, 2834, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
-  dasm_put(Dst, 2935, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
-  dasm_put(Dst, 3049, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
-  dasm_put(Dst, 3147, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
-  dasm_put(Dst, 3213, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
-  dasm_put(Dst, 3314, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
-  dasm_put(Dst, 3427, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+  dasm_put(Dst, 2716, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+  dasm_put(Dst, 2780, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+  dasm_put(Dst, 2868, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+  dasm_put(Dst, 2969, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+  dasm_put(Dst, 3083, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+  dasm_put(Dst, 3181, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 3247, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+  dasm_put(Dst, 3348, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+  dasm_put(Dst, 3461, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
   if (sse) {
-    dasm_put(Dst, 3453, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3487, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3522, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3556, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3558, 1+1, FRAME_TYPE, LJ_TNIL);
+  dasm_put(Dst, 3592, 1+1, FRAME_TYPE, LJ_TNIL);
   if (sse) {
-    dasm_put(Dst, 3648, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3710, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3682, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3744, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 3740, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-    dasm_put(Dst, 3799, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3774, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 3833, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 3826, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3895, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 3952, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
-  dasm_put(Dst, 4015, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
-  dasm_put(Dst, 4105);
+  dasm_put(Dst, 3860, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 3986, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+  dasm_put(Dst, 4049, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4139);
   if (sse) {
-  dasm_put(Dst, 4117, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4151, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4148, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4182, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4173);
+  dasm_put(Dst, 4207);
   if (sse) {
-  dasm_put(Dst, 4187, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4221, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4218, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4252, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4243);
+  dasm_put(Dst, 4277);
   if (sse) {
-  dasm_put(Dst, 4257, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4291, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 4288, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4322, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4313);
+  dasm_put(Dst, 4347);
   if (sse) {
-    dasm_put(Dst, 4329, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4363, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   } else {
-    dasm_put(Dst, 4368, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+    dasm_put(Dst, 4402, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
   }
-  dasm_put(Dst, 4401, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
-  dasm_put(Dst, 4466, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 4435, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4500, 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4565);
+    dasm_put(Dst, 4599);
   } else {
-    dasm_put(Dst, 4571);
+    dasm_put(Dst, 4605);
   }
-  dasm_put(Dst, 4580);
+  dasm_put(Dst, 4614);
   if (sse) {
-    dasm_put(Dst, 4605);
+    dasm_put(Dst, 4639);
   } else {
-    dasm_put(Dst, 4611);
+    dasm_put(Dst, 4645);
   }
-  dasm_put(Dst, 4614, 1+2);
+  dasm_put(Dst, 4648, 1+2);
   if (sse) {
-    dasm_put(Dst, 4623);
+    dasm_put(Dst, 4657);
   } else {
-    dasm_put(Dst, 4631);
+    dasm_put(Dst, 4665);
   }
-  dasm_put(Dst, 4639);
+  dasm_put(Dst, 4673);
   if (sse) {
-    dasm_put(Dst, 4642);
+    dasm_put(Dst, 4676);
   } else {
-    dasm_put(Dst, 4674);
+    dasm_put(Dst, 4708);
   }
-  dasm_put(Dst, 4693);
+  dasm_put(Dst, 4727);
   if (sse) {
-    dasm_put(Dst, 4709, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4743, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4734, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 4768, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 4756);
+  dasm_put(Dst, 4790);
   if (sse) {
-    dasm_put(Dst, 4778);
+    dasm_put(Dst, 4812);
   } else {
-    dasm_put(Dst, 4804);
+    dasm_put(Dst, 4838);
   }
-  dasm_put(Dst, 4821, 1+2);
+  dasm_put(Dst, 4855, 1+2);
   if (sse) {
-    dasm_put(Dst, 4861);
+    dasm_put(Dst, 4895);
   } else {
-    dasm_put(Dst, 4869);
+    dasm_put(Dst, 4903);
   }
-  dasm_put(Dst, 4879, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 4913, 2+1, LJ_TISNUM, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 4931, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 4965, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 4978, 2+1, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 5012, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 5019, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 5053, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 5090, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 5124, 1+1, LJ_TISNUM, LJ_TISNUM);
   if (cmov) {
-  dasm_put(Dst, 5143);
+  dasm_put(Dst, 5177);
   } else {
-  dasm_put(Dst, 5151);
+  dasm_put(Dst, 5185);
   }
-  dasm_put(Dst, 5082);
+  dasm_put(Dst, 5116);
   }
   if (sse) {
-  dasm_put(Dst, 5172, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 5206, 1+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 5243, 1+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM);
   if (cmov) {
-  dasm_put(Dst, 5296);
+  dasm_put(Dst, 5330);
   } else {
-  dasm_put(Dst, 5304);
+  dasm_put(Dst, 5338);
   }
-  dasm_put(Dst, 5082);
+  dasm_put(Dst, 5116);
   }
   if (!sse) {
-    dasm_put(Dst, 5325);
+    dasm_put(Dst, 5359);
   }
-  dasm_put(Dst, 5334, 1+1, LJ_TSTR);
+  dasm_put(Dst, 5368, 1+1, LJ_TSTR);
   if (sse) {
-    dasm_put(Dst, 5356, Dt5(->len));
+    dasm_put(Dst, 5390, Dt5(->len));
   } else {
-    dasm_put(Dst, 5367, Dt5(->len));
+    dasm_put(Dst, 5401, Dt5(->len));
   }
-  dasm_put(Dst, 5375, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+  dasm_put(Dst, 5409, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
   if (sse) {
-    dasm_put(Dst, 5413);
+    dasm_put(Dst, 5447);
   } else {
-    dasm_put(Dst, 5423);
+    dasm_put(Dst, 5457);
   }
-  dasm_put(Dst, 5436, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+  dasm_put(Dst, 5470, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5471);
+    dasm_put(Dst, 5505);
   } else {
-    dasm_put(Dst, 5493);
+    dasm_put(Dst, 5527);
   }
-  dasm_put(Dst, 5513, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
-  dasm_put(Dst, 2142);
+  dasm_put(Dst, 5547, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+  dasm_put(Dst, 2176);
   if (sse) {
-    dasm_put(Dst, 5616);
+    dasm_put(Dst, 5650);
   } else {
-    dasm_put(Dst, 5627);
+    dasm_put(Dst, 5661);
   }
-  dasm_put(Dst, 5635, LJ_TSTR, LJ_TISNUM, Dt5(->len));
+  dasm_put(Dst, 5669, LJ_TSTR, LJ_TISNUM, Dt5(->len));
   if (sse) {
-    dasm_put(Dst, 5665);
+    dasm_put(Dst, 5699);
   } else {
-    dasm_put(Dst, 5672);
+    dasm_put(Dst, 5706);
   }
-  dasm_put(Dst, 5684, sizeof(GCstr)-1);
-  dasm_put(Dst, 5759, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
-  dasm_put(Dst, 5818, LJ_TSTR, LJ_TISNUM);
+  dasm_put(Dst, 5718, sizeof(GCstr)-1);
+  dasm_put(Dst, 5793, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+  dasm_put(Dst, 5852, LJ_TSTR, LJ_TISNUM);
   if (sse) {
-    dasm_put(Dst, 5839);
+    dasm_put(Dst, 5873);
   } else {
-    dasm_put(Dst, 5846);
+    dasm_put(Dst, 5880);
   }
-  dasm_put(Dst, 5858, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 5923, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 5986, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
-  dasm_put(Dst, 6057, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
-  dasm_put(Dst, 6142, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
-  dasm_put(Dst, 6212, 1+1, LJ_TTAB);
+  dasm_put(Dst, 5892, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 5957, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 6020, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+  dasm_put(Dst, 6091, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+  dasm_put(Dst, 6176, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+  dasm_put(Dst, 6246, 1+1, LJ_TTAB);
   if (sse) {
-    dasm_put(Dst, 6280);
+    dasm_put(Dst, 6314);
   } else {
-    dasm_put(Dst, 6290);
+    dasm_put(Dst, 6324);
   }
   if (sse) {
-    dasm_put(Dst, 6301, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 6335, 1+1, LJ_TISNUM);
   } else {
-    dasm_put(Dst, 6358, 1+1, LJ_TISNUM);
+    dasm_put(Dst, 6392, 1+1, LJ_TISNUM);
   }
   if (sse) {
-  dasm_put(Dst, 6402, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6436, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 6450, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6484, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 6490, LJ_TISNUM);
+  dasm_put(Dst, 6524, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6517);
+  dasm_put(Dst, 6551);
   } else {
-  dasm_put(Dst, 6534);
+  dasm_put(Dst, 6568);
   }
-  dasm_put(Dst, 6547);
+  dasm_put(Dst, 6581);
   if (sse) {
-  dasm_put(Dst, 6555, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6589, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 6603, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6637, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 6490, LJ_TISNUM);
+  dasm_put(Dst, 6524, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6643);
+  dasm_put(Dst, 6677);
   } else {
-  dasm_put(Dst, 6660);
+  dasm_put(Dst, 6694);
   }
-  dasm_put(Dst, 6547);
+  dasm_put(Dst, 6581);
   if (sse) {
-  dasm_put(Dst, 6673, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6707, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 6721, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6755, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 6490, LJ_TISNUM);
+  dasm_put(Dst, 6524, LJ_TISNUM);
   if (sse) {
-  dasm_put(Dst, 6761);
+  dasm_put(Dst, 6795);
   } else {
-  dasm_put(Dst, 6778);
+  dasm_put(Dst, 6812);
   }
-  dasm_put(Dst, 6547);
+  dasm_put(Dst, 6581);
   if (sse) {
-  dasm_put(Dst, 6791, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6825, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 6839, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6873, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 6879);
+  dasm_put(Dst, 6913);
   if (sse) {
-  dasm_put(Dst, 6886, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6920, 1+1, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 6934, 1+1, LJ_TISNUM);
+  dasm_put(Dst, 6968, 1+1, LJ_TISNUM);
   }
-  dasm_put(Dst, 6974);
+  dasm_put(Dst, 7008);
   if (sse) {
-    dasm_put(Dst, 6978);
+    dasm_put(Dst, 7012);
   } else {
-    dasm_put(Dst, 6990);
+    dasm_put(Dst, 7024);
   }
-  dasm_put(Dst, 7003);
+  dasm_put(Dst, 7037);
   if (sse) {
-  dasm_put(Dst, 7014, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7048, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7088, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7154);
+  dasm_put(Dst, 7188);
   if (sse) {
-  dasm_put(Dst, 7163, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7197, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7237, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7271, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7303);
+  dasm_put(Dst, 7337);
   if (sse) {
-  dasm_put(Dst, 7313, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7347, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7387, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7421, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7453);
+  dasm_put(Dst, 7487);
   if (sse) {
-  dasm_put(Dst, 7463, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7497, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7537, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7571, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7603);
+  dasm_put(Dst, 7637);
   if (sse) {
-  dasm_put(Dst, 7612, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM);
   } else {
-  dasm_put(Dst, 7686, 2+1, LJ_TISNUM, LJ_TISNUM);
+  dasm_put(Dst, 7720, 2+1, LJ_TISNUM, LJ_TISNUM);
   }
-  dasm_put(Dst, 7752, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
-  dasm_put(Dst, 7830, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 7954, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7786, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+  dasm_put(Dst, 7864, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+  dasm_put(Dst, 7988, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7992, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 8026, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 8023, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 8074, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 8057, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 8108, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 8140, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 8174, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 8186);
+  dasm_put(Dst, 8220);
 #if LJ_HASJIT
-  dasm_put(Dst, 8018);
+  dasm_put(Dst, 8052);
 #endif
-  dasm_put(Dst, 8193);
+  dasm_put(Dst, 8227);
 #if LJ_HASJIT
-  dasm_put(Dst, 8196);
+  dasm_put(Dst, 8230);
 #endif
-  dasm_put(Dst, 8206, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8240, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8240);
+  dasm_put(Dst, 8274);
 #endif
-  dasm_put(Dst, 8245, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8279, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8274, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 8308, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 8417);
+  dasm_put(Dst, 8451);
 #if LJ_HASJIT
-  dasm_put(Dst, 8420, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 8454, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 8498);
+  dasm_put(Dst, 8532);
   if (!sse) {
-  dasm_put(Dst, 8501);
+  dasm_put(Dst, 8535);
   }
-  dasm_put(Dst, 8546);
+  dasm_put(Dst, 8580);
   if (!sse) {
-  dasm_put(Dst, 8648);
+  dasm_put(Dst, 8682);
   }
-  dasm_put(Dst, 8693);
+  dasm_put(Dst, 8727);
   if (!sse) {
-  dasm_put(Dst, 8795);
+  dasm_put(Dst, 8829);
   }
-  dasm_put(Dst, 8834);
+  dasm_put(Dst, 8868);
   if (sse) {
-    dasm_put(Dst, 8939);
+    dasm_put(Dst, 8973);
   } else {
-    dasm_put(Dst, 9069);
+    dasm_put(Dst, 9103);
   }
-  dasm_put(Dst, 9116);
+  dasm_put(Dst, 9150);
   if (!sse) {
-  dasm_put(Dst, 9190);
+  dasm_put(Dst, 9224);
   if (cmov) {
-  dasm_put(Dst, 9201);
+  dasm_put(Dst, 9235);
   } else {
-  dasm_put(Dst, 9205);
+  dasm_put(Dst, 9239);
   }
-  dasm_put(Dst, 9212);
-  dasm_put(Dst, 9286);
-  dasm_put(Dst, 9386);
+  dasm_put(Dst, 9246);
+  dasm_put(Dst, 9320);
+  dasm_put(Dst, 9420);
   if (cmov) {
-  dasm_put(Dst, 9389);
+  dasm_put(Dst, 9423);
   } else {
-  dasm_put(Dst, 9393);
+  dasm_put(Dst, 9427);
   }
-  dasm_put(Dst, 9400);
+  dasm_put(Dst, 9434);
   if (cmov) {
-  dasm_put(Dst, 9201);
+  dasm_put(Dst, 9235);
   } else {
-  dasm_put(Dst, 9205);
+  dasm_put(Dst, 9239);
   }
-  dasm_put(Dst, 9418);
+  dasm_put(Dst, 9452);
   } else {
-    dasm_put(Dst, 9497);
+    dasm_put(Dst, 9531);
   }
-  dasm_put(Dst, 9500);
-  dasm_put(Dst, 9585);
-  dasm_put(Dst, 9716);
-  dasm_put(Dst, 9915);
+  dasm_put(Dst, 9534);
+  dasm_put(Dst, 9619);
+  dasm_put(Dst, 9750);
+  dasm_put(Dst, 9949);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 9938);
-    dasm_put(Dst, 9995);
-    dasm_put(Dst, 10086);
+    dasm_put(Dst, 9972);
+    dasm_put(Dst, 10029);
+    dasm_put(Dst, 10120);
   } else {
-    dasm_put(Dst, 10128);
-    dasm_put(Dst, 10220);
+    dasm_put(Dst, 10162);
+    dasm_put(Dst, 10254);
   }
-  dasm_put(Dst, 10266);
+  dasm_put(Dst, 10300);
 #endif
-  dasm_put(Dst, 10270);
+  dasm_put(Dst, 10304);
   if (sse) {
-    dasm_put(Dst, 10273);
-    dasm_put(Dst, 10378);
-    dasm_put(Dst, 10461);
+    dasm_put(Dst, 10307);
+    dasm_put(Dst, 10412);
+    dasm_put(Dst, 10495);
   } else {
-    dasm_put(Dst, 10533);
-    dasm_put(Dst, 10616);
+    dasm_put(Dst, 10567);
+    dasm_put(Dst, 10650);
     if (cmov) {
-    dasm_put(Dst, 10671);
+    dasm_put(Dst, 10705);
     } else {
-    dasm_put(Dst, 10690);
+    dasm_put(Dst, 10724);
     }
-    dasm_put(Dst, 10266);
+    dasm_put(Dst, 10300);
   }
-  dasm_put(Dst, 10731);
+  dasm_put(Dst, 10765);
 #if LJ_HASFFI
 #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
-  dasm_put(Dst, 10787, DtE(->spadj));
+  dasm_put(Dst, 10821, DtE(->spadj));
 #if LJ_TARGET_WINDOWS
-  dasm_put(Dst, 10797, DtE(->spadj));
+  dasm_put(Dst, 10831, DtE(->spadj));
 #endif
-  dasm_put(Dst, 10801, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
-  dasm_put(Dst, 10871, DtE(->fpr[0].f[0]));
+  dasm_put(Dst, 10835, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
+  dasm_put(Dst, 10905, DtE(->fpr[0].f[0]));
 #if LJ_TARGET_WINDOWS
-  dasm_put(Dst, 10877, DtE(->spadj));
+  dasm_put(Dst, 10911, DtE(->spadj));
 #endif
-  dasm_put(Dst, 10881);
+  dasm_put(Dst, 10915);
 #endif
 }
 
@@ -1589,7 +1603,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
 static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 {
   int vk = 0;
-  dasm_put(Dst, 10888, defop);
+  dasm_put(Dst, 10922, defop);
 
   switch (op) {
 
@@ -1598,639 +1612,657 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 10890, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10924, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10911);
+      dasm_put(Dst, 10945);
     } else {
-      dasm_put(Dst, 10926);
+      dasm_put(Dst, 10960);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 10949);
+      dasm_put(Dst, 10983);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 10081);
+      dasm_put(Dst, 10115);
       break;
     case BC_ISLE:
-      dasm_put(Dst, 6207);
+      dasm_put(Dst, 6241);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 10954);
+      dasm_put(Dst, 10988);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 10959, -BCBIAS_J*4);
+    dasm_put(Dst, 10993, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 10992, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11026, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11018);
+      dasm_put(Dst, 11052);
     } else {
-      dasm_put(Dst, 11030);
+      dasm_put(Dst, 11064);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 11037);
+      dasm_put(Dst, 11071);
     } else {
-      dasm_put(Dst, 11046);
+      dasm_put(Dst, 11080);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 11055, -BCBIAS_J*4);
+      dasm_put(Dst, 11089, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4654);
+      }
     } else {
-      dasm_put(Dst, 11070, -BCBIAS_J*4);
+      if (!LJ_HASFFI) {
+	dasm_put(Dst, 4654);
+      }
+      dasm_put(Dst, 11104, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 11085, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 11119);
+      if (LJ_HASFFI) {
+	dasm_put(Dst, 11122, LJ_TCDATA, LJ_TCDATA);
+      }
+      dasm_put(Dst, 11141, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-	dasm_put(Dst, 11143);
+	dasm_put(Dst, 11197);
       } else {
-	dasm_put(Dst, 11147);
+	dasm_put(Dst, 11201);
       }
-      dasm_put(Dst, 11153);
+      dasm_put(Dst, 11207);
+    } else if (LJ_HASFFI) {
+      dasm_put(Dst, 11212, LJ_TCDATA);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 11158, LJ_TSTR);
+    dasm_put(Dst, 11227, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 11041);
+      dasm_put(Dst, 11075);
     } else {
-      dasm_put(Dst, 2829);
+      dasm_put(Dst, 2863);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 11181, LJ_TISNUM);
+    dasm_put(Dst, 11252, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11195);
+      dasm_put(Dst, 11268);
     } else {
-      dasm_put(Dst, 11207);
+      dasm_put(Dst, 11280);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 11214);
-    goto iseqne_test;
+    dasm_put(Dst, 11287);
+    if (!LJ_HASFFI) goto iseqne_test;
+    if (vk) {
+      dasm_put(Dst, 11300, -BCBIAS_J*4, LJ_TCDATA);
+    } else {
+      dasm_put(Dst, 11349, LJ_TCDATA, -BCBIAS_J*4);
+    }
+    break;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 11225, LJ_TISTRUECOND);
+    dasm_put(Dst, 11392, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 11237);
+      dasm_put(Dst, 11404);
     } else {
-      dasm_put(Dst, 11242);
+      dasm_put(Dst, 11409);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 11247);
+      dasm_put(Dst, 11414);
     }
-    dasm_put(Dst, 11258, -BCBIAS_J*4);
+    dasm_put(Dst, 11425, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 11289);
+    dasm_put(Dst, 11456);
     break;
   case BC_NOT:
-    dasm_put(Dst, 11322, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 11489, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 11357, LJ_TISNUM);
+    dasm_put(Dst, 11524, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11368);
+      dasm_put(Dst, 11535);
     } else {
-      dasm_put(Dst, 11398);
+      dasm_put(Dst, 11565);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_LEN:
-    dasm_put(Dst, 11407, LJ_TSTR);
+    dasm_put(Dst, 11574, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 11421, Dt5(->len));
+      dasm_put(Dst, 11588, Dt5(->len));
     } else {
-      dasm_put(Dst, 11439, Dt5(->len));
+      dasm_put(Dst, 11606, Dt5(->len));
     }
-    dasm_put(Dst, 11448, LJ_TTAB);
+    dasm_put(Dst, 11615, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 11488);
+      dasm_put(Dst, 11655);
     } else {
-      dasm_put(Dst, 11497);
+      dasm_put(Dst, 11664);
     }
-    dasm_put(Dst, 11507);
+    dasm_put(Dst, 11674);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11537);
+    dasm_put(Dst, 11704);
     } else {
-    dasm_put(Dst, 11551);
+    dasm_put(Dst, 11718);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11571);
+    dasm_put(Dst, 11738);
     } else {
-    dasm_put(Dst, 11585);
+    dasm_put(Dst, 11752);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11615);
+    dasm_put(Dst, 11782);
     } else {
-    dasm_put(Dst, 11629);
+    dasm_put(Dst, 11796);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11637);
+    dasm_put(Dst, 11804);
     } else {
-    dasm_put(Dst, 11651);
+    dasm_put(Dst, 11818);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11659);
+    dasm_put(Dst, 11826);
     } else {
-    dasm_put(Dst, 11673);
+    dasm_put(Dst, 11840);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11681);
+    dasm_put(Dst, 11848);
     } else {
-    dasm_put(Dst, 11695);
+    dasm_put(Dst, 11862);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11703);
+    dasm_put(Dst, 11870);
     } else {
-    dasm_put(Dst, 11717);
+    dasm_put(Dst, 11884);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11725);
+    dasm_put(Dst, 11892);
     } else {
-    dasm_put(Dst, 11739);
+    dasm_put(Dst, 11906);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11747);
+    dasm_put(Dst, 11914);
     } else {
-    dasm_put(Dst, 11761);
+    dasm_put(Dst, 11928);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11769);
+    dasm_put(Dst, 11936);
     } else {
-    dasm_put(Dst, 11783);
+    dasm_put(Dst, 11950);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11791);
+    dasm_put(Dst, 11958);
     } else {
-    dasm_put(Dst, 11805);
+    dasm_put(Dst, 11972);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11813);
+    dasm_put(Dst, 11980);
     } else {
-    dasm_put(Dst, 11827);
+    dasm_put(Dst, 11994);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11835);
+    dasm_put(Dst, 12002);
     } else {
-    dasm_put(Dst, 11849);
+    dasm_put(Dst, 12016);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11857);
+    dasm_put(Dst, 12024);
     } else {
-    dasm_put(Dst, 11871);
+    dasm_put(Dst, 12038);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11879);
+    dasm_put(Dst, 12046);
     } else {
-    dasm_put(Dst, 11893);
+    dasm_put(Dst, 12060);
     }
       break;
     }
-    dasm_put(Dst, 11901);
+    dasm_put(Dst, 12068);
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11835);
+    dasm_put(Dst, 12002);
     } else {
-    dasm_put(Dst, 11849);
+    dasm_put(Dst, 12016);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11857);
+    dasm_put(Dst, 12024);
     } else {
-    dasm_put(Dst, 11871);
+    dasm_put(Dst, 12038);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11879);
+    dasm_put(Dst, 12046);
     } else {
-    dasm_put(Dst, 11893);
+    dasm_put(Dst, 12060);
     }
       break;
     }
-    dasm_put(Dst, 11907);
+    dasm_put(Dst, 12074);
     break;
   case BC_POW:
-    dasm_put(Dst, 11517);
+    dasm_put(Dst, 11684);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11525, LJ_TISNUM);
+    dasm_put(Dst, 11692, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11835);
+    dasm_put(Dst, 12002);
     } else {
-    dasm_put(Dst, 11849);
+    dasm_put(Dst, 12016);
     }
       break;
     case 1:
-    dasm_put(Dst, 11559, LJ_TISNUM);
+    dasm_put(Dst, 11726, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11857);
+    dasm_put(Dst, 12024);
     } else {
-    dasm_put(Dst, 11871);
+    dasm_put(Dst, 12038);
     }
       break;
     default:
-    dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11879);
+    dasm_put(Dst, 12046);
     } else {
-    dasm_put(Dst, 11893);
+    dasm_put(Dst, 12060);
     }
       break;
     }
-    dasm_put(Dst, 11912);
+    dasm_put(Dst, 12079);
     if (sse) {
-    dasm_put(Dst, 11391);
+    dasm_put(Dst, 11558);
     } else {
-    dasm_put(Dst, 11403);
+    dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 11916, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12083, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 12010, LJ_TSTR);
+    dasm_put(Dst, 12177, LJ_TSTR);
     break;
   case BC_KCDATA:
 #if LJ_HASFFI
-    dasm_put(Dst, 12010, LJ_TCDATA);
+    dasm_put(Dst, 12177, LJ_TCDATA);
 #endif
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 12043);
+      dasm_put(Dst, 12210);
     } else {
-      dasm_put(Dst, 12058);
+      dasm_put(Dst, 12225);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 12066);
+      dasm_put(Dst, 12233);
     } else {
-      dasm_put(Dst, 12079);
+      dasm_put(Dst, 12246);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 12086);
+    dasm_put(Dst, 12253);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 12112, LJ_TNIL);
+    dasm_put(Dst, 12279, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 12158, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12325, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 12202, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 12292);
+    dasm_put(Dst, 12369, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 12459);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 12304, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 12471, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 12395);
+    dasm_put(Dst, 12562);
     if (sse) {
-      dasm_put(Dst, 12400);
+      dasm_put(Dst, 12567);
     } else {
-      dasm_put(Dst, 11210);
+      dasm_put(Dst, 11283);
     }
-    dasm_put(Dst, 12407, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12574, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 12416);
+      dasm_put(Dst, 12583);
     } else {
-      dasm_put(Dst, 12422);
+      dasm_put(Dst, 12589);
     }
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
   case BC_USETP:
-    dasm_put(Dst, 12425, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12592, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 12462, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 12516, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 12683, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 12587, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12754, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 12713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12880, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 12805, Dt7(->env));
+    dasm_put(Dst, 12972, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 12823, Dt7(->env));
+    dasm_put(Dst, 12990, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 12841, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 13008, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12874);
+      dasm_put(Dst, 13041);
     } else {
-      dasm_put(Dst, 12895);
+      dasm_put(Dst, 13062);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
-      dasm_put(Dst, 2539);
+      dasm_put(Dst, 2573);
     }
-    dasm_put(Dst, 12905, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 12993, LJ_TNIL, LJ_TSTR);
+    dasm_put(Dst, 13072, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13160, LJ_TNIL, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 13022, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13110, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13189, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13277, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 13180, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 13279, LJ_TNIL);
+    dasm_put(Dst, 13347, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 13446, LJ_TNIL);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 13296, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 13463, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12874);
+      dasm_put(Dst, 13041);
     } else {
-      dasm_put(Dst, 12895);
+      dasm_put(Dst, 13062);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
-      dasm_put(Dst, 2539);
+      dasm_put(Dst, 2573);
     }
-    dasm_put(Dst, 13329, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 13412, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13496, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 13579, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 13474, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13549, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 13641, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13641, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13716, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 13808, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 13737, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 13835, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13904, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 14002, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 13881, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 14030, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 14048, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 14197, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 11521);
+    dasm_put(Dst, 11688);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 14048);
+      dasm_put(Dst, 14215);
     }
-    dasm_put(Dst, 14053, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 14220, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 14048);
+    dasm_put(Dst, 14215);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 14094, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 14212, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 14261, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 14379, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 14282, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 14449, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_ITERN:
 #if LJ_HASJIT
 #endif
-    dasm_put(Dst, 14362, Dt6(->asize), Dt6(->array), LJ_TNIL);
+    dasm_put(Dst, 14529, Dt6(->asize), Dt6(->array), LJ_TNIL);
     if (sse) {
-      dasm_put(Dst, 14408);
+      dasm_put(Dst, 14575);
     } else {
-      dasm_put(Dst, 14414);
+      dasm_put(Dst, 14581);
     }
-    dasm_put(Dst, 14420);
+    dasm_put(Dst, 14587);
     if (sse) {
-      dasm_put(Dst, 11391);
+      dasm_put(Dst, 11558);
     } else {
-      dasm_put(Dst, 11403);
+      dasm_put(Dst, 11570);
     }
-    dasm_put(Dst, 14439, -BCBIAS_J*4);
+    dasm_put(Dst, 14606, -BCBIAS_J*4);
     if (!sse) {
-      dasm_put(Dst, 14490);
+      dasm_put(Dst, 14657);
     }
-    dasm_put(Dst, 14496, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
-    dasm_put(Dst, 14571);
+    dasm_put(Dst, 14663, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
+    dasm_put(Dst, 14738);
     break;
 
   case BC_ISNEXT:
-    dasm_put(Dst, 14579, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+    dasm_put(Dst, 14746, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 14678, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
-    dasm_put(Dst, 14842, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14845, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+    dasm_put(Dst, 15009, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 14048);
+    dasm_put(Dst, 14215);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 14913);
+      dasm_put(Dst, 15080);
     }
-    dasm_put(Dst, 14917, FRAME_TYPE);
+    dasm_put(Dst, 15084, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 14936);
+      dasm_put(Dst, 15103);
       break;
     case BC_RET1:
-      dasm_put(Dst, 14994);
+      dasm_put(Dst, 15161);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 15010);
+      dasm_put(Dst, 15177);
     default:
       break;
     }
-    dasm_put(Dst, 15021, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 15188, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 15063, LJ_TNIL);
+      dasm_put(Dst, 15230, LJ_TNIL);
     } else {
-      dasm_put(Dst, 15072, LJ_TNIL);
+      dasm_put(Dst, 15239, LJ_TNIL);
     }
-    dasm_put(Dst, 15079, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 15246, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 15103);
+      dasm_put(Dst, 15270);
     }
-    dasm_put(Dst, 4704);
+    dasm_put(Dst, 4738);
     break;
 
   /* -- Loops and branches ------------------------------------------------ */
@@ -2238,7 +2270,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2250,57 +2282,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 15128);
+    dasm_put(Dst, 15295);
     if (!vk) {
-      dasm_put(Dst, 15132, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 15299, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 15151);
+    dasm_put(Dst, 15318);
     if (!vk) {
-      dasm_put(Dst, 15155, LJ_TISNUM);
+      dasm_put(Dst, 15322, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 15164);
+      dasm_put(Dst, 15331);
       if (vk) {
-	dasm_put(Dst, 15176);
+	dasm_put(Dst, 15343);
       } else {
-	dasm_put(Dst, 15195);
+	dasm_put(Dst, 15362);
       }
-      dasm_put(Dst, 15200);
+      dasm_put(Dst, 15367);
     } else {
-      dasm_put(Dst, 15213);
+      dasm_put(Dst, 15380);
       if (vk) {
-	dasm_put(Dst, 15219);
+	dasm_put(Dst, 15386);
       } else {
-	dasm_put(Dst, 15235);
+	dasm_put(Dst, 15402);
       }
-      dasm_put(Dst, 15243);
+      dasm_put(Dst, 15410);
       if (cmov) {
-      dasm_put(Dst, 10936);
+      dasm_put(Dst, 10970);
       } else {
-      dasm_put(Dst, 10942);
+      dasm_put(Dst, 10976);
       }
       if (!cmov) {
-	dasm_put(Dst, 15248);
+	dasm_put(Dst, 15415);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 15254, -BCBIAS_J*4);
+      dasm_put(Dst, 15421, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 15264, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 15431, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 15278, -BCBIAS_J*4);
+      dasm_put(Dst, 15445, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 15274, BC_JLOOP);
+      dasm_put(Dst, 15441, BC_JLOOP);
     }
-    dasm_put(Dst, 10971);
+    dasm_put(Dst, 11005);
     if (sse) {
-      dasm_put(Dst, 15288);
+      dasm_put(Dst, 15455);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2309,33 +2341,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 15299, LJ_TNIL);
+    dasm_put(Dst, 15466, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 15314, BC_JLOOP);
+      dasm_put(Dst, 15481, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15328, -BCBIAS_J*4);
+      dasm_put(Dst, 15495, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 11268);
+    dasm_put(Dst, 11435);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 10973);
+    dasm_put(Dst, 11007);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 15344, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 15511, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 15367, -BCBIAS_J*4);
+    dasm_put(Dst, 15534, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2349,7 +2381,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 15391, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 15558, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2359,47 +2391,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 15412, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 15579, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 15442, BC_JLOOP);
+      dasm_put(Dst, 15609, BC_JLOOP);
     } else {
-      dasm_put(Dst, 10973);
+      dasm_put(Dst, 11007);
     }
-    dasm_put(Dst, 15451, LJ_TNIL);
+    dasm_put(Dst, 15618, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 10268);
+    dasm_put(Dst, 10302);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 15473, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 15640, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 15442, BC_JLOOP);
+      dasm_put(Dst, 15609, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15564, -4+PC2PROTO(k));
+      dasm_put(Dst, 15731, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 15586, LJ_TNIL);
+    dasm_put(Dst, 15753, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 15608, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 15775, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15637);
+      dasm_put(Dst, 15804);
     } else {
-      dasm_put(Dst, 15641);
+      dasm_put(Dst, 15808);
     }
-    dasm_put(Dst, 15649, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 15816, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15658);
+      dasm_put(Dst, 15825);
     } else {
-      dasm_put(Dst, 15662, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 15829, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 15667, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15834, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2427,7 +2459,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 15692);
+  dasm_put(Dst, 15859);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index aeeb0bc1..89baa356 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -85,9 +85,10 @@ typedef struct FFIArith {
 } FFIArith;
 
 /* Check arguments for arithmetic metamethods. */
-static void ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa)
+static int ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa)
 {
   TValue *o = L->base;
+  int ok = 1;
   MSize i;
   if (o+1 >= L->top)
     lj_err_argt(L, 1, LUA_TCDATA);
@@ -105,10 +106,16 @@ static void ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa)
     } else if (tvisnum(o)) {
       fa->ct[i] = ctype_get(cts, CTID_DOUBLE);
       fa->p[i] = (uint8_t *)&o->n;
+    } else if (tvisnil(o)) {
+      fa->ct[i] = ctype_get(cts, CTID_P_VOID);
+      fa->p[i] = (uint8_t *)0;
     } else {
-      lj_err_optype(L, o, LJ_ERR_OPARITH);
+      fa->ct[i] = NULL;
+      fa->p[i] = NULL;
+      ok = 0;
     }
   }
+  return ok;
 }
 
 /* Pointer arithmetic. */
@@ -120,26 +127,38 @@ static int ffi_arith_ptr(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
   CTSize sz;
   CTypeID id;
   GCcdata *cd;
-  if (!(mm == MM_add || mm == MM_sub))
-    return 0;
   if (ctype_isptr(ctp->info) || ctype_isrefarray(ctp->info)) {
-    if (mm == MM_sub &&
+    if ((mm == MM_sub || mm == MM_eq || mm == MM_lt || mm == MM_le) &&
 	(ctype_isptr(fa->ct[1]->info) || ctype_isrefarray(fa->ct[1]->info))) {
-      /* Pointer difference. */
-      intptr_t diff;
+      uint8_t *pp2 = fa->p[1];
+      if (mm == MM_eq) {  /* Pointer equality. Incompatible pointers are ok. */
+	setboolV(L->top-1, (pp == pp2));
+	return 1;
+      }
       if (!lj_cconv_compatptr(cts, ctp, fa->ct[1], CCF_IGNQUAL))
-	lj_err_caller(L, LJ_ERR_FFI_INVTYPE);
-      sz = lj_ctype_size(cts, ctype_cid(ctp->info));  /* Element size. */
-      if (sz == 0 || sz == CTSIZE_INVALID)
-	lj_err_caller(L, LJ_ERR_FFI_INVSIZE);
-      diff = ((intptr_t)pp - (intptr_t)fa->p[1]) / (int32_t)sz;
-      /* All valid pointer differences on x64 are in (-2^47, +2^47),
-      ** which fits into a double without loss of precision.
-      */
-      setnumV(L->top-1, (lua_Number)diff);
-      return 1;
+	return 0;
+      if (mm == MM_sub) {  /* Pointer difference. */
+	intptr_t diff;
+	sz = lj_ctype_size(cts, ctype_cid(ctp->info));  /* Element size. */
+	if (sz == 0 || sz == CTSIZE_INVALID)
+	  return 0;
+	diff = ((intptr_t)pp - (intptr_t)pp2) / (int32_t)sz;
+	/* All valid pointer differences on x64 are in (-2^47, +2^47),
+	** which fits into a double without loss of precision.
+	*/
+	setnumV(L->top-1, (lua_Number)diff);
+	return 1;
+      } else if (mm == MM_lt) {  /* Pointer comparison (unsigned). */
+	setboolV(L->top-1, ((uintptr_t)pp < (uintptr_t)pp2));
+	return 1;
+      } else {
+	lua_assert(mm == MM_le);
+	setboolV(L->top-1, ((uintptr_t)pp <= (uintptr_t)pp2));
+	return 1;
+      }
     }
-    if (!ctype_isnum(fa->ct[1]->info)) return 0;
+    if (!((mm == MM_add || mm == MM_sub) &&
+	  ctype_isnum(fa->ct[1]->info))) return 0;
     lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), fa->ct[1],
 		   (uint8_t *)&idx, fa->p[1], 0);
     if (mm == MM_sub) idx = -idx;
@@ -155,7 +174,7 @@ static int ffi_arith_ptr(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
   }
   sz = lj_ctype_size(cts, ctype_cid(ctp->info));  /* Element size. */
   if (sz == CTSIZE_INVALID)
-    lj_err_caller(L, LJ_ERR_FFI_INVSIZE);
+    return 0;
   pp += idx*(int32_t)sz;  /* Compute pointer + index. */
   id = lj_ctype_intern(cts, CTINFO(CT_PTR, CTALIGN_PTR|ctype_cid(ctp->info)),
 		       CTSIZE_PTR);
@@ -180,7 +199,19 @@ static int ffi_arith_int64(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
     lj_cconv_ct_ct(cts, ct, fa->ct[0], (uint8_t *)&u0, fa->p[0], 0);
     if (mm != MM_unm)
       lj_cconv_ct_ct(cts, ct, fa->ct[1], (uint8_t *)&u1, fa->p[1], 0);
-    if ((mm == MM_div || mm == MM_mod)) {
+    switch (mm) {
+    case MM_eq:
+      setboolV(L->top-1, (u0 == u1));
+      return 1;
+    case MM_lt:
+      setboolV(L->top-1,
+	       id == CTID_INT64 ? ((int64_t)u0 < (int64_t)u1) : (u0 < u1));
+      return 1;
+    case MM_le:
+      setboolV(L->top-1,
+	       id == CTID_INT64 ? ((int64_t)u0 <= (int64_t)u1) : (u0 <= u1));
+      return 1;
+    case MM_div: case MM_mod:
       if (u1 == 0) {  /* Division by zero. */
 	if (u0 == 0)
 	  setnanV(L->top-1);
@@ -194,6 +225,8 @@ static int ffi_arith_int64(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
 	if (mm == MM_div) id = CTID_UINT64; else u0 = 0;
 	mm = MM_unm;  /* Result is 0x8000000000000000ULL or 0LL. */
       }
+      break;
+    default: break;
     }
     cd = lj_cdata_new(cts, id, 8);
     up = (uint64_t *)cdataptr(cd);
@@ -229,17 +262,27 @@ static int ffi_arith(lua_State *L)
 {
   CTState *cts = ctype_cts(L);
   FFIArith fa;
-  MMS mm = (MMS)(curr_func(L)->c.ffid - (int)FF_ffi_meta___add + (int)MM_add);
-  ffi_checkarith(L, cts, &fa);
-  if (!ffi_arith_int64(L, cts, &fa, mm) &&
-      !ffi_arith_ptr(L, cts, &fa, mm)) {
+  MMS mm = (MMS)(curr_func(L)->c.ffid - (int)FF_ffi_meta___eq + (int)MM_eq);
+  if (ffi_checkarith(L, cts, &fa)) {
+    if (ffi_arith_int64(L, cts, &fa, mm) || ffi_arith_ptr(L, cts, &fa, mm))
+      return 1;
+  }
+  /* NYI: per-cdata metamethods. */
+  {
     const char *repr[2];
     int i;
-    for (i = 0; i < 2; i++)
-      repr[i] = strdata(lj_ctype_repr(L, ctype_typeid(cts, fa.ct[i]), NULL));
-    lj_err_callerv(L, LJ_ERR_FFI_BADARITH, repr[0], repr[1]);
+    for (i = 0; i < 2; i++) {
+      if (fa.ct[i])
+	repr[i] = strdata(lj_ctype_repr(L, ctype_typeid(cts, fa.ct[i]), NULL));
+      else
+	repr[i] = typename(&L->base[i]);
+    }
+    lj_err_callerv(L, mm == MM_len ? LJ_ERR_FFI_BADLEN :
+		      mm == MM_concat ? LJ_ERR_FFI_BADCONCAT :
+		      mm < MM_add ? LJ_ERR_FFI_BADCOMP : LJ_ERR_FFI_BADARITH,
+		   repr[0], repr[1]);
   }
-  return 1;
+  return 0;  /* unreachable */
 }
 
 /* -- C type metamethods -------------------------------------------------- */
@@ -275,6 +318,32 @@ LJLIB_CF(ffi_meta___newindex)	LJLIB_REC(cdata_index 1)
   return 0;
 }
 
+/* The following functions must be in contiguous ORDER MM. */
+LJLIB_CF(ffi_meta___eq)
+{
+  return ffi_arith(L);
+}
+
+LJLIB_CF(ffi_meta___len)
+{
+  return ffi_arith(L);
+}
+
+LJLIB_CF(ffi_meta___lt)
+{
+  return ffi_arith(L);
+}
+
+LJLIB_CF(ffi_meta___le)
+{
+  return ffi_arith(L);
+}
+
+LJLIB_CF(ffi_meta___concat)
+{
+  return ffi_arith(L);
+}
+
 /* Forward declaration. */
 static int lj_cf_ffi_new(lua_State *L);
 
@@ -324,6 +393,7 @@ LJLIB_CF(ffi_meta___unm)	LJLIB_REC(cdata_arith MM_unm)
 {
   return ffi_arith(L);
 }
+/* End of contiguous ORDER MM. */
 
 LJLIB_CF(ffi_meta___tostring)
 {
diff --git a/src/lj_crecord.h b/src/lj_crecord.h
index 31e3c091..3b2249c5 100644
--- a/src/lj_crecord.h
+++ b/src/lj_crecord.h
@@ -19,6 +19,7 @@ LJ_FUNC void LJ_FASTCALL lj_crecord_tonumber(jit_State *J, RecordFFData *rd);
 #else
 #define recff_cdata_index	recff_nyi
 #define recff_cdata_call	recff_nyi
+#define recff_cdata_arith	recff_nyi
 #define recff_ffi_new		recff_nyi
 #endif
 
diff --git a/src/lj_errmsg.h b/src/lj_errmsg.h
index b139fa8d..7b0c15cd 100644
--- a/src/lj_errmsg.h
+++ b/src/lj_errmsg.h
@@ -147,7 +147,10 @@ ERRDEF(FFI_BADTAG,	"undeclared or implicit tag " LUA_QS)
 ERRDEF(FFI_REDEF,	"attempt to redefine " LUA_QS)
 ERRDEF(FFI_INITOV,	"too many initializers for " LUA_QS)
 ERRDEF(FFI_BADCONV,	"cannot convert " LUA_QS " to " LUA_QS)
+ERRDEF(FFI_BADLEN,	"attempt to get length of " LUA_QS)
+ERRDEF(FFI_BADCONCAT,	"attempt to concatenate " LUA_QS " and " LUA_QS)
 ERRDEF(FFI_BADARITH,	"attempt to perform arithmetic on " LUA_QS " and " LUA_QS)
+ERRDEF(FFI_BADCOMP,	"attempt to compare " LUA_QS " with " LUA_QS)
 ERRDEF(FFI_BADCALL,	LUA_QS " is not callable")
 ERRDEF(FFI_NUMARG,	"wrong number of arguments for function call")
 ERRDEF(FFI_BADMEMBER,	LUA_QS " has no member named " LUA_QS)
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 5353e4d4..ce851a22 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -302,10 +302,48 @@ TValue *lj_meta_equal(lua_State *L, GCobj *o1, GCobj *o2, int ne)
   return cast(TValue *, (intptr_t)ne);
 }
 
+#if LJ_HASFFI
+TValue * LJ_FASTCALL lj_meta_equal_cd(lua_State *L, BCIns ins)
+{
+  ASMFunction cont = (bc_op(ins) & 1) ? lj_cont_condf : lj_cont_condt;
+  int op = (int)bc_op(ins) & ~1;
+  TValue tv;
+  cTValue *mo, *o2, *o1 = &L->base[bc_a(ins)];
+  if (op == BC_ISEQV) {
+    cTValue *o = &L->base[bc_d(ins)];
+    if (tviscdata(o1)) {
+      o2 = o;
+    } else {
+      o2 = o1; o1 = o;
+    }
+  } else if (op == BC_ISEQS) {
+    setstrV(L, &tv, gco2str(proto_kgc(curr_proto(L), ~(ptrdiff_t)bc_d(ins))));
+    o2 = &tv;
+  } else if (op == BC_ISEQN) {
+    o2 = &mref(curr_proto(L)->k, cTValue)[bc_d(ins)];
+  } else {
+    lua_assert(op == BC_ISEQP);
+    setitype(&tv, ~bc_d(ins));
+    o2 = &tv;
+  }
+  mo = lj_meta_lookup(L, o1, MM_eq);
+  if (LJ_LIKELY(!tvisnil(mo)))
+    return mmcall(L, cont, mo, o1, o2);
+  else
+    return cast(TValue *, (intptr_t)(bc_op(ins) & 1));
+}
+#endif
+
 /* Helper for ordered comparisons. String compare, __lt/__le metamethods. */
 TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op)
 {
-  if (itype(o1) == itype(o2)) {  /* Never called with two numbers. */
+  if (LJ_HASFFI && (tviscdata(o1) || tviscdata(o2))) {
+    ASMFunction cont = (op & 1) ? lj_cont_condf : lj_cont_condt;
+    MMS mm = (op & 2) ? MM_le : MM_lt;
+    cTValue *mo = lj_meta_lookup(L, tviscdata(o1) ? o1 : o2, mm);
+    if (LJ_UNLIKELY(tvisnil(mo))) goto err;
+    return mmcall(L, cont, mo, o1, o2);
+  } else if (itype(o1) == itype(o2)) {  /* Never called with two numbers. */
     if (tvisstr(o1) && tvisstr(o2)) {
       int32_t res = lj_str_cmp(strV(o1), strV(o2));
       return cast(TValue *, (intptr_t)(((op&2) ? res <= 0 : res < 0) ^ (op&1)));
diff --git a/src/lj_meta.h b/src/lj_meta.h
index 3854c8a0..687e6c08 100644
--- a/src/lj_meta.h
+++ b/src/lj_meta.h
@@ -26,6 +26,7 @@ LJ_FUNCA TValue *lj_meta_arith(lua_State *L, TValue *ra, cTValue *rb,
 LJ_FUNCA TValue *lj_meta_cat(lua_State *L, TValue *top, int left);
 LJ_FUNCA TValue * LJ_FASTCALL lj_meta_len(lua_State *L, cTValue *o);
 LJ_FUNCA TValue *lj_meta_equal(lua_State *L, GCobj *o1, GCobj *o2, int ne);
+LJ_FUNCA TValue * LJ_FASTCALL lj_meta_equal_cd(lua_State *L, BCIns ins);
 LJ_FUNCA TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op);
 LJ_FUNCA void lj_meta_call(lua_State *L, TValue *func, TValue *top);
 LJ_FUNCA void LJ_FASTCALL lj_meta_for(lua_State *L, TValue *base);
diff --git a/src/lj_obj.h b/src/lj_obj.h
index f49b12f9..1bd50809 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -434,7 +434,7 @@ enum {
 
 #define setvmstate(g, st)	((g)->vmstate = ~LJ_VMST_##st)
 
-/* Metamethods. */
+/* Metamethods. ORDER MM */
 #ifdef LUAJIT_ENABLE_LUA52COMPAT
 #define MMDEF_52(_) _(pairs) _(ipairs)
 #else
diff --git a/src/lj_record.c b/src/lj_record.c
index 3e5d3c89..2d92987e 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -812,6 +812,23 @@ static void rec_mm_comp(jit_State *J, RecordIndex *ix, int op)
   }
 }
 
+#if LJ_HASFFI
+/* Setup call to cdata comparison metamethod. */
+static void rec_mm_comp_cdata(jit_State *J, RecordIndex *ix, int op, MMS mm)
+{
+  if (tref_iscdata(ix->val)) {
+    ix->tab = ix->val;
+    copyTV(J->L, &ix->tabv, &ix->valv);
+  } else {
+    lua_assert(tref_iscdata(ix->key));
+    ix->tab = ix->key;
+    copyTV(J->L, &ix->tabv, &ix->keyv);
+  }
+  lj_record_mm_lookup(J, ix, mm);
+  rec_mm_callcomp(J, ix, op);
+}
+#endif
+
 /* -- Indexed access ------------------------------------------------------ */
 
 /* Record bounds-check. */
@@ -1410,6 +1427,12 @@ void lj_record_ins(jit_State *J)
   /* -- Comparison ops ---------------------------------------------------- */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
+#if LJ_HASFFI
+    if (tref_iscdata(ra) || tref_iscdata(rc)) {
+      rec_mm_comp_cdata(J, &ix, op, ((int)op & 2) ? MM_le : MM_lt);
+      break;
+    }
+#endif
     /* Emit nothing for two numeric or string consts. */
     if (!(tref_isk2(ra,rc) && tref_isnumber_str(ra) && tref_isnumber_str(rc))) {
       IRType ta = tref_isinteger(ra) ? IRT_INT : tref_type(ra);
@@ -1452,6 +1475,12 @@ void lj_record_ins(jit_State *J)
   case BC_ISEQS: case BC_ISNES:
   case BC_ISEQN: case BC_ISNEN:
   case BC_ISEQP: case BC_ISNEP:
+#if LJ_HASFFI
+    if (tref_iscdata(ra) || tref_iscdata(rc)) {
+      rec_mm_comp_cdata(J, &ix, op, MM_eq);
+      break;
+    }
+#endif
     /* Emit nothing for two non-table, non-udata consts. */
     if (!(tref_isk2(ra, rc) && !(tref_istab(ra) || tref_isudata(ra)))) {
       int diff;
-- 
cgit v1.2.3-55-g6feb