diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 6d45c7fde7..ca37229744 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,44 +1,44 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,50,51,0,0,0,1,0,0,10,0,13,0, -22,0,27,0,40,0,47,0,51,0,55,0,58,0,65,0,72,0,77,0,82, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,51,51,0,0,0,1,0,0,10,0,13,0, +22,0,27,0,34,0,38,0,42,0,45,0,52,0,59,0,64,0,77,0,82, 0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0, 165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144, 1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3, 243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35,37, 109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,64,99, -111,110,100,72,112,97,114,97,109,101,116,101,114,105,122,101,66,108,101,116,114, -101,99,63,97,110,100,63,108,101,116,62,111,114,66,100,101,102,105,110,101,66, -117,110,108,101,115,115,64,108,101,116,42,64,119,104,101,110,65,113,117,111,116, +111,110,100,66,108,101,116,114,101,99,63,97,110,100,63,108,101,116,62,111,114, +66,100,101,102,105,110,101,66,117,110,108,101,115,115,64,108,101,116,42,72,112, +97,114,97,109,101,116,101,114,105,122,101,64,119,104,101,110,65,113,117,111,116, 101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35, 37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120, 61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101, 99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97, 109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101, -102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,241,81,0,0,95, +102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,56,85,0,0,95, 159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2,2, -2,5,2,2,2,7,2,2,2,8,2,2,2,6,2,2,2,10,2,2,2, -9,2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,241, -81,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2, -2,3,96,11,11,8,240,241,81,0,0,16,0,96,38,11,8,240,241,81,0, +2,12,2,2,2,6,2,2,2,7,2,2,2,5,2,2,2,9,2,2,2, +8,2,2,2,10,2,2,2,11,2,2,2,13,2,2,97,37,11,8,240,56, +85,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2, +2,3,96,38,11,8,240,56,85,0,0,16,0,96,11,11,8,240,56,85,0, 0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114, -101,8,32,8,31,8,30,8,29,8,28,93,8,224,248,81,0,0,95,9,8, -224,248,81,0,0,2,2,27,248,22,147,4,195,249,22,140,4,80,158,39,36, +101,8,32,8,31,8,30,8,29,8,28,93,8,224,63,85,0,0,95,9,8, +224,63,85,0,0,2,2,27,248,22,147,4,195,249,22,140,4,80,158,39,36, 251,22,81,2,17,248,22,96,199,12,249,22,71,2,18,248,22,98,201,27,248, 22,147,4,195,249,22,140,4,80,158,39,36,251,22,81,2,17,248,22,96,199, 249,22,71,2,18,248,22,98,201,12,27,248,22,73,248,22,147,4,196,28,248, 22,79,193,20,15,159,37,36,37,28,248,22,79,248,22,73,194,248,22,72,193, 249,22,140,4,80,158,39,36,251,22,81,2,17,248,22,72,199,249,22,71,2, -7,248,22,73,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,50,57,48,54,16,4,11,11, -2,20,3,1,8,101,110,118,49,50,57,48,55,93,8,224,249,81,0,0,95, -9,8,224,249,81,0,0,2,2,27,248,22,73,248,22,147,4,196,28,248,22, +6,248,22,73,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28, +16,4,11,11,2,19,3,1,8,101,110,118,49,51,49,57,56,16,4,11,11, +2,20,3,1,8,101,110,118,49,51,49,57,57,93,8,224,64,85,0,0,95, +9,8,224,64,85,0,0,2,2,27,248,22,73,248,22,147,4,196,28,248,22, 79,193,20,15,159,37,36,37,28,248,22,79,248,22,73,194,248,22,72,193,249, 22,140,4,80,158,39,36,250,22,81,2,21,248,22,81,249,22,81,248,22,81, -2,22,248,22,72,201,251,22,81,2,17,2,22,2,22,249,22,71,2,9,248, +2,22,248,22,72,201,251,22,81,2,17,2,22,2,22,249,22,71,2,8,248, 22,73,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11, -11,2,19,3,1,8,101,110,118,49,50,57,48,57,16,4,11,11,2,20,3, -1,8,101,110,118,49,50,57,49,48,93,8,224,250,81,0,0,95,9,8,224, -250,81,0,0,2,2,248,22,147,4,193,27,248,22,147,4,194,249,22,71,248, +11,2,19,3,1,8,101,110,118,49,51,50,48,49,16,4,11,11,2,20,3, +1,8,101,110,118,49,51,50,48,50,93,8,224,65,85,0,0,95,9,8,224, +65,85,0,0,2,2,248,22,147,4,193,27,248,22,147,4,194,249,22,71,248, 22,81,248,22,72,196,248,22,73,195,27,248,22,73,248,22,147,4,23,197,1, 249,22,140,4,80,158,39,36,28,248,22,56,248,22,141,4,248,22,72,23,198, 2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,147,4, @@ -52,7 +52,7 @@ 37,47,9,222,33,43,248,22,147,4,248,22,72,201,248,22,73,198,27,248,22, 73,248,22,147,4,196,27,248,22,147,4,248,22,72,195,249,22,140,4,80,158, 40,36,28,248,22,79,195,250,22,82,2,21,9,248,22,73,199,250,22,81,2, -8,248,22,81,248,22,72,199,250,22,82,2,12,248,22,73,201,248,22,73,202, +7,248,22,81,248,22,72,199,250,22,82,2,11,248,22,73,201,248,22,73,202, 27,248,22,73,248,22,147,4,23,197,1,27,249,22,1,22,85,249,22,2,22, 147,4,248,22,147,4,248,22,72,199,249,22,140,4,80,158,40,36,251,22,81, 1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109, @@ -67,9 +67,9 @@ 26,248,22,73,202,251,22,81,2,17,28,249,22,185,8,248,22,141,4,248,22, 72,200,64,101,108,115,101,10,248,22,72,197,250,22,82,2,21,9,248,22,73, 200,249,22,71,2,4,248,22,73,202,100,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,50,57,51,50,16,4,11,11, -2,20,3,1,8,101,110,118,49,50,57,51,51,93,8,224,251,81,0,0,18, -16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,251,81,0,0,2, +16,4,11,11,2,19,3,1,8,101,110,118,49,51,50,50,52,16,4,11,11, +2,20,3,1,8,101,110,118,49,51,50,50,53,93,8,224,66,85,0,0,18, +16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,66,85,0,0,2, 2,27,248,22,73,248,22,147,4,196,249,22,140,4,80,158,39,36,28,248,22, 56,248,22,141,4,248,22,72,197,250,22,81,2,27,248,22,81,248,22,72,199, 248,22,96,198,27,248,22,141,4,248,22,72,197,250,22,81,2,27,248,22,81, @@ -81,32 +81,32 @@ 11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2, 11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11, 11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36, -36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,11,89,162,8,44, +36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,10,89,162,8,44, 37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5, 2,13,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2, -3,16,0,11,16,5,2,7,89,162,8,44,37,53,9,223,0,33,36,36,20, -105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,9,89,162,8,44,37, +3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,36,36,20, +105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,8,89,162,8,44,37, 56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16, -5,2,8,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1, -2,3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,44,36, -20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,89,162,8,44,37,54, -9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,5, +5,2,7,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1, +2,3,16,0,11,16,5,2,5,89,162,8,44,37,53,9,223,0,33,44,36, +20,105,159,36,16,1,2,3,16,0,11,16,5,2,11,89,162,8,44,37,54, +9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,12, 89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16, 0,11,16,5,2,4,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159, -36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54,9, +36,16,1,2,3,16,1,33,49,11,16,5,2,9,89,162,8,44,37,54,9, 223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15, 2,16,93,2,15,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2024); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,50,72,0,0,0,1,0,0,8,0,21,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,51,72,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200, 0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1, -143,1,149,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,227,2,61, -4,102,4,175,5,5,6,91,6,190,6,18,7,31,7,180,8,27,9,111,9, -124,9,125,10,72,11,85,11,153,15,148,16,37,17,22,18,4,19,11,19,19, -19,27,19,152,19,166,19,151,21,253,21,19,22,35,22,239,23,86,24,100,24, -182,25,119,27,128,27,137,27,163,27,18,28,0,0,36,31,0,0,67,35,37, +143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,227,2,61, +4,102,4,175,5,5,6,95,6,204,6,32,7,45,7,178,7,160,8,244,8, +1,9,22,10,237,10,250,10,142,15,167,16,56,17,54,18,49,19,56,19,64, +19,72,19,197,19,211,19,216,21,81,24,103,24,119,24,71,26,174,26,188,26, +14,28,211,29,220,29,229,29,255,29,128,30,0,0,148,33,0,0,67,35,37, 117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115, 98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45, 99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45, @@ -125,10 +125,10 @@ 111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110,100,111,119,115, 6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104, 32,115,116,114,105,110,103,6,29,29,126,97,58,32,105,110,118,97,108,105,100, -32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32,126,115,65,99,108, -111,111,112,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32, -110,111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32, -111,102,58,32,126,115,6,4,4,46,114,107,116,6,3,3,46,115,115,6,42, +32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32,126,115,6,42,42, +126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111, +117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111,102,58,32,126,115, +65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46,115,115,6,42, 42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109, 41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, 103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115,116, @@ -180,323 +180,353 @@ 195,2,28,248,22,140,14,23,195,2,10,248,22,141,14,23,195,2,11,12,250, 22,155,9,23,196,2,2,23,23,197,2,28,248,22,140,14,23,195,2,12,248, 22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24,23,200,1,23, -201,1,247,22,23,87,94,28,28,248,22,182,13,23,195,2,10,28,248,22,178, -6,23,195,2,28,248,22,140,14,23,195,2,10,248,22,141,14,23,195,2,11, -12,250,22,155,9,23,196,2,2,23,23,197,2,28,248,22,140,14,23,195,2, -12,248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24,23,200, -1,23,201,1,247,22,23,87,94,87,94,28,28,248,22,182,13,23,195,2,10, -28,248,22,178,6,23,195,2,28,248,22,140,14,23,195,2,10,248,22,141,14, -23,195,2,11,12,250,22,155,9,195,2,23,23,197,2,28,248,22,140,14,23, -195,2,12,248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24, -199,23,201,1,247,22,23,249,22,3,89,162,8,44,37,50,9,223,2,33,38, -196,87,94,28,28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2, -28,248,22,140,14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155, -9,2,7,2,23,23,196,2,28,248,22,140,14,23,194,2,12,248,22,134,12, -249,22,140,11,248,22,143,7,250,22,162,7,2,24,2,7,23,200,1,247,22, -23,32,41,89,162,8,44,41,59,2,25,222,33,42,28,248,22,79,23,197,2, -87,94,23,196,1,28,23,197,2,196,87,94,23,197,1,248,22,134,12,249,22, -173,11,251,22,162,7,2,26,2,7,28,248,22,79,23,203,2,87,94,23,202, -1,23,201,1,250,22,1,22,136,14,23,204,1,23,205,1,23,200,1,247,22, -23,27,249,22,136,14,248,22,72,23,200,2,23,197,2,28,248,22,131,14,23, -194,2,27,250,22,1,22,136,14,23,197,1,23,200,2,28,248,22,131,14,23, -194,2,192,87,94,23,193,1,27,248,22,73,23,200,1,28,248,22,79,23,194, -2,87,94,23,193,1,28,23,200,2,199,87,94,23,200,1,248,22,134,12,249, -22,173,11,251,22,162,7,2,26,2,7,28,248,22,79,23,206,2,87,94,23, -205,1,23,204,1,250,22,1,22,136,14,23,207,1,23,208,1,23,203,1,247, -22,23,27,249,22,136,14,248,22,72,23,197,2,23,200,2,28,248,22,131,14, -23,194,2,27,250,22,1,22,136,14,23,197,1,202,28,248,22,131,14,193,192, -252,2,41,202,203,204,248,22,73,200,206,252,2,41,201,202,203,248,22,73,199, -205,87,94,23,193,1,27,248,22,73,23,199,1,28,248,22,79,23,194,2,87, -94,23,193,1,28,23,199,2,198,87,94,23,199,1,248,22,134,12,249,22,173, -11,251,22,162,7,2,26,2,7,28,248,22,79,23,205,2,87,94,23,204,1, -23,203,1,250,22,1,22,136,14,23,206,1,23,207,1,23,202,1,247,22,23, -27,249,22,136,14,248,22,72,23,197,2,23,199,2,28,248,22,131,14,23,194, -2,27,250,22,1,22,136,14,23,197,1,201,28,248,22,131,14,193,192,252,2, -41,201,202,203,248,22,73,200,205,252,2,41,200,201,202,248,22,73,199,204,87, -94,87,94,87,94,28,28,248,22,182,13,193,10,28,248,22,178,6,193,28,248, -22,140,14,193,10,248,22,141,14,193,11,12,250,22,155,9,2,7,2,23,195, -28,248,22,140,14,193,12,248,22,134,12,249,22,140,11,248,22,143,7,250,22, -162,7,2,24,2,7,199,247,22,23,249,22,3,32,0,89,162,8,44,37,49, -9,222,33,40,195,27,247,22,160,14,252,2,41,197,198,199,197,11,87,94,28, +201,1,247,22,23,27,23,194,1,87,94,28,28,248,22,182,13,23,196,2,10, +28,248,22,178,6,23,196,2,28,248,22,140,14,23,196,2,10,248,22,141,14, +23,196,2,11,12,250,22,155,9,23,196,2,2,23,23,198,2,28,248,22,140, +14,23,196,2,12,248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7, +2,24,23,200,1,23,202,1,247,22,23,87,94,27,193,27,23,196,1,87,94, +28,28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2,28,248,22, +140,14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155,9,23,197, +2,2,23,23,196,2,28,248,22,140,14,23,194,2,12,248,22,134,12,249,22, +140,11,248,22,143,7,250,22,162,7,2,24,23,201,1,23,200,1,247,22,23, +249,22,3,89,162,8,44,37,51,9,223,2,33,38,196,87,94,28,28,248,22, +182,13,23,194,2,10,28,248,22,178,6,23,194,2,28,248,22,140,14,23,194, +2,10,248,22,141,14,23,194,2,11,12,250,22,155,9,2,7,2,23,23,196, +2,28,248,22,140,14,23,194,2,12,248,22,134,12,249,22,140,11,248,22,143, +7,250,22,162,7,2,24,2,7,23,200,1,247,22,23,32,41,89,162,8,44, +41,56,2,26,222,33,42,28,248,22,79,23,197,2,87,94,23,196,1,28,23, +197,2,196,87,94,23,197,1,248,22,134,12,249,22,173,11,251,22,162,7,2, +25,2,7,28,248,22,79,23,203,2,87,94,23,202,1,23,201,1,250,22,1, +22,136,14,23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,136,14,248, +22,72,23,200,2,23,197,2,28,248,22,131,14,23,194,2,27,250,22,1,22, +136,14,23,197,1,199,28,248,22,131,14,193,192,252,2,41,199,200,201,248,22, +73,203,203,252,2,41,198,199,200,248,22,73,202,202,87,94,87,94,87,94,28, 28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2,28,248,22,140, -14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155,9,2,9,2, +14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155,9,2,7,2, 23,23,196,2,28,248,22,140,14,23,194,2,12,248,22,134,12,249,22,140,11, -248,22,143,7,250,22,162,7,2,24,2,9,23,200,1,247,22,23,32,45,89, -162,8,44,42,59,2,25,222,33,46,28,248,22,79,23,198,2,87,95,23,197, -1,23,194,1,28,23,198,2,197,87,94,23,198,1,248,22,134,12,249,22,173, -11,251,22,162,7,2,26,2,9,28,248,22,79,23,204,2,87,94,23,203,1, -23,202,1,250,22,1,22,136,14,23,205,1,23,206,1,23,200,1,247,22,23, -27,249,22,136,14,248,22,72,23,201,2,23,198,2,28,248,22,131,14,23,194, -2,27,250,22,1,22,136,14,23,197,1,23,201,2,28,248,22,131,14,23,194, -2,28,23,196,2,28,28,248,22,130,14,249,22,136,14,195,198,10,27,27,28, -248,22,182,13,198,248,22,186,13,198,197,27,248,22,181,6,194,28,249,22,180, -3,194,40,28,249,22,184,6,2,27,249,22,136,7,197,249,22,168,3,198,40, -249,22,137,7,250,22,136,7,198,36,249,22,168,3,199,40,2,28,11,11,28, -23,193,2,248,22,130,14,249,22,136,14,196,23,196,1,11,192,253,2,45,200, -201,202,203,248,22,73,205,28,205,205,198,192,253,2,45,200,201,202,203,248,22, -73,205,205,253,2,45,199,200,201,202,248,22,73,204,204,87,95,87,94,28,28, -248,22,182,13,193,10,28,248,22,178,6,193,28,248,22,140,14,193,10,248,22, -141,14,193,11,12,250,22,155,9,2,9,2,23,195,28,248,22,140,14,193,12, -248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24,2,9,199, -247,22,23,87,94,87,94,28,28,248,22,182,13,23,195,2,10,28,248,22,178, -6,23,195,2,28,248,22,140,14,23,195,2,10,248,22,141,14,23,195,2,11, -12,250,22,155,9,2,9,2,23,23,197,2,28,248,22,140,14,23,195,2,12, -248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24,2,9,23, -201,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,222,33,44,23, -197,2,249,22,136,14,27,247,22,160,14,253,2,45,23,199,2,201,23,203,1, -23,204,1,23,199,1,11,194,32,48,89,162,44,44,8,29,2,25,222,33,49, -28,248,22,79,23,200,2,87,95,23,199,1,23,198,1,28,23,200,2,199,87, -94,23,200,1,248,23,196,1,251,22,162,7,2,26,23,199,1,28,248,22,79, -23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,136,14,23,204,1,23, -205,1,23,198,1,27,249,22,136,14,248,22,72,23,203,2,23,199,2,28,248, -22,131,14,23,194,2,27,250,22,1,22,136,14,23,197,1,23,202,2,28,248, -22,131,14,23,194,2,28,23,200,2,28,28,248,22,130,14,249,22,136,14,23, -196,2,23,203,2,10,27,27,28,248,22,182,13,23,203,2,248,22,186,13,23, -203,2,23,202,2,27,248,22,181,6,194,28,249,22,180,3,194,40,28,249,22, -184,6,2,27,249,22,136,7,197,249,22,168,3,198,40,249,22,137,7,250,22, -136,7,198,36,249,22,168,3,199,40,2,28,11,11,28,23,193,2,248,22,130, -14,249,22,136,14,23,197,2,23,196,1,11,192,27,248,22,73,23,203,1,27, -28,23,204,2,87,94,23,195,1,23,204,1,87,94,23,204,1,23,195,1,28, -248,22,79,23,195,2,87,95,23,202,1,23,194,1,28,23,193,2,192,87,94, -23,193,1,248,23,200,1,251,22,162,7,2,26,23,203,1,28,248,22,79,23, -207,2,87,94,23,206,1,23,205,1,250,22,1,22,136,14,23,208,1,23,209, -1,23,202,1,27,249,22,136,14,248,22,72,23,198,2,23,203,2,28,248,22, -131,14,23,194,2,27,250,22,1,22,136,14,23,197,1,23,206,2,28,248,22, -131,14,23,194,2,28,23,204,2,28,28,248,22,130,14,249,22,136,14,195,206, -10,27,27,28,248,22,182,13,206,248,22,186,13,206,205,27,248,22,181,6,194, -28,249,22,180,3,194,40,28,249,22,184,6,2,27,249,22,136,7,197,249,22, -168,3,198,40,249,22,137,7,250,22,136,7,198,36,249,22,168,3,199,40,2, -28,11,11,28,23,193,2,248,22,130,14,249,22,136,14,196,23,196,1,11,192, -26,8,2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,73,204,28,202, -202,200,192,26,8,2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,73, -204,202,26,8,2,48,205,206,23,15,23,16,23,17,23,18,248,22,73,203,201, -192,27,248,22,73,23,203,1,28,248,22,79,23,194,2,87,95,23,201,1,23, -193,1,28,23,203,2,202,87,94,23,203,1,248,23,199,1,251,22,162,7,2, -26,23,202,1,28,248,22,79,23,206,2,87,94,23,205,1,23,204,1,250,22, -1,22,136,14,23,207,1,23,208,1,23,201,1,27,249,22,136,14,248,22,72, -23,197,2,23,202,2,28,248,22,131,14,23,194,2,27,250,22,1,22,136,14, -23,197,1,23,205,2,28,248,22,131,14,23,194,2,28,23,203,2,28,28,248, -22,130,14,249,22,136,14,195,205,10,27,27,28,248,22,182,13,205,248,22,186, -13,205,204,27,248,22,181,6,194,28,249,22,180,3,194,40,28,249,22,184,6, -2,27,249,22,136,7,197,249,22,168,3,198,40,249,22,137,7,250,22,136,7, -198,36,249,22,168,3,199,40,2,28,11,11,28,23,193,2,248,22,130,14,249, -22,136,14,196,23,196,1,11,192,26,8,2,48,205,206,23,15,23,16,23,17, -23,18,248,22,73,203,28,23,20,23,20,200,192,26,8,2,48,205,206,23,15, -23,16,23,17,23,18,248,22,73,203,23,20,26,8,2,48,204,205,206,23,15, -23,16,23,17,248,22,73,202,23,19,87,94,23,193,1,27,248,22,73,23,202, -1,28,248,22,79,23,194,2,87,95,23,200,1,23,193,1,28,23,202,2,201, -87,94,23,202,1,248,23,198,1,251,22,162,7,2,26,23,201,1,28,248,22, -79,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,136,14,23,206,1, -23,207,1,23,200,1,27,249,22,136,14,248,22,72,23,197,2,23,201,2,28, -248,22,131,14,23,194,2,27,250,22,1,22,136,14,23,197,1,23,204,2,28, -248,22,131,14,23,194,2,28,23,202,2,28,28,248,22,130,14,249,22,136,14, -195,204,10,27,27,28,248,22,182,13,204,248,22,186,13,204,203,27,248,22,181, -6,194,28,249,22,180,3,194,40,28,249,22,184,6,2,27,249,22,136,7,197, -249,22,168,3,198,40,249,22,137,7,250,22,136,7,198,36,249,22,168,3,199, -40,2,28,11,11,28,23,193,2,248,22,130,14,249,22,136,14,196,23,196,1, -11,192,26,8,2,48,204,205,206,23,15,23,16,23,17,248,22,73,203,28,23, -19,23,19,200,192,26,8,2,48,204,205,206,23,15,23,16,23,17,248,22,73, -203,23,19,26,8,2,48,203,204,205,206,23,15,23,16,248,22,73,202,23,18, -27,247,22,160,14,28,248,22,79,23,194,2,87,94,23,198,1,248,23,196,1, -251,22,162,7,2,26,23,199,1,28,248,22,79,23,203,2,87,94,23,202,1, -23,201,1,250,22,1,22,136,14,23,204,1,23,205,1,23,198,1,27,249,22, -136,14,248,22,72,23,197,2,23,199,2,28,248,22,131,14,23,194,2,27,250, -22,1,22,136,14,23,197,1,23,202,2,28,248,22,131,14,23,194,2,28,23, -200,2,28,28,248,22,130,14,249,22,136,14,195,202,10,27,27,28,248,22,182, -13,202,248,22,186,13,202,201,27,248,22,181,6,194,28,249,22,180,3,194,40, -28,249,22,184,6,2,27,249,22,136,7,197,249,22,168,3,198,40,249,22,137, -7,250,22,136,7,198,36,249,22,168,3,199,40,2,28,11,11,28,23,193,2, -248,22,130,14,249,22,136,14,196,23,196,1,11,192,26,8,2,48,202,203,204, -205,206,23,15,248,22,73,203,200,192,26,8,2,48,202,203,204,205,206,23,15, -248,22,73,203,11,26,8,2,48,201,202,203,204,205,206,248,22,73,202,11,87, -95,28,28,248,22,183,13,23,194,2,10,28,248,22,182,13,23,194,2,10,28, -248,22,178,6,23,194,2,28,248,22,140,14,23,194,2,10,248,22,141,14,23, -194,2,11,12,252,22,155,9,23,200,2,2,29,36,23,198,2,23,199,2,28, -28,248,22,178,6,23,195,2,10,248,22,167,7,23,195,2,87,94,23,194,1, -12,252,22,155,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39,11, -90,161,39,36,11,248,22,139,14,23,197,2,87,94,23,195,1,87,94,28,192, -12,250,22,156,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159,38, -11,90,161,38,36,11,87,95,28,28,248,22,183,13,23,196,2,10,28,248,22, -182,13,23,196,2,10,28,248,22,178,6,23,196,2,28,248,22,140,14,23,196, -2,10,248,22,141,14,23,196,2,11,12,252,22,155,9,2,11,2,29,36,23, -200,2,23,201,2,28,28,248,22,178,6,23,197,2,10,248,22,167,7,23,197, -2,12,252,22,155,9,2,11,2,30,37,23,200,2,23,201,2,91,159,39,11, -90,161,39,36,11,248,22,139,14,23,199,2,87,94,23,195,1,87,94,28,192, -12,250,22,156,9,2,11,2,31,23,201,2,249,22,7,194,195,27,249,22,128, -14,250,22,180,14,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46, -93,42,124,41,36,34,248,22,188,13,23,201,1,28,248,22,178,6,23,203,2, -249,22,191,7,23,204,1,8,63,23,202,1,28,248,22,183,13,23,199,2,248, -22,184,13,23,199,1,87,94,23,198,1,247,22,185,13,28,248,22,182,13,194, -249,22,136,14,195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28,248, -22,183,13,23,196,2,10,28,248,22,182,13,23,196,2,10,28,248,22,178,6, -23,196,2,28,248,22,140,14,23,196,2,10,248,22,141,14,23,196,2,11,12, -252,22,155,9,2,12,2,29,36,23,200,2,23,201,2,28,28,248,22,178,6, -23,197,2,10,248,22,167,7,23,197,2,12,252,22,155,9,2,12,2,30,37, -23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,248,22,139,14,23,199, -2,87,94,23,195,1,87,94,28,192,12,250,22,156,9,2,12,2,31,23,201, -2,249,22,7,194,195,27,249,22,128,14,249,22,177,7,250,22,181,14,0,9, -35,114,120,35,34,91,46,93,34,248,22,188,13,23,203,1,6,1,1,95,28, -248,22,178,6,23,202,2,249,22,191,7,23,203,1,8,63,23,201,1,28,248, -22,183,13,23,199,2,248,22,184,13,23,199,1,87,94,23,198,1,247,22,185, -13,28,248,22,182,13,194,249,22,136,14,195,194,192,249,247,22,145,5,194,11, -249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247,22,162,14, -249,80,158,39,49,28,23,195,2,27,248,22,132,8,6,11,11,80,76,84,67, -79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1, -250,22,136,14,248,22,158,14,69,97,100,100,111,110,45,100,105,114,247,22,130, -8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42,54,37,250, -22,85,23,203,1,248,22,81,248,22,158,14,72,99,111,108,108,101,99,116,115, -45,100,105,114,23,204,1,28,193,249,22,71,195,194,192,32,58,89,162,8,44, -39,8,31,2,20,222,33,59,27,249,22,169,14,23,197,2,23,198,2,28,23, -193,2,87,94,23,196,1,27,248,22,96,23,195,2,27,27,248,22,105,23,197, -1,27,249,22,169,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1, -27,248,22,96,23,195,2,27,27,248,22,105,23,197,1,27,249,22,169,14,23, -205,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,96,23,195,2, -27,27,248,22,105,23,197,1,27,249,22,169,14,23,209,2,23,196,2,28,23, -193,2,87,94,23,194,1,27,248,22,96,23,195,2,27,27,248,22,105,23,197, -1,27,249,22,169,14,23,213,2,23,196,2,28,23,193,2,87,94,23,194,1, -27,248,22,96,23,195,2,27,250,2,58,23,215,2,23,216,1,248,22,105,23, -199,1,28,249,22,173,7,23,196,2,2,32,249,22,85,23,214,2,194,249,22, -71,248,22,191,13,23,197,1,194,87,95,23,211,1,23,193,1,28,249,22,173, -7,23,196,2,2,32,249,22,85,23,212,2,9,249,22,71,248,22,191,13,23, -197,1,9,28,249,22,173,7,23,196,2,2,32,249,22,85,23,210,2,194,249, -22,71,248,22,191,13,23,197,1,194,87,94,23,193,1,28,249,22,173,7,23, -196,2,2,32,249,22,85,23,208,2,9,249,22,71,248,22,191,13,23,197,1, -9,28,249,22,173,7,23,196,2,2,32,249,22,85,23,206,2,194,249,22,71, -248,22,191,13,23,197,1,194,87,94,23,193,1,28,249,22,173,7,23,196,2, -2,32,249,22,85,23,204,2,9,249,22,71,248,22,191,13,23,197,1,9,28, -249,22,173,7,23,196,2,2,32,249,22,85,23,202,2,194,249,22,71,248,22, -191,13,23,197,1,194,87,94,23,193,1,28,249,22,173,7,23,196,2,2,32, -249,22,85,23,200,2,9,249,22,71,248,22,191,13,23,197,1,9,28,249,22, -173,7,23,196,2,2,32,249,22,85,197,194,87,94,23,196,1,249,22,71,248, -22,191,13,23,197,1,194,87,94,23,193,1,28,249,22,173,7,23,198,2,2, -32,249,22,85,195,9,87,94,23,194,1,249,22,71,248,22,191,13,23,199,1, -9,87,95,28,28,248,22,167,7,194,10,248,22,178,6,194,12,250,22,155,9, -2,15,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115, -116,114,105,110,103,196,28,28,248,22,80,195,249,22,4,22,182,13,196,11,12, -250,22,155,9,2,15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104, -115,197,250,2,58,197,195,28,248,22,178,6,197,248,22,190,7,197,196,32,61, -89,162,8,44,39,53,70,102,111,117,110,100,45,101,120,101,99,222,33,64,32, -62,89,162,8,44,40,58,64,110,101,120,116,222,33,63,27,248,22,144,14,23, -196,2,28,249,22,187,8,23,195,2,23,197,1,11,28,248,22,140,14,23,194, -2,27,249,22,136,14,23,197,1,23,196,1,28,23,197,2,91,159,39,11,90, -161,39,36,11,248,22,139,14,23,197,2,87,95,23,195,1,23,194,1,27,28, -23,202,2,27,248,22,144,14,23,199,2,28,249,22,187,8,23,195,2,23,200, -2,11,28,248,22,140,14,23,194,2,250,2,61,23,205,2,23,206,2,249,22, -136,14,23,200,2,23,198,1,250,2,61,23,205,2,23,206,2,23,196,1,11, -28,23,193,2,192,87,94,23,193,1,27,28,248,22,182,13,23,196,2,27,249, -22,136,14,23,198,2,23,205,2,28,28,248,22,131,14,193,10,248,22,130,14, -193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,203,2,11,27,248, -22,144,14,23,200,2,28,249,22,187,8,23,195,2,23,201,1,11,28,248,22, -140,14,23,194,2,250,2,61,23,206,1,23,207,1,249,22,136,14,23,201,1, -23,198,1,250,2,61,205,206,195,192,87,94,23,194,1,28,23,196,2,91,159, -39,11,90,161,39,36,11,248,22,139,14,23,197,2,87,95,23,195,1,23,194, -1,27,28,23,201,2,27,248,22,144,14,23,199,2,28,249,22,187,8,23,195, -2,23,200,2,11,28,248,22,140,14,23,194,2,250,2,61,23,204,2,23,205, -2,249,22,136,14,23,200,2,23,198,1,250,2,61,23,204,2,23,205,2,23, -196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,182,13,23,196, -2,27,249,22,136,14,23,198,2,23,204,2,28,28,248,22,131,14,193,10,248, -22,130,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,202,2, -11,27,248,22,144,14,23,200,2,28,249,22,187,8,23,195,2,23,201,1,11, -28,248,22,140,14,23,194,2,250,2,61,23,205,1,23,206,1,249,22,136,14, -23,201,1,23,198,1,250,2,61,204,205,195,192,28,23,193,2,91,159,39,11, -90,161,39,36,11,248,22,139,14,23,199,2,87,95,23,195,1,23,194,1,27, -28,23,198,2,251,2,62,23,198,2,23,203,2,23,201,2,23,202,2,11,28, -23,193,2,192,87,94,23,193,1,27,28,248,22,182,13,195,27,249,22,136,14, -197,200,28,28,248,22,131,14,193,10,248,22,130,14,193,192,11,11,28,192,192, -28,198,11,251,2,62,198,203,201,202,194,32,65,89,162,8,44,40,8,31,2, -20,222,33,66,28,248,22,79,23,197,2,11,27,248,22,143,14,248,22,72,23, -199,2,27,249,22,136,14,23,196,1,23,197,2,28,248,22,130,14,23,194,2, -250,2,61,198,199,195,87,94,23,193,1,27,248,22,73,23,200,1,28,248,22, -79,23,194,2,11,27,248,22,143,14,248,22,72,23,196,2,27,249,22,136,14, -23,196,1,23,200,2,28,248,22,130,14,23,194,2,250,2,61,201,202,195,87, +248,22,143,7,250,22,162,7,2,24,2,7,23,200,2,247,22,23,249,22,3, +32,0,89,162,8,44,37,49,9,222,33,40,23,196,2,27,247,22,160,14,27, +23,194,2,28,248,22,79,23,194,2,87,94,23,193,1,248,22,134,12,249,22, +173,11,251,22,162,7,2,25,2,7,28,248,22,79,23,204,2,87,94,23,203, +1,23,202,1,250,22,1,22,136,14,23,205,1,23,206,1,23,201,1,247,22, +23,27,249,22,136,14,248,22,72,23,197,2,23,198,2,28,248,22,131,14,23, +194,2,27,250,22,1,22,136,14,23,197,1,200,28,248,22,131,14,193,192,252, +2,41,200,201,202,248,22,73,200,11,252,2,41,199,200,201,248,22,73,199,11, +87,94,28,28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2,28, +248,22,140,14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155,9, +2,9,2,23,23,196,2,28,248,22,140,14,23,194,2,12,248,22,134,12,249, +22,140,11,248,22,143,7,250,22,162,7,2,24,2,9,23,200,1,247,22,23, +32,45,89,162,8,44,42,59,2,26,222,33,46,28,248,22,79,23,198,2,87, +95,23,197,1,23,194,1,28,23,198,2,197,87,94,23,198,1,248,22,134,12, +249,22,173,11,251,22,162,7,2,25,2,9,28,248,22,79,23,204,2,87,94, +23,203,1,23,202,1,250,22,1,22,136,14,23,205,1,23,206,1,23,200,1, +247,22,23,27,249,22,136,14,248,22,72,23,201,2,23,198,2,28,248,22,131, +14,23,194,2,27,250,22,1,22,136,14,23,197,1,23,201,2,28,248,22,131, +14,23,194,2,28,23,196,2,28,28,248,22,130,14,249,22,136,14,195,198,10, +27,28,248,22,182,13,197,248,22,186,13,197,196,27,248,22,181,6,23,195,2, +27,28,249,22,180,3,23,196,2,40,28,249,22,184,6,2,27,249,22,136,7, +23,199,2,249,22,168,3,23,200,2,40,249,22,137,7,250,22,136,7,23,200, +1,36,249,22,168,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11, +11,28,23,193,2,248,22,130,14,249,22,136,14,198,23,196,1,11,192,253,2, +45,200,201,202,203,248,22,73,205,28,205,205,198,192,253,2,45,200,201,202,203, +248,22,73,205,205,253,2,45,199,200,201,202,248,22,73,204,204,87,95,87,94, +28,28,248,22,182,13,193,10,28,248,22,178,6,193,28,248,22,140,14,193,10, +248,22,141,14,193,11,12,250,22,155,9,2,9,2,23,195,28,248,22,140,14, +193,12,248,22,134,12,249,22,140,11,248,22,143,7,250,22,162,7,2,24,2, +9,199,247,22,23,27,23,195,2,27,23,197,2,87,94,27,23,195,1,87,94, +28,28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2,28,248,22, +140,14,23,194,2,10,248,22,141,14,23,194,2,11,12,250,22,155,9,2,9, +2,23,23,196,2,28,248,22,140,14,23,194,2,12,248,22,134,12,249,22,140, +11,248,22,143,7,250,22,162,7,2,24,2,9,23,200,1,247,22,23,249,22, +3,32,0,89,162,8,44,37,49,9,222,33,44,23,195,1,249,22,136,14,27, +247,22,160,14,253,2,45,23,199,2,201,23,203,1,23,204,1,23,199,1,11, +194,32,48,89,162,44,44,8,29,2,26,222,33,49,28,248,22,79,23,200,2, +87,95,23,199,1,23,198,1,28,23,200,2,199,87,94,23,200,1,248,23,196, +1,251,22,162,7,2,25,23,199,1,28,248,22,79,23,203,2,87,94,23,202, +1,23,201,1,250,22,1,22,136,14,23,204,1,23,205,1,23,198,1,27,249, +22,136,14,248,22,72,23,203,2,23,199,2,28,248,22,131,14,23,194,2,27, +250,22,1,22,136,14,23,197,1,23,202,2,28,248,22,131,14,23,194,2,28, +23,200,2,28,28,248,22,130,14,249,22,136,14,23,196,2,23,203,2,10,27, +28,248,22,182,13,23,202,2,248,22,186,13,23,202,2,23,201,2,27,248,22, +181,6,23,195,2,27,28,249,22,180,3,23,196,2,40,28,249,22,184,6,2, +27,249,22,136,7,23,199,2,249,22,168,3,23,200,2,40,249,22,137,7,250, +22,136,7,23,200,1,36,249,22,168,3,23,201,1,40,2,28,87,95,23,195, +1,23,194,1,11,11,28,23,193,2,248,22,130,14,249,22,136,14,23,199,2, +23,196,1,11,192,27,248,22,73,23,203,1,27,28,23,204,2,87,94,23,195, +1,23,204,1,87,94,23,204,1,23,195,1,28,248,22,79,23,195,2,87,95, +23,202,1,23,194,1,28,23,193,2,192,87,94,23,193,1,248,23,200,1,251, +22,162,7,2,25,23,203,1,28,248,22,79,23,207,2,87,94,23,206,1,23, +205,1,250,22,1,22,136,14,23,208,1,23,209,1,23,202,1,27,249,22,136, +14,248,22,72,23,198,2,23,203,2,28,248,22,131,14,23,194,2,27,250,22, +1,22,136,14,23,197,1,23,206,2,28,248,22,131,14,23,194,2,28,23,204, +2,28,28,248,22,130,14,249,22,136,14,195,206,10,27,28,248,22,182,13,205, +248,22,186,13,205,204,27,248,22,181,6,23,195,2,27,28,249,22,180,3,23, +196,2,40,28,249,22,184,6,2,27,249,22,136,7,23,199,2,249,22,168,3, +23,200,2,40,249,22,137,7,250,22,136,7,23,200,1,36,249,22,168,3,23, +201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22, +130,14,249,22,136,14,198,23,196,1,11,192,26,8,2,48,206,23,15,23,16, +23,17,23,18,23,19,248,22,73,204,28,202,202,200,192,26,8,2,48,206,23, +15,23,16,23,17,23,18,23,19,248,22,73,204,202,26,8,2,48,205,206,23, +15,23,16,23,17,23,18,248,22,73,203,201,192,27,248,22,73,23,203,1,28, +248,22,79,23,194,2,87,95,23,201,1,23,193,1,28,23,203,2,202,87,94, +23,203,1,248,23,199,1,251,22,162,7,2,25,23,202,1,28,248,22,79,23, +206,2,87,94,23,205,1,23,204,1,250,22,1,22,136,14,23,207,1,23,208, +1,23,201,1,27,249,22,136,14,248,22,72,23,197,2,23,202,2,28,248,22, +131,14,23,194,2,27,250,22,1,22,136,14,23,197,1,23,205,2,28,248,22, +131,14,23,194,2,28,23,203,2,28,28,248,22,130,14,249,22,136,14,195,205, +10,27,28,248,22,182,13,204,248,22,186,13,204,203,27,248,22,181,6,23,195, +2,27,28,249,22,180,3,23,196,2,40,28,249,22,184,6,2,27,249,22,136, +7,23,199,2,249,22,168,3,23,200,2,40,249,22,137,7,250,22,136,7,23, +200,1,36,249,22,168,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1, +11,11,28,23,193,2,248,22,130,14,249,22,136,14,198,23,196,1,11,192,26, +8,2,48,205,206,23,15,23,16,23,17,23,18,248,22,73,203,28,23,20,23, +20,200,192,26,8,2,48,205,206,23,15,23,16,23,17,23,18,248,22,73,203, +23,20,26,8,2,48,204,205,206,23,15,23,16,23,17,248,22,73,202,23,19, +87,94,23,193,1,27,248,22,73,23,202,1,28,248,22,79,23,194,2,87,95, +23,200,1,23,193,1,28,23,202,2,201,87,94,23,202,1,248,23,198,1,251, +22,162,7,2,25,23,201,1,28,248,22,79,23,205,2,87,94,23,204,1,23, +203,1,250,22,1,22,136,14,23,206,1,23,207,1,23,200,1,27,249,22,136, +14,248,22,72,23,197,2,23,201,2,28,248,22,131,14,23,194,2,27,250,22, +1,22,136,14,23,197,1,23,204,2,28,248,22,131,14,23,194,2,28,23,202, +2,28,28,248,22,130,14,249,22,136,14,195,204,10,27,28,248,22,182,13,203, +248,22,186,13,203,202,27,248,22,181,6,23,195,2,27,28,249,22,180,3,23, +196,2,40,28,249,22,184,6,2,27,249,22,136,7,23,199,2,249,22,168,3, +23,200,2,40,249,22,137,7,250,22,136,7,23,200,1,36,249,22,168,3,23, +201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22, +130,14,249,22,136,14,198,23,196,1,11,192,26,8,2,48,204,205,206,23,15, +23,16,23,17,248,22,73,203,28,23,19,23,19,200,192,26,8,2,48,204,205, +206,23,15,23,16,23,17,248,22,73,203,23,19,26,8,2,48,203,204,205,206, +23,15,23,16,248,22,73,202,23,18,27,247,22,160,14,27,23,194,2,28,248, +22,79,23,194,2,87,95,23,199,1,23,193,1,248,23,197,1,251,22,162,7, +2,25,23,200,1,28,248,22,79,23,204,2,87,94,23,203,1,23,202,1,250, +22,1,22,136,14,23,205,1,23,206,1,23,199,1,27,249,22,136,14,248,22, +72,23,197,2,23,200,2,28,248,22,131,14,23,194,2,27,250,22,1,22,136, +14,23,197,1,23,203,2,28,248,22,131,14,23,194,2,28,23,201,2,28,28, +248,22,130,14,249,22,136,14,195,203,10,27,28,248,22,182,13,202,248,22,186, +13,202,201,27,248,22,181,6,23,195,2,27,28,249,22,180,3,23,196,2,40, +28,249,22,184,6,2,27,249,22,136,7,23,199,2,249,22,168,3,23,200,2, +40,249,22,137,7,250,22,136,7,23,200,1,36,249,22,168,3,23,201,1,40, +2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,130,14,249, +22,136,14,198,23,196,1,11,192,26,8,2,48,203,204,205,206,23,15,23,16, +248,22,73,203,200,192,26,8,2,48,203,204,205,206,23,15,23,16,248,22,73, +203,11,26,8,2,48,202,203,204,205,206,23,15,248,22,73,202,11,87,95,28, +28,248,22,183,13,23,194,2,10,28,248,22,182,13,23,194,2,10,28,248,22, +178,6,23,194,2,28,248,22,140,14,23,194,2,10,248,22,141,14,23,194,2, +11,12,252,22,155,9,23,200,2,2,29,36,23,198,2,23,199,2,28,28,248, +22,178,6,23,195,2,10,248,22,167,7,23,195,2,87,94,23,194,1,12,252, +22,155,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39,11,90,161, +39,36,11,248,22,139,14,23,197,2,87,94,23,195,1,87,94,28,192,12,250, +22,156,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159,38,11,90, +161,38,36,11,27,23,196,2,27,23,198,2,87,95,28,28,248,22,183,13,23, +195,2,10,28,248,22,182,13,23,195,2,10,28,248,22,178,6,23,195,2,28, +248,22,140,14,23,195,2,10,248,22,141,14,23,195,2,11,12,252,22,155,9, +2,11,2,29,36,23,199,2,23,198,2,28,28,248,22,178,6,23,194,2,10, +248,22,167,7,23,194,2,87,94,23,193,1,12,252,22,155,9,2,11,2,30, +37,23,199,2,23,198,1,91,159,39,11,90,161,39,36,11,248,22,139,14,23, +198,2,87,94,23,195,1,87,94,28,192,12,250,22,156,9,2,11,2,31,23, +200,1,249,22,7,194,195,27,249,22,128,14,250,22,180,14,0,20,35,114,120, +35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,188,13, +23,201,1,28,248,22,178,6,23,203,2,249,22,191,7,23,204,1,8,63,23, +202,1,28,248,22,183,13,23,199,2,248,22,184,13,23,199,1,87,94,23,198, +1,247,22,185,13,28,248,22,182,13,194,249,22,136,14,195,194,192,91,159,38, +11,90,161,38,36,11,27,23,196,2,27,23,198,2,87,95,28,28,248,22,183, +13,23,195,2,10,28,248,22,182,13,23,195,2,10,28,248,22,178,6,23,195, +2,28,248,22,140,14,23,195,2,10,248,22,141,14,23,195,2,11,12,252,22, +155,9,2,12,2,29,36,23,199,2,23,198,2,28,28,248,22,178,6,23,194, +2,10,248,22,167,7,23,194,2,87,94,23,193,1,12,252,22,155,9,2,12, +2,30,37,23,199,2,23,198,1,91,159,39,11,90,161,39,36,11,248,22,139, +14,23,198,2,87,94,23,195,1,87,94,28,192,12,250,22,156,9,2,12,2, +31,23,200,1,249,22,7,194,195,27,249,22,128,14,249,22,177,7,250,22,181, +14,0,9,35,114,120,35,34,91,46,93,34,248,22,188,13,23,203,1,6,1, +1,95,28,248,22,178,6,23,202,2,249,22,191,7,23,203,1,8,63,23,201, +1,28,248,22,183,13,23,199,2,248,22,184,13,23,199,1,87,94,23,198,1, +247,22,185,13,28,248,22,182,13,194,249,22,136,14,195,194,192,249,247,22,145, +5,194,11,249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247, +22,162,14,249,80,158,39,49,28,23,195,2,27,248,22,132,8,6,11,11,80, +76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28, +23,196,1,250,22,136,14,248,22,158,14,69,97,100,100,111,110,45,100,105,114, +247,22,130,8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42, +54,37,250,22,85,23,203,1,248,22,81,248,22,158,14,72,99,111,108,108,101, +99,116,115,45,100,105,114,23,204,1,28,193,249,22,71,195,194,192,32,58,89, +162,8,44,39,8,31,2,20,222,33,59,27,249,22,169,14,23,197,2,23,198, +2,28,23,193,2,87,94,23,196,1,27,248,22,96,23,195,2,27,27,248,22, +105,23,197,1,27,249,22,169,14,23,201,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,96,23,195,2,27,27,248,22,105,23,197,1,27,249,22, +169,14,23,205,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,96, +23,195,2,27,27,248,22,105,23,197,1,27,249,22,169,14,23,209,2,23,196, +2,28,23,193,2,87,94,23,194,1,27,248,22,96,23,195,2,27,27,248,22, +105,23,197,1,27,249,22,169,14,23,213,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,96,23,195,2,27,250,2,58,23,215,2,23,216,1,248, +22,105,23,199,1,28,249,22,173,7,23,196,2,2,32,249,22,85,23,214,2, +194,249,22,71,248,22,191,13,23,197,1,194,87,95,23,211,1,23,193,1,27, +23,195,1,28,249,22,173,7,23,195,2,2,32,249,22,85,23,213,2,9,249, +22,71,248,22,191,13,23,196,1,9,28,249,22,173,7,23,196,2,2,32,249, +22,85,23,210,2,194,249,22,71,248,22,191,13,23,197,1,194,87,94,23,193, +1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249,22,85,23,209,2, +9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173,7,23,196,2,2, +32,249,22,85,23,206,2,194,249,22,71,248,22,191,13,23,197,1,194,87,94, +23,193,1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249,22,85,23, +205,2,9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173,7,23,196, +2,2,32,249,22,85,23,202,2,194,249,22,71,248,22,191,13,23,197,1,194, +87,94,23,193,1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249,22, +85,23,201,2,9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173,7, +23,196,2,2,32,249,22,85,197,194,87,94,23,196,1,249,22,71,248,22,191, +13,23,197,1,194,87,94,23,193,1,27,23,197,1,28,249,22,173,7,23,195, +2,2,32,249,22,85,196,9,87,94,23,195,1,249,22,71,248,22,191,13,23, +196,1,9,87,95,28,28,248,22,167,7,23,195,2,10,248,22,178,6,23,195, +2,12,250,22,155,9,2,15,6,21,21,98,121,116,101,32,115,116,114,105,110, +103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28,248,22,80,23,196, +2,249,22,4,22,182,13,23,197,2,11,12,250,22,155,9,2,15,6,13,13, +108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2,27,28,248,22,178, +6,23,196,2,248,22,190,7,23,196,1,23,195,1,27,249,22,169,14,23,197, +2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,96,23,195,2,27, +27,248,22,105,23,197,1,27,249,22,169,14,23,201,2,23,196,2,28,23,193, +2,87,94,23,194,1,27,248,22,96,23,195,2,27,27,248,22,105,23,197,1, +27,249,22,169,14,23,205,2,23,196,2,28,23,193,2,87,94,23,194,1,27, +248,22,96,23,195,2,27,27,248,22,105,23,197,1,27,249,22,169,14,23,209, +2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,96,23,195,2,27, +27,248,22,105,23,197,1,27,249,22,169,14,23,213,2,23,196,2,28,23,193, +2,87,94,23,194,1,27,248,22,96,23,195,2,27,250,2,58,23,218,2,23, +216,1,248,22,105,23,199,1,28,249,22,173,7,23,196,2,2,32,249,22,85, +23,217,2,194,249,22,71,248,22,191,13,23,197,1,194,87,95,23,211,1,23, +193,1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249,22,85,23,216, +2,9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173,7,23,196,2, +2,32,249,22,85,23,213,2,194,249,22,71,248,22,191,13,23,197,1,194,87, +94,23,193,1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249,22,85, +23,212,2,9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173,7,23, +196,2,2,32,249,22,85,23,209,2,194,249,22,71,248,22,191,13,23,197,1, +194,87,94,23,193,1,27,23,195,1,28,249,22,173,7,23,195,2,2,32,249, +22,85,23,208,2,9,249,22,71,248,22,191,13,23,196,1,9,28,249,22,173, +7,23,196,2,2,32,249,22,85,23,205,2,194,249,22,71,248,22,191,13,23, +197,1,194,87,94,23,193,1,27,23,195,1,28,249,22,173,7,23,195,2,2, +32,249,22,85,23,204,2,9,249,22,71,248,22,191,13,23,196,1,9,28,249, +22,173,7,23,196,2,2,32,249,22,85,200,194,87,94,23,199,1,249,22,71, +248,22,191,13,23,197,1,194,87,94,23,193,1,27,23,195,1,28,249,22,173, +7,23,195,2,2,32,249,22,85,199,9,87,94,23,198,1,249,22,71,248,22, +191,13,23,196,1,9,32,61,89,162,8,44,39,53,70,102,111,117,110,100,45, +101,120,101,99,222,33,64,32,62,89,162,8,44,40,58,64,110,101,120,116,222, +33,63,27,248,22,144,14,23,196,2,28,249,22,187,8,23,195,2,23,197,1, +11,28,248,22,140,14,23,194,2,27,249,22,136,14,23,197,1,23,196,1,28, +23,197,2,91,159,39,11,90,161,39,36,11,248,22,139,14,23,197,2,87,95, +23,195,1,23,194,1,27,28,23,202,2,27,248,22,144,14,23,199,2,28,249, +22,187,8,23,195,2,23,200,2,11,28,248,22,140,14,23,194,2,250,2,61, +23,205,2,23,206,2,249,22,136,14,23,200,2,23,198,1,250,2,61,23,205, +2,23,206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248, +22,182,13,23,196,2,27,249,22,136,14,23,198,2,23,205,2,28,28,248,22, +131,14,193,10,248,22,130,14,193,192,11,11,28,23,193,2,192,87,94,23,193, +1,28,23,203,2,11,27,248,22,144,14,23,200,2,28,249,22,187,8,23,195, +2,23,201,1,11,28,248,22,140,14,23,194,2,250,2,61,23,206,1,23,207, +1,249,22,136,14,23,201,1,23,198,1,250,2,61,205,206,195,192,87,94,23, +194,1,27,23,194,1,28,23,197,2,91,159,39,11,90,161,39,36,11,248,22, +139,14,23,197,2,87,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22, +144,14,23,199,2,28,249,22,187,8,23,195,2,23,200,2,11,28,248,22,140, +14,23,194,2,250,2,61,23,205,2,23,206,2,249,22,136,14,23,200,2,23, +198,1,250,2,61,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,87, +94,23,193,1,27,28,248,22,182,13,23,196,2,27,249,22,136,14,23,198,2, +23,205,2,28,28,248,22,131,14,193,10,248,22,130,14,193,192,11,11,28,23, +193,2,192,87,94,23,193,1,28,23,203,2,11,27,248,22,144,14,23,200,2, +28,249,22,187,8,23,195,2,23,201,1,11,28,248,22,140,14,23,194,2,250, +2,61,23,206,1,23,207,1,249,22,136,14,23,201,1,23,198,1,250,2,61, +205,206,195,192,28,23,193,2,91,159,39,11,90,161,39,36,11,248,22,139,14, +23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,251,2,62,23,198, +2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,87,94,23,193,1, +27,28,248,22,182,13,195,27,249,22,136,14,197,200,28,28,248,22,131,14,193, +10,248,22,130,14,193,192,11,11,28,192,192,28,198,11,251,2,62,198,203,201, +202,194,32,65,89,162,8,44,40,8,31,2,20,222,33,66,28,248,22,79,23, +197,2,11,27,248,22,143,14,248,22,72,23,199,2,27,249,22,136,14,23,196, +1,23,197,2,28,248,22,130,14,23,194,2,250,2,61,198,199,195,87,94,23, +193,1,27,248,22,73,23,200,1,28,248,22,79,23,194,2,11,27,248,22,143, +14,248,22,72,23,196,2,27,249,22,136,14,23,196,1,23,200,2,28,248,22, +130,14,23,194,2,250,2,61,201,202,195,87,94,23,193,1,27,248,22,73,23, +197,1,28,248,22,79,23,194,2,11,27,248,22,143,14,248,22,72,23,196,2, +27,249,22,136,14,23,196,1,23,203,2,28,248,22,130,14,23,194,2,250,2, +61,204,205,195,87,94,23,193,1,27,248,22,73,23,197,1,28,248,22,79,23, +194,2,11,27,248,22,143,14,248,22,72,23,196,2,27,249,22,136,14,23,196, +1,23,206,2,28,248,22,130,14,23,194,2,250,2,61,23,15,23,16,195,87, 94,23,193,1,27,248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248, -22,143,14,248,22,72,23,196,2,27,249,22,136,14,23,196,1,23,203,2,28, -248,22,130,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1,27,248,22, -73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,143,14,248,22,72,23, -196,2,27,249,22,136,14,23,196,1,23,206,2,28,248,22,130,14,23,194,2, -250,2,61,23,15,23,16,195,87,94,23,193,1,27,248,22,73,23,197,1,28, -248,22,79,23,194,2,11,27,248,22,143,14,248,22,72,23,196,2,27,249,22, -136,14,23,196,1,23,209,2,28,248,22,130,14,23,194,2,250,2,61,23,18, -23,19,195,87,94,23,193,1,27,248,22,73,23,197,1,28,248,22,79,23,194, -2,11,27,248,22,143,14,248,22,72,195,27,249,22,136,14,23,196,1,23,19, -28,248,22,130,14,193,250,2,61,23,21,23,22,195,251,2,65,23,21,23,22, -23,23,248,22,73,199,87,95,28,28,248,22,182,13,23,195,2,10,28,248,22, -178,6,23,195,2,28,248,22,140,14,23,195,2,10,248,22,141,14,23,195,2, -11,12,250,22,155,9,2,16,6,25,25,112,97,116,104,32,111,114,32,115,116, -114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23, -195,2,28,28,248,22,182,13,23,196,2,10,28,248,22,178,6,23,196,2,28, -248,22,140,14,23,196,2,10,248,22,141,14,23,196,2,11,248,22,140,14,23, -196,2,11,10,12,250,22,155,9,2,16,6,29,29,35,102,32,111,114,32,114, -101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110, -103,23,198,2,28,28,248,22,140,14,23,195,2,91,159,39,11,90,161,39,36, -11,248,22,139,14,23,198,2,249,22,185,8,194,68,114,101,108,97,116,105,118, -101,11,27,248,22,132,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249, -80,159,41,49,38,23,197,1,9,28,249,22,185,8,247,22,134,8,2,22,249, -22,71,248,22,191,13,5,1,46,194,192,87,94,23,194,1,9,28,248,22,79, -23,194,2,11,27,248,22,143,14,248,22,72,23,196,2,27,249,22,136,14,23, -196,1,23,200,2,28,248,22,130,14,23,194,2,250,2,61,201,202,195,87,94, -23,193,1,27,248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22, -143,14,248,22,72,23,196,2,27,249,22,136,14,23,196,1,23,203,2,28,248, -22,130,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1,27,248,22,73, -23,197,1,28,248,22,79,23,194,2,11,27,248,22,143,14,248,22,72,195,27, -249,22,136,14,23,196,1,205,28,248,22,130,14,193,250,2,61,23,15,23,16, -195,251,2,65,23,15,23,16,23,17,248,22,73,199,27,248,22,143,14,23,196, -1,28,248,22,130,14,193,250,2,61,198,199,195,11,250,80,159,39,50,37,196, -197,11,250,80,159,39,50,37,196,11,11,87,94,249,22,169,6,247,22,141,5, -195,248,22,131,6,249,22,184,3,36,249,22,168,3,197,198,27,28,23,197,2, -87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,158,14, -2,21,27,249,80,159,41,50,37,23,196,1,11,27,27,248,22,187,3,23,200, -1,28,192,192,36,27,27,248,22,187,3,23,202,1,28,192,192,36,249,22,172, -5,23,197,1,83,158,40,20,100,95,89,162,8,44,36,48,9,224,3,2,33, -70,23,195,1,23,196,1,27,248,22,157,5,23,195,1,248,80,159,39,55,37, -193,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2, -1,29,11,11,11,11,11,10,43,80,158,36,36,20,105,159,38,16,18,2,2, -2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2, -13,2,14,2,15,2,16,2,17,30,2,19,1,20,112,97,114,97,109,101,116, -101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,19,1,23,101,120, -116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, -3,16,0,16,0,36,16,0,36,16,4,2,6,2,5,2,3,2,10,40,11, -11,39,36,11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2, -13,2,4,2,12,2,15,2,11,2,2,16,12,11,11,11,11,11,11,11,11, -11,11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2,13,2, -4,2,12,2,15,2,11,2,2,48,48,37,11,11,11,16,0,16,0,16,0, -36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,18,83,158,36, -16,2,89,162,8,44,37,51,2,20,223,0,33,33,80,159,36,55,37,83,158, -36,16,2,89,162,8,44,37,56,2,20,223,0,33,34,80,159,36,54,37,83, -158,36,16,2,32,0,89,162,44,37,45,2,2,222,33,35,80,159,36,36,37, -83,158,36,16,2,249,22,180,6,7,92,7,92,80,159,36,37,37,83,158,36, -16,2,89,162,44,37,54,2,4,223,0,33,36,80,159,36,38,37,83,158,36, -16,2,32,0,89,162,8,44,38,50,2,5,222,33,37,80,159,36,39,37,83, -158,36,16,2,32,0,89,162,8,44,39,51,2,6,222,33,39,80,159,36,40, -37,83,158,36,16,2,32,0,89,162,8,45,38,50,2,7,222,33,43,80,159, -36,41,37,83,158,36,16,2,32,0,89,162,45,39,53,2,9,222,33,47,80, -159,36,43,37,83,158,36,16,2,32,0,89,162,44,41,59,2,8,222,33,50, -80,159,36,42,37,83,158,36,16,2,32,0,89,162,44,39,50,2,10,222,33, -51,80,159,36,44,37,83,158,36,16,2,32,0,89,162,44,38,53,2,11,222, -33,52,80,159,36,45,37,83,158,36,16,2,32,0,89,162,44,38,54,2,12, -222,33,53,80,159,36,46,37,83,158,36,16,2,32,0,89,162,44,37,44,2, -13,222,33,54,80,159,36,47,37,83,158,36,16,2,83,158,39,20,99,96,2, -14,89,162,44,36,44,9,223,0,33,55,89,162,44,37,45,9,223,0,33,56, -89,162,44,38,55,9,223,0,33,57,80,159,36,48,37,83,158,36,16,2,27, -248,22,165,14,248,22,190,7,27,28,249,22,185,8,247,22,134,8,2,22,6, -1,1,59,6,1,1,58,250,22,162,7,6,14,14,40,91,94,126,97,93,42, -41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,38,48,2,15, -223,0,33,60,80,159,36,49,37,83,158,36,16,2,83,158,39,20,99,96,2, -16,89,162,8,44,39,8,24,9,223,0,33,67,89,162,44,38,47,9,223,0, -33,68,89,162,44,37,46,9,223,0,33,69,80,159,36,50,37,83,158,36,16, -2,89,162,8,44,39,52,2,17,223,0,33,71,80,159,36,51,37,94,29,94, -2,18,68,35,37,107,101,114,110,101,108,11,29,94,2,18,69,35,37,109,105, -110,45,115,116,120,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8137); +22,143,14,248,22,72,23,196,2,27,249,22,136,14,23,196,1,23,209,2,28, +248,22,130,14,23,194,2,250,2,61,23,18,23,19,195,87,94,23,193,1,27, +248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,143,14,248,22, +72,195,27,249,22,136,14,23,196,1,23,19,28,248,22,130,14,193,250,2,61, +23,21,23,22,195,251,2,65,23,21,23,22,23,23,248,22,73,199,87,95,28, +27,23,195,2,28,248,22,182,13,23,194,2,10,28,248,22,178,6,23,194,2, +28,248,22,140,14,23,194,2,10,248,22,141,14,23,194,1,11,12,250,22,155, +9,2,16,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32, +40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,2,28,28,248, +22,182,13,23,196,2,10,28,248,22,178,6,23,196,2,28,248,22,140,14,23, +196,2,10,248,22,141,14,23,196,2,11,248,22,140,14,23,196,2,11,10,12, +250,22,155,9,2,16,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105, +118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,28, +28,248,22,140,14,23,195,2,91,159,39,11,90,161,39,36,11,248,22,139,14, +23,198,2,249,22,185,8,194,68,114,101,108,97,116,105,118,101,11,27,248,22, +132,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,41,49,38, +23,197,1,9,28,249,22,185,8,247,22,134,8,2,22,249,22,71,248,22,191, +13,5,1,46,194,192,87,94,23,194,1,9,28,248,22,79,23,194,2,11,27, +248,22,143,14,248,22,72,23,196,2,27,249,22,136,14,23,196,1,23,200,2, +28,248,22,130,14,23,194,2,250,2,61,201,202,195,87,94,23,193,1,27,248, +22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,143,14,248,22,72, +23,196,2,27,249,22,136,14,23,196,1,23,203,2,28,248,22,130,14,23,194, +2,250,2,61,204,205,195,87,94,23,193,1,27,248,22,73,23,197,1,28,248, +22,79,23,194,2,11,27,248,22,143,14,248,22,72,195,27,249,22,136,14,23, +196,1,205,28,248,22,130,14,193,250,2,61,23,15,23,16,195,251,2,65,23, +15,23,16,23,17,248,22,73,199,27,248,22,143,14,23,196,1,28,248,22,130, +14,193,250,2,61,198,199,195,11,250,80,159,39,50,37,196,197,11,250,80,159, +39,50,37,196,11,11,87,94,249,22,169,6,247,22,141,5,195,248,22,131,6, +249,22,184,3,36,249,22,168,3,197,198,27,28,23,197,2,87,95,23,196,1, +23,195,1,23,197,1,87,94,23,197,1,27,248,22,158,14,2,21,27,249,80, +159,41,50,37,23,196,1,11,27,248,22,187,3,23,199,1,27,28,23,194,2, +23,194,1,87,94,23,194,1,36,27,248,22,187,3,23,202,1,27,28,23,194, +2,23,194,1,87,94,23,194,1,36,249,22,172,5,23,199,1,83,158,40,20, +100,95,89,162,8,44,36,48,9,224,4,2,33,70,23,195,1,23,197,1,27, +248,22,157,5,23,195,1,248,80,159,39,55,37,193,159,36,20,105,159,36,16, +1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11,11,11,11,10, +43,80,158,36,36,20,105,159,38,16,18,2,2,2,3,2,4,2,5,2,6, +2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2, +17,30,2,19,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,45,107,101,121,4,30,2,19,1,23,101,120,116,101,110,100,45,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,3,16,0,16,0,36,16,0, +36,16,4,2,6,2,5,2,3,2,10,40,11,11,39,36,11,11,11,16,12, +2,9,2,7,2,17,2,8,2,16,2,14,2,13,2,4,2,12,2,15,2, +11,2,2,16,12,11,11,11,11,11,11,11,11,11,11,11,11,16,12,2,9, +2,7,2,17,2,8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2, +2,48,48,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0, +16,0,16,0,36,36,16,0,16,18,83,158,36,16,2,89,162,8,44,37,51, +2,20,223,0,33,33,80,159,36,55,37,83,158,36,16,2,89,162,8,44,37, +56,2,20,223,0,33,34,80,159,36,54,37,83,158,36,16,2,32,0,89,162, +44,37,45,2,2,222,33,35,80,159,36,36,37,83,158,36,16,2,249,22,180, +6,7,92,7,92,80,159,36,37,37,83,158,36,16,2,89,162,44,37,54,2, +4,223,0,33,36,80,159,36,38,37,83,158,36,16,2,32,0,89,162,8,44, +38,50,2,5,222,33,37,80,159,36,39,37,83,158,36,16,2,32,0,89,162, +8,44,39,53,2,6,222,33,39,80,159,36,40,37,83,158,36,16,2,32,0, +89,162,8,45,38,55,2,7,222,33,43,80,159,36,41,37,83,158,36,16,2, +32,0,89,162,45,39,54,2,9,222,33,47,80,159,36,43,37,83,158,36,16, +2,32,0,89,162,44,41,8,24,2,8,222,33,50,80,159,36,42,37,83,158, +36,16,2,32,0,89,162,44,39,50,2,10,222,33,51,80,159,36,44,37,83, +158,36,16,2,32,0,89,162,44,38,53,2,11,222,33,52,80,159,36,45,37, +83,158,36,16,2,32,0,89,162,44,38,54,2,12,222,33,53,80,159,36,46, +37,83,158,36,16,2,32,0,89,162,44,37,44,2,13,222,33,54,80,159,36, +47,37,83,158,36,16,2,83,158,39,20,99,96,2,14,89,162,44,36,44,9, +223,0,33,55,89,162,44,37,45,9,223,0,33,56,89,162,44,38,55,9,223, +0,33,57,80,159,36,48,37,83,158,36,16,2,27,248,22,165,14,248,22,190, +7,27,28,249,22,185,8,247,22,134,8,2,22,6,1,1,59,6,1,1,58, +250,22,162,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41, +23,196,2,23,196,1,89,162,8,44,38,8,32,2,15,223,0,33,60,80,159, +36,49,37,83,158,36,16,2,83,158,39,20,99,96,2,16,89,162,8,44,39, +8,24,9,223,0,33,67,89,162,44,38,47,9,223,0,33,68,89,162,44,37, +46,9,223,0,33,69,80,159,36,50,37,83,158,36,16,2,89,162,8,44,39, +54,2,17,223,0,33,71,80,159,36,51,37,94,29,94,2,18,68,35,37,107, +101,114,110,101,108,11,29,94,2,18,69,35,37,109,105,110,45,115,116,120,11, +9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8761); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,50,9,0,0,0,1,0,0,10,0,16,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,51,9,0,0,0,1,0,0,10,0,16,0, 29,0,44,0,58,0,72,0,86,0,128,0,0,0,57,1,0,0,69,35,37, 98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67,35,37,117, 116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114,107,11,29, 94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,68,35,37,101, 120,112,111,98,115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97, -36,11,8,240,134,82,0,0,98,159,2,3,36,36,159,2,4,36,36,159,2, +36,11,8,240,205,85,0,0,98,159,2,3,36,36,159,2,4,36,36,159,2, 5,36,36,159,2,6,36,36,159,2,7,36,36,159,2,7,36,36,16,0,159, 36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29, 11,11,11,11,11,18,96,11,44,44,44,36,80,158,36,36,20,105,159,36,16, @@ -510,14 +540,14 @@ EVAL_ONE_SIZED_STR((char *)expr, 352); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,50,74,0,0,0,1,0,0,7,0,18,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,51,74,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200, 0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1, 70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166, -1,196,1,226,1,27,2,84,2,132,2,180,2,97,8,116,8,129,8,31,9, -43,9,177,9,219,10,86,11,92,11,106,11,118,11,208,11,221,11,84,12,96, -12,186,12,199,12,62,13,89,13,102,13,114,13,204,13,217,13,80,14,93,14, -212,14,220,14,49,15,51,15,120,15,164,23,216,23,239,23,0,0,145,26,0, +1,196,1,226,1,35,2,100,2,156,2,212,2,160,8,179,8,193,8,111,9, +124,9,54,11,164,13,31,14,37,14,51,14,64,14,162,15,175,15,50,16,63, +16,161,17,174,17,49,18,76,18,89,18,102,18,200,19,213,19,88,20,101,20, +232,20,244,20,73,21,75,21,144,21,190,29,242,29,9,30,0,0,171,32,0, 0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1,25, 100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112, 105,108,101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108, @@ -541,306 +571,381 @@ 1,2,24,252,22,136,14,23,199,1,23,201,1,2,25,247,22,135,8,249,80, 159,45,39,38,23,200,1,80,159,45,36,38,252,22,136,14,23,199,1,23,201, 1,2,25,247,22,135,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38, -27,252,22,136,14,23,200,1,23,202,1,2,25,247,22,135,8,249,80,159,46, -39,38,23,201,1,80,159,46,36,38,27,250,22,153,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,252,22,136,14,23, -200,1,23,202,1,2,25,247,22,135,8,249,80,159,46,39,38,23,201,1,80, -159,46,36,38,27,250,22,153,14,196,11,32,0,89,162,8,44,36,41,9,222, -11,28,192,249,22,71,195,194,11,27,250,22,136,14,23,198,1,23,200,1,249, -80,159,44,39,38,23,199,1,2,23,27,250,22,153,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,250,22,136,14,23, -198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,153,14, -196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,195,194,11, -87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,155,9,77,108,111,97, -100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116,104, -32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103, -23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,142,14,23,205,2,23, -204,2,27,247,22,146,5,28,23,193,2,249,22,143,14,23,207,2,23,195,1, -23,205,2,90,161,39,37,11,248,22,139,14,23,205,1,87,94,23,196,1,90, -161,38,40,11,28,23,205,2,27,248,22,187,13,23,197,2,27,248,22,170,7, -23,195,2,28,28,249,22,180,3,23,195,2,40,249,22,173,7,5,4,46,114, -107,116,249,22,176,7,23,198,2,249,22,168,3,23,199,2,40,11,249,22,7, -23,199,2,248,22,191,13,249,22,177,7,250,22,176,7,23,202,1,36,249,22, -168,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7, -23,197,2,11,90,161,37,42,11,28,249,22,185,8,23,199,2,23,197,2,23, -193,2,249,22,136,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2, -28,249,22,185,8,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22, -136,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249, -22,185,8,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2, -22,23,194,1,90,161,37,45,11,247,22,161,14,27,27,250,22,153,14,23,204, -2,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,23,203,2, -194,11,27,28,23,202,2,28,23,194,2,11,27,250,22,153,14,23,206,2,11, -32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,23,205,2,194,11, -11,27,28,23,195,2,23,195,2,23,194,2,27,89,162,44,37,50,62,122,111, -225,14,12,8,33,33,27,89,162,44,37,50,66,97,108,116,45,122,111,225,15, -13,10,33,34,27,89,162,44,37,52,9,225,16,14,10,33,35,27,89,162,44, -37,52,9,225,17,15,12,33,36,27,28,23,200,2,23,200,2,248,22,183,8, -23,200,2,27,28,23,207,2,28,23,200,2,87,94,23,201,1,23,200,2,248, -22,183,8,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249,22,5,89, -162,8,44,37,53,9,225,23,21,17,33,37,23,215,2,27,28,23,202,2,11, -193,28,192,192,28,193,28,23,202,2,28,249,22,180,3,248,22,73,196,248,22, -73,23,205,2,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87,105, -23,212,1,23,210,1,23,209,1,23,208,1,23,207,1,23,201,1,23,200,1, -23,199,1,23,198,1,23,196,1,23,195,1,23,194,1,20,14,159,80,159,56, -40,38,250,80,159,59,41,38,249,22,27,11,80,159,8,25,40,38,22,168,4, -11,20,14,159,80,159,56,40,38,250,80,159,59,41,38,249,22,27,11,80,159, -8,25,40,38,22,146,5,28,248,22,182,13,23,215,2,23,214,1,87,94,23, -214,1,247,22,159,14,249,247,22,164,14,248,22,72,195,23,24,87,94,23,193, -1,27,28,23,195,2,28,23,197,1,27,249,22,5,89,162,8,44,37,53,9, -225,24,22,19,33,38,23,216,2,27,28,23,204,2,11,193,28,192,192,28,193, -28,203,28,249,22,180,3,248,22,73,196,248,22,73,206,193,11,11,11,11,87, -94,23,197,1,11,28,23,193,2,87,102,23,213,1,23,210,1,23,209,1,23, -208,1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,14,159,80, -159,57,40,38,250,80,159,8,24,41,38,249,22,27,11,80,159,8,26,40,38, -22,168,4,23,214,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38, -249,22,27,11,80,159,8,26,40,38,22,146,5,28,248,22,182,13,23,216,2, -23,215,1,87,94,23,215,1,247,22,159,14,249,247,22,164,14,248,22,72,195, -23,25,87,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,83, -158,40,20,100,94,89,162,8,44,37,51,9,225,25,23,19,33,39,23,212,1, -23,217,2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249, -22,180,3,248,22,73,196,248,22,73,23,207,2,193,11,11,11,87,94,23,209, -1,11,87,94,23,201,1,11,28,23,193,2,87,101,23,214,1,23,212,1,23, -211,1,23,210,1,23,202,1,23,200,1,23,197,1,23,196,1,20,14,159,80, -159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38, -22,168,4,11,20,14,159,80,159,58,40,38,250,80,159,8,25,41,38,249,22, -27,11,80,159,8,27,40,38,22,146,5,28,248,22,182,13,23,217,2,23,216, -1,87,94,23,216,1,247,22,159,14,249,247,22,144,5,248,22,72,195,23,26, -87,94,23,193,1,27,28,23,197,1,28,23,201,1,27,249,22,5,83,158,40, -20,100,94,89,162,8,44,37,51,9,225,26,24,21,33,40,23,214,1,23,218, -1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249,22,180,3,248, -22,73,196,248,22,73,23,15,193,11,11,11,87,95,23,215,1,23,211,1,11, -87,94,23,201,1,11,28,23,193,2,87,95,23,212,1,23,198,1,20,14,159, -80,159,59,40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40, -38,22,168,4,23,216,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41, -38,249,22,27,11,80,159,8,28,40,38,22,146,5,28,248,22,182,13,23,218, -2,23,217,1,87,94,23,217,1,247,22,159,14,249,247,22,144,5,248,22,72, -195,23,27,87,94,23,193,1,27,28,23,199,2,87,94,23,214,1,23,213,1, -87,94,23,213,1,23,214,1,20,14,159,80,159,8,24,40,38,250,80,159,8, -27,41,38,249,22,27,11,80,159,8,29,40,38,22,168,4,28,23,29,28,23, -202,1,11,195,87,94,23,202,1,11,20,14,159,80,159,8,24,40,38,250,80, -159,8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,146,5,28,248,22, -182,13,23,219,2,23,218,1,87,94,23,218,1,247,22,159,14,249,247,22,144, -5,194,23,28,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41, -36,34,32,43,89,162,8,44,37,59,2,26,222,33,44,27,249,22,169,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196, -2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197, -1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196, -2,248,2,43,248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81, -194,248,22,81,194,32,45,89,162,44,37,55,2,26,222,33,46,28,248,22,79, -248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,161,38, -36,11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249,22,7,9, -248,22,72,195,91,159,38,11,90,161,38,36,11,27,248,22,73,196,28,248,22, -79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,161, -38,36,11,248,2,45,248,22,73,196,249,22,7,249,22,71,248,22,72,199,196, -195,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22, -72,199,196,195,27,27,249,22,169,14,2,42,23,197,2,28,23,193,2,87,94, -23,195,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249, -22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248, -22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196, -2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248, -22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94, -23,194,1,249,22,71,248,22,96,23,196,2,248,2,43,248,22,105,23,197,1, -248,22,81,194,248,22,81,194,248,22,81,194,248,22,81,195,28,23,195,1,192, -28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38, -11,90,161,38,36,11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2, -249,22,7,9,248,22,72,195,91,159,38,11,90,161,38,36,11,27,248,22,73, -196,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159, -38,11,90,161,38,36,11,248,2,45,248,22,73,196,249,22,7,249,22,71,248, -22,72,199,196,195,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249, -22,71,248,22,72,199,196,195,87,95,28,248,22,186,4,195,12,250,22,155,9, -2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, -112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27, -27,250,22,150,2,80,159,42,43,38,248,22,130,15,247,22,162,12,11,28,23, -193,2,192,87,94,23,193,1,27,247,22,130,2,87,94,250,22,148,2,80,159, -43,43,38,248,22,130,15,247,22,162,12,195,192,250,22,148,2,195,198,66,97, -116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,154,9,11,196,195,248, -22,152,9,194,32,51,89,162,44,37,52,2,26,222,33,52,28,248,22,79,248, -22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,161,38,36, -11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248, -22,72,195,91,159,38,11,90,161,38,36,11,248,2,51,248,22,73,196,249,22, -7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22,72,199,196, -195,32,53,89,162,8,44,37,55,2,26,222,33,54,27,249,22,169,14,2,42, -23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2, +27,23,197,1,27,252,22,136,14,23,201,1,23,199,1,2,25,247,22,135,8, +249,80,159,47,39,38,23,202,1,80,159,47,36,38,27,23,194,1,27,250,22, +153,14,196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,195, +194,11,27,23,197,1,27,252,22,136,14,23,201,1,23,199,1,2,25,247,22, +135,8,249,80,159,47,39,38,23,202,1,80,159,47,36,38,27,23,194,1,27, +250,22,153,14,196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22, +71,195,194,11,27,23,197,1,27,250,22,136,14,23,199,1,23,197,1,249,80, +159,45,39,38,23,200,1,2,23,27,23,194,1,27,250,22,153,14,196,11,32, +0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,23,197, +1,27,250,22,136,14,23,199,1,23,197,1,249,80,159,45,39,38,23,200,1, +2,24,27,23,194,1,27,250,22,153,14,196,11,32,0,89,162,8,44,36,41, +9,222,11,28,192,249,22,71,195,194,11,87,94,28,248,80,159,37,38,38,23, +195,2,12,250,22,155,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112, +105,108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45, +112,97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,46,11,90,161,37, +36,11,28,248,22,142,14,23,205,2,23,204,2,27,247,22,146,5,28,23,193, +2,249,22,143,14,23,207,2,23,195,1,23,205,2,90,161,39,37,11,248,22, +139,14,23,205,1,87,94,23,196,1,90,161,38,40,11,28,23,205,2,27,248, +22,187,13,23,197,2,27,248,22,170,7,23,195,2,28,28,249,22,180,3,23, +195,2,40,249,22,173,7,5,4,46,114,107,116,249,22,176,7,23,198,2,249, +22,168,3,23,199,2,40,11,249,22,7,23,199,2,248,22,191,13,249,22,177, +7,250,22,176,7,23,202,1,36,249,22,168,3,23,203,1,40,5,3,46,115, +115,249,22,7,23,199,2,11,249,22,7,23,197,2,11,90,161,37,42,11,28, +249,22,185,8,23,199,2,23,197,2,23,193,2,249,22,136,14,23,196,2,23, +199,2,90,161,37,43,11,28,23,198,2,28,249,22,185,8,23,200,2,23,197, +1,23,193,1,87,94,23,193,1,249,22,136,14,23,196,2,23,200,2,87,94, +23,195,1,11,90,161,37,44,11,28,249,22,185,8,23,196,2,68,114,101,108, +97,116,105,118,101,87,94,23,194,1,2,22,23,194,1,90,161,37,45,11,247, +22,161,14,27,250,22,153,14,23,203,2,11,32,0,89,162,8,44,36,41,9, +222,11,27,28,23,194,2,249,22,71,23,203,2,23,196,1,87,94,23,194,1, +11,27,28,23,203,2,28,23,194,2,11,27,250,22,153,14,23,207,2,11,32, +0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,23,206,2,194,11,11, +27,28,23,195,2,23,195,2,23,194,2,27,89,162,44,37,50,62,122,111,225, +15,13,9,33,33,27,89,162,44,37,50,66,97,108,116,45,122,111,225,16,14, +11,33,34,27,89,162,44,37,52,9,225,17,15,11,33,35,27,89,162,44,37, +52,9,225,18,16,13,33,36,27,28,23,200,2,23,200,2,248,22,183,8,23, +200,2,27,28,23,208,2,28,23,200,2,87,94,23,201,1,23,200,2,248,22, +183,8,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249,22,5,89,162, +8,44,37,54,9,225,24,22,18,33,37,23,216,2,27,28,23,202,2,11,193, +28,192,192,28,193,28,23,202,2,28,249,22,180,3,248,22,73,196,248,22,73, +23,205,2,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87,105,23, +213,1,23,211,1,23,210,1,23,209,1,23,208,1,23,201,1,23,200,1,23, +199,1,23,198,1,23,196,1,23,195,1,23,194,1,27,23,194,1,20,14,159, +80,159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40, +38,22,168,4,11,20,14,159,80,159,58,40,38,250,80,159,8,25,41,38,249, +22,27,11,80,159,8,27,40,38,22,146,5,28,248,22,182,13,23,217,2,23, +216,1,87,94,23,216,1,247,22,159,14,249,247,22,164,14,248,22,72,195,23, +26,87,94,23,193,1,27,28,23,195,2,28,23,197,1,27,249,22,5,89,162, +8,44,37,54,9,225,25,23,20,33,38,23,217,2,27,28,23,204,2,11,193, +28,192,192,28,193,28,203,28,249,22,180,3,248,22,73,196,248,22,73,206,193, +11,11,11,11,87,94,23,197,1,11,28,23,193,2,87,102,23,214,1,23,211, +1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1,23,196,1,23,195, +1,27,23,194,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41,38,249, +22,27,11,80,159,8,28,40,38,22,168,4,23,216,1,20,14,159,80,159,59, +40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,146, +5,28,248,22,182,13,23,218,2,23,217,1,87,94,23,217,1,247,22,159,14, +249,247,22,164,14,248,22,72,195,23,27,87,94,23,193,1,27,28,23,197,2, +28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,52,9, +225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11,193,28,192, +192,28,193,28,23,204,2,28,249,22,180,3,248,22,73,196,248,22,73,23,207, +2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28,23,193,2, +87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200,1,23, +197,1,23,196,1,27,23,194,1,20,14,159,80,159,8,24,40,38,250,80,159, +8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,168,4,11,20,14,159, +80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8,29, +40,38,22,146,5,28,248,22,182,13,23,219,2,23,218,1,87,94,23,218,1, +247,22,159,14,249,247,22,144,5,248,22,72,195,23,28,87,94,23,193,1,27, +28,23,197,1,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8, +44,37,52,9,225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2, +11,193,28,192,192,28,193,28,204,28,249,22,180,3,248,22,73,196,248,22,73, +23,15,193,11,11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11, +28,23,193,2,87,95,23,213,1,23,198,1,27,23,194,1,20,14,159,80,159, +8,25,40,38,250,80,159,8,28,41,38,249,22,27,11,80,159,8,30,40,38, +22,168,4,23,218,1,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41, +38,249,22,27,11,80,159,8,30,40,38,22,146,5,28,248,22,182,13,23,220, +2,23,219,1,87,94,23,219,1,247,22,159,14,249,247,22,144,5,248,22,72, +195,23,29,87,94,23,193,1,27,28,23,199,2,87,94,23,215,1,23,214,1, +87,94,23,214,1,23,215,1,20,14,159,80,159,8,25,40,38,250,80,159,8, +28,41,38,249,22,27,11,80,159,8,30,40,38,22,168,4,28,23,30,28,23, +202,1,11,195,87,94,23,202,1,11,20,14,159,80,159,8,25,40,38,250,80, +159,8,28,41,38,249,22,27,11,80,159,8,30,40,38,22,146,5,28,248,22, +182,13,23,220,2,23,219,1,87,94,23,219,1,247,22,159,14,249,247,22,144, +5,194,23,29,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41, +36,34,32,43,89,162,8,44,37,8,27,2,26,222,33,44,27,249,22,169,14, +2,42,23,196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71, +248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96, +23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28, +23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2, 27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1, -27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -71,248,22,96,23,196,2,248,2,53,248,22,105,23,197,1,248,22,81,194,248, -22,81,194,248,22,81,194,32,55,89,162,44,37,52,2,26,222,33,56,28,248, -22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90, -161,38,36,11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249,22, -7,9,248,22,72,195,91,159,38,11,90,161,38,36,11,248,2,55,248,22,73, -196,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22, -72,199,196,195,32,57,89,162,8,44,37,55,2,26,222,33,58,27,249,22,169, -14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96, +87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,248,2,43, +248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,248,22,81, +194,32,45,89,162,44,37,8,40,2,26,222,33,46,28,248,22,79,248,22,73, +23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159,38,11,90, +161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9,248,22,72, +197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22,79,248,22, +73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159,38,11, +90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9,248,22, +72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22,79,248, +22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159,38, +11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9,248, +22,72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22,79, +248,22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159, +38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9, +248,22,72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22, +79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91, +159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7, +9,248,22,72,197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,73,198, +249,22,7,249,22,71,248,22,72,201,196,195,249,22,7,249,22,71,248,22,72, +200,196,195,249,22,7,249,22,71,248,22,72,201,196,195,249,22,7,249,22,71, +248,22,72,200,196,195,249,22,7,249,22,71,248,22,72,201,196,195,249,22,7, +249,22,71,248,22,72,200,196,195,249,22,7,249,22,71,248,22,72,201,196,195, +249,22,7,249,22,71,248,22,72,200,196,195,249,22,7,249,22,71,248,22,72, +201,196,195,249,22,7,249,22,71,248,22,72,200,196,195,27,27,249,22,169,14, +2,42,23,197,2,28,23,193,2,87,94,23,195,1,27,23,194,1,249,22,71, +248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96, 23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28, -23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105, -23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194, -1,249,22,71,248,22,96,23,196,2,248,2,57,248,22,105,23,197,1,248,22, -81,194,248,22,81,194,248,22,81,194,28,249,22,184,6,194,6,1,1,46,2, -22,28,249,22,184,6,194,6,2,2,46,46,62,117,112,192,0,11,35,114,120, -34,91,46,93,115,115,36,34,32,61,89,162,44,37,52,2,26,222,33,62,28, -248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11, -90,161,38,36,11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249, -22,7,9,248,22,72,195,91,159,38,11,90,161,38,36,11,248,2,61,248,22, -73,196,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248, -22,72,199,196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22, -169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22, +23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2, +27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,248,2,43, +248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,248,22,81, +195,28,23,195,1,192,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248, +22,72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22,79, +248,22,73,23,197,2,249,22,7,9,248,22,72,197,27,248,22,73,196,91,159, +38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9, +248,22,72,197,27,248,22,73,196,91,159,38,11,90,161,38,36,11,28,248,22, +79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,27,248,22,73,196,91, +159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7, +9,248,22,72,197,27,248,22,73,196,91,159,38,11,90,161,38,36,11,28,248, +22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,27,248,22,73,196, +91,159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22, +7,9,248,22,72,197,27,248,22,73,196,91,159,38,11,90,161,38,36,11,28, +248,22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,27,248,22,73, +196,91,159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249, +22,7,9,248,22,72,197,27,248,22,73,196,91,159,38,11,90,161,38,36,11, +28,248,22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38, +11,90,161,38,36,11,248,2,45,248,22,73,198,249,22,7,249,22,71,248,22, +72,201,196,195,249,22,7,249,22,71,248,22,72,202,196,195,249,22,7,249,22, +71,248,22,72,202,196,195,249,22,7,249,22,71,248,22,72,202,196,195,249,22, +7,249,22,71,248,22,72,202,196,195,249,22,7,249,22,71,248,22,72,202,196, +195,249,22,7,249,22,71,248,22,72,202,196,195,249,22,7,249,22,71,248,22, +72,202,196,195,249,22,7,249,22,71,248,22,72,202,196,195,249,22,7,249,22, +71,248,22,72,200,196,195,87,95,28,248,22,186,4,195,12,250,22,155,9,2, +18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112, +97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,250, +22,150,2,80,159,41,43,38,248,22,130,15,247,22,162,12,11,27,28,23,194, +2,193,87,94,23,194,1,27,247,22,130,2,87,94,250,22,148,2,80,159,43, +43,38,248,22,130,15,247,22,162,12,195,192,250,22,148,2,195,199,66,97,116, +116,97,99,104,251,211,197,198,199,10,28,192,250,22,154,9,11,196,195,248,22, +152,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22,79,248, +22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159,38, +11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9,248, +22,72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22,79, +248,22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91,159, +38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7,9, +248,22,72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248,22, +79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194,91, +159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22,7, +9,248,22,72,197,91,159,38,11,90,161,38,36,11,27,248,22,73,198,28,248, +22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,27,248,22,73,194, +91,159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23,197,2,249,22, +7,9,248,22,72,197,91,159,38,11,90,161,38,36,11,248,2,51,248,22,73, +198,249,22,7,249,22,71,248,22,72,201,196,195,249,22,7,249,22,71,248,22, +72,200,196,195,249,22,7,249,22,71,248,22,72,201,196,195,249,22,7,249,22, +71,248,22,72,200,196,195,249,22,7,249,22,71,248,22,72,201,196,195,249,22, +7,249,22,71,248,22,72,200,196,195,249,22,7,249,22,71,248,22,72,201,196, +195,249,22,7,249,22,71,248,22,72,200,196,195,32,53,89,162,8,44,37,58, +2,26,222,33,54,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94, +23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23, +197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1, +27,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27, +249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,27,23,194, +1,249,22,71,248,22,96,23,196,2,248,2,53,248,22,105,23,197,1,248,22, +81,194,248,22,81,194,248,22,81,194,32,55,89,162,44,37,8,34,2,26,222, +33,56,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,27, +248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22,79,248,22,73,23, +197,2,249,22,7,9,248,22,72,197,91,159,38,11,90,161,38,36,11,27,248, +22,73,198,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195, +27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22,79,248,22,73, +23,197,2,249,22,7,9,248,22,72,197,91,159,38,11,90,161,38,36,11,27, +248,22,73,198,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72, +195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22,79,248,22, +73,23,197,2,249,22,7,9,248,22,72,197,91,159,38,11,90,161,38,36,11, +27,248,22,73,198,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22, +72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22,79,248, +22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38,11,90,161,38,36, +11,248,2,55,248,22,73,198,249,22,7,249,22,71,248,22,72,201,196,195,249, +22,7,249,22,71,248,22,72,200,196,195,249,22,7,249,22,71,248,22,72,201, +196,195,249,22,7,249,22,71,248,22,72,200,196,195,249,22,7,249,22,71,248, +22,72,201,196,195,249,22,7,249,22,71,248,22,72,200,196,195,249,22,7,249, +22,71,248,22,72,201,196,195,249,22,7,249,22,71,248,22,72,200,196,195,32, +57,89,162,8,44,37,58,2,26,222,33,58,27,249,22,169,14,2,42,23,196, +2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23, +196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23, +193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,27, +248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,248,2,57,248, +22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,28,249,22,184, +6,194,6,1,1,46,2,22,28,249,22,184,6,194,6,2,2,46,46,62,117, +112,192,0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37, +8,34,2,26,222,33,62,28,248,22,79,248,22,73,23,195,2,249,22,7,9, +248,22,72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248,22, +79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38,11,90,161, +38,36,11,27,248,22,73,198,28,248,22,79,248,22,73,23,195,2,249,22,7, +9,248,22,72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28,248, +22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38,11,90, +161,38,36,11,27,248,22,73,198,28,248,22,79,248,22,73,23,195,2,249,22, +7,9,248,22,72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11,28, +248,22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38,11, +90,161,38,36,11,27,248,22,73,198,28,248,22,79,248,22,73,23,195,2,249, +22,7,9,248,22,72,195,27,248,22,73,194,91,159,38,11,90,161,38,36,11, +28,248,22,79,248,22,73,23,197,2,249,22,7,9,248,22,72,197,91,159,38, +11,90,161,38,36,11,248,2,61,248,22,73,198,249,22,7,249,22,71,248,22, +72,201,196,195,249,22,7,249,22,71,248,22,72,200,196,195,249,22,7,249,22, +71,248,22,72,201,196,195,249,22,7,249,22,71,248,22,72,200,196,195,249,22, +7,249,22,71,248,22,72,201,196,195,249,22,7,249,22,71,248,22,72,200,196, +195,249,22,7,249,22,71,248,22,72,201,196,195,249,22,7,249,22,71,248,22, +72,200,196,195,32,63,89,162,8,44,37,58,2,26,222,33,64,27,249,22,169, +14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22, +71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22, 96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2, -28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22, -105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23, -194,1,249,22,71,248,22,96,23,196,2,248,2,63,248,22,105,23,197,1,248, -22,81,194,248,22,81,194,248,22,81,194,32,65,89,162,8,44,37,55,2,26, -222,33,66,27,249,22,169,14,2,42,23,196,2,28,23,193,2,87,94,23,194, -1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,169, -14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96, -23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28, -23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,248,2,65,248, -22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,27,248,2,65, -23,195,1,192,28,249,22,187,8,248,22,73,23,200,2,23,197,1,28,249,22, -185,8,248,22,72,23,200,2,23,196,1,251,22,152,9,2,18,6,26,26,99, -121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,101, -58,32,126,101,23,200,1,249,22,2,22,73,248,22,86,249,22,71,23,206,1, -23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,71,248,22,130, -15,247,22,162,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41, -38,249,22,27,11,80,159,45,40,38,22,167,4,23,196,1,249,247,22,145,5, -23,198,1,248,22,59,248,22,186,13,23,198,1,87,94,28,28,248,22,182,13, -23,196,2,10,248,22,130,5,23,196,2,12,28,23,197,2,250,22,154,9,11, -6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2, -250,22,155,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32, -111,114,32,112,97,116,104,23,198,2,28,28,248,22,69,23,196,2,249,22,185, -8,248,22,72,23,198,2,2,4,11,248,22,187,4,248,22,96,196,28,28,248, -22,69,23,196,2,249,22,185,8,248,22,72,23,198,2,66,112,108,97,110,101, -116,11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161, -37,36,10,249,22,169,4,21,94,2,27,6,19,19,112,108,97,110,101,116,47, -114,101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45, -109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12, -252,212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37, -46,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114, -223,5,33,50,27,28,248,22,56,23,198,2,27,250,22,150,2,80,159,43,44, -38,249,22,71,23,203,2,247,22,160,14,11,28,23,193,2,192,87,94,23,193, -1,91,159,38,11,90,161,38,36,11,27,248,22,62,23,202,2,248,2,51,248, -2,53,23,195,1,27,28,248,22,79,23,195,2,6,8,8,109,97,105,110,46, -114,107,116,249,22,137,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159, -49,54,38,2,18,23,204,1,28,248,22,79,23,201,2,23,201,1,87,94,23, -201,1,248,22,72,23,201,2,28,248,22,79,23,201,2,87,94,23,200,1,9, -248,22,73,23,201,1,23,199,2,249,22,136,14,23,195,1,23,196,1,28,248, -22,178,6,23,198,2,87,94,23,194,1,27,27,28,23,200,2,28,249,22,185, -8,23,202,2,80,158,43,47,80,158,41,48,27,248,22,188,4,23,202,2,28, -248,22,182,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,139,14,23, -197,1,87,95,83,160,38,11,80,158,45,47,23,204,2,83,160,38,11,80,158, -45,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,146,5, -28,23,193,2,192,87,94,23,193,1,247,22,159,14,27,250,22,150,2,80,159, -44,44,38,249,22,71,23,204,2,23,199,2,11,28,23,193,2,192,87,94,23, -193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,203,2,250, -22,1,22,136,14,23,199,1,249,22,85,249,22,2,32,0,89,162,8,44,37, -44,9,222,33,59,23,200,1,248,22,81,27,248,22,181,6,23,202,2,28,249, -22,180,3,194,39,28,249,22,184,6,2,28,249,22,136,7,204,249,22,168,3, -198,39,249,22,137,7,250,22,136,7,205,36,249,22,168,3,199,39,2,29,200, -200,28,248,22,182,13,23,198,2,87,94,23,194,1,28,248,22,141,14,23,198, -2,27,248,22,145,14,23,199,2,91,159,39,11,90,161,39,36,11,248,22,139, -14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,169,14,2,60,248,22, -187,13,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22,81,6, -26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98, -115,111,108,117,116,101,41,28,249,22,185,8,248,22,72,23,200,2,2,27,27, -250,22,150,2,80,159,43,44,38,249,22,71,23,203,2,247,22,160,14,11,28, -23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27,248,22, -96,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28,248,22, -79,248,22,98,23,203,2,28,248,22,79,23,194,2,249,22,173,14,0,8,35, -114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248,22,181, +28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196, +2,248,2,63,248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81, +194,32,65,89,162,8,44,37,58,2,26,222,33,66,27,249,22,169,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22, +96,23,196,2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2, +28,23,193,2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196, +2,27,248,22,105,23,197,1,27,249,22,169,14,2,42,23,196,2,28,23,193, +2,87,94,23,194,1,27,23,194,1,249,22,71,248,22,96,23,196,2,248,2, +65,248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,27,23, +194,1,27,248,2,65,23,195,1,192,28,249,22,187,8,248,22,73,23,200,2, +23,197,1,28,249,22,185,8,248,22,72,23,200,2,23,196,1,251,22,152,9, +2,18,6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103, +32,97,116,32,126,101,58,32,126,101,23,200,1,249,22,2,22,73,248,22,86, +249,22,71,23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,40,45,38, +249,22,71,248,22,130,15,247,22,162,12,23,197,1,20,14,159,80,159,40,40, +38,250,80,159,43,41,38,249,22,27,11,80,159,45,40,38,22,167,4,23,196, +1,249,247,22,145,5,23,198,1,248,22,59,248,22,186,13,23,198,1,87,94, +28,28,248,22,182,13,23,196,2,10,248,22,130,5,23,196,2,12,28,23,197, +2,250,22,154,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112, +97,116,104,23,200,2,250,22,155,9,2,18,6,19,19,109,111,100,117,108,101, +45,112,97,116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,69, +23,196,2,249,22,185,8,248,22,72,23,198,2,2,4,11,248,22,187,4,248, +22,96,196,28,28,248,22,69,23,196,2,249,22,185,8,248,22,72,23,198,2, +66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,159,37,52,38, +80,158,37,50,90,161,37,36,10,249,22,169,4,21,94,2,27,6,19,19,112, +108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,114,107,116,1,27,112, +108,97,110,101,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115, +111,108,118,101,114,12,252,212,199,200,201,202,80,158,42,50,87,94,23,193,1, +27,89,162,8,44,37,46,79,115,104,111,119,45,99,111,108,108,101,99,116,105, +111,110,45,101,114,114,223,5,33,50,27,28,248,22,56,23,198,2,27,250,22, +150,2,80,159,43,44,38,249,22,71,23,203,2,247,22,160,14,11,28,23,193, +2,192,87,94,23,193,1,91,159,38,11,90,161,38,36,11,27,248,22,62,23, +202,2,248,2,51,248,2,53,23,195,1,27,28,248,22,79,23,195,2,6,8, +8,109,97,105,110,46,114,107,116,249,22,137,7,23,197,2,6,4,4,46,114, +107,116,27,252,80,159,49,54,38,2,18,23,204,1,28,248,22,79,23,201,2, +23,201,1,87,94,23,201,1,248,22,72,23,201,2,28,248,22,79,23,201,2, +87,94,23,200,1,9,248,22,73,23,201,1,23,199,2,249,22,136,14,23,195, +1,23,196,1,28,248,22,178,6,23,198,2,87,94,23,194,1,27,28,23,199, +2,28,249,22,185,8,23,201,2,80,158,42,47,80,158,40,48,27,248,22,188, +4,23,201,2,28,248,22,182,13,23,194,2,91,159,39,11,90,161,39,36,11, +248,22,139,14,23,197,1,87,95,83,160,38,11,80,158,44,47,23,203,2,83, +160,38,11,80,158,44,48,192,192,11,11,27,28,23,194,2,23,194,1,87,94, +23,194,1,27,247,22,146,5,28,23,193,2,192,87,94,23,193,1,247,22,159, +14,27,250,22,150,2,80,159,45,44,38,249,22,71,23,205,2,23,199,2,11, +28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,161,38,36,11,248,2, +55,248,2,57,23,204,2,250,22,1,22,136,14,23,199,1,249,22,85,249,22, +2,32,0,89,162,8,44,37,44,9,222,33,59,23,200,1,248,22,81,27,248, +22,181,6,23,202,2,28,249,22,180,3,194,39,28,249,22,184,6,2,28,249, +22,136,7,204,249,22,168,3,198,39,249,22,137,7,250,22,136,7,205,36,249, +22,168,3,199,39,2,29,200,200,28,248,22,182,13,23,198,2,87,94,23,194, +1,28,248,22,141,14,23,198,2,27,248,22,145,14,23,199,2,91,159,39,11, +90,161,39,36,11,248,22,139,14,23,197,2,87,95,23,195,1,23,193,1,28, +249,22,169,14,2,60,248,22,187,13,23,197,1,249,80,159,45,53,38,23,198, +1,2,30,195,248,22,81,6,26,26,32,40,97,32,112,97,116,104,32,109,117, +115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,185,8,248, +22,72,23,200,2,2,27,27,250,22,150,2,80,159,43,44,38,249,22,71,23, +203,2,247,22,160,14,11,28,23,193,2,192,87,94,23,193,1,91,159,39,11, +90,161,38,36,11,27,248,22,96,23,203,2,248,2,61,248,2,63,23,195,1, +90,161,37,38,11,28,248,22,79,248,22,98,23,203,2,28,248,22,79,23,194, +2,249,22,173,14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27, +28,23,196,2,27,248,22,181,6,23,197,2,28,249,22,180,3,194,39,28,249, +22,184,6,2,28,249,22,136,7,23,200,2,249,22,168,3,198,39,249,22,137, +7,250,22,136,7,23,201,2,36,249,22,168,3,199,39,2,29,23,196,2,23, +196,2,28,248,22,79,23,195,2,6,8,8,109,97,105,110,46,114,107,116,28, +249,22,173,14,0,8,35,114,120,34,91,46,93,34,23,197,2,27,248,22,181, 6,23,197,2,28,249,22,180,3,194,39,28,249,22,184,6,2,28,249,22,136, 7,23,200,2,249,22,168,3,198,39,249,22,137,7,250,22,136,7,23,201,2, -36,249,22,168,3,199,39,2,29,23,196,2,23,196,2,28,248,22,79,23,195, -2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,173,14,0,8,35,114, -120,34,91,46,93,34,23,197,2,27,248,22,181,6,23,197,2,28,249,22,180, -3,194,39,28,249,22,184,6,2,28,249,22,136,7,23,200,2,249,22,168,3, -198,39,249,22,137,7,250,22,136,7,23,201,2,36,249,22,168,3,199,39,2, -29,23,196,2,23,196,2,249,22,137,7,23,197,2,6,4,4,46,114,107,116, -27,27,28,23,198,1,87,94,23,197,1,249,22,85,28,248,22,79,248,22,98, -23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,85,249,22,2, -32,0,89,162,8,44,37,44,9,222,33,67,248,22,98,23,211,2,23,198,1, -28,248,22,79,23,197,2,87,94,23,196,1,248,22,81,23,198,1,87,94,23, -197,1,23,196,1,252,80,159,51,54,38,2,18,23,206,1,248,22,72,23,199, -2,248,22,73,23,199,1,23,200,2,249,22,136,14,23,195,1,23,196,1,28, -249,22,185,8,248,22,72,23,200,2,64,102,105,108,101,27,248,22,145,14,249, -22,143,14,248,22,147,14,248,22,96,23,203,2,27,28,23,203,2,28,249,22, -185,8,23,205,2,80,158,46,47,80,158,44,48,27,248,22,188,4,23,205,2, -28,248,22,182,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,139,14, -23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,11,80, -158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,146, -5,28,23,193,2,192,87,94,23,193,1,247,22,159,14,91,159,39,11,90,161, -39,36,11,248,22,139,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22, -169,14,2,60,248,22,187,13,23,197,1,249,80,159,45,53,38,23,198,1,2, -30,195,12,87,94,28,28,248,22,182,13,23,194,2,10,248,22,137,8,23,194, -2,87,94,23,199,1,12,28,23,199,2,250,22,154,9,67,114,101,113,117,105, -114,101,249,22,162,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112, -97,116,104,126,97,28,23,198,2,248,22,72,23,199,2,6,0,0,23,202,1, -87,94,23,199,1,250,22,155,9,2,18,249,22,162,7,6,13,13,109,111,100, -117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,72,23,199,2,6, -0,0,23,200,2,27,28,248,22,137,8,23,195,2,249,22,142,8,23,196,2, -36,249,22,145,14,248,22,146,14,23,197,2,11,27,28,248,22,137,8,23,196, -2,249,22,142,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,159,39, -11,90,161,39,36,11,28,248,22,137,8,23,199,2,250,22,7,2,31,249,22, -142,8,23,203,2,38,2,31,248,22,139,14,23,198,2,87,95,23,195,1,23, -193,1,27,28,248,22,137,8,23,200,2,249,22,142,8,23,201,2,39,249,80, -159,47,53,38,23,197,2,5,0,27,28,248,22,137,8,23,201,2,249,22,142, -8,23,202,2,40,248,22,187,4,23,200,2,27,27,250,22,150,2,80,159,51, -43,38,248,22,130,15,247,22,162,12,11,28,23,193,2,192,87,94,23,193,1, -27,247,22,130,2,87,94,250,22,148,2,80,159,52,43,38,248,22,130,15,247, -22,162,12,195,192,87,95,28,23,208,1,27,250,22,150,2,23,197,2,197,11, -28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,159,50, -46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,23,196, -1,27,248,22,130,15,247,22,162,12,249,22,3,83,158,40,20,100,94,89,162, -8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,28,248, -22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,159,49, -59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,148,2,23, -197,1,197,10,12,28,28,248,22,137,8,23,202,1,11,28,248,22,178,6,23, -206,2,10,28,248,22,56,23,206,2,10,28,248,22,69,23,206,2,249,22,185, -8,248,22,72,23,208,2,2,27,11,250,22,148,2,80,159,50,44,38,28,248, -22,178,6,23,209,2,249,22,71,23,210,1,27,28,23,212,2,28,249,22,185, -8,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,22,188, -4,23,214,2,28,248,22,182,13,23,194,2,91,159,39,11,90,161,39,36,11, -248,22,139,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,83,160, -38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27, -247,22,146,5,28,23,193,2,192,87,94,23,193,1,247,22,159,14,249,22,71, -23,210,1,247,22,160,14,252,22,139,8,23,208,1,23,207,1,23,205,1,23, -203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,58,38, -249,22,27,11,80,159,39,52,38,248,22,166,4,80,159,37,51,38,248,22,145, -5,80,159,37,37,37,248,22,153,13,80,159,37,42,37,83,160,38,11,80,158, -36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20,105, -159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11,11, -11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,2,5, -72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,97,116, -104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,4,30,2, -7,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122, -97,116,105,111,110,3,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, -16,2,17,2,18,30,2,19,2,8,4,30,2,5,79,112,97,116,104,45,114, -101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105,110, -100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97,108, -45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74,114,101, -112,97,114,97,109,101,116,101,114,105,122,101,5,16,0,16,0,36,16,0,36, -16,12,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2,2,2, -17,2,16,2,18,48,11,11,39,36,11,11,11,16,2,2,20,2,21,16,2, -11,11,16,2,2,20,2,21,38,38,37,11,11,11,16,0,16,0,16,0,36, -36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15,83,158,36,16, -2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83,158,36,16,2, -248,22,134,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37,83,158, -36,16,2,89,162,44,38,8,37,2,3,223,0,33,41,80,159,36,37,37,83, -158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80,159,36,42,37, -83,158,36,16,2,247,22,133,2,80,159,36,43,37,83,158,36,16,2,247,22, -132,2,80,159,36,44,37,83,158,36,16,2,247,22,67,80,159,36,45,37,83, -158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110, -103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83,158,36,16,2, -11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8,25,2,16,222, -33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50,83,158,36,16, -2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83,158,39,20,99, -96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162,44,39,49,9, -223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208,80,159,36,51, -37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72,80,159,36,56, -37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33,73,80,159,36, -57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,4, -69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6970); +36,249,22,168,3,199,39,2,29,23,196,2,23,196,2,249,22,137,7,23,197, +2,6,4,4,46,114,107,116,27,28,23,197,1,87,94,23,196,1,249,22,85, +28,248,22,79,248,22,98,23,207,2,21,93,6,5,5,109,122,108,105,98,249, +22,1,22,85,249,22,2,32,0,89,162,8,44,37,45,9,222,33,67,248,22, +98,23,210,2,23,197,1,28,248,22,79,23,196,2,87,94,23,195,1,248,22, +81,23,197,1,87,94,23,196,1,23,195,1,27,252,80,159,51,54,38,2,18, +23,206,1,248,22,72,23,200,2,248,22,73,23,200,1,23,200,2,249,22,136, +14,23,195,1,23,197,1,28,249,22,185,8,248,22,72,23,200,2,64,102,105, +108,101,27,248,22,145,14,249,22,143,14,248,22,147,14,248,22,96,23,203,2, +27,28,23,203,2,28,249,22,185,8,23,205,2,80,158,46,47,80,158,44,48, +27,248,22,188,4,23,205,2,28,248,22,182,13,23,194,2,91,159,39,11,90, +161,39,36,11,248,22,139,14,23,197,1,87,95,83,160,38,11,80,158,48,47, +23,207,2,83,160,38,11,80,158,48,48,192,192,11,11,28,23,193,2,192,87, +94,23,193,1,27,247,22,146,5,28,23,193,2,192,87,94,23,193,1,247,22, +159,14,91,159,39,11,90,161,39,36,11,248,22,139,14,23,197,2,87,95,23, +195,1,23,193,1,28,249,22,169,14,2,60,248,22,187,13,23,197,1,249,80, +159,45,53,38,23,198,1,2,30,195,12,87,94,28,28,248,22,182,13,23,194, +2,10,248,22,137,8,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22, +154,9,67,114,101,113,117,105,114,101,249,22,162,7,6,17,17,98,97,100,32, +109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,72,23, +199,2,6,0,0,23,202,1,87,94,23,199,1,250,22,155,9,2,18,249,22, +162,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198, +2,248,22,72,23,199,2,6,0,0,23,200,2,27,28,248,22,137,8,23,195, +2,249,22,142,8,23,196,2,36,249,22,145,14,248,22,146,14,23,197,2,11, +27,28,248,22,137,8,23,196,2,249,22,142,8,23,197,2,37,248,80,159,42, +55,38,23,195,2,91,159,39,11,90,161,39,36,11,28,248,22,137,8,23,199, +2,250,22,7,2,31,249,22,142,8,23,203,2,38,2,31,248,22,139,14,23, +198,2,87,95,23,195,1,23,193,1,27,28,248,22,137,8,23,200,2,249,22, +142,8,23,201,2,39,249,80,159,47,53,38,23,197,2,5,0,27,28,248,22, +137,8,23,201,2,249,22,142,8,23,202,2,40,248,22,187,4,23,200,2,27, +27,250,22,150,2,80,159,51,43,38,248,22,130,15,247,22,162,12,11,28,23, +193,2,192,87,94,23,193,1,27,247,22,130,2,87,94,250,22,148,2,80,159, +52,43,38,248,22,130,15,247,22,162,12,195,192,87,95,28,23,208,1,27,250, +22,150,2,23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17, +80,159,51,46,38,80,159,50,46,38,247,22,19,250,22,25,248,22,23,23,197, +2,80,159,53,45,38,23,196,1,27,248,22,130,15,247,22,162,12,249,22,3, +83,158,40,20,100,94,89,162,8,44,37,55,9,226,12,11,2,3,33,68,23, +195,1,23,196,1,248,28,248,22,17,80,159,50,46,38,32,0,89,162,44,37, +42,9,222,33,69,80,159,49,59,37,89,162,44,36,51,9,227,13,9,8,4, +3,33,70,250,22,148,2,23,197,1,197,10,12,28,28,248,22,137,8,23,202, +1,11,28,248,22,178,6,23,206,2,10,28,248,22,56,23,206,2,10,28,248, +22,69,23,206,2,249,22,185,8,248,22,72,23,208,2,2,27,11,250,22,148, +2,80,159,50,44,38,28,248,22,178,6,23,209,2,249,22,71,23,210,1,27, +28,23,212,2,28,249,22,185,8,23,214,2,80,158,55,47,87,94,23,212,1, +80,158,53,48,27,248,22,188,4,23,214,2,28,248,22,182,13,23,194,2,91, +159,39,11,90,161,39,36,11,248,22,139,14,23,197,1,87,95,83,160,38,11, +80,158,57,47,23,23,83,160,38,11,80,158,57,48,192,192,11,11,28,23,193, +2,192,87,94,23,193,1,27,247,22,146,5,28,23,193,2,192,87,94,23,193, +1,247,22,159,14,249,22,71,23,210,1,247,22,160,14,252,22,139,8,23,208, +1,23,207,1,23,205,1,23,203,1,201,12,193,87,96,83,160,38,11,80,158, +36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,248,22,166,4, +80,159,37,51,38,248,22,145,5,80,159,37,37,37,248,22,153,13,80,159,37, +42,37,83,160,38,11,80,158,36,50,248,80,159,37,58,38,249,22,27,11,80, +159,39,52,38,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145, +2,1,2,1,29,11,11,11,11,11,10,38,80,158,36,36,20,105,159,37,16, +23,2,2,2,3,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63, +11,30,2,5,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,8, +30,2,7,2,8,4,30,2,7,1,23,101,120,116,101,110,100,45,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,3,2,9,2,10,2,11,2, +12,2,13,2,14,2,15,2,16,2,17,2,18,30,2,19,2,8,4,30,2, +5,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120, +10,30,2,5,73,102,105,110,100,45,99,111,108,45,102,105,108,101,3,30,2, +5,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,7,2,20, +2,21,30,2,19,74,114,101,112,97,114,97,109,101,116,101,114,105,122,101,5, +16,0,16,0,36,16,0,36,16,12,2,12,2,13,2,10,2,11,2,14,2, +15,2,3,2,9,2,2,2,17,2,16,2,18,48,11,11,39,36,11,11,11, +16,2,2,20,2,21,16,2,11,11,16,2,2,20,2,21,38,38,37,11,11, +11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36, +16,0,16,15,83,158,36,16,2,89,162,44,37,45,9,223,0,33,32,80,159, +36,59,37,83,158,36,16,2,248,22,134,8,69,115,111,45,115,117,102,102,105, +120,80,159,36,36,37,83,158,36,16,2,89,162,44,38,8,38,2,3,223,0, +33,41,80,159,36,37,37,83,158,36,16,2,32,0,89,162,8,44,37,42,2, +9,222,192,80,159,36,42,37,83,158,36,16,2,247,22,133,2,80,159,36,43, +37,83,158,36,16,2,247,22,132,2,80,159,36,44,37,83,158,36,16,2,247, +22,67,80,159,36,45,37,83,158,36,16,2,248,22,18,74,109,111,100,117,108, +101,45,108,111,97,100,105,110,103,80,159,36,46,37,83,158,36,16,2,11,80, +158,36,47,83,158,36,16,2,11,80,158,36,48,83,158,36,16,2,32,0,89, +162,44,38,8,42,2,16,222,33,47,80,159,36,49,37,83,158,36,16,2,11, +80,158,36,50,83,158,36,16,2,91,159,38,10,90,161,37,36,10,11,90,161, +37,37,10,83,158,39,20,99,96,2,18,89,162,8,44,37,51,9,224,2,0, +33,48,89,162,44,39,49,9,223,1,33,49,89,162,44,40,8,32,9,224,2, +0,33,71,208,80,159,36,51,37,83,158,36,16,2,89,162,44,36,45,2,20, +223,0,33,72,80,159,36,56,37,83,158,36,16,2,89,162,8,44,36,45,2, +21,223,0,33,73,80,159,36,57,37,96,29,94,2,4,68,35,37,107,101,114, +110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5, +2,19,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8532); } diff --git a/src/racket/src/env.c b/src/racket/src/env.c index 65b43a106c..660bb9ceb3 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -53,6 +53,7 @@ READ_ONLY static Scheme_Object *unshadowable_symbol; READ_ONLY static Scheme_Env *kernel_env; READ_ONLY static Scheme_Env *unsafe_env; READ_ONLY static Scheme_Env *flfxnum_env; +READ_ONLY static Scheme_Env *futures_env; #define MAX_CONST_LOCAL_POS 64 #define MAX_CONST_LOCAL_TYPES 2 @@ -423,6 +424,29 @@ static void init_flfxnum(Scheme_Env *env) #endif } +static void init_futures(Scheme_Env *env) +{ + Scheme_Module_Phase_Exports *pt; + REGISTER_SO(futures_env); + + futures_env = scheme_primitive_module(scheme_intern_symbol("#%futures"), env); + + scheme_init_futures(futures_env); + + scheme_finish_primitive_module(futures_env); + pt = futures_env->module->me->rt; + scheme_populate_pt_ht(pt); + scheme_protect_primitive_provide(futures_env, NULL); + +#if USE_COMPILED_STARTUP + if (builtin_ref_counter != (EXPECTED_PRIM_COUNT + EXPECTED_UNSAFE_COUNT + EXPECTED_FLFXNUM_COUNT + EXPECTED_FUTURES_COUNT)) { + printf("Futures count %d doesn't match expected count %d\n", + builtin_ref_counter - EXPECTED_PRIM_COUNT - EXPECTED_UNSAFE_COUNT - EXPECTED_FLFXNUM_COUNT, EXPECTED_FUTURES_COUNT); + abort(); + } +#endif +} + Scheme_Env *scheme_get_unsafe_env() { return unsafe_env; } @@ -431,6 +455,10 @@ Scheme_Env *scheme_get_flfxnum_env() { return flfxnum_env; } +Scheme_Env *scheme_get_futures_env() { + return futures_env; +} + static Scheme_Env *place_instance_init(void *stack_base, int initial_main_os_thread) { Scheme_Env *env; @@ -519,7 +547,7 @@ static Scheme_Env *place_instance_init(void *stack_base, int initial_main_os_thr #if defined(MZ_USE_PLACES) scheme_jit_fill_threadlocal_table(); #endif - scheme_init_futures(env); + scheme_init_futures_per_place(); scheme_init_foreign(env); @@ -728,6 +756,7 @@ static void make_kernel_env(void) init_unsafe(env); init_flfxnum(env); + init_futures(env); scheme_init_print_global_constants(); scheme_init_variable_references_constants(); @@ -1379,13 +1408,15 @@ Scheme_Object **scheme_make_builtin_references_table(void) scheme_misc_count += sizeof(Scheme_Object *) * (builtin_ref_counter + 1); #endif - for (j = 0; j < 3; j++) { + for (j = 0; j < 4; j++) { if (!j) kenv = kernel_env; else if (j == 1) kenv = unsafe_env; - else + else if (j == 2) kenv = flfxnum_env; + else + kenv = futures_env; ht = kenv->toplevel; @@ -1412,13 +1443,15 @@ Scheme_Hash_Table *scheme_map_constants_to_globals(void) result = scheme_make_hash_table(SCHEME_hash_ptr); - for (j = 0; j < 3; j++) { + for (j = 0; j < 4; j++) { if (!j) kenv = kernel_env; else if (j == 1) kenv = unsafe_env; - else + else if (j == 2) kenv = flfxnum_env; + else + kenv = futures_env; ht = kenv->toplevel; bs = ht->buckets; @@ -1442,13 +1475,15 @@ const char *scheme_look_for_primitive(void *code) long i; int j; - for (j = 0; j < 3; j++) { + for (j = 0; j < 4; j++) { if (!j) kenv = kernel_env; else if (j == 1) kenv = unsafe_env; - else + else if (j == 2) kenv = flfxnum_env; + else + kenv = futures_env; ht = kenv->toplevel; bs = ht->buckets; @@ -3067,7 +3102,8 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags, if (modname && !(flags & SCHEME_RESOLVE_MODIDS) && (!(scheme_is_kernel_modname(modname) || scheme_is_unsafe_modname(modname) - || scheme_is_flfxnum_modname(modname)) + || scheme_is_flfxnum_modname(modname) + || scheme_is_futures_modname(modname)) || (flags & SCHEME_REFERENCING))) { /* Create a module variable reference, so that idx is preserved: */ return scheme_hash_module_variable(env->genv, modidx, find_id, @@ -3133,6 +3169,15 @@ Scheme_Object *scheme_extract_flfxnum(Scheme_Object *o) return NULL; } +Scheme_Object *scheme_extract_futures(Scheme_Object *o) +{ + Scheme_Env *home = ((Scheme_Bucket_With_Home *)o)->home; + if (home && home->module && scheme_is_futures_modname(home->module->modname)) + return (Scheme_Object *)((Scheme_Bucket *)o)->val; + else + return NULL; +} + int scheme_env_check_reset_any_use(Scheme_Comp_Env *frame) { int any_use; diff --git a/src/racket/src/eval.c b/src/racket/src/eval.c index 5dac45fabd..24c9bab96e 100644 --- a/src/racket/src/eval.c +++ b/src/racket/src/eval.c @@ -6827,6 +6827,9 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, } else if (SAME_TYPE(SCHEME_TYPE(var), scheme_variable_type) && scheme_extract_flfxnum(var)) { return scheme_extract_flfxnum(var); + } else if (SAME_TYPE(SCHEME_TYPE(var), scheme_variable_type) + && scheme_extract_futures(var)) { + return scheme_extract_futures(var); } else if (SAME_TYPE(SCHEME_TYPE(var), scheme_variable_type) || SAME_TYPE(SCHEME_TYPE(var), scheme_module_variable_type)) return scheme_register_toplevel_in_prefix(var, env, rec, drec, diff --git a/src/racket/src/future.c b/src/racket/src/future.c index 490947e828..cd3f8e4a55 100644 --- a/src/racket/src/future.c +++ b/src/racket/src/future.c @@ -124,19 +124,20 @@ static Scheme_Object *processor_count(int argc, Scheme_Object *argv[]) return scheme_make_integer(1); } +static Scheme_Object *current_future(int argc, Scheme_Object *argv[]) +{ + return scheme_false; +} + # define FUTURE_PRIM_W_ARITY(name, func, a1, a2, env) GLOBAL_PRIM_W_ARITY(name, func, a1, a2, env) -void scheme_init_futures(Scheme_Env *env) +void scheme_init_futures(Scheme_Env *newenv) { - Scheme_Env *newenv; - - newenv = scheme_primitive_module(scheme_intern_symbol("#%futures"), - env); - FUTURE_PRIM_W_ARITY("future?", future_p, 1, 1, newenv); FUTURE_PRIM_W_ARITY("future", future, 1, 1, newenv); - FUTURE_PRIM_W_ARITY("touch", touch, 1, 1, newenv); FUTURE_PRIM_W_ARITY("processor-count", processor_count, 0, 0, newenv); + FUTURE_PRIM_W_ARITY("touch", touch, 1, 1, newenv); + FUTURE_PRIM_W_ARITY("current-future", current_future, 0, 0, newenv); scheme_finish_primitive_module(newenv); scheme_protect_primitive_provide(newenv, NULL); @@ -196,6 +197,7 @@ void scheme_init_futures_once() static Scheme_Object *future(int argc, Scheme_Object *argv[]); static Scheme_Object *touch(int argc, Scheme_Object *argv[]); static Scheme_Object *processor_count(int argc, Scheme_Object *argv[]); +static Scheme_Object *current_future(int argc, Scheme_Object *argv[]); static void futures_init(void); static void init_future_thread(struct Scheme_Future_State *fs, int i); @@ -294,15 +296,9 @@ typedef struct future_thread_params_t { /**********************************************************************/ /* Invoked by the runtime on startup to make primitives known */ -void scheme_init_futures(Scheme_Env *env) +void scheme_init_futures(Scheme_Env *newenv) { Scheme_Object *v; - Scheme_Env *newenv; - - futures_init(); - - v = scheme_intern_symbol("#%futures"); - newenv = scheme_primitive_module(v, env); scheme_add_global_constant( "future?", @@ -341,6 +337,15 @@ void scheme_init_futures(Scheme_Env *env) 1), newenv); + scheme_add_global_constant( + "current-future", + scheme_make_prim_w_arity( + current_future, + "current-future", + 0, + 0), + newenv); + scheme_finish_primitive_module(newenv); scheme_protect_primitive_provide(newenv, NULL); } @@ -350,6 +355,11 @@ void scheme_init_futures_once() init_cpucount(); } +void scheme_init_futures_per_place() +{ + futures_init(); +} + void futures_init(void) { Scheme_Future_State *fs; @@ -779,6 +789,12 @@ Scheme_Object *processor_count(int argc, Scheme_Object *argv[]) return scheme_make_integer(cpucount); } +Scheme_Object *current_future(int argc, Scheme_Object *argv[]) +/* Called in runtime thread */ +{ + return scheme_false; +} + /* Entry point for a worker thread allocated for executing futures. This function will never terminate (until the process dies). */ diff --git a/src/racket/src/module.c b/src/racket/src/module.c index 920c156497..f30677fdf3 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -141,6 +141,7 @@ READ_ONLY static Scheme_Object *kernel_symbol; READ_ONLY static Scheme_Object *kernel_modidx; READ_ONLY static Scheme_Module *kernel; READ_ONLY static Scheme_Object *flfxnum_modname; +READ_ONLY static Scheme_Object *futures_modname; READ_ONLY static Scheme_Object *unsafe_modname; /* global read-only phase wraps */ @@ -362,6 +363,7 @@ void scheme_init_module(Scheme_Env *env) REGISTER_SO(kernel_modidx); REGISTER_SO(unsafe_modname); REGISTER_SO(flfxnum_modname); + REGISTER_SO(futures_modname); kernel_symbol = scheme_intern_symbol("#%kernel"); kernel_modname = scheme_intern_resolved_module_path(kernel_symbol); kernel_modidx = scheme_make_modidx(scheme_make_pair(quote_symbol, @@ -371,7 +373,8 @@ void scheme_init_module(Scheme_Env *env) (void)scheme_hash_key(kernel_modidx); unsafe_modname = scheme_intern_resolved_module_path(scheme_intern_symbol("#%unsafe")); flfxnum_modname = scheme_intern_resolved_module_path(scheme_intern_symbol("#%flfxnum")); - + futures_modname = scheme_intern_resolved_module_path(scheme_intern_symbol("#%futures")); + REGISTER_SO(module_symbol); REGISTER_SO(module_begin_symbol); module_symbol = scheme_intern_symbol("module"); @@ -651,6 +654,39 @@ int scheme_is_flfxnum_modname(Scheme_Object *modname) return SAME_OBJ(modname, flfxnum_modname); } +int scheme_is_futures_modname(Scheme_Object *modname) +{ + return SAME_OBJ(modname, futures_modname); +} + +Scheme_Module *get_special_module(Scheme_Object *name) +{ + if (SAME_OBJ(name, kernel_modname)) + return kernel; + else if (SAME_OBJ(name, unsafe_modname)) + return scheme_get_unsafe_env()->module; + else if (SAME_OBJ(name, flfxnum_modname)) + return scheme_get_flfxnum_env()->module; + else if (SAME_OBJ(name, futures_modname)) + return scheme_get_futures_env()->module; + else + return NULL; +} + +Scheme_Env *get_special_modenv(Scheme_Object *name) +{ + if (SAME_OBJ(name, kernel_modname)) + return scheme_get_kernel_env(); + else if (SAME_OBJ(name, flfxnum_modname)) + return scheme_get_flfxnum_env(); + else if (SAME_OBJ(name, futures_modname)) + return scheme_get_futures_env(); + else if (SAME_OBJ(name, unsafe_modname)) + return scheme_get_unsafe_env(); + else + return NULL; +} + static int is_builtin_modname(Scheme_Object *modname) { return (SAME_OBJ(modname, kernel_modname) @@ -1880,7 +1916,8 @@ static Scheme_Object *namespace_unprotect_module(int argc, Scheme_Object *argv[] code_insp = scheme_get_param(scheme_current_config(), MZCONFIG_CODE_INSPECTOR); if (!SAME_OBJ(name, kernel_modname) - && !SAME_OBJ(name, flfxnum_modname)) { + && !SAME_OBJ(name, flfxnum_modname) + && !SAME_OBJ(name, futures_modname)) { if (SAME_OBJ(name, unsafe_modname)) menv2 = scheme_get_unsafe_env(); else @@ -2538,13 +2575,8 @@ void scheme_prep_namespace_rename(Scheme_Env *menv) idx = SCHEME_CAR(l); name = scheme_module_resolve(idx, 0); - if (SAME_OBJ(name, kernel_modname)) - im = kernel; - else if (SAME_OBJ(name, unsafe_modname)) - im = scheme_get_unsafe_env()->module; - else if (SAME_OBJ(name, flfxnum_modname)) - im = scheme_get_flfxnum_env()->module; - else + im = get_special_module(name); + if (!im) im = (Scheme_Module *)scheme_hash_get(menv->module_registry->loaded, name); add_simple_require_renames(NULL, rns, NULL, im, idx, shift, NULL, 0); @@ -2639,13 +2671,8 @@ static Scheme_Module *module_to_(const char *who, int argc, Scheme_Object *argv[ name = scheme_module_resolve(scheme_make_modidx(argv[0], scheme_false, scheme_false), (argc > 1) ? SCHEME_TRUEP(argv[1]) : 0); - if (SAME_OBJ(name, kernel_modname)) - m = kernel; - else if (SAME_OBJ(name, unsafe_modname)) - m = scheme_get_unsafe_env()->module; - else if (SAME_OBJ(name, flfxnum_modname)) - m = scheme_get_flfxnum_env()->module; - else { + m = get_special_module(name); + if (!m) { env = scheme_get_env(NULL); m = (Scheme_Module *)scheme_hash_get(env->module_registry->loaded, name); } @@ -3033,13 +3060,8 @@ static Scheme_Object *module_export_protected_p(int argc, Scheme_Object **argv) name = argv[1]; env = scheme_get_env(NULL); - if (SAME_OBJ(modname, kernel_modname)) - mv = (Scheme_Object *)kernel; - else if (SAME_OBJ(modname, unsafe_modname)) - mv = (Scheme_Object *)scheme_get_unsafe_env()->module; - else if (SAME_OBJ(modname, flfxnum_modname)) - mv = (Scheme_Object *)scheme_get_flfxnum_env()->module; - else + mv = (Scheme_Object *)get_special_module(modname); + if (!mv) mv = scheme_hash_get(env->module_registry->loaded, modname); if (!mv) { scheme_arg_mismatch("module-provide-protected?", @@ -3328,15 +3350,10 @@ void scheme_clear_modidx_cache(void) static Scheme_Module *module_load(Scheme_Object *name, Scheme_Env *env, const char *who) { - if (name == kernel_modname) - return kernel; - else if (name == unsafe_modname) - return scheme_get_unsafe_env()->module; - else if (name == flfxnum_modname) - return scheme_get_flfxnum_env()->module; - else { - Scheme_Module *m; + Scheme_Module *m; + m = get_special_module(name); + if (!m) { m = (Scheme_Module *)scheme_hash_get(env->module_registry->loaded, name); if (!m) { @@ -3354,9 +3371,9 @@ static Scheme_Module *module_load(Scheme_Object *name, Scheme_Env *env, const ch name, mred_note); return NULL; } - - return m; } + + return m; } static void setup_accessible_table(Scheme_Module *m) @@ -3414,15 +3431,15 @@ static void setup_accessible_table(Scheme_Module *m) Scheme_Env *scheme_module_access(Scheme_Object *name, Scheme_Env *env, int rev_mod_phase) { - if ((name == kernel_modname) && !rev_mod_phase) - return scheme_get_kernel_env(); - else if ((name == unsafe_modname) && !rev_mod_phase) - return scheme_get_unsafe_env(); - else if ((name == flfxnum_modname) && !rev_mod_phase) - return scheme_get_flfxnum_env(); - else { + Scheme_Env *menv; + + if (!rev_mod_phase) + menv = get_special_modenv(name); + else + menv = NULL; + + if (!menv) { Scheme_Object *chain; - Scheme_Env *menv; chain = env->modchain; if (rev_mod_phase && chain) { @@ -3440,9 +3457,9 @@ Scheme_Env *scheme_module_access(Scheme_Object *name, Scheme_Env *env, int rev_m if (rev_mod_phase && menv) menv = menv->exp_env; - - return menv; } + + return menv; } static void check_certified(Scheme_Object *stx, Scheme_Object *certs, @@ -3759,7 +3776,8 @@ int scheme_module_export_position(Scheme_Object *modname, Scheme_Env *env, Schem if (SAME_OBJ(modname, kernel_modname) || SAME_OBJ(modname, unsafe_modname) - || SAME_OBJ(modname, flfxnum_modname)) + || SAME_OBJ(modname, flfxnum_modname) + || SAME_OBJ(modname, futures_modname)) return -1; m = module_load(modname, env, NULL); @@ -3784,8 +3802,9 @@ Scheme_Object *scheme_module_syntax(Scheme_Object *modname, Scheme_Env *env, Sch name = SCHEME_STX_SYM(name); return scheme_lookup_in_table(kenv->syntax, (char *)name); } else if (SAME_OBJ(modname, unsafe_modname) - || SAME_OBJ(modname, flfxnum_modname)) { - /* no unsafe or flfxnum syntax */ + || SAME_OBJ(modname, flfxnum_modname) + || SAME_OBJ(modname, futures_modname)) { + /* no unsafe, flfxnum, or futures syntax */ return NULL; } else { Scheme_Env *menv; @@ -5177,13 +5196,8 @@ module_execute(Scheme_Object *data) env = scheme_environment_from_dummy(m->dummy); - if (SAME_OBJ(m->modname, kernel_modname)) - old_menv = scheme_get_kernel_env(); - else if (SAME_OBJ(m->modname, flfxnum_modname)) - old_menv = scheme_get_flfxnum_env(); - else if (SAME_OBJ(m->modname, unsafe_modname)) - old_menv = scheme_get_unsafe_env(); - else + old_menv = get_special_modenv(m->modname); + if (!old_menv) old_menv = (Scheme_Env *)scheme_hash_get(MODCHAIN_TABLE(env->modchain), m->modname); insp = scheme_get_param(scheme_current_config(), MZCONFIG_CODE_INSPECTOR); @@ -5916,7 +5930,8 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, if (SAME_OBJ(m->modname, kernel_modname) || SAME_OBJ(m->modname, unsafe_modname) - || SAME_OBJ(m->modname, flfxnum_modname)) { + || SAME_OBJ(m->modname, flfxnum_modname) + || SAME_OBJ(m->modname, futures_modname)) { /* Too confusing. Give it a different name while compiling. */ Scheme_Object *k2; const char *kname; @@ -5924,6 +5939,8 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, kname = "#%kernel"; else if (SAME_OBJ(m->modname, flfxnum_modname)) kname = "#%flfxnum"; + else if (SAME_OBJ(m->modname, futures_modname)) + kname = "#%futures"; else kname = "#%unsafe"; k2 = scheme_intern_resolved_module_path(scheme_make_symbol(kname)); /* uninterned! */ @@ -9248,13 +9265,16 @@ void scheme_do_module_rename_unmarshal(Scheme_Object *rn, Scheme_Object *info, name = scheme_module_resolve(idx, 0); - if (SAME_OBJ(kernel_modname, name)) { - me = kernel->me; - } else if (SAME_OBJ(unsafe_modname, name)) { - me = scheme_get_unsafe_env()->module->me; - } else if (SAME_OBJ(flfxnum_modname, name)) { - me = scheme_get_flfxnum_env()->module->me; - } else { + { + Scheme_Module *mod; + mod = get_special_module(name); + if (mod) + me = mod->me; + else + me = NULL; + } + + if (!me) { if (!export_registry) { env = scheme_get_env(scheme_current_config()); export_registry = env->module_registry->exports; diff --git a/src/racket/src/read.c b/src/racket/src/read.c index f29fba5267..c0d831bc2c 100644 --- a/src/racket/src/read.c +++ b/src/racket/src/read.c @@ -4828,7 +4828,10 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) break; case CPT_REFERENCE: l = read_compact_number(port); - RANGE_CHECK(l, < (EXPECTED_PRIM_COUNT + EXPECTED_UNSAFE_COUNT + EXPECTED_FLFXNUM_COUNT)); + RANGE_CHECK(l, < (EXPECTED_PRIM_COUNT + + EXPECTED_UNSAFE_COUNT + + EXPECTED_FLFXNUM_COUNT + + EXPECTED_FUTURES_COUNT)); return variable_references[l]; break; case CPT_LOCAL: diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index d7d0790ba7..0967b5337b 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -16,6 +16,7 @@ #define EXPECTED_PRIM_COUNT 1000 #define EXPECTED_UNSAFE_COUNT 69 #define EXPECTED_FLFXNUM_COUNT 58 +#define EXPECTED_FUTURES_COUNT 5 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 5252ed127c..172400e209 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -248,6 +248,7 @@ void scheme_init_place(Scheme_Env *env); void scheme_init_places_once(); void scheme_init_futures(Scheme_Env *env); void scheme_init_futures_once(); +void scheme_init_futures_per_place(); void scheme_init_print_buffers_places(void); void scheme_init_string_places(void); @@ -2284,6 +2285,7 @@ int scheme_is_imported(Scheme_Object *var, Scheme_Comp_Env *env); Scheme_Object *scheme_extract_unsafe(Scheme_Object *o); Scheme_Object *scheme_extract_flfxnum(Scheme_Object *o); +Scheme_Object *scheme_extract_futures(Scheme_Object *o); Scheme_Object *scheme_add_env_renames(Scheme_Object *stx, Scheme_Comp_Env *env, Scheme_Comp_Env *upto); @@ -3055,6 +3057,7 @@ Scheme_Env *scheme_get_kernel_env(); int scheme_is_kernel_env(); Scheme_Env *scheme_get_unsafe_env(); Scheme_Env *scheme_get_flfxnum_env(); +Scheme_Env *scheme_get_futures_env(); void scheme_install_initial_module_set(Scheme_Env *env); Scheme_Bucket_Table *scheme_clone_toplevel(Scheme_Bucket_Table *ht, Scheme_Env *home); @@ -3068,6 +3071,7 @@ Scheme_Module *scheme_extract_compiled_module(Scheme_Object *o); int scheme_is_kernel_modname(Scheme_Object *modname); int scheme_is_unsafe_modname(Scheme_Object *modname); int scheme_is_flfxnum_modname(Scheme_Object *modname); +int scheme_is_futures_modname(Scheme_Object *modname); void scheme_clear_modidx_cache(void); void scheme_clear_shift_cache(void); diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 425a9d47ec..93bbea30ef 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.0.1.2" +#define MZSCHEME_VERSION "5.0.1.3" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 0 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 2 +#define MZSCHEME_VERSION_W 3 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)