diff --git a/interface/future.retro b/interface/future.retro index d5d7b8c..fcacc7b 100644 --- a/interface/future.retro +++ b/interface/future.retro @@ -61,10 +61,10 @@ null terminated. The `as` strings are length-prefixed instead.) :as:th n:inc n:add ; :as:store a:th store ; -:as:fetch s:th fetch ; +:as:fetch as:th fetch ; :aa:first (a-n) #0 a:fetch ; -:aa:last (a-n) dup a:length n:dec aa:fetch ; +:aa:last (a-n) dup a:length n:dec a:fetch ; :as:first aa:first ; :as:last aa:last ; @@ -73,7 +73,7 @@ null terminated. The `as` strings are length-prefixed instead.) :as:dup a:dup ; :as:last aa:last ; -:as:temp aa:dup ; +:as:temp a:dup ; :as:trim-right (s-s) as:temp [ dup v:dec [ as:last #32 lteq? ] sip swap ] while @@ -108,8 +108,8 @@ null terminated. The `as` strings are length-prefixed instead.) :as:eq? (ss-f) aa:eq? ; :as:-eq? (ss-f) aa:-eq? ; -:aa:dup here [ dup a:length comma &comma a:for-each ] dip ; -:as:dup aa:dup ; +:a:dup here [ dup a:length comma &comma a:for-each ] dip ; +:as:dup a:dup ; :as:temp ; :as:keep ; diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index 9a85939..cdba9f0 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -10,8 +10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 20166; -CELL ngaImage[] = { 1793,19675,20121,20165,202301,415,387,1247,1535,0,10995,0,10,1,10,2,10,3,10, +CELL ngaImageCells = 20171; +CELL ngaImage[] = { 1793,19680,20126,20170,202301,415,387,1247,1535,0,10995,0,10,1,10,2,10,3,10, 4,10,5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10, 16,10,17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234, 1,2575,85000450,1,656912,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378, @@ -20,8 +20,8 @@ CELL ngaImage[] = { 1793,19675,20121,20165,202301,415,387,1247,1535,0,10995,0,10 1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58, 25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523, 13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793, - 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19930,17108737,3,2,524559,130, - 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18911,1247,167841793, + 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19935,17108737,3,2,524559,130, + 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18916,1247,167841793, 216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,134287361,217,221, 659201,216,10,659969,7,2049,58,25,17694978,58,242,9,84152833,48,319750404,241,117507601,244,184618754,45, 25,16974851,-1,168886532,1,134284289,1,257,134284289,0,244,660227,32,0,0,115,105,103,105,108, @@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,19675,20121,20165,202301,415,387,1247,1535,0,10995,0,10 110,58,105,110,99,0,659713,1,10,3114,3139,168,16059,210720197721,110,58,100,101,99,0, 659969,1,10,3128,3158,168,16059,8246617666422322998,110,58,98,101,116,119,101,101,110,63,0,67503109, 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,168,16059,249861296566813883,83,99, - 111,112,101,76,105,115,116,0,20023,20077,10,3172,3198,168,16059,5864091,123,123,0,2049, + 111,112,101,76,105,115,116,0,20028,20082,10,3172,3198,168,16059,5864091,123,123,0,2049, 1576,2,1,3187,2049,61,16,10,3190,3225,168,16059,-6305314778776785742,45,45,45,114,101,118,101, 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,168,16059,5864159,125, 125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, @@ -885,138 +885,138 @@ CELL ngaImage[] = { 1793,19675,20121,20165,202301,415,387,1247,1535,0,10995,0,10 17433,168,0,249881599579432661,97,115,58,108,101,110,103,116,104,0,15,10,17418,17446,168,0, 210706783919,97,115,58,116,104,0,2049,3125,2049,16777,10,17435,17465,168,0,7572169693067168,97,115,58, 115,116,111,114,101,0,2049,9219,16,10,17451,17483,168,0,7572169677116093,97,115,58,102,101, - 116,99,104,0,15,10,17469,17499,168,0,7572146430834761,97,97,58,102,105,114,115,116,0, - 1,0,2049,9236,10,17485,17517,168,0,229458982959509,97,97,58,108,97,115,116,0,2,2049, - 8598,2049,3139,10,17504,17537,168,0,7572169677258203,97,115,58,102,105,114,115,116,0,2049,17499, - 10,17523,17553,168,0,229459687396583,97,115,58,108,97,115,116,0,2049,17517,10,17540,17572,168, - 0,8246092782587163933,97,115,58,105,110,100,101,120,47,99,0,2049,17323,10,17556,17587,168,0, - 6953323852444,97,115,58,100,117,112,0,2049,8810,10,17575,17603,168,0,229459687396583,97,115,58,108, - 97,115,116,0,2049,17517,10,17590,17619,168,0,229459687688233,97,115,58,116,101,109,112,0, - 10,17606,17639,168,0,-7106699936504964166,97,115,58,116,114,105,109,45,114,105,103,104,116,0, - 2049,17619,1793,17661,2,2049,3881,1793,17655,2049,17603,1,32,2049,2659,10,1,17648,2049,2241, - 4,10,1,17643,2049,2372,2,2049,3864,10,17620,17680,156,0,210690259379,83,116,97,114,116, - 0,0,17669,17690,156,0,193455868,69,110,100,0,0,17681,17700,156,0,193463204,76,101,110, - 0,0,17691,17715,168,0,7572371885291434,102,105,110,100,45,101,110,100,0,2,2049,17433,2, - 4097,17700,67502597,2049,16777,2049,3125,4097,17690,2049,3125,10,17701,17745,168,0,7572707956476599,110,101,119, - 45,115,105,122,101,0,3841,17680,67502597,4,2049,16790,3841,17700,4,2049,16790,10,17731,17768, - 168,0,210723988469,112,97,116,99,104,0,67502597,16,10,17620,17789,168,0,-3569308011477864665,97,115,58, - 116,114,105,109,45,108,101,102,116,0,2049,17587,2,1,0,2049,17483,1,32,11, - 1793,17828,2,4097,17680,2049,17715,1793,17819,2049,58,1,32,12,67502597,3841,17690,12,21,10, - 1,17808,2049,2372,2049,17745,2049,17768,10,1,17801,9,10,17771,17845,168,0,229459687702255,97,115, - 58,116,114,105,109,0,2049,17789,2049,17639,10,17832,17863,180,0,229482595734745,115,105,103,105, - 108,58,34,0,2049,1977,1793,17877,2,2049,104,2049,16858,1,16858,2049,4741,10,1,17867, - 2049,2229,10,17850,17899,168,0,-4580099406349869736,97,115,58,102,111,114,45,101,97,99,104,0, - 2049,8777,10,17882,17915,168,0,229458982815749,97,97,58,104,97,115,104,0,1,5381,4,1793, - 17928,4,1,33,2049,16803,2049,16777,10,1,17920,2049,8777,10,17902,17946,168,0,229459687252823,97, - 115,58,104,97,115,104,0,2049,17915,10,17933,17961,168,0,6953302506774,97,97,58,101,113, - 63,0,2049,17915,4,2049,17915,11,10,17949,17981,168,0,229458980699715,97,97,58,45,101,113, - 63,0,2049,17915,4,2049,17915,12,10,17968,18000,168,0,6953323853352,97,115,58,101,113,63, - 0,2049,17961,10,17988,18016,168,0,229459685136789,97,115,58,45,101,113,63,0,2049,17981,10, - 18003,18031,168,0,6953302505866,97,97,58,100,117,112,0,2049,1977,1793,18045,2,2049,8598,2049, - 16858,1,16858,2049,8777,10,1,18035,2049,2229,10,18019,18062,168,0,6953323852444,97,115,58,100, - 117,112,0,2049,18031,10,18050,18078,168,0,229459687688233,97,115,58,116,101,109,112,0,10, - 18065,18092,168,0,229459687364536,97,115,58,107,101,101,112,0,10,18079,18110,168,0,-4580098812306212145,97, - 115,58,116,111,45,117,112,112,101,114,0,1793,18121,2049,18062,1,6804,2049,17063,2049, - 18078,10,1,18112,2049,16869,10,18093,18143,168,0,-4580098812316913748,97,115,58,116,111,45,108,111, - 119,101,114,0,1793,18154,2049,18062,1,6829,2049,17063,2049,18078,10,1,18145,2049,16869,10, - 18126,18177,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111,107,101,0,1,3, - 2049,10534,2049,10515,10,18126,18200,168,0,8246131600073141446,98,108,111,99,107,58,114,101,97,100, - 0,1,0,2049,18177,10,18184,18222,168,0,-4578818303223200395,98,108,111,99,107,58,119,114,105, - 116,101,0,1,1,2049,18177,10,18205,18247,168,0,-4036225629868593021,98,108,111,99,107,58,115, - 101,116,45,102,105,108,101,0,1,2,2049,18177,10,18227,18265,168,0,229480770855518,115,58, - 115,112,108,105,116,0,2049,7184,10,18252,18291,168,0,6119006473764520940,115,58,115,112,108,105, - 116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10,18268,18316,168,0,-2157201768052001381, - 115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10, - 18294,18343,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105, - 110,103,63,0,2049,5286,10,18319,18370,168,0,-3160266536000611262,97,58,99,111,110,116,97,105, - 110,115,45,115,116,114,105,110,103,63,0,2049,9099,10,18346,18389,168,0,8246014626430519194,97, - 58,105,110,100,101,120,45,111,102,0,2049,9291,10,18373,18415,168,0,-5025353456659034242,97,58, - 105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9416,10,18392, - 18434,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18418,18460, - 168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103, - 0,2049,5069,10,18437,18479,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0, - 2049,2075,4,2049,130,2049,130,10,18463,18505,168,0,-3421095308458227740,100,111,117,98,108,101,58, - 102,101,116,99,104,0,2049,58,4,15,10,18487,18528,168,0,-3421095308442276665,100,111,117,98, - 108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,18510,18554,168, - 0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,2049,18479,1,18505,2049, - 8460,10,18536,18578,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109, - 5,67503109,6,10,18561,18599,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0, - 67503109,67503109,5,5,8,6,6,10,18583,18623,168,0,8246228896775123014,100,111,117,98,108,101,58, - 115,105,112,0,1,2217,2049,2229,2049,18599,10,18607,18646,168,0,8246632143337714634,109,101,109,58, - 105,110,118,111,107,101,0,1,15,2049,10534,2049,10515,10,18630,0,156,0,210667451248,65, - 76,76,79,67,0,18653,1,156,0,6384048135,70,82,69,69,0,18664,2,156,0,210689088690, - 83,84,79,82,69,0,18674,3,156,0,210673137615,70,69,84,67,72,0,18685,4,156, - 0,6952683137271,82,69,83,73,90,69,0,18607,18723,168,0,249897943727936361,109,101,109,58,97,108, - 108,111,99,0,1,0,2049,18646,10,18708,18743,168,0,249897943749573803,109,101,109,58,115,116, - 111,114,101,0,1,2,2049,18646,10,18728,18763,168,0,249897943733622728,109,101,109,58,102,101, - 116,99,104,0,1,3,2049,18646,10,18748,18782,168,0,7572664961638592,109,101,109,58,102,114, - 101,101,0,1,1,2049,18646,10,18768,18803,168,0,8246632143679146032,109,101,109,58,114,101,115, - 105,122,101,0,1,4,2049,18646,10,18787,18823,168,0,249897943730056489,109,101,109,58,99,101, - 108,108,43,0,1,8,19,17,10,18808,18850,168,0,1050530996183190288,109,101,109,58,102,101, - 116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,18823,15,5,2049,18763, - 6,10,18828,18883,168,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,111,117, - 98,108,101,0,5,5,2049,2217,1,1,2049,18823,6,2049,18743,6,2049,18743,10,18861, - 18907,168,19694,193470948,84,73,66,0,1,7,15,10,18898,18927,168,19694,8246457295145463473,105,109,97, - 103,101,58,115,97,118,101,0,1,1000,2049,10534,2049,10515,10,18911,18945,168,0,210711039690, - 101,100,105,116,63,0,2,1793,18952,1,8,11,10,1,18948,1793,18960,1,127,11, - 10,1,18956,2049,2255,22,10,18934,18978,168,0,6953539406400,103,97,116,104,101,114,0,2049, - 18945,1,17,1,4134,2049,66,10,18966,18998,168,0,210709415765,99,121,99,108,101,0,2049, - 10864,2049,2217,4,8,2049,2644,25,3,2049,18978,1,18998,7,10,18911,19031,168,19694,-4557881830897049127, - 112,97,114,115,101,45,117,110,116,105,108,0,1793,19043,2049,4451,2049,4234,2049,18998, - 771,2049,4096,10,1,19033,2049,4260,10,19014,19059,168,19694,210726130610,115,58,103,101,116,0, - 1793,19081,1793,19067,1,13,11,10,1,19063,1793,19075,1,10,11,10,1,19071,2049,2255, - 22,10,1,19061,2049,19031,10,19048,19097,168,19694,210708950412,99,108,101,97,114,0,2049,4472, - 92,94,91,50,74,92,94,91,48,59,48,72,0,1,19099,2049,8246,2049,10640,10, - 19086,19131,156,19694,6952575930081,78,111,69,99,104,111,0,0,19119,19141,156,0,193454829,69,79, - 84,0,0,19132,19156,156,0,7571133383038306,73,103,110,111,114,105,110,103,0,0,19142,19172, - 168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19156,10,19157,19188,168,0, - 229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,19175,19205,168,0,210710254026, - 100,111,110,101,63,0,2,4097,19141,1793,19214,1,13,11,10,1,19210,1793,19222,1, - 10,11,10,1,19218,1793,19230,1,32,11,10,1,19226,2049,2298,22,22,10,19194,19247, - 168,0,6385195044,101,111,108,63,0,3841,19141,1793,19255,1,13,11,10,1,19251,1793,19263, - 1,10,11,10,1,19259,2049,2255,22,10,19237,19281,168,0,6954126150804,118,97,108,105,100, - 63,0,2,2049,104,2049,2812,10,19269,19302,168,0,249883998779477802,99,104,101,99,107,45,101, - 111,102,0,2,1793,19309,1,-1,11,10,1,19305,1793,19317,1,4,11,10,1,19313, - 2049,2255,22,1793,19327,2049,10931,10,1,19324,9,10,19287,19339,168,0,5863258,98,115,0, - 2049,4212,1,2,2049,2675,1793,19351,2049,4160,3,10,1,19347,9,2049,4160,3,10,19331, - 19372,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,19379,1,8,11,10, - 1,19375,1793,19387,1,127,11,10,1,19383,2049,2255,22,1793,19397,2049,19339,10,1,19394, - 9,10,19358,19412,168,0,210708806723,99,104,101,99,107,0,2049,19302,2049,19372,10,19401,19432, - 168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10864,2,2049,4134,10,19417, - 19450,168,0,6953366942559,98,117,102,102,101,114,0,1793,19460,2049,18907,2049,4234,8,2049,4096, - 10,1,19452,2049,4260,10,19438,19481,168,0,8246863741238799215,114,101,97,100,45,116,111,107,101, - 110,0,1793,19497,1793,19492,2049,19432,2049,19412,2049,19205,10,1,19485,2049,2397,10,1,19483, - 2049,19450,2049,4587,10,19465,19515,168,0,210716150453,105,110,112,117,116,0,2049,19481,2049,19281, - 10,19504,19533,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,19172,1793,19551,771,2049, - 19247,1793,19547,1,19156,2049,3931,10,1,19542,9,10,1,19537,2049,2862,1,415,1,17, - 2049,66,10,19119,19570,180,19694,5861507,47,47,0,2049,15503,1,19156,2049,3916,10,19562,19589, - 168,19694,6953343520347,98,97,110,110,101,114,0,2049,19188,2049,4472,82,69,84,82,79,32, - 49,50,32,40,37,110,46,37,110,41,92,110,0,1,19593,2049,8246,2049,10640,2049, - 10716,2049,1545,2049,10716,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,37,110, - 32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,110,0,1,19629,2049, - 8246,2049,10640,10,19577,19675,168,19694,6953744547860,108,105,115,116,101,110,0,3841,19131,1793,19682, - 2049,19589,10,1,19679,2049,74,2049,19515,2049,19533,1,19686,7,10,105,110,116,101,114, - 102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,46,114,101,116,114, - 111,0,19663,19734,156,0,229441520490121,83,111,117,114,99,101,115,0,1,19971,0,0,0, + 116,99,104,0,2049,17446,15,10,17469,17501,168,0,7572146430834761,97,97,58,102,105,114,115, + 116,0,1,0,2049,9236,10,17487,17519,168,0,229458982959509,97,97,58,108,97,115,116,0, + 2,2049,8598,2049,3139,2049,9236,10,17506,17541,168,0,7572169677258203,97,115,58,102,105,114,115, + 116,0,2049,17501,10,17527,17557,168,0,229459687396583,97,115,58,108,97,115,116,0,2049,17519, + 10,17544,17576,168,0,8246092782587163933,97,115,58,105,110,100,101,120,47,99,0,2049,17323,10, + 17560,17591,168,0,6953323852444,97,115,58,100,117,112,0,2049,8810,10,17579,17607,168,0,229459687396583, + 97,115,58,108,97,115,116,0,2049,17519,10,17594,17623,168,0,229459687688233,97,115,58,116, + 101,109,112,0,2049,8810,10,17610,17645,168,0,-7106699936504964166,97,115,58,116,114,105,109,45, + 114,105,103,104,116,0,2049,17623,1793,17667,2,2049,3881,1793,17661,2049,17607,1,32,2049, + 2659,10,1,17654,2049,2241,4,10,1,17649,2049,2372,2,2049,3864,10,17626,17686,156,0, + 210690259379,83,116,97,114,116,0,0,17675,17696,156,0,193455868,69,110,100,0,0,17687,17706, + 156,0,193463204,76,101,110,0,0,17697,17721,168,0,7572371885291434,102,105,110,100,45,101,110, + 100,0,2,2049,17433,2,4097,17706,67502597,2049,16777,2049,3125,4097,17696,2049,3125,10,17707,17751, + 168,0,7572707956476599,110,101,119,45,115,105,122,101,0,3841,17686,67502597,4,2049,16790,3841,17706, + 4,2049,16790,10,17737,17774,168,0,210723988469,112,97,116,99,104,0,67502597,16,10,17626,17795, + 168,0,-3569308011477864665,97,115,58,116,114,105,109,45,108,101,102,116,0,2049,17591,2,1, + 0,2049,17483,1,32,11,1793,17834,2,4097,17686,2049,17721,1793,17825,2049,58,1,32,12, + 67502597,3841,17696,12,21,10,1,17814,2049,2372,2049,17751,2049,17774,10,1,17807,9,10,17777, + 17851,168,0,229459687702255,97,115,58,116,114,105,109,0,2049,17795,2049,17645,10,17838,17869,180, + 0,229482595734745,115,105,103,105,108,58,34,0,2049,1977,1793,17883,2,2049,104,2049,16858,1, + 16858,2049,4741,10,1,17873,2049,2229,10,17856,17905,168,0,-4580099406349869736,97,115,58,102,111,114, + 45,101,97,99,104,0,2049,8777,10,17888,17921,168,0,229458982815749,97,97,58,104,97,115, + 104,0,1,5381,4,1793,17934,4,1,33,2049,16803,2049,16777,10,1,17926,2049,8777,10, + 17908,17952,168,0,229459687252823,97,115,58,104,97,115,104,0,2049,17921,10,17939,17967,168,0, + 6953302506774,97,97,58,101,113,63,0,2049,17921,4,2049,17921,11,10,17955,17987,168,0,229458980699715, + 97,97,58,45,101,113,63,0,2049,17921,4,2049,17921,12,10,17974,18006,168,0,6953323853352, + 97,115,58,101,113,63,0,2049,17967,10,17994,18022,168,0,229459685136789,97,115,58,45,101, + 113,63,0,2049,17987,10,18009,18036,168,0,210704781289,97,58,100,117,112,0,2049,1977,1793, + 18050,2,2049,8598,2049,16858,1,16858,2049,8777,10,1,18040,2049,2229,10,18025,18067,168,0, + 6953323852444,97,115,58,100,117,112,0,2049,18036,10,18055,18083,168,0,229459687688233,97,115,58,116, + 101,109,112,0,10,18070,18097,168,0,229459687364536,97,115,58,107,101,101,112,0,10,18084, + 18115,168,0,-4580098812306212145,97,115,58,116,111,45,117,112,112,101,114,0,1793,18126,2049,18067, + 1,6804,2049,17063,2049,18083,10,1,18117,2049,16869,10,18098,18148,168,0,-4580098812316913748,97,115,58, + 116,111,45,108,111,119,101,114,0,1793,18159,2049,18067,1,6829,2049,17063,2049,18083,10, + 1,18150,2049,16869,10,18131,18182,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111, + 107,101,0,1,3,2049,10534,2049,10515,10,18131,18205,168,0,8246131600073141446,98,108,111,99,107, + 58,114,101,97,100,0,1,0,2049,18182,10,18189,18227,168,0,-4578818303223200395,98,108,111,99, + 107,58,119,114,105,116,101,0,1,1,2049,18182,10,18210,18252,168,0,-4036225629868593021,98,108, + 111,99,107,58,115,101,116,45,102,105,108,101,0,1,2,2049,18182,10,18232,18270, + 168,0,229480770855518,115,58,115,112,108,105,116,0,2049,7184,10,18257,18296,168,0,6119006473764520940,115, + 58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10, + 18273,18321,168,0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,97,114, + 63,0,2049,4857,10,18299,18348,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115, + 45,115,116,114,105,110,103,63,0,2049,5286,10,18324,18375,168,0,-3160266536000611262,97,58,99, + 111,110,116,97,105,110,115,45,115,116,114,105,110,103,63,0,2049,9099,10,18351, + 18394,168,0,8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9291,10,18378,18420, + 168,0,-5025353456659034242,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103, + 0,2049,9416,10,18397,18439,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0, + 2049,4779,10,18423,18465,168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115, + 116,114,105,110,103,0,2049,5069,10,18442,18484,168,0,8246228896775126019,100,111,117,98,108,101, + 58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,18468,18510,168,0,-3421095308458227740,100,111, + 117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10,18492,18533,168,0, + -3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61, + 16,10,18515,18559,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0, + 2049,18484,1,18510,2049,8460,10,18541,18583,168,0,-4575607512064199915,100,111,117,98,108,101,58,115, + 119,97,112,0,67503109,5,67503109,6,10,18566,18604,168,0,8246228896775106679,100,111,117,98,108,101, + 58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,18588,18628,168,0,8246228896775123014,100,111, + 117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,18604,10,18612,18651,168,0, + 8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10534,2049,10515,10,18635, + 0,156,0,210667451248,65,76,76,79,67,0,18658,1,156,0,6384048135,70,82,69,69,0, + 18669,2,156,0,210689088690,83,84,79,82,69,0,18679,3,156,0,210673137615,70,69,84,67, + 72,0,18690,4,156,0,6952683137271,82,69,83,73,90,69,0,18612,18728,168,0,249897943727936361,109, + 101,109,58,97,108,108,111,99,0,1,0,2049,18651,10,18713,18748,168,0,249897943749573803,109, + 101,109,58,115,116,111,114,101,0,1,2,2049,18651,10,18733,18768,168,0,249897943733622728,109, + 101,109,58,102,101,116,99,104,0,1,3,2049,18651,10,18753,18787,168,0,7572664961638592,109, + 101,109,58,102,114,101,101,0,1,1,2049,18651,10,18773,18808,168,0,8246632143679146032,109,101, + 109,58,114,101,115,105,122,101,0,1,4,2049,18651,10,18792,18828,168,0,249897943730056489,109, + 101,109,58,99,101,108,108,43,0,1,8,19,17,10,18813,18855,168,0,1050530996183190288,109, + 101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049, + 18828,15,5,2049,18768,6,10,18833,18888,168,0,1730340976492540563,109,101,109,58,115,116,111,114, + 101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049,18828,6,2049,18748, + 6,2049,18748,10,18866,18912,168,19699,193470948,84,73,66,0,1,7,15,10,18903,18932,168, + 19699,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10534,2049,10515,10, + 18916,18950,168,0,210711039690,101,100,105,116,63,0,2,1793,18957,1,8,11,10,1,18953, + 1793,18965,1,127,11,10,1,18961,2049,2255,22,10,18939,18983,168,0,6953539406400,103,97,116, + 104,101,114,0,2049,18950,1,17,1,4134,2049,66,10,18971,19003,168,0,210709415765,99,121, + 99,108,101,0,2049,10864,2049,2217,4,8,2049,2644,25,3,2049,18983,1,19003,7,10, + 18916,19036,168,19699,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,19048,2049, + 4451,2049,4234,2049,19003,771,2049,4096,10,1,19038,2049,4260,10,19019,19064,168,19699,210726130610,115, + 58,103,101,116,0,1793,19086,1793,19072,1,13,11,10,1,19068,1793,19080,1,10,11, + 10,1,19076,2049,2255,22,10,1,19066,2049,19036,10,19053,19102,168,19699,210708950412,99,108,101, + 97,114,0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1,19104, + 2049,8246,2049,10640,10,19091,19136,156,19699,6952575930081,78,111,69,99,104,111,0,0,19124,19146, + 156,0,193454829,69,79,84,0,0,19137,19161,156,0,7571133383038306,73,103,110,111,114,105,110, + 103,0,0,19147,19177,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19161, + 10,19162,19193,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10, + 19180,19210,168,0,210710254026,100,111,110,101,63,0,2,4097,19146,1793,19219,1,13,11,10, + 1,19215,1793,19227,1,10,11,10,1,19223,1793,19235,1,32,11,10,1,19231,2049,2298, + 22,22,10,19199,19252,168,0,6385195044,101,111,108,63,0,3841,19146,1793,19260,1,13,11, + 10,1,19256,1793,19268,1,10,11,10,1,19264,2049,2255,22,10,19242,19286,168,0,6954126150804, + 118,97,108,105,100,63,0,2,2049,104,2049,2812,10,19274,19307,168,0,249883998779477802,99,104, + 101,99,107,45,101,111,102,0,2,1793,19314,1,-1,11,10,1,19310,1793,19322,1, + 4,11,10,1,19318,2049,2255,22,1793,19332,2049,10931,10,1,19329,9,10,19292,19344,168, + 0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,19356,2049,4160,3,10,1,19352,9, + 2049,4160,3,10,19336,19377,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793, + 19384,1,8,11,10,1,19380,1793,19392,1,127,11,10,1,19388,2049,2255,22,1793,19402, + 2049,19344,10,1,19399,9,10,19363,19417,168,0,210708806723,99,104,101,99,107,0,2049,19307, + 2049,19377,10,19406,19437,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10864, + 2,2049,4134,10,19422,19455,168,0,6953366942559,98,117,102,102,101,114,0,1793,19465,2049,18912, + 2049,4234,8,2049,4096,10,1,19457,2049,4260,10,19443,19486,168,0,8246863741238799215,114,101,97,100, + 45,116,111,107,101,110,0,1793,19502,1793,19497,2049,19437,2049,19417,2049,19210,10,1,19490, + 2049,2397,10,1,19488,2049,19455,2049,4587,10,19470,19520,168,0,210716150453,105,110,112,117,116, + 0,2049,19486,2049,19286,10,19509,19538,168,0,229479082815460,112,114,111,99,101,115,115,0,2049, + 19177,1793,19556,771,2049,19252,1793,19552,1,19161,2049,3931,10,1,19547,9,10,1,19542,2049, + 2862,1,415,1,17,2049,66,10,19124,19575,180,19699,5861507,47,47,0,2049,15503,1,19161, + 2049,3916,10,19567,19594,168,19699,6953343520347,98,97,110,110,101,114,0,2049,19193,2049,4472,82, + 69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1,19598, + 2049,8246,2049,10640,2049,10716,2049,1545,2049,10716,18,2049,1545,2049,4472,37,110,32,77,97, + 120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101,92, + 110,0,1,19634,2049,8246,2049,10640,10,19582,19680,168,19699,6953744547860,108,105,115,116,101,110, + 0,3841,19136,1793,19687,2049,19594,10,1,19684,2049,74,2049,19520,2049,19538,1,19691,7,10, + 105,110,116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105,120, + 46,114,101,116,114,111,0,19668,19739,156,0,229441520490121,83,111,117,114,99,101,115,0, + 1,19976,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,19721,19874,168,0,6953711201841,107,110,111,119,110,63,0,2,1,19734,2049,9099, - 10,19862,19891,168,0,210716136861,105,110,100,101,120,0,1,19734,4,2049,9416,1,19734,4, - 2049,9236,10,19880,19914,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500,2,1,19734, - 2049,3864,3841,19734,1,19734,17,16,10,1793,19969,2049,15438,2049,19874,1793,19939,2049,19891,10, - 1,19936,1793,19946,2049,19914,10,1,19943,2049,66,1793,19959,1,192,1,2,17,8,10, - 1,19952,2049,2229,2049,1576,2049,186,16,10,1,19930,100,105,99,116,45,119,111,114, - 100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,19663,20009,168, - 19971,229461403550098,100,58,119,111,114,100,115,0,1793,20018,2049,190,2049,10640,2049,10610,10,1, - 20011,2049,8491,10,19996,20041,168,19971,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116, - 104,0,2049,1977,2049,5573,1793,20072,2049,190,2,2049,1977,2049,5286,1793,20061,2049,10640,2049, - 10610,10,1,20056,1793,20067,3,10,1,20065,2049,66,10,1,20047,2049,8491,10,20023,20098, - 168,19971,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2, - 2049,1977,2049,5519,1793,20110,2049,10640,2049,10610,10,1,20105,1793,20116,3,10,1,20114,2049, - 66,10,20023,20149,168,19971,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,105,110, - 110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,20160,2049,190,2049,20098, - 10,1,20155,2049,8491,10,0 }; + 0,0,0,0,0,0,0,0,19726,19879,168,0,6953711201841,107,110,111,119,110,63,0, + 2,1,19739,2049,9099,10,19867,19896,168,0,210716136861,105,110,100,101,120,0,1,19739,4, + 2049,9416,1,19739,4,2049,9236,10,19885,19919,168,0,6953974036516,114,101,99,111,114,100,0, + 2049,4500,2,1,19739,2049,3864,3841,19739,1,19739,17,16,10,1793,19974,2049,15438,2049,19879, + 1793,19944,2049,19896,10,1,19941,1793,19951,2049,19919,10,1,19948,2049,66,1793,19964,1,192, + 1,2,17,8,10,1,19957,2049,2229,2049,1576,2049,186,16,10,1,19935,100,105,99, + 116,45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116, + 104,0,19668,20014,168,19976,229461403550098,100,58,119,111,114,100,115,0,1793,20023,2049,190,2049, + 10640,2049,10610,10,1,20016,2049,8491,10,20001,20046,168,19976,-3502157631813457253,100,58,119,111,114,100, + 115,45,119,105,116,104,0,2049,1977,2049,5573,1793,20077,2049,190,2,2049,1977,2049,5286, + 1793,20066,2049,10640,2049,10610,10,1,20061,1793,20072,3,10,1,20070,2049,66,10,1,20052, + 2049,8491,10,20028,20103,168,19976,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108, + 101,102,116,0,2,2049,1977,2049,5519,1793,20115,2049,10640,2049,10610,10,1,20110,1793,20121, + 3,10,1,20119,2049,66,10,20028,20154,168,19976,2947807019553410009,100,58,119,111,114,100,115,45, + 98,101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793, + 20165,2049,190,2049,20103,10,1,20160,2049,8491,10,0 }; diff --git a/vm/nga-swift/image.swift b/vm/nga-swift/image.swift deleted file mode 100644 index 9e0c218..0000000 --- a/vm/nga-swift/image.swift +++ /dev/null @@ -1,494 +0,0 @@ -func loadImage() { - var standard = [ - 1793,9629,9619,9643,202107,376,348,1027,1535,0,10,1,10,2,10,3,10,4,10, - 5,10,6,10,7,10,8,10,9,10,10,11,10,12,10,13,10,14,10,15, - 10,16,10,17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25, - 10,68223234,1,2575,85000450,1,656912,116,161,268505089,67,66,285281281,0,67,2063,10,101384453,0,9, - 10,2049,60,25,459011,80,524546,80,302256641,1,10,16974595,0,50529798,10,25,524547,99,50529798,10, - 17108738,1,251790353,101777669,1,17565186,90,524545,94,68,167838467,-1,134287105,3,63,659457,3,459023,111,2049, - 60,25,2049,111,1793,118,2049,118,117506307,0,111,0,524545,29,116,168820993,0,130,1642241,130, - 134283523,11,116,1793,111,524545,2049,111,1793,111,16846593,130,144,161,1793,68,16846593,130,116,161, - 1793,68,7,10,659713,1,659713,2,659713,3,1793,171,17108737,3,2,524559,111,2049,111,2049, - 111,2049,125,168820998,2,532,1027,167841793,184,9,17826049,0,184,2,15,25,524546,167,134287105,185, - 99,2305,186,459023,194,134287361,185,189,659201,184,10,659969,7,2049,60,25,17694978,58,210,9, - 84152833,48,319750404,209,117507601,212,184618754,45,25,16974851,-1,168886532,1,134284289,1,225,134284289,0,212,660227, - 32,0,0,115,105,103,105,108,58,115,0,285278479,242,6,2576,524546,85,1641217,1,167838467, - 239,2049,254,2049,250,524545,242,204,17826050,241,0,2572,2563,2049,232,1793,137,459023,137,17760513, - 149,3,169,8,251727617,3,2,2049,163,16,168820993,-1,130,2049,204,2049,163,459023,137,285282049, - 3,2,134287105,130,289,524545,1793,111,16846593,3,0,111,8,659201,3,524545,29,116,17043201,3, - 11,2049,116,2049,111,268505092,130,1642241,130,656131,659201,3,524545,11,116,2049,111,459009,23,116, - 459009,58,116,459009,19,116,459009,21,116,1793,9,10,524546,163,134284303,165,1807,1027,1642241,241, - 285282049,356,1,459012,351,117509889,184,351,134287105,356,204,16845825,0,364,348,1793,68,1793,378,17826050, - 356,260,8,117506305,357,367,68,2116,11340,11700,11400,13685,13104,12432,12402,9603,9801,11514,11413,11110, - 12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320,11960,13908,10088,10605,11865,11025,0,2049,204, - 987393,1,1793,111,524546,454,2049,452,2049,452,17891588,2,454,8,17045505,-24,-16,17043736,-8,1118488, - 1793,111,17043202,1,169021201,2049,60,25,33883396,101450758,6404,459011,444,34668804,2,2049,441,524545,386,444, - 302056196,386,659969,1,0,13,155,100,117,112,0,463,15,155,100,114,111,112,0,470, - 17,155,115,119,97,112,0,478,25,155,99,97,108,108,0,486,30,155,101,113, - 63,0,494,32,155,45,101,113,63,0,501,34,155,108,116,63,0,509,36,155, - 103,116,63,0,516,38,155,102,101,116,99,104,0,523,40,155,115,116,111,114, - 101,0,532,42,155,43,0,541,44,155,45,0,546,46,155,42,0,551,48,155, - 47,109,111,100,0,556,50,155,97,110,100,0,564,52,155,111,114,0,571,54, - 155,120,111,114,0,577,56,155,115,104,105,102,116,0,584,342,161,112,117,115, - 104,0,593,345,161,112,111,112,0,601,339,161,48,59,0,608,60,149,102,101, - 116,99,104,45,110,101,120,116,0,614,63,149,115,116,111,114,101,45,110,101, - 120,116,0,628,232,149,115,58,116,111,45,110,117,109,98,101,114,0,642,99, - 149,115,58,101,113,63,0,657,85,149,115,58,108,101,110,103,116,104,0,666, - 68,149,99,104,111,111,115,101,0,678,78,155,105,102,0,688,76,149,45,105, - 102,0,694,271,161,115,105,103,105,108,58,40,0,701,130,137,67,111,109,112, - 105,108,101,114,0,712,3,137,72,101,97,112,0,724,111,149,44,0,732,125, - 149,115,44,0,737,131,161,59,0,743,298,161,91,0,748,314,161,93,0,753, - 2,137,68,105,99,116,105,111,110,97,114,121,0,758,162,149,100,58,108,105, - 110,107,0,772,163,149,100,58,120,116,0,782,165,149,100,58,99,108,97,115, - 115,0,790,167,149,100,58,110,97,109,101,0,801,149,149,99,108,97,115,115, - 58,119,111,114,100,0,811,161,149,99,108,97,115,115,58,109,97,99,114,111, - 0,825,137,149,99,108,97,115,115,58,100,97,116,97,0,840,169,149,100,58, - 97,100,100,45,104,101,97,100,101,114,0,854,272,161,115,105,103,105,108,58, - 35,0,870,278,161,115,105,103,105,108,58,58,0,881,292,161,115,105,103,105, - 108,58,38,0,892,276,161,115,105,103,105,108,58,36,0,903,329,161,114,101, - 112,101,97,116,0,914,331,161,97,103,97,105,110,0,924,376,149,105,110,116, - 101,114,112,114,101,116,0,933,204,149,100,58,108,111,111,107,117,112,0,946, - 155,149,99,108,97,115,115,58,112,114,105,109,105,116,105,118,101,0,958,4, - 137,86,101,114,115,105,111,110,0,977,423,149,105,0,988,111,149,100,0,993, - 417,149,114,0,998,209,137,66,97,115,101,0,1003,348,149,101,114,114,58,110, - 111,116,102,111,117,110,100,0,115,116,111,114,101,0,110,0,101,116,0,101, - 114,118,101,0,115,0,0,0,0,0,63,64,91,92,93,94,96,123,124,125, - 126,0,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89, - 90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1011,1543,149, - 69,79,77,0,1,-3,15,10,1536,1556,149,100,101,112,116,104,0,1,-1,15, - 10,1547,1570,149,100,58,108,97,115,116,0,1,2,15,10,1560,1587,149,100,58, - 108,97,115,116,46,120,116,0,2049,1570,2049,163,15,10,1574,1609,149,100,58,108, - 97,115,116,46,99,108,97,115,115,0,2049,1570,2049,165,15,10,1593,1630,149,100, - 58,108,97,115,116,46,110,97,109,101,0,2049,1570,2049,167,10,1615,1646,149,114, - 101,99,108,97,115,115,0,2049,1570,2049,165,16,10,1635,1665,149,105,109,109,101, - 100,105,97,116,101,0,1,161,2049,1646,10,1652,1678,149,100,97,116,97,0,1, - 137,2049,1646,10,1670,1696,149,112,114,105,109,105,116,105,118,101,0,1,155,2049, - 1646,10,1683,1706,161,40,0,10,1701,1712,161,41,0,10,1707,1728,149,99,111,109, - 112,105,108,101,58,108,105,116,0,1,1,2049,111,2049,111,10,1713,1751,149,99, - 111,109,112,105,108,101,58,106,117,109,112,0,1,1793,2049,111,2049,111,10,1735, - 1774,149,99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,111,2049, - 111,10,1758,1796,149,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049, - 111,10,1781,1815,149,99,111,109,112,105,108,105,110,103,63,0,1,130,15,10, - 1801,1830,161,115,105,103,105,108,58,96,0,2049,232,2049,111,10,1819,1846,161,115, - 105,103,105,108,58,92,0,2049,423,10,1835,1860,161,115,105,103,105,108,58,94, - 0,2049,417,10,1849,1871,149,104,101,114,101,0,1,3,15,10,1863,1886,161,115, - 105,103,105,108,58,64,0,2049,204,2049,163,15,2049,1815,1793,1902,1,3841,2049,111, - 2049,111,10,1,1895,1793,1908,15,10,1,1906,2049,68,10,1875,1924,161,115,105,103, - 105,108,58,33,0,2049,204,2049,163,15,2049,1815,1793,1940,1,4097,2049,111,2049,111, - 10,1,1933,1793,1946,16,10,1,1944,2049,68,10,1913,1963,149,100,58,99,114,101, - 97,116,101,0,1,137,1,0,2049,169,2049,1871,2049,1570,2049,163,16,10,1951,1986, - 149,118,97,114,45,110,0,2049,1963,2049,111,10,1977,1998,149,118,97,114,0,134284289, - 0,1986,10,1991,2011,149,99,111,110,115,116,0,2049,1963,2049,1570,2049,163,16,10, - 2002,2027,155,116,117,99,107,0,100926722,10,2019,2037,155,111,118,101,114,0,67502597,10, - 2029,2046,155,110,105,112,0,772,10,2039,2061,155,100,114,111,112,45,112,97,105, - 114,0,771,10,2048,2071,155,63,100,117,112,0,6402,10,2063,2085,149,100,117,112, - 45,112,97,105,114,0,67502597,67502597,10,2073,2095,149,100,105,112,0,525572,6,10,2088, - 2105,149,115,105,112,0,67502597,1,25,2049,2095,10,2098,2117,149,98,105,0,1,2105, - 2049,2095,8,10,2111,2130,149,98,105,42,0,1,2095,2049,2095,8,10,2123,2143,149, - 98,105,64,0,2,2049,2130,10,2136,2154,149,116,114,105,0,1793,2163,1,2105,2049, - 2095,2049,2105,10,1,2156,2049,2095,8,10,2147,2177,149,116,114,105,42,0,1793,2194, - 1793,2187,4,1,2095,2049,2095,10,1,2181,2049,2095,2049,2095,10,1,2179,2049,2095,8, - 10,2169,2208,149,116,114,105,64,0,2,2,2049,2177,10,2200,2222,149,119,104,105, - 108,101,0,1793,2231,525570,1639430,3,1,2224,7,10,1,2224,8,3,10,2213,2245,149, - 117,110,116,105,108,0,1793,2256,525570,385942534,-1,25,3,1,2247,7,10,1,2247,8, - 3,10,2236,2270,149,116,105,109,101,115,0,1793,2282,4,25,33886721,1,2053,1542,1, - 2273,7,10,1,2272,8,3,10,2261,2298,161,115,105,103,105,108,58,124,0,2049, - 204,1793,2306,2049,163,15,10,1,2302,1793,2314,2049,165,15,10,1,2310,2049,2117,2049, - 1815,1793,2329,1,137,2049,2095,2049,1774,10,1,2322,1,25,2049,68,10,2287,2344,149, - 84,82,85,69,0,1,-1,10,2336,2356,149,70,65,76,83,69,0,1,0,10, - 2347,2367,149,99,97,115,101,0,1793,2372,67502597,11,10,1,2369,2049,2095,4,1793,2384, - 772,8,2049,2344,10,1,2379,1793,2392,3,2049,2356,10,1,2388,2049,68,25,6,3, - 3,10,2359,2411,149,115,58,99,97,115,101,0,1793,2417,67502597,2049,99,10,1,2413, - 2049,2095,4,1793,2429,772,8,2049,2344,10,1,2424,1793,2437,3,2049,2356,10,1,2433, - 2049,68,25,6,3,3,10,2401,2453,149,110,111,116,0,1,-1,23,10,2446,2466, - 149,108,116,101,113,63,0,2049,2085,101516555,22,10,2457,2480,149,103,116,101,113,63, - 0,4,2049,2466,10,2471,2493,149,110,58,77,65,88,0,1,-5,15,10,2484,2506, - 149,110,58,77,73,78,0,1,-4,15,10,2497,2521,149,110,58,122,101,114,111, - 63,0,1,0,11,10,2510,2537,149,110,58,45,122,101,114,111,63,0,1,0, - 12,10,2525,2556,149,110,58,110,101,103,97,116,105,118,101,63,0,1,0,13, - 10,2541,2575,149,110,58,112,111,115,105,116,105,118,101,63,0,1,-1,14,10, - 2560,2603,149,110,58,115,116,114,105,99,116,108,121,45,112,111,115,105,116,105, - 118,101,63,0,1,0,14,10,2579,2618,149,110,58,101,118,101,110,63,0,1, - 2,20,3,2049,2521,10,2607,2635,149,110,58,111,100,100,63,0,2049,2618,2049,2453, - 10,2625,2647,149,105,102,59,0,67502597,1,78,2049,2095,25,6,771,10,2640,2664,149, - 45,105,102,59,0,67502597,1,76,2049,2095,2049,2453,25,6,771,10,2656,2682,161,105, - 102,58,0,1,25,2049,111,1,3,2049,111,10,2675,2699,161,45,105,102,58,0, - 1,1644289,2049,111,1,-1,2049,111,1,3,2049,111,10,2691,2719,155,114,111,116,0, - 67503109,10,2712,2726,155,47,0,197652,10,2721,2735,155,109,111,100,0,788,10,2728,2746, - 149,110,58,112,111,119,0,1,1,4,1793,2754,67502597,19,10,1,2751,2049,2270,772, - 10,2737,2772,149,110,58,110,101,103,97,116,101,0,1,-1,19,10,2760,2788,149, - 110,58,115,113,117,97,114,101,0,4866,10,2776,2800,149,110,58,115,113,114,116, - 0,1,1,1793,2818,2049,2085,197652,67502597,18,1,2,197652,25,17,1,2804,7,10,1, - 2804,8,772,10,2790,2832,149,110,58,109,105,110,0,2049,2085,13,1793,2839,3,10, - 1,2837,1793,2845,772,10,1,2843,2049,68,10,2823,2859,149,110,58,109,97,120,0, - 2049,2085,14,1793,2866,3,10,1,2864,1793,2872,772,10,1,2870,2049,68,10,2850,2886, - 149,110,58,97,98,115,0,2,2049,2556,1,2772,9,10,2877,2904,149,110,58,108, - 105,109,105,116,0,4,5,2049,2832,6,2049,2859,10,2893,2921,149,110,58,105,110, - 99,0,1,1,17,10,2912,2934,149,110,58,100,101,99,0,1,1,18,10,2925, - 2952,149,110,58,98,101,116,119,101,101,110,63,0,67503109,1793,2960,67503109,67503109,2049,2904, - 10,1,2955,2049,2105,11,10,2938,2978,149,118,58,105,110,99,45,98,121,0,1793, - 2982,4367,10,1,2980,2049,2105,16,10,2966,3000,149,118,58,100,101,99,45,98,121, - 0,1793,3004,1180687,10,1,3002,2049,2105,16,10,2988,3019,149,118,58,105,110,99,0, - 1,1,4,2049,2978,10,3010,3034,149,118,58,100,101,99,0,1,1,4,2049,3000, - 10,3025,3051,149,118,58,108,105,109,105,116,0,251790597,1542,2049,2904,4100,10,3040,3065, - 149,118,58,111,110,0,2049,2344,4100,10,3057,3078,149,118,58,111,102,102,0,2049, - 2356,4100,10,3069,3091,149,97,108,108,111,116,0,1,3,2049,2978,10,3082,3110,149, - 118,58,112,114,101,115,101,114,118,101,0,983556,1793,3118,1,25,2049,2095,10,1, - 3113,2049,2095,4100,10,3096,3136,149,118,58,117,112,100,97,116,101,0,4,1793,3143, - 15,4,8,10,1,3139,2049,2105,16,10,3124,3157,149,99,111,112,121,0,1793,3166, - 285278725,1,33951492,268767489,1,6,10,1,3159,2049,2270,771,10,3149,3185,149,83,99,111,112, - 101,76,105,115,116,0,9437,9535,10,3172,3194,149,123,123,0,2049,1570,2,1,3185, - 2049,63,16,10,3188,3219,149,45,45,45,114,101,118,101,97,108,45,45,45,0, - 2049,1570,1,3185,2049,2921,16,10,3203,3233,149,125,125,0,1,3185,2049,60,4,15, - 11,1793,3247,3841,3185,4097,2,10,1,3242,1793,3273,3841,3185,1793,3268,1,2,983567,1, - 3185,2049,2921,1641487,3,1,3257,7,10,1,3255,8,16,10,1,3251,2049,68,10,3227, - 3287,137,115,116,97,114,116,0,0,10,3278,3296,137,101,110,100,0,0,10,3289, - 3311,149,116,101,114,109,105,110,97,116,101,0,1,0,3841,3296,16,10,3227,3333, - 149,98,117,102,102,101,114,58,115,116,97,114,116,0,3841,3287,10,3317,3350,149, - 98,117,102,102,101,114,58,101,110,100,0,3841,3296,10,3336,3367,149,98,117,102, - 102,101,114,58,97,100,100,0,3841,3296,16,1,3296,2049,3019,2049,3311,10,3353,3391, - 149,98,117,102,102,101,114,58,103,101,116,0,1,3296,2049,3034,3841,3296,15,2049, - 3311,10,3377,3417,149,98,117,102,102,101,114,58,101,109,112,116,121,0,3841,3287, - 4097,3296,2049,3311,10,3401,3439,149,98,117,102,102,101,114,58,115,105,122,101,0, - 3841,3296,3841,3287,18,10,3424,3459,149,98,117,102,102,101,114,58,115,101,116,0, - 4097,3287,2049,3417,10,3445,3483,149,98,117,102,102,101,114,58,112,114,101,115,101, - 114,118,101,0,3841,3287,3841,3296,1793,3496,1,25,2049,2095,4097,3287,10,1,3489,2049, - 2095,4097,3296,10,3464,3518,137,84,101,109,112,83,116,114,105,110,103,115,0,32, - 3503,3536,137,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,3519,3548, - 149,83,84,82,73,78,71,83,0,2049,1543,3841,3518,3841,3536,19,18,10,3537,3568, - 137,67,117,114,114,101,110,116,0,0,10,3557,3583,149,115,58,112,111,105,110, - 116,101,114,0,3841,3568,3841,3536,19,2049,3548,17,10,3570,3602,149,115,58,110,101, - 120,116,0,1,3568,2049,3019,3841,3568,3841,3518,11,1793,3618,1,0,4097,3568,10,1, - 3613,9,10,3537,3632,149,115,58,116,101,109,112,0,2,2049,85,2049,2921,2049,3583, - 4,2049,3157,2049,3583,2049,3602,10,3622,3658,149,115,58,101,109,112,116,121,0,2049, - 3583,2049,3602,1,0,67502597,16,10,3647,3677,149,115,58,115,107,105,112,0,6,1793, - 3685,68223234,1,786703,0,10,1,3680,2049,2222,2049,2934,5,10,3667,3703,149,115,58,107, - 101,101,112,0,2049,1815,1793,3712,1,3677,2049,1774,10,1,3707,9,2049,1871,1,125, - 2049,2095,2049,137,10,3693,3735,161,115,105,103,105,108,58,39,0,2049,1815,1,3703, - 1,3632,2049,68,10,3724,3754,149,115,58,99,104,111,112,0,2049,3632,2,2049,85, - 67502597,17,2049,2934,1,0,4,16,10,3744,3781,149,115,58,114,101,118,101,114,115, - 101,0,1793,3823,2,2049,3632,2049,3459,1,85,1793,3799,2,2049,85,17,2049,2934,10, - 1,3792,2049,2117,4,1793,3813,2,15,2049,3367,2049,2934,10,1,3806,2049,2270,3,2049, - 3333,2049,3632,10,1,3783,2049,3483,10,3768,3841,149,115,58,112,114,101,112,101,110, - 100,0,2049,3632,1793,3865,2,2049,85,17,1793,3857,2,2049,85,2049,2921,10,1,3851, - 2049,2095,4,2049,3157,10,1,3845,2049,2105,10,3828,3882,149,115,58,97,112,112,101, - 110,100,0,4,2049,3841,10,3870,3900,149,115,58,102,111,114,45,101,97,99,104, - 0,1793,3915,67502597,6415,3,67502597,67502597,251987205,2054,101777670,1,1,3902,7,10,1,3902,8,771, - 10,3886,3934,149,115,58,105,110,100,101,120,45,111,102,0,4,1793,3948,68223234,1, - 6415,33883396,101450758,6404,3,1,3937,7,10,1,3937,1793,3957,18,2049,2934,772,10,1,3952, - 1793,3966,2049,85,67502597,11,10,1,3961,2049,2154,1793,3976,3,1,-1,10,1,3972,9, - 10,3920,4000,149,115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63, - 0,2049,3934,1,-1,12,10,3980,4016,149,115,58,104,97,115,104,0,1,5381,4, - 1793,4024,286458116,33,10,1,4021,2049,3900,10,4006,4036,137,83,114,99,0,0,4029,4044, - 137,84,97,114,0,0,4037,4052,137,80,97,100,0,0,4045,4058,137,73,0,0, - 4053,4064,137,70,0,0,4059,4071,137,65,116,0,0,4065,4085,149,116,101,114,109, - 105,110,97,116,101,0,1,0,3841,4052,3841,4044,2049,85,17,16,10,4072,4107,149, - 101,120,116,114,97,99,116,0,3841,4036,3841,4058,17,3841,4052,3841,4044,2049,85,2049, - 3157,10,4096,4132,149,99,111,109,112,97,114,101,0,3841,4052,3841,4044,2049,99,3841, - 4064,22,4097,4064,3841,4064,1793,4152,3841,4058,4097,4071,10,1,4147,2049,76,10,4121,4165, - 149,110,101,120,116,0,1,4058,2049,3019,10,4006,4192,149,115,58,99,111,110,116, - 97,105,110,115,45,115,116,114,105,110,103,63,0,4097,4044,4097,4036,2049,3658,4097, - 4052,1,0,4097,4058,1,0,4097,4064,3841,4036,2049,85,1793,4223,2049,4107,2049,4085,2049, - 4132,2049,4165,10,1,4214,2049,2270,3841,4064,10,4170,4237,137,83,116,114,0,0,4230, - 4249,149,101,120,116,114,97,99,116,0,2049,2085,3841,4237,4,2049,3157,3841,-1,67502597, - 17,1,0,4,16,10,4238,4274,149,99,104,101,99,107,0,1,4249,2049,2095,1793, - 4285,1,2921,2049,2095,10,1,4280,2049,2095,3841,4237,2049,4016,67502597,11,10,4265,4308,149, - 108,111,99,97,116,105,111,110,0,67503109,67503109,1793,4341,1793,4336,4,1793,4322,67502597,2049, - 2521,21,10,1,4317,2049,2095,4,1793,4332,772,2,10,1,4329,9,10,1,4314,2049, - 2095,10,1,4312,2049,2095,10,4296,4355,149,115,101,116,117,112,0,2049,3658,4097,4237, - 1,0,67503109,67503109,1,85,1,4016,2049,2117,2049,3658,2049,3459,1793,4379,67502597,2049,85,10, - 1,4375,2049,2095,4,10,4170,4406,149,115,58,105,110,100,101,120,45,111,102,45, - 115,116,114,105,110,103,0,67502597,1793,4432,1793,4425,2049,4355,1793,4420,2049,4274,2049,4308, - 10,1,4415,2049,2270,10,1,4411,2049,3483,771,3,10,1,4409,2049,2095,18,1,2, - 18,1,-1,2049,2859,10,4385,4457,149,115,58,102,105,108,116,101,114,0,1793,4485, - 2049,3658,2049,3459,4,1793,4477,2049,2085,4,8,1,3367,1,15,2049,68,10,1,4466, - 2049,3900,3,2049,3333,10,1,4459,2049,3483,10,4445,4499,149,115,58,109,97,112,0, - 1793,4521,2049,3658,2049,3459,4,1793,4513,67502597,8,2049,3367,10,1,4508,2049,3900,3,2049, - 3333,10,1,4501,2049,3483,10,4490,4538,149,115,58,115,117,98,115,116,114,0,1793, - 4544,17,2049,3658,10,1,4540,2049,2095,1793,4556,67502597,1,3157,2049,2095,10,1,4550,2049, - 2105,67502597,1793,4569,17,1,0,4,16,10,1,4563,2049,2095,10,4526,4585,149,115,58, - 114,105,103,104,116,0,67502597,2049,85,67502597,18,4,2049,4538,10,4574,4604,149,115,58, - 108,101,102,116,0,1,0,4,2049,4538,10,4594,4628,149,115,58,98,101,103,105, - 110,115,45,119,105,116,104,63,0,2,2049,85,1,17,2049,2095,2049,4604,2049,99, - 10,4610,4656,149,115,58,101,110,100,115,45,119,105,116,104,63,0,2,2049,85, - 1,17,2049,2095,2049,4585,2049,99,10,4640,4678,149,115,58,99,111,112,121,0,67502597, - 2049,85,2049,2921,2049,3157,10,4668,4698,149,115,58,68,73,71,73,84,83,0,2049, - 3677,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,1,4700, - 10,4686,4741,149,115,58,65,83,67,73,73,45,76,79,87,69,82,67,65,83, - 69,0,2049,3677,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, - 113,114,115,116,117,118,119,120,121,122,0,1,4743,10,4720,4794,149,115,58,65, - 83,67,73,73,45,85,80,80,69,82,67,65,83,69,0,2049,3677,65,66,67, - 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, - 88,89,90,0,1,4796,10,4773,4845,149,115,58,65,83,67,73,73,45,76,69, - 84,84,69,82,83,0,2049,3677,97,98,99,100,101,102,103,104,105,106,107,108, - 109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70, - 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, - 0,1,4847,10,4826,4920,149,115,58,80,85,78,67,84,85,65,84,73,79,78, - 0,2049,3677,95,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,58, - 59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,0,1,4922,1,95, - 67502597,16,10,4903,4978,137,115,58,87,72,73,84,69,83,80,65,67,69,0,32, - 9,10,13,0,4962,4988,161,39,0,1,3658,2049,149,10,4983,4998,161,36,0,1, - 0,2049,137,10,4993,0,137,65,83,67,73,73,58,78,85,76,0,5003,27,137, - 65,83,67,73,73,58,69,83,67,0,5016,8,137,65,83,67,73,73,58,66, - 83,0,5029,9,137,65,83,67,73,73,58,72,84,0,5041,10,137,65,83,67, - 73,73,58,76,70,0,5053,11,137,65,83,67,73,73,58,86,84,0,5065,12, - 137,65,83,67,73,73,58,70,70,0,5077,13,137,65,83,67,73,73,58,67, - 82,0,5089,32,137,65,83,67,73,73,58,83,80,65,67,69,0,5101,127,137, - 65,83,67,73,73,58,68,69,76,0,5116,1,137,65,83,67,73,73,58,83, - 79,72,0,5129,2,137,65,83,67,73,73,58,83,84,88,0,5142,3,137,65, - 83,67,73,73,58,69,84,88,0,5155,4,137,65,83,67,73,73,58,69,79, - 84,0,5168,5,137,65,83,67,73,73,58,69,78,81,0,5181,6,137,65,83, - 67,73,73,58,65,67,75,0,5194,7,137,65,83,67,73,73,58,66,69,76, - 0,5207,14,137,65,83,67,73,73,58,83,79,0,5220,15,137,65,83,67,73, - 73,58,83,73,0,5232,16,137,65,83,67,73,73,58,68,76,69,0,5244,17, - 137,65,83,67,73,73,58,68,67,49,0,5257,18,137,65,83,67,73,73,58, - 68,67,50,0,5270,19,137,65,83,67,73,73,58,68,67,51,0,5283,20,137, - 65,83,67,73,73,58,68,67,52,0,5296,21,137,65,83,67,73,73,58,78, - 65,75,0,5309,22,137,65,83,67,73,73,58,83,89,78,0,5322,23,137,65, - 83,67,73,73,58,69,84,66,0,5335,24,137,65,83,67,73,73,58,67,65, - 78,0,5348,25,137,65,83,67,73,73,58,69,77,0,5361,26,137,65,83,67, - 73,73,58,83,85,66,0,5373,28,137,65,83,67,73,73,58,70,83,0,5386, - 29,137,65,83,67,73,73,58,71,83,0,5398,30,137,65,83,67,73,73,58, - 82,83,0,5410,31,137,65,83,67,73,73,58,85,83,0,5422,5450,149,99,58, - 108,111,119,101,114,99,97,115,101,63,0,1,97,1,122,2049,2952,10,5434,5473, - 149,99,58,117,112,112,101,114,99,97,115,101,63,0,1,65,1,90,2049,2952, - 10,5457,5493,149,99,58,108,101,116,116,101,114,63,0,1,5450,1,5473,2049,2117, - 22,10,5480,5513,149,99,58,100,105,103,105,116,63,0,1,48,1,57,2049,2952, - 10,5501,5534,149,99,58,118,105,115,105,98,108,101,63,0,1,32,1,126,2049, - 2952,10,5520,5553,149,99,58,118,111,119,101,108,63,0,2049,3677,97,101,105,111, - 117,65,69,73,79,85,0,1,5555,4,2049,4000,10,5541,5588,149,99,58,99,111, - 110,115,111,110,97,110,116,63,0,2,2049,5493,1793,5598,2049,5553,2049,2453,10,1, - 5593,1793,5606,3,2049,2356,10,1,5602,2049,68,10,5572,5628,149,99,58,119,104,105, - 116,101,115,112,97,99,101,63,0,1,4978,4,2049,4000,10,5611,5651,149,99,58, - 45,108,111,119,101,114,99,97,115,101,63,0,2049,5450,2049,2453,10,5634,5673,149, - 99,58,45,117,112,112,101,114,99,97,115,101,63,0,2049,5473,2049,2453,10,5656, - 5691,149,99,58,45,100,105,103,105,116,63,0,2049,5513,2049,2453,10,5678,5714,149, - 99,58,45,119,104,105,116,101,115,112,97,99,101,63,0,2049,5628,2049,2453,10, - 5696,5734,149,99,58,45,118,105,115,105,98,108,101,63,0,2049,5534,2049,2453,10, - 5719,5752,149,99,58,45,118,111,119,101,108,63,0,2049,5553,2049,2453,10,5739,5774, - 149,99,58,45,99,111,110,115,111,110,97,110,116,63,0,2049,5588,2049,2453,10, - 5757,5793,149,99,58,116,111,45,117,112,112,101,114,0,2,2049,5450,25,3,1, - 32,18,10,5779,5816,149,99,58,116,111,45,108,111,119,101,114,0,2,2049,5473, - 25,3,1,32,17,10,5802,5840,149,99,58,116,111,45,115,116,114,105,110,103, - 0,2049,3677,46,0,1,5842,2049,3632,1,40,2049,2105,10,5825,5870,149,99,58,116, - 111,103,103,108,101,45,99,97,115,101,0,2,2049,5450,1,5793,1,5816,2049,68, - 10,5853,5895,149,99,58,116,111,45,110,117,109,98,101,114,0,2,2049,5513,1793, - 5904,1,48,18,10,1,5900,1793,5912,3,1,0,10,1,5908,2049,68,10,5880,5931, - 149,115,58,116,111,45,117,112,112,101,114,0,1,5793,2049,4499,10,5917,5950,149, - 115,58,116,111,45,108,111,119,101,114,0,1,5816,2049,4499,10,5936,5970,149,115, - 58,116,114,105,109,45,108,101,102,116,0,2049,3632,1793,5984,2049,60,1,5628,1, - 2537,2049,2117,21,10,1,5974,2049,2222,2049,2934,10,5955,6007,149,115,58,116,114,105, - 109,45,114,105,103,104,116,0,2049,3632,2049,3781,2049,5970,2049,3781,10,5991,6026,149, - 115,58,116,114,105,109,0,2049,6007,2049,5970,10,6016,6053,137,82,101,119,114,105, - 116,101,85,110,100,101,114,115,99,111,114,101,115,0,-1,6031,6061,149,115,117, - 98,0,1,95,1793,6068,1,32,10,1,6065,2049,2367,10,6054,6084,149,114,101,119, - 114,105,116,101,0,3841,6053,1793,6093,1,6061,2049,4499,10,1,6088,9,10,6073,6107, - 149,104,97,110,100,108,101,0,1,3735,8,10,6031,6122,161,115,105,103,105,108, - 58,39,0,2049,6084,2049,6107,10,6111,6138,149,115,58,115,112,108,105,116,0,2049, - 2085,2049,3934,772,2049,2085,2049,4604,1,42,2049,2095,10,6127,6173,149,115,58,115,112, - 108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,2085,2049,4406,2049,2921, - 772,2049,2085,2049,4604,1,42,2049,2095,10,6152,6202,149,115,58,114,101,112,108,97, - 99,101,0,67502597,2049,85,2049,1871,16,1793,6218,2049,6173,4,2049,1871,15,17,10,1, - 6210,2049,2095,2049,3841,2049,3882,10,6189,6239,137,83,112,108,105,116,45,79,110,0, - 0,6227,6250,149,109,97,116,99,104,63,0,3841,6239,11,10,6240,6267,149,116,101, - 114,109,105,110,97,116,101,0,1,0,67502597,2049,2934,16,10,6254,6282,149,115,116, - 101,112,0,1,2921,2049,2095,2049,6250,1793,6296,2,2049,111,2049,6267,10,1,6290,9, - 10,6189,6314,149,115,58,116,111,107,101,110,105,122,101,0,4097,6239,2049,3703,2049, - 1871,1,0,2049,111,1793,6336,2,2049,111,2,1,6282,2049,3900,3,10,1,6326,2049, - 2095,2049,1871,67502597,18,2049,2934,67502597,16,10,6300,6359,137,78,101,101,100,108,101,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,6349,6494,137,76,101,110,0,0,6487,6505,137,84, - 111,107,101,110,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,6495,6639,137,84,80,0, - 0,6633,6648,149,115,97,118,101,0,2049,3703,3841,6639,1,6505,17,2049,2921,16,1, - 6639,2049,3019,10,6640,6671,149,110,101,120,116,0,1793,6677,3841,6494,17,10,1,6673, - 2049,2105,10,6663,6691,149,100,111,110,101,63,0,2049,85,2049,2521,10,6300,6720,149, - 115,58,116,111,107,101,110,105,122,101,45,111,110,45,115,116,114,105,110,103, - 0,1,0,4097,6639,1793,6734,2,1,6359,2049,4678,2049,3882,10,1,6726,1793,6743,2049, - 85,4097,6494,10,1,6738,2049,2117,1793,6760,1,6359,2049,6173,2049,6648,2049,6671,2049,6691, - 10,1,6749,2049,2245,1,6505,3841,6639,2049,2934,4097,6505,10,6696,6785,149,102,111,114, - 45,101,97,99,104,0,4,2049,60,1,17,2049,2095,1793,6801,5,2049,60,84018692,525572, - 1542,10,1,6794,2049,2270,771,10,6773,6821,149,115,117,98,115,116,105,116,117,116, - 101,0,2049,3548,1,129,18,10,6807,6838,149,101,120,116,114,97,99,116,0,2049, - 6821,2049,4678,10,6827,6855,149,116,111,107,101,110,105,122,101,0,2049,6720,2049,3658, - 10,6843,6871,149,99,111,109,98,105,110,101,0,2049,6821,2049,3882,2049,3882,10,6860, - 6887,149,109,101,114,103,101,0,4,1,6871,2049,6785,772,10,6878,6906,149,102,105, - 110,100,45,101,110,100,0,2,2049,85,2049,6821,2049,85,18,67502597,17,10,6894,6926, - 149,99,108,101,97,110,0,2049,6906,1,0,4,16,10,6696,6950,149,115,58,114, - 101,112,108,97,99,101,45,97,108,108,0,1,3,1793,6965,2049,6838,2049,6855,2049, - 6887,2049,6926,2049,3632,10,1,6954,2049,3110,10,6933,6980,137,83,116,114,105,110,103, - 0,0,0,0,0,0,0,0,0,0,0,0,0,6970,7006,149,99,104,101,99, - 107,45,115,105,103,110,0,2049,2556,1793,7015,1,45,2049,3367,10,1,7010,9,10, - 6992,7031,149,110,45,62,100,105,103,105,116,0,2049,4698,17,15,10,7019,7047,149, - 99,111,110,118,101,114,116,0,1793,7061,3841,209,20,4,2049,7031,2049,3367,2,2049, - 2521,10,1,7049,2049,2245,3,10,6933,7082,149,110,58,116,111,45,115,116,114,105, - 110,103,0,1793,7096,1,6980,2049,3459,2,2049,2886,2049,7047,2049,7006,10,1,7084,2049, - 3483,1,6980,2049,3781,10,7067,7113,149,99,104,97,114,0,1,32,1793,7122,1,95, - 2049,3367,10,1,7117,2049,2367,1,114,1793,7135,1,13,2049,3367,10,1,7130,2049,2367, - 1,110,1793,7148,1,10,2049,3367,10,1,7143,2049,2367,1,116,1793,7161,1,9,2049, - 3367,10,1,7156,2049,2367,1,48,1793,7174,1,0,2049,3367,10,1,7169,2049,2367,1, - 94,1793,7187,1,27,2049,3367,10,1,7182,2049,2367,2049,3367,10,7105,7202,149,116,121, - 112,101,0,1,99,1793,7210,4,2049,3367,10,1,7206,2049,2367,1,115,1793,7224,4, - 1,3367,2049,3900,10,1,7218,2049,2367,1,110,1793,7240,4,2049,7082,1,3367,2049,3900, - 10,1,7232,2049,2367,3,10,7194,7256,149,104,97,110,100,108,101,0,1,92,1793, - 7265,2049,60,2049,7113,10,1,7260,2049,2367,1,37,1793,7278,2049,60,2049,7202,10,1, - 7273,2049,2367,2049,3367,10,7067,7297,149,115,58,102,111,114,109,97,116,0,1793,7326, - 2049,3658,1793,7321,2049,3459,1793,7316,2049,60,25,2049,7256,1,7307,7,10,1,7307,8, - 3,10,1,7303,2049,2105,10,1,7299,2049,3483,10,7285,7342,149,115,58,99,111,110, - 115,116,0,1,3703,2049,2095,2049,2011,10,7331,7359,137,86,97,108,117,101,115,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,7349,7395,149,102,114,111,109,0,2049,85,2,1793, - 7413,1793,7406,1,7359,4113,10,1,7402,2049,2105,2049,2934,10,1,7400,2049,2270,3,10, - 7387,7425,149,116,111,0,2,2049,85,1793,7441,2049,60,1,97,18,2049,2921,1,7359, - 266001,10,1,7430,2049,2270,3,10,7331,7458,149,114,101,111,114,100,101,114,0,1, - 7395,2049,2095,2049,7425,10,7447,7474,149,99,117,114,114,121,0,2049,1871,1793,7484,4, - 2049,1728,2049,1751,10,1,7478,2049,2095,10,7465,7497,149,100,111,101,115,0,2049,1587, - 4,2049,7474,2049,1570,2049,163,16,1,149,2049,1646,10,7489,7526,149,100,58,102,111, - 114,45,101,97,99,104,0,1,2,1793,7552,6415,2049,2085,1793,7544,1793,7539,2052,10, - 1,7537,2049,2095,10,1,7535,2049,2095,1,7530,7,10,1,7530,8,3,10,7512,7572, - 149,100,58,108,111,111,107,117,112,45,120,116,0,1,0,4,1793,7597,2049,2085, - 2049,163,2831,1793,7590,4,1,2046,2049,2095,10,1,7584,1,15,2049,68,10,1,7577, - 2049,7526,3,10,7557,7615,149,97,58,108,101,110,103,116,104,0,15,10,7603,7638, - 149,97,58,99,111,117,110,116,101,100,45,114,101,115,117,108,116,115,0,8, - 2049,1871,1793,7651,2,2049,111,1,111,2049,2270,10,1,7643,2049,2095,10,7617,7673,149, - 97,58,102,114,111,109,45,115,116,114,105,110,103,0,2049,1871,1793,7687,2,2049, - 85,2049,111,1,111,2049,3900,10,1,7677,2049,2095,10,7656,7706,149,97,58,102,111, - 114,45,101,97,99,104,0,4,2049,60,1,17,2049,2095,1793,7722,5,2049,60,84018692, - 525572,1542,10,1,7715,2049,2270,771,10,7692,7737,149,97,58,100,117,112,0,2049,1871, - 1793,7750,2,15,2049,111,1,111,2049,7706,10,1,7741,2049,2095,10,7728,7765,149,97, - 58,99,111,112,121,0,1,3,1793,7781,4097,3,2,2049,7615,2049,111,1,111,2049, - 7706,10,1,7769,2049,3110,10,7755,7801,149,97,58,116,111,45,115,116,114,105,110, - 103,0,1,3,1793,7814,2049,7737,1,0,2049,111,2049,2921,10,1,7805,2049,3110,2049, - 3632,10,7786,7833,149,97,58,97,112,112,101,110,100,0,2049,2085,1,38,2049,2143, - 17,2049,1871,1793,7858,2049,111,1793,7853,1,111,2049,7706,10,1,7848,2049,2143,10,1, - 7844,2049,2095,10,7821,7876,149,97,58,112,114,101,112,101,110,100,0,4,2049,7833, - 10,7863,7890,149,97,58,99,104,111,112,0,2049,7737,1,-1,2049,3091,2,2049,3034, - 10,7880,7912,149,97,58,102,105,108,116,101,114,0,1793,7927,67502597,1,25,2049,2095, - 4,1,111,1,15,2049,68,10,1,7914,2049,7474,2049,1871,1793,7942,67502597,15,2049,111, - 2049,7706,10,1,7935,2049,2095,2049,1871,67502597,18,2049,2934,67502597,16,10,7900,7970,149,97, - 58,99,111,110,116,97,105,110,115,63,0,1,0,4,1793,7982,4,5,67502597,11, - 6,22,10,1,7975,2049,7706,772,10,7955,8010,149,97,58,99,111,110,116,97,105, - 110,115,45,115,116,114,105,110,103,63,0,1,0,4,1793,8023,4,5,67502597,2049, - 99,6,22,10,1,8015,2049,7706,772,10,7988,8038,149,97,58,109,97,112,0,1793, - 8044,8,2049,111,10,1,8040,2049,7474,2049,1871,1793,8059,67502597,15,2049,111,2049,7706,10, - 1,8052,2049,2095,10,8029,8077,149,97,58,114,101,118,101,114,115,101,0,2049,1871, - 1793,8111,2049,60,1793,8089,17,2049,2934,10,1,8085,2049,2105,2,2049,111,1793,8105,2, - 15,2049,111,2049,2934,10,1,8098,2049,2270,3,10,1,8081,2049,2095,10,8064,8124,149, - 97,58,116,104,0,17,2049,2921,10,8116,8139,149,97,58,102,101,116,99,104,0, - 2049,8124,15,10,8128,8154,149,97,58,115,116,111,114,101,0,2049,8124,16,10,8143, - 8170,149,97,58,114,101,100,117,99,101,0,1,17,2049,2095,2049,7706,10,8158,8189, - 149,105,100,101,110,116,105,102,121,0,1,-1,4,1,0,1793,8220,2049,2344,11, - 1793,8214,67502597,1,-1,11,1793,8210,772,2,10,1,8207,9,10,1,8201,9,2049,2921, - 10,1,8196,2049,8170,3,10,8158,8240,149,97,58,105,110,100,101,120,45,111,102, - 0,1,3,1793,8253,1,30,2049,7474,2049,8038,2049,8189,10,1,8244,2049,3110,10,8226, - 8279,149,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0, - 1,3,1793,8292,1,99,2049,7474,2049,8038,2049,8189,10,1,8283,2049,3110,10,8258,8307, - 149,97,58,109,97,107,101,0,2049,7638,2,2,1,3,1793,8318,2049,8077,10,1, - 8315,2049,3110,4,2049,7765,10,8297,8331,161,123,0,1,298,2049,161,1,1556,2049,149, - 1,298,2049,161,10,8326,8349,161,125,0,1,314,2049,161,1,2095,2049,149,1,1556, - 2049,149,1,17,2049,155,1,44,2049,155,1,2934,2049,149,1,314,2049,161,1,8307, - 2049,149,10,8344,8393,149,98,111,117,110,100,115,63,0,67502597,2049,7615,67502597,13,10, - 8382,8407,149,99,111,112,121,0,2049,60,2049,111,10,8399,8422,149,116,111,45,101, - 110,100,0,2,2049,7615,17,2049,2921,10,8344,8439,149,97,58,108,101,102,116,0, - 2049,8393,1793,8447,771,1,-1,10,1,8443,2049,2647,2049,1871,67502597,2049,111,1793,8468,1, - 2921,2049,2095,1,8407,2049,2270,3,10,1,8458,2049,2095,10,8429,8484,149,97,58,114, - 105,103,104,116,0,2049,8393,1793,8492,771,1,-1,10,1,8488,2049,2647,2049,1871,67502597, - 2049,111,1793,8515,4,2049,8422,67502597,18,4,1,8407,2049,2270,3,10,1,8503,2049,2095, - 10,8473,8532,149,97,58,109,105,100,100,108,101,0,1,2037,2049,2095,4,67502597,2049, - 8393,1793,8547,771,3,1,-1,10,1,8542,2049,2647,771,2049,2085,4,18,2049,2921,2049, - 1871,67502597,2049,111,1793,8582,772,1793,8572,17,2049,2921,10,1,8568,2049,2095,1,8407,2049, - 2270,3,10,1,8565,2049,2095,10,8520,8595,137,70,108,97,103,0,0,8587,8607,149, - 99,111,109,112,97,114,101,0,67440386,184946434,10,8596,8620,149,108,101,110,103,116,104, - 0,659202,10,8610,8630,149,110,101,120,116,0,17043713,1,1,2577,10,8622,8648,149,110, - 111,116,45,101,113,117,97,108,0,50529030,2561,0,10,8635,8660,149,108,111,111,112, - 0,524549,8630,2049,8607,18157313,8595,8595,16,420610310,1,1,8660,7,10,8520,8683,149,97,58, - 101,113,63,0,1048833,-1,8595,2049,8607,151066369,-1,8648,2049,8620,2049,8660,251724547,8595,10,8674, - 8708,149,97,58,45,101,113,63,0,2049,8683,2049,2453,10,8698,8731,149,97,58,98, - 101,103,105,110,115,45,119,105,116,104,63,0,1,3,1793,8747,2,2049,7615,1, - 17,2049,2095,2049,8439,2049,8683,10,1,8735,2049,3110,10,8713,8768,149,97,58,101,110, - 100,115,45,119,105,116,104,63,0,1,3,1793,8784,2,2049,7615,1,17,2049,2095, - 2049,8484,2049,8683,10,1,8772,2049,3110,10,8752,8805,149,99,117,114,114,101,110,116, - 45,108,105,110,101,0,2049,3548,1,1025,18,10,8789,8827,149,99,111,117,110,116, - 45,116,111,107,101,110,115,0,1793,8833,1,32,11,10,1,8829,2049,4457,2049,85, - 10,8811,8858,149,112,114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793, - 8886,1,32,2049,6138,4,1793,8879,2,2049,85,2049,2537,1,376,1,15,2049,68,10, - 1,8867,2049,2095,2049,2921,10,1,8860,2049,2270,2049,376,10,8752,8907,149,115,58,101, - 118,97,108,117,97,116,101,0,2049,8805,2049,4678,2049,8805,2,2049,8827,2049,8858,10, - 8893,8925,137,76,80,0,0,8919,8935,137,73,110,100,101,120,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,8926,8975,149,110,101,120,116,0,3841,8925,1,8935, - 17,2049,3019,10,8967,8991,149,112,114,101,112,0,1,8925,2049,3019,1,0,3841,8925, - 1,8935,17,16,10,8983,9012,149,100,111,110,101,0,1,8925,2049,3034,10,8893,9022, - 149,73,0,3841,8925,1,8935,17,15,10,9017,9034,149,74,0,3841,8925,1,8935,17, - 2049,2934,15,10,9029,9048,149,75,0,3841,8925,1,8935,17,1,2,18,15,10,9043, - 9075,149,105,110,100,101,120,101,100,45,116,105,109,101,115,0,2049,8991,4,1793, - 9091,25,33886721,1,2053,1542,2049,8975,1,9080,7,10,1,9080,8,3,2049,9012,10,9058, - 9106,161,104,111,111,107,0,2049,3677,108,105,106,117,46,46,46,46,0,1,9108, - 2049,423,2049,1871,2049,2921,2049,111,10,9098,9140,149,115,101,116,45,104,111,111,107, - 0,2049,2921,16,10,9128,9154,149,117,110,104,111,111,107,0,2049,2921,2,2049,2921, - 4,16,10,9144,9173,149,100,101,99,105,109,97,108,0,1,10,4097,209,10,9162, - 9188,149,98,105,110,97,114,121,0,1,2,4097,209,10,9178,9202,149,111,99,116, - 97,108,0,1,8,4097,209,10,9193,9214,149,104,101,120,0,1,16,4097,209,10, - 9207,9235,149,105,111,58,101,110,117,109,101,114,97,116,101,0,27,10,9219,9249, - 149,105,111,58,113,117,101,114,121,0,28,10,9237,9264,149,105,111,58,105,110, - 118,111,107,101,0,29,10,9251,9281,149,105,111,58,115,99,97,110,45,102,111, - 114,0,1,-1,4,2049,9235,1793,9312,2049,9022,2049,9249,772,67502597,11,1793,9308,1793,9303, - 3,2049,9022,10,1,9299,2049,2095,10,1,9297,9,10,1,9288,2049,9075,3,10,9266, - 9327,149,99,58,112,117,116,0,1793,9329,1,0,2049,9264,10,9318,9340,149,110,108, - 0,1,10,2049,9327,10,9334,9351,149,115,112,0,1,32,2049,9327,10,9345,9363,149, - 116,97,98,0,1,9,2049,9327,10,9356,9377,149,115,58,112,117,116,0,1,9327, - 2049,3900,10,9368,9391,149,110,58,112,117,116,0,2049,7082,2049,9377,10,9382,9405,149, - 114,101,115,101,116,0,2049,1556,25,771,1,9405,7,10,9396,9427,149,100,117,109, - 112,45,115,116,97,99,107,0,2049,1556,25,134284547,9427,134283782,9391,2049,9351,10,9413,9445, - 149,70,82,69,69,0,2049,3548,1,1025,18,2049,1871,18,10,9437,9462,149,101,111, - 108,63,0,1793,9468,1,13,11,10,1,9464,1793,9476,1,10,11,10,1,9472,1793, - 9484,1,32,11,10,1,9480,2049,2154,22,22,10,9454,9501,149,118,97,108,105,100, - 63,0,2,2049,85,2049,2537,10,9491,9514,149,98,115,63,0,2,1793,9521,1,8, - 11,10,1,9517,1793,9529,1,127,11,10,1,9525,2049,2117,22,10,9507,9547,149,99, - 104,101,99,107,45,98,115,0,2049,9514,1793,9557,2049,3391,2049,3391,771,10,1,9551, - 9,10,9437,9570,149,99,58,103,101,116,0,1,1,2049,9281,2049,9264,10,9561,9586, - 149,115,58,103,101,116,0,1793,9614,1,7,15,2049,3459,1793,9605,2049,9570,2,2049, - 3367,2049,9547,2049,9462,10,1,9595,2049,2245,2049,3333,2049,3754,10,1,9588,2049,3483,10, - 9577,9629,149,108,105,115,116,101,110,0,2049,9586,2049,9501,1,376,1,15,2049,68, - 1,9629,7,10,0 - - ] - - var i = 0 - for cell in standard { - memory[i] = Int64(cell) - i += 1 - } -} diff --git a/vm/nga-swift/nga-swift.xcodeproj/project.pbxproj b/vm/nga-swift/nga-swift.xcodeproj/project.pbxproj deleted file mode 100644 index cbe08aa..0000000 --- a/vm/nga-swift/nga-swift.xcodeproj/project.pbxproj +++ /dev/null @@ -1,294 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 28DEB50726549E2100C31ED1 /* image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DEB50626549E2100C31ED1 /* image.swift */; }; - 28DEB50926549E3100C31ED1 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DEB50826549E3100C31ED1 /* main.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 28DEB4FA26549D8D00C31ED1 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 28DEB4FC26549D8D00C31ED1 /* nga-swift */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "nga-swift"; sourceTree = BUILT_PRODUCTS_DIR; }; - 28DEB50626549E2100C31ED1 /* image.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = image.swift; sourceTree = SOURCE_ROOT; }; - 28DEB50826549E3100C31ED1 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 28DEB4F926549D8D00C31ED1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 28DEB4F326549D8D00C31ED1 = { - isa = PBXGroup; - children = ( - 28DEB4FE26549D8D00C31ED1 /* nga-swift */, - 28DEB4FD26549D8D00C31ED1 /* Products */, - ); - sourceTree = ""; - }; - 28DEB4FD26549D8D00C31ED1 /* Products */ = { - isa = PBXGroup; - children = ( - 28DEB4FC26549D8D00C31ED1 /* nga-swift */, - ); - name = Products; - sourceTree = ""; - }; - 28DEB4FE26549D8D00C31ED1 /* nga-swift */ = { - isa = PBXGroup; - children = ( - 28DEB50626549E2100C31ED1 /* image.swift */, - 28DEB50826549E3100C31ED1 /* main.swift */, - ); - path = "nga-swift"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 28DEB4FB26549D8D00C31ED1 /* nga-swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 28DEB50326549D8D00C31ED1 /* Build configuration list for PBXNativeTarget "nga-swift" */; - buildPhases = ( - 28DEB4F826549D8D00C31ED1 /* Sources */, - 28DEB4F926549D8D00C31ED1 /* Frameworks */, - 28DEB4FA26549D8D00C31ED1 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "nga-swift"; - productName = "nga-swift"; - productReference = 28DEB4FC26549D8D00C31ED1 /* nga-swift */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 28DEB4F426549D8D00C31ED1 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1250; - LastUpgradeCheck = 1250; - TargetAttributes = { - 28DEB4FB26549D8D00C31ED1 = { - CreatedOnToolsVersion = 12.5; - }; - }; - }; - buildConfigurationList = 28DEB4F726549D8D00C31ED1 /* Build configuration list for PBXProject "nga-swift" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 28DEB4F326549D8D00C31ED1; - productRefGroup = 28DEB4FD26549D8D00C31ED1 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 28DEB4FB26549D8D00C31ED1 /* nga-swift */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 28DEB4F826549D8D00C31ED1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28DEB50926549E3100C31ED1 /* main.swift in Sources */, - 28DEB50726549E2100C31ED1 /* image.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 28DEB50126549D8D00C31ED1 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 11.3; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 28DEB50226549D8D00C31ED1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 11.3; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 28DEB50426549D8D00C31ED1 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Q2UJ785JPF; - ENABLE_HARDENED_RUNTIME = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 28DEB50526549D8D00C31ED1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Q2UJ785JPF; - ENABLE_HARDENED_RUNTIME = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 28DEB4F726549D8D00C31ED1 /* Build configuration list for PBXProject "nga-swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 28DEB50126549D8D00C31ED1 /* Debug */, - 28DEB50226549D8D00C31ED1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 28DEB50326549D8D00C31ED1 /* Build configuration list for PBXNativeTarget "nga-swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 28DEB50426549D8D00C31ED1 /* Debug */, - 28DEB50526549D8D00C31ED1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 28DEB4F426549D8D00C31ED1 /* Project object */; -} diff --git a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcuserdata/crc.xcuserdatad/UserInterfaceState.xcuserstate b/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcuserdata/crc.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index f4e2e9a..0000000 Binary files a/vm/nga-swift/nga-swift.xcodeproj/project.xcworkspace/xcuserdata/crc.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/vm/nga-swift/nga-swift.xcodeproj/xcshareddata/xcschemes/nga-swift.xcscheme b/vm/nga-swift/nga-swift.xcodeproj/xcshareddata/xcschemes/nga-swift.xcscheme deleted file mode 100644 index 1e17a9f..0000000 --- a/vm/nga-swift/nga-swift.xcodeproj/xcshareddata/xcschemes/nga-swift.xcscheme +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vm/nga-swift/nga-swift.xcodeproj/xcuserdata/crc.xcuserdatad/xcschemes/xcschememanagement.plist b/vm/nga-swift/nga-swift.xcodeproj/xcuserdata/crc.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 474ba2f..0000000 --- a/vm/nga-swift/nga-swift.xcodeproj/xcuserdata/crc.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - nga-swift.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - 28DEB4FB26549D8D00C31ED1 - - primary - - - - - diff --git a/vm/nga-swift/main.swift b/vm/nga-swift/nga.swift similarity index 87% rename from vm/nga-swift/main.swift rename to vm/nga-swift/nga.swift index e1ea7b5..1fab2e0 100644 --- a/vm/nga-swift/main.swift +++ b/vm/nga-swift/nga.swift @@ -6,17 +6,7 @@ // stack processor that's capable of hosting // RETRO or other environments. // -// This is a reimplementation in Swift. I've -// held off doing this until now, but as I -// plan to continue using Apple computers and -// iPads, it's becoming clear that they see -// this as the future, and it'll become more -// difficult to justify holding out on -// Objective-C going forward. -// -// So here we go... -// -// Copyright 2020, Charles Childers +// Copyright, Charles Childers // import Foundation @@ -28,9 +18,10 @@ let CELLMAX = Int64.max - 1 let CELLMIN = Int64.min // Notes: -// While Nga is designed as a 32-bit system, +// While Nga was designed as a 32-bit system, // this implementation is 64-bit internally -// to allow greater numeric range. +// to allow greater numeric range. This follows +// with recent changes to the other Nga variants. // I'm adding some extensions to existing types // for easier access to individual characters @@ -113,6 +104,26 @@ var memory = [Int64](repeating: 0, count: imageSize + 1024) var data = Stack() var address = Stack() +// image loader + +func loadImage() { + let fileURL = URL(fileURLWithPath: "ngaImage") + let data = NSData(contentsOf: fileURL)! + var i: Int = 0 + while (i < (data.count / 8)) { + memory[i] = getInt64FromData(data: data, offset: i) + i += 1 + } +} + +func getInt64FromData(data: NSData, offset: Int) -> Int64 { + let raw = NSRange(location: offset * 8, length: 8) + var i = [Int64](repeating: 0, count: 1) + data.getBytes(&i, range: raw) + return Int64(i[0]) +} + + // Now, I implement the instructions. Each gets // a dedicated function. @@ -217,19 +228,19 @@ func inst_st() { func inst_ad() { let tos = data.pop() let nos = data.pop() - data.push(nos + tos) + data.push(nos &+ tos) } func inst_su() { let tos = data.pop() let nos = data.pop() - data.push(nos - tos) + data.push(nos &- tos) } func inst_mu() { let tos = data.pop() let nos = data.pop() - data.push(nos * tos) + data.push(nos &* tos) } func inst_di() { @@ -296,7 +307,8 @@ func inst_iq() { func inst_ii() { data.drop() - let v = UnicodeScalar(Int(data.pop())) ?? UnicodeScalar(32) + let c = Int(data.pop()) + let v = UnicodeScalar(c) ?? UnicodeScalar(32) print(Character(v!), terminator: "") } @@ -390,7 +402,7 @@ func ngaValidatePackedOpcodes(_ opcode: Int64) -> Bool { // This will process an opcode bundle func ngaProcessPackedOpcodes(_ opcode: Int64) { - for inst in Int32(opcode).bytes { + for inst in Int64(opcode).bytes { ngaProcessOpcode(opcode: Int64(inst)) } } @@ -398,12 +410,14 @@ func ngaProcessPackedOpcodes(_ opcode: Int64) { // For debugging purposes func dump() { + print("----------------------------") for i in 0 ... data.depth() { if i == data.depth() { - print("TOS") + print("TOS", terminator: " ") } print(Int(data.item(i))) } + print("----------------------------") } // Interfacing @@ -465,29 +479,21 @@ func process() { loadImage() -// Display the dictionary -var i = memory[2] -var interpret: Int = 0 -while i != 0 { - let name = extractString(at: Int(i + 4)) -// print(name) - if name == "interpret" { - interpret = Int(memory[Int(i) + 1]) - } - i = memory[Int(i)] -} - +let interpret: Int = Int(memory[5]) var done = false print("RETRO (using nga.swift)") while !done { - let code = readLine() + let code = readLine() ?? "()" if code == "bye" { done = true } else { - injectString(code ?? "()", to: Int(memory[7])) + let tokens = code.components(separatedBy: " ") + for token in tokens { + injectString(token, to: Int(memory[7])) data.push(memory[7]) execute(interpret) + } } } dump()