From: Svjatoslav Agejenko Date: Tue, 15 Oct 2024 20:15:14 +0000 (+0300) Subject: Reorganized filesystem X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=cdf5d5372b1693b0bdf918b26caba8d9f19c05ec;p=qbasicapps.git Reorganized filesystem --- diff --git a/Graphics/Presentations/AI/AI demo.bas b/Graphics/Presentations/AI/AI demo.bas new file mode 100644 index 0000000..6a54940 --- /dev/null +++ b/Graphics/Presentations/AI/AI demo.bas @@ -0,0 +1,1118 @@ +DECLARE SUB sc10 () +DECLARE SUB sc9 () +DECLARE SUB sc8 () +DECLARE SUB sc7 () +DECLARE SUB sc6 () +DECLARE SUB inpur () +DECLARE SUB sc5 () +DECLARE SUB box (x1!, y1!, x2!, y2!) +DECLARE SUB pri (x!, y!, s!, c!, a$) +DECLARE SUB getfnt () +DECLARE SUB sc4 () +DECLARE SUB mkback () +DECLARE SUB sc3 () +DECLARE SUB calc (tx1!, ty1!, tz1!, tx2!, ty2!, tz2!, tx3!, ty3!, tz3!, c!) +DECLARE SUB getan (x1!, y1!, x2!, y2!, N!) +DECLARE SUB rot (zx!, zy!, x1!, y1!, N!) +DECLARE SUB fp (x1!, y1!, x2!, y2!, x3!, y3!, c!) +DECLARE SUB sc2 () +DECLARE SUB pal (r!, g!, b!, c!) +DECLARE SUB sc1 () +DECLARE SUB start () + + +' AI presentation +' made by Svjatoslav Agejenko +' in 2002 +' homepage: svjatoslav.eu +' email: svjatoslav@svjatoslav.eu + +DIM SHARED pii +DIM SHARED pi +DIM SHARED angl1, angl2 +DIM SHARED font(0 TO 7, 0 TO 7, 32 TO 150) +start +'GOTO 6 +sc1 +sc2 +sc3 +sc4 +sc5 +sc6 +sc7 +6 +sc8 +sc10 +sc9 + +SYSTEM + +SUB box (x1, y1, x2, y2) + +'FOR a = 0 TO 30 +'IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) +'IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 +'IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) +'NEXT a + +FOR y = y1 TO y2 +s = 10 +IF y - y1 <= 10 THEN +s = (SQR((20 - (y - y1)) * (y - y1))) +END IF + +IF y2 - y <= 10 THEN +s = (SQR((20 - (y2 - y)) * (y2 - y))) +END IF + +FOR x = x1 - s TO x2 + s +c = POINT(x, y) +IF c <= 127 THEN +c = c + 127 +IF c > 245 THEN c = 245 +PSET (x, y), c +END IF +NEXT x +NEXT y + +END SUB + +SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c) +x1 = tx1 +y1 = ty1 +z1 = tz1 + +x2 = tx2 +y2 = ty2 +z2 = tz2 + +x3 = tx3 +y3 = ty3 +z3 = tz3 + + +'LINE (x1, y1)-(x2, y2), 3 +'LINE (x3, y3)-(x2, y2), 3 +'LINE (x1, y1)-(x3, y3), 3 + + +getan x1, y1, x2, y2, n1 +rot x1, y1, x2, y2, -n1 +rot x1, y1, x3, y3, -n1 + +getan y1, z1, y2, z2, n2 +n2 = n2 + pi / 2 +rot y1, z1, y2, z2, -n2 +rot y1, z1, y3, z3, -n2 + +getan x1, z1, x3, z3, n3 +n3 = n3 + pi / 2 +rot x1, z1, x2, z2, -n3 +rot x1, z1, x3, z3, -n3 + +x4 = x1 +y4 = y1 +z4 = z1 + 30 + +rot x1, z1, x4, z4, n3 +rot y1, z1, y4, z4, n2 +rot x1, y1, x4, y4, n1 + +'LINE (tx1, ty1)-(x4, y4), 255 +x1 = tx1 + 20 +y1 = ty1 + 10 +a = SQR((x1 - x4) ^ 2 + (y1 - y4) ^ 2) +c = 49 - a +IF c < 0 THEN c = 0 +END SUB + +SUB fp (x1, y1, x2, y2, x3, y3, c) + + +DIM yb(-100 TO 300) + +mx1 = x1 +my1 = y1 +mx2 = x2 +my2 = y2 +GOSUB mkl +mx1 = x1 +my1 = y1 +mx2 = x3 +my2 = y3 +GOSUB mkl +mx1 = x3 +my1 = y3 +mx2 = x2 +my2 = y2 +GOSUB mkl +GOTO 1 + +mkl: +IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2 +FOR y = my1 TO my2 - 1 +x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1)) +IF yb(y) = 0 THEN +yb(y) = x +ELSE +LINE (x, y)-(yb(y), y), c +END IF +NEXT y +RETURN +1 + + +'LINE (x1, y1)-(x2, y2), 0 +'LINE (x3, y3)-(x2, y2), 0 +'LINE (x1, y1)-(x3, y3), 0 + +END SUB + +SUB getan (x1, y1, x2, y2, N) +IF y1 = y2 THEN +IF x2 > x1 THEN N = pi / 2 ELSE N = pi * 1.5 +GOTO 2 +END IF + +IF y2 > y1 THEN +IF x2 = x1 THEN N = pi: GOTO 2 +IF x2 > x1 THEN +N = (pi * 1) - ATN((x2 - x1) / (y2 - y1)) +ELSE +N = pi + ATN((x1 - x2) / (y2 - y1)) +END IF +ELSE +IF x2 = x1 THEN N = 0: GOTO 2 +IF x2 > x1 THEN +N = ATN((x2 - x1) / (y1 - y2)) +ELSE +N = pi * 2 - ATN((x1 - x2) / (y1 - y2)) +END IF +END IF +2 +END SUB + +SUB getfnt +'DIM SHARED font(0 TO 7, 0 TO 7, 10 TO 200) + +pal 0, 0, 0, 70 +COLOR 70 +FOR a = 32 TO 150 +LOCATE 1, 1 +PRINT CHR$(a) +FOR y = 0 TO 7 +FOR x = 0 TO 7 +font(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a + +END SUB + +SUB inpur +a$ = INPUT$(1) + + +END SUB + +DEFINT A-Z +SUB mkback +CLS +pal 0, 5, 5, 250 +pal 0, 5, 5, 251 +pal 0, 5, 5, 252 +pal 0, 5, 5, 253 +pal 0, 5, 5, 254 +pal 0, 5, 5, 255 + +FOR a = 0 TO 127 +OUT &H3C8, a +OUT &H3C9, SIN(a / 22) * 30 + 30 +OUT &H3C9, SIN(a / 18) * 5 + 5 +OUT &H3C9, COS(a / 12) * 10 + 10 +NEXT a + +FOR a = 128 TO 245 +OUT &H3C8, a +b = a - 128 +OUT &H3C9, SIN(b / 22) * 4 + 10 +OUT &H3C9, SIN(b / 18) * 4 + 10 +OUT &H3C9, COS(b / 12) * 4 + 10 +NEXT a + +DIM lm +lm = 127 + + +s = 2 ^ 8 +5 +s = s \ 2 +x2 = (319 \ s) - 1 +y2 = (199 \ s) - 1 + +FOR y = 0 TO y2 +FOR x = 0 TO x2 +x1 = x * s +y1 = y * s +c1 = POINT(x1, y1) +c2 = POINT(x1 + s, y1) +c3 = POINT(x1, y1 + s) +c4 = POINT(x1 + s, y1 + s) + +sp = s \ 2 + +cc2 = ((c1 + c2) / 2) + (RND * 6) - 3 +IF cc2 > lm THEN cc2 = lm + +cc3 = ((c1 + c3) / 2) + (RND * 6) - 3 +IF cc3 > lm THEN cc3 = lm + +cc4 = ((c2 + c4) / 2) + (RND * 6) - 3 +IF cc4 > lm THEN cc4 = lm + +cc5 = ((c3 + c4) / 2) + (RND * 6) - 3 +IF cc5 > lm THEN cc5 = lm + +cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3 +IF cc1 > lm THEN cc1 = lm + + + +PSET (x1 + sp, y1 + sp), cc1 +PSET (x1 + sp, y1), cc2 +PSET (x1, y1 + sp), cc3 +PSET (x1 + s, y1 + sp), cc4 +PSET (x1 + sp, y1 + s), cc5 + + +NEXT x +NEXT y +IF s > 2 THEN GOTO 5 + + + +END SUB + +DEFSNG A-Z +SUB pal (r, g, b, c) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 63 THEN r = 63 +IF g > 63 THEN g = 63 +IF b > 63 THEN b = 63 + +OUT &H3C8, c +OUT &H3C9, r +OUT &H3C9, g +OUT &H3C9, b +END SUB + +SUB pri (x, y, s, c, a$) +IF s = 1 THEN +x2 = x +FOR a = 1 TO LEN(a$) +b = ASC(RIGHT$(LEFT$(a$, a), 1)) +IF b > 150 OR b < 32 THEN GOTO 7 +FOR y1 = 0 TO 7 +FOR x1 = 0 TO 7 +c1 = font(x1, y1, b) +IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c +NEXT x1 +NEXT y1 +7 +x2 = x2 + 8 +NEXT a +END IF +END SUB + +SUB rot (zx, zy, x1, y1, N) +x2 = x1 - zx +y2 = y1 - zy +c1 = SIN(N) +s1 = COS(N) +x1 = x2 * s1 - y2 * c1 + zx +y1 = x2 * c1 + y2 * s1 + zy +END SUB + +SUB sc1 +pal 0, 63, 20, 255 +DIM px(0 TO 1000) +DIM py(0 TO 1000) +DIM pz(0 TO 1000) +DIM px1(0 TO 1000) +DIM py1(0 TO 1000) +DIM lin1!(0 TO 1500) +DIM lin2!(0 TO 1500) +DIM lbx1(1 TO 1500) +DIM lby1(1 TO 1500) +DIM lbx2(1 TO 1500) +DIM lby2(1 TO 1500) + +DIM np, nl +DIM an1, an2, an3 +DIM an1s, an2s, an3s +DIM inco, inpo +DIM tim +DIM nlt +DIM ehi + +tim = 0 +ehi = 1 + + +an1 = 0 +an2 = 0 + +np = -1 +nl = 0 +inco = 0 +inpo = 0 +nlt = 0 + +pal 40, 40, 40, 254 +COLOR 254 +LOCATE 2, 11 +PRINT "�ks hetk" + +OPEN "data.dat" FOR INPUT AS #1 +INPUT #1, a +INPUT #1, inco +INPUT #1, inpo + +FOR a = 1 TO inco +INPUT #1, x, y, z +np = np + 1 +px(np) = x - 100 +py(np) = y +pz(np) = z +NEXT a + +INPUT #1, b, b, l1, l2, l3 + +FOR a = 1 TO inpo - 1 +INPUT #1, b, b, l1!, l2!, l3! +nlin1! = l1! +nlin2! = l2! +GOSUB addlin +nlin1! = l2! +nlin2! = l3! +GOSUB addlin +nlin1! = l1! +nlin2! = l3! +GOSUB addlin +LOCATE 4, 10 +PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis" +NEXT a +CLOSE 1 +CLS +3 +tim = tim + 1 +sj$ = INKEY$ +IF sj$ = "q" THEN END + +a = COS(tim / 25) +an1 = COS(tim / 29) * a +an2 = (pii / 2) + SIN(tim / 42) * a + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +IF ehi >= 1 THEN +nlt = nlt + ehi +ehi = ehi + .03 +IF nlt > nl THEN nlt = nl: ehi = 0 +END IF + +FOR a = 0 TO np +x = px(a) +y = py(a) +z = pz(a) + +z2 = z * s1 + y * c1 +y1 = y * s1 - z * c1 + +z1 = z2 * s2 + x * c2 +x1 = x * s2 - z2 * c2 + + +z1 = z1 + 100 + +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 + +px1(a) = x1 + 160 +py1(a) = y1 + 80 +NEXT a + +FOR a = 1 TO nlt +l1 = lin1!(a) +l2 = lin2!(a) +x1 = px1(l1) +y1 = py1(l1) +x2 = px1(l2) +y2 = py1(l2) +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +LINE (x1, y1)-(x2, y2), 255 +lbx1(a) = x1 +lby1(a) = y1 +lbx2(a) = x2 +lby2(a) = y2 +NEXT a +SOUND 0, .5 +IF tim < 280 THEN GOTO 3 +GOTO 4 + +addlin: +FOR b = 1 TO nl +IF lin1!(b) = nlin1! THEN IF lin2!(b) = nlin2! THEN RETURN +IF lin1!(b) = nlin2! THEN IF lin2!(b) = nlin1! THEN RETURN +NEXT b +nl = nl + 1 +lin1!(nl) = nlin1! +lin2!(nl) = nlin2! +RETURN +4 +angl1 = an1 +angl2 = an2 +END SUB + +SUB sc10 + +RANDOMIZE 122 +mkback + +box 30, 50, 250, 180 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, " Kasutatud kirjandus:" +y = y + 20 +pri 30, 70 + y, 1, 250, "An augmented computer vision" +y = y + 13 +pri 30, 70 + y, 1, 250, "approach for anhanced" +y = y + 13 +pri 30, 70 + y, 1, 250, "understanding. M.Adjouadi," +y = y + 13 +pri 30, 70 + y, 1, 250, "J.Riley;" +y = y + 13 +pri 30, 70 + y, 1, 250, "Journal of Rehabilitation" +y = y + 13 +pri 30, 70 + y, 1, 250, "Research & Development," +y = y + 13 +pri 30, 70 + y, 1, 250, "Oct 95,Vol. 32 issue 3" + +inpur + + +END SUB + +SUB sc2 +pal 0, 63, 20, 255 +CLS +angl1 = 0 +angl2 = 1.5 +DIM px(0 TO 2000) +DIM py(0 TO 2000) +DIM pz(0 TO 2000) + +DIM rpx(0 TO 2000) +DIM rpy(0 TO 2000) +DIM rpz(0 TO 2000) + +DIM pol1(1 TO 2000) +DIM pol2(1 TO 2000) +DIM pol3(1 TO 2000) + +np = 0 +nl = 0 + +OPEN "data.dat" FOR INPUT AS #1 +INPUT #1, a +INPUT #1, inco +INPUT #1, inpo + +FOR a = 1 TO inco +INPUT #1, x, y, z +px(np) = x - 100 +py(np) = y +pz(np) = z +np = np + 1 +NEXT a + +INPUT #1, b, b, l1, l2, l3 + +FOR a = 1 TO inpo - 1 +INPUT #1, b, b, l1, l2, l3 +nl = nl + 1 +pol1(nl) = l1 +pol2(nl) = l2 +pol3(nl) = l3 +NEXT a +CLOSE 1 + +s1 = SIN(angl1) +c1 = COS(angl1) +s2 = SIN(angl2) +c2 = COS(angl2) + +FOR a = 0 TO np +x = px(a) +y = py(a) +z = pz(a) +z2 = z * s1 + y * c1 +y1 = y * s1 - z * c1 +z1 = z2 * s2 + x * c2 +x1 = x * s2 - z2 * c2 +z1 = z1 + 100 +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 +rpx(a) = x1 + 160 +rpy(a) = y1 + 80 +rpz(a) = z1 +NEXT a + +'FOR a = 1 TO 63 +'pal COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a +'NEXT a + +FOR a = 1 TO 49 +pal a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a +NEXT a + +DIM polz(1 TO nl) + +FOR a = 1 TO nl +polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a))) +NEXT a + +e = nl +FOR a = 1 TO nl +su = -10000 +sun = 1 +FOR b = 1 TO e +IF polz(b) > su THEN su = polz(b): sun = b +NEXT b + +p1 = pol1(sun) +p2 = pol2(sun) +p3 = pol3(sun) + +polz(sun) = polz(e) +pol1(sun) = pol1(e) +pol2(sun) = pol2(e) +pol3(sun) = pol3(e) +e = e - 1 +calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d +fp INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d) +'SOUND 0, .07 +NEXT a + + +END SUB + +SUB sc3 +DIM buf(1 TO 10000) +DIM buf1(0 TO 35) + +FOR a = 1 TO 20 +SOUND 0, 1 +NEXT a +FOR a = 0 TO 30 +IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) +IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 +IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) +NEXT a + +FOR y = 0 TO 30 +FOR x = 10 TO 300 STEP 10 +GET (x, 0)-(x + 9, 198), buf(1) +PUT (x, 1), buf(1), PSET +NEXT x +FOR a = 1 TO 49 +pal a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a +NEXT a +SOUND 0, 1 +LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255 +NEXT y + +LOCATE 1, 1 +COLOR 254 +pal 0, 0, 0, 254 +PRINT "Tehisintellekt" +pal 63, 0, 0, 253 +FOR y = 0 TO 8 +FOR x = 0 TO 120 +c = POINT(x, y) +IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0 +NEXT x +FOR x = 0 TO 120 +c = POINT(x, y + 1) +IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253 +NEXT x +SOUND 0, 2 +NEXT y + +RANDOMIZE 1 + +FOR a = 1 TO 10 +y = RND * 100 + 50 +FOR x = 10 TO 300 STEP 10 +GET (x, y)-(x + 9, 198), buf(1) +PUT (x, y - 1), buf(1), PSET +NEXT x +NEXT a + +COLOR 253 +pal 0, 0, 0, 253 +LOCATE 1 +PRINT " autor: Svjatoslav Agejenko 30.09.2001 " +GET (0, 0)-(319, 8), buf(1) +LOCATE 1 +PRINT " " +PUT (0, 190), buf(1), PSET +FOR a = 1 TO 32 +pal 0, a, a * 2, 253 +SOUND 0, 1 +NEXT a +inpur +END SUB + +SUB sc4 +RANDOMIZE 1 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = 0 +pri 30, 70 + y, 1, 250, " Ruumiliselt laiendatud n�gemise" +y = y + 16 +pri 30, 70 + y, 1, 250, "l�henemine kujutise tuvastamiseks" +y = y + 20 +pri 30, 70 + y, 1, 250, "eesm�rk: + interpriteerimine" +y = y + 16 +pri 30, 70 + y, 1, 250, " + automaatjuhtimine" + +inpur +END SUB + +SUB sc5 +RANDOMIZE 4 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess" +y = y + 20 +pri 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;" +y = y + 12 +pri 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-" +y = y + 12 +pri 30, 70 + y, 1, 250, " skaalaline serva avastamine;" +y = y + 12 +pri 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate" +y = y + 12 +pri 30, 70 + y, 1, 250, " rakkude p�him�tted." + + +inpur + +END SUB + +SUB sc6 +RANDOMIZE 40 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, "* S�gavusinfo ekstraheerimine" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Ruumilise n�gemise kasutamine" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Sarnasusm��de" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Sobitamisstrateegia" +inpur + + +END SUB + +SUB sc7 +pal 0, 0, 0, 0 +FOR a = 0 TO 19 +FOR y = a TO 199 STEP 20 +LINE (0, y)-(319, y), 0 +NEXT y +SOUND 0, .5 +NEXT a + +END SUB + +SUB sc8 +FOR a = 1 TO 50 +pal 0, 0, 0, a +NEXT a + + +DIM px(0 TO 800) +DIM py(0 TO 800) +DIM pz(0 TO 800) +DIM lin1(0 TO 1000) +DIM lin2(0 TO 1000) +DIM linc(0 TO 1000) +DIM lbx1(1 TO 1000) +DIM lby1(1 TO 1000) +DIM lbx2(1 TO 1000) +DIM lby2(1 TO 1000) +DIM px1(0 TO 800) +DIM py1(0 TO 800) +DIM hlkx(1 TO 50) +DIM hlky(1 TO 50) +DIM hlkz(1 TO 50) +DIM hlka +DIM hlkr +DIM hlknu +DIM hlkin +DIM hlax, hlay, hlaz +DIM mx, mz, my +DIM desx, desz +DIM desa + +DIM np, nl +DIM an1, an2 +DIM tim +DIM eta +DIM mil +DIM miin + +miin = 0 +mil = 25 +tim = 0 +eta = 1 +an1 = 0 +an2 = 0 + +np = 0 +nl = 0 +RANDOMIZE 100 +s = 64 +14 +sp = s / 2 +FOR y = 0 TO 100 STEP s +FOR x = 0 TO 100 STEP s +c1 = POINT(x, y) +c2 = POINT(x + s, y) +c3 = POINT(x, y + s) +c4 = POINT(x + s, y + s) +c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7 +c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7 +c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7 +IF c5 > 50 THEN c5 = 50 +IF c5 < 0 THEN c5 = 0 +IF c6 > 50 THEN c6 = 50 +IF c6 < 0 THEN c6 = 0 +IF c7 > 50 THEN c7 = 50 +IF c7 < 0 THEN c7 = 0 +PSET (x + sp, y + sp), c5 +PSET (x + s, y + sp), c6 +PSET (x + sp, y + s), c7 +NEXT x +NEXT y +s = s / 2 +IF s > 1 THEN GOTO 14 +'a$ = INPUT$(1) + +FOR z = 1 TO 400 STEP 20 +FOR x = 1 TO 400 STEP 20 +np = np + 1 +px(np) = x +py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2 +pz(np) = z +IF x > 1 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 1 +linc(nl) = 1 +END IF +IF z > 1 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 20 +linc(nl) = 1 +END IF +NEXT x +NEXT z + + +LINE (0, 0)-(319, 199), 0, BF + +pal 0, 0, 0, 0 +pal 0, 40, 10, 1 +pal 0, 32, 64, 2 +pal 50, 50, 0, 3 +pal 64, 20, 0, 4 + +mx = 200 +mz = 200 +kau = 1000 +hlax = 200 +hlay = 0 +hlaz = 200 +desx = 200 +desz = 200 + +OPEN "data2.dat" FOR INPUT AS #1 +a = 0 +b = 0 +hlkin = np + 1 +15 +INPUT #1, x, y, z +IF x = 999 THEN GOTO 16 +a = a + 1 +hlkx(a) = x +hlky(a) = -y +hlkz(a) = z +GOTO 15 +16 +INPUT #1, x, y +IF x = 999 THEN GOTO 17 +nl = nl + 1 +lin1(nl) = x + np + 1 +lin2(nl) = y + np + 1 +linc(nl) = 2 +GOTO 16 +17 +CLOSE #1 +np = np + a +hlknu = a + +RANDOMIZE 10 +c = 3 +FOR a = 1 TO 25 +p = RND * 396 + 2 +x = px(p) +z = pz(p) +yy = py(p) - 4 + +px(np + 1) = x - 5 +py(np + 1) = yy +pz(np + 1) = z - 5 + +px(np + 2) = x + 5 +py(np + 2) = yy +pz(np + 2) = z - 5 + +px(np + 3) = x + 5 +py(np + 3) = yy +pz(np + 3) = z + 5 + +px(np + 4) = x - 5 +py(np + 4) = yy +pz(np + 4) = z + 5 + +px(np + 5) = x +py(np + 5) = yy - 5 +pz(np + 5) = z + + +lin1(nl + 1) = np + 1 +lin2(nl + 1) = np + 2 +linc(nl + 1) = c + +lin1(nl + 2) = np + 2 +lin2(nl + 2) = np + 3 +linc(nl + 2) = c + +lin1(nl + 3) = np + 3 +lin2(nl + 3) = np + 4 +linc(nl + 3) = c + +lin1(nl + 4) = np + 4 +lin2(nl + 4) = np + 1 +linc(nl + 4) = c + +lin1(nl + 5) = np + 1 +lin2(nl + 5) = np + 5 +linc(nl + 5) = c + +lin1(nl + 6) = np + 2 +lin2(nl + 6) = np + 5 +linc(nl + 6) = c + +lin1(nl + 7) = np + 3 +lin2(nl + 7) = np + 5 +linc(nl + 7) = c + +lin1(nl + 8) = np + 4 +lin2(nl + 8) = np + 5 +linc(nl + 8) = c + +np = np + 5 +nl = nl + 8 +NEXT a + + +10 +SOUND 0, 1 +IF INKEY$ <> "" THEN miin = 1 +IF miin > 150 THEN GOTO 13 +IF miin <> 0 THEN miin = miin + 7 +mx = hlax +my = 50 - hlay - miin +mz = hlaz + +SELECT CASE eta +CASE 1 +desx = px(np) +desz = pz(np) +getan desx, desz, hlax, hlaz, desa +IF desa - hlka > pi THEN desa = desa - (pi * 2) +IF hlka - desa > pi THEN desa = desa + (pi * 2) +eta = 2 +FOR a = nl - 7 TO nl +linc(a) = 4 +NEXT a +CASE 2 +a = desa - hlka +IF desa = hlka THEN eta = 3 +IF a > .05 THEN a = .05 +IF a < -.05 THEN a = -.05 +hlka = hlka + a +CASE 3 +x = desx - hlax +z = desz - hlaz +v = SQR(x * x + z * z) +IF v < 5 THEN eta = 4 +v = v / 2 +hlax = hlax + x / v +hlaz = hlaz + z / v +CASE 4 +FOR a = np - 4 TO np +py(a) = py(a) - 1 +NEXT a +IF py(np) < 3 - hlay THEN +FOR a = nl - 7 TO nl +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +NEXT a +np = np - 5 +nl = nl - 8 +mil = mil - 1 +eta = 6 +IF mil <= 0 THEN eta = 7 +END IF +CASE 6 +eta = 5 +CASE 5 +eta = 1 +END SELECT + +y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20)) +IF hlay > y + 5 THEN hlay = hlay - 1 +IF hlay < y THEN hlay = hlay + 1 +IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1 +IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1 + +s1 = SIN(hlka) +c1 = COS(hlka) +FOR a = 0 TO hlknu - 5 +x = hlkx(a + 1) +z = hlkz(a + 1) +px(a + hlkin) = x * s1 + z * c1 + hlax +py(a + hlkin) = hlky(a + 1) - hlay +pz(a + hlkin) = z * s1 - x * c1 + hlaz +NEXT a + +hlkr = hlkr + .5 +s1 = SIN(hlkr) +c1 = COS(hlkr) +FOR a = hlknu - 4 TO hlknu - 1 +x = hlkx(a + 1) +z = hlkz(a + 1) +px(a + hlkin) = x * s1 + z * c1 + hlax +py(a + hlkin) = hlky(a + 1) - hlay +pz(a + hlkin) = z * s1 - x * c1 + hlaz +NEXT a + +tim = tim + 1 + +an1 = an1 + SIN(tim / 100) / 20 +an2 = SIN(tim / 42) * .3 + 1.15 + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +FOR a = 0 TO np +x = px(a) - mx +y = py(a) - my +z = pz(a) - mz + +z2 = z * s1 + x * c1 +x1 = x * s1 - z * c1 + +z1 = z2 * s2 + y * c2 +y1 = y * s2 - z2 * c2 + + +z1 = z1 + kau +IF z1 < 1 THEN px1(a) = -1: GOTO 11 +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 + +px1(a) = x1 + 160 +py1(a) = y1 + 80 +11 +NEXT a + +FOR a = 1 TO nl +l1 = lin1!(a) +l2 = lin2!(a) +x1 = px1(l1) +x2 = px1(l2) +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +IF (x1 = -1) OR (x2 = -1) THEN GOTO 12 +y1 = py1(l1) +y2 = py1(l2) +LINE (x1, y1)-(x2, y2), linc(a) +lbx1(a) = x1 +lby1(a) = y1 +lbx2(a) = x2 +lby2(a) = y2 +12 +NEXT a +IF kau > 200 THEN kau = kau - 10 +IF tim < 28000 THEN GOTO 10 +13 +END SUB + +SUB sc9 +RANDOMIZE 45 +mkback + +box 30, 50, 290, 80 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, " T�nan t�helepanu eest" +inpur + + + +END SUB + +SUB start +SCREEN 13 +pi = 3.141592 +pii = pi +fac = 360 / (pi * 2) +getfnt +END SUB + diff --git a/Graphics/Presentations/AI/data.dat b/Graphics/Presentations/AI/data.dat new file mode 100755 index 0000000..f0644de --- /dev/null +++ b/Graphics/Presentations/AI/data.dat @@ -0,0 +1,1129 @@ +0main01 410 718 +89.204338 6.623288 10.9639 +88.564339 2.520903 7.963761 +87.60434 6.935034 8.745699 +83.444336 6.093147 6.688511 +99.124336 -6.848641 17.149164 +99.124336 -10.478266 13.084459 +96.084335 -10.772884 12.881481 +95.28434 -6.170335 16.921349 +93.204338 -9.171329 10.68298 +92.884338 -5.313886 15.425991 +90.96434 -4.2202 8.793657 +91.124336 -6.171187 6.580594 +88.564339 -2.920966 2.998073 +90.324341 2.486645 12.806118 +87.28434 5.861047 14.088221 +88.244339 2.925144 16.58391 +91.444336 -3.338062 18.611977 +94.644341 -4.286149 19.609739 +99.124336 -5.053528 20.471325 +83.924339 -1.562647 23.223949 +79.764336 4.940365 17.190277 +76.884338 1.670444 22.062607 +71.60434 6.997552 16.348389 +70.004333 6.279848 19.155825 +66.004333 12.468541 14.208982 +64.244339 12.698928 16.018658 +63.764332 16.355104 11.846901 +62.484333 17.263796 13.428761 +60.084343 23.388258 10.088614 +64.564331 17.070242 7.908096 +63.604336 15.180919 2.956967 +59.764343 22.357954 4.773498 +70.804337 10.457606 5.524599 +83.124336 1.235376 -0.133957 +75.124336 4.471036 -0.163931 +75.60434 7.380387 5.576841 +69.844337 7.867706 0.95973 +57.524345 22.780184 -8.577671 +60.884335 14.068394 -8.671026 +68.244339 4.700564 -8.695011 +74.644333 0.739494 -9.251703 +86.96434 -3.899883 -9.58058 +90.164337 -8.499012 -2.148324 +93.684341 -14.457324 4.608192 +92.084335 -11.159997 1.840152 +92.084335 -14.62861 -1.070912 +88.884338 -14.096755 -6.004914 +90.644341 -18.575119 -5.180153 +88.244339 -12.453233 -9.651669 +91.28434 -10.85681 -14.112907 +89.044342 -8.960634 -16.108429 +85.204338 -8.312301 -19.571907 +77.684341 -1.006799 -20.968773 +71.924332 4.017982 -30.280075 +69.524338 4.521569 -17.768227 +90.644341 -12.565423 -19.200211 +94.804337 -15.067966 -15.189461 +92.564339 -13.817552 -12.590141 +96.404335 -16.98727 6.514645 +99.124336 -17.37096 6.945438 +99.124336 -25.125237 0.039037 +96.564339 -21.998348 1.932645 +93.844337 -17.3367 2.10308 +93.524338 -21.144463 -0.694079 +93.364334 -23.25647 -4.060776 +96.404335 -25.355621 -1.770636 +90.324341 -14.78534 -10.302568 +90.164337 -16.253292 -9.054724 +91.924339 -18.605095 -8.415813 +92.724335 -19.80584 -9.069284 +94.004333 -19.46925 -10.314562 +95.764336 -24.643055 -6.840809 +96.404335 -17.553375 -13.599895 +95.28434 -17.414631 -12.287815 +96.564339 -15.793377 -15.776131 +94.324341 -15.607529 -13.64957 +99.124336 -27.192703 -3.644545 +96.244339 -26.175243 -3.986268 +99.124336 -25.076416 -8.355864 +98.96434 -16.427147 -15.865196 +98.96434 -14.647448 -19.331245 +96.884338 -14.489006 -19.308975 +94.644341 -14.375095 -18.969826 +98.96434 -16.467396 -23.626328 +96.564339 -16.445129 -23.784775 +93.044334 -15.675183 -23.514999 +89.364334 -13.504088 -24.017731 +84.244339 -9.7734 -25.270714 +78.96434 -3.601835 -27.796379 +77.204338 -2.114184 -30.33403 +80.404343 -4.203916 -33.859169 +81.044342 -3.087108 -30.309189 +84.564339 -9.202147 -32.784325 +98.804337 -12.136337 -39.498032 +96.084335 -16.21817 -33.44722 +98.96434 -16.21817 -33.44722 +93.684341 -11.975326 -38.344391 +93.364334 -15.720574 -33.538864 +88.244339 -12.868604 -33.138046 +88.724335 -10.955297 -37.554741 +84.884338 -9.006877 -36.473053 +80.724335 -3.835641 -41.078178 +86.644341 -7.999694 -41.34024 +89.364334 -9.606388 -41.40448 +93.844337 -11.14371 -40.812668 +98.804337 -13.260849 -46.442108 +92.884338 -12.401834 -46.806099 +89.044342 -10.522787 -46.38044 +86.484337 -8.871554 -46.633095 +81.044342 -3.509334 -46.848915 +74.804337 3.890378 -46.616821 +74.164337 3.972595 -40.30394 +61.204334 14.094946 -16.907494 +57.204346 23.465345 -15.752136 +57.684349 23.625502 -24.939255 +62.964336 14.750134 -27.317619 +60.564346 23.174154 -34.373886 +66.164337 15.833541 -38.475418 +62.004349 22.916365 -38.287857 +67.924332 16.337994 -45.51371 +64.564331 22.220076 -45.979614 +69.524338 17.003458 -51.398361 +73.364334 17.896734 -56.604721 +71.444336 21.607725 -56.567879 +79.28434 20.938837 -62.155346 +78.004333 5.60756 -57.685555 +83.764336 5.961273 -61.352001 +67.444336 21.459557 -52.064682 +69.524338 10.627194 -39.368706 +75.60434 4.172151 -52.070686 +80.724335 -3.997507 -52.572563 +98.804337 -13.798698 -54.111595 +93.524338 -13.120393 -54.339417 +93.524338 -9.692029 -59.189476 +98.804337 -10.189623 -59.097847 +98.644341 -2.369394 -63.007519 +93.364342 -2.753085 -62.576725 +88.244339 -3.111937 -61.173008 +89.204338 -9.303204 -57.357536 +89.044342 -11.241344 -53.913757 +86.324341 -9.362298 -53.488098 +83.60434 -3.579558 -57.845711 +98.644341 5.772858 -64.609924 +93.044342 6.000672 -63.931637 +98.644341 20.203152 -67.267487 +92.244339 18.599026 -66.200356 +86.484337 20.230555 -65.163185 +88.084335 6.025507 -62.958706 +61.524334 18.511641 14.896713 +62.644337 12.976414 18.642815 +60.244347 22.641432 20.001144 +63.124332 16.675413 23.363556 +68.884338 5.789958 22.641567 +69.684341 8.040704 27.320347 +61.684349 22.295424 27.061703 +63.444332 19.198507 28.403755 +63.124344 21.832941 32.651737 +70.324341 12.992682 35.771774 +70.484337 10.855845 31.432152 +76.244339 1.361266 25.412174 +76.404343 2.683621 29.798904 +76.884338 4.659446 32.984894 +77.044342 7.090899 37.527493 +76.724335 9.363912 42.047829 +70.324341 14.768098 40.383751 +65.84433 20.647617 38.786476 +71.284332 19.014368 46.958702 +77.364334 12.751162 48.986771 +82.804337 5.474781 43.278542 +75.124336 18.210167 51.531281 +79.284332 18.106533 55.717598 +82.164337 20.173992 59.401184 +85.204338 19.859678 60.488014 +84.084335 14.692729 57.015114 +83.444336 25.293842 62.059601 +87.124336 25.001791 62.987984 +91.28434 24.484493 64.369446 +90.644341 18.461102 62.391899 +95.60434 24.100807 64.800232 +94.644341 17.715988 63.095039 +99.28434 24.259251 64.822495 +99.444336 17.354568 63.367386 +99.444336 11.373137 59.941597 +93.844337 11.893003 59.691513 +89.364342 12.615841 59.14682 +82.96434 8.862031 50.217484 +83.444336 3.427015 38.305149 +82.96434 0.928757 34.237877 +83.28434 -0.480099 31.616287 +82.644333 -1.304856 27.13792 +89.364334 -3.439124 23.929665 +89.364334 -3.428847 28.455135 +93.844337 -3.981255 24.338188 +99.124336 -4.251036 25.108135 +93.364342 -3.812536 28.885929 +99.28434 -4.129421 28.841393 +89.204338 -2.198133 32.344265 +93.204338 -2.492751 32.141289 +99.28434 -2.515018 32.299732 +93.364342 -0.811544 35.124294 +99.28434 -0.992255 35.260475 +93.044342 0.758325 38.899521 +99.28434 0.555346 39.194141 +92.884338 2.286225 44.123001 +99.28434 2.083248 44.417618 +93.364342 7.924221 55.740715 +99.28434 5.020005 52.26268 +93.364342 4.950633 51.606644 +88.724335 6.148803 51.128746 +89.044342 3.009068 43.5783 +89.204338 1.572807 38.852417 +89.204338 -0.630835 34.988125 +66.96434 11.490479 11.971083 +68.404343 10.373672 8.421106 +72.564339 6.58132 12.412153 +74.484337 6.368066 8.181299 +80.564339 4.863286 13.140133 +81.204338 5.03629 9.609854 +84.404335 5.422548 10.310429 +110.644341 6.957304 8.587257 +109.684341 2.543172 7.805317 +109.044342 6.645557 10.805456 +114.644341 6.273862 6.552335 +103.124336 -6.170334 16.921349 +102.324341 -10.772884 12.881481 +105.524338 -5.291618 15.267548 +105.204338 -9.149059 10.524538 +107.28434 -4.19793 8.635214 +107.124336 -6.148917 6.422151 +109.684341 -2.898697 2.83963 +107.924339 2.508914 12.647675 +110.96434 5.883318 13.929779 +110.004341 2.947415 16.425468 +106.96434 -3.315792 18.453535 +103.764336 -4.286148 19.609739 +114.484337 -1.381933 23.087776 +118.484337 5.143347 16.895658 +121.524338 1.873427 21.76799 +128.244339 6.505099 18.702765 +126.644333 7.200536 16.053772 +134.004333 12.924178 15.565598 +132.244339 12.693795 13.755922 +135.60434 17.48905 12.975698 +134.324341 16.580359 11.393839 +138.004333 23.613512 9.635551 +133.524338 17.295492 7.455036 +138.164337 22.583204 4.320436 +134.484329 15.406175 2.503908 +127.284332 10.682858 5.071537 +114.96434 1.41609 -0.270133 +122.96434 4.674019 -0.45855 +122.484337 7.583371 5.282223 +128.244339 8.092959 0.50667 +140.244339 23.027704 -9.189175 +137.044342 14.293647 -9.124086 +129.684341 4.925817 -9.148069 +123.284332 0.942477 -9.546322 +111.124336 -3.877613 -9.739023 +107.924339 -8.476742 -2.306769 +106.164337 -11.137728 1.681711 +104.564339 -14.457322 4.608192 +106.164337 -14.606341 -1.229359 +109.204338 -14.074485 -6.163357 +107.60434 -18.552853 -5.338597 +109.844337 -12.430963 -9.81011 +106.804337 -10.834541 -14.271347 +108.884338 -8.938365 -16.266869 +112.724335 -8.290032 -19.730347 +120.084335 -0.803817 -21.263397 +128.244339 4.746822 -18.221283 +125.684341 4.220966 -30.574692 +107.28434 -12.543151 -19.358658 +103.28434 -15.067966 -15.189461 +105.524338 -13.795281 -12.748585 +102.004341 -16.98727 6.514645 +101.684334 -21.998348 1.932645 +104.404335 -17.3367 2.10308 +104.724335 -21.122196 -0.852522 +104.884338 -23.2342 -4.21922 +101.844337 -25.355621 -1.770636 +107.764336 -14.763068 -10.461012 +107.924339 -16.231022 -9.213167 +106.164337 -18.582829 -8.574255 +105.364334 -19.783569 -9.227726 +102.484337 -24.643055 -6.840809 +104.084335 -19.46925 -10.314562 +102.804337 -17.414631 -12.287815 +101.684341 -17.553375 -13.599895 +101.524338 -15.793377 -15.776131 +103.764336 -15.607529 -13.64957 +102.004333 -26.175243 -3.986268 +101.044334 -14.489006 -19.308975 +103.28434 -14.375095 -18.969826 +101.364334 -16.445129 -23.784775 +104.884338 -15.652915 -23.673439 +108.564339 -13.481818 -24.17617 +113.684341 -9.592689 -25.406883 +118.804337 -3.398854 -28.090996 +120.564339 -1.911202 -30.628647 +117.364334 -4.000934 -34.153786 +116.724335 -2.884128 -30.603813 +113.204338 -9.021438 -32.920502 +101.684341 -16.21817 -33.44722 +104.084335 -11.975322 -38.344391 +104.404335 -15.720572 -33.538864 +109.524338 -12.846332 -33.296486 +109.044342 -10.933026 -37.713188 +112.884338 -8.984607 -36.6315 +116.884338 -3.63266 -41.372787 +110.96434 -7.977424 -41.498688 +108.244339 -9.584119 -41.562912 +103.764336 -11.143711 -40.812668 +104.724335 -12.379563 -46.964554 +108.564339 -10.500516 -46.538895 +111.124336 -8.849284 -46.791542 +116.404343 -3.306351 -47.143539 +122.644333 4.09336 -46.911438 +123.444336 4.175578 -40.598557 +136.564331 14.320199 -17.36055 +140.564331 23.712866 -16.36364 +139.924332 23.873026 -25.550758 +134.644333 14.975389 -27.770676 +136.884338 23.399412 -34.82695 +135.444336 23.141619 -38.740913 +131.284332 16.058798 -38.928482 +132.724335 22.44533 -46.432678 +129.524338 16.563246 -45.966774 +125.684341 21.810703 -56.862511 +123.924332 18.099718 -56.899338 +127.764336 17.228706 -51.851425 +117.844337 21.141823 -62.449963 +119.284332 5.810542 -57.980179 +113.524338 6.141986 -61.488178 +129.844345 21.684809 -52.517738 +127.924332 10.852447 -39.821754 +121.844337 4.375133 -52.365303 +116.724335 -3.794525 -52.86718 +103.924339 -13.120392 -54.339417 +103.924339 -9.692028 -59.189476 +103.924339 -2.753083 -62.576725 +109.044342 -3.089667 -61.331448 +108.244339 -9.280932 -57.515976 +108.404335 -11.219075 -54.072197 +111.124336 -9.340028 -53.646553 +113.844337 -3.398845 -57.98188 +104.244339 6.000674 -63.931637 +104.884338 18.621292 -66.358788 +109.204338 6.047778 -63.117146 +110.644341 20.252831 -65.32164 +135.60434 13.201668 18.189754 +136.724335 18.736891 14.443651 +138.004333 22.866682 19.548082 +135.124329 16.900667 22.910496 +128.724335 8.265954 26.867283 +129.524338 6.015211 22.188507 +134.96434 19.423761 27.950691 +136.564331 22.520678 26.608643 +135.284332 22.058195 32.198677 +127.924332 11.081098 30.979092 +128.244339 13.217937 35.318718 +122.164337 1.564248 25.117558 +122.164337 2.886603 29.504288 +121.684341 4.862428 32.690273 +121.524338 7.293882 37.232876 +128.244339 14.99335 39.930691 +121.844337 9.566894 41.753208 +132.564331 20.872869 38.333416 +127.284332 19.21735 46.664085 +121.364334 12.954141 48.692154 +115.924332 5.655496 43.142365 +123.60434 18.413145 51.236656 +119.444336 18.309515 55.422981 +114.644341 14.873444 56.878937 +113.524338 20.040392 60.351837 +116.564339 20.376976 59.10656 +111.60434 25.024063 62.829544 +115.28434 25.474562 61.923424 +108.244339 18.483368 62.233459 +107.444336 24.506763 64.210999 +104.244339 17.715988 63.095039 +103.124336 24.100807 64.800232 +105.044342 11.893 59.691513 +109.524338 12.638112 58.988373 +115.764336 9.042745 50.08131 +115.124336 3.607729 38.168968 +115.60434 1.109471 34.1017 +115.284332 -0.299386 31.48011 +115.764336 -1.124143 27.001743 +109.044342 -3.416854 23.771221 +109.204338 -3.406578 28.296692 +104.564339 -3.981254 24.338188 +105.204338 -3.790267 28.727486 +109.364334 -2.175864 32.185822 +105.364342 -2.470482 31.982845 +105.204338 -0.789276 34.965858 +105.524338 0.780594 38.741077 +105.844337 2.308495 43.964554 +105.364342 7.946491 55.582275 +105.364342 4.972902 51.448196 +110.004341 6.171074 50.970291 +109.684341 3.031338 43.419853 +109.364334 1.595075 38.693977 +109.364334 -0.608564 34.829678 +129.684341 10.598924 7.968044 +131.284332 11.71573 11.518023 +125.684341 6.784304 12.117535 +123.764336 6.571049 7.886681 +117.684341 5.066267 12.845516 +117.044342 5.239271 9.315237 +113.844337 5.60326 10.174253 +1 3 2 0 1 +1 3 3 2 1 +1 3 6 4 5 +1 3 4 6 7 +1 3 8 7 6 +1 3 7 8 9 +1 3 8 10 9 +1 3 11 10 8 +1 3 12 10 11 +1 3 1 10 12 +1 3 13 10 1 +1 3 9 10 13 +1 3 0 13 1 +1 3 14 13 0 +1 3 15 13 14 +1 3 9 15 16 +1 3 15 9 13 +1 3 17 9 16 +1 3 9 17 7 +1 3 18 7 17 +1 3 7 18 4 +1 3 19 15 14 +1 3 20 19 14 +1 3 19 20 21 +1 3 22 21 20 +1 3 21 22 23 +1 3 24 23 22 +1 3 23 24 25 +1 3 26 25 24 +1 3 25 26 27 +1 3 28 27 26 +1 3 28 26 29 +1 3 31 29 30 +1 3 32 30 29 +1 3 33 3 1 +1 3 12 33 1 +1 3 34 3 33 +1 3 3 34 35 +1 3 36 35 34 +1 3 35 36 32 +1 3 30 32 36 +1 3 31 30 37 +1 3 37 30 38 +1 3 38 30 36 +1 3 39 38 36 +1 3 34 39 36 +1 3 40 34 33 +1 3 40 33 41 +1 3 34 40 39 +1 3 41 33 12 +1 3 42 41 12 +1 3 44 8 43 +1 3 8 44 11 +1 3 42 11 44 +1 3 11 42 12 +1 3 42 44 45 +1 3 46 42 45 +1 3 47 46 45 +1 3 42 46 41 +1 3 48 41 46 +1 3 41 48 49 +1 3 50 41 49 +1 3 41 50 51 +1 3 52 41 51 +1 3 54 52 53 +1 3 52 54 40 +1 3 41 52 40 +1 3 50 49 55 +1 3 51 50 55 +1 3 56 55 49 +1 3 57 56 49 +1 3 8 58 43 +1 3 58 8 6 +1 3 58 5 59 +1 3 5 58 6 +1 3 61 59 60 +1 3 59 61 58 +1 3 62 58 61 +1 3 58 62 43 +1 3 44 43 62 +1 3 45 44 62 +1 3 63 45 62 +1 3 47 63 64 +1 3 63 47 45 +1 3 61 63 62 +1 3 63 61 65 +1 3 48 57 49 +1 3 57 48 66 +1 3 67 66 48 +1 3 46 67 48 +1 3 47 68 67 +1 3 46 47 67 +1 3 69 47 64 +1 3 47 69 68 +1 3 64 70 69 +1 3 70 64 71 +1 3 73 71 72 +1 3 71 73 70 +1 3 74 73 72 +1 3 75 74 56 +1 3 75 56 57 +1 3 74 75 73 +1 3 76 61 60 +1 3 61 76 65 +1 3 64 65 77 +1 3 65 64 63 +1 3 77 65 76 +1 3 78 77 76 +1 3 77 78 71 +1 3 77 71 64 +1 3 79 71 78 +1 3 71 79 72 +1 3 74 72 79 +1 3 80 74 79 +1 3 74 80 81 +1 3 56 81 82 +1 3 81 56 74 +1 3 55 56 82 +1 3 84 80 83 +1 3 80 84 81 +1 3 85 81 84 +1 3 81 85 82 +1 3 55 82 85 +1 3 86 55 85 +1 3 55 86 87 +1 3 51 55 87 +1 3 88 51 87 +1 3 51 88 52 +1 3 52 88 89 +1 3 53 52 89 +1 3 90 53 89 +1 3 89 91 90 +1 3 88 91 89 +1 3 90 91 92 +1 3 95 93 94 +1 3 96 94 93 +1 3 94 96 97 +1 3 98 97 96 +1 3 99 98 96 +1 3 98 99 100 +1 3 92 98 100 +1 3 90 92 100 +1 3 101 90 100 +1 3 102 101 100 +1 3 99 102 100 +1 3 102 99 103 +1 3 96 103 99 +1 3 103 96 104 +1 3 93 104 96 +1 3 106 93 105 +1 3 93 106 104 +1 3 107 104 106 +1 3 104 107 103 +1 3 108 103 107 +1 3 103 108 102 +1 3 101 102 109 +1 3 109 102 108 +1 3 101 109 110 +1 3 111 101 110 +1 3 101 111 53 +1 3 90 101 53 +1 3 39 40 54 +1 3 112 39 54 +1 3 39 112 38 +1 3 113 38 112 +1 3 38 113 37 +1 3 114 113 112 +1 3 115 114 112 +1 3 114 115 116 +1 3 118 115 117 +1 3 115 118 116 +1 3 120 117 119 +1 3 117 120 118 +1 3 123 121 122 +1 3 124 123 122 +1 3 125 124 122 +1 3 124 125 126 +1 3 127 119 121 +1 3 119 127 120 +1 3 128 119 117 +1 3 115 128 117 +1 3 128 115 53 +1 3 111 128 53 +1 3 128 111 110 +1 3 119 128 110 +1 3 121 119 110 +1 3 129 121 110 +1 3 109 129 110 +1 3 129 109 130 +1 3 115 54 53 +1 3 54 115 112 +1 3 127 121 123 +1 3 132 105 131 +1 3 105 132 106 +1 3 132 131 133 +1 3 133 131 134 +1 3 135 133 134 +1 3 133 135 136 +1 3 137 133 136 +1 3 138 133 137 +1 3 133 138 132 +1 3 139 132 138 +1 3 140 139 138 +1 3 141 140 138 +1 3 140 141 130 +1 3 109 140 130 +1 3 140 109 108 +1 3 139 140 108 +1 3 107 139 108 +1 3 142 136 135 +1 3 136 142 143 +1 3 144 143 142 +1 3 143 144 145 +1 3 147 145 146 +1 3 145 147 143 +1 3 124 147 146 +1 3 147 124 126 +1 3 121 125 122 +1 3 125 121 129 +1 3 141 129 130 +1 3 129 141 125 +1 3 126 137 147 +1 3 141 126 125 +1 3 126 141 137 +1 3 138 137 141 +1 3 147 136 143 +1 3 136 147 137 +1 3 132 107 106 +1 3 107 132 139 +1 3 28 29 31 +1 3 148 25 27 +1 3 25 148 149 +1 3 28 148 27 +1 3 148 28 150 +1 3 151 148 150 +1 3 148 151 149 +1 3 153 152 149 +1 3 151 153 149 +1 3 154 151 150 +1 3 151 154 155 +1 3 156 155 154 +1 3 158 156 157 +1 3 156 158 155 +1 3 151 155 158 +1 3 153 151 158 +1 3 149 152 25 +1 3 25 152 23 +1 3 152 21 23 +1 3 21 152 159 +1 3 153 159 152 +1 3 159 153 160 +1 3 158 160 153 +1 3 160 158 161 +1 3 162 161 158 +1 3 157 162 158 +1 3 157 163 162 +1 3 163 157 164 +1 3 156 164 157 +1 3 164 156 165 +1 3 164 165 166 +1 3 167 164 166 +1 3 164 167 163 +1 3 168 163 167 +1 3 166 169 167 +1 3 170 167 169 +1 3 172 170 171 +1 3 170 172 173 +1 3 174 172 171 +1 3 172 174 175 +1 3 172 176 177 +1 3 176 172 175 +1 3 179 176 178 +1 3 176 179 177 +1 3 181 178 180 +1 3 178 181 179 +1 3 183 181 182 +1 3 181 183 179 +1 3 184 179 183 +1 3 179 184 177 +1 3 173 177 184 +1 3 177 173 172 +1 3 167 173 185 +1 3 173 167 170 +1 3 167 185 168 +1 3 163 168 162 +1 3 186 162 168 +1 3 161 186 187 +1 3 188 161 187 +1 3 161 188 160 +1 3 189 160 188 +1 3 160 189 159 +1 3 159 189 19 +1 3 21 159 19 +1 3 190 19 189 +1 3 191 190 189 +1 3 19 190 16 +1 3 15 19 16 +1 3 192 16 190 +1 3 16 192 17 +1 3 193 17 192 +1 3 17 193 18 +1 3 194 193 192 +1 3 193 194 195 +1 3 190 194 192 +1 3 194 190 191 +1 3 188 191 189 +1 3 191 188 196 +1 3 194 196 197 +1 3 196 194 191 +1 3 198 194 197 +1 3 194 198 195 +1 3 199 198 197 +1 3 198 199 200 +1 3 201 200 199 +1 3 200 201 202 +1 3 203 202 201 +1 3 202 203 204 +1 3 183 182 205 +1 3 205 182 206 +1 3 207 205 206 +1 3 205 207 208 +1 3 173 184 185 +1 3 185 184 208 +1 3 168 185 208 +1 3 209 168 208 +1 3 168 209 210 +1 3 186 168 210 +1 3 211 186 210 +1 3 186 211 187 +1 3 196 187 211 +1 3 187 196 188 +1 3 199 196 211 +1 3 196 199 197 +1 3 210 199 211 +1 3 199 210 201 +1 3 209 201 210 +1 3 201 209 203 +1 3 207 203 209 +1 3 208 207 209 +1 3 204 207 206 +1 3 207 204 203 +1 3 162 186 161 +1 3 183 205 184 +1 3 205 208 184 +1 3 0 2 14 +1 3 26 32 29 +1 3 213 26 212 +1 3 26 24 212 +1 3 212 22 214 +1 3 22 212 24 +1 3 214 213 212 +1 3 213 214 215 +1 3 22 216 214 +1 3 216 22 20 +1 3 214 217 215 +1 3 217 214 216 +1 3 218 217 216 +1 3 216 14 218 +1 3 14 216 20 +1 3 221 219 220 +1 3 219 222 220 +1 3 5 223 224 +1 3 223 5 4 +1 3 224 225 226 +1 3 225 224 223 +1 3 227 226 225 +1 3 227 228 226 +1 3 227 229 228 +1 3 227 220 229 +1 3 227 230 220 +1 3 227 225 230 +1 3 230 221 220 +1 3 230 231 221 +1 3 230 232 231 +1 3 233 230 225 +1 3 230 233 232 +1 3 233 223 234 +1 3 223 233 225 +1 3 234 4 18 +1 3 4 234 223 +1 3 232 235 231 +1 3 235 236 231 +1 3 236 235 237 +1 3 236 238 239 +1 3 238 236 237 +1 3 239 240 241 +1 3 240 239 238 +1 3 241 242 243 +1 3 242 241 240 +1 3 242 244 243 +1 3 243 244 245 +1 3 245 246 247 +1 3 247 248 245 +1 3 222 249 220 +1 3 249 229 220 +1 3 222 250 249 +1 3 250 222 251 +1 3 251 252 250 +1 3 252 251 248 +1 3 248 247 252 +1 3 247 246 253 +1 3 247 253 254 +1 3 247 254 252 +1 3 254 255 252 +1 3 255 250 252 +1 3 250 256 249 +1 3 249 256 257 +1 3 256 250 255 +1 3 249 257 229 +1 3 257 258 229 +1 3 260 228 259 +1 3 228 260 226 +1 3 259 229 258 +1 3 229 259 228 +1 3 259 258 261 +1 3 258 262 261 +1 3 262 263 261 +1 3 262 258 257 +1 3 257 264 262 +1 3 264 257 265 +1 3 257 266 265 +1 3 266 257 267 +1 3 257 268 267 +1 3 268 269 270 +1 3 269 268 256 +1 3 268 257 256 +1 3 265 266 271 +1 3 266 267 271 +1 3 271 272 265 +1 3 272 273 265 +1 3 260 224 226 +1 3 224 260 274 +1 3 59 224 274 +1 3 224 59 5 +1 3 60 274 275 +1 3 274 60 59 +1 3 275 260 276 +1 3 260 275 274 +1 3 260 259 276 +1 3 259 261 276 +1 3 261 277 276 +1 3 278 261 263 +1 3 261 278 277 +1 3 276 279 275 +1 3 279 276 277 +1 3 265 280 264 +1 3 280 265 273 +1 3 280 281 264 +1 3 281 262 264 +1 3 282 263 281 +1 3 263 262 281 +1 3 278 282 283 +1 3 282 278 263 +1 3 283 284 278 +1 3 284 283 285 +1 3 287 285 286 +1 3 285 287 284 +1 3 286 288 287 +1 3 288 289 272 +1 3 272 289 273 +1 3 289 288 286 +1 3 60 279 76 +1 3 279 60 275 +1 3 290 277 278 +1 3 277 290 279 +1 3 279 290 76 +1 3 76 284 78 +1 3 284 76 290 +1 3 284 290 278 +1 3 284 79 78 +1 3 79 284 287 +1 3 287 288 79 +1 3 79 291 80 +1 3 291 79 288 +1 3 292 288 272 +1 3 288 292 291 +1 3 272 271 292 +1 3 83 291 293 +1 3 291 83 80 +1 3 293 292 294 +1 3 292 293 291 +1 3 292 271 294 +1 3 271 295 294 +1 3 295 271 296 +1 3 271 267 296 +1 3 267 297 296 +1 3 297 267 268 +1 3 297 268 298 +1 3 268 270 298 +1 3 270 299 298 +1 3 300 298 299 +1 3 300 297 298 +1 3 300 299 301 +1 3 93 95 302 +1 3 302 303 93 +1 3 303 302 304 +1 3 304 305 303 +1 3 305 306 303 +1 3 306 305 307 +1 3 305 301 307 +1 3 301 299 307 +1 3 299 308 307 +1 3 308 309 307 +1 3 307 310 306 +1 3 310 307 309 +1 3 306 311 303 +1 3 311 306 310 +1 3 311 93 303 +1 3 105 311 312 +1 3 311 105 93 +1 3 312 310 313 +1 3 310 312 311 +1 3 313 309 314 +1 3 309 313 310 +1 3 309 308 315 +1 3 309 315 314 +1 3 315 308 316 +1 3 308 317 316 +1 3 317 308 270 +1 3 308 299 270 +1 3 256 255 269 +1 3 255 318 269 +1 3 318 255 254 +1 3 254 319 318 +1 3 319 254 253 +1 3 319 320 318 +1 3 320 321 318 +1 3 321 320 322 +1 3 324 322 323 +1 3 322 324 321 +1 3 326 323 325 +1 3 323 326 324 +1 3 329 327 328 +1 3 327 330 328 +1 3 330 331 328 +1 3 331 330 332 +1 3 326 333 329 +1 3 333 326 325 +1 3 326 334 324 +1 3 334 321 324 +1 3 321 334 270 +1 3 334 317 270 +1 3 317 334 316 +1 3 334 326 316 +1 3 326 329 316 +1 3 329 335 316 +1 3 316 336 315 +1 3 336 316 335 +1 3 269 321 270 +1 3 321 269 318 +1 3 329 333 327 +1 3 131 312 337 +1 3 312 131 105 +1 3 131 337 338 +1 3 131 338 134 +1 3 134 339 135 +1 3 339 134 338 +1 3 338 340 339 +1 3 338 341 340 +1 3 341 338 337 +1 3 337 342 341 +1 3 342 343 341 +1 3 343 344 341 +1 3 344 343 336 +1 3 343 315 336 +1 3 315 343 314 +1 3 343 342 314 +1 3 342 313 314 +1 3 135 345 142 +1 3 345 135 339 +1 3 142 346 144 +1 3 346 142 345 +1 3 348 345 347 +1 3 345 348 346 +1 3 348 332 330 +1 3 332 348 347 +1 3 328 335 329 +1 3 335 328 331 +1 3 336 331 344 +1 3 331 336 335 +1 3 340 332 347 +1 3 331 340 344 +1 3 340 331 332 +1 3 340 341 344 +1 3 345 340 347 +1 3 340 345 339 +1 3 312 342 337 +1 3 342 312 313 +1 3 245 244 246 +1 3 242 349 350 +1 3 349 242 240 +1 3 350 244 242 +1 3 244 350 351 +1 3 350 352 351 +1 3 352 350 349 +1 3 354 353 349 +1 3 353 352 349 +1 3 351 355 356 +1 3 355 351 352 +1 3 355 357 356 +1 3 359 355 358 +1 3 355 359 357 +1 3 355 352 358 +1 3 352 353 358 +1 3 354 349 240 +1 3 354 240 238 +1 3 238 360 354 +1 3 360 238 237 +1 3 354 361 353 +1 3 361 354 360 +1 3 353 362 358 +1 3 362 353 361 +1 3 362 363 358 +1 3 363 359 358 +1 3 363 364 359 +1 3 364 363 365 +1 3 359 366 357 +1 3 366 359 364 +1 3 366 364 367 +1 3 367 365 368 +1 3 365 367 364 +1 3 365 369 368 +1 3 370 367 368 +1 3 368 371 370 +1 3 374 372 373 +1 3 372 374 371 +1 3 374 375 376 +1 3 375 374 373 +1 3 377 375 373 +1 3 375 377 378 +1 3 380 377 379 +1 3 377 380 378 +1 3 180 379 181 +1 3 379 180 380 +1 3 182 379 381 +1 3 379 182 181 +1 3 381 377 382 +1 3 377 381 379 +1 3 382 373 372 +1 3 373 382 377 +1 3 383 371 368 +1 3 371 383 372 +1 3 383 368 369 +1 3 369 365 363 +1 3 363 384 369 +1 3 384 362 385 +1 3 385 361 386 +1 3 361 385 362 +1 3 386 360 387 +1 3 360 386 361 +1 3 387 360 235 +1 3 360 237 235 +1 3 235 388 387 +1 3 388 389 387 +1 3 388 235 233 +1 3 235 232 233 +1 3 233 390 388 +1 3 390 233 234 +1 3 234 193 390 +1 3 193 234 18 +1 3 390 195 391 +1 3 195 390 193 +1 3 390 389 388 +1 3 389 390 391 +1 3 387 392 386 +1 3 392 387 389 +1 3 393 389 391 +1 3 389 393 392 +1 3 393 195 198 +1 3 195 393 391 +1 3 393 200 394 +1 3 200 393 198 +1 3 394 202 395 +1 3 202 394 200 +1 3 395 204 396 +1 3 204 395 202 +1 3 182 381 397 +1 3 182 397 206 +1 3 397 398 206 +1 3 398 397 399 +1 3 382 372 383 +1 3 382 383 399 +1 3 383 369 399 +1 3 369 400 399 +1 3 400 369 401 +1 3 369 384 401 +1 3 401 385 402 +1 3 385 401 384 +1 3 402 386 392 +1 3 386 402 385 +1 3 402 393 394 +1 3 393 402 392 +1 3 394 401 402 +1 3 401 394 395 +1 3 401 396 400 +1 3 396 401 395 +1 3 396 398 400 +1 3 398 399 400 +1 3 206 396 204 +1 3 396 206 398 +1 3 384 363 362 +1 3 397 381 382 +1 3 399 397 382 +1 3 219 221 231 +1 3 248 243 245 +1 3 243 403 404 +1 3 241 243 404 +1 3 405 241 404 +1 3 241 405 239 +1 3 404 406 405 +1 3 406 404 403 +1 3 405 236 239 +1 3 236 405 407 +1 3 406 407 405 +1 3 407 406 408 +1 3 408 409 407 +1 3 231 407 409 +1 3 407 231 236 diff --git a/Graphics/Presentations/AI/data2.dat b/Graphics/Presentations/AI/data2.dat new file mode 100755 index 0000000..a6a3427 --- /dev/null +++ b/Graphics/Presentations/AI/data2.dat @@ -0,0 +1,50 @@ +0 -10 -5 +0 -10 5 +-20 -10 -5 +-20 -10 5 +-20 0 -5 +-20 0 5 +0 10 -5 +0 10 5 +30 10 0 +10 0 -5 +10 0 5 +30 0 0 +40 10 0 +40 20 0 +-30 15 -3 +-30 15 3 +30 15 -3 +30 15 3 +999 999 999 +0 1 +2 3 +0 2 +1 3 +4 5 +2 4 +3 5 +4 0 +5 1 +6 7 +4 6 +5 7 +6 0 +7 1 +6 8 +7 8 +9 10 +6 9 +7 10 +0 9 +1 10 +9 11 +10 11 +11 12 +12 13 +13 8 +14 15 +16 17 +14 17 +15 16 +999 999 \ No newline at end of file diff --git a/Graphics/Presentations/Animation of athoms/playmov.asm b/Graphics/Presentations/Animation of athoms/playmov.asm deleted file mode 100644 index 0180aab..0000000 --- a/Graphics/Presentations/Animation of athoms/playmov.asm +++ /dev/null @@ -1,97 +0,0 @@ -; Play animation -; made by Svjatoslav Agejenko -; in 2002 -; H-Page: svjatoslav.eu -; E-Mail: svjatoslav@svjatoslav.eu - -[BITS 16] -[ORG 0x100] -[SECTION .text] - -l1: -; mov ah, 9 -; mov dx, file1 -; int 21h - -mov bx, 100 -mov ax,03e8h -mul bx -mov cx,dx -mov dx,ax -mov ah,86h -int 15h - -mov ah, 3dh -xor al, al -mov dx, file1 -int 21h -mov bx, ax -mov word [hand], ax -jc l3 - -mov ah, 3fh ;first -mov cx, 32000 -mov dx, fbuf -int 21h -jc l3 - -mov ax, 0A000h -mov es, ax -mov di, 0 -mov cx, 32000 -mov si, fbuf -rep movsb - -mov ah, 3fh ;Second -mov cx, 32000 -mov dx, fbuf -int 21h -jc l3 - -mov ax, 0A000h -mov es, ax -mov di, 32000 -mov cx, 32000 -mov si, fbuf -rep movsb - - -mov ah, 3eh -mov bx, word [hand] -int 21h - -inc byte[n2] -cmp byte[n2], 123 -jnz l2 -inc byte[n1] -mov byte[n2], 97 -l2: - -inc byte[fra] -cmp byte[fra], 33 -jl l1 -ret - -l3: -mov ah, 9 -mov dx, errmsg -int 21h -ret - -[SECTION .data] -fra db 1 -file1 db 'mov' -n1 db 'a' -n2 db 'a' -file1t db '.frm', 0,'$' -errmsg db 'error$' - -[SECTION .bss] -fbuf resb 33000 -hand resw 1 - - - - - - diff --git a/Graphics/Presentations/Animation of athoms/playmov.com b/Graphics/Presentations/Animation of athoms/playmov.com deleted file mode 100644 index 9dff92f..0000000 Binary files a/Graphics/Presentations/Animation of athoms/playmov.com and /dev/null differ diff --git a/Graphics/Presentations/Animation of athoms/precompute video frames.bas b/Graphics/Presentations/Animation of athoms/precompute video frames.bas deleted file mode 100644 index 51b02e9..0000000 --- a/Graphics/Presentations/Animation of athoms/precompute video frames.bas +++ /dev/null @@ -1,61 +0,0 @@ -' Program generates fractal animation that looks like atoms. -' While it uses a simple formula to calculate the color of each pixel, -' visual effect is quite impressive. Formula was accidentally discovered. -' Each frame is saved into binary file to be played back later. -' -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu - -' Changelog: -' 2002, Initial version -' 2024.10, Improved program readability using AI - -SCREEN 13 -DIM SHARED byte AS STRING * 1 - -scale = 100 -frame = 0 -char1 = 97 -char2 = 97 - -1 -frame = frame + 1 -transformedX = 320 * scale / 30 -transformedY = 200 * scale / 30 -startX = 160 - (transformedX / 2) -startY = 100 - (transformedY / 2) -CLS -FOR y = 0 TO 199 - FOR x = 0 TO 319 - newX = startX + (transformedX * x / 320) - newY = startY + (transformedY * y / 200) - colorValue = SIN((newX ^ 2 + newY ^ 2) / 10) * 6 + 23 - IF colorValue < 16 THEN colorValue = 16 - IF colorValue > 31 THEN colorValue = 31 - PSET (x, y), colorValue - NEXT x -NEXT y - -fileName$ = "mov" + CHR$(char2) + CHR$(char1) + ".frm" - -OPEN fileName$ FOR OUTPUT AS #1 - -FOR y = 0 TO 199 - FOR x = 0 TO 319 - colorValue = POINT(x, y) - byte = CHR$(colorValue) - PRINT #1, byte; - NEXT x -NEXT y - -CLOSE #1 - -char1 = char1 + 1 -IF char1 > 122 THEN - char1 = 97 - char2 = char2 + 1 -END IF - -scale = scale / 1.1 -IF scale > 5 THEN GOTO 1 \ No newline at end of file diff --git a/Graphics/Presentations/Artifical Intelligence/data.dat b/Graphics/Presentations/Artifical Intelligence/data.dat deleted file mode 100755 index f0644de..0000000 --- a/Graphics/Presentations/Artifical Intelligence/data.dat +++ /dev/null @@ -1,1129 +0,0 @@ -0main01 410 718 -89.204338 6.623288 10.9639 -88.564339 2.520903 7.963761 -87.60434 6.935034 8.745699 -83.444336 6.093147 6.688511 -99.124336 -6.848641 17.149164 -99.124336 -10.478266 13.084459 -96.084335 -10.772884 12.881481 -95.28434 -6.170335 16.921349 -93.204338 -9.171329 10.68298 -92.884338 -5.313886 15.425991 -90.96434 -4.2202 8.793657 -91.124336 -6.171187 6.580594 -88.564339 -2.920966 2.998073 -90.324341 2.486645 12.806118 -87.28434 5.861047 14.088221 -88.244339 2.925144 16.58391 -91.444336 -3.338062 18.611977 -94.644341 -4.286149 19.609739 -99.124336 -5.053528 20.471325 -83.924339 -1.562647 23.223949 -79.764336 4.940365 17.190277 -76.884338 1.670444 22.062607 -71.60434 6.997552 16.348389 -70.004333 6.279848 19.155825 -66.004333 12.468541 14.208982 -64.244339 12.698928 16.018658 -63.764332 16.355104 11.846901 -62.484333 17.263796 13.428761 -60.084343 23.388258 10.088614 -64.564331 17.070242 7.908096 -63.604336 15.180919 2.956967 -59.764343 22.357954 4.773498 -70.804337 10.457606 5.524599 -83.124336 1.235376 -0.133957 -75.124336 4.471036 -0.163931 -75.60434 7.380387 5.576841 -69.844337 7.867706 0.95973 -57.524345 22.780184 -8.577671 -60.884335 14.068394 -8.671026 -68.244339 4.700564 -8.695011 -74.644333 0.739494 -9.251703 -86.96434 -3.899883 -9.58058 -90.164337 -8.499012 -2.148324 -93.684341 -14.457324 4.608192 -92.084335 -11.159997 1.840152 -92.084335 -14.62861 -1.070912 -88.884338 -14.096755 -6.004914 -90.644341 -18.575119 -5.180153 -88.244339 -12.453233 -9.651669 -91.28434 -10.85681 -14.112907 -89.044342 -8.960634 -16.108429 -85.204338 -8.312301 -19.571907 -77.684341 -1.006799 -20.968773 -71.924332 4.017982 -30.280075 -69.524338 4.521569 -17.768227 -90.644341 -12.565423 -19.200211 -94.804337 -15.067966 -15.189461 -92.564339 -13.817552 -12.590141 -96.404335 -16.98727 6.514645 -99.124336 -17.37096 6.945438 -99.124336 -25.125237 0.039037 -96.564339 -21.998348 1.932645 -93.844337 -17.3367 2.10308 -93.524338 -21.144463 -0.694079 -93.364334 -23.25647 -4.060776 -96.404335 -25.355621 -1.770636 -90.324341 -14.78534 -10.302568 -90.164337 -16.253292 -9.054724 -91.924339 -18.605095 -8.415813 -92.724335 -19.80584 -9.069284 -94.004333 -19.46925 -10.314562 -95.764336 -24.643055 -6.840809 -96.404335 -17.553375 -13.599895 -95.28434 -17.414631 -12.287815 -96.564339 -15.793377 -15.776131 -94.324341 -15.607529 -13.64957 -99.124336 -27.192703 -3.644545 -96.244339 -26.175243 -3.986268 -99.124336 -25.076416 -8.355864 -98.96434 -16.427147 -15.865196 -98.96434 -14.647448 -19.331245 -96.884338 -14.489006 -19.308975 -94.644341 -14.375095 -18.969826 -98.96434 -16.467396 -23.626328 -96.564339 -16.445129 -23.784775 -93.044334 -15.675183 -23.514999 -89.364334 -13.504088 -24.017731 -84.244339 -9.7734 -25.270714 -78.96434 -3.601835 -27.796379 -77.204338 -2.114184 -30.33403 -80.404343 -4.203916 -33.859169 -81.044342 -3.087108 -30.309189 -84.564339 -9.202147 -32.784325 -98.804337 -12.136337 -39.498032 -96.084335 -16.21817 -33.44722 -98.96434 -16.21817 -33.44722 -93.684341 -11.975326 -38.344391 -93.364334 -15.720574 -33.538864 -88.244339 -12.868604 -33.138046 -88.724335 -10.955297 -37.554741 -84.884338 -9.006877 -36.473053 -80.724335 -3.835641 -41.078178 -86.644341 -7.999694 -41.34024 -89.364334 -9.606388 -41.40448 -93.844337 -11.14371 -40.812668 -98.804337 -13.260849 -46.442108 -92.884338 -12.401834 -46.806099 -89.044342 -10.522787 -46.38044 -86.484337 -8.871554 -46.633095 -81.044342 -3.509334 -46.848915 -74.804337 3.890378 -46.616821 -74.164337 3.972595 -40.30394 -61.204334 14.094946 -16.907494 -57.204346 23.465345 -15.752136 -57.684349 23.625502 -24.939255 -62.964336 14.750134 -27.317619 -60.564346 23.174154 -34.373886 -66.164337 15.833541 -38.475418 -62.004349 22.916365 -38.287857 -67.924332 16.337994 -45.51371 -64.564331 22.220076 -45.979614 -69.524338 17.003458 -51.398361 -73.364334 17.896734 -56.604721 -71.444336 21.607725 -56.567879 -79.28434 20.938837 -62.155346 -78.004333 5.60756 -57.685555 -83.764336 5.961273 -61.352001 -67.444336 21.459557 -52.064682 -69.524338 10.627194 -39.368706 -75.60434 4.172151 -52.070686 -80.724335 -3.997507 -52.572563 -98.804337 -13.798698 -54.111595 -93.524338 -13.120393 -54.339417 -93.524338 -9.692029 -59.189476 -98.804337 -10.189623 -59.097847 -98.644341 -2.369394 -63.007519 -93.364342 -2.753085 -62.576725 -88.244339 -3.111937 -61.173008 -89.204338 -9.303204 -57.357536 -89.044342 -11.241344 -53.913757 -86.324341 -9.362298 -53.488098 -83.60434 -3.579558 -57.845711 -98.644341 5.772858 -64.609924 -93.044342 6.000672 -63.931637 -98.644341 20.203152 -67.267487 -92.244339 18.599026 -66.200356 -86.484337 20.230555 -65.163185 -88.084335 6.025507 -62.958706 -61.524334 18.511641 14.896713 -62.644337 12.976414 18.642815 -60.244347 22.641432 20.001144 -63.124332 16.675413 23.363556 -68.884338 5.789958 22.641567 -69.684341 8.040704 27.320347 -61.684349 22.295424 27.061703 -63.444332 19.198507 28.403755 -63.124344 21.832941 32.651737 -70.324341 12.992682 35.771774 -70.484337 10.855845 31.432152 -76.244339 1.361266 25.412174 -76.404343 2.683621 29.798904 -76.884338 4.659446 32.984894 -77.044342 7.090899 37.527493 -76.724335 9.363912 42.047829 -70.324341 14.768098 40.383751 -65.84433 20.647617 38.786476 -71.284332 19.014368 46.958702 -77.364334 12.751162 48.986771 -82.804337 5.474781 43.278542 -75.124336 18.210167 51.531281 -79.284332 18.106533 55.717598 -82.164337 20.173992 59.401184 -85.204338 19.859678 60.488014 -84.084335 14.692729 57.015114 -83.444336 25.293842 62.059601 -87.124336 25.001791 62.987984 -91.28434 24.484493 64.369446 -90.644341 18.461102 62.391899 -95.60434 24.100807 64.800232 -94.644341 17.715988 63.095039 -99.28434 24.259251 64.822495 -99.444336 17.354568 63.367386 -99.444336 11.373137 59.941597 -93.844337 11.893003 59.691513 -89.364342 12.615841 59.14682 -82.96434 8.862031 50.217484 -83.444336 3.427015 38.305149 -82.96434 0.928757 34.237877 -83.28434 -0.480099 31.616287 -82.644333 -1.304856 27.13792 -89.364334 -3.439124 23.929665 -89.364334 -3.428847 28.455135 -93.844337 -3.981255 24.338188 -99.124336 -4.251036 25.108135 -93.364342 -3.812536 28.885929 -99.28434 -4.129421 28.841393 -89.204338 -2.198133 32.344265 -93.204338 -2.492751 32.141289 -99.28434 -2.515018 32.299732 -93.364342 -0.811544 35.124294 -99.28434 -0.992255 35.260475 -93.044342 0.758325 38.899521 -99.28434 0.555346 39.194141 -92.884338 2.286225 44.123001 -99.28434 2.083248 44.417618 -93.364342 7.924221 55.740715 -99.28434 5.020005 52.26268 -93.364342 4.950633 51.606644 -88.724335 6.148803 51.128746 -89.044342 3.009068 43.5783 -89.204338 1.572807 38.852417 -89.204338 -0.630835 34.988125 -66.96434 11.490479 11.971083 -68.404343 10.373672 8.421106 -72.564339 6.58132 12.412153 -74.484337 6.368066 8.181299 -80.564339 4.863286 13.140133 -81.204338 5.03629 9.609854 -84.404335 5.422548 10.310429 -110.644341 6.957304 8.587257 -109.684341 2.543172 7.805317 -109.044342 6.645557 10.805456 -114.644341 6.273862 6.552335 -103.124336 -6.170334 16.921349 -102.324341 -10.772884 12.881481 -105.524338 -5.291618 15.267548 -105.204338 -9.149059 10.524538 -107.28434 -4.19793 8.635214 -107.124336 -6.148917 6.422151 -109.684341 -2.898697 2.83963 -107.924339 2.508914 12.647675 -110.96434 5.883318 13.929779 -110.004341 2.947415 16.425468 -106.96434 -3.315792 18.453535 -103.764336 -4.286148 19.609739 -114.484337 -1.381933 23.087776 -118.484337 5.143347 16.895658 -121.524338 1.873427 21.76799 -128.244339 6.505099 18.702765 -126.644333 7.200536 16.053772 -134.004333 12.924178 15.565598 -132.244339 12.693795 13.755922 -135.60434 17.48905 12.975698 -134.324341 16.580359 11.393839 -138.004333 23.613512 9.635551 -133.524338 17.295492 7.455036 -138.164337 22.583204 4.320436 -134.484329 15.406175 2.503908 -127.284332 10.682858 5.071537 -114.96434 1.41609 -0.270133 -122.96434 4.674019 -0.45855 -122.484337 7.583371 5.282223 -128.244339 8.092959 0.50667 -140.244339 23.027704 -9.189175 -137.044342 14.293647 -9.124086 -129.684341 4.925817 -9.148069 -123.284332 0.942477 -9.546322 -111.124336 -3.877613 -9.739023 -107.924339 -8.476742 -2.306769 -106.164337 -11.137728 1.681711 -104.564339 -14.457322 4.608192 -106.164337 -14.606341 -1.229359 -109.204338 -14.074485 -6.163357 -107.60434 -18.552853 -5.338597 -109.844337 -12.430963 -9.81011 -106.804337 -10.834541 -14.271347 -108.884338 -8.938365 -16.266869 -112.724335 -8.290032 -19.730347 -120.084335 -0.803817 -21.263397 -128.244339 4.746822 -18.221283 -125.684341 4.220966 -30.574692 -107.28434 -12.543151 -19.358658 -103.28434 -15.067966 -15.189461 -105.524338 -13.795281 -12.748585 -102.004341 -16.98727 6.514645 -101.684334 -21.998348 1.932645 -104.404335 -17.3367 2.10308 -104.724335 -21.122196 -0.852522 -104.884338 -23.2342 -4.21922 -101.844337 -25.355621 -1.770636 -107.764336 -14.763068 -10.461012 -107.924339 -16.231022 -9.213167 -106.164337 -18.582829 -8.574255 -105.364334 -19.783569 -9.227726 -102.484337 -24.643055 -6.840809 -104.084335 -19.46925 -10.314562 -102.804337 -17.414631 -12.287815 -101.684341 -17.553375 -13.599895 -101.524338 -15.793377 -15.776131 -103.764336 -15.607529 -13.64957 -102.004333 -26.175243 -3.986268 -101.044334 -14.489006 -19.308975 -103.28434 -14.375095 -18.969826 -101.364334 -16.445129 -23.784775 -104.884338 -15.652915 -23.673439 -108.564339 -13.481818 -24.17617 -113.684341 -9.592689 -25.406883 -118.804337 -3.398854 -28.090996 -120.564339 -1.911202 -30.628647 -117.364334 -4.000934 -34.153786 -116.724335 -2.884128 -30.603813 -113.204338 -9.021438 -32.920502 -101.684341 -16.21817 -33.44722 -104.084335 -11.975322 -38.344391 -104.404335 -15.720572 -33.538864 -109.524338 -12.846332 -33.296486 -109.044342 -10.933026 -37.713188 -112.884338 -8.984607 -36.6315 -116.884338 -3.63266 -41.372787 -110.96434 -7.977424 -41.498688 -108.244339 -9.584119 -41.562912 -103.764336 -11.143711 -40.812668 -104.724335 -12.379563 -46.964554 -108.564339 -10.500516 -46.538895 -111.124336 -8.849284 -46.791542 -116.404343 -3.306351 -47.143539 -122.644333 4.09336 -46.911438 -123.444336 4.175578 -40.598557 -136.564331 14.320199 -17.36055 -140.564331 23.712866 -16.36364 -139.924332 23.873026 -25.550758 -134.644333 14.975389 -27.770676 -136.884338 23.399412 -34.82695 -135.444336 23.141619 -38.740913 -131.284332 16.058798 -38.928482 -132.724335 22.44533 -46.432678 -129.524338 16.563246 -45.966774 -125.684341 21.810703 -56.862511 -123.924332 18.099718 -56.899338 -127.764336 17.228706 -51.851425 -117.844337 21.141823 -62.449963 -119.284332 5.810542 -57.980179 -113.524338 6.141986 -61.488178 -129.844345 21.684809 -52.517738 -127.924332 10.852447 -39.821754 -121.844337 4.375133 -52.365303 -116.724335 -3.794525 -52.86718 -103.924339 -13.120392 -54.339417 -103.924339 -9.692028 -59.189476 -103.924339 -2.753083 -62.576725 -109.044342 -3.089667 -61.331448 -108.244339 -9.280932 -57.515976 -108.404335 -11.219075 -54.072197 -111.124336 -9.340028 -53.646553 -113.844337 -3.398845 -57.98188 -104.244339 6.000674 -63.931637 -104.884338 18.621292 -66.358788 -109.204338 6.047778 -63.117146 -110.644341 20.252831 -65.32164 -135.60434 13.201668 18.189754 -136.724335 18.736891 14.443651 -138.004333 22.866682 19.548082 -135.124329 16.900667 22.910496 -128.724335 8.265954 26.867283 -129.524338 6.015211 22.188507 -134.96434 19.423761 27.950691 -136.564331 22.520678 26.608643 -135.284332 22.058195 32.198677 -127.924332 11.081098 30.979092 -128.244339 13.217937 35.318718 -122.164337 1.564248 25.117558 -122.164337 2.886603 29.504288 -121.684341 4.862428 32.690273 -121.524338 7.293882 37.232876 -128.244339 14.99335 39.930691 -121.844337 9.566894 41.753208 -132.564331 20.872869 38.333416 -127.284332 19.21735 46.664085 -121.364334 12.954141 48.692154 -115.924332 5.655496 43.142365 -123.60434 18.413145 51.236656 -119.444336 18.309515 55.422981 -114.644341 14.873444 56.878937 -113.524338 20.040392 60.351837 -116.564339 20.376976 59.10656 -111.60434 25.024063 62.829544 -115.28434 25.474562 61.923424 -108.244339 18.483368 62.233459 -107.444336 24.506763 64.210999 -104.244339 17.715988 63.095039 -103.124336 24.100807 64.800232 -105.044342 11.893 59.691513 -109.524338 12.638112 58.988373 -115.764336 9.042745 50.08131 -115.124336 3.607729 38.168968 -115.60434 1.109471 34.1017 -115.284332 -0.299386 31.48011 -115.764336 -1.124143 27.001743 -109.044342 -3.416854 23.771221 -109.204338 -3.406578 28.296692 -104.564339 -3.981254 24.338188 -105.204338 -3.790267 28.727486 -109.364334 -2.175864 32.185822 -105.364342 -2.470482 31.982845 -105.204338 -0.789276 34.965858 -105.524338 0.780594 38.741077 -105.844337 2.308495 43.964554 -105.364342 7.946491 55.582275 -105.364342 4.972902 51.448196 -110.004341 6.171074 50.970291 -109.684341 3.031338 43.419853 -109.364334 1.595075 38.693977 -109.364334 -0.608564 34.829678 -129.684341 10.598924 7.968044 -131.284332 11.71573 11.518023 -125.684341 6.784304 12.117535 -123.764336 6.571049 7.886681 -117.684341 5.066267 12.845516 -117.044342 5.239271 9.315237 -113.844337 5.60326 10.174253 -1 3 2 0 1 -1 3 3 2 1 -1 3 6 4 5 -1 3 4 6 7 -1 3 8 7 6 -1 3 7 8 9 -1 3 8 10 9 -1 3 11 10 8 -1 3 12 10 11 -1 3 1 10 12 -1 3 13 10 1 -1 3 9 10 13 -1 3 0 13 1 -1 3 14 13 0 -1 3 15 13 14 -1 3 9 15 16 -1 3 15 9 13 -1 3 17 9 16 -1 3 9 17 7 -1 3 18 7 17 -1 3 7 18 4 -1 3 19 15 14 -1 3 20 19 14 -1 3 19 20 21 -1 3 22 21 20 -1 3 21 22 23 -1 3 24 23 22 -1 3 23 24 25 -1 3 26 25 24 -1 3 25 26 27 -1 3 28 27 26 -1 3 28 26 29 -1 3 31 29 30 -1 3 32 30 29 -1 3 33 3 1 -1 3 12 33 1 -1 3 34 3 33 -1 3 3 34 35 -1 3 36 35 34 -1 3 35 36 32 -1 3 30 32 36 -1 3 31 30 37 -1 3 37 30 38 -1 3 38 30 36 -1 3 39 38 36 -1 3 34 39 36 -1 3 40 34 33 -1 3 40 33 41 -1 3 34 40 39 -1 3 41 33 12 -1 3 42 41 12 -1 3 44 8 43 -1 3 8 44 11 -1 3 42 11 44 -1 3 11 42 12 -1 3 42 44 45 -1 3 46 42 45 -1 3 47 46 45 -1 3 42 46 41 -1 3 48 41 46 -1 3 41 48 49 -1 3 50 41 49 -1 3 41 50 51 -1 3 52 41 51 -1 3 54 52 53 -1 3 52 54 40 -1 3 41 52 40 -1 3 50 49 55 -1 3 51 50 55 -1 3 56 55 49 -1 3 57 56 49 -1 3 8 58 43 -1 3 58 8 6 -1 3 58 5 59 -1 3 5 58 6 -1 3 61 59 60 -1 3 59 61 58 -1 3 62 58 61 -1 3 58 62 43 -1 3 44 43 62 -1 3 45 44 62 -1 3 63 45 62 -1 3 47 63 64 -1 3 63 47 45 -1 3 61 63 62 -1 3 63 61 65 -1 3 48 57 49 -1 3 57 48 66 -1 3 67 66 48 -1 3 46 67 48 -1 3 47 68 67 -1 3 46 47 67 -1 3 69 47 64 -1 3 47 69 68 -1 3 64 70 69 -1 3 70 64 71 -1 3 73 71 72 -1 3 71 73 70 -1 3 74 73 72 -1 3 75 74 56 -1 3 75 56 57 -1 3 74 75 73 -1 3 76 61 60 -1 3 61 76 65 -1 3 64 65 77 -1 3 65 64 63 -1 3 77 65 76 -1 3 78 77 76 -1 3 77 78 71 -1 3 77 71 64 -1 3 79 71 78 -1 3 71 79 72 -1 3 74 72 79 -1 3 80 74 79 -1 3 74 80 81 -1 3 56 81 82 -1 3 81 56 74 -1 3 55 56 82 -1 3 84 80 83 -1 3 80 84 81 -1 3 85 81 84 -1 3 81 85 82 -1 3 55 82 85 -1 3 86 55 85 -1 3 55 86 87 -1 3 51 55 87 -1 3 88 51 87 -1 3 51 88 52 -1 3 52 88 89 -1 3 53 52 89 -1 3 90 53 89 -1 3 89 91 90 -1 3 88 91 89 -1 3 90 91 92 -1 3 95 93 94 -1 3 96 94 93 -1 3 94 96 97 -1 3 98 97 96 -1 3 99 98 96 -1 3 98 99 100 -1 3 92 98 100 -1 3 90 92 100 -1 3 101 90 100 -1 3 102 101 100 -1 3 99 102 100 -1 3 102 99 103 -1 3 96 103 99 -1 3 103 96 104 -1 3 93 104 96 -1 3 106 93 105 -1 3 93 106 104 -1 3 107 104 106 -1 3 104 107 103 -1 3 108 103 107 -1 3 103 108 102 -1 3 101 102 109 -1 3 109 102 108 -1 3 101 109 110 -1 3 111 101 110 -1 3 101 111 53 -1 3 90 101 53 -1 3 39 40 54 -1 3 112 39 54 -1 3 39 112 38 -1 3 113 38 112 -1 3 38 113 37 -1 3 114 113 112 -1 3 115 114 112 -1 3 114 115 116 -1 3 118 115 117 -1 3 115 118 116 -1 3 120 117 119 -1 3 117 120 118 -1 3 123 121 122 -1 3 124 123 122 -1 3 125 124 122 -1 3 124 125 126 -1 3 127 119 121 -1 3 119 127 120 -1 3 128 119 117 -1 3 115 128 117 -1 3 128 115 53 -1 3 111 128 53 -1 3 128 111 110 -1 3 119 128 110 -1 3 121 119 110 -1 3 129 121 110 -1 3 109 129 110 -1 3 129 109 130 -1 3 115 54 53 -1 3 54 115 112 -1 3 127 121 123 -1 3 132 105 131 -1 3 105 132 106 -1 3 132 131 133 -1 3 133 131 134 -1 3 135 133 134 -1 3 133 135 136 -1 3 137 133 136 -1 3 138 133 137 -1 3 133 138 132 -1 3 139 132 138 -1 3 140 139 138 -1 3 141 140 138 -1 3 140 141 130 -1 3 109 140 130 -1 3 140 109 108 -1 3 139 140 108 -1 3 107 139 108 -1 3 142 136 135 -1 3 136 142 143 -1 3 144 143 142 -1 3 143 144 145 -1 3 147 145 146 -1 3 145 147 143 -1 3 124 147 146 -1 3 147 124 126 -1 3 121 125 122 -1 3 125 121 129 -1 3 141 129 130 -1 3 129 141 125 -1 3 126 137 147 -1 3 141 126 125 -1 3 126 141 137 -1 3 138 137 141 -1 3 147 136 143 -1 3 136 147 137 -1 3 132 107 106 -1 3 107 132 139 -1 3 28 29 31 -1 3 148 25 27 -1 3 25 148 149 -1 3 28 148 27 -1 3 148 28 150 -1 3 151 148 150 -1 3 148 151 149 -1 3 153 152 149 -1 3 151 153 149 -1 3 154 151 150 -1 3 151 154 155 -1 3 156 155 154 -1 3 158 156 157 -1 3 156 158 155 -1 3 151 155 158 -1 3 153 151 158 -1 3 149 152 25 -1 3 25 152 23 -1 3 152 21 23 -1 3 21 152 159 -1 3 153 159 152 -1 3 159 153 160 -1 3 158 160 153 -1 3 160 158 161 -1 3 162 161 158 -1 3 157 162 158 -1 3 157 163 162 -1 3 163 157 164 -1 3 156 164 157 -1 3 164 156 165 -1 3 164 165 166 -1 3 167 164 166 -1 3 164 167 163 -1 3 168 163 167 -1 3 166 169 167 -1 3 170 167 169 -1 3 172 170 171 -1 3 170 172 173 -1 3 174 172 171 -1 3 172 174 175 -1 3 172 176 177 -1 3 176 172 175 -1 3 179 176 178 -1 3 176 179 177 -1 3 181 178 180 -1 3 178 181 179 -1 3 183 181 182 -1 3 181 183 179 -1 3 184 179 183 -1 3 179 184 177 -1 3 173 177 184 -1 3 177 173 172 -1 3 167 173 185 -1 3 173 167 170 -1 3 167 185 168 -1 3 163 168 162 -1 3 186 162 168 -1 3 161 186 187 -1 3 188 161 187 -1 3 161 188 160 -1 3 189 160 188 -1 3 160 189 159 -1 3 159 189 19 -1 3 21 159 19 -1 3 190 19 189 -1 3 191 190 189 -1 3 19 190 16 -1 3 15 19 16 -1 3 192 16 190 -1 3 16 192 17 -1 3 193 17 192 -1 3 17 193 18 -1 3 194 193 192 -1 3 193 194 195 -1 3 190 194 192 -1 3 194 190 191 -1 3 188 191 189 -1 3 191 188 196 -1 3 194 196 197 -1 3 196 194 191 -1 3 198 194 197 -1 3 194 198 195 -1 3 199 198 197 -1 3 198 199 200 -1 3 201 200 199 -1 3 200 201 202 -1 3 203 202 201 -1 3 202 203 204 -1 3 183 182 205 -1 3 205 182 206 -1 3 207 205 206 -1 3 205 207 208 -1 3 173 184 185 -1 3 185 184 208 -1 3 168 185 208 -1 3 209 168 208 -1 3 168 209 210 -1 3 186 168 210 -1 3 211 186 210 -1 3 186 211 187 -1 3 196 187 211 -1 3 187 196 188 -1 3 199 196 211 -1 3 196 199 197 -1 3 210 199 211 -1 3 199 210 201 -1 3 209 201 210 -1 3 201 209 203 -1 3 207 203 209 -1 3 208 207 209 -1 3 204 207 206 -1 3 207 204 203 -1 3 162 186 161 -1 3 183 205 184 -1 3 205 208 184 -1 3 0 2 14 -1 3 26 32 29 -1 3 213 26 212 -1 3 26 24 212 -1 3 212 22 214 -1 3 22 212 24 -1 3 214 213 212 -1 3 213 214 215 -1 3 22 216 214 -1 3 216 22 20 -1 3 214 217 215 -1 3 217 214 216 -1 3 218 217 216 -1 3 216 14 218 -1 3 14 216 20 -1 3 221 219 220 -1 3 219 222 220 -1 3 5 223 224 -1 3 223 5 4 -1 3 224 225 226 -1 3 225 224 223 -1 3 227 226 225 -1 3 227 228 226 -1 3 227 229 228 -1 3 227 220 229 -1 3 227 230 220 -1 3 227 225 230 -1 3 230 221 220 -1 3 230 231 221 -1 3 230 232 231 -1 3 233 230 225 -1 3 230 233 232 -1 3 233 223 234 -1 3 223 233 225 -1 3 234 4 18 -1 3 4 234 223 -1 3 232 235 231 -1 3 235 236 231 -1 3 236 235 237 -1 3 236 238 239 -1 3 238 236 237 -1 3 239 240 241 -1 3 240 239 238 -1 3 241 242 243 -1 3 242 241 240 -1 3 242 244 243 -1 3 243 244 245 -1 3 245 246 247 -1 3 247 248 245 -1 3 222 249 220 -1 3 249 229 220 -1 3 222 250 249 -1 3 250 222 251 -1 3 251 252 250 -1 3 252 251 248 -1 3 248 247 252 -1 3 247 246 253 -1 3 247 253 254 -1 3 247 254 252 -1 3 254 255 252 -1 3 255 250 252 -1 3 250 256 249 -1 3 249 256 257 -1 3 256 250 255 -1 3 249 257 229 -1 3 257 258 229 -1 3 260 228 259 -1 3 228 260 226 -1 3 259 229 258 -1 3 229 259 228 -1 3 259 258 261 -1 3 258 262 261 -1 3 262 263 261 -1 3 262 258 257 -1 3 257 264 262 -1 3 264 257 265 -1 3 257 266 265 -1 3 266 257 267 -1 3 257 268 267 -1 3 268 269 270 -1 3 269 268 256 -1 3 268 257 256 -1 3 265 266 271 -1 3 266 267 271 -1 3 271 272 265 -1 3 272 273 265 -1 3 260 224 226 -1 3 224 260 274 -1 3 59 224 274 -1 3 224 59 5 -1 3 60 274 275 -1 3 274 60 59 -1 3 275 260 276 -1 3 260 275 274 -1 3 260 259 276 -1 3 259 261 276 -1 3 261 277 276 -1 3 278 261 263 -1 3 261 278 277 -1 3 276 279 275 -1 3 279 276 277 -1 3 265 280 264 -1 3 280 265 273 -1 3 280 281 264 -1 3 281 262 264 -1 3 282 263 281 -1 3 263 262 281 -1 3 278 282 283 -1 3 282 278 263 -1 3 283 284 278 -1 3 284 283 285 -1 3 287 285 286 -1 3 285 287 284 -1 3 286 288 287 -1 3 288 289 272 -1 3 272 289 273 -1 3 289 288 286 -1 3 60 279 76 -1 3 279 60 275 -1 3 290 277 278 -1 3 277 290 279 -1 3 279 290 76 -1 3 76 284 78 -1 3 284 76 290 -1 3 284 290 278 -1 3 284 79 78 -1 3 79 284 287 -1 3 287 288 79 -1 3 79 291 80 -1 3 291 79 288 -1 3 292 288 272 -1 3 288 292 291 -1 3 272 271 292 -1 3 83 291 293 -1 3 291 83 80 -1 3 293 292 294 -1 3 292 293 291 -1 3 292 271 294 -1 3 271 295 294 -1 3 295 271 296 -1 3 271 267 296 -1 3 267 297 296 -1 3 297 267 268 -1 3 297 268 298 -1 3 268 270 298 -1 3 270 299 298 -1 3 300 298 299 -1 3 300 297 298 -1 3 300 299 301 -1 3 93 95 302 -1 3 302 303 93 -1 3 303 302 304 -1 3 304 305 303 -1 3 305 306 303 -1 3 306 305 307 -1 3 305 301 307 -1 3 301 299 307 -1 3 299 308 307 -1 3 308 309 307 -1 3 307 310 306 -1 3 310 307 309 -1 3 306 311 303 -1 3 311 306 310 -1 3 311 93 303 -1 3 105 311 312 -1 3 311 105 93 -1 3 312 310 313 -1 3 310 312 311 -1 3 313 309 314 -1 3 309 313 310 -1 3 309 308 315 -1 3 309 315 314 -1 3 315 308 316 -1 3 308 317 316 -1 3 317 308 270 -1 3 308 299 270 -1 3 256 255 269 -1 3 255 318 269 -1 3 318 255 254 -1 3 254 319 318 -1 3 319 254 253 -1 3 319 320 318 -1 3 320 321 318 -1 3 321 320 322 -1 3 324 322 323 -1 3 322 324 321 -1 3 326 323 325 -1 3 323 326 324 -1 3 329 327 328 -1 3 327 330 328 -1 3 330 331 328 -1 3 331 330 332 -1 3 326 333 329 -1 3 333 326 325 -1 3 326 334 324 -1 3 334 321 324 -1 3 321 334 270 -1 3 334 317 270 -1 3 317 334 316 -1 3 334 326 316 -1 3 326 329 316 -1 3 329 335 316 -1 3 316 336 315 -1 3 336 316 335 -1 3 269 321 270 -1 3 321 269 318 -1 3 329 333 327 -1 3 131 312 337 -1 3 312 131 105 -1 3 131 337 338 -1 3 131 338 134 -1 3 134 339 135 -1 3 339 134 338 -1 3 338 340 339 -1 3 338 341 340 -1 3 341 338 337 -1 3 337 342 341 -1 3 342 343 341 -1 3 343 344 341 -1 3 344 343 336 -1 3 343 315 336 -1 3 315 343 314 -1 3 343 342 314 -1 3 342 313 314 -1 3 135 345 142 -1 3 345 135 339 -1 3 142 346 144 -1 3 346 142 345 -1 3 348 345 347 -1 3 345 348 346 -1 3 348 332 330 -1 3 332 348 347 -1 3 328 335 329 -1 3 335 328 331 -1 3 336 331 344 -1 3 331 336 335 -1 3 340 332 347 -1 3 331 340 344 -1 3 340 331 332 -1 3 340 341 344 -1 3 345 340 347 -1 3 340 345 339 -1 3 312 342 337 -1 3 342 312 313 -1 3 245 244 246 -1 3 242 349 350 -1 3 349 242 240 -1 3 350 244 242 -1 3 244 350 351 -1 3 350 352 351 -1 3 352 350 349 -1 3 354 353 349 -1 3 353 352 349 -1 3 351 355 356 -1 3 355 351 352 -1 3 355 357 356 -1 3 359 355 358 -1 3 355 359 357 -1 3 355 352 358 -1 3 352 353 358 -1 3 354 349 240 -1 3 354 240 238 -1 3 238 360 354 -1 3 360 238 237 -1 3 354 361 353 -1 3 361 354 360 -1 3 353 362 358 -1 3 362 353 361 -1 3 362 363 358 -1 3 363 359 358 -1 3 363 364 359 -1 3 364 363 365 -1 3 359 366 357 -1 3 366 359 364 -1 3 366 364 367 -1 3 367 365 368 -1 3 365 367 364 -1 3 365 369 368 -1 3 370 367 368 -1 3 368 371 370 -1 3 374 372 373 -1 3 372 374 371 -1 3 374 375 376 -1 3 375 374 373 -1 3 377 375 373 -1 3 375 377 378 -1 3 380 377 379 -1 3 377 380 378 -1 3 180 379 181 -1 3 379 180 380 -1 3 182 379 381 -1 3 379 182 181 -1 3 381 377 382 -1 3 377 381 379 -1 3 382 373 372 -1 3 373 382 377 -1 3 383 371 368 -1 3 371 383 372 -1 3 383 368 369 -1 3 369 365 363 -1 3 363 384 369 -1 3 384 362 385 -1 3 385 361 386 -1 3 361 385 362 -1 3 386 360 387 -1 3 360 386 361 -1 3 387 360 235 -1 3 360 237 235 -1 3 235 388 387 -1 3 388 389 387 -1 3 388 235 233 -1 3 235 232 233 -1 3 233 390 388 -1 3 390 233 234 -1 3 234 193 390 -1 3 193 234 18 -1 3 390 195 391 -1 3 195 390 193 -1 3 390 389 388 -1 3 389 390 391 -1 3 387 392 386 -1 3 392 387 389 -1 3 393 389 391 -1 3 389 393 392 -1 3 393 195 198 -1 3 195 393 391 -1 3 393 200 394 -1 3 200 393 198 -1 3 394 202 395 -1 3 202 394 200 -1 3 395 204 396 -1 3 204 395 202 -1 3 182 381 397 -1 3 182 397 206 -1 3 397 398 206 -1 3 398 397 399 -1 3 382 372 383 -1 3 382 383 399 -1 3 383 369 399 -1 3 369 400 399 -1 3 400 369 401 -1 3 369 384 401 -1 3 401 385 402 -1 3 385 401 384 -1 3 402 386 392 -1 3 386 402 385 -1 3 402 393 394 -1 3 393 402 392 -1 3 394 401 402 -1 3 401 394 395 -1 3 401 396 400 -1 3 396 401 395 -1 3 396 398 400 -1 3 398 399 400 -1 3 206 396 204 -1 3 396 206 398 -1 3 384 363 362 -1 3 397 381 382 -1 3 399 397 382 -1 3 219 221 231 -1 3 248 243 245 -1 3 243 403 404 -1 3 241 243 404 -1 3 405 241 404 -1 3 241 405 239 -1 3 404 406 405 -1 3 406 404 403 -1 3 405 236 239 -1 3 236 405 407 -1 3 406 407 405 -1 3 407 406 408 -1 3 408 409 407 -1 3 231 407 409 -1 3 407 231 236 diff --git a/Graphics/Presentations/Artifical Intelligence/data2.dat b/Graphics/Presentations/Artifical Intelligence/data2.dat deleted file mode 100755 index a6a3427..0000000 --- a/Graphics/Presentations/Artifical Intelligence/data2.dat +++ /dev/null @@ -1,50 +0,0 @@ -0 -10 -5 -0 -10 5 --20 -10 -5 --20 -10 5 --20 0 -5 --20 0 5 -0 10 -5 -0 10 5 -30 10 0 -10 0 -5 -10 0 5 -30 0 0 -40 10 0 -40 20 0 --30 15 -3 --30 15 3 -30 15 -3 -30 15 3 -999 999 999 -0 1 -2 3 -0 2 -1 3 -4 5 -2 4 -3 5 -4 0 -5 1 -6 7 -4 6 -5 7 -6 0 -7 1 -6 8 -7 8 -9 10 -6 9 -7 10 -0 9 -1 10 -9 11 -10 11 -11 12 -12 13 -13 8 -14 15 -16 17 -14 17 -15 16 -999 999 \ No newline at end of file diff --git a/Graphics/Presentations/Artifical Intelligence/tehis.bas b/Graphics/Presentations/Artifical Intelligence/tehis.bas deleted file mode 100644 index 6a54940..0000000 --- a/Graphics/Presentations/Artifical Intelligence/tehis.bas +++ /dev/null @@ -1,1118 +0,0 @@ -DECLARE SUB sc10 () -DECLARE SUB sc9 () -DECLARE SUB sc8 () -DECLARE SUB sc7 () -DECLARE SUB sc6 () -DECLARE SUB inpur () -DECLARE SUB sc5 () -DECLARE SUB box (x1!, y1!, x2!, y2!) -DECLARE SUB pri (x!, y!, s!, c!, a$) -DECLARE SUB getfnt () -DECLARE SUB sc4 () -DECLARE SUB mkback () -DECLARE SUB sc3 () -DECLARE SUB calc (tx1!, ty1!, tz1!, tx2!, ty2!, tz2!, tx3!, ty3!, tz3!, c!) -DECLARE SUB getan (x1!, y1!, x2!, y2!, N!) -DECLARE SUB rot (zx!, zy!, x1!, y1!, N!) -DECLARE SUB fp (x1!, y1!, x2!, y2!, x3!, y3!, c!) -DECLARE SUB sc2 () -DECLARE SUB pal (r!, g!, b!, c!) -DECLARE SUB sc1 () -DECLARE SUB start () - - -' AI presentation -' made by Svjatoslav Agejenko -' in 2002 -' homepage: svjatoslav.eu -' email: svjatoslav@svjatoslav.eu - -DIM SHARED pii -DIM SHARED pi -DIM SHARED angl1, angl2 -DIM SHARED font(0 TO 7, 0 TO 7, 32 TO 150) -start -'GOTO 6 -sc1 -sc2 -sc3 -sc4 -sc5 -sc6 -sc7 -6 -sc8 -sc10 -sc9 - -SYSTEM - -SUB box (x1, y1, x2, y2) - -'FOR a = 0 TO 30 -'IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) -'IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 -'IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) -'NEXT a - -FOR y = y1 TO y2 -s = 10 -IF y - y1 <= 10 THEN -s = (SQR((20 - (y - y1)) * (y - y1))) -END IF - -IF y2 - y <= 10 THEN -s = (SQR((20 - (y2 - y)) * (y2 - y))) -END IF - -FOR x = x1 - s TO x2 + s -c = POINT(x, y) -IF c <= 127 THEN -c = c + 127 -IF c > 245 THEN c = 245 -PSET (x, y), c -END IF -NEXT x -NEXT y - -END SUB - -SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c) -x1 = tx1 -y1 = ty1 -z1 = tz1 - -x2 = tx2 -y2 = ty2 -z2 = tz2 - -x3 = tx3 -y3 = ty3 -z3 = tz3 - - -'LINE (x1, y1)-(x2, y2), 3 -'LINE (x3, y3)-(x2, y2), 3 -'LINE (x1, y1)-(x3, y3), 3 - - -getan x1, y1, x2, y2, n1 -rot x1, y1, x2, y2, -n1 -rot x1, y1, x3, y3, -n1 - -getan y1, z1, y2, z2, n2 -n2 = n2 + pi / 2 -rot y1, z1, y2, z2, -n2 -rot y1, z1, y3, z3, -n2 - -getan x1, z1, x3, z3, n3 -n3 = n3 + pi / 2 -rot x1, z1, x2, z2, -n3 -rot x1, z1, x3, z3, -n3 - -x4 = x1 -y4 = y1 -z4 = z1 + 30 - -rot x1, z1, x4, z4, n3 -rot y1, z1, y4, z4, n2 -rot x1, y1, x4, y4, n1 - -'LINE (tx1, ty1)-(x4, y4), 255 -x1 = tx1 + 20 -y1 = ty1 + 10 -a = SQR((x1 - x4) ^ 2 + (y1 - y4) ^ 2) -c = 49 - a -IF c < 0 THEN c = 0 -END SUB - -SUB fp (x1, y1, x2, y2, x3, y3, c) - - -DIM yb(-100 TO 300) - -mx1 = x1 -my1 = y1 -mx2 = x2 -my2 = y2 -GOSUB mkl -mx1 = x1 -my1 = y1 -mx2 = x3 -my2 = y3 -GOSUB mkl -mx1 = x3 -my1 = y3 -mx2 = x2 -my2 = y2 -GOSUB mkl -GOTO 1 - -mkl: -IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2 -FOR y = my1 TO my2 - 1 -x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1)) -IF yb(y) = 0 THEN -yb(y) = x -ELSE -LINE (x, y)-(yb(y), y), c -END IF -NEXT y -RETURN -1 - - -'LINE (x1, y1)-(x2, y2), 0 -'LINE (x3, y3)-(x2, y2), 0 -'LINE (x1, y1)-(x3, y3), 0 - -END SUB - -SUB getan (x1, y1, x2, y2, N) -IF y1 = y2 THEN -IF x2 > x1 THEN N = pi / 2 ELSE N = pi * 1.5 -GOTO 2 -END IF - -IF y2 > y1 THEN -IF x2 = x1 THEN N = pi: GOTO 2 -IF x2 > x1 THEN -N = (pi * 1) - ATN((x2 - x1) / (y2 - y1)) -ELSE -N = pi + ATN((x1 - x2) / (y2 - y1)) -END IF -ELSE -IF x2 = x1 THEN N = 0: GOTO 2 -IF x2 > x1 THEN -N = ATN((x2 - x1) / (y1 - y2)) -ELSE -N = pi * 2 - ATN((x1 - x2) / (y1 - y2)) -END IF -END IF -2 -END SUB - -SUB getfnt -'DIM SHARED font(0 TO 7, 0 TO 7, 10 TO 200) - -pal 0, 0, 0, 70 -COLOR 70 -FOR a = 32 TO 150 -LOCATE 1, 1 -PRINT CHR$(a) -FOR y = 0 TO 7 -FOR x = 0 TO 7 -font(x, y, a) = POINT(x, y) -NEXT x -NEXT y -NEXT a - -END SUB - -SUB inpur -a$ = INPUT$(1) - - -END SUB - -DEFINT A-Z -SUB mkback -CLS -pal 0, 5, 5, 250 -pal 0, 5, 5, 251 -pal 0, 5, 5, 252 -pal 0, 5, 5, 253 -pal 0, 5, 5, 254 -pal 0, 5, 5, 255 - -FOR a = 0 TO 127 -OUT &H3C8, a -OUT &H3C9, SIN(a / 22) * 30 + 30 -OUT &H3C9, SIN(a / 18) * 5 + 5 -OUT &H3C9, COS(a / 12) * 10 + 10 -NEXT a - -FOR a = 128 TO 245 -OUT &H3C8, a -b = a - 128 -OUT &H3C9, SIN(b / 22) * 4 + 10 -OUT &H3C9, SIN(b / 18) * 4 + 10 -OUT &H3C9, COS(b / 12) * 4 + 10 -NEXT a - -DIM lm -lm = 127 - - -s = 2 ^ 8 -5 -s = s \ 2 -x2 = (319 \ s) - 1 -y2 = (199 \ s) - 1 - -FOR y = 0 TO y2 -FOR x = 0 TO x2 -x1 = x * s -y1 = y * s -c1 = POINT(x1, y1) -c2 = POINT(x1 + s, y1) -c3 = POINT(x1, y1 + s) -c4 = POINT(x1 + s, y1 + s) - -sp = s \ 2 - -cc2 = ((c1 + c2) / 2) + (RND * 6) - 3 -IF cc2 > lm THEN cc2 = lm - -cc3 = ((c1 + c3) / 2) + (RND * 6) - 3 -IF cc3 > lm THEN cc3 = lm - -cc4 = ((c2 + c4) / 2) + (RND * 6) - 3 -IF cc4 > lm THEN cc4 = lm - -cc5 = ((c3 + c4) / 2) + (RND * 6) - 3 -IF cc5 > lm THEN cc5 = lm - -cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3 -IF cc1 > lm THEN cc1 = lm - - - -PSET (x1 + sp, y1 + sp), cc1 -PSET (x1 + sp, y1), cc2 -PSET (x1, y1 + sp), cc3 -PSET (x1 + s, y1 + sp), cc4 -PSET (x1 + sp, y1 + s), cc5 - - -NEXT x -NEXT y -IF s > 2 THEN GOTO 5 - - - -END SUB - -DEFSNG A-Z -SUB pal (r, g, b, c) -IF r < 0 THEN r = 0 -IF g < 0 THEN g = 0 -IF b < 0 THEN b = 0 -IF r > 63 THEN r = 63 -IF g > 63 THEN g = 63 -IF b > 63 THEN b = 63 - -OUT &H3C8, c -OUT &H3C9, r -OUT &H3C9, g -OUT &H3C9, b -END SUB - -SUB pri (x, y, s, c, a$) -IF s = 1 THEN -x2 = x -FOR a = 1 TO LEN(a$) -b = ASC(RIGHT$(LEFT$(a$, a), 1)) -IF b > 150 OR b < 32 THEN GOTO 7 -FOR y1 = 0 TO 7 -FOR x1 = 0 TO 7 -c1 = font(x1, y1, b) -IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c -NEXT x1 -NEXT y1 -7 -x2 = x2 + 8 -NEXT a -END IF -END SUB - -SUB rot (zx, zy, x1, y1, N) -x2 = x1 - zx -y2 = y1 - zy -c1 = SIN(N) -s1 = COS(N) -x1 = x2 * s1 - y2 * c1 + zx -y1 = x2 * c1 + y2 * s1 + zy -END SUB - -SUB sc1 -pal 0, 63, 20, 255 -DIM px(0 TO 1000) -DIM py(0 TO 1000) -DIM pz(0 TO 1000) -DIM px1(0 TO 1000) -DIM py1(0 TO 1000) -DIM lin1!(0 TO 1500) -DIM lin2!(0 TO 1500) -DIM lbx1(1 TO 1500) -DIM lby1(1 TO 1500) -DIM lbx2(1 TO 1500) -DIM lby2(1 TO 1500) - -DIM np, nl -DIM an1, an2, an3 -DIM an1s, an2s, an3s -DIM inco, inpo -DIM tim -DIM nlt -DIM ehi - -tim = 0 -ehi = 1 - - -an1 = 0 -an2 = 0 - -np = -1 -nl = 0 -inco = 0 -inpo = 0 -nlt = 0 - -pal 40, 40, 40, 254 -COLOR 254 -LOCATE 2, 11 -PRINT "�ks hetk" - -OPEN "data.dat" FOR INPUT AS #1 -INPUT #1, a -INPUT #1, inco -INPUT #1, inpo - -FOR a = 1 TO inco -INPUT #1, x, y, z -np = np + 1 -px(np) = x - 100 -py(np) = y -pz(np) = z -NEXT a - -INPUT #1, b, b, l1, l2, l3 - -FOR a = 1 TO inpo - 1 -INPUT #1, b, b, l1!, l2!, l3! -nlin1! = l1! -nlin2! = l2! -GOSUB addlin -nlin1! = l2! -nlin2! = l3! -GOSUB addlin -nlin1! = l1! -nlin2! = l3! -GOSUB addlin -LOCATE 4, 10 -PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis" -NEXT a -CLOSE 1 -CLS -3 -tim = tim + 1 -sj$ = INKEY$ -IF sj$ = "q" THEN END - -a = COS(tim / 25) -an1 = COS(tim / 29) * a -an2 = (pii / 2) + SIN(tim / 42) * a - -s1 = SIN(an1) -c1 = COS(an1) -s2 = SIN(an2) -c2 = COS(an2) - -IF ehi >= 1 THEN -nlt = nlt + ehi -ehi = ehi + .03 -IF nlt > nl THEN nlt = nl: ehi = 0 -END IF - -FOR a = 0 TO np -x = px(a) -y = py(a) -z = pz(a) - -z2 = z * s1 + y * c1 -y1 = y * s1 - z * c1 - -z1 = z2 * s2 + x * c2 -x1 = x * s2 - z2 * c2 - - -z1 = z1 + 100 - -x1 = x1 / z1 * 74 * 2 -y1 = y1 / z1 * 65 * 2 - -px1(a) = x1 + 160 -py1(a) = y1 + 80 -NEXT a - -FOR a = 1 TO nlt -l1 = lin1!(a) -l2 = lin2!(a) -x1 = px1(l1) -y1 = py1(l1) -x2 = px1(l2) -y2 = py1(l2) -LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 -LINE (x1, y1)-(x2, y2), 255 -lbx1(a) = x1 -lby1(a) = y1 -lbx2(a) = x2 -lby2(a) = y2 -NEXT a -SOUND 0, .5 -IF tim < 280 THEN GOTO 3 -GOTO 4 - -addlin: -FOR b = 1 TO nl -IF lin1!(b) = nlin1! THEN IF lin2!(b) = nlin2! THEN RETURN -IF lin1!(b) = nlin2! THEN IF lin2!(b) = nlin1! THEN RETURN -NEXT b -nl = nl + 1 -lin1!(nl) = nlin1! -lin2!(nl) = nlin2! -RETURN -4 -angl1 = an1 -angl2 = an2 -END SUB - -SUB sc10 - -RANDOMIZE 122 -mkback - -box 30, 50, 250, 180 - -pal 32, 64, 32, 250 -y = -8 -pri 30, 70 + y, 1, 250, " Kasutatud kirjandus:" -y = y + 20 -pri 30, 70 + y, 1, 250, "An augmented computer vision" -y = y + 13 -pri 30, 70 + y, 1, 250, "approach for anhanced" -y = y + 13 -pri 30, 70 + y, 1, 250, "understanding. M.Adjouadi," -y = y + 13 -pri 30, 70 + y, 1, 250, "J.Riley;" -y = y + 13 -pri 30, 70 + y, 1, 250, "Journal of Rehabilitation" -y = y + 13 -pri 30, 70 + y, 1, 250, "Research & Development," -y = y + 13 -pri 30, 70 + y, 1, 250, "Oct 95,Vol. 32 issue 3" - -inpur - - -END SUB - -SUB sc2 -pal 0, 63, 20, 255 -CLS -angl1 = 0 -angl2 = 1.5 -DIM px(0 TO 2000) -DIM py(0 TO 2000) -DIM pz(0 TO 2000) - -DIM rpx(0 TO 2000) -DIM rpy(0 TO 2000) -DIM rpz(0 TO 2000) - -DIM pol1(1 TO 2000) -DIM pol2(1 TO 2000) -DIM pol3(1 TO 2000) - -np = 0 -nl = 0 - -OPEN "data.dat" FOR INPUT AS #1 -INPUT #1, a -INPUT #1, inco -INPUT #1, inpo - -FOR a = 1 TO inco -INPUT #1, x, y, z -px(np) = x - 100 -py(np) = y -pz(np) = z -np = np + 1 -NEXT a - -INPUT #1, b, b, l1, l2, l3 - -FOR a = 1 TO inpo - 1 -INPUT #1, b, b, l1, l2, l3 -nl = nl + 1 -pol1(nl) = l1 -pol2(nl) = l2 -pol3(nl) = l3 -NEXT a -CLOSE 1 - -s1 = SIN(angl1) -c1 = COS(angl1) -s2 = SIN(angl2) -c2 = COS(angl2) - -FOR a = 0 TO np -x = px(a) -y = py(a) -z = pz(a) -z2 = z * s1 + y * c1 -y1 = y * s1 - z * c1 -z1 = z2 * s2 + x * c2 -x1 = x * s2 - z2 * c2 -z1 = z1 + 100 -x1 = x1 / z1 * 74 * 2 -y1 = y1 / z1 * 65 * 2 -rpx(a) = x1 + 160 -rpy(a) = y1 + 80 -rpz(a) = z1 -NEXT a - -'FOR a = 1 TO 63 -'pal COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a -'NEXT a - -FOR a = 1 TO 49 -pal a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a -NEXT a - -DIM polz(1 TO nl) - -FOR a = 1 TO nl -polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a))) -NEXT a - -e = nl -FOR a = 1 TO nl -su = -10000 -sun = 1 -FOR b = 1 TO e -IF polz(b) > su THEN su = polz(b): sun = b -NEXT b - -p1 = pol1(sun) -p2 = pol2(sun) -p3 = pol3(sun) - -polz(sun) = polz(e) -pol1(sun) = pol1(e) -pol2(sun) = pol2(e) -pol3(sun) = pol3(e) -e = e - 1 -calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d -fp INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d) -'SOUND 0, .07 -NEXT a - - -END SUB - -SUB sc3 -DIM buf(1 TO 10000) -DIM buf1(0 TO 35) - -FOR a = 1 TO 20 -SOUND 0, 1 -NEXT a -FOR a = 0 TO 30 -IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) -IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 -IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) -NEXT a - -FOR y = 0 TO 30 -FOR x = 10 TO 300 STEP 10 -GET (x, 0)-(x + 9, 198), buf(1) -PUT (x, 1), buf(1), PSET -NEXT x -FOR a = 1 TO 49 -pal a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a -NEXT a -SOUND 0, 1 -LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255 -NEXT y - -LOCATE 1, 1 -COLOR 254 -pal 0, 0, 0, 254 -PRINT "Tehisintellekt" -pal 63, 0, 0, 253 -FOR y = 0 TO 8 -FOR x = 0 TO 120 -c = POINT(x, y) -IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0 -NEXT x -FOR x = 0 TO 120 -c = POINT(x, y + 1) -IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253 -NEXT x -SOUND 0, 2 -NEXT y - -RANDOMIZE 1 - -FOR a = 1 TO 10 -y = RND * 100 + 50 -FOR x = 10 TO 300 STEP 10 -GET (x, y)-(x + 9, 198), buf(1) -PUT (x, y - 1), buf(1), PSET -NEXT x -NEXT a - -COLOR 253 -pal 0, 0, 0, 253 -LOCATE 1 -PRINT " autor: Svjatoslav Agejenko 30.09.2001 " -GET (0, 0)-(319, 8), buf(1) -LOCATE 1 -PRINT " " -PUT (0, 190), buf(1), PSET -FOR a = 1 TO 32 -pal 0, a, a * 2, 253 -SOUND 0, 1 -NEXT a -inpur -END SUB - -SUB sc4 -RANDOMIZE 1 -mkback - -box 30, 50, 290, 150 - -pal 32, 64, 32, 250 -y = 0 -pri 30, 70 + y, 1, 250, " Ruumiliselt laiendatud n�gemise" -y = y + 16 -pri 30, 70 + y, 1, 250, "l�henemine kujutise tuvastamiseks" -y = y + 20 -pri 30, 70 + y, 1, 250, "eesm�rk: + interpriteerimine" -y = y + 16 -pri 30, 70 + y, 1, 250, " + automaatjuhtimine" - -inpur -END SUB - -SUB sc5 -RANDOMIZE 4 -mkback - -box 30, 50, 290, 150 - -pal 32, 64, 32, 250 -y = -8 -pri 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess" -y = y + 20 -pri 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;" -y = y + 12 -pri 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-" -y = y + 12 -pri 30, 70 + y, 1, 250, " skaalaline serva avastamine;" -y = y + 12 -pri 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate" -y = y + 12 -pri 30, 70 + y, 1, 250, " rakkude p�him�tted." - - -inpur - -END SUB - -SUB sc6 -RANDOMIZE 40 -mkback - -box 30, 50, 290, 150 - -pal 32, 64, 32, 250 -y = -8 -pri 30, 70 + y, 1, 250, "* S�gavusinfo ekstraheerimine" -y = y + 20 -pri 30, 70 + y, 1, 250, "* Ruumilise n�gemise kasutamine" -y = y + 20 -pri 30, 70 + y, 1, 250, "* Sarnasusm��de" -y = y + 20 -pri 30, 70 + y, 1, 250, "* Sobitamisstrateegia" -inpur - - -END SUB - -SUB sc7 -pal 0, 0, 0, 0 -FOR a = 0 TO 19 -FOR y = a TO 199 STEP 20 -LINE (0, y)-(319, y), 0 -NEXT y -SOUND 0, .5 -NEXT a - -END SUB - -SUB sc8 -FOR a = 1 TO 50 -pal 0, 0, 0, a -NEXT a - - -DIM px(0 TO 800) -DIM py(0 TO 800) -DIM pz(0 TO 800) -DIM lin1(0 TO 1000) -DIM lin2(0 TO 1000) -DIM linc(0 TO 1000) -DIM lbx1(1 TO 1000) -DIM lby1(1 TO 1000) -DIM lbx2(1 TO 1000) -DIM lby2(1 TO 1000) -DIM px1(0 TO 800) -DIM py1(0 TO 800) -DIM hlkx(1 TO 50) -DIM hlky(1 TO 50) -DIM hlkz(1 TO 50) -DIM hlka -DIM hlkr -DIM hlknu -DIM hlkin -DIM hlax, hlay, hlaz -DIM mx, mz, my -DIM desx, desz -DIM desa - -DIM np, nl -DIM an1, an2 -DIM tim -DIM eta -DIM mil -DIM miin - -miin = 0 -mil = 25 -tim = 0 -eta = 1 -an1 = 0 -an2 = 0 - -np = 0 -nl = 0 -RANDOMIZE 100 -s = 64 -14 -sp = s / 2 -FOR y = 0 TO 100 STEP s -FOR x = 0 TO 100 STEP s -c1 = POINT(x, y) -c2 = POINT(x + s, y) -c3 = POINT(x, y + s) -c4 = POINT(x + s, y + s) -c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7 -c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7 -c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7 -IF c5 > 50 THEN c5 = 50 -IF c5 < 0 THEN c5 = 0 -IF c6 > 50 THEN c6 = 50 -IF c6 < 0 THEN c6 = 0 -IF c7 > 50 THEN c7 = 50 -IF c7 < 0 THEN c7 = 0 -PSET (x + sp, y + sp), c5 -PSET (x + s, y + sp), c6 -PSET (x + sp, y + s), c7 -NEXT x -NEXT y -s = s / 2 -IF s > 1 THEN GOTO 14 -'a$ = INPUT$(1) - -FOR z = 1 TO 400 STEP 20 -FOR x = 1 TO 400 STEP 20 -np = np + 1 -px(np) = x -py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2 -pz(np) = z -IF x > 1 THEN -nl = nl + 1 -lin1(nl) = np -lin2(nl) = np - 1 -linc(nl) = 1 -END IF -IF z > 1 THEN -nl = nl + 1 -lin1(nl) = np -lin2(nl) = np - 20 -linc(nl) = 1 -END IF -NEXT x -NEXT z - - -LINE (0, 0)-(319, 199), 0, BF - -pal 0, 0, 0, 0 -pal 0, 40, 10, 1 -pal 0, 32, 64, 2 -pal 50, 50, 0, 3 -pal 64, 20, 0, 4 - -mx = 200 -mz = 200 -kau = 1000 -hlax = 200 -hlay = 0 -hlaz = 200 -desx = 200 -desz = 200 - -OPEN "data2.dat" FOR INPUT AS #1 -a = 0 -b = 0 -hlkin = np + 1 -15 -INPUT #1, x, y, z -IF x = 999 THEN GOTO 16 -a = a + 1 -hlkx(a) = x -hlky(a) = -y -hlkz(a) = z -GOTO 15 -16 -INPUT #1, x, y -IF x = 999 THEN GOTO 17 -nl = nl + 1 -lin1(nl) = x + np + 1 -lin2(nl) = y + np + 1 -linc(nl) = 2 -GOTO 16 -17 -CLOSE #1 -np = np + a -hlknu = a - -RANDOMIZE 10 -c = 3 -FOR a = 1 TO 25 -p = RND * 396 + 2 -x = px(p) -z = pz(p) -yy = py(p) - 4 - -px(np + 1) = x - 5 -py(np + 1) = yy -pz(np + 1) = z - 5 - -px(np + 2) = x + 5 -py(np + 2) = yy -pz(np + 2) = z - 5 - -px(np + 3) = x + 5 -py(np + 3) = yy -pz(np + 3) = z + 5 - -px(np + 4) = x - 5 -py(np + 4) = yy -pz(np + 4) = z + 5 - -px(np + 5) = x -py(np + 5) = yy - 5 -pz(np + 5) = z - - -lin1(nl + 1) = np + 1 -lin2(nl + 1) = np + 2 -linc(nl + 1) = c - -lin1(nl + 2) = np + 2 -lin2(nl + 2) = np + 3 -linc(nl + 2) = c - -lin1(nl + 3) = np + 3 -lin2(nl + 3) = np + 4 -linc(nl + 3) = c - -lin1(nl + 4) = np + 4 -lin2(nl + 4) = np + 1 -linc(nl + 4) = c - -lin1(nl + 5) = np + 1 -lin2(nl + 5) = np + 5 -linc(nl + 5) = c - -lin1(nl + 6) = np + 2 -lin2(nl + 6) = np + 5 -linc(nl + 6) = c - -lin1(nl + 7) = np + 3 -lin2(nl + 7) = np + 5 -linc(nl + 7) = c - -lin1(nl + 8) = np + 4 -lin2(nl + 8) = np + 5 -linc(nl + 8) = c - -np = np + 5 -nl = nl + 8 -NEXT a - - -10 -SOUND 0, 1 -IF INKEY$ <> "" THEN miin = 1 -IF miin > 150 THEN GOTO 13 -IF miin <> 0 THEN miin = miin + 7 -mx = hlax -my = 50 - hlay - miin -mz = hlaz - -SELECT CASE eta -CASE 1 -desx = px(np) -desz = pz(np) -getan desx, desz, hlax, hlaz, desa -IF desa - hlka > pi THEN desa = desa - (pi * 2) -IF hlka - desa > pi THEN desa = desa + (pi * 2) -eta = 2 -FOR a = nl - 7 TO nl -linc(a) = 4 -NEXT a -CASE 2 -a = desa - hlka -IF desa = hlka THEN eta = 3 -IF a > .05 THEN a = .05 -IF a < -.05 THEN a = -.05 -hlka = hlka + a -CASE 3 -x = desx - hlax -z = desz - hlaz -v = SQR(x * x + z * z) -IF v < 5 THEN eta = 4 -v = v / 2 -hlax = hlax + x / v -hlaz = hlaz + z / v -CASE 4 -FOR a = np - 4 TO np -py(a) = py(a) - 1 -NEXT a -IF py(np) < 3 - hlay THEN -FOR a = nl - 7 TO nl -LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 -NEXT a -np = np - 5 -nl = nl - 8 -mil = mil - 1 -eta = 6 -IF mil <= 0 THEN eta = 7 -END IF -CASE 6 -eta = 5 -CASE 5 -eta = 1 -END SELECT - -y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20)) -IF hlay > y + 5 THEN hlay = hlay - 1 -IF hlay < y THEN hlay = hlay + 1 -IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1 -IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1 - -s1 = SIN(hlka) -c1 = COS(hlka) -FOR a = 0 TO hlknu - 5 -x = hlkx(a + 1) -z = hlkz(a + 1) -px(a + hlkin) = x * s1 + z * c1 + hlax -py(a + hlkin) = hlky(a + 1) - hlay -pz(a + hlkin) = z * s1 - x * c1 + hlaz -NEXT a - -hlkr = hlkr + .5 -s1 = SIN(hlkr) -c1 = COS(hlkr) -FOR a = hlknu - 4 TO hlknu - 1 -x = hlkx(a + 1) -z = hlkz(a + 1) -px(a + hlkin) = x * s1 + z * c1 + hlax -py(a + hlkin) = hlky(a + 1) - hlay -pz(a + hlkin) = z * s1 - x * c1 + hlaz -NEXT a - -tim = tim + 1 - -an1 = an1 + SIN(tim / 100) / 20 -an2 = SIN(tim / 42) * .3 + 1.15 - -s1 = SIN(an1) -c1 = COS(an1) -s2 = SIN(an2) -c2 = COS(an2) - -FOR a = 0 TO np -x = px(a) - mx -y = py(a) - my -z = pz(a) - mz - -z2 = z * s1 + x * c1 -x1 = x * s1 - z * c1 - -z1 = z2 * s2 + y * c2 -y1 = y * s2 - z2 * c2 - - -z1 = z1 + kau -IF z1 < 1 THEN px1(a) = -1: GOTO 11 -x1 = x1 / z1 * 74 * 2 -y1 = y1 / z1 * 65 * 2 - -px1(a) = x1 + 160 -py1(a) = y1 + 80 -11 -NEXT a - -FOR a = 1 TO nl -l1 = lin1!(a) -l2 = lin2!(a) -x1 = px1(l1) -x2 = px1(l2) -LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 -IF (x1 = -1) OR (x2 = -1) THEN GOTO 12 -y1 = py1(l1) -y2 = py1(l2) -LINE (x1, y1)-(x2, y2), linc(a) -lbx1(a) = x1 -lby1(a) = y1 -lbx2(a) = x2 -lby2(a) = y2 -12 -NEXT a -IF kau > 200 THEN kau = kau - 10 -IF tim < 28000 THEN GOTO 10 -13 -END SUB - -SUB sc9 -RANDOMIZE 45 -mkback - -box 30, 50, 290, 80 - -pal 32, 64, 32, 250 -y = -8 -pri 30, 70 + y, 1, 250, " T�nan t�helepanu eest" -inpur - - - -END SUB - -SUB start -SCREEN 13 -pi = 3.141592 -pii = pi -fac = 360 / (pi * 2) -getfnt -END SUB - diff --git a/Graphics/Presentations/Athoms animation/playmov.asm b/Graphics/Presentations/Athoms animation/playmov.asm new file mode 100644 index 0000000..0180aab --- /dev/null +++ b/Graphics/Presentations/Athoms animation/playmov.asm @@ -0,0 +1,97 @@ +; Play animation +; made by Svjatoslav Agejenko +; in 2002 +; H-Page: svjatoslav.eu +; E-Mail: svjatoslav@svjatoslav.eu + +[BITS 16] +[ORG 0x100] +[SECTION .text] + +l1: +; mov ah, 9 +; mov dx, file1 +; int 21h + +mov bx, 100 +mov ax,03e8h +mul bx +mov cx,dx +mov dx,ax +mov ah,86h +int 15h + +mov ah, 3dh +xor al, al +mov dx, file1 +int 21h +mov bx, ax +mov word [hand], ax +jc l3 + +mov ah, 3fh ;first +mov cx, 32000 +mov dx, fbuf +int 21h +jc l3 + +mov ax, 0A000h +mov es, ax +mov di, 0 +mov cx, 32000 +mov si, fbuf +rep movsb + +mov ah, 3fh ;Second +mov cx, 32000 +mov dx, fbuf +int 21h +jc l3 + +mov ax, 0A000h +mov es, ax +mov di, 32000 +mov cx, 32000 +mov si, fbuf +rep movsb + + +mov ah, 3eh +mov bx, word [hand] +int 21h + +inc byte[n2] +cmp byte[n2], 123 +jnz l2 +inc byte[n1] +mov byte[n2], 97 +l2: + +inc byte[fra] +cmp byte[fra], 33 +jl l1 +ret + +l3: +mov ah, 9 +mov dx, errmsg +int 21h +ret + +[SECTION .data] +fra db 1 +file1 db 'mov' +n1 db 'a' +n2 db 'a' +file1t db '.frm', 0,'$' +errmsg db 'error$' + +[SECTION .bss] +fbuf resb 33000 +hand resw 1 + + + + + + diff --git a/Graphics/Presentations/Athoms animation/playmov.com b/Graphics/Presentations/Athoms animation/playmov.com new file mode 100644 index 0000000..9dff92f Binary files /dev/null and b/Graphics/Presentations/Athoms animation/playmov.com differ diff --git a/Graphics/Presentations/Athoms animation/precompute video frames.bas b/Graphics/Presentations/Athoms animation/precompute video frames.bas new file mode 100644 index 0000000..51b02e9 --- /dev/null +++ b/Graphics/Presentations/Athoms animation/precompute video frames.bas @@ -0,0 +1,61 @@ +' Program generates fractal animation that looks like atoms. +' While it uses a simple formula to calculate the color of each pixel, +' visual effect is quite impressive. Formula was accidentally discovered. +' Each frame is saved into binary file to be played back later. +' +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu + +' Changelog: +' 2002, Initial version +' 2024.10, Improved program readability using AI + +SCREEN 13 +DIM SHARED byte AS STRING * 1 + +scale = 100 +frame = 0 +char1 = 97 +char2 = 97 + +1 +frame = frame + 1 +transformedX = 320 * scale / 30 +transformedY = 200 * scale / 30 +startX = 160 - (transformedX / 2) +startY = 100 - (transformedY / 2) +CLS +FOR y = 0 TO 199 + FOR x = 0 TO 319 + newX = startX + (transformedX * x / 320) + newY = startY + (transformedY * y / 200) + colorValue = SIN((newX ^ 2 + newY ^ 2) / 10) * 6 + 23 + IF colorValue < 16 THEN colorValue = 16 + IF colorValue > 31 THEN colorValue = 31 + PSET (x, y), colorValue + NEXT x +NEXT y + +fileName$ = "mov" + CHR$(char2) + CHR$(char1) + ".frm" + +OPEN fileName$ FOR OUTPUT AS #1 + +FOR y = 0 TO 199 + FOR x = 0 TO 319 + colorValue = POINT(x, y) + byte = CHR$(colorValue) + PRINT #1, byte; + NEXT x +NEXT y + +CLOSE #1 + +char1 = char1 + 1 +IF char1 > 122 THEN + char1 = 97 + char2 = char2 + 1 +END IF + +scale = scale / 1.1 +IF scale > 5 THEN GOTO 1 \ No newline at end of file diff --git a/Graphics/Presentations/Intellektika/CAT.I01 b/Graphics/Presentations/Intellektika/CAT.I01 new file mode 100644 index 0000000..eb828e6 --- /dev/null +++ b/Graphics/Presentations/Intellektika/CAT.I01 @@ -0,0 +1,32222 @@ + 179 + 180 + 0 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 1 + 6 + 37 + 0 + 0 + 43 + 1 + 43 + 43 + 44 + 86 + 86 + 123 + 129 + 93 + 165 + 129 + 136 + 165 + 172 + 129 + 136 + 165 + 136 + 165 + 172 + 173 + 178 + 208 + 172 + 215 + 172 + 208 + 214 + 173 + 208 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 159 + 135 + 123 + 93 + 122 + 129 + 122 + 93 + 159 + 129 + 135 + 166 + 165 + 136 + 165 + 130 + 135 + 165 + 130 + 129 + 129 + 129 + 129 + 93 + 122 + 93 + 129 + 122 + 87 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 86 + 43 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 87 + 128 + 86 + 129 + 123 + 129 + 129 + 122 + 129 + 86 + 79 + 86 + 43 + 86 + 43 + 43 + 79 + 43 + 43 + 37 + 43 + 85 + 86 + 122 + 87 + 128 + 87 + 80 + 85 + 44 + 79 + 49 + 80 + 86 + 85 + 80 + 86 + 80 + 85 + 80 + 86 + 86 + 79 + 86 + 79 + 43 + 43 + 43 + 43 + 44 + 86 + 92 + 171 + 136 + 173 + 178 + 173 + 215 + 178 + 137 + 178 + 173 + 178 + 173 + 172 + 178 + 173 + 178 + 173 + 172 + 179 + 172 + 179 + 36 + 0 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 0 + 7 + 0 + 0 + 1 + 36 + 0 + 1 + 6 + 37 + 7 + 36 + 44 + 86 + 122 + 87 + 122 + 129 + 129 + 172 + 172 + 165 + 136 + 129 + 171 + 136 + 166 + 178 + 209 + 172 + 208 + 179 + 172 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 129 + 129 + 130 + 164 + 93 + 123 + 129 + 128 + 87 + 122 + 86 + 129 + 87 + 128 + 130 + 171 + 130 + 171 + 166 + 135 + 166 + 129 + 171 + 130 + 129 + 129 + 129 + 129 + 129 + 87 + 128 + 87 + 129 + 86 + 129 + 86 + 123 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 79 + 44 + 86 + 128 + 87 + 93 + 128 + 123 + 128 + 123 + 129 + 165 + 136 + 123 + 128 + 86 + 86 + 86 + 80 + 85 + 44 + 79 + 43 + 43 + 43 + 43 + 43 + 79 + 86 + 123 + 92 + 86 + 86 + 86 + 80 + 85 + 43 + 43 + 44 + 79 + 86 + 79 + 85 + 44 + 79 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 43 + 43 + 43 + 49 + 87 + 129 + 129 + 178 + 173 + 178 + 136 + 215 + 143 + 172 + 172 + 178 + 172 + 143 + 172 + 179 + 172 + 179 + 172 + 173 + 178 + 209 + 178 + 1 + 0 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 0 + 37 + 0 + 0 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 0 + 0 + 43 + 43 + 36 + 44 + 49 + 116 + 92 + 123 + 128 + 130 + 165 + 172 + 130 + 171 + 129 + 172 + 130 + 178 + 172 + 208 + 173 + 172 + 215 + 172 + 214 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 130 + 122 + 93 + 129 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 172 + 166 + 172 + 135 + 166 + 135 + 165 + 130 + 129 + 129 + 129 + 130 + 128 + 129 + 87 + 129 + 128 + 87 + 86 + 129 + 85 + 93 + 122 + 86 + 86 + 43 + 50 + 79 + 86 + 87 + 86 + 128 + 93 + 128 + 129 + 123 + 129 + 136 + 165 + 129 + 165 + 129 + 129 + 87 + 122 + 86 + 85 + 44 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 128 + 87 + 86 + 122 + 50 + 79 + 43 + 43 + 86 + 43 + 43 + 80 + 79 + 79 + 50 + 79 + 86 + 79 + 43 + 79 + 43 + 79 + 43 + 7 + 43 + 44 + 50 + 85 + 166 + 135 + 172 + 178 + 173 + 179 + 177 + 173 + 178 + 137 + 178 + 173 + 178 + 136 + 178 + 173 + 178 + 172 + 173 + 177 + 173 + 178 + 1 + 36 + 0 + 0 + 1 + 0 + 0 + 43 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 7 + 0 + 37 + 42 + 43 + 80 + 86 + 128 + 87 + 128 + 165 + 130 + 171 + 166 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 179 + 172 + 172 + 173 + 178 + 171 + 166 + 172 + 136 + 165 + 86 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 85 + 44 + 86 + 86 + 86 + 86 + 129 + 129 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 136 + 165 + 129 + 129 + 130 + 129 + 129 + 92 + 123 + 129 + 92 + 122 + 93 + 122 + 87 + 129 + 86 + 86 + 43 + 86 + 93 + 122 + 93 + 122 + 93 + 122 + 129 + 129 + 129 + 171 + 165 + 130 + 171 + 129 + 123 + 129 + 129 + 86 + 86 + 79 + 50 + 80 + 49 + 80 + 43 + 43 + 7 + 43 + 79 + 86 + 86 + 86 + 87 + 86 + 85 + 44 + 79 + 43 + 7 + 50 + 79 + 79 + 43 + 86 + 79 + 79 + 44 + 79 + 43 + 79 + 43 + 44 + 43 + 6 + 44 + 49 + 80 + 93 + 129 + 172 + 178 + 136 + 178 + 173 + 178 + 173 + 179 + 172 + 179 + 172 + 172 + 143 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 179 + 0 + 36 + 1 + 0 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 43 + 43 + 86 + 122 + 123 + 129 + 128 + 129 + 130 + 165 + 172 + 129 + 172 + 171 + 172 + 173 + 172 + 178 + 172 + 172 + 173 + 208 + 171 + 172 + 172 + 129 + 130 + 129 + 129 + 86 + 86 + 86 + 50 + 80 + 85 + 43 + 86 + 43 + 43 + 80 + 49 + 80 + 86 + 93 + 122 + 136 + 171 + 166 + 171 + 172 + 172 + 136 + 166 + 171 + 136 + 165 + 136 + 129 + 165 + 136 + 129 + 129 + 129 + 129 + 123 + 129 + 93 + 122 + 129 + 93 + 122 + 86 + 86 + 86 + 86 + 87 + 129 + 129 + 128 + 87 + 129 + 129 + 129 + 129 + 172 + 165 + 136 + 159 + 128 + 129 + 129 + 129 + 123 + 85 + 44 + 86 + 85 + 80 + 50 + 43 + 43 + 37 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 43 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 79 + 43 + 79 + 44 + 43 + 49 + 43 + 43 + 43 + 50 + 86 + 129 + 136 + 135 + 209 + 179 + 172 + 179 + 179 + 172 + 179 + 171 + 179 + 172 + 172 + 179 + 172 + 179 + 172 + 179 + 209 + 178 + 179 + 172 + 1 + 36 + 6 + 1 + 0 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 43 + 37 + 43 + 86 + 122 + 129 + 129 + 128 + 123 + 172 + 129 + 172 + 129 + 136 + 171 + 209 + 172 + 214 + 172 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 124 + 128 + 93 + 86 + 87 + 85 + 80 + 43 + 50 + 79 + 43 + 50 + 43 + 43 + 37 + 49 + 86 + 87 + 128 + 87 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 166 + 172 + 172 + 135 + 166 + 135 + 166 + 135 + 165 + 129 + 129 + 135 + 129 + 123 + 129 + 129 + 129 + 86 + 87 + 128 + 86 + 86 + 86 + 93 + 128 + 123 + 93 + 129 + 128 + 130 + 129 + 129 + 165 + 129 + 166 + 129 + 128 + 123 + 129 + 129 + 86 + 122 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 43 + 43 + 86 + 79 + 50 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 79 + 43 + 43 + 44 + 79 + 43 + 86 + 43 + 43 + 44 + 49 + 44 + 87 + 128 + 135 + 136 + 172 + 215 + 172 + 179 + 173 + 178 + 173 + 178 + 209 + 178 + 173 + 172 + 178 + 173 + 179 + 214 + 173 + 178 + 209 + 179 + 214 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 0 + 0 + 1 + 6 + 0 + 37 + 0 + 0 + 1 + 42 + 43 + 43 + 79 + 86 + 86 + 123 + 129 + 129 + 165 + 129 + 165 + 136 + 165 + 136 + 172 + 172 + 209 + 178 + 172 + 173 + 172 + 171 + 172 + 172 + 130 + 165 + 93 + 86 + 122 + 86 + 86 + 50 + 79 + 43 + 44 + 49 + 43 + 44 + 42 + 43 + 37 + 50 + 86 + 122 + 93 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 165 + 136 + 165 + 136 + 129 + 129 + 129 + 130 + 165 + 92 + 129 + 129 + 86 + 122 + 92 + 87 + 128 + 86 + 86 + 87 + 128 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 128 + 130 + 128 + 129 + 123 + 129 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 1 + 43 + 43 + 85 + 44 + 85 + 44 + 86 + 86 + 43 + 44 + 42 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 79 + 43 + 44 + 49 + 49 + 86 + 87 + 129 + 135 + 172 + 173 + 178 + 173 + 178 + 173 + 179 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 214 + 173 + 215 + 172 + 214 + 215 + 173 + 214 + 0 + 1 + 0 + 42 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 43 + 7 + 79 + 44 + 86 + 122 + 86 + 122 + 129 + 86 + 129 + 165 + 136 + 165 + 129 + 130 + 171 + 172 + 179 + 172 + 208 + 172 + 172 + 172 + 136 + 129 + 123 + 128 + 93 + 122 + 87 + 85 + 86 + 86 + 50 + 49 + 79 + 44 + 85 + 44 + 85 + 43 + 44 + 86 + 122 + 93 + 128 + 129 + 130 + 171 + 172 + 130 + 172 + 172 + 178 + 166 + 172 + 172 + 171 + 172 + 130 + 165 + 135 + 130 + 129 + 129 + 129 + 129 + 165 + 130 + 129 + 129 + 92 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 129 + 92 + 123 + 129 + 92 + 123 + 129 + 129 + 129 + 129 + 122 + 165 + 93 + 122 + 86 + 86 + 86 + 86 + 44 + 79 + 43 + 7 + 43 + 36 + 7 + 43 + 80 + 49 + 80 + 50 + 85 + 80 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 1 + 49 + 43 + 43 + 43 + 44 + 43 + 79 + 50 + 80 + 50 + 128 + 93 + 166 + 136 + 172 + 172 + 179 + 214 + 173 + 179 + 208 + 179 + 178 + 209 + 179 + 172 + 179 + 179 + 208 + 179 + 208 + 215 + 179 + 209 + 214 + 209 + 179 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 36 + 0 + 1 + 42 + 1 + 43 + 43 + 86 + 86 + 122 + 129 + 123 + 128 + 93 + 159 + 129 + 129 + 135 + 166 + 129 + 136 + 165 + 172 + 172 + 135 + 166 + 171 + 130 + 172 + 129 + 86 + 129 + 86 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 43 + 86 + 86 + 50 + 79 + 50 + 86 + 123 + 92 + 123 + 129 + 172 + 136 + 171 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 165 + 136 + 129 + 129 + 129 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 122 + 86 + 93 + 86 + 123 + 86 + 92 + 129 + 122 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 80 + 86 + 50 + 43 + 43 + 43 + 43 + 37 + 7 + 43 + 79 + 49 + 44 + 86 + 86 + 44 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 6 + 44 + 43 + 79 + 49 + 86 + 50 + 86 + 92 + 130 + 129 + 171 + 136 + 172 + 179 + 208 + 179 + 173 + 214 + 173 + 214 + 173 + 214 + 173 + 214 + 172 + 178 + 209 + 178 + 209 + 214 + 215 + 209 + 178 + 209 + 214 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 7 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 37 + 6 + 43 + 80 + 86 + 122 + 136 + 159 + 128 + 129 + 129 + 129 + 165 + 129 + 130 + 129 + 129 + 129 + 129 + 136 + 165 + 130 + 135 + 165 + 130 + 128 + 87 + 122 + 92 + 86 + 86 + 86 + 129 + 87 + 128 + 129 + 87 + 85 + 86 + 86 + 86 + 80 + 50 + 122 + 93 + 123 + 128 + 130 + 171 + 136 + 172 + 166 + 172 + 135 + 172 + 172 + 166 + 172 + 171 + 172 + 135 + 166 + 135 + 130 + 165 + 129 + 129 + 136 + 129 + 129 + 166 + 129 + 93 + 122 + 92 + 123 + 93 + 122 + 93 + 86 + 122 + 86 + 86 + 86 + 93 + 122 + 86 + 129 + 129 + 86 + 129 + 123 + 86 + 128 + 86 + 122 + 87 + 85 + 80 + 50 + 43 + 86 + 43 + 37 + 43 + 42 + 44 + 43 + 49 + 80 + 50 + 86 + 86 + 50 + 79 + 44 + 43 + 43 + 43 + 49 + 44 + 43 + 44 + 13 + 80 + 50 + 86 + 86 + 92 + 129 + 130 + 135 + 172 + 172 + 172 + 178 + 173 + 179 + 208 + 179 + 172 + 215 + 172 + 215 + 172 + 179 + 215 + 172 + 214 + 173 + 215 + 214 + 209 + 214 + 173 + 215 + 214 + 209 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 43 + 1 + 0 + 43 + 6 + 1 + 36 + 0 + 1 + 0 + 7 + 36 + 7 + 37 + 6 + 37 + 43 + 43 + 43 + 122 + 129 + 129 + 165 + 129 + 129 + 165 + 128 + 129 + 87 + 129 + 129 + 128 + 124 + 129 + 135 + 129 + 129 + 129 + 130 + 128 + 87 + 122 + 93 + 123 + 92 + 129 + 129 + 129 + 130 + 165 + 129 + 93 + 85 + 129 + 87 + 85 + 92 + 123 + 92 + 129 + 123 + 135 + 166 + 172 + 171 + 136 + 172 + 166 + 136 + 171 + 166 + 172 + 172 + 172 + 136 + 165 + 172 + 129 + 136 + 129 + 165 + 130 + 135 + 165 + 130 + 135 + 123 + 92 + 129 + 128 + 87 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 92 + 123 + 93 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 123 + 122 + 86 + 50 + 86 + 79 + 50 + 43 + 80 + 43 + 43 + 7 + 43 + 79 + 43 + 86 + 50 + 86 + 122 + 50 + 86 + 43 + 86 + 44 + 86 + 49 + 49 + 86 + 49 + 79 + 50 + 86 + 92 + 129 + 129 + 130 + 135 + 179 + 172 + 208 + 179 + 172 + 179 + 209 + 178 + 179 + 208 + 179 + 208 + 214 + 173 + 215 + 208 + 179 + 215 + 208 + 215 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 0 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 0 + 43 + 1 + 42 + 1 + 0 + 43 + 0 + 0 + 1 + 43 + 42 + 1 + 43 + 37 + 6 + 37 + 43 + 85 + 123 + 92 + 165 + 123 + 129 + 129 + 129 + 129 + 86 + 128 + 87 + 86 + 128 + 87 + 129 + 129 + 122 + 93 + 129 + 128 + 87 + 129 + 129 + 128 + 129 + 130 + 129 + 171 + 129 + 172 + 129 + 129 + 129 + 123 + 93 + 128 + 123 + 93 + 122 + 129 + 129 + 129 + 172 + 172 + 172 + 135 + 166 + 136 + 166 + 171 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 165 + 135 + 130 + 165 + 135 + 130 + 165 + 136 + 129 + 123 + 92 + 130 + 128 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 128 + 87 + 129 + 86 + 122 + 129 + 86 + 122 + 86 + 87 + 128 + 86 + 80 + 86 + 85 + 44 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 86 + 87 + 128 + 87 + 92 + 93 + 129 + 93 + 129 + 136 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 209 + 178 + 215 + 173 + 178 + 209 + 172 + 215 + 208 + 178 + 215 + 209 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 209 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 43 + 0 + 43 + 43 + 0 + 1 + 0 + 43 + 0 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 6 + 37 + 43 + 79 + 86 + 122 + 129 + 86 + 129 + 129 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 86 + 86 + 87 + 128 + 92 + 123 + 129 + 93 + 129 + 165 + 135 + 166 + 136 + 171 + 130 + 165 + 172 + 135 + 166 + 135 + 123 + 93 + 128 + 129 + 123 + 129 + 92 + 130 + 129 + 172 + 171 + 130 + 172 + 165 + 136 + 171 + 130 + 172 + 165 + 172 + 136 + 171 + 172 + 166 + 135 + 130 + 165 + 135 + 130 + 129 + 171 + 130 + 165 + 129 + 93 + 129 + 129 + 122 + 129 + 93 + 122 + 87 + 86 + 128 + 87 + 86 + 129 + 86 + 122 + 87 + 92 + 122 + 122 + 87 + 128 + 86 + 86 + 80 + 86 + 85 + 87 + 43 + 86 + 44 + 85 + 43 + 43 + 43 + 43 + 43 + 49 + 87 + 86 + 129 + 86 + 92 + 86 + 86 + 129 + 92 + 86 + 129 + 100 + 165 + 136 + 136 + 130 + 178 + 135 + 173 + 172 + 179 + 178 + 215 + 173 + 178 + 179 + 209 + 214 + 179 + 173 + 214 + 208 + 214 + 173 + 214 + 215 + 209 + 215 + 215 + 209 + 179 + 214 + 209 + 214 + 208 + 215 + 214 + 209 + 43 + 36 + 1 + 6 + 37 + 6 + 43 + 37 + 43 + 7 + 36 + 7 + 37 + 42 + 37 + 43 + 79 + 43 + 49 + 43 + 79 + 44 + 36 + 43 + 43 + 79 + 86 + 86 + 122 + 129 + 123 + 129 + 129 + 129 + 129 + 86 + 86 + 85 + 44 + 86 + 87 + 85 + 86 + 87 + 123 + 128 + 129 + 129 + 130 + 171 + 135 + 166 + 172 + 130 + 171 + 172 + 130 + 171 + 130 + 129 + 171 + 130 + 129 + 129 + 129 + 92 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 166 + 129 + 135 + 172 + 130 + 171 + 172 + 172 + 165 + 136 + 129 + 129 + 166 + 135 + 130 + 171 + 129 + 130 + 128 + 123 + 129 + 129 + 129 + 93 + 123 + 128 + 93 + 122 + 87 + 128 + 86 + 86 + 86 + 129 + 86 + 122 + 93 + 123 + 128 + 122 + 86 + 80 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 49 + 81 + 92 + 93 + 86 + 129 + 92 + 129 + 93 + 129 + 129 + 136 + 129 + 137 + 172 + 177 + 137 + 178 + 173 + 179 + 214 + 173 + 179 + 179 + 208 + 179 + 179 + 172 + 215 + 179 + 178 + 209 + 179 + 208 + 215 + 214 + 209 + 179 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 215 + 214 + 209 + 79 + 43 + 0 + 43 + 0 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 79 + 49 + 43 + 80 + 43 + 79 + 79 + 44 + 43 + 42 + 43 + 37 + 43 + 85 + 80 + 129 + 86 + 129 + 122 + 129 + 86 + 165 + 87 + 128 + 44 + 86 + 79 + 87 + 86 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 130 + 172 + 171 + 172 + 130 + 171 + 172 + 172 + 129 + 130 + 135 + 165 + 130 + 129 + 129 + 135 + 165 + 129 + 87 + 171 + 130 + 171 + 130 + 171 + 172 + 130 + 171 + 129 + 165 + 136 + 129 + 172 + 166 + 172 + 135 + 166 + 135 + 129 + 130 + 129 + 129 + 166 + 135 + 165 + 93 + 129 + 122 + 93 + 129 + 129 + 122 + 135 + 123 + 93 + 128 + 87 + 128 + 87 + 122 + 93 + 122 + 86 + 129 + 129 + 122 + 87 + 128 + 86 + 122 + 44 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 80 + 43 + 7 + 43 + 43 + 49 + 86 + 129 + 87 + 92 + 136 + 165 + 135 + 172 + 136 + 172 + 179 + 179 + 172 + 179 + 215 + 179 + 179 + 178 + 215 + 179 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 215 + 209 + 214 + 209 + 215 + 214 + 215 + 209 + 215 + 215 + 208 + 215 + 215 + 214 + 209 + 214 + 215 + 214 + 79 + 37 + 7 + 43 + 0 + 37 + 6 + 43 + 80 + 43 + 43 + 86 + 43 + 43 + 86 + 43 + 43 + 79 + 80 + 43 + 43 + 42 + 37 + 43 + 43 + 79 + 86 + 122 + 129 + 86 + 86 + 123 + 128 + 87 + 129 + 86 + 80 + 86 + 50 + 122 + 86 + 93 + 122 + 87 + 129 + 92 + 165 + 130 + 129 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 165 + 129 + 129 + 136 + 164 + 130 + 129 + 172 + 135 + 130 + 165 + 129 + 136 + 165 + 172 + 136 + 171 + 166 + 136 + 165 + 136 + 165 + 129 + 130 + 171 + 136 + 172 + 165 + 130 + 129 + 135 + 129 + 130 + 129 + 171 + 129 + 129 + 129 + 122 + 93 + 122 + 129 + 93 + 128 + 129 + 129 + 93 + 123 + 128 + 87 + 129 + 86 + 129 + 122 + 129 + 129 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 79 + 86 + 86 + 86 + 50 + 86 + 43 + 43 + 43 + 44 + 43 + 85 + 86 + 93 + 86 + 93 + 129 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 179 + 215 + 179 + 214 + 179 + 215 + 178 + 179 + 179 + 208 + 179 + 179 + 209 + 178 + 179 + 209 + 178 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 179 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 208 + 215 + 79 + 43 + 43 + 0 + 1 + 42 + 43 + 43 + 43 + 80 + 43 + 86 + 43 + 43 + 79 + 43 + 79 + 50 + 79 + 44 + 43 + 43 + 42 + 79 + 43 + 80 + 85 + 87 + 86 + 122 + 128 + 87 + 123 + 128 + 129 + 87 + 86 + 86 + 86 + 87 + 122 + 93 + 87 + 123 + 86 + 129 + 129 + 129 + 136 + 165 + 172 + 172 + 171 + 172 + 172 + 135 + 172 + 166 + 135 + 129 + 166 + 135 + 166 + 171 + 136 + 166 + 171 + 135 + 166 + 135 + 172 + 172 + 165 + 136 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 123 + 135 + 129 + 129 + 130 + 171 + 87 + 128 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 129 + 129 + 123 + 92 + 129 + 123 + 128 + 123 + 93 + 122 + 86 + 129 + 86 + 122 + 86 + 86 + 80 + 49 + 122 + 86 + 50 + 86 + 44 + 43 + 79 + 50 + 43 + 44 + 43 + 86 + 93 + 86 + 129 + 135 + 130 + 178 + 172 + 173 + 179 + 214 + 179 + 215 + 179 + 209 + 179 + 215 + 179 + 178 + 209 + 179 + 179 + 208 + 179 + 178 + 209 + 179 + 214 + 173 + 215 + 214 + 215 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 215 + 208 + 214 + 215 + 215 + 215 + 208 + 215 + 79 + 43 + 43 + 43 + 0 + 1 + 42 + 43 + 44 + 43 + 50 + 79 + 86 + 36 + 43 + 79 + 44 + 85 + 44 + 85 + 79 + 44 + 79 + 85 + 43 + 43 + 80 + 86 + 86 + 122 + 129 + 87 + 128 + 123 + 129 + 87 + 92 + 86 + 123 + 93 + 129 + 165 + 130 + 86 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 172 + 173 + 171 + 172 + 136 + 166 + 171 + 136 + 172 + 171 + 166 + 172 + 129 + 172 + 129 + 129 + 129 + 166 + 136 + 165 + 135 + 130 + 129 + 129 + 165 + 129 + 129 + 130 + 135 + 123 + 92 + 129 + 86 + 129 + 87 + 128 + 129 + 87 + 128 + 129 + 129 + 129 + 123 + 129 + 93 + 129 + 122 + 86 + 122 + 86 + 129 + 86 + 86 + 86 + 116 + 85 + 86 + 86 + 86 + 50 + 80 + 86 + 43 + 50 + 43 + 43 + 43 + 44 + 85 + 87 + 129 + 129 + 136 + 136 + 208 + 172 + 179 + 179 + 214 + 215 + 179 + 215 + 215 + 179 + 215 + 172 + 215 + 179 + 214 + 173 + 215 + 172 + 215 + 214 + 173 + 215 + 208 + 179 + 215 + 215 + 215 + 209 + 214 + 215 + 215 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 214 + 215 + 79 + 43 + 43 + 43 + 1 + 43 + 36 + 7 + 43 + 80 + 49 + 79 + 44 + 49 + 79 + 44 + 79 + 86 + 79 + 50 + 79 + 79 + 43 + 50 + 79 + 43 + 80 + 85 + 123 + 92 + 123 + 122 + 129 + 86 + 129 + 129 + 123 + 93 + 122 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 171 + 166 + 136 + 171 + 172 + 136 + 166 + 172 + 172 + 178 + 166 + 172 + 171 + 130 + 129 + 172 + 171 + 172 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 172 + 171 + 136 + 166 + 135 + 165 + 135 + 130 + 129 + 165 + 136 + 129 + 129 + 122 + 136 + 129 + 129 + 129 + 123 + 129 + 128 + 87 + 129 + 86 + 87 + 128 + 86 + 86 + 129 + 92 + 166 + 129 + 93 + 122 + 92 + 123 + 92 + 123 + 86 + 122 + 86 + 122 + 86 + 86 + 86 + 123 + 86 + 86 + 85 + 50 + 80 + 86 + 43 + 50 + 37 + 43 + 7 + 42 + 44 + 49 + 93 + 129 + 129 + 130 + 171 + 142 + 209 + 179 + 214 + 179 + 209 + 215 + 215 + 179 + 215 + 179 + 215 + 178 + 209 + 179 + 214 + 208 + 179 + 214 + 209 + 179 + 214 + 215 + 208 + 215 + 215 + 215 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 215 + 214 + 215 + 208 + 215 + 214 + 209 + 86 + 79 + 86 + 43 + 0 + 7 + 36 + 43 + 43 + 43 + 43 + 44 + 79 + 43 + 43 + 85 + 44 + 79 + 86 + 79 + 50 + 79 + 44 + 43 + 79 + 49 + 80 + 122 + 92 + 123 + 129 + 128 + 123 + 86 + 123 + 92 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 129 + 172 + 130 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 172 + 136 + 166 + 214 + 173 + 214 + 172 + 172 + 172 + 135 + 173 + 172 + 172 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 129 + 172 + 129 + 129 + 92 + 165 + 129 + 93 + 129 + 123 + 129 + 129 + 86 + 93 + 122 + 93 + 122 + 86 + 92 + 123 + 93 + 122 + 129 + 93 + 129 + 122 + 87 + 128 + 123 + 128 + 87 + 86 + 86 + 85 + 122 + 86 + 87 + 86 + 86 + 80 + 85 + 50 + 80 + 85 + 43 + 7 + 37 + 7 + 43 + 43 + 50 + 122 + 93 + 129 + 136 + 171 + 173 + 172 + 179 + 215 + 215 + 173 + 215 + 214 + 179 + 215 + 215 + 172 + 215 + 215 + 215 + 208 + 179 + 208 + 215 + 179 + 208 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 178 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 79 + 86 + 43 + 79 + 43 + 1 + 43 + 0 + 43 + 43 + 7 + 43 + 79 + 43 + 43 + 79 + 44 + 85 + 80 + 85 + 44 + 79 + 86 + 79 + 43 + 80 + 85 + 87 + 128 + 129 + 123 + 129 + 122 + 93 + 122 + 86 + 129 + 123 + 130 + 129 + 129 + 130 + 135 + 166 + 135 + 166 + 172 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 166 + 136 + 172 + 172 + 171 + 166 + 172 + 135 + 172 + 171 + 173 + 208 + 179 + 172 + 208 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 166 + 135 + 129 + 166 + 135 + 129 + 130 + 128 + 129 + 129 + 130 + 129 + 123 + 128 + 93 + 128 + 86 + 87 + 128 + 87 + 122 + 93 + 86 + 122 + 93 + 123 + 128 + 93 + 123 + 92 + 123 + 129 + 122 + 93 + 86 + 116 + 85 + 87 + 122 + 86 + 86 + 86 + 79 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 42 + 44 + 49 + 86 + 130 + 129 + 135 + 172 + 136 + 208 + 179 + 214 + 209 + 215 + 215 + 179 + 215 + 215 + 172 + 215 + 215 + 209 + 178 + 215 + 208 + 214 + 209 + 179 + 208 + 215 + 214 + 209 + 214 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 79 + 43 + 43 + 80 + 49 + 37 + 43 + 6 + 37 + 7 + 43 + 43 + 43 + 79 + 43 + 43 + 86 + 79 + 80 + 85 + 86 + 86 + 80 + 86 + 85 + 80 + 86 + 86 + 128 + 87 + 165 + 86 + 123 + 128 + 87 + 129 + 124 + 128 + 93 + 166 + 129 + 129 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 129 + 172 + 166 + 172 + 178 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 171 + 172 + 136 + 165 + 166 + 135 + 129 + 129 + 165 + 135 + 129 + 123 + 93 + 129 + 129 + 129 + 122 + 93 + 129 + 122 + 93 + 123 + 92 + 123 + 86 + 86 + 123 + 91 + 87 + 92 + 123 + 92 + 129 + 86 + 129 + 123 + 128 + 86 + 86 + 86 + 116 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 44 + 86 + 43 + 43 + 43 + 7 + 37 + 6 + 44 + 86 + 92 + 128 + 130 + 135 + 172 + 172 + 173 + 178 + 209 + 215 + 178 + 209 + 215 + 214 + 215 + 179 + 209 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 208 + 215 + 208 + 172 + 215 + 209 + 178 + 209 + 214 + 209 + 215 + 214 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 79 + 43 + 43 + 44 + 79 + 43 + 7 + 43 + 43 + 1 + 43 + 43 + 79 + 49 + 79 + 80 + 49 + 86 + 80 + 86 + 85 + 86 + 116 + 86 + 86 + 86 + 122 + 86 + 87 + 128 + 123 + 128 + 86 + 123 + 86 + 92 + 123 + 129 + 87 + 129 + 165 + 130 + 136 + 165 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 172 + 166 + 136 + 165 + 136 + 171 + 172 + 172 + 172 + 171 + 130 + 172 + 171 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 136 + 122 + 123 + 135 + 123 + 92 + 129 + 123 + 93 + 122 + 93 + 122 + 93 + 122 + 93 + 86 + 86 + 86 + 86 + 122 + 93 + 128 + 87 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 86 + 85 + 80 + 50 + 86 + 86 + 44 + 79 + 43 + 43 + 7 + 43 + 0 + 50 + 86 + 86 + 129 + 130 + 135 + 172 + 172 + 173 + 172 + 214 + 215 + 173 + 214 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 178 + 209 + 214 + 209 + 215 + 208 + 179 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 79 + 43 + 43 + 44 + 79 + 50 + 43 + 36 + 43 + 43 + 43 + 44 + 85 + 44 + 85 + 80 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 86 + 122 + 122 + 93 + 122 + 86 + 122 + 86 + 44 + 86 + 87 + 122 + 93 + 129 + 129 + 130 + 171 + 130 + 166 + 171 + 136 + 166 + 135 + 166 + 129 + 136 + 165 + 172 + 136 + 172 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 172 + 178 + 173 + 208 + 172 + 178 + 166 + 136 + 172 + 172 + 165 + 172 + 136 + 165 + 135 + 130 + 129 + 129 + 129 + 130 + 128 + 92 + 123 + 92 + 129 + 128 + 87 + 93 + 85 + 129 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 93 + 86 + 86 + 128 + 87 + 86 + 129 + 122 + 86 + 87 + 128 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 1 + 43 + 7 + 43 + 86 + 86 + 129 + 135 + 172 + 130 + 178 + 172 + 172 + 215 + 208 + 179 + 215 + 209 + 214 + 215 + 209 + 215 + 215 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 178 + 209 + 214 + 209 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 214 + 214 + 209 + 86 + 79 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 43 + 43 + 79 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 129 + 129 + 122 + 129 + 86 + 80 + 85 + 86 + 86 + 87 + 123 + 129 + 129 + 136 + 165 + 130 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 172 + 129 + 172 + 172 + 171 + 130 + 165 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 178 + 172 + 172 + 172 + 172 + 172 + 171 + 130 + 172 + 172 + 129 + 136 + 129 + 129 + 129 + 129 + 130 + 92 + 87 + 129 + 92 + 123 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 93 + 86 + 86 + 50 + 86 + 86 + 86 + 86 + 50 + 87 + 86 + 87 + 128 + 86 + 87 + 122 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 129 + 136 + 165 + 172 + 172 + 172 + 178 + 209 + 215 + 172 + 215 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 179 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 123 + 92 + 86 + 80 + 50 + 79 + 43 + 43 + 43 + 43 + 44 + 49 + 80 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 128 + 87 + 122 + 86 + 86 + 80 + 122 + 86 + 86 + 122 + 129 + 86 + 86 + 86 + 80 + 86 + 43 + 129 + 86 + 130 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 136 + 129 + 165 + 129 + 136 + 166 + 135 + 172 + 172 + 166 + 135 + 130 + 165 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 171 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 129 + 136 + 123 + 93 + 129 + 86 + 94 + 122 + 93 + 87 + 92 + 123 + 50 + 86 + 86 + 44 + 50 + 86 + 86 + 50 + 86 + 80 + 50 + 87 + 86 + 86 + 50 + 86 + 86 + 50 + 86 + 87 + 128 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 50 + 80 + 50 + 43 + 79 + 44 + 43 + 43 + 44 + 43 + 43 + 43 + 86 + 128 + 129 + 130 + 172 + 171 + 173 + 172 + 172 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 208 + 214 + 123 + 128 + 86 + 86 + 50 + 80 + 43 + 43 + 43 + 43 + 85 + 44 + 86 + 43 + 122 + 86 + 86 + 129 + 86 + 123 + 128 + 86 + 123 + 86 + 122 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 123 + 85 + 44 + 86 + 86 + 87 + 128 + 129 + 124 + 135 + 166 + 130 + 171 + 130 + 171 + 129 + 172 + 129 + 130 + 171 + 172 + 136 + 165 + 136 + 165 + 172 + 136 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 172 + 172 + 172 + 129 + 135 + 130 + 165 + 129 + 129 + 93 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 87 + 43 + 86 + 44 + 43 + 50 + 43 + 44 + 86 + 43 + 86 + 44 + 49 + 86 + 44 + 50 + 86 + 43 + 87 + 86 + 50 + 86 + 122 + 87 + 86 + 86 + 86 + 122 + 86 + 50 + 86 + 43 + 79 + 86 + 44 + 85 + 80 + 50 + 44 + 79 + 43 + 43 + 44 + 43 + 43 + 86 + 93 + 165 + 129 + 136 + 165 + 172 + 179 + 208 + 172 + 214 + 209 + 173 + 214 + 209 + 214 + 173 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 214 + 214 + 208 + 208 + 214 + 87 + 129 + 79 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 44 + 86 + 85 + 86 + 87 + 122 + 129 + 122 + 93 + 122 + 129 + 86 + 122 + 87 + 122 + 85 + 86 + 123 + 86 + 122 + 87 + 128 + 86 + 44 + 86 + 86 + 128 + 123 + 93 + 130 + 165 + 136 + 165 + 130 + 135 + 129 + 165 + 130 + 172 + 135 + 166 + 172 + 172 + 171 + 130 + 172 + 171 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 172 + 166 + 136 + 165 + 172 + 135 + 166 + 129 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 51 + 86 + 86 + 86 + 44 + 50 + 79 + 43 + 44 + 43 + 7 + 43 + 44 + 49 + 44 + 43 + 43 + 50 + 43 + 44 + 43 + 49 + 44 + 43 + 86 + 50 + 80 + 86 + 92 + 86 + 87 + 128 + 86 + 86 + 50 + 80 + 86 + 44 + 85 + 80 + 50 + 86 + 80 + 49 + 44 + 79 + 44 + 43 + 43 + 43 + 86 + 92 + 166 + 129 + 129 + 136 + 171 + 173 + 214 + 173 + 208 + 214 + 173 + 208 + 214 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 208 + 214 + 208 + 87 + 85 + 80 + 49 + 44 + 79 + 50 + 43 + 79 + 44 + 49 + 80 + 50 + 85 + 116 + 87 + 128 + 87 + 128 + 123 + 128 + 87 + 122 + 92 + 122 + 87 + 86 + 122 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 80 + 93 + 87 + 129 + 130 + 165 + 130 + 171 + 129 + 130 + 129 + 129 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 171 + 136 + 172 + 129 + 129 + 130 + 128 + 123 + 86 + 93 + 86 + 86 + 86 + 44 + 51 + 85 + 44 + 86 + 43 + 50 + 44 + 44 + 43 + 43 + 7 + 7 + 37 + 7 + 43 + 43 + 7 + 36 + 8 + 42 + 2 + 42 + 7 + 43 + 8 + 43 + 80 + 49 + 86 + 86 + 87 + 85 + 129 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 85 + 80 + 50 + 86 + 79 + 44 + 50 + 43 + 79 + 43 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 130 + 214 + 172 + 209 + 178 + 208 + 173 + 214 + 208 + 179 + 209 + 208 + 214 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 172 + 215 + 208 + 214 + 209 + 214 + 208 + 208 + 173 + 85 + 44 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 128 + 123 + 129 + 86 + 86 + 86 + 79 + 50 + 86 + 123 + 129 + 129 + 136 + 165 + 129 + 130 + 129 + 129 + 129 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 178 + 166 + 172 + 171 + 172 + 172 + 129 + 172 + 172 + 129 + 165 + 93 + 123 + 92 + 86 + 80 + 50 + 86 + 86 + 44 + 50 + 80 + 49 + 50 + 44 + 43 + 44 + 49 + 80 + 43 + 8 + 42 + 43 + 7 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 43 + 44 + 85 + 44 + 122 + 86 + 93 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 86 + 50 + 44 + 80 + 85 + 86 + 44 + 79 + 44 + 49 + 80 + 86 + 86 + 129 + 92 + 130 + 129 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 173 + 214 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 215 + 209 + 214 + 173 + 214 + 209 + 215 + 208 + 215 + 172 + 215 + 208 + 179 + 209 + 214 + 208 + 178 + 209 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 85 + 80 + 86 + 122 + 129 + 86 + 86 + 129 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 122 + 93 + 129 + 122 + 122 + 86 + 50 + 80 + 86 + 123 + 92 + 130 + 129 + 166 + 129 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 172 + 166 + 135 + 172 + 172 + 165 + 172 + 172 + 173 + 172 + 172 + 172 + 135 + 172 + 130 + 171 + 130 + 129 + 122 + 93 + 86 + 122 + 50 + 80 + 85 + 50 + 80 + 50 + 50 + 79 + 50 + 80 + 49 + 44 + 43 + 50 + 44 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 8 + 43 + 1 + 43 + 7 + 36 + 7 + 1 + 43 + 6 + 38 + 42 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 44 + 86 + 43 + 86 + 44 + 86 + 44 + 85 + 44 + 86 + 43 + 86 + 86 + 86 + 86 + 129 + 129 + 136 + 171 + 172 + 209 + 172 + 209 + 178 + 208 + 209 + 214 + 173 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 215 + 173 + 208 + 209 + 179 + 214 + 209 + 215 + 172 + 215 + 172 + 209 + 215 + 172 + 209 + 178 + 209 + 43 + 42 + 37 + 43 + 7 + 37 + 49 + 43 + 43 + 43 + 43 + 79 + 86 + 43 + 86 + 122 + 86 + 123 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 123 + 128 + 129 + 123 + 128 + 87 + 80 + 49 + 87 + 86 + 122 + 130 + 129 + 129 + 129 + 123 + 129 + 135 + 130 + 129 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 172 + 172 + 178 + 166 + 172 + 136 + 171 + 172 + 166 + 129 + 129 + 86 + 93 + 86 + 79 + 87 + 85 + 50 + 80 + 50 + 85 + 45 + 86 + 86 + 50 + 80 + 49 + 44 + 43 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 80 + 7 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 43 + 7 + 7 + 43 + 79 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 80 + 85 + 44 + 50 + 80 + 86 + 86 + 43 + 80 + 49 + 86 + 86 + 86 + 123 + 129 + 136 + 172 + 172 + 208 + 172 + 215 + 208 + 208 + 179 + 209 + 214 + 209 + 214 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 178 + 215 + 173 + 214 + 215 + 209 + 179 + 208 + 179 + 208 + 179 + 208 + 173 + 215 + 172 + 173 + 42 + 37 + 43 + 43 + 7 + 37 + 49 + 79 + 43 + 43 + 44 + 49 + 80 + 49 + 80 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 123 + 86 + 85 + 86 + 86 + 86 + 116 + 93 + 128 + 129 + 123 + 122 + 86 + 86 + 50 + 80 + 86 + 129 + 130 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 171 + 129 + 130 + 128 + 130 + 171 + 136 + 166 + 178 + 172 + 166 + 136 + 171 + 130 + 129 + 128 + 87 + 86 + 86 + 50 + 80 + 85 + 86 + 86 + 44 + 86 + 86 + 50 + 86 + 86 + 50 + 80 + 50 + 43 + 44 + 50 + 43 + 44 + 50 + 43 + 44 + 43 + 43 + 50 + 37 + 43 + 43 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 43 + 1 + 42 + 1 + 43 + 43 + 50 + 80 + 49 + 86 + 87 + 86 + 86 + 86 + 49 + 80 + 44 + 86 + 43 + 86 + 80 + 50 + 86 + 43 + 44 + 122 + 91 + 87 + 129 + 129 + 172 + 172 + 208 + 179 + 208 + 215 + 173 + 214 + 209 + 214 + 173 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 208 + 214 + 208 + 215 + 208 + 215 + 215 + 173 + 214 + 215 + 172 + 215 + 179 + 208 + 215 + 173 + 178 + 209 + 173 + 214 + 173 + 209 + 178 + 37 + 7 + 79 + 43 + 43 + 43 + 86 + 43 + 80 + 43 + 49 + 43 + 43 + 86 + 80 + 85 + 86 + 123 + 128 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 79 + 86 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 86 + 86 + 123 + 130 + 129 + 129 + 130 + 129 + 129 + 129 + 135 + 166 + 135 + 166 + 129 + 129 + 129 + 130 + 135 + 166 + 171 + 172 + 172 + 135 + 166 + 171 + 130 + 122 + 93 + 122 + 87 + 50 + 85 + 80 + 49 + 86 + 123 + 85 + 86 + 50 + 87 + 86 + 86 + 86 + 50 + 86 + 50 + 44 + 43 + 80 + 50 + 43 + 50 + 44 + 43 + 50 + 43 + 43 + 44 + 43 + 43 + 44 + 6 + 38 + 6 + 44 + 6 + 37 + 7 + 1 + 6 + 37 + 43 + 1 + 49 + 43 + 79 + 80 + 50 + 86 + 86 + 86 + 86 + 79 + 50 + 80 + 50 + 79 + 86 + 44 + 86 + 43 + 86 + 86 + 86 + 129 + 129 + 130 + 171 + 215 + 172 + 215 + 173 + 214 + 209 + 214 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 173 + 214 + 215 + 179 + 208 + 215 + 179 + 172 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 214 + 173 + 43 + 43 + 79 + 44 + 85 + 44 + 86 + 85 + 44 + 79 + 43 + 43 + 44 + 85 + 79 + 86 + 86 + 122 + 87 + 86 + 128 + 86 + 122 + 80 + 49 + 80 + 79 + 86 + 86 + 86 + 122 + 129 + 86 + 86 + 80 + 86 + 44 + 86 + 122 + 86 + 93 + 123 + 129 + 129 + 171 + 130 + 129 + 172 + 129 + 172 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 172 + 171 + 166 + 172 + 136 + 129 + 129 + 86 + 86 + 128 + 86 + 50 + 80 + 49 + 80 + 86 + 93 + 122 + 93 + 86 + 87 + 86 + 86 + 86 + 86 + 51 + 79 + 50 + 44 + 49 + 44 + 79 + 50 + 44 + 50 + 43 + 44 + 43 + 50 + 43 + 44 + 42 + 2 + 43 + 7 + 43 + 1 + 42 + 1 + 6 + 1 + 43 + 0 + 43 + 7 + 37 + 49 + 44 + 86 + 86 + 86 + 50 + 80 + 86 + 44 + 49 + 80 + 87 + 79 + 44 + 85 + 50 + 80 + 86 + 93 + 122 + 129 + 172 + 136 + 208 + 172 + 215 + 208 + 215 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 209 + 214 + 208 + 179 + 215 + 215 + 215 + 214 + 173 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 215 + 172 + 209 + 178 + 44 + 122 + 128 + 87 + 86 + 122 + 86 + 86 + 43 + 43 + 43 + 37 + 79 + 43 + 49 + 80 + 86 + 85 + 123 + 86 + 122 + 85 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 92 + 80 + 86 + 86 + 87 + 86 + 129 + 129 + 87 + 122 + 93 + 122 + 129 + 130 + 135 + 165 + 136 + 165 + 130 + 165 + 136 + 172 + 166 + 172 + 135 + 130 + 165 + 93 + 129 + 128 + 87 + 79 + 50 + 79 + 86 + 50 + 80 + 85 + 50 + 86 + 123 + 86 + 93 + 122 + 86 + 87 + 50 + 86 + 87 + 49 + 44 + 86 + 44 + 85 + 8 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 44 + 42 + 8 + 37 + 43 + 43 + 7 + 7 + 1 + 42 + 1 + 0 + 0 + 43 + 0 + 43 + 43 + 43 + 44 + 50 + 79 + 86 + 86 + 44 + 79 + 49 + 44 + 80 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 172 + 178 + 209 + 214 + 209 + 214 + 209 + 215 + 215 + 208 + 214 + 209 + 178 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 215 + 209 + 215 + 215 + 209 + 214 + 179 + 209 + 214 + 172 + 179 + 209 + 172 + 178 + 172 + 172 + 173 + 128 + 86 + 123 + 129 + 128 + 87 + 86 + 85 + 80 + 43 + 79 + 7 + 79 + 43 + 80 + 85 + 86 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 122 + 87 + 86 + 122 + 86 + 50 + 80 + 86 + 129 + 123 + 93 + 128 + 124 + 129 + 129 + 129 + 129 + 172 + 129 + 130 + 171 + 129 + 130 + 172 + 172 + 171 + 172 + 166 + 135 + 165 + 87 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 80 + 86 + 86 + 86 + 86 + 92 + 87 + 128 + 87 + 86 + 86 + 87 + 50 + 86 + 44 + 86 + 49 + 44 + 44 + 85 + 44 + 43 + 50 + 44 + 43 + 50 + 43 + 37 + 49 + 44 + 1 + 43 + 43 + 44 + 7 + 43 + 8 + 42 + 7 + 37 + 1 + 6 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 49 + 80 + 50 + 80 + 86 + 44 + 43 + 86 + 44 + 79 + 50 + 43 + 86 + 86 + 129 + 128 + 130 + 207 + 173 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 209 + 179 + 208 + 173 + 214 + 209 + 214 + 209 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 173 + 215 + 215 + 208 + 215 + 209 + 178 + 173 + 214 + 172 + 173 + 172 + 214 + 172 + 173 + 92 + 165 + 123 + 129 + 129 + 86 + 86 + 86 + 79 + 79 + 43 + 43 + 37 + 43 + 49 + 86 + 80 + 86 + 122 + 85 + 86 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 128 + 86 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 135 + 166 + 129 + 172 + 130 + 171 + 166 + 178 + 166 + 172 + 129 + 136 + 86 + 79 + 50 + 80 + 86 + 50 + 86 + 86 + 86 + 86 + 86 + 92 + 86 + 122 + 93 + 122 + 86 + 50 + 93 + 86 + 86 + 86 + 45 + 86 + 50 + 79 + 50 + 80 + 14 + 79 + 50 + 43 + 44 + 49 + 43 + 44 + 43 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 1 + 0 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 42 + 2 + 43 + 85 + 44 + 50 + 80 + 79 + 50 + 80 + 49 + 80 + 44 + 43 + 86 + 86 + 123 + 129 + 172 + 172 + 208 + 172 + 215 + 208 + 215 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 215 + 209 + 215 + 208 + 214 + 173 + 214 + 179 + 172 + 208 + 173 + 172 + 178 + 159 + 129 + 129 + 122 + 93 + 122 + 80 + 49 + 79 + 43 + 43 + 37 + 43 + 43 + 85 + 80 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 116 + 85 + 86 + 80 + 49 + 86 + 80 + 122 + 86 + 86 + 86 + 87 + 86 + 86 + 129 + 130 + 129 + 129 + 124 + 129 + 129 + 172 + 129 + 130 + 166 + 171 + 137 + 166 + 172 + 172 + 173 + 171 + 130 + 129 + 129 + 86 + 43 + 79 + 50 + 86 + 86 + 122 + 93 + 122 + 87 + 128 + 87 + 86 + 129 + 86 + 85 + 87 + 86 + 86 + 87 + 92 + 50 + 86 + 44 + 86 + 50 + 80 + 50 + 79 + 50 + 43 + 86 + 44 + 43 + 44 + 43 + 49 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 44 + 1 + 6 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 36 + 7 + 1 + 43 + 43 + 43 + 86 + 44 + 86 + 43 + 80 + 50 + 43 + 43 + 43 + 87 + 85 + 129 + 129 + 172 + 172 + 172 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 208 + 173 + 214 + 173 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 173 + 214 + 209 + 214 + 209 + 214 + 208 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 178 + 208 + 123 + 128 + 123 + 92 + 86 + 80 + 79 + 6 + 37 + 43 + 43 + 36 + 43 + 43 + 80 + 85 + 86 + 80 + 86 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 79 + 86 + 80 + 85 + 44 + 85 + 80 + 86 + 128 + 44 + 87 + 86 + 86 + 123 + 128 + 130 + 129 + 129 + 93 + 165 + 130 + 129 + 172 + 129 + 166 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 129 + 86 + 86 + 50 + 85 + 44 + 86 + 86 + 129 + 92 + 123 + 129 + 129 + 129 + 92 + 123 + 86 + 87 + 86 + 50 + 87 + 92 + 86 + 87 + 86 + 50 + 86 + 44 + 85 + 44 + 86 + 50 + 44 + 85 + 44 + 50 + 43 + 43 + 43 + 44 + 49 + 43 + 44 + 43 + 7 + 43 + 43 + 43 + 1 + 7 + 1 + 42 + 1 + 7 + 43 + 1 + 6 + 1 + 37 + 7 + 43 + 44 + 79 + 50 + 43 + 86 + 43 + 44 + 43 + 79 + 44 + 86 + 92 + 123 + 129 + 172 + 172 + 208 + 215 + 208 + 209 + 214 + 215 + 209 + 214 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 208 + 86 + 122 + 86 + 85 + 44 + 79 + 43 + 43 + 0 + 43 + 37 + 42 + 43 + 79 + 44 + 85 + 80 + 86 + 86 + 79 + 87 + 86 + 122 + 92 + 122 + 86 + 80 + 86 + 85 + 80 + 49 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 87 + 87 + 129 + 165 + 130 + 129 + 129 + 129 + 136 + 166 + 129 + 172 + 172 + 172 + 166 + 136 + 166 + 171 + 93 + 123 + 50 + 122 + 43 + 86 + 86 + 50 + 86 + 123 + 129 + 135 + 166 + 135 + 129 + 123 + 93 + 85 + 123 + 50 + 122 + 92 + 87 + 86 + 87 + 50 + 86 + 86 + 86 + 50 + 80 + 50 + 50 + 80 + 50 + 43 + 50 + 44 + 43 + 44 + 43 + 49 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 7 + 36 + 7 + 1 + 6 + 37 + 43 + 44 + 43 + 86 + 43 + 44 + 43 + 79 + 43 + 50 + 86 + 123 + 128 + 130 + 135 + 202 + 178 + 209 + 214 + 208 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 209 + 173 + 214 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 179 + 208 + 173 + 208 + 172 + 214 + 44 + 86 + 79 + 43 + 43 + 79 + 36 + 43 + 1 + 42 + 43 + 79 + 43 + 80 + 43 + 85 + 80 + 86 + 43 + 86 + 86 + 122 + 80 + 128 + 86 + 123 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 86 + 80 + 86 + 86 + 86 + 122 + 87 + 129 + 129 + 130 + 129 + 93 + 165 + 130 + 129 + 129 + 130 + 165 + 136 + 173 + 165 + 172 + 136 + 129 + 123 + 86 + 85 + 44 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 136 + 166 + 135 + 129 + 129 + 87 + 128 + 87 + 86 + 93 + 86 + 86 + 87 + 92 + 81 + 86 + 50 + 86 + 86 + 50 + 87 + 43 + 86 + 44 + 50 + 86 + 43 + 44 + 49 + 80 + 50 + 43 + 44 + 43 + 43 + 49 + 8 + 37 + 43 + 6 + 43 + 43 + 1 + 7 + 43 + 0 + 43 + 1 + 7 + 36 + 1 + 43 + 7 + 79 + 44 + 86 + 43 + 44 + 44 + 79 + 50 + 86 + 86 + 129 + 129 + 165 + 136 + 202 + 172 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 173 + 214 + 208 + 179 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 172 + 208 + 208 + 215 + 172 + 79 + 50 + 43 + 79 + 43 + 43 + 79 + 43 + 43 + 80 + 43 + 85 + 80 + 49 + 79 + 44 + 85 + 80 + 86 + 79 + 86 + 123 + 86 + 128 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 79 + 86 + 43 + 87 + 86 + 86 + 80 + 92 + 123 + 129 + 130 + 171 + 130 + 129 + 129 + 129 + 166 + 130 + 171 + 130 + 172 + 129 + 172 + 129 + 130 + 165 + 92 + 86 + 80 + 50 + 80 + 86 + 85 + 87 + 92 + 123 + 129 + 135 + 130 + 165 + 93 + 122 + 129 + 87 + 128 + 86 + 93 + 87 + 86 + 93 + 86 + 86 + 86 + 86 + 44 + 92 + 44 + 87 + 85 + 50 + 44 + 86 + 44 + 85 + 44 + 86 + 44 + 49 + 44 + 43 + 8 + 43 + 42 + 8 + 43 + 37 + 43 + 7 + 43 + 7 + 37 + 7 + 6 + 1 + 43 + 1 + 43 + 0 + 43 + 7 + 43 + 79 + 44 + 43 + 43 + 43 + 80 + 50 + 86 + 86 + 86 + 86 + 172 + 165 + 172 + 173 + 214 + 209 + 214 + 209 + 208 + 179 + 208 + 209 + 214 + 209 + 179 + 208 + 214 + 209 + 208 + 215 + 172 + 215 + 209 + 208 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 173 + 214 + 208 + 86 + 86 + 80 + 43 + 85 + 80 + 85 + 80 + 86 + 43 + 86 + 86 + 79 + 86 + 43 + 79 + 44 + 85 + 86 + 86 + 122 + 86 + 87 + 122 + 86 + 86 + 122 + 86 + 129 + 86 + 86 + 80 + 85 + 44 + 85 + 87 + 80 + 86 + 86 + 129 + 130 + 129 + 171 + 130 + 165 + 130 + 130 + 171 + 136 + 166 + 135 + 167 + 172 + 136 + 165 + 129 + 129 + 85 + 87 + 49 + 122 + 86 + 86 + 86 + 87 + 85 + 87 + 128 + 130 + 135 + 129 + 123 + 129 + 92 + 123 + 86 + 129 + 87 + 86 + 93 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 50 + 86 + 87 + 50 + 86 + 87 + 86 + 43 + 50 + 44 + 86 + 43 + 44 + 43 + 7 + 43 + 8 + 42 + 38 + 13 + 43 + 38 + 7 + 43 + 6 + 37 + 7 + 37 + 6 + 7 + 37 + 7 + 36 + 43 + 1 + 43 + 80 + 49 + 38 + 49 + 43 + 44 + 86 + 86 + 86 + 129 + 165 + 172 + 209 + 178 + 208 + 215 + 208 + 215 + 209 + 214 + 172 + 209 + 215 + 172 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 214 + 209 + 172 + 208 + 129 + 122 + 86 + 123 + 92 + 86 + 122 + 80 + 86 + 85 + 80 + 49 + 80 + 79 + 43 + 85 + 44 + 79 + 86 + 86 + 122 + 86 + 123 + 92 + 122 + 86 + 87 + 122 + 86 + 122 + 86 + 43 + 86 + 79 + 86 + 80 + 50 + 80 + 92 + 124 + 135 + 130 + 165 + 130 + 172 + 129 + 166 + 136 + 166 + 172 + 172 + 165 + 172 + 137 + 165 + 129 + 87 + 86 + 50 + 86 + 85 + 123 + 92 + 92 + 123 + 122 + 93 + 86 + 129 + 123 + 135 + 86 + 129 + 86 + 129 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 86 + 129 + 87 + 86 + 93 + 87 + 128 + 87 + 92 + 87 + 86 + 86 + 51 + 79 + 50 + 80 + 49 + 43 + 8 + 43 + 37 + 7 + 43 + 7 + 43 + 43 + 43 + 37 + 7 + 43 + 1 + 43 + 7 + 43 + 1 + 42 + 1 + 7 + 36 + 43 + 37 + 8 + 79 + 43 + 43 + 43 + 44 + 87 + 91 + 129 + 129 + 166 + 214 + 208 + 173 + 214 + 208 + 209 + 214 + 209 + 209 + 178 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 173 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 209 + 208 + 215 + 208 + 209 + 214 + 208 + 208 + 209 + 172 + 208 + 129 + 129 + 128 + 123 + 123 + 92 + 122 + 86 + 86 + 79 + 80 + 49 + 79 + 44 + 43 + 79 + 43 + 86 + 86 + 122 + 86 + 86 + 123 + 128 + 86 + 86 + 122 + 86 + 87 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 44 + 85 + 87 + 129 + 129 + 130 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 130 + 172 + 172 + 166 + 135 + 130 + 122 + 86 + 86 + 50 + 86 + 122 + 93 + 123 + 128 + 130 + 129 + 128 + 86 + 93 + 122 + 87 + 128 + 87 + 129 + 86 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 87 + 129 + 129 + 86 + 94 + 129 + 129 + 93 + 123 + 93 + 122 + 93 + 80 + 50 + 50 + 80 + 43 + 44 + 7 + 43 + 7 + 43 + 43 + 7 + 37 + 44 + 7 + 43 + 7 + 36 + 8 + 42 + 1 + 43 + 43 + 7 + 1 + 37 + 6 + 37 + 7 + 43 + 43 + 37 + 43 + 43 + 44 + 86 + 92 + 123 + 171 + 136 + 208 + 173 + 214 + 209 + 209 + 214 + 208 + 215 + 208 + 215 + 172 + 215 + 208 + 215 + 172 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 208 + 214 + 123 + 129 + 129 + 86 + 122 + 86 + 80 + 49 + 43 + 80 + 49 + 79 + 80 + 43 + 43 + 43 + 79 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 86 + 86 + 50 + 86 + 123 + 129 + 129 + 129 + 130 + 172 + 166 + 136 + 172 + 166 + 172 + 171 + 167 + 136 + 165 + 136 + 122 + 86 + 44 + 86 + 86 + 86 + 93 + 122 + 130 + 135 + 129 + 123 + 93 + 86 + 87 + 86 + 86 + 92 + 87 + 93 + 122 + 93 + 122 + 130 + 129 + 136 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 129 + 130 + 122 + 93 + 86 + 129 + 86 + 87 + 86 + 44 + 49 + 80 + 43 + 44 + 7 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 7 + 37 + 7 + 42 + 1 + 44 + 43 + 0 + 0 + 7 + 36 + 1 + 43 + 43 + 7 + 37 + 43 + 87 + 86 + 86 + 93 + 129 + 172 + 208 + 172 + 215 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 209 + 208 + 215 + 208 + 208 + 209 + 208 + 172 + 208 + 178 + 208 + 166 + 208 + 93 + 122 + 129 + 86 + 80 + 79 + 43 + 79 + 43 + 79 + 49 + 44 + 79 + 43 + 43 + 43 + 79 + 44 + 85 + 122 + 86 + 123 + 86 + 129 + 122 + 92 + 122 + 80 + 86 + 86 + 79 + 50 + 79 + 86 + 80 + 50 + 80 + 86 + 86 + 128 + 130 + 129 + 130 + 123 + 135 + 166 + 129 + 172 + 131 + 172 + 172 + 172 + 172 + 130 + 123 + 92 + 86 + 86 + 80 + 86 + 92 + 123 + 86 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 86 + 51 + 86 + 129 + 86 + 129 + 129 + 130 + 129 + 172 + 130 + 165 + 129 + 129 + 130 + 92 + 123 + 93 + 122 + 92 + 124 + 93 + 87 + 129 + 122 + 87 + 50 + 85 + 44 + 43 + 44 + 43 + 7 + 44 + 7 + 37 + 42 + 8 + 42 + 1 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 0 + 1 + 42 + 1 + 37 + 43 + 7 + 43 + 43 + 80 + 50 + 86 + 128 + 130 + 171 + 172 + 173 + 214 + 209 + 215 + 208 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 209 + 172 + 178 + 208 + 172 + 172 + 207 + 166 + 172 + 129 + 129 + 123 + 86 + 49 + 79 + 43 + 43 + 79 + 43 + 44 + 79 + 43 + 79 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 86 + 123 + 122 + 86 + 86 + 122 + 86 + 86 + 79 + 50 + 79 + 86 + 79 + 50 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 166 + 136 + 165 + 172 + 172 + 136 + 123 + 128 + 87 + 86 + 86 + 80 + 86 + 87 + 122 + 93 + 123 + 129 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 86 + 86 + 87 + 92 + 130 + 129 + 166 + 172 + 136 + 166 + 172 + 123 + 92 + 123 + 86 + 44 + 86 + 44 + 85 + 86 + 86 + 123 + 86 + 87 + 128 + 87 + 86 + 44 + 43 + 49 + 44 + 43 + 7 + 43 + 38 + 7 + 42 + 7 + 37 + 7 + 43 + 7 + 37 + 7 + 43 + 43 + 1 + 36 + 6 + 1 + 37 + 7 + 36 + 43 + 37 + 49 + 80 + 50 + 86 + 92 + 130 + 135 + 209 + 172 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 208 + 208 + 173 + 178 + 208 + 208 + 172 + 208 + 171 + 172 + 165 + 172 + 171 + 172 + 171 + 165 + 172 + 129 + 122 + 86 + 86 + 80 + 85 + 44 + 79 + 49 + 79 + 44 + 79 + 43 + 79 + 44 + 85 + 86 + 86 + 86 + 122 + 86 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 79 + 44 + 86 + 86 + 80 + 49 + 123 + 93 + 165 + 93 + 129 + 123 + 129 + 129 + 130 + 171 + 130 + 172 + 166 + 136 + 87 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 122 + 87 + 86 + 129 + 87 + 92 + 86 + 86 + 44 + 86 + 86 + 87 + 50 + 86 + 129 + 130 + 171 + 172 + 173 + 172 + 129 + 129 + 80 + 49 + 37 + 7 + 37 + 0 + 43 + 1 + 43 + 37 + 7 + 79 + 50 + 123 + 92 + 87 + 43 + 86 + 43 + 8 + 43 + 43 + 43 + 44 + 44 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 43 + 1 + 7 + 36 + 7 + 0 + 37 + 0 + 7 + 43 + 43 + 80 + 50 + 86 + 93 + 129 + 166 + 171 + 173 + 214 + 209 + 172 + 214 + 208 + 215 + 208 + 208 + 178 + 208 + 214 + 208 + 208 + 215 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 214 + 208 + 214 + 172 + 214 + 209 + 207 + 172 + 172 + 207 + 166 + 171 + 208 + 172 + 171 + 129 + 171 + 171 + 165 + 171 + 171 + 171 + 165 + 172 + 129 + 128 + 123 + 129 + 86 + 122 + 86 + 80 + 85 + 79 + 44 + 79 + 49 + 44 + 79 + 86 + 79 + 86 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 86 + 86 + 123 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 50 + 86 + 80 + 129 + 129 + 87 + 129 + 165 + 129 + 130 + 129 + 136 + 166 + 135 + 166 + 129 + 86 + 87 + 86 + 86 + 80 + 86 + 92 + 80 + 86 + 87 + 92 + 123 + 86 + 86 + 51 + 86 + 86 + 86 + 87 + 50 + 86 + 86 + 129 + 172 + 166 + 173 + 135 + 129 + 86 + 44 + 43 + 38 + 6 + 37 + 0 + 0 + 1 + 42 + 1 + 0 + 0 + 37 + 7 + 85 + 45 + 86 + 86 + 86 + 50 + 43 + 43 + 44 + 50 + 43 + 44 + 42 + 7 + 44 + 37 + 7 + 43 + 7 + 37 + 43 + 7 + 7 + 37 + 0 + 37 + 6 + 0 + 1 + 37 + 43 + 50 + 43 + 44 + 86 + 92 + 129 + 165 + 136 + 172 + 214 + 173 + 208 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 208 + 172 + 208 + 172 + 208 + 171 + 171 + 208 + 171 + 172 + 171 + 207 + 135 + 165 + 171 + 171 + 171 + 165 + 171 + 171 + 165 + 134 + 172 + 128 + 172 + 134 + 166 + 171 + 166 + 135 + 165 + 130 + 128 + 123 + 93 + 122 + 86 + 79 + 44 + 79 + 49 + 43 + 79 + 44 + 85 + 80 + 86 + 122 + 86 + 86 + 129 + 86 + 122 + 86 + 122 + 93 + 123 + 128 + 86 + 80 + 86 + 43 + 50 + 80 + 86 + 80 + 50 + 122 + 129 + 130 + 129 + 130 + 129 + 135 + 130 + 165 + 130 + 165 + 129 + 93 + 123 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 123 + 92 + 86 + 86 + 81 + 86 + 50 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 136 + 165 + 173 + 172 + 93 + 80 + 0 + 43 + 0 + 1 + 43 + 37 + 7 + 36 + 7 + 36 + 1 + 0 + 1 + 36 + 6 + 1 + 43 + 44 + 86 + 86 + 87 + 49 + 44 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 42 + 1 + 0 + 44 + 43 + 43 + 49 + 86 + 129 + 129 + 130 + 171 + 173 + 172 + 208 + 172 + 214 + 173 + 208 + 178 + 209 + 172 + 208 + 178 + 209 + 172 + 214 + 172 + 202 + 171 + 172 + 207 + 172 + 171 + 171 + 171 + 171 + 172 + 164 + 171 + 165 + 165 + 134 + 171 + 165 + 171 + 165 + 171 + 128 + 171 + 128 + 171 + 170 + 129 + 171 + 135 + 165 + 129 + 166 + 135 + 159 + 129 + 129 + 129 + 122 + 86 + 86 + 43 + 79 + 43 + 86 + 43 + 80 + 85 + 86 + 86 + 123 + 86 + 122 + 92 + 122 + 87 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 79 + 44 + 43 + 86 + 44 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 87 + 86 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 87 + 123 + 86 + 86 + 50 + 80 + 50 + 43 + 87 + 86 + 93 + 87 + 128 + 93 + 166 + 172 + 172 + 130 + 43 + 1 + 42 + 1 + 6 + 37 + 80 + 7 + 43 + 37 + 7 + 37 + 43 + 43 + 0 + 1 + 42 + 1 + 0 + 43 + 43 + 44 + 86 + 87 + 50 + 49 + 80 + 44 + 49 + 44 + 43 + 43 + 7 + 43 + 37 + 44 + 7 + 43 + 50 + 37 + 43 + 7 + 37 + 43 + 7 + 37 + 43 + 44 + 43 + 44 + 85 + 87 + 129 + 93 + 172 + 130 + 171 + 172 + 208 + 172 + 172 + 171 + 171 + 172 + 201 + 172 + 171 + 171 + 171 + 166 + 135 + 208 + 172 + 165 + 166 + 170 + 129 + 170 + 165 + 129 + 170 + 165 + 128 + 171 + 129 + 164 + 165 + 134 + 165 + 128 + 165 + 134 + 165 + 134 + 165 + 129 + 134 + 165 + 134 + 171 + 122 + 129 + 129 + 129 + 123 + 129 + 165 + 86 + 122 + 86 + 50 + 43 + 79 + 80 + 85 + 43 + 80 + 86 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 129 + 86 + 122 + 123 + 128 + 86 + 86 + 86 + 80 + 43 + 86 + 44 + 86 + 86 + 129 + 122 + 93 + 166 + 93 + 129 + 123 + 129 + 129 + 129 + 130 + 129 + 129 + 86 + 87 + 80 + 86 + 92 + 87 + 122 + 129 + 87 + 129 + 86 + 87 + 122 + 50 + 86 + 44 + 86 + 50 + 86 + 129 + 87 + 129 + 136 + 129 + 166 + 129 + 43 + 0 + 1 + 43 + 37 + 43 + 50 + 86 + 80 + 85 + 44 + 87 + 122 + 92 + 81 + 49 + 38 + 43 + 0 + 0 + 1 + 42 + 44 + 43 + 87 + 85 + 51 + 80 + 50 + 79 + 50 + 43 + 44 + 7 + 44 + 7 + 43 + 43 + 50 + 80 + 7 + 37 + 7 + 36 + 43 + 1 + 42 + 44 + 43 + 37 + 7 + 85 + 86 + 93 + 129 + 129 + 130 + 171 + 166 + 172 + 171 + 166 + 136 + 172 + 165 + 136 + 172 + 172 + 171 + 165 + 136 + 165 + 171 + 165 + 171 + 165 + 166 + 134 + 165 + 128 + 165 + 170 + 129 + 164 + 135 + 171 + 128 + 171 + 164 + 129 + 170 + 135 + 164 + 135 + 165 + 134 + 165 + 134 + 165 + 134 + 171 + 80 + 86 + 128 + 123 + 128 + 87 + 122 + 86 + 86 + 43 + 79 + 44 + 85 + 80 + 49 + 79 + 44 + 122 + 86 + 122 + 93 + 122 + 122 + 93 + 122 + 87 + 128 + 123 + 86 + 128 + 86 + 123 + 79 + 50 + 44 + 79 + 86 + 86 + 86 + 81 + 92 + 86 + 129 + 88 + 128 + 123 + 129 + 93 + 123 + 165 + 129 + 93 + 87 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 128 + 87 + 86 + 86 + 87 + 86 + 80 + 86 + 50 + 87 + 92 + 87 + 165 + 136 + 137 + 165 + 92 + 38 + 6 + 0 + 37 + 43 + 43 + 86 + 87 + 128 + 87 + 129 + 129 + 130 + 123 + 129 + 87 + 128 + 86 + 86 + 1 + 43 + 0 + 0 + 1 + 43 + 50 + 86 + 86 + 50 + 81 + 50 + 86 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 50 + 79 + 7 + 43 + 43 + 37 + 7 + 43 + 0 + 80 + 7 + 36 + 43 + 50 + 85 + 87 + 92 + 129 + 130 + 129 + 171 + 166 + 165 + 172 + 135 + 166 + 170 + 136 + 166 + 171 + 136 + 171 + 165 + 136 + 171 + 202 + 171 + 172 + 165 + 134 + 166 + 164 + 171 + 171 + 165 + 171 + 165 + 135 + 171 + 171 + 165 + 171 + 171 + 165 + 171 + 171 + 165 + 170 + 135 + 165 + 171 + 171 + 135 + 80 + 86 + 86 + 122 + 87 + 128 + 79 + 50 + 43 + 79 + 43 + 79 + 43 + 80 + 49 + 79 + 44 + 86 + 122 + 86 + 129 + 122 + 87 + 128 + 123 + 86 + 86 + 128 + 123 + 86 + 86 + 86 + 79 + 86 + 79 + 43 + 50 + 80 + 86 + 87 + 128 + 123 + 93 + 129 + 129 + 123 + 129 + 93 + 130 + 165 + 129 + 87 + 86 + 122 + 50 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 80 + 50 + 79 + 50 + 86 + 87 + 86 + 86 + 93 + 129 + 130 + 172 + 172 + 129 + 44 + 7 + 36 + 7 + 80 + 43 + 129 + 123 + 136 + 129 + 130 + 122 + 129 + 87 + 128 + 87 + 86 + 129 + 129 + 123 + 43 + 7 + 0 + 1 + 36 + 7 + 43 + 86 + 45 + 86 + 86 + 86 + 50 + 86 + 44 + 49 + 80 + 50 + 43 + 8 + 79 + 49 + 44 + 7 + 37 + 43 + 43 + 0 + 43 + 44 + 37 + 7 + 43 + 85 + 51 + 86 + 129 + 129 + 172 + 129 + 165 + 172 + 130 + 172 + 171 + 172 + 172 + 135 + 172 + 171 + 172 + 171 + 166 + 178 + 172 + 207 + 172 + 208 + 172 + 207 + 172 + 208 + 171 + 172 + 207 + 172 + 207 + 172 + 172 + 207 + 172 + 207 + 172 + 171 + 208 + 135 + 165 + 172 + 172 + 171 + 172 + 165 + 171 + 79 + 86 + 86 + 86 + 122 + 86 + 43 + 43 + 37 + 42 + 37 + 43 + 49 + 79 + 43 + 37 + 79 + 86 + 86 + 129 + 122 + 87 + 128 + 87 + 122 + 128 + 86 + 123 + 86 + 86 + 86 + 86 + 79 + 86 + 80 + 50 + 43 + 86 + 86 + 123 + 123 + 93 + 129 + 166 + 129 + 93 + 129 + 129 + 129 + 166 + 93 + 122 + 87 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 87 + 86 + 80 + 43 + 50 + 79 + 50 + 86 + 87 + 93 + 129 + 166 + 136 + 130 + 136 + 43 + 37 + 1 + 43 + 79 + 92 + 87 + 123 + 129 + 93 + 123 + 86 + 128 + 87 + 86 + 122 + 93 + 86 + 87 + 122 + 51 + 79 + 0 + 7 + 0 + 36 + 1 + 7 + 80 + 49 + 87 + 86 + 50 + 80 + 86 + 50 + 86 + 44 + 43 + 50 + 43 + 80 + 49 + 43 + 44 + 43 + 37 + 7 + 43 + 43 + 44 + 36 + 44 + 43 + 50 + 86 + 93 + 129 + 165 + 136 + 129 + 172 + 207 + 173 + 208 + 172 + 179 + 208 + 179 + 171 + 178 + 172 + 172 + 173 + 178 + 172 + 208 + 209 + 208 + 215 + 208 + 171 + 209 + 207 + 214 + 172 + 171 + 208 + 172 + 207 + 172 + 208 + 171 + 208 + 171 + 172 + 208 + 172 + 171 + 172 + 171 + 172 + 166 + 172 + 85 + 86 + 86 + 122 + 80 + 50 + 79 + 36 + 43 + 7 + 79 + 43 + 80 + 79 + 43 + 43 + 43 + 79 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 87 + 122 + 92 + 122 + 86 + 87 + 85 + 116 + 86 + 43 + 43 + 86 + 44 + 86 + 123 + 92 + 123 + 129 + 94 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 87 + 92 + 123 + 86 + 87 + 86 + 93 + 87 + 86 + 86 + 44 + 80 + 50 + 43 + 43 + 87 + 86 + 87 + 92 + 130 + 135 + 130 + 135 + 123 + 7 + 0 + 37 + 43 + 87 + 129 + 123 + 129 + 93 + 123 + 87 + 80 + 50 + 86 + 80 + 43 + 86 + 87 + 80 + 50 + 79 + 44 + 0 + 7 + 36 + 0 + 1 + 6 + 80 + 44 + 86 + 86 + 43 + 87 + 86 + 86 + 50 + 86 + 44 + 80 + 49 + 80 + 50 + 43 + 44 + 79 + 7 + 37 + 43 + 86 + 7 + 37 + 79 + 7 + 50 + 86 + 166 + 99 + 166 + 136 + 172 + 172 + 178 + 208 + 173 + 214 + 208 + 214 + 173 + 214 + 208 + 178 + 173 + 207 + 173 + 208 + 172 + 208 + 214 + 208 + 172 + 208 + 172 + 208 + 171 + 208 + 172 + 178 + 208 + 172 + 171 + 173 + 207 + 171 + 173 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 165 + 93 + 122 + 86 + 86 + 79 + 50 + 79 + 37 + 42 + 43 + 44 + 79 + 86 + 43 + 43 + 36 + 43 + 79 + 86 + 122 + 93 + 122 + 123 + 92 + 122 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 86 + 86 + 43 + 80 + 50 + 79 + 86 + 87 + 86 + 86 + 122 + 93 + 123 + 92 + 87 + 129 + 93 + 129 + 130 + 86 + 86 + 86 + 87 + 86 + 87 + 92 + 87 + 86 + 86 + 50 + 80 + 43 + 50 + 44 + 86 + 87 + 128 + 93 + 130 + 165 + 136 + 129 + 50 + 37 + 0 + 7 + 79 + 44 + 130 + 123 + 129 + 86 + 86 + 86 + 44 + 43 + 44 + 79 + 44 + 44 + 43 + 86 + 80 + 44 + 43 + 0 + 1 + 36 + 7 + 0 + 1 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 79 + 50 + 86 + 44 + 86 + 79 + 50 + 80 + 7 + 43 + 80 + 43 + 43 + 43 + 43 + 37 + 87 + 135 + 130 + 135 + 166 + 172 + 136 + 172 + 208 + 179 + 172 + 208 + 214 + 173 + 214 + 208 + 173 + 214 + 172 + 208 + 172 + 209 + 208 + 178 + 172 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 172 + 172 + 136 + 172 + 172 + 135 + 172 + 136 + 172 + 172 + 136 + 171 + 123 + 86 + 86 + 86 + 86 + 43 + 43 + 36 + 43 + 43 + 79 + 80 + 49 + 80 + 42 + 37 + 43 + 43 + 86 + 122 + 93 + 122 + 129 + 122 + 87 + 86 + 128 + 123 + 86 + 86 + 122 + 86 + 79 + 86 + 44 + 43 + 86 + 86 + 86 + 81 + 86 + 86 + 86 + 87 + 92 + 87 + 86 + 86 + 93 + 123 + 86 + 50 + 87 + 49 + 87 + 86 + 87 + 93 + 86 + 86 + 87 + 50 + 86 + 86 + 50 + 87 + 86 + 123 + 93 + 135 + 166 + 136 + 172 + 87 + 43 + 0 + 7 + 0 + 37 + 44 + 122 + 94 + 122 + 88 + 80 + 43 + 43 + 1 + 43 + 1 + 43 + 43 + 43 + 44 + 80 + 7 + 37 + 0 + 43 + 0 + 1 + 0 + 36 + 7 + 37 + 50 + 79 + 87 + 85 + 44 + 86 + 86 + 86 + 86 + 80 + 87 + 86 + 86 + 50 + 80 + 86 + 43 + 44 + 86 + 43 + 43 + 37 + 43 + 43 + 93 + 129 + 130 + 129 + 136 + 166 + 135 + 173 + 172 + 136 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 178 + 208 + 173 + 208 + 172 + 209 + 178 + 208 + 208 + 173 + 172 + 207 + 173 + 208 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 172 + 135 + 172 + 172 + 130 + 172 + 129 + 129 + 122 + 79 + 86 + 43 + 43 + 37 + 43 + 43 + 79 + 43 + 86 + 43 + 42 + 37 + 37 + 43 + 86 + 86 + 128 + 123 + 128 + 86 + 123 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 80 + 49 + 80 + 43 + 86 + 86 + 123 + 92 + 87 + 86 + 86 + 87 + 122 + 93 + 86 + 87 + 93 + 129 + 86 + 50 + 81 + 50 + 86 + 92 + 87 + 122 + 93 + 50 + 122 + 50 + 87 + 86 + 87 + 128 + 93 + 88 + 171 + 131 + 172 + 135 + 130 + 87 + 6 + 37 + 0 + 7 + 0 + 37 + 86 + 86 + 81 + 86 + 43 + 37 + 7 + 36 + 8 + 36 + 43 + 1 + 43 + 44 + 37 + 43 + 43 + 0 + 37 + 0 + 1 + 6 + 0 + 1 + 36 + 44 + 50 + 80 + 79 + 50 + 86 + 80 + 86 + 86 + 86 + 87 + 86 + 87 + 86 + 86 + 44 + 86 + 86 + 80 + 43 + 43 + 43 + 7 + 80 + 92 + 123 + 86 + 93 + 93 + 130 + 172 + 130 + 172 + 208 + 179 + 173 + 214 + 209 + 214 + 173 + 208 + 214 + 173 + 208 + 172 + 172 + 208 + 179 + 208 + 173 + 172 + 208 + 173 + 172 + 202 + 172 + 173 + 172 + 178 + 172 + 172 + 136 + 171 + 173 + 135 + 173 + 136 + 171 + 166 + 136 + 172 + 136 + 172 + 171 + 129 + 87 + 128 + 80 + 86 + 86 + 43 + 79 + 43 + 79 + 43 + 43 + 79 + 1 + 43 + 0 + 43 + 37 + 85 + 86 + 122 + 123 + 86 + 129 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 86 + 79 + 50 + 80 + 79 + 51 + 128 + 87 + 129 + 123 + 86 + 87 + 92 + 124 + 92 + 87 + 129 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 87 + 93 + 86 + 86 + 51 + 86 + 86 + 86 + 129 + 94 + 129 + 129 + 136 + 130 + 171 + 130 + 129 + 87 + 0 + 1 + 42 + 1 + 37 + 7 + 80 + 43 + 44 + 43 + 43 + 1 + 42 + 1 + 37 + 6 + 38 + 42 + 1 + 37 + 43 + 1 + 43 + 1 + 36 + 6 + 1 + 0 + 0 + 0 + 37 + 7 + 43 + 43 + 80 + 50 + 80 + 85 + 87 + 80 + 50 + 122 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 43 + 80 + 43 + 44 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 130 + 172 + 178 + 173 + 173 + 214 + 209 + 178 + 209 + 172 + 215 + 209 + 214 + 172 + 209 + 172 + 173 + 214 + 172 + 209 + 172 + 172 + 173 + 208 + 173 + 166 + 178 + 136 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 136 + 171 + 136 + 166 + 135 + 166 + 136 + 136 + 172 + 129 + 122 + 86 + 122 + 87 + 49 + 79 + 86 + 43 + 80 + 43 + 43 + 42 + 79 + 1 + 1 + 36 + 43 + 79 + 86 + 86 + 86 + 123 + 128 + 86 + 86 + 123 + 122 + 93 + 122 + 86 + 86 + 79 + 86 + 43 + 80 + 86 + 93 + 123 + 129 + 86 + 86 + 87 + 122 + 93 + 87 + 93 + 122 + 93 + 86 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 129 + 130 + 136 + 165 + 136 + 130 + 135 + 123 + 50 + 1 + 43 + 1 + 36 + 7 + 43 + 44 + 37 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 36 + 1 + 7 + 37 + 36 + 7 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 37 + 44 + 43 + 86 + 44 + 86 + 86 + 86 + 80 + 92 + 44 + 86 + 86 + 44 + 86 + 122 + 87 + 50 + 43 + 79 + 44 + 50 + 128 + 45 + 86 + 92 + 123 + 129 + 136 + 136 + 166 + 179 + 208 + 179 + 209 + 179 + 208 + 215 + 172 + 215 + 209 + 178 + 173 + 208 + 173 + 208 + 173 + 179 + 208 + 173 + 172 + 172 + 166 + 172 + 173 + 178 + 172 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 172 + 172 + 136 + 130 + 171 + 136 + 171 + 130 + 172 + 165 + 128 + 129 + 129 + 86 + 122 + 44 + 85 + 79 + 44 + 79 + 43 + 43 + 43 + 42 + 1 + 37 + 42 + 80 + 49 + 122 + 87 + 86 + 122 + 86 + 122 + 86 + 86 + 122 + 87 + 86 + 85 + 80 + 49 + 80 + 86 + 87 + 128 + 87 + 129 + 129 + 87 + 128 + 87 + 123 + 93 + 128 + 87 + 50 + 86 + 50 + 80 + 50 + 86 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 92 + 87 + 86 + 129 + 129 + 136 + 130 + 135 + 166 + 130 + 135 + 87 + 7 + 37 + 6 + 1 + 36 + 7 + 37 + 7 + 37 + 43 + 0 + 37 + 1 + 42 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 37 + 7 + 43 + 44 + 79 + 49 + 80 + 50 + 86 + 80 + 87 + 86 + 85 + 81 + 92 + 86 + 80 + 50 + 86 + 80 + 86 + 129 + 86 + 44 + 86 + 51 + 86 + 129 + 129 + 130 + 172 + 173 + 178 + 173 + 172 + 208 + 179 + 173 + 209 + 178 + 209 + 173 + 214 + 173 + 173 + 214 + 173 + 208 + 173 + 172 + 172 + 179 + 208 + 172 + 172 + 172 + 179 + 136 + 172 + 208 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 171 + 172 + 136 + 172 + 136 + 166 + 135 + 166 + 122 + 93 + 122 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 42 + 37 + 43 + 36 + 7 + 37 + 79 + 85 + 80 + 92 + 86 + 122 + 86 + 87 + 86 + 122 + 86 + 86 + 80 + 85 + 80 + 49 + 80 + 86 + 129 + 123 + 129 + 129 + 93 + 123 + 86 + 129 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 80 + 50 + 86 + 50 + 86 + 123 + 50 + 87 + 86 + 92 + 87 + 86 + 129 + 93 + 130 + 129 + 136 + 172 + 166 + 136 + 93 + 86 + 43 + 1 + 43 + 0 + 0 + 1 + 43 + 1 + 36 + 7 + 37 + 0 + 43 + 0 + 1 + 36 + 1 + 0 + 0 + 43 + 1 + 36 + 7 + 1 + 36 + 7 + 37 + 0 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 43 + 7 + 79 + 44 + 86 + 86 + 87 + 85 + 80 + 87 + 43 + 86 + 87 + 86 + 85 + 80 + 86 + 87 + 129 + 129 + 43 + 80 + 50 + 86 + 93 + 129 + 129 + 172 + 172 + 173 + 172 + 179 + 173 + 172 + 173 + 209 + 178 + 173 + 209 + 179 + 172 + 209 + 179 + 172 + 173 + 215 + 172 + 172 + 173 + 172 + 173 + 178 + 173 + 172 + 178 + 172 + 172 + 173 + 135 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 136 + 172 + 166 + 136 + 171 + 130 + 165 + 86 + 128 + 86 + 80 + 85 + 80 + 43 + 43 + 43 + 43 + 79 + 42 + 1 + 37 + 6 + 37 + 79 + 49 + 80 + 86 + 86 + 123 + 85 + 86 + 80 + 122 + 86 + 86 + 86 + 86 + 79 + 80 + 86 + 92 + 124 + 129 + 129 + 129 + 123 + 93 + 86 + 124 + 92 + 86 + 50 + 87 + 86 + 50 + 80 + 50 + 43 + 86 + 44 + 92 + 86 + 87 + 86 + 51 + 87 + 128 + 87 + 129 + 129 + 130 + 135 + 173 + 166 + 136 + 130 + 129 + 50 + 37 + 6 + 1 + 36 + 1 + 42 + 1 + 37 + 6 + 37 + 1 + 42 + 1 + 0 + 1 + 36 + 7 + 0 + 37 + 0 + 43 + 1 + 36 + 1 + 43 + 1 + 0 + 43 + 0 + 43 + 1 + 36 + 0 + 1 + 0 + 43 + 1 + 43 + 79 + 50 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 44 + 86 + 129 + 123 + 93 + 79 + 50 + 86 + 87 + 86 + 172 + 130 + 172 + 173 + 172 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 209 + 173 + 179 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 178 + 209 + 172 + 172 + 173 + 172 + 136 + 178 + 173 + 172 + 135 + 172 + 166 + 136 + 172 + 135 + 172 + 172 + 130 + 172 + 135 + 172 + 136 + 172 + 128 + 87 + 122 + 86 + 85 + 80 + 86 + 43 + 86 + 43 + 43 + 36 + 43 + 37 + 42 + 1 + 43 + 37 + 42 + 43 + 80 + 49 + 122 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 86 + 80 + 85 + 86 + 86 + 86 + 129 + 129 + 123 + 130 + 86 + 87 + 128 + 86 + 123 + 86 + 51 + 86 + 50 + 79 + 50 + 44 + 50 + 79 + 86 + 51 + 86 + 86 + 92 + 87 + 129 + 93 + 123 + 129 + 130 + 135 + 136 + 166 + 136 + 166 + 93 + 86 + 49 + 37 + 7 + 0 + 43 + 38 + 43 + 7 + 36 + 1 + 43 + 0 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 36 + 7 + 37 + 0 + 1 + 42 + 1 + 1 + 42 + 1 + 37 + 0 + 0 + 7 + 36 + 1 + 36 + 7 + 43 + 44 + 86 + 86 + 86 + 80 + 86 + 87 + 86 + 86 + 86 + 80 + 86 + 86 + 130 + 122 + 50 + 86 + 86 + 86 + 87 + 93 + 166 + 136 + 172 + 172 + 173 + 178 + 173 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 173 + 208 + 179 + 173 + 173 + 172 + 178 + 173 + 172 + 137 + 208 + 173 + 142 + 172 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 172 + 136 + 165 + 136 + 172 + 172 + 172 + 86 + 86 + 79 + 86 + 86 + 79 + 86 + 44 + 79 + 43 + 43 + 43 + 42 + 37 + 43 + 0 + 43 + 37 + 42 + 43 + 43 + 80 + 79 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 85 + 86 + 86 + 80 + 86 + 123 + 93 + 129 + 123 + 86 + 87 + 86 + 86 + 92 + 123 + 87 + 92 + 81 + 49 + 50 + 44 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 93 + 129 + 123 + 94 + 129 + 135 + 130 + 172 + 130 + 171 + 136 + 123 + 93 + 44 + 43 + 0 + 7 + 43 + 44 + 43 + 43 + 37 + 43 + 1 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 37 + 0 + 6 + 1 + 0 + 37 + 7 + 36 + 1 + 0 + 0 + 1 + 42 + 1 + 36 + 1 + 43 + 43 + 86 + 44 + 86 + 86 + 86 + 87 + 86 + 86 + 80 + 50 + 122 + 123 + 92 + 44 + 86 + 86 + 86 + 87 + 86 + 130 + 135 + 130 + 171 + 137 + 208 + 173 + 178 + 173 + 173 + 173 + 173 + 173 + 172 + 179 + 173 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 172 + 173 + 136 + 179 + 172 + 171 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 172 + 130 + 172 + 136 + 171 + 172 + 136 + 172 + 172 + 80 + 49 + 80 + 85 + 44 + 86 + 79 + 50 + 79 + 1 + 42 + 43 + 37 + 42 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 86 + 43 + 86 + 80 + 86 + 85 + 86 + 44 + 86 + 85 + 80 + 86 + 86 + 86 + 86 + 87 + 128 + 87 + 85 + 44 + 86 + 86 + 86 + 123 + 87 + 92 + 50 + 86 + 44 + 86 + 43 + 87 + 86 + 93 + 86 + 93 + 123 + 92 + 129 + 130 + 129 + 130 + 135 + 130 + 130 + 172 + 136 + 166 + 92 + 86 + 80 + 7 + 0 + 43 + 1 + 86 + 44 + 37 + 7 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 1 + 42 + 0 + 1 + 0 + 1 + 36 + 7 + 0 + 0 + 37 + 1 + 43 + 43 + 0 + 0 + 1 + 36 + 7 + 38 + 6 + 1 + 36 + 43 + 50 + 80 + 86 + 50 + 87 + 122 + 50 + 80 + 85 + 87 + 129 + 87 + 86 + 43 + 86 + 86 + 44 + 86 + 130 + 135 + 165 + 129 + 130 + 172 + 172 + 172 + 179 + 173 + 172 + 173 + 173 + 208 + 173 + 173 + 172 + 173 + 179 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 130 + 178 + 167 + 178 + 166 + 178 + 130 + 171 + 136 + 172 + 172 + 135 + 172 + 135 + 166 + 136 + 171 + 136 + 172 + 172 + 135 + 80 + 85 + 44 + 79 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 43 + 37 + 6 + 37 + 0 + 43 + 0 + 1 + 43 + 43 + 43 + 79 + 50 + 79 + 50 + 80 + 85 + 50 + 80 + 86 + 44 + 85 + 86 + 44 + 86 + 86 + 86 + 85 + 80 + 50 + 79 + 50 + 87 + 86 + 129 + 86 + 87 + 50 + 80 + 49 + 44 + 86 + 86 + 93 + 86 + 86 + 94 + 123 + 129 + 135 + 130 + 129 + 94 + 165 + 136 + 166 + 135 + 166 + 93 + 80 + 50 + 36 + 1 + 7 + 44 + 80 + 43 + 7 + 1 + 36 + 7 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 1 + 36 + 7 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 50 + 80 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 1 + 42 + 44 + 49 + 80 + 43 + 86 + 86 + 87 + 49 + 80 + 93 + 122 + 129 + 86 + 43 + 50 + 80 + 43 + 122 + 136 + 87 + 86 + 171 + 130 + 129 + 136 + 166 + 178 + 172 + 209 + 173 + 173 + 208 + 173 + 173 + 173 + 215 + 173 + 208 + 173 + 179 + 173 + 172 + 173 + 172 + 173 + 178 + 172 + 166 + 136 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 166 + 172 + 135 + 166 + 135 + 172 + 135 + 172 + 129 + 172 + 135 + 86 + 79 + 86 + 44 + 86 + 79 + 50 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 36 + 6 + 1 + 37 + 6 + 37 + 7 + 43 + 85 + 44 + 79 + 50 + 86 + 43 + 86 + 44 + 85 + 43 + 43 + 44 + 49 + 80 + 43 + 43 + 79 + 86 + 87 + 86 + 86 + 92 + 122 + 87 + 93 + 50 + 86 + 44 + 86 + 44 + 86 + 50 + 86 + 87 + 92 + 123 + 93 + 129 + 87 + 130 + 129 + 135 + 130 + 172 + 129 + 130 + 129 + 86 + 86 + 1 + 37 + 7 + 37 + 79 + 7 + 43 + 8 + 37 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 6 + 1 + 0 + 37 + 0 + 0 + 7 + 37 + 0 + 43 + 44 + 86 + 86 + 44 + 85 + 44 + 86 + 80 + 50 + 86 + 43 + 80 + 86 + 43 + 43 + 43 + 50 + 86 + 79 + 50 + 86 + 129 + 123 + 86 + 43 + 86 + 50 + 79 + 50 + 165 + 43 + 86 + 130 + 128 + 87 + 129 + 129 + 165 + 172 + 172 + 173 + 215 + 209 + 173 + 173 + 209 + 178 + 209 + 173 + 209 + 179 + 173 + 172 + 179 + 172 + 173 + 172 + 173 + 172 + 172 + 137 + 171 + 136 + 172 + 136 + 172 + 172 + 135 + 172 + 130 + 135 + 172 + 165 + 136 + 172 + 129 + 171 + 171 + 136 + 86 + 80 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 42 + 1 + 6 + 37 + 0 + 43 + 7 + 37 + 43 + 43 + 49 + 80 + 49 + 80 + 49 + 80 + 50 + 79 + 43 + 43 + 7 + 43 + 37 + 43 + 49 + 86 + 87 + 122 + 92 + 123 + 86 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 80 + 50 + 87 + 86 + 92 + 87 + 87 + 129 + 93 + 122 + 94 + 129 + 136 + 130 + 171 + 130 + 129 + 129 + 86 + 44 + 0 + 43 + 43 + 37 + 7 + 36 + 8 + 37 + 6 + 1 + 43 + 1 + 6 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 1 + 0 + 37 + 6 + 1 + 43 + 43 + 44 + 80 + 86 + 86 + 87 + 128 + 87 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 43 + 85 + 87 + 129 + 86 + 86 + 86 + 44 + 43 + 86 + 129 + 86 + 86 + 86 + 129 + 86 + 86 + 86 + 87 + 171 + 130 + 172 + 173 + 172 + 209 + 173 + 172 + 173 + 173 + 173 + 208 + 173 + 215 + 172 + 173 + 179 + 172 + 173 + 172 + 172 + 172 + 137 + 171 + 172 + 136 + 171 + 136 + 172 + 135 + 166 + 136 + 171 + 135 + 130 + 171 + 136 + 164 + 136 + 171 + 129 + 172 + 86 + 86 + 122 + 50 + 79 + 44 + 43 + 43 + 43 + 43 + 6 + 37 + 7 + 0 + 36 + 1 + 7 + 42 + 37 + 7 + 43 + 36 + 43 + 44 + 49 + 80 + 43 + 50 + 79 + 49 + 80 + 43 + 43 + 43 + 7 + 79 + 50 + 122 + 129 + 129 + 130 + 129 + 129 + 86 + 129 + 87 + 92 + 50 + 81 + 49 + 86 + 87 + 86 + 86 + 93 + 122 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 172 + 129 + 130 + 136 + 129 + 80 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 43 + 37 + 7 + 1 + 43 + 43 + 0 + 1 + 0 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 7 + 37 + 44 + 86 + 85 + 87 + 86 + 86 + 123 + 129 + 86 + 130 + 128 + 124 + 129 + 129 + 129 + 128 + 123 + 93 + 86 + 86 + 122 + 43 + 43 + 80 + 91 + 93 + 86 + 80 + 85 + 44 + 86 + 93 + 122 + 86 + 86 + 93 + 80 + 43 + 85 + 44 + 86 + 129 + 129 + 172 + 129 + 172 + 167 + 172 + 179 + 172 + 173 + 208 + 173 + 173 + 172 + 209 + 179 + 172 + 173 + 142 + 172 + 173 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 135 + 171 + 130 + 171 + 135 + 135 + 129 + 171 + 129 + 136 + 165 + 136 + 165 + 135 + 165 + 86 + 123 + 85 + 50 + 80 + 49 + 44 + 43 + 43 + 43 + 0 + 43 + 37 + 6 + 0 + 1 + 43 + 0 + 43 + 37 + 6 + 37 + 7 + 49 + 80 + 43 + 86 + 43 + 50 + 79 + 44 + 43 + 85 + 44 + 79 + 86 + 92 + 130 + 171 + 129 + 130 + 171 + 129 + 129 + 87 + 128 + 87 + 50 + 86 + 86 + 86 + 87 + 86 + 93 + 87 + 129 + 130 + 93 + 129 + 129 + 129 + 93 + 130 + 130 + 171 + 130 + 129 + 129 + 87 + 79 + 1 + 43 + 37 + 7 + 0 + 37 + 43 + 44 + 42 + 1 + 43 + 44 + 43 + 0 + 43 + 1 + 0 + 1 + 36 + 7 + 36 + 1 + 0 + 43 + 44 + 86 + 80 + 86 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 171 + 129 + 129 + 165 + 129 + 87 + 86 + 165 + 93 + 85 + 80 + 129 + 86 + 86 + 86 + 43 + 79 + 86 + 129 + 129 + 86 + 92 + 86 + 80 + 49 + 80 + 50 + 122 + 129 + 129 + 123 + 93 + 129 + 129 + 172 + 209 + 173 + 214 + 172 + 173 + 173 + 208 + 173 + 179 + 172 + 179 + 172 + 208 + 179 + 172 + 136 + 172 + 172 + 136 + 171 + 136 + 165 + 136 + 171 + 135 + 172 + 135 + 171 + 129 + 135 + 130 + 171 + 130 + 135 + 165 + 136 + 129 + 129 + 86 + 86 + 79 + 50 + 79 + 44 + 43 + 43 + 43 + 0 + 43 + 7 + 0 + 37 + 42 + 7 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 50 + 80 + 86 + 43 + 86 + 43 + 50 + 80 + 49 + 44 + 86 + 129 + 129 + 165 + 136 + 129 + 172 + 129 + 129 + 129 + 129 + 86 + 87 + 50 + 86 + 50 + 79 + 87 + 93 + 86 + 130 + 93 + 122 + 93 + 129 + 129 + 94 + 129 + 129 + 135 + 166 + 129 + 94 + 122 + 50 + 37 + 43 + 0 + 43 + 1 + 0 + 42 + 1 + 43 + 37 + 7 + 43 + 80 + 1 + 43 + 0 + 37 + 7 + 36 + 0 + 1 + 0 + 0 + 43 + 43 + 80 + 86 + 93 + 86 + 123 + 129 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 129 + 123 + 171 + 166 + 86 + 122 + 129 + 129 + 129 + 159 + 92 + 123 + 49 + 44 + 85 + 86 + 87 + 128 + 87 + 122 + 92 + 44 + 85 + 44 + 86 + 122 + 135 + 123 + 86 + 50 + 86 + 122 + 130 + 172 + 208 + 179 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 135 + 173 + 172 + 178 + 136 + 208 + 172 + 136 + 172 + 135 + 171 + 136 + 171 + 129 + 135 + 172 + 135 + 171 + 99 + 172 + 129 + 171 + 130 + 165 + 136 + 129 + 165 + 129 + 87 + 122 + 50 + 85 + 86 + 44 + 43 + 79 + 43 + 7 + 43 + 43 + 0 + 43 + 37 + 6 + 1 + 43 + 0 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 44 + 86 + 43 + 86 + 44 + 85 + 86 + 86 + 87 + 129 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 93 + 122 + 93 + 87 + 50 + 80 + 86 + 86 + 93 + 129 + 86 + 129 + 87 + 93 + 129 + 87 + 129 + 129 + 136 + 130 + 129 + 129 + 88 + 128 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 1 + 43 + 80 + 7 + 36 + 44 + 86 + 43 + 80 + 43 + 43 + 44 + 43 + 36 + 1 + 6 + 0 + 37 + 50 + 86 + 86 + 123 + 129 + 123 + 171 + 129 + 164 + 129 + 130 + 165 + 129 + 165 + 129 + 165 + 86 + 122 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 92 + 43 + 86 + 87 + 128 + 129 + 123 + 92 + 86 + 44 + 43 + 86 + 129 + 129 + 86 + 86 + 44 + 85 + 86 + 87 + 129 + 165 + 136 + 172 + 129 + 130 + 166 + 135 + 166 + 135 + 166 + 172 + 136 + 178 + 172 + 172 + 172 + 172 + 142 + 172 + 130 + 172 + 171 + 136 + 135 + 136 + 165 + 136 + 171 + 136 + 130 + 135 + 166 + 135 + 165 + 136 + 165 + 130 + 171 + 130 + 86 + 123 + 86 + 49 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 36 + 7 + 43 + 37 + 6 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 44 + 43 + 86 + 49 + 87 + 79 + 50 + 86 + 80 + 86 + 92 + 129 + 166 + 135 + 172 + 172 + 165 + 136 + 129 + 129 + 129 + 123 + 93 + 128 + 87 + 86 + 87 + 50 + 93 + 128 + 88 + 129 + 86 + 129 + 87 + 92 + 130 + 129 + 129 + 129 + 129 + 130 + 93 + 128 + 81 + 7 + 43 + 36 + 7 + 43 + 1 + 43 + 43 + 37 + 85 + 43 + 80 + 86 + 86 + 129 + 86 + 80 + 86 + 86 + 79 + 7 + 37 + 0 + 1 + 43 + 86 + 43 + 87 + 86 + 158 + 129 + 129 + 165 + 129 + 165 + 129 + 208 + 171 + 171 + 166 + 171 + 123 + 129 + 122 + 86 + 129 + 165 + 129 + 123 + 165 + 129 + 128 + 86 + 86 + 129 + 123 + 92 + 80 + 43 + 85 + 50 + 123 + 128 + 87 + 92 + 79 + 44 + 85 + 92 + 87 + 165 + 93 + 122 + 93 + 129 + 129 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 136 + 172 + 177 + 136 + 172 + 172 + 172 + 136 + 171 + 172 + 136 + 165 + 136 + 136 + 166 + 135 + 130 + 172 + 135 + 130 + 165 + 136 + 129 + 172 + 129 + 166 + 135 + 166 + 92 + 123 + 86 + 86 + 86 + 50 + 80 + 49 + 79 + 43 + 43 + 1 + 43 + 42 + 1 + 37 + 7 + 42 + 1 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 86 + 86 + 86 + 50 + 86 + 122 + 135 + 129 + 172 + 171 + 172 + 172 + 130 + 172 + 129 + 129 + 129 + 130 + 93 + 122 + 93 + 87 + 92 + 123 + 93 + 86 + 129 + 93 + 129 + 123 + 94 + 129 + 129 + 129 + 130 + 135 + 130 + 93 + 129 + 123 + 80 + 43 + 6 + 43 + 37 + 43 + 43 + 80 + 49 + 80 + 86 + 128 + 123 + 129 + 129 + 122 + 129 + 122 + 87 + 122 + 50 + 43 + 0 + 0 + 37 + 43 + 44 + 92 + 123 + 122 + 129 + 129 + 165 + 171 + 171 + 172 + 208 + 215 + 208 + 208 + 214 + 208 + 171 + 166 + 129 + 123 + 128 + 165 + 123 + 122 + 129 + 165 + 129 + 129 + 86 + 49 + 80 + 86 + 50 + 80 + 86 + 128 + 86 + 86 + 44 + 86 + 86 + 122 + 93 + 129 + 122 + 93 + 86 + 86 + 87 + 86 + 129 + 129 + 172 + 129 + 172 + 172 + 129 + 172 + 136 + 177 + 172 + 172 + 135 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 136 + 165 + 136 + 130 + 171 + 130 + 130 + 135 + 130 + 165 + 130 + 166 + 135 + 129 + 88 + 165 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 43 + 50 + 79 + 43 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 43 + 43 + 50 + 80 + 85 + 86 + 86 + 87 + 129 + 129 + 172 + 171 + 172 + 172 + 171 + 130 + 172 + 171 + 130 + 129 + 86 + 128 + 87 + 93 + 122 + 93 + 87 + 93 + 129 + 130 + 87 + 129 + 129 + 93 + 129 + 130 + 136 + 129 + 129 + 93 + 129 + 87 + 86 + 85 + 44 + 44 + 43 + 80 + 86 + 86 + 86 + 86 + 129 + 123 + 165 + 129 + 129 + 129 + 165 + 86 + 123 + 128 + 87 + 122 + 7 + 43 + 0 + 0 + 44 + 79 + 93 + 129 + 165 + 136 + 201 + 172 + 214 + 209 + 214 + 208 + 215 + 215 + 214 + 209 + 207 + 172 + 208 + 208 + 171 + 165 + 130 + 122 + 122 + 129 + 129 + 129 + 129 + 87 + 86 + 85 + 80 + 87 + 128 + 93 + 80 + 85 + 50 + 80 + 92 + 166 + 92 + 86 + 87 + 86 + 85 + 86 + 122 + 50 + 122 + 93 + 129 + 165 + 130 + 171 + 136 + 165 + 136 + 171 + 136 + 172 + 135 + 172 + 178 + 136 + 172 + 171 + 136 + 173 + 129 + 172 + 131 + 129 + 131 + 130 + 172 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 87 + 122 + 129 + 129 + 86 + 86 + 86 + 86 + 80 + 86 + 49 + 80 + 7 + 36 + 43 + 1 + 6 + 37 + 7 + 36 + 43 + 43 + 43 + 44 + 43 + 86 + 43 + 49 + 44 + 79 + 50 + 86 + 122 + 130 + 129 + 171 + 130 + 172 + 172 + 172 + 171 + 130 + 172 + 165 + 129 + 130 + 128 + 93 + 87 + 86 + 93 + 123 + 129 + 129 + 93 + 123 + 128 + 93 + 130 + 123 + 93 + 129 + 129 + 136 + 129 + 129 + 87 + 122 + 44 + 85 + 44 + 122 + 86 + 93 + 122 + 130 + 129 + 123 + 128 + 129 + 164 + 130 + 171 + 129 + 165 + 129 + 123 + 128 + 129 + 123 + 43 + 7 + 36 + 1 + 7 + 37 + 85 + 123 + 135 + 166 + 214 + 208 + 209 + 172 + 214 + 209 + 214 + 215 + 208 + 215 + 214 + 208 + 209 + 171 + 208 + 172 + 165 + 129 + 122 + 123 + 86 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 85 + 44 + 86 + 129 + 129 + 129 + 87 + 86 + 85 + 86 + 80 + 86 + 86 + 86 + 86 + 92 + 123 + 93 + 128 + 129 + 130 + 129 + 135 + 166 + 135 + 171 + 136 + 171 + 129 + 172 + 136 + 172 + 171 + 136 + 172 + 137 + 130 + 173 + 129 + 167 + 136 + 130 + 130 + 130 + 165 + 129 + 130 + 129 + 123 + 123 + 86 + 86 + 86 + 123 + 128 + 87 + 128 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 7 + 36 + 7 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 7 + 43 + 79 + 44 + 85 + 44 + 86 + 86 + 86 + 93 + 129 + 129 + 166 + 171 + 130 + 172 + 135 + 172 + 166 + 136 + 165 + 136 + 129 + 129 + 123 + 128 + 129 + 87 + 129 + 87 + 129 + 129 + 129 + 123 + 135 + 123 + 135 + 130 + 129 + 129 + 129 + 129 + 123 + 86 + 44 + 85 + 43 + 122 + 129 + 130 + 165 + 129 + 129 + 129 + 129 + 159 + 92 + 130 + 165 + 165 + 129 + 172 + 165 + 130 + 128 + 129 + 86 + 79 + 7 + 37 + 0 + 37 + 6 + 1 + 43 + 86 + 123 + 170 + 172 + 172 + 214 + 209 + 208 + 214 + 209 + 171 + 215 + 202 + 135 + 207 + 172 + 166 + 171 + 172 + 164 + 129 + 129 + 129 + 129 + 122 + 93 + 122 + 86 + 80 + 122 + 92 + 129 + 130 + 122 + 92 + 80 + 50 + 85 + 80 + 50 + 86 + 122 + 92 + 129 + 123 + 92 + 86 + 86 + 43 + 87 + 128 + 129 + 171 + 130 + 136 + 129 + 136 + 172 + 136 + 136 + 172 + 136 + 173 + 130 + 135 + 173 + 130 + 130 + 136 + 167 + 135 + 130 + 130 + 130 + 87 + 129 + 123 + 123 + 86 + 122 + 86 + 116 + 50 + 123 + 86 + 122 + 93 + 86 + 80 + 49 + 86 + 44 + 85 + 37 + 7 + 36 + 7 + 37 + 7 + 36 + 1 + 43 + 6 + 37 + 43 + 43 + 44 + 49 + 80 + 79 + 50 + 86 + 86 + 128 + 129 + 130 + 171 + 136 + 165 + 136 + 166 + 171 + 136 + 171 + 130 + 172 + 129 + 129 + 123 + 129 + 93 + 123 + 129 + 93 + 123 + 129 + 129 + 123 + 135 + 130 + 130 + 165 + 129 + 130 + 129 + 129 + 123 + 92 + 80 + 86 + 86 + 86 + 165 + 172 + 129 + 165 + 130 + 165 + 135 + 123 + 171 + 166 + 172 + 129 + 165 + 129 + 172 + 166 + 135 + 129 + 122 + 43 + 1 + 0 + 7 + 36 + 1 + 6 + 37 + 6 + 80 + 86 + 172 + 208 + 172 + 214 + 209 + 214 + 173 + 165 + 129 + 129 + 128 + 129 + 165 + 130 + 129 + 171 + 172 + 171 + 172 + 207 + 130 + 129 + 122 + 128 + 87 + 129 + 164 + 129 + 129 + 87 + 85 + 86 + 80 + 50 + 122 + 93 + 86 + 128 + 87 + 122 + 92 + 86 + 80 + 50 + 79 + 50 + 80 + 92 + 129 + 130 + 129 + 135 + 93 + 130 + 136 + 130 + 136 + 136 + 130 + 136 + 172 + 135 + 131 + 172 + 130 + 129 + 136 + 130 + 129 + 87 + 130 + 87 + 87 + 128 + 123 + 80 + 122 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 44 + 85 + 44 + 85 + 44 + 43 + 42 + 1 + 37 + 7 + 36 + 7 + 37 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 129 + 129 + 172 + 129 + 172 + 165 + 136 + 172 + 171 + 130 + 172 + 172 + 171 + 129 + 130 + 129 + 129 + 129 + 123 + 92 + 129 + 87 + 122 + 130 + 129 + 129 + 135 + 166 + 129 + 130 + 129 + 129 + 129 + 87 + 86 + 86 + 80 + 128 + 165 + 130 + 171 + 166 + 171 + 166 + 136 + 172 + 165 + 129 + 172 + 166 + 171 + 172 + 165 + 172 + 172 + 165 + 136 + 86 + 37 + 6 + 0 + 37 + 6 + 1 + 36 + 7 + 0 + 37 + 43 + 122 + 129 + 172 + 172 + 208 + 215 + 214 + 166 + 129 + 129 + 86 + 129 + 123 + 85 + 165 + 129 + 172 + 171 + 172 + 207 + 172 + 129 + 166 + 129 + 172 + 165 + 129 + 86 + 86 + 86 + 86 + 122 + 87 + 129 + 128 + 87 + 85 + 86 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 86 + 86 + 86 + 87 + 128 + 129 + 129 + 93 + 130 + 172 + 129 + 136 + 136 + 172 + 136 + 166 + 136 + 130 + 135 + 124 + 94 + 129 + 123 + 93 + 87 + 86 + 86 + 80 + 87 + 122 + 86 + 116 + 86 + 123 + 122 + 92 + 87 + 122 + 86 + 86 + 86 + 44 + 86 + 43 + 49 + 37 + 43 + 1 + 42 + 1 + 43 + 0 + 43 + 1 + 42 + 43 + 37 + 43 + 43 + 44 + 49 + 79 + 50 + 123 + 92 + 129 + 165 + 136 + 165 + 136 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 171 + 130 + 129 + 129 + 123 + 129 + 87 + 129 + 122 + 93 + 123 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 130 + 122 + 50 + 86 + 159 + 171 + 130 + 171 + 166 + 178 + 208 + 172 + 166 + 172 + 165 + 135 + 166 + 214 + 172 + 208 + 172 + 173 + 208 + 135 + 79 + 37 + 6 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 0 + 43 + 43 + 79 + 129 + 166 + 214 + 215 + 209 + 215 + 171 + 165 + 129 + 134 + 129 + 80 + 122 + 92 + 166 + 128 + 172 + 172 + 172 + 172 + 208 + 165 + 129 + 86 + 129 + 129 + 122 + 129 + 123 + 92 + 87 + 122 + 92 + 80 + 50 + 79 + 86 + 86 + 50 + 80 + 86 + 50 + 79 + 86 + 86 + 86 + 129 + 86 + 129 + 87 + 93 + 136 + 130 + 172 + 172 + 136 + 136 + 172 + 130 + 135 + 130 + 123 + 93 + 123 + 87 + 92 + 87 + 80 + 86 + 86 + 86 + 86 + 116 + 87 + 123 + 122 + 129 + 122 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 7 + 37 + 7 + 36 + 43 + 1 + 36 + 7 + 37 + 43 + 43 + 43 + 43 + 44 + 85 + 44 + 86 + 129 + 122 + 136 + 129 + 172 + 129 + 171 + 166 + 135 + 172 + 165 + 179 + 172 + 172 + 136 + 165 + 136 + 130 + 129 + 159 + 93 + 86 + 129 + 123 + 93 + 123 + 129 + 93 + 129 + 123 + 129 + 129 + 124 + 129 + 122 + 93 + 86 + 86 + 165 + 129 + 166 + 171 + 172 + 172 + 172 + 208 + 172 + 130 + 208 + 171 + 209 + 178 + 209 + 214 + 215 + 215 + 208 + 172 + 129 + 43 + 36 + 1 + 7 + 36 + 6 + 1 + 0 + 37 + 0 + 6 + 1 + 36 + 43 + 43 + 123 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 172 + 171 + 129 + 165 + 129 + 92 + 123 + 171 + 128 + 166 + 129 + 172 + 129 + 123 + 129 + 164 + 129 + 93 + 123 + 128 + 87 + 86 + 80 + 86 + 86 + 85 + 50 + 80 + 43 + 49 + 80 + 43 + 86 + 43 + 86 + 50 + 86 + 86 + 129 + 129 + 136 + 165 + 136 + 135 + 130 + 172 + 130 + 136 + 129 + 130 + 129 + 86 + 87 + 86 + 86 + 50 + 87 + 80 + 86 + 86 + 50 + 116 + 86 + 123 + 123 + 128 + 123 + 123 + 128 + 129 + 123 + 129 + 122 + 92 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 36 + 7 + 37 + 43 + 7 + 43 + 43 + 79 + 50 + 80 + 92 + 129 + 129 + 165 + 136 + 165 + 136 + 166 + 135 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 130 + 93 + 128 + 87 + 128 + 87 + 129 + 123 + 93 + 129 + 123 + 128 + 123 + 93 + 86 + 87 + 122 + 50 + 129 + 165 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 171 + 166 + 208 + 215 + 215 + 214 + 215 + 209 + 215 + 215 + 209 + 172 + 128 + 37 + 43 + 7 + 36 + 1 + 0 + 6 + 1 + 36 + 1 + 0 + 43 + 1 + 36 + 43 + 43 + 129 + 208 + 214 + 215 + 215 + 208 + 172 + 208 + 215 + 171 + 173 + 171 + 165 + 87 + 129 + 129 + 165 + 129 + 171 + 166 + 129 + 171 + 123 + 86 + 123 + 92 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 43 + 44 + 79 + 50 + 79 + 86 + 50 + 86 + 86 + 86 + 86 + 123 + 129 + 129 + 136 + 165 + 130 + 129 + 130 + 129 + 136 + 123 + 92 + 129 + 86 + 86 + 81 + 49 + 86 + 44 + 86 + 86 + 87 + 80 + 86 + 86 + 123 + 128 + 123 + 159 + 128 + 123 + 129 + 129 + 165 + 87 + 128 + 87 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 36 + 7 + 37 + 0 + 43 + 1 + 43 + 43 + 37 + 43 + 49 + 79 + 44 + 86 + 129 + 129 + 129 + 165 + 136 + 165 + 136 + 165 + 136 + 172 + 166 + 171 + 172 + 172 + 136 + 165 + 136 + 166 + 129 + 130 + 129 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 123 + 93 + 122 + 93 + 122 + 94 + 122 + 92 + 123 + 86 + 130 + 165 + 172 + 172 + 172 + 172 + 208 + 172 + 208 + 166 + 172 + 215 + 214 + 215 + 215 + 215 + 208 + 215 + 208 + 172 + 172 + 86 + 37 + 6 + 37 + 6 + 37 + 6 + 37 + 43 + 43 + 43 + 79 + 7 + 36 + 43 + 37 + 6 + 80 + 165 + 208 + 178 + 209 + 129 + 135 + 172 + 165 + 214 + 208 + 214 + 214 + 208 + 171 + 136 + 165 + 172 + 166 + 172 + 165 + 129 + 128 + 87 + 129 + 122 + 129 + 93 + 129 + 123 + 92 + 128 + 123 + 93 + 128 + 87 + 92 + 128 + 87 + 85 + 87 + 86 + 85 + 86 + 86 + 123 + 92 + 129 + 87 + 129 + 93 + 123 + 92 + 123 + 93 + 86 + 93 + 123 + 85 + 44 + 86 + 80 + 49 + 80 + 79 + 86 + 86 + 87 + 122 + 129 + 122 + 123 + 129 + 159 + 86 + 129 + 165 + 129 + 129 + 128 + 87 + 86 + 86 + 79 + 50 + 79 + 7 + 37 + 43 + 43 + 0 + 7 + 36 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 86 + 123 + 135 + 129 + 130 + 165 + 135 + 166 + 135 + 166 + 136 + 171 + 130 + 172 + 129 + 172 + 129 + 166 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 129 + 165 + 129 + 130 + 129 + 93 + 129 + 165 + 130 + 86 + 123 + 92 + 123 + 93 + 165 + 130 + 178 + 208 + 172 + 208 + 166 + 172 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 172 + 86 + 43 + 36 + 7 + 37 + 43 + 6 + 80 + 43 + 86 + 79 + 50 + 86 + 79 + 80 + 85 + 43 + 37 + 42 + 87 + 165 + 178 + 209 + 86 + 86 + 164 + 93 + 165 + 215 + 215 + 215 + 215 + 214 + 172 + 209 + 214 + 172 + 208 + 165 + 136 + 171 + 165 + 130 + 164 + 129 + 130 + 129 + 135 + 129 + 159 + 93 + 128 + 87 + 122 + 86 + 86 + 50 + 37 + 42 + 43 + 44 + 85 + 86 + 86 + 92 + 124 + 128 + 87 + 86 + 86 + 93 + 123 + 92 + 124 + 128 + 87 + 86 + 85 + 86 + 80 + 86 + 44 + 85 + 80 + 86 + 87 + 122 + 129 + 122 + 159 + 92 + 123 + 122 + 81 + 171 + 129 + 129 + 123 + 92 + 86 + 80 + 50 + 44 + 85 + 43 + 43 + 37 + 6 + 37 + 7 + 0 + 43 + 37 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 92 + 122 + 130 + 135 + 165 + 135 + 166 + 135 + 166 + 135 + 165 + 136 + 166 + 135 + 130 + 165 + 136 + 165 + 136 + 165 + 129 + 130 + 129 + 136 + 165 + 130 + 129 + 129 + 129 + 130 + 129 + 166 + 129 + 166 + 136 + 129 + 166 + 135 + 166 + 172 + 172 + 208 + 172 + 208 + 173 + 171 + 172 + 172 + 215 + 209 + 215 + 215 + 214 + 209 + 215 + 209 + 214 + 172 + 166 + 85 + 1 + 0 + 43 + 43 + 43 + 86 + 80 + 49 + 87 + 86 + 85 + 80 + 50 + 85 + 80 + 86 + 36 + 43 + 43 + 165 + 172 + 215 + 122 + 86 + 129 + 86 + 86 + 209 + 178 + 208 + 208 + 178 + 209 + 214 + 208 + 173 + 172 + 172 + 171 + 130 + 165 + 128 + 87 + 86 + 128 + 123 + 129 + 93 + 129 + 85 + 87 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 79 + 50 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 123 + 86 + 123 + 129 + 129 + 93 + 123 + 129 + 86 + 86 + 86 + 122 + 79 + 86 + 80 + 86 + 129 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 80 + 165 + 129 + 93 + 128 + 86 + 86 + 86 + 80 + 50 + 85 + 44 + 43 + 43 + 37 + 0 + 7 + 36 + 7 + 37 + 7 + 37 + 43 + 43 + 43 + 43 + 79 + 87 + 92 + 129 + 129 + 129 + 166 + 135 + 129 + 129 + 130 + 129 + 129 + 123 + 129 + 129 + 135 + 165 + 136 + 166 + 129 + 130 + 171 + 130 + 165 + 136 + 129 + 123 + 129 + 129 + 87 + 129 + 129 + 129 + 166 + 135 + 130 + 129 + 166 + 129 + 172 + 172 + 215 + 172 + 208 + 172 + 172 + 208 + 172 + 215 + 215 + 208 + 208 + 172 + 172 + 215 + 215 + 208 + 172 + 129 + 79 + 0 + 43 + 43 + 43 + 86 + 87 + 86 + 86 + 86 + 122 + 93 + 122 + 86 + 86 + 80 + 43 + 85 + 44 + 79 + 129 + 135 + 209 + 171 + 165 + 128 + 86 + 128 + 123 + 129 + 208 + 215 + 214 + 172 + 166 + 172 + 172 + 208 + 136 + 165 + 129 + 165 + 129 + 129 + 86 + 123 + 129 + 129 + 129 + 129 + 86 + 93 + 122 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 85 + 87 + 86 + 86 + 123 + 86 + 129 + 87 + 129 + 165 + 129 + 172 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 87 + 116 + 92 + 123 + 128 + 123 + 123 + 122 + 86 + 122 + 86 + 123 + 86 + 129 + 122 + 93 + 86 + 86 + 85 + 80 + 50 + 43 + 43 + 43 + 37 + 6 + 37 + 7 + 36 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 85 + 44 + 86 + 129 + 128 + 87 + 129 + 129 + 129 + 86 + 86 + 92 + 86 + 87 + 86 + 129 + 128 + 130 + 129 + 129 + 172 + 129 + 130 + 166 + 135 + 130 + 129 + 165 + 93 + 129 + 123 + 129 + 129 + 172 + 130 + 129 + 129 + 129 + 166 + 172 + 172 + 172 + 208 + 172 + 165 + 136 + 208 + 215 + 208 + 179 + 208 + 208 + 172 + 130 + 214 + 208 + 215 + 209 + 171 + 87 + 85 + 1 + 43 + 43 + 86 + 86 + 122 + 86 + 93 + 128 + 87 + 128 + 86 + 86 + 86 + 86 + 122 + 80 + 86 + 49 + 80 + 172 + 172 + 172 + 172 + 166 + 129 + 164 + 135 + 122 + 129 + 135 + 171 + 166 + 129 + 165 + 172 + 166 + 135 + 166 + 171 + 129 + 123 + 86 + 129 + 128 + 130 + 128 + 123 + 129 + 129 + 129 + 86 + 86 + 87 + 85 + 79 + 50 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 79 + 86 + 123 + 92 + 123 + 129 + 129 + 130 + 129 + 172 + 172 + 165 + 165 + 129 + 123 + 129 + 122 + 129 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 123 + 86 + 122 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 86 + 87 + 79 + 50 + 86 + 43 + 80 + 43 + 6 + 1 + 43 + 0 + 1 + 43 + 43 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 44 + 86 + 43 + 86 + 86 + 86 + 51 + 79 + 50 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 93 + 129 + 130 + 165 + 129 + 130 + 166 + 135 + 130 + 123 + 129 + 129 + 128 + 87 + 130 + 171 + 129 + 130 + 129 + 171 + 130 + 208 + 172 + 215 + 172 + 209 + 172 + 214 + 208 + 172 + 214 + 173 + 208 + 130 + 214 + 209 + 215 + 215 + 214 + 166 + 86 + 85 + 44 + 79 + 50 + 79 + 129 + 87 + 135 + 123 + 128 + 123 + 129 + 93 + 86 + 79 + 87 + 86 + 86 + 86 + 79 + 86 + 129 + 172 + 130 + 207 + 172 + 214 + 208 + 172 + 129 + 166 + 171 + 166 + 165 + 135 + 202 + 172 + 129 + 129 + 122 + 87 + 86 + 129 + 128 + 123 + 128 + 135 + 166 + 129 + 129 + 129 + 166 + 129 + 129 + 92 + 122 + 86 + 123 + 86 + 86 + 86 + 122 + 86 + 86 + 86 + 80 + 50 + 86 + 86 + 122 + 87 + 129 + 166 + 172 + 172 + 166 + 136 + 172 + 165 + 165 + 136 + 165 + 129 + 122 + 123 + 93 + 158 + 123 + 129 + 122 + 122 + 116 + 87 + 122 + 85 + 87 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 44 + 86 + 85 + 44 + 86 + 7 + 37 + 6 + 1 + 43 + 43 + 1 + 43 + 44 + 43 + 43 + 7 + 36 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 50 + 43 + 44 + 85 + 50 + 123 + 93 + 129 + 130 + 93 + 129 + 123 + 129 + 129 + 136 + 159 + 129 + 94 + 165 + 129 + 129 + 129 + 130 + 93 + 165 + 93 + 165 + 130 + 171 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 215 + 209 + 172 + 171 + 166 + 178 + 208 + 172 + 209 + 214 + 215 + 209 + 172 + 86 + 85 + 80 + 49 + 80 + 86 + 123 + 135 + 129 + 165 + 93 + 130 + 128 + 123 + 87 + 85 + 86 + 87 + 86 + 86 + 86 + 44 + 128 + 130 + 166 + 214 + 208 + 179 + 208 + 209 + 171 + 208 + 179 + 208 + 214 + 172 + 166 + 172 + 165 + 129 + 172 + 129 + 123 + 92 + 122 + 123 + 129 + 92 + 159 + 129 + 86 + 122 + 93 + 165 + 129 + 123 + 128 + 129 + 86 + 123 + 86 + 128 + 93 + 123 + 122 + 43 + 43 + 86 + 44 + 123 + 93 + 129 + 129 + 166 + 135 + 166 + 172 + 172 + 165 + 136 + 165 + 129 + 165 + 130 + 122 + 93 + 122 + 159 + 123 + 165 + 122 + 122 + 87 + 122 + 122 + 80 + 86 + 49 + 80 + 50 + 79 + 87 + 85 + 50 + 86 + 44 + 79 + 50 + 43 + 43 + 44 + 43 + 43 + 50 + 43 + 80 + 7 + 43 + 43 + 1 + 37 + 0 + 43 + 1 + 36 + 7 + 43 + 43 + 44 + 43 + 43 + 43 + 50 + 86 + 87 + 129 + 86 + 129 + 93 + 123 + 129 + 129 + 130 + 129 + 166 + 129 + 129 + 136 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 129 + 171 + 136 + 166 + 172 + 172 + 172 + 208 + 136 + 208 + 173 + 214 + 215 + 166 + 128 + 166 + 172 + 214 + 173 + 172 + 208 + 214 + 179 + 202 + 86 + 85 + 43 + 44 + 79 + 50 + 123 + 93 + 172 + 165 + 136 + 129 + 166 + 87 + 128 + 87 + 86 + 122 + 87 + 86 + 86 + 86 + 87 + 171 + 172 + 208 + 179 + 209 + 214 + 208 + 173 + 208 + 215 + 215 + 208 + 179 + 207 + 130 + 165 + 128 + 123 + 129 + 129 + 172 + 129 + 165 + 123 + 128 + 87 + 122 + 92 + 122 + 80 + 86 + 86 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 128 + 116 + 50 + 43 + 43 + 80 + 86 + 129 + 93 + 165 + 130 + 130 + 172 + 172 + 166 + 173 + 165 + 136 + 165 + 129 + 123 + 93 + 122 + 123 + 165 + 123 + 158 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 79 + 43 + 44 + 79 + 43 + 86 + 50 + 80 + 49 + 80 + 43 + 14 + 37 + 6 + 43 + 1 + 44 + 49 + 80 + 50 + 44 + 79 + 50 + 37 + 6 + 37 + 7 + 37 + 6 + 37 + 44 + 49 + 80 + 43 + 50 + 44 + 93 + 86 + 87 + 129 + 86 + 87 + 92 + 123 + 129 + 136 + 165 + 130 + 171 + 130 + 166 + 135 + 130 + 129 + 165 + 136 + 129 + 172 + 171 + 130 + 171 + 130 + 172 + 172 + 172 + 208 + 171 + 173 + 208 + 208 + 172 + 171 + 130 + 172 + 208 + 172 + 172 + 165 + 129 + 172 + 215 + 172 + 165 + 79 + 50 + 43 + 80 + 86 + 92 + 124 + 171 + 130 + 172 + 129 + 166 + 129 + 93 + 129 + 86 + 87 + 122 + 87 + 86 + 87 + 129 + 172 + 208 + 214 + 173 + 208 + 178 + 209 + 215 + 215 + 209 + 214 + 208 + 215 + 215 + 166 + 129 + 129 + 129 + 164 + 166 + 135 + 166 + 171 + 166 + 129 + 129 + 129 + 122 + 122 + 93 + 86 + 122 + 129 + 129 + 123 + 128 + 123 + 135 + 123 + 86 + 122 + 86 + 43 + 43 + 86 + 80 + 86 + 92 + 123 + 92 + 166 + 129 + 172 + 172 + 165 + 172 + 166 + 130 + 129 + 165 + 129 + 122 + 87 + 123 + 122 + 165 + 123 + 122 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 43 + 43 + 80 + 49 + 43 + 44 + 43 + 85 + 44 + 79 + 50 + 44 + 43 + 7 + 43 + 0 + 43 + 8 + 43 + 37 + 42 + 7 + 37 + 43 + 50 + 79 + 44 + 86 + 86 + 93 + 86 + 86 + 86 + 50 + 87 + 86 + 129 + 123 + 93 + 87 + 93 + 123 + 130 + 171 + 130 + 172 + 171 + 130 + 166 + 135 + 130 + 165 + 130 + 135 + 129 + 166 + 135 + 165 + 130 + 135 + 172 + 166 + 171 + 173 + 208 + 178 + 208 + 173 + 172 + 165 + 171 + 173 + 172 + 208 + 129 + 129 + 123 + 128 + 172 + 215 + 208 + 172 + 122 + 87 + 85 + 86 + 87 + 86 + 129 + 130 + 166 + 135 + 166 + 130 + 171 + 130 + 123 + 86 + 93 + 129 + 122 + 87 + 86 + 129 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 215 + 215 + 215 + 172 + 215 + 208 + 172 + 165 + 93 + 129 + 166 + 171 + 208 + 130 + 165 + 172 + 171 + 166 + 171 + 135 + 159 + 129 + 129 + 129 + 128 + 123 + 129 + 165 + 129 + 93 + 158 + 87 + 128 + 80 + 85 + 44 + 79 + 50 + 80 + 92 + 87 + 122 + 129 + 130 + 129 + 172 + 167 + 135 + 166 + 173 + 165 + 129 + 165 + 94 + 122 + 87 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 129 + 86 + 86 + 80 + 49 + 80 + 43 + 50 + 43 + 43 + 37 + 6 + 43 + 7 + 43 + 1 + 43 + 44 + 50 + 85 + 44 + 43 + 7 + 43 + 1 + 36 + 7 + 37 + 7 + 36 + 43 + 44 + 44 + 85 + 87 + 86 + 86 + 87 + 92 + 129 + 87 + 92 + 123 + 93 + 86 + 86 + 123 + 130 + 135 + 166 + 129 + 129 + 130 + 129 + 172 + 129 + 165 + 136 + 165 + 136 + 165 + 130 + 135 + 165 + 136 + 172 + 209 + 214 + 209 + 178 + 209 + 171 + 166 + 172 + 208 + 179 + 165 + 86 + 86 + 165 + 165 + 172 + 215 + 209 + 135 + 129 + 122 + 44 + 86 + 86 + 123 + 86 + 130 + 129 + 173 + 129 + 172 + 129 + 166 + 129 + 87 + 86 + 130 + 165 + 93 + 86 + 86 + 129 + 129 + 130 + 165 + 179 + 215 + 172 + 209 + 178 + 215 + 208 + 172 + 179 + 201 + 130 + 135 + 165 + 172 + 172 + 172 + 208 + 173 + 165 + 172 + 172 + 165 + 136 + 165 + 165 + 129 + 129 + 128 + 123 + 86 + 129 + 129 + 164 + 129 + 129 + 122 + 86 + 43 + 80 + 43 + 44 + 86 + 86 + 122 + 87 + 129 + 123 + 136 + 166 + 172 + 166 + 172 + 166 + 136 + 165 + 129 + 123 + 122 + 93 + 116 + 87 + 123 + 86 + 123 + 87 + 93 + 87 + 87 + 86 + 129 + 86 + 86 + 122 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 37 + 6 + 8 + 43 + 43 + 44 + 43 + 7 + 43 + 43 + 44 + 37 + 43 + 44 + 85 + 44 + 86 + 122 + 93 + 123 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 86 + 93 + 123 + 93 + 165 + 130 + 172 + 135 + 130 + 129 + 123 + 86 + 171 + 130 + 129 + 171 + 130 + 171 + 130 + 135 + 166 + 172 + 214 + 209 + 215 + 172 + 209 + 172 + 172 + 208 + 214 + 215 + 172 + 172 + 123 + 43 + 165 + 178 + 209 + 208 + 215 + 129 + 166 + 86 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 171 + 166 + 136 + 165 + 136 + 166 + 93 + 122 + 129 + 130 + 129 + 129 + 129 + 129 + 87 + 86 + 129 + 171 + 172 + 165 + 179 + 172 + 172 + 172 + 172 + 129 + 165 + 130 + 171 + 208 + 172 + 166 + 172 + 172 + 172 + 171 + 165 + 130 + 171 + 129 + 166 + 166 + 135 + 129 + 123 + 165 + 93 + 165 + 129 + 165 + 129 + 129 + 122 + 50 + 79 + 44 + 43 + 85 + 44 + 86 + 80 + 93 + 86 + 129 + 129 + 166 + 135 + 166 + 165 + 172 + 131 + 171 + 165 + 123 + 93 + 122 + 87 + 122 + 87 + 123 + 80 + 92 + 80 + 50 + 87 + 122 + 129 + 93 + 122 + 87 + 86 + 85 + 43 + 43 + 43 + 43 + 43 + 43 + 8 + 36 + 7 + 1 + 43 + 43 + 7 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 37 + 7 + 43 + 79 + 86 + 87 + 92 + 130 + 129 + 87 + 129 + 136 + 129 + 129 + 130 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 123 + 86 + 129 + 123 + 93 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 173 + 208 + 214 + 215 + 173 + 208 + 135 + 123 + 165 + 136 + 208 + 172 + 208 + 173 + 171 + 129 + 86 + 80 + 86 + 86 + 129 + 129 + 124 + 129 + 135 + 172 + 167 + 172 + 129 + 172 + 129 + 87 + 165 + 136 + 166 + 172 + 172 + 129 + 86 + 49 + 80 + 50 + 87 + 171 + 129 + 136 + 172 + 171 + 172 + 172 + 166 + 172 + 207 + 172 + 173 + 208 + 172 + 214 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 166 + 129 + 172 + 123 + 128 + 123 + 129 + 128 + 130 + 129 + 164 + 87 + 122 + 80 + 43 + 49 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 93 + 166 + 129 + 166 + 135 + 166 + 129 + 172 + 123 + 129 + 129 + 122 + 80 + 87 + 50 + 80 + 87 + 80 + 51 + 86 + 51 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 43 + 44 + 43 + 7 + 37 + 43 + 7 + 37 + 0 + 43 + 0 + 43 + 1 + 43 + 80 + 86 + 93 + 123 + 136 + 129 + 129 + 129 + 93 + 130 + 129 + 130 + 93 + 87 + 85 + 80 + 50 + 86 + 86 + 87 + 86 + 87 + 86 + 129 + 129 + 129 + 129 + 172 + 173 + 172 + 171 + 172 + 130 + 171 + 129 + 172 + 166 + 172 + 172 + 208 + 215 + 215 + 215 + 215 + 208 + 166 + 128 + 129 + 172 + 208 + 209 + 178 + 172 + 166 + 172 + 165 + 86 + 79 + 87 + 92 + 123 + 129 + 129 + 129 + 130 + 172 + 172 + 172 + 165 + 172 + 130 + 92 + 123 + 136 + 173 + 172 + 166 + 129 + 50 + 43 + 44 + 86 + 92 + 166 + 136 + 172 + 215 + 179 + 208 + 172 + 215 + 208 + 173 + 214 + 172 + 209 + 214 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 165 + 136 + 172 + 166 + 165 + 86 + 122 + 93 + 128 + 166 + 129 + 122 + 129 + 86 + 79 + 43 + 44 + 85 + 80 + 86 + 86 + 87 + 86 + 129 + 130 + 129 + 165 + 136 + 166 + 165 + 136 + 159 + 135 + 159 + 93 + 122 + 80 + 50 + 80 + 51 + 79 + 51 + 44 + 51 + 44 + 86 + 79 + 86 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 80 + 43 + 50 + 7 + 43 + 43 + 80 + 50 + 44 + 43 + 43 + 7 + 37 + 43 + 43 + 44 + 43 + 86 + 86 + 86 + 129 + 130 + 172 + 129 + 136 + 172 + 130 + 136 + 165 + 130 + 135 + 130 + 93 + 122 + 87 + 86 + 86 + 80 + 50 + 80 + 123 + 92 + 166 + 172 + 136 + 171 + 172 + 166 + 171 + 129 + 136 + 129 + 129 + 123 + 136 + 165 + 172 + 214 + 209 + 214 + 215 + 173 + 214 + 209 + 129 + 129 + 165 + 172 + 172 + 215 + 208 + 165 + 136 + 172 + 166 + 128 + 80 + 87 + 129 + 129 + 129 + 130 + 130 + 171 + 166 + 178 + 166 + 173 + 130 + 171 + 129 + 87 + 166 + 135 + 130 + 165 + 93 + 43 + 43 + 43 + 44 + 92 + 136 + 172 + 172 + 215 + 215 + 215 + 178 + 215 + 209 + 214 + 209 + 215 + 214 + 173 + 214 + 209 + 208 + 172 + 129 + 172 + 165 + 130 + 171 + 165 + 130 + 129 + 128 + 123 + 129 + 122 + 129 + 86 + 122 + 93 + 79 + 86 + 80 + 49 + 86 + 80 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 165 + 136 + 165 + 130 + 129 + 165 + 129 + 130 + 122 + 86 + 80 + 86 + 44 + 80 + 51 + 50 + 81 + 14 + 51 + 79 + 44 + 43 + 86 + 79 + 86 + 50 + 79 + 44 + 49 + 43 + 43 + 44 + 85 + 44 + 43 + 86 + 86 + 87 + 86 + 50 + 86 + 44 + 43 + 86 + 44 + 123 + 129 + 93 + 165 + 130 + 171 + 172 + 173 + 172 + 172 + 130 + 172 + 135 + 172 + 130 + 129 + 130 + 129 + 129 + 86 + 129 + 86 + 44 + 86 + 122 + 136 + 166 + 172 + 129 + 135 + 130 + 129 + 123 + 128 + 93 + 129 + 123 + 128 + 130 + 129 + 171 + 173 + 208 + 215 + 172 + 208 + 172 + 172 + 208 + 179 + 208 + 129 + 172 + 166 + 171 + 209 + 171 + 166 + 172 + 172 + 129 + 43 + 129 + 129 + 130 + 172 + 165 + 172 + 129 + 173 + 172 + 172 + 172 + 172 + 173 + 165 + 136 + 123 + 129 + 93 + 129 + 123 + 86 + 49 + 50 + 43 + 86 + 136 + 172 + 173 + 178 + 215 + 215 + 215 + 215 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 178 + 208 + 129 + 129 + 165 + 166 + 136 + 164 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 122 + 92 + 86 + 80 + 86 + 79 + 87 + 86 + 50 + 86 + 80 + 92 + 123 + 86 + 129 + 130 + 129 + 165 + 131 + 171 + 130 + 123 + 129 + 123 + 93 + 116 + 86 + 86 + 45 + 52 + 49 + 81 + 51 + 50 + 45 + 43 + 50 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 85 + 44 + 43 + 43 + 44 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 122 + 93 + 123 + 136 + 165 + 172 + 172 + 173 + 172 + 173 + 172 + 172 + 209 + 172 + 172 + 137 + 171 + 130 + 130 + 135 + 165 + 136 + 129 + 129 + 166 + 135 + 166 + 172 + 136 + 165 + 129 + 136 + 123 + 92 + 122 + 86 + 130 + 171 + 136 + 165 + 129 + 136 + 129 + 165 + 130 + 214 + 215 + 172 + 172 + 173 + 172 + 208 + 179 + 208 + 172 + 165 + 136 + 166 + 171 + 130 + 129 + 129 + 165 + 129 + 130 + 129 + 172 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 179 + 172 + 208 + 173 + 209 + 172 + 171 + 87 + 128 + 130 + 122 + 129 + 86 + 1 + 43 + 129 + 129 + 172 + 178 + 209 + 178 + 209 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 208 + 215 + 172 + 172 + 165 + 165 + 136 + 165 + 172 + 172 + 123 + 128 + 123 + 128 + 87 + 122 + 92 + 123 + 79 + 50 + 79 + 79 + 50 + 80 + 50 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 129 + 130 + 130 + 130 + 129 + 94 + 123 + 129 + 88 + 86 + 87 + 51 + 81 + 50 + 9 + 50 + 51 + 45 + 50 + 43 + 43 + 37 + 7 + 43 + 80 + 86 + 49 + 80 + 43 + 44 + 85 + 44 + 86 + 44 + 86 + 86 + 129 + 129 + 129 + 130 + 129 + 136 + 166 + 129 + 172 + 172 + 173 + 209 + 172 + 179 + 173 + 208 + 173 + 178 + 173 + 172 + 172 + 167 + 136 + 165 + 129 + 130 + 172 + 215 + 172 + 172 + 172 + 129 + 172 + 129 + 129 + 87 + 129 + 122 + 129 + 130 + 129 + 135 + 129 + 166 + 136 + 165 + 129 + 129 + 93 + 129 + 165 + 172 + 136 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 135 + 123 + 129 + 87 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 166 + 179 + 172 + 165 + 136 + 129 + 172 + 172 + 209 + 214 + 172 + 172 + 172 + 172 + 166 + 128 + 123 + 172 + 129 + 171 + 87 + 43 + 36 + 43 + 87 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 208 + 178 + 209 + 172 + 172 + 208 + 215 + 172 + 215 + 172 + 208 + 172 + 215 + 172 + 166 + 172 + 171 + 166 + 128 + 129 + 129 + 123 + 122 + 86 + 86 + 79 + 86 + 43 + 43 + 86 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 87 + 129 + 130 + 129 + 93 + 130 + 93 + 129 + 88 + 86 + 87 + 87 + 87 + 51 + 51 + 45 + 50 + 15 + 45 + 50 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 43 + 43 + 1 + 80 + 49 + 81 + 86 + 86 + 92 + 123 + 130 + 171 + 131 + 172 + 172 + 172 + 171 + 173 + 209 + 173 + 214 + 173 + 215 + 209 + 178 + 209 + 173 + 178 + 209 + 172 + 173 + 171 + 166 + 136 + 165 + 130 + 136 + 129 + 166 + 135 + 166 + 129 + 135 + 129 + 130 + 129 + 165 + 93 + 129 + 166 + 178 + 172 + 172 + 172 + 165 + 136 + 122 + 93 + 129 + 86 + 129 + 129 + 130 + 165 + 135 + 172 + 172 + 166 + 172 + 171 + 130 + 135 + 130 + 123 + 122 + 86 + 50 + 80 + 44 + 43 + 86 + 123 + 135 + 172 + 172 + 172 + 129 + 165 + 136 + 166 + 172 + 178 + 172 + 172 + 165 + 166 + 129 + 165 + 93 + 165 + 172 + 172 + 171 + 129 + 80 + 43 + 43 + 43 + 43 + 43 + 80 + 85 + 43 + 80 + 43 + 85 + 80 + 43 + 123 + 128 + 129 + 130 + 165 + 165 + 172 + 172 + 172 + 208 + 173 + 172 + 171 + 172 + 166 + 171 + 165 + 129 + 86 + 123 + 85 + 50 + 79 + 80 + 85 + 44 + 121 + 50 + 80 + 50 + 79 + 87 + 92 + 123 + 129 + 123 + 129 + 93 + 93 + 94 + 123 + 87 + 93 + 87 + 88 + 51 + 80 + 51 + 50 + 45 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 0 + 43 + 43 + 80 + 43 + 50 + 79 + 43 + 43 + 43 + 50 + 123 + 93 + 166 + 129 + 215 + 172 + 209 + 179 + 209 + 215 + 179 + 214 + 209 + 179 + 209 + 214 + 179 + 209 + 172 + 173 + 172 + 178 + 166 + 172 + 129 + 129 + 130 + 129 + 129 + 129 + 166 + 135 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 172 + 166 + 178 + 172 + 172 + 173 + 172 + 171 + 172 + 172 + 135 + 165 + 171 + 129 + 87 + 87 + 128 + 130 + 171 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 86 + 86 + 44 + 79 + 8 + 79 + 86 + 87 + 135 + 165 + 172 + 172 + 130 + 135 + 166 + 129 + 129 + 129 + 130 + 129 + 128 + 165 + 129 + 129 + 123 + 86 + 92 + 202 + 215 + 172 + 208 + 129 + 165 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 79 + 86 + 80 + 85 + 86 + 86 + 80 + 85 + 86 + 80 + 129 + 129 + 165 + 172 + 171 + 173 + 172 + 207 + 172 + 166 + 172 + 171 + 129 + 123 + 86 + 79 + 86 + 43 + 86 + 122 + 86 + 86 + 86 + 80 + 86 + 44 + 86 + 87 + 86 + 122 + 88 + 92 + 87 + 93 + 87 + 86 + 87 + 51 + 87 + 45 + 87 + 51 + 51 + 45 + 50 + 51 + 45 + 50 + 51 + 45 + 7 + 42 + 37 + 7 + 36 + 1 + 43 + 43 + 44 + 43 + 43 + 80 + 86 + 86 + 129 + 136 + 209 + 173 + 172 + 215 + 215 + 173 + 215 + 215 + 209 + 179 + 215 + 209 + 172 + 179 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 130 + 129 + 86 + 93 + 122 + 130 + 129 + 166 + 172 + 178 + 172 + 172 + 172 + 165 + 172 + 172 + 172 + 172 + 136 + 171 + 166 + 136 + 165 + 135 + 166 + 135 + 166 + 136 + 172 + 128 + 123 + 92 + 87 + 122 + 93 + 122 + 93 + 129 + 129 + 122 + 93 + 123 + 86 + 87 + 128 + 86 + 44 + 86 + 86 + 130 + 171 + 172 + 173 + 171 + 123 + 93 + 165 + 93 + 123 + 128 + 87 + 128 + 129 + 123 + 129 + 129 + 122 + 86 + 86 + 129 + 208 + 173 + 172 + 208 + 178 + 166 + 171 + 123 + 171 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 165 + 166 + 135 + 123 + 128 + 123 + 129 + 165 + 135 + 166 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 129 + 86 + 86 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 80 + 50 + 80 + 50 + 79 + 87 + 86 + 129 + 123 + 93 + 86 + 51 + 87 + 44 + 51 + 87 + 44 + 86 + 51 + 45 + 50 + 9 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 43 + 0 + 43 + 37 + 7 + 37 + 6 + 37 + 43 + 50 + 86 + 129 + 166 + 172 + 179 + 208 + 173 + 215 + 215 + 209 + 215 + 215 + 215 + 179 + 209 + 214 + 173 + 173 + 208 + 172 + 136 + 166 + 172 + 130 + 129 + 129 + 86 + 80 + 86 + 92 + 123 + 136 + 172 + 208 + 179 + 209 + 178 + 172 + 208 + 173 + 172 + 172 + 135 + 172 + 172 + 165 + 136 + 165 + 136 + 166 + 172 + 172 + 135 + 166 + 135 + 130 + 164 + 93 + 122 + 86 + 93 + 129 + 129 + 130 + 129 + 166 + 172 + 129 + 129 + 86 + 37 + 50 + 122 + 172 + 179 + 172 + 214 + 130 + 86 + 123 + 92 + 123 + 86 + 93 + 128 + 123 + 129 + 129 + 129 + 165 + 129 + 80 + 85 + 86 + 129 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 173 + 207 + 172 + 172 + 165 + 172 + 172 + 172 + 166 + 171 + 166 + 135 + 129 + 130 + 158 + 129 + 130 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 172 + 123 + 128 + 86 + 123 + 86 + 122 + 128 + 87 + 129 + 86 + 86 + 122 + 50 + 80 + 86 + 43 + 87 + 128 + 129 + 87 + 93 + 123 + 50 + 80 + 44 + 49 + 51 + 81 + 50 + 15 + 81 + 51 + 14 + 45 + 51 + 50 + 45 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 7 + 36 + 7 + 37 + 6 + 37 + 86 + 87 + 165 + 137 + 208 + 179 + 209 + 215 + 215 + 172 + 215 + 215 + 209 + 179 + 209 + 179 + 172 + 209 + 172 + 173 + 172 + 172 + 165 + 136 + 172 + 130 + 122 + 50 + 80 + 49 + 80 + 86 + 87 + 171 + 172 + 173 + 178 + 209 + 178 + 209 + 172 + 172 + 171 + 130 + 172 + 214 + 173 + 214 + 172 + 173 + 172 + 178 + 209 + 172 + 178 + 172 + 173 + 172 + 171 + 129 + 166 + 171 + 173 + 178 + 172 + 209 + 179 + 208 + 172 + 130 + 86 + 44 + 43 + 129 + 172 + 172 + 215 + 215 + 86 + 80 + 93 + 122 + 92 + 86 + 86 + 122 + 93 + 123 + 128 + 129 + 165 + 87 + 129 + 122 + 43 + 86 + 129 + 165 + 172 + 172 + 165 + 172 + 208 + 173 + 208 + 178 + 208 + 172 + 208 + 172 + 171 + 166 + 172 + 129 + 172 + 165 + 166 + 171 + 172 + 130 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 135 + 165 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 123 + 86 + 86 + 50 + 80 + 86 + 86 + 129 + 123 + 130 + 86 + 44 + 43 + 44 + 50 + 45 + 51 + 87 + 52 + 45 + 50 + 51 + 45 + 51 + 44 + 51 + 14 + 45 + 43 + 86 + 43 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 7 + 79 + 44 + 129 + 129 + 172 + 209 + 179 + 209 + 215 + 214 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 173 + 172 + 173 + 166 + 171 + 172 + 172 + 131 + 171 + 166 + 93 + 80 + 86 + 43 + 86 + 86 + 123 + 172 + 172 + 178 + 173 + 208 + 179 + 172 + 172 + 166 + 135 + 172 + 215 + 172 + 172 + 208 + 179 + 208 + 172 + 179 + 172 + 208 + 179 + 172 + 208 + 172 + 172 + 173 + 178 + 208 + 215 + 179 + 209 + 215 + 215 + 165 + 130 + 129 + 86 + 7 + 44 + 129 + 208 + 215 + 179 + 172 + 86 + 86 + 87 + 128 + 123 + 93 + 86 + 122 + 128 + 86 + 123 + 129 + 165 + 129 + 129 + 122 + 86 + 43 + 86 + 122 + 129 + 129 + 166 + 135 + 166 + 208 + 178 + 209 + 172 + 215 + 208 + 173 + 208 + 172 + 214 + 172 + 209 + 172 + 214 + 166 + 136 + 207 + 166 + 179 + 208 + 172 + 172 + 165 + 172 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 172 + 165 + 129 + 123 + 86 + 86 + 44 + 86 + 79 + 93 + 129 + 129 + 124 + 86 + 43 + 44 + 43 + 1 + 44 + 86 + 50 + 45 + 51 + 51 + 51 + 51 + 44 + 51 + 15 + 44 + 51 + 45 + 49 + 80 + 49 + 80 + 43 + 1 + 43 + 43 + 43 + 37 + 7 + 44 + 86 + 123 + 171 + 173 + 173 + 215 + 215 + 208 + 179 + 215 + 209 + 215 + 179 + 209 + 215 + 172 + 172 + 166 + 172 + 135 + 172 + 173 + 165 + 136 + 130 + 165 + 92 + 87 + 122 + 93 + 123 + 129 + 87 + 135 + 165 + 172 + 172 + 173 + 172 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 178 + 172 + 172 + 173 + 208 + 178 + 173 + 208 + 179 + 214 + 173 + 214 + 172 + 172 + 172 + 172 + 215 + 209 + 215 + 215 + 173 + 215 + 165 + 87 + 86 + 86 + 123 + 172 + 178 + 215 + 209 + 86 + 86 + 92 + 123 + 128 + 130 + 129 + 86 + 128 + 87 + 128 + 87 + 122 + 129 + 165 + 129 + 172 + 86 + 86 + 80 + 128 + 123 + 129 + 171 + 130 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 209 + 214 + 172 + 208 + 166 + 178 + 172 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 166 + 207 + 172 + 130 + 171 + 172 + 166 + 171 + 172 + 165 + 172 + 165 + 93 + 86 + 79 + 43 + 44 + 123 + 129 + 130 + 171 + 87 + 86 + 37 + 43 + 44 + 43 + 44 + 51 + 44 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 8 + 51 + 50 + 80 + 50 + 80 + 49 + 44 + 79 + 37 + 7 + 43 + 37 + 43 + 50 + 86 + 123 + 172 + 172 + 215 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 215 + 173 + 215 + 173 + 172 + 172 + 166 + 173 + 172 + 129 + 130 + 129 + 129 + 166 + 129 + 130 + 129 + 129 + 87 + 86 + 85 + 87 + 129 + 172 + 166 + 178 + 129 + 166 + 135 + 172 + 172 + 171 + 130 + 172 + 172 + 172 + 172 + 172 + 172 + 214 + 172 + 215 + 173 + 214 + 173 + 214 + 172 + 172 + 173 + 214 + 215 + 209 + 215 + 179 + 209 + 129 + 129 + 44 + 86 + 172 + 172 + 215 + 173 + 214 + 130 + 86 + 86 + 129 + 129 + 129 + 129 + 87 + 128 + 80 + 86 + 128 + 87 + 128 + 129 + 130 + 158 + 136 + 122 + 86 + 86 + 129 + 123 + 129 + 129 + 165 + 129 + 171 + 130 + 171 + 166 + 208 + 172 + 172 + 208 + 179 + 215 + 209 + 214 + 172 + 166 + 172 + 208 + 171 + 173 + 214 + 172 + 208 + 172 + 172 + 172 + 166 + 172 + 172 + 165 + 179 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 44 + 43 + 80 + 86 + 92 + 130 + 167 + 171 + 129 + 44 + 79 + 37 + 43 + 44 + 50 + 87 + 44 + 15 + 51 + 51 + 52 + 51 + 51 + 51 + 51 + 44 + 51 + 51 + 43 + 80 + 49 + 80 + 49 + 43 + 44 + 37 + 43 + 43 + 43 + 80 + 92 + 130 + 172 + 172 + 209 + 215 + 179 + 215 + 209 + 179 + 215 + 208 + 179 + 209 + 172 + 172 + 172 + 172 + 172 + 165 + 173 + 136 + 172 + 130 + 165 + 136 + 129 + 123 + 92 + 124 + 86 + 50 + 79 + 93 + 129 + 164 + 172 + 136 + 172 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 208 + 173 + 214 + 172 + 209 + 179 + 215 + 214 + 179 + 208 + 173 + 171 + 87 + 86 + 86 + 123 + 129 + 129 + 166 + 172 + 172 + 172 + 93 + 85 + 123 + 129 + 129 + 129 + 86 + 129 + 86 + 86 + 122 + 86 + 92 + 123 + 129 + 129 + 122 + 129 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 129 + 171 + 130 + 165 + 129 + 129 + 165 + 172 + 172 + 209 + 172 + 208 + 172 + 172 + 178 + 202 + 172 + 172 + 172 + 208 + 172 + 208 + 214 + 209 + 172 + 172 + 171 + 166 + 172 + 208 + 172 + 208 + 172 + 136 + 165 + 129 + 123 + 85 + 44 + 85 + 81 + 129 + 172 + 130 + 129 + 171 + 80 + 80 + 7 + 43 + 43 + 81 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 80 + 49 + 44 + 80 + 43 + 44 + 43 + 43 + 44 + 85 + 87 + 172 + 172 + 173 + 215 + 179 + 209 + 215 + 179 + 209 + 215 + 179 + 209 + 179 + 172 + 173 + 171 + 167 + 135 + 130 + 172 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 87 + 129 + 123 + 86 + 86 + 93 + 123 + 129 + 135 + 172 + 129 + 172 + 209 + 172 + 172 + 171 + 136 + 172 + 166 + 172 + 172 + 178 + 166 + 172 + 172 + 178 + 172 + 209 + 214 + 173 + 215 + 215 + 215 + 214 + 130 + 122 + 86 + 123 + 128 + 129 + 166 + 173 + 171 + 130 + 136 + 165 + 172 + 123 + 92 + 86 + 130 + 128 + 123 + 129 + 92 + 87 + 86 + 128 + 86 + 86 + 80 + 128 + 87 + 165 + 92 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 165 + 129 + 165 + 135 + 165 + 130 + 165 + 129 + 128 + 166 + 172 + 208 + 208 + 178 + 209 + 208 + 172 + 208 + 130 + 207 + 172 + 209 + 172 + 208 + 171 + 209 + 214 + 173 + 172 + 201 + 172 + 208 + 172 + 172 + 172 + 202 + 129 + 128 + 80 + 86 + 43 + 86 + 122 + 130 + 172 + 172 + 129 + 165 + 86 + 1 + 43 + 37 + 86 + 8 + 86 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 86 + 87 + 86 + 50 + 86 + 43 + 43 + 44 + 43 + 8 + 49 + 87 + 129 + 166 + 178 + 173 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 215 + 173 + 215 + 137 + 208 + 136 + 167 + 135 + 130 + 130 + 135 + 130 + 93 + 94 + 129 + 93 + 87 + 87 + 130 + 86 + 86 + 86 + 87 + 128 + 129 + 130 + 171 + 136 + 172 + 173 + 165 + 136 + 165 + 130 + 135 + 172 + 166 + 171 + 172 + 171 + 172 + 172 + 172 + 209 + 178 + 209 + 214 + 209 + 135 + 123 + 122 + 129 + 86 + 172 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 123 + 129 + 129 + 122 + 93 + 123 + 129 + 135 + 87 + 128 + 123 + 86 + 50 + 79 + 93 + 122 + 86 + 86 + 129 + 129 + 129 + 87 + 129 + 129 + 165 + 171 + 166 + 136 + 171 + 166 + 165 + 171 + 166 + 135 + 165 + 130 + 165 + 208 + 172 + 209 + 214 + 172 + 202 + 172 + 208 + 165 + 129 + 129 + 165 + 208 + 172 + 171 + 166 + 165 + 172 + 172 + 165 + 208 + 172 + 172 + 172 + 208 + 172 + 208 + 129 + 122 + 44 + 79 + 86 + 86 + 123 + 135 + 172 + 166 + 165 + 136 + 43 + 37 + 42 + 43 + 44 + 80 + 50 + 52 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 43 + 44 + 79 + 44 + 49 + 44 + 50 + 80 + 50 + 86 + 86 + 129 + 136 + 166 + 179 + 209 + 179 + 179 + 209 + 178 + 215 + 173 + 215 + 172 + 215 + 173 + 179 + 172 + 166 + 136 + 136 + 166 + 129 + 136 + 94 + 130 + 130 + 136 + 93 + 87 + 87 + 86 + 87 + 87 + 86 + 86 + 86 + 86 + 129 + 93 + 165 + 172 + 172 + 129 + 129 + 166 + 135 + 172 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 208 + 178 + 209 + 172 + 165 + 129 + 123 + 92 + 123 + 171 + 166 + 172 + 172 + 171 + 172 + 166 + 171 + 166 + 129 + 123 + 128 + 93 + 165 + 129 + 135 + 129 + 165 + 93 + 122 + 86 + 87 + 49 + 80 + 86 + 92 + 86 + 92 + 123 + 86 + 172 + 129 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 166 + 171 + 172 + 165 + 129 + 165 + 166 + 172 + 207 + 172 + 209 + 215 + 215 + 208 + 165 + 172 + 128 + 159 + 129 + 172 + 208 + 172 + 202 + 172 + 171 + 166 + 171 + 166 + 172 + 208 + 171 + 166 + 172 + 165 + 123 + 122 + 43 + 79 + 86 + 129 + 129 + 165 + 172 + 166 + 129 + 165 + 43 + 43 + 43 + 43 + 44 + 87 + 44 + 51 + 87 + 51 + 51 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 45 + 85 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 43 + 43 + 50 + 87 + 135 + 173 + 172 + 173 + 215 + 172 + 179 + 215 + 173 + 179 + 173 + 214 + 173 + 179 + 172 + 172 + 136 + 166 + 135 + 130 + 172 + 94 + 135 + 131 + 136 + 93 + 129 + 87 + 93 + 86 + 88 + 128 + 87 + 86 + 86 + 79 + 50 + 86 + 123 + 128 + 93 + 130 + 165 + 135 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 214 + 173 + 172 + 171 + 130 + 122 + 86 + 86 + 165 + 166 + 172 + 171 + 130 + 171 + 172 + 208 + 172 + 173 + 172 + 172 + 165 + 171 + 130 + 165 + 136 + 172 + 172 + 165 + 136 + 122 + 87 + 128 + 86 + 86 + 44 + 86 + 86 + 86 + 128 + 87 + 92 + 165 + 93 + 129 + 164 + 130 + 165 + 172 + 172 + 166 + 172 + 171 + 130 + 171 + 166 + 129 + 128 + 165 + 166 + 172 + 208 + 129 + 208 + 208 + 172 + 208 + 172 + 166 + 171 + 166 + 171 + 209 + 208 + 208 + 172 + 214 + 166 + 208 + 172 + 202 + 135 + 165 + 166 + 128 + 165 + 87 + 79 + 43 + 79 + 92 + 123 + 165 + 130 + 171 + 129 + 166 + 129 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 50 + 51 + 87 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 51 + 45 + 86 + 43 + 43 + 50 + 43 + 44 + 86 + 43 + 44 + 50 + 86 + 87 + 129 + 136 + 172 + 172 + 173 + 179 + 173 + 208 + 179 + 173 + 178 + 209 + 179 + 172 + 172 + 172 + 130 + 136 + 130 + 171 + 130 + 136 + 130 + 100 + 129 + 94 + 130 + 92 + 88 + 86 + 87 + 129 + 123 + 92 + 86 + 86 + 87 + 122 + 93 + 129 + 165 + 130 + 135 + 172 + 166 + 172 + 172 + 214 + 172 + 179 + 209 + 178 + 171 + 166 + 86 + 122 + 87 + 171 + 172 + 208 + 208 + 172 + 172 + 172 + 208 + 172 + 171 + 166 + 172 + 171 + 166 + 136 + 208 + 172 + 171 + 172 + 209 + 172 + 136 + 165 + 92 + 86 + 87 + 86 + 86 + 80 + 86 + 49 + 80 + 86 + 93 + 122 + 93 + 122 + 93 + 129 + 123 + 171 + 166 + 172 + 171 + 208 + 136 + 166 + 171 + 165 + 129 + 166 + 165 + 172 + 208 + 172 + 208 + 208 + 165 + 136 + 208 + 208 + 172 + 165 + 166 + 171 + 166 + 172 + 208 + 171 + 202 + 172 + 172 + 165 + 129 + 165 + 208 + 129 + 165 + 123 + 86 + 79 + 79 + 86 + 86 + 129 + 165 + 129 + 166 + 135 + 165 + 123 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 50 + 43 + 44 + 43 + 43 + 49 + 44 + 43 + 44 + 43 + 43 + 86 + 93 + 129 + 166 + 178 + 172 + 173 + 172 + 215 + 173 + 178 + 173 + 179 + 208 + 173 + 172 + 136 + 172 + 130 + 130 + 135 + 130 + 136 + 136 + 130 + 94 + 129 + 94 + 86 + 87 + 86 + 88 + 92 + 123 + 129 + 93 + 86 + 79 + 50 + 122 + 93 + 123 + 135 + 165 + 172 + 135 + 208 + 173 + 178 + 215 + 208 + 172 + 172 + 130 + 171 + 172 + 130 + 171 + 166 + 214 + 209 + 215 + 172 + 172 + 172 + 208 + 172 + 208 + 172 + 172 + 166 + 172 + 208 + 178 + 209 + 215 + 172 + 178 + 208 + 172 + 123 + 93 + 86 + 86 + 122 + 43 + 86 + 50 + 79 + 43 + 50 + 122 + 86 + 129 + 93 + 122 + 50 + 80 + 128 + 129 + 166 + 172 + 208 + 172 + 165 + 136 + 171 + 166 + 165 + 165 + 165 + 136 + 165 + 172 + 208 + 209 + 207 + 166 + 214 + 166 + 172 + 165 + 166 + 171 + 172 + 208 + 202 + 172 + 171 + 166 + 165 + 122 + 123 + 129 + 165 + 123 + 122 + 85 + 43 + 80 + 122 + 86 + 129 + 129 + 129 + 165 + 166 + 171 + 86 + 43 + 43 + 79 + 44 + 43 + 87 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 44 + 43 + 50 + 43 + 44 + 43 + 50 + 43 + 80 + 50 + 86 + 93 + 87 + 172 + 136 + 172 + 136 + 172 + 173 + 172 + 173 + 208 + 179 + 166 + 136 + 172 + 172 + 172 + 136 + 172 + 130 + 135 + 172 + 94 + 136 + 94 + 123 + 94 + 86 + 87 + 86 + 87 + 129 + 129 + 129 + 87 + 128 + 92 + 86 + 86 + 86 + 87 + 165 + 136 + 172 + 172 + 215 + 215 + 173 + 178 + 172 + 172 + 209 + 172 + 214 + 208 + 173 + 214 + 208 + 172 + 208 + 172 + 172 + 215 + 172 + 172 + 166 + 172 + 214 + 208 + 215 + 215 + 208 + 179 + 209 + 214 + 209 + 172 + 135 + 86 + 86 + 93 + 80 + 86 + 86 + 49 + 123 + 49 + 43 + 122 + 93 + 86 + 79 + 93 + 123 + 86 + 86 + 92 + 166 + 128 + 173 + 171 + 166 + 172 + 165 + 172 + 165 + 129 + 165 + 172 + 208 + 166 + 172 + 165 + 208 + 172 + 208 + 208 + 172 + 208 + 166 + 171 + 166 + 207 + 172 + 166 + 171 + 166 + 122 + 129 + 165 + 129 + 123 + 122 + 116 + 49 + 79 + 79 + 80 + 92 + 123 + 129 + 129 + 122 + 172 + 172 + 129 + 79 + 80 + 49 + 43 + 80 + 50 + 87 + 86 + 50 + 52 + 51 + 51 + 51 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 43 + 43 + 44 + 43 + 43 + 80 + 50 + 43 + 43 + 44 + 86 + 50 + 86 + 129 + 130 + 135 + 167 + 136 + 172 + 136 + 172 + 173 + 172 + 179 + 172 + 172 + 172 + 137 + 166 + 136 + 171 + 130 + 137 + 130 + 172 + 101 + 130 + 99 + 123 + 93 + 87 + 51 + 86 + 122 + 129 + 130 + 129 + 171 + 130 + 129 + 129 + 86 + 86 + 128 + 129 + 130 + 172 + 208 + 179 + 209 + 214 + 215 + 172 + 215 + 209 + 178 + 172 + 172 + 166 + 172 + 208 + 214 + 173 + 208 + 172 + 214 + 173 + 208 + 172 + 201 + 172 + 215 + 173 + 214 + 215 + 208 + 179 + 209 + 214 + 173 + 135 + 122 + 86 + 86 + 50 + 86 + 122 + 44 + 86 + 86 + 86 + 43 + 86 + 87 + 122 + 93 + 122 + 50 + 43 + 122 + 129 + 123 + 171 + 172 + 172 + 172 + 165 + 172 + 129 + 159 + 171 + 165 + 166 + 171 + 172 + 209 + 207 + 130 + 165 + 171 + 166 + 172 + 207 + 209 + 208 + 172 + 165 + 165 + 166 + 171 + 129 + 165 + 129 + 159 + 122 + 87 + 86 + 79 + 79 + 79 + 43 + 123 + 128 + 87 + 122 + 129 + 171 + 129 + 123 + 43 + 79 + 43 + 86 + 44 + 86 + 86 + 87 + 51 + 56 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 51 + 51 + 52 + 36 + 43 + 7 + 43 + 43 + 44 + 79 + 50 + 44 + 50 + 86 + 87 + 86 + 129 + 136 + 130 + 136 + 171 + 167 + 172 + 178 + 173 + 172 + 179 + 173 + 173 + 172 + 172 + 172 + 172 + 130 + 171 + 136 + 173 + 136 + 136 + 130 + 136 + 87 + 130 + 86 + 50 + 86 + 87 + 86 + 129 + 166 + 135 + 172 + 172 + 129 + 129 + 129 + 128 + 129 + 129 + 173 + 178 + 209 + 214 + 173 + 215 + 215 + 215 + 179 + 208 + 214 + 172 + 209 + 172 + 208 + 172 + 172 + 172 + 172 + 215 + 172 + 165 + 172 + 172 + 208 + 173 + 214 + 215 + 208 + 215 + 209 + 178 + 215 + 172 + 166 + 93 + 122 + 86 + 86 + 86 + 50 + 85 + 129 + 86 + 44 + 86 + 86 + 85 + 86 + 129 + 129 + 86 + 43 + 79 + 86 + 129 + 166 + 172 + 172 + 172 + 165 + 172 + 122 + 129 + 166 + 165 + 129 + 171 + 202 + 214 + 166 + 172 + 208 + 165 + 172 + 165 + 172 + 208 + 165 + 172 + 166 + 171 + 165 + 129 + 208 + 123 + 129 + 165 + 122 + 86 + 116 + 86 + 43 + 86 + 122 + 86 + 123 + 128 + 130 + 129 + 165 + 129 + 122 + 50 + 79 + 44 + 85 + 44 + 122 + 93 + 51 + 51 + 93 + 51 + 51 + 87 + 50 + 51 + 51 + 86 + 51 + 51 + 86 + 7 + 36 + 7 + 37 + 7 + 43 + 44 + 85 + 44 + 43 + 87 + 50 + 128 + 124 + 135 + 130 + 136 + 129 + 172 + 136 + 173 + 215 + 172 + 179 + 172 + 172 + 173 + 172 + 172 + 173 + 172 + 172 + 179 + 173 + 142 + 173 + 136 + 130 + 129 + 94 + 86 + 51 + 86 + 80 + 86 + 129 + 172 + 172 + 172 + 179 + 166 + 171 + 130 + 129 + 129 + 171 + 172 + 172 + 172 + 209 + 178 + 215 + 209 + 178 + 215 + 209 + 178 + 208 + 173 + 208 + 178 + 166 + 208 + 172 + 214 + 209 + 172 + 172 + 165 + 172 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 172 + 215 + 172 + 129 + 129 + 86 + 87 + 86 + 91 + 123 + 43 + 129 + 86 + 43 + 80 + 86 + 50 + 122 + 92 + 123 + 93 + 86 + 79 + 86 + 80 + 135 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 123 + 165 + 165 + 129 + 171 + 166 + 172 + 208 + 165 + 172 + 166 + 207 + 130 + 171 + 202 + 171 + 129 + 165 + 165 + 130 + 171 + 159 + 129 + 123 + 164 + 86 + 87 + 116 + 86 + 122 + 86 + 122 + 93 + 122 + 165 + 136 + 165 + 129 + 122 + 44 + 85 + 80 + 85 + 87 + 86 + 93 + 87 + 51 + 86 + 57 + 51 + 87 + 51 + 51 + 86 + 87 + 51 + 87 + 51 + 43 + 7 + 36 + 7 + 43 + 37 + 7 + 50 + 44 + 43 + 86 + 50 + 86 + 123 + 93 + 166 + 135 + 130 + 136 + 172 + 215 + 172 + 215 + 173 + 179 + 172 + 172 + 179 + 172 + 172 + 179 + 215 + 215 + 215 + 179 + 131 + 100 + 165 + 100 + 131 + 86 + 86 + 44 + 86 + 44 + 128 + 130 + 171 + 130 + 172 + 136 + 165 + 130 + 171 + 129 + 172 + 172 + 172 + 172 + 208 + 179 + 215 + 172 + 215 + 172 + 215 + 208 + 179 + 208 + 172 + 166 + 172 + 214 + 209 + 178 + 208 + 172 + 166 + 172 + 171 + 173 + 208 + 215 + 208 + 215 + 208 + 179 + 172 + 215 + 171 + 129 + 87 + 85 + 86 + 87 + 129 + 129 + 86 + 80 + 86 + 43 + 43 + 50 + 86 + 123 + 128 + 93 + 129 + 86 + 79 + 43 + 43 + 129 + 166 + 171 + 166 + 172 + 165 + 129 + 165 + 129 + 159 + 129 + 165 + 129 + 165 + 165 + 135 + 202 + 172 + 165 + 172 + 165 + 172 + 208 + 165 + 123 + 129 + 165 + 165 + 130 + 171 + 123 + 128 + 86 + 123 + 122 + 122 + 87 + 165 + 123 + 92 + 123 + 129 + 164 + 130 + 129 + 128 + 87 + 85 + 80 + 86 + 87 + 122 + 87 + 50 + 128 + 51 + 87 + 57 + 87 + 51 + 93 + 87 + 51 + 87 + 93 + 87 + 93 + 43 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 44 + 43 + 14 + 80 + 86 + 93 + 93 + 130 + 130 + 130 + 171 + 172 + 179 + 173 + 215 + 173 + 178 + 173 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 129 + 130 + 172 + 129 + 129 + 87 + 43 + 44 + 86 + 86 + 129 + 136 + 172 + 166 + 214 + 172 + 215 + 172 + 179 + 215 + 208 + 173 + 214 + 209 + 215 + 215 + 208 + 214 + 173 + 214 + 209 + 172 + 172 + 214 + 166 + 172 + 214 + 172 + 209 + 172 + 172 + 165 + 172 + 166 + 171 + 215 + 172 + 215 + 209 + 215 + 208 + 178 + 209 + 135 + 123 + 86 + 86 + 93 + 122 + 129 + 129 + 93 + 80 + 49 + 43 + 79 + 50 + 80 + 86 + 129 + 171 + 129 + 86 + 43 + 43 + 79 + 44 + 171 + 166 + 171 + 166 + 171 + 166 + 129 + 129 + 122 + 130 + 165 + 165 + 166 + 171 + 129 + 166 + 171 + 165 + 165 + 130 + 207 + 172 + 202 + 135 + 166 + 122 + 129 + 166 + 165 + 128 + 87 + 122 + 122 + 87 + 128 + 123 + 165 + 129 + 129 + 129 + 129 + 129 + 129 + 165 + 86 + 44 + 86 + 86 + 86 + 123 + 86 + 86 + 87 + 57 + 87 + 93 + 87 + 93 + 93 + 87 + 93 + 87 + 130 + 86 + 94 + 93 + 79 + 43 + 43 + 7 + 37 + 43 + 7 + 43 + 44 + 43 + 50 + 86 + 44 + 129 + 87 + 130 + 135 + 167 + 172 + 173 + 178 + 215 + 172 + 215 + 179 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 86 + 122 + 130 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 166 + 172 + 172 + 178 + 172 + 215 + 208 + 172 + 215 + 214 + 209 + 178 + 208 + 215 + 209 + 215 + 172 + 215 + 172 + 208 + 172 + 209 + 171 + 172 + 172 + 209 + 172 + 208 + 214 + 166 + 172 + 172 + 172 + 172 + 172 + 208 + 215 + 208 + 215 + 215 + 172 + 172 + 129 + 129 + 86 + 86 + 87 + 128 + 129 + 129 + 87 + 128 + 80 + 43 + 79 + 86 + 85 + 87 + 129 + 172 + 159 + 128 + 50 + 79 + 37 + 43 + 128 + 129 + 166 + 172 + 135 + 166 + 135 + 159 + 93 + 122 + 129 + 166 + 135 + 166 + 172 + 171 + 166 + 165 + 172 + 129 + 166 + 135 + 166 + 171 + 129 + 160 + 129 + 129 + 129 + 165 + 129 + 86 + 122 + 93 + 122 + 129 + 129 + 123 + 128 + 87 + 129 + 129 + 171 + 123 + 92 + 80 + 86 + 86 + 86 + 93 + 86 + 87 + 86 + 86 + 93 + 87 + 129 + 93 + 130 + 129 + 129 + 93 + 129 + 129 + 93 + 130 + 79 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 8 + 43 + 50 + 86 + 87 + 93 + 123 + 136 + 130 + 172 + 172 + 173 + 179 + 179 + 214 + 209 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 7 + 43 + 87 + 165 + 172 + 172 + 86 + 43 + 49 + 87 + 122 + 136 + 165 + 178 + 173 + 172 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 179 + 209 + 215 + 214 + 208 + 209 + 178 + 172 + 166 + 172 + 208 + 178 + 209 + 172 + 172 + 172 + 208 + 172 + 166 + 171 + 172 + 209 + 214 + 215 + 209 + 214 + 172 + 172 + 129 + 87 + 85 + 87 + 128 + 130 + 129 + 135 + 166 + 122 + 86 + 86 + 79 + 86 + 43 + 122 + 129 + 172 + 129 + 172 + 80 + 42 + 37 + 43 + 43 + 129 + 165 + 172 + 165 + 129 + 172 + 166 + 128 + 129 + 166 + 165 + 171 + 130 + 129 + 208 + 136 + 166 + 171 + 166 + 129 + 129 + 165 + 130 + 128 + 123 + 129 + 171 + 129 + 165 + 87 + 79 + 128 + 87 + 129 + 122 + 129 + 129 + 123 + 93 + 171 + 129 + 130 + 128 + 86 + 80 + 86 + 86 + 93 + 86 + 86 + 87 + 92 + 123 + 129 + 130 + 129 + 136 + 130 + 130 + 135 + 130 + 130 + 136 + 129 + 129 + 44 + 85 + 80 + 50 + 43 + 43 + 44 + 36 + 44 + 50 + 50 + 50 + 87 + 129 + 130 + 131 + 171 + 137 + 171 + 173 + 172 + 215 + 179 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 43 + 79 + 50 + 123 + 178 + 172 + 129 + 86 + 80 + 43 + 86 + 129 + 136 + 208 + 172 + 172 + 179 + 208 + 179 + 208 + 208 + 179 + 209 + 214 + 214 + 209 + 178 + 208 + 173 + 208 + 214 + 166 + 172 + 172 + 208 + 179 + 208 + 208 + 172 + 172 + 172 + 172 + 208 + 130 + 171 + 209 + 208 + 179 + 208 + 215 + 172 + 172 + 172 + 86 + 86 + 80 + 135 + 129 + 166 + 171 + 136 + 122 + 86 + 86 + 79 + 43 + 86 + 86 + 123 + 171 + 166 + 172 + 85 + 37 + 43 + 0 + 80 + 129 + 129 + 129 + 171 + 130 + 129 + 164 + 130 + 123 + 128 + 172 + 172 + 166 + 129 + 165 + 129 + 172 + 129 + 166 + 171 + 130 + 171 + 130 + 165 + 128 + 123 + 129 + 129 + 129 + 80 + 86 + 128 + 86 + 165 + 129 + 129 + 129 + 165 + 129 + 171 + 129 + 87 + 86 + 49 + 80 + 86 + 93 + 87 + 122 + 93 + 86 + 87 + 129 + 129 + 136 + 129 + 136 + 129 + 130 + 172 + 129 + 130 + 136 + 129 + 129 + 86 + 44 + 86 + 86 + 44 + 79 + 44 + 49 + 8 + 43 + 49 + 86 + 94 + 129 + 130 + 129 + 172 + 172 + 130 + 171 + 136 + 178 + 209 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 86 + 43 + 43 + 43 + 86 + 166 + 178 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 165 + 130 + 178 + 172 + 209 + 171 + 208 + 173 + 208 + 178 + 209 + 208 + 179 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 209 + 178 + 209 + 172 + 171 + 172 + 166 + 172 + 172 + 129 + 165 + 172 + 215 + 209 + 214 + 173 + 214 + 173 + 165 + 93 + 79 + 50 + 129 + 166 + 172 + 172 + 171 + 87 + 86 + 122 + 43 + 79 + 86 + 86 + 129 + 165 + 172 + 166 + 92 + 80 + 42 + 37 + 43 + 86 + 129 + 165 + 123 + 129 + 128 + 87 + 171 + 208 + 129 + 123 + 172 + 172 + 129 + 165 + 93 + 165 + 172 + 166 + 171 + 166 + 135 + 166 + 172 + 165 + 123 + 92 + 123 + 128 + 123 + 86 + 129 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 135 + 129 + 86 + 86 + 86 + 87 + 122 + 93 + 129 + 86 + 87 + 92 + 130 + 129 + 130 + 135 + 130 + 130 + 129 + 166 + 135 + 129 + 130 + 129 + 130 + 129 + 86 + 87 + 92 + 80 + 49 + 80 + 43 + 44 + 49 + 44 + 50 + 87 + 92 + 125 + 99 + 129 + 166 + 136 + 130 + 135 + 130 + 171 + 142 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 43 + 43 + 43 + 43 + 50 + 122 + 172 + 178 + 172 + 130 + 85 + 80 + 49 + 44 + 86 + 129 + 172 + 165 + 136 + 172 + 165 + 172 + 209 + 178 + 208 + 208 + 215 + 172 + 208 + 179 + 171 + 202 + 172 + 172 + 215 + 209 + 172 + 208 + 178 + 208 + 172 + 166 + 129 + 165 + 93 + 171 + 209 + 172 + 214 + 209 + 215 + 172 + 172 + 165 + 92 + 44 + 85 + 130 + 135 + 165 + 136 + 166 + 128 + 87 + 122 + 86 + 79 + 49 + 87 + 165 + 129 + 171 + 165 + 129 + 86 + 79 + 1 + 43 + 43 + 122 + 129 + 86 + 86 + 123 + 128 + 123 + 135 + 166 + 171 + 130 + 165 + 171 + 123 + 135 + 166 + 171 + 130 + 165 + 172 + 129 + 172 + 166 + 170 + 123 + 129 + 86 + 122 + 86 + 86 + 129 + 123 + 128 + 129 + 166 + 129 + 171 + 130 + 135 + 123 + 85 + 51 + 86 + 122 + 129 + 87 + 129 + 129 + 86 + 93 + 93 + 129 + 129 + 130 + 129 + 172 + 129 + 93 + 130 + 172 + 93 + 130 + 129 + 136 + 122 + 129 + 86 + 123 + 49 + 80 + 50 + 43 + 44 + 50 + 44 + 86 + 50 + 93 + 123 + 129 + 129 + 129 + 129 + 93 + 136 + 165 + 136 + 172 + 172 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 43 + 43 + 43 + 87 + 172 + 172 + 178 + 172 + 166 + 86 + 43 + 0 + 80 + 92 + 166 + 135 + 129 + 172 + 166 + 214 + 172 + 172 + 209 + 215 + 172 + 208 + 172 + 172 + 209 + 172 + 172 + 208 + 178 + 208 + 173 + 171 + 173 + 208 + 171 + 166 + 172 + 129 + 129 + 165 + 172 + 166 + 214 + 172 + 173 + 214 + 172 + 129 + 44 + 85 + 87 + 129 + 172 + 171 + 129 + 129 + 123 + 128 + 87 + 85 + 86 + 79 + 87 + 165 + 86 + 172 + 129 + 129 + 122 + 122 + 7 + 37 + 42 + 80 + 86 + 86 + 122 + 86 + 122 + 129 + 129 + 172 + 165 + 166 + 171 + 130 + 129 + 165 + 129 + 165 + 129 + 129 + 172 + 172 + 202 + 135 + 172 + 123 + 128 + 123 + 92 + 129 + 165 + 129 + 165 + 129 + 166 + 171 + 178 + 166 + 135 + 123 + 86 + 86 + 50 + 122 + 92 + 123 + 93 + 128 + 87 + 128 + 87 + 129 + 130 + 93 + 136 + 165 + 136 + 130 + 129 + 172 + 130 + 136 + 135 + 166 + 136 + 86 + 129 + 123 + 86 + 86 + 86 + 43 + 50 + 43 + 44 + 49 + 44 + 51 + 86 + 86 + 87 + 92 + 129 + 93 + 86 + 134 + 93 + 129 + 136 + 171 + 130 + 141 + 171 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 44 + 85 + 43 + 43 + 86 + 129 + 173 + 208 + 171 + 136 + 123 + 85 + 50 + 44 + 86 + 128 + 130 + 129 + 166 + 172 + 208 + 171 + 172 + 172 + 209 + 172 + 208 + 179 + 208 + 172 + 208 + 165 + 178 + 173 + 208 + 172 + 172 + 202 + 172 + 171 + 172 + 130 + 165 + 129 + 129 + 165 + 172 + 136 + 201 + 173 + 171 + 136 + 123 + 49 + 86 + 86 + 166 + 172 + 135 + 123 + 129 + 87 + 128 + 122 + 44 + 86 + 79 + 86 + 122 + 92 + 129 + 166 + 128 + 129 + 123 + 43 + 42 + 37 + 86 + 43 + 86 + 79 + 43 + 85 + 123 + 123 + 128 + 130 + 171 + 129 + 129 + 165 + 130 + 171 + 166 + 129 + 129 + 129 + 165 + 172 + 166 + 171 + 129 + 130 + 128 + 165 + 123 + 129 + 129 + 129 + 165 + 130 + 172 + 171 + 172 + 129 + 86 + 123 + 86 + 91 + 87 + 129 + 129 + 92 + 87 + 86 + 93 + 87 + 128 + 129 + 130 + 129 + 172 + 130 + 136 + 172 + 129 + 173 + 135 + 172 + 166 + 136 + 128 + 87 + 129 + 86 + 86 + 86 + 44 + 44 + 49 + 44 + 44 + 50 + 49 + 80 + 50 + 87 + 85 + 93 + 86 + 91 + 87 + 92 + 128 + 129 + 135 + 129 + 134 + 135 + 134 + 171 + 178 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 44 + 85 + 44 + 43 + 92 + 166 + 172 + 172 + 172 + 129 + 92 + 86 + 80 + 49 + 86 + 129 + 129 + 165 + 172 + 166 + 172 + 135 + 166 + 172 + 171 + 208 + 172 + 209 + 172 + 172 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 165 + 172 + 172 + 166 + 129 + 129 + 129 + 165 + 129 + 129 + 165 + 172 + 129 + 129 + 86 + 43 + 92 + 123 + 129 + 171 + 130 + 122 + 86 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 122 + 86 + 129 + 165 + 172 + 123 + 129 + 85 + 43 + 1 + 79 + 43 + 79 + 86 + 43 + 80 + 128 + 129 + 129 + 129 + 129 + 165 + 129 + 166 + 129 + 172 + 165 + 165 + 129 + 130 + 171 + 129 + 166 + 172 + 165 + 171 + 129 + 166 + 172 + 129 + 165 + 129 + 129 + 165 + 172 + 172 + 129 + 129 + 86 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 44 + 86 + 86 + 87 + 93 + 171 + 130 + 136 + 172 + 172 + 137 + 172 + 172 + 130 + 173 + 171 + 136 + 129 + 129 + 86 + 123 + 86 + 50 + 86 + 44 + 50 + 43 + 44 + 50 + 49 + 79 + 50 + 49 + 80 + 86 + 50 + 86 + 91 + 86 + 92 + 91 + 92 + 91 + 128 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 129 + 49 + 80 + 50 + 85 + 44 + 79 + 86 + 129 + 172 + 172 + 172 + 129 + 129 + 86 + 50 + 79 + 86 + 93 + 123 + 128 + 166 + 172 + 172 + 129 + 165 + 129 + 136 + 165 + 208 + 172 + 166 + 136 + 171 + 209 + 172 + 208 + 172 + 208 + 172 + 165 + 172 + 166 + 171 + 130 + 129 + 128 + 166 + 129 + 122 + 129 + 136 + 122 + 129 + 86 + 7 + 86 + 123 + 128 + 172 + 130 + 85 + 50 + 79 + 86 + 79 + 44 + 122 + 86 + 86 + 86 + 85 + 80 + 172 + 172 + 165 + 129 + 86 + 79 + 37 + 43 + 42 + 43 + 80 + 85 + 87 + 122 + 129 + 129 + 165 + 129 + 172 + 129 + 172 + 129 + 165 + 136 + 172 + 166 + 171 + 208 + 172 + 166 + 135 + 172 + 166 + 165 + 135 + 166 + 208 + 129 + 171 + 130 + 165 + 172 + 172 + 129 + 86 + 86 + 123 + 92 + 130 + 129 + 129 + 129 + 129 + 86 + 44 + 49 + 86 + 87 + 129 + 130 + 172 + 136 + 173 + 173 + 172 + 178 + 172 + 173 + 172 + 173 + 173 + 165 + 93 + 122 + 87 + 86 + 86 + 86 + 50 + 80 + 7 + 50 + 44 + 50 + 80 + 49 + 50 + 85 + 50 + 86 + 91 + 49 + 92 + 86 + 92 + 91 + 128 + 91 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 172 + 79 + 86 + 50 + 86 + 86 + 44 + 85 + 123 + 136 + 172 + 171 + 166 + 129 + 92 + 87 + 86 + 86 + 122 + 93 + 165 + 172 + 172 + 165 + 130 + 128 + 166 + 171 + 166 + 136 + 171 + 166 + 171 + 166 + 178 + 209 + 129 + 172 + 172 + 172 + 208 + 165 + 172 + 136 + 165 + 129 + 165 + 128 + 123 + 86 + 129 + 128 + 87 + 86 + 86 + 43 + 86 + 129 + 130 + 129 + 171 + 87 + 86 + 86 + 79 + 86 + 36 + 86 + 86 + 86 + 122 + 86 + 80 + 171 + 172 + 129 + 129 + 123 + 86 + 43 + 86 + 43 + 43 + 79 + 79 + 87 + 122 + 86 + 129 + 128 + 166 + 172 + 165 + 135 + 166 + 129 + 171 + 208 + 166 + 172 + 172 + 171 + 172 + 166 + 172 + 172 + 172 + 165 + 129 + 172 + 129 + 165 + 172 + 171 + 130 + 129 + 122 + 92 + 123 + 86 + 129 + 129 + 129 + 136 + 129 + 129 + 86 + 92 + 87 + 87 + 129 + 129 + 172 + 136 + 172 + 173 + 172 + 173 + 178 + 173 + 173 + 178 + 173 + 172 + 129 + 129 + 123 + 86 + 87 + 86 + 86 + 86 + 44 + 49 + 8 + 43 + 50 + 86 + 86 + 49 + 86 + 86 + 56 + 85 + 92 + 85 + 55 + 86 + 91 + 127 + 98 + 134 + 97 + 171 + 177 + 214 + 215 + 215 + 215 + 172 + 86 + 86 + 50 + 79 + 87 + 85 + 86 + 87 + 129 + 172 + 172 + 172 + 171 + 87 + 129 + 92 + 87 + 128 + 123 + 172 + 171 + 172 + 165 + 129 + 130 + 165 + 172 + 172 + 172 + 201 + 172 + 136 + 165 + 172 + 208 + 166 + 172 + 135 + 166 + 214 + 166 + 172 + 165 + 129 + 129 + 171 + 87 + 85 + 80 + 93 + 122 + 86 + 86 + 86 + 43 + 129 + 129 + 165 + 130 + 135 + 123 + 86 + 122 + 86 + 86 + 79 + 86 + 86 + 122 + 86 + 129 + 80 + 129 + 135 + 165 + 129 + 165 + 87 + 86 + 85 + 80 + 43 + 86 + 79 + 86 + 86 + 129 + 122 + 129 + 129 + 166 + 171 + 130 + 171 + 166 + 171 + 172 + 166 + 129 + 172 + 207 + 172 + 166 + 172 + 208 + 172 + 171 + 172 + 172 + 165 + 166 + 171 + 130 + 129 + 122 + 93 + 86 + 129 + 86 + 129 + 129 + 135 + 130 + 171 + 129 + 130 + 93 + 130 + 130 + 129 + 172 + 172 + 137 + 172 + 172 + 173 + 215 + 173 + 208 + 179 + 173 + 208 + 179 + 129 + 123 + 92 + 87 + 122 + 86 + 86 + 44 + 49 + 44 + 7 + 44 + 50 + 92 + 50 + 85 + 50 + 85 + 55 + 85 + 92 + 49 + 85 + 55 + 92 + 127 + 98 + 133 + 141 + 140 + 178 + 214 + 215 + 214 + 215 + 172 + 129 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 122 + 136 + 172 + 172 + 165 + 130 + 129 + 128 + 87 + 128 + 129 + 172 + 165 + 130 + 171 + 172 + 166 + 165 + 172 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 130 + 165 + 135 + 123 + 50 + 79 + 86 + 50 + 80 + 85 + 86 + 86 + 123 + 128 + 129 + 129 + 165 + 129 + 86 + 129 + 122 + 129 + 80 + 86 + 85 + 86 + 86 + 123 + 129 + 79 + 87 + 170 + 129 + 166 + 129 + 165 + 129 + 86 + 122 + 86 + 86 + 86 + 79 + 129 + 122 + 93 + 129 + 159 + 135 + 166 + 172 + 165 + 129 + 172 + 208 + 172 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 122 + 172 + 172 + 208 + 129 + 123 + 86 + 92 + 87 + 129 + 93 + 165 + 129 + 136 + 172 + 172 + 172 + 137 + 172 + 136 + 166 + 136 + 173 + 136 + 173 + 178 + 173 + 179 + 215 + 173 + 215 + 173 + 173 + 214 + 173 + 129 + 129 + 123 + 122 + 86 + 51 + 85 + 44 + 44 + 43 + 7 + 50 + 49 + 86 + 92 + 50 + 85 + 50 + 85 + 56 + 85 + 49 + 92 + 49 + 91 + 134 + 134 + 140 + 140 + 135 + 177 + 214 + 215 + 215 + 215 + 215 + 172 + 86 + 129 + 86 + 86 + 50 + 86 + 79 + 87 + 129 + 171 + 172 + 129 + 129 + 172 + 129 + 129 + 129 + 129 + 130 + 165 + 135 + 166 + 172 + 165 + 129 + 172 + 166 + 172 + 172 + 207 + 166 + 135 + 208 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 123 + 92 + 80 + 43 + 49 + 44 + 79 + 86 + 86 + 129 + 122 + 172 + 123 + 128 + 172 + 129 + 86 + 123 + 122 + 92 + 80 + 86 + 43 + 79 + 86 + 122 + 93 + 79 + 86 + 129 + 159 + 135 + 166 + 129 + 128 + 129 + 123 + 85 + 87 + 122 + 85 + 87 + 122 + 86 + 129 + 165 + 129 + 172 + 172 + 165 + 129 + 208 + 172 + 172 + 172 + 172 + 208 + 166 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 172 + 172 + 129 + 165 + 87 + 128 + 129 + 94 + 129 + 165 + 137 + 172 + 179 + 214 + 173 + 179 + 173 + 215 + 179 + 173 + 173 + 143 + 172 + 173 + 209 + 179 + 173 + 215 + 173 + 215 + 173 + 179 + 172 + 209 + 93 + 129 + 122 + 123 + 86 + 50 + 80 + 49 + 7 + 43 + 8 + 44 + 49 + 86 + 92 + 49 + 86 + 49 + 50 + 49 + 85 + 49 + 55 + 85 + 129 + 134 + 135 + 141 + 141 + 177 + 177 + 214 + 215 + 215 + 215 + 215 + 215 + 129 + 86 + 92 + 86 + 86 + 86 + 44 + 122 + 86 + 93 + 172 + 172 + 172 + 129 + 166 + 129 + 135 + 129 + 129 + 165 + 130 + 165 + 172 + 129 + 172 + 165 + 172 + 171 + 172 + 166 + 171 + 166 + 172 + 171 + 172 + 166 + 129 + 165 + 136 + 172 + 123 + 129 + 129 + 92 + 86 + 86 + 80 + 49 + 43 + 44 + 122 + 129 + 129 + 129 + 164 + 130 + 86 + 129 + 122 + 86 + 123 + 86 + 122 + 86 + 43 + 43 + 43 + 86 + 165 + 86 + 79 + 86 + 86 + 123 + 92 + 165 + 129 + 165 + 129 + 129 + 80 + 86 + 122 + 86 + 86 + 122 + 93 + 165 + 171 + 166 + 172 + 129 + 171 + 166 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 173 + 208 + 214 + 173 + 172 + 171 + 123 + 129 + 122 + 93 + 129 + 130 + 135 + 173 + 215 + 173 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 173 + 179 + 173 + 179 + 209 + 179 + 215 + 173 + 173 + 215 + 173 + 173 + 179 + 86 + 123 + 86 + 122 + 86 + 50 + 86 + 43 + 7 + 37 + 8 + 49 + 87 + 50 + 92 + 86 + 50 + 50 + 85 + 49 + 49 + 85 + 56 + 128 + 128 + 136 + 135 + 177 + 141 + 178 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 93 + 123 + 128 + 87 + 86 + 86 + 85 + 86 + 87 + 172 + 172 + 172 + 171 + 130 + 165 + 93 + 129 + 165 + 129 + 129 + 172 + 165 + 136 + 202 + 171 + 172 + 166 + 135 + 172 + 166 + 171 + 166 + 129 + 172 + 172 + 165 + 165 + 130 + 171 + 130 + 128 + 130 + 128 + 87 + 86 + 86 + 49 + 80 + 86 + 129 + 129 + 123 + 128 + 165 + 130 + 86 + 122 + 86 + 85 + 123 + 86 + 86 + 86 + 86 + 79 + 37 + 86 + 128 + 123 + 49 + 79 + 86 + 123 + 86 + 93 + 165 + 122 + 129 + 129 + 86 + 79 + 87 + 122 + 92 + 165 + 123 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 208 + 173 + 214 + 172 + 208 + 172 + 173 + 208 + 214 + 215 + 166 + 172 + 171 + 129 + 129 + 123 + 129 + 122 + 93 + 136 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 179 + 173 + 215 + 179 + 173 + 179 + 209 + 179 + 172 + 173 + 86 + 86 + 79 + 51 + 122 + 87 + 49 + 44 + 43 + 0 + 8 + 50 + 85 + 87 + 49 + 87 + 49 + 50 + 91 + 49 + 49 + 85 + 92 + 129 + 136 + 135 + 177 + 136 + 178 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 171 + 129 + 87 + 129 + 86 + 86 + 86 + 86 + 129 + 130 + 172 + 172 + 171 + 130 + 128 + 93 + 165 + 165 + 136 + 165 + 129 + 172 + 207 + 173 + 171 + 166 + 135 + 172 + 166 + 172 + 165 + 129 + 171 + 130 + 172 + 165 + 129 + 166 + 135 + 130 + 128 + 86 + 93 + 86 + 86 + 80 + 49 + 123 + 129 + 129 + 165 + 135 + 166 + 122 + 93 + 122 + 43 + 86 + 86 + 122 + 129 + 79 + 86 + 87 + 42 + 43 + 80 + 86 + 86 + 79 + 86 + 165 + 86 + 129 + 166 + 92 + 122 + 123 + 86 + 85 + 87 + 122 + 129 + 129 + 165 + 136 + 165 + 172 + 172 + 208 + 172 + 172 + 172 + 165 + 172 + 215 + 172 + 208 + 165 + 172 + 130 + 171 + 172 + 166 + 135 + 130 + 129 + 129 + 123 + 128 + 129 + 130 + 171 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 173 + 179 + 173 + 172 + 179 + 173 + 79 + 43 + 44 + 79 + 93 + 122 + 50 + 80 + 7 + 43 + 7 + 50 + 51 + 86 + 87 + 50 + 85 + 92 + 50 + 86 + 92 + 49 + 129 + 134 + 136 + 136 + 172 + 141 + 142 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 92 + 123 + 86 + 128 + 87 + 129 + 129 + 215 + 165 + 136 + 122 + 93 + 165 + 172 + 166 + 171 + 129 + 166 + 135 + 172 + 166 + 171 + 208 + 130 + 165 + 172 + 165 + 129 + 166 + 171 + 136 + 164 + 129 + 166 + 135 + 130 + 122 + 92 + 86 + 86 + 86 + 44 + 86 + 122 + 136 + 165 + 129 + 207 + 130 + 165 + 92 + 123 + 43 + 79 + 86 + 86 + 165 + 50 + 122 + 86 + 79 + 43 + 86 + 86 + 43 + 79 + 86 + 166 + 129 + 129 + 129 + 165 + 122 + 93 + 79 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 129 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 166 + 172 + 172 + 172 + 165 + 135 + 129 + 165 + 130 + 93 + 165 + 129 + 129 + 87 + 129 + 129 + 129 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 179 + 173 + 179 + 173 + 173 + 179 + 173 + 43 + 42 + 38 + 49 + 122 + 87 + 86 + 86 + 50 + 2 + 49 + 43 + 50 + 86 + 93 + 50 + 86 + 50 + 92 + 86 + 92 + 86 + 129 + 135 + 130 + 177 + 136 + 135 + 142 + 141 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 92 + 129 + 123 + 92 + 87 + 128 + 129 + 172 + 172 + 172 + 129 + 172 + 166 + 171 + 172 + 166 + 129 + 165 + 136 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 172 + 129 + 165 + 130 + 165 + 135 + 165 + 129 + 123 + 93 + 86 + 79 + 86 + 86 + 43 + 86 + 86 + 87 + 129 + 165 + 129 + 172 + 171 + 166 + 86 + 122 + 43 + 43 + 86 + 122 + 129 + 80 + 49 + 86 + 80 + 43 + 79 + 86 + 79 + 43 + 79 + 166 + 135 + 123 + 171 + 129 + 123 + 129 + 86 + 129 + 165 + 129 + 129 + 129 + 165 + 129 + 165 + 172 + 166 + 178 + 202 + 172 + 171 + 172 + 172 + 172 + 202 + 171 + 130 + 165 + 129 + 93 + 128 + 87 + 128 + 93 + 122 + 93 + 129 + 129 + 129 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 215 + 173 + 179 + 179 + 173 + 179 + 173 + 179 + 173 + 137 + 173 + 42 + 37 + 43 + 49 + 80 + 93 + 86 + 86 + 44 + 50 + 43 + 7 + 87 + 86 + 51 + 86 + 50 + 87 + 92 + 86 + 93 + 92 + 92 + 130 + 171 + 136 + 135 + 141 + 136 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 129 + 86 + 129 + 86 + 93 + 129 + 165 + 172 + 171 + 173 + 171 + 172 + 129 + 166 + 171 + 166 + 135 + 166 + 172 + 172 + 172 + 201 + 172 + 166 + 171 + 129 + 129 + 129 + 166 + 165 + 93 + 129 + 128 + 123 + 93 + 79 + 50 + 43 + 86 + 44 + 85 + 129 + 123 + 129 + 129 + 171 + 166 + 128 + 122 + 87 + 85 + 43 + 43 + 122 + 123 + 49 + 37 + 79 + 49 + 44 + 79 + 43 + 86 + 79 + 44 + 128 + 129 + 123 + 135 + 123 + 122 + 129 + 129 + 128 + 130 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 123 + 130 + 128 + 129 + 87 + 92 + 129 + 86 + 129 + 93 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 215 + 137 + 179 + 173 + 173 + 136 + 179 + 173 + 137 + 137 + 79 + 7 + 37 + 79 + 50 + 86 + 86 + 87 + 44 + 49 + 44 + 7 + 50 + 86 + 93 + 86 + 50 + 86 + 87 + 55 + 87 + 128 + 100 + 129 + 172 + 135 + 177 + 135 + 135 + 142 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 128 + 129 + 123 + 93 + 122 + 93 + 165 + 136 + 165 + 172 + 136 + 165 + 129 + 165 + 130 + 171 + 166 + 172 + 172 + 171 + 208 + 172 + 166 + 135 + 166 + 171 + 130 + 122 + 172 + 165 + 129 + 129 + 129 + 129 + 129 + 80 + 50 + 85 + 44 + 79 + 50 + 129 + 129 + 166 + 128 + 129 + 129 + 129 + 80 + 122 + 86 + 43 + 43 + 86 + 122 + 43 + 43 + 1 + 79 + 43 + 79 + 43 + 86 + 79 + 44 + 86 + 122 + 128 + 129 + 86 + 123 + 129 + 165 + 129 + 129 + 129 + 123 + 92 + 165 + 123 + 171 + 172 + 166 + 172 + 171 + 172 + 208 + 130 + 171 + 166 + 135 + 166 + 129 + 129 + 129 + 92 + 123 + 92 + 130 + 129 + 93 + 135 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 173 + 173 + 179 + 137 + 172 + 173 + 137 + 136 + 137 + 136 + 137 + 79 + 36 + 7 + 43 + 79 + 44 + 92 + 81 + 49 + 44 + 50 + 44 + 86 + 87 + 51 + 86 + 50 + 92 + 87 + 56 + 122 + 93 + 134 + 136 + 171 + 136 + 177 + 135 + 99 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 135 + 166 + 129 + 93 + 129 + 122 + 129 + 129 + 129 + 129 + 136 + 172 + 166 + 171 + 172 + 165 + 130 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 165 + 136 + 165 + 129 + 166 + 92 + 129 + 123 + 92 + 85 + 80 + 50 + 86 + 79 + 87 + 129 + 170 + 123 + 129 + 129 + 129 + 122 + 80 + 49 + 79 + 44 + 85 + 79 + 43 + 43 + 37 + 42 + 44 + 43 + 42 + 80 + 79 + 50 + 79 + 86 + 80 + 86 + 122 + 93 + 165 + 135 + 123 + 165 + 86 + 122 + 129 + 129 + 129 + 166 + 171 + 172 + 165 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 171 + 123 + 129 + 129 + 86 + 93 + 86 + 165 + 135 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 215 + 173 + 173 + 179 + 172 + 173 + 143 + 130 + 173 + 136 + 137 + 136 + 130 + 100 + 79 + 43 + 1 + 43 + 80 + 49 + 87 + 86 + 44 + 50 + 43 + 50 + 51 + 86 + 87 + 50 + 86 + 87 + 56 + 122 + 93 + 93 + 129 + 172 + 135 + 172 + 135 + 141 + 135 + 135 + 178 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 166 + 129 + 93 + 128 + 123 + 93 + 122 + 93 + 165 + 172 + 172 + 172 + 208 + 172 + 129 + 172 + 171 + 172 + 208 + 173 + 208 + 172 + 208 + 136 + 165 + 172 + 129 + 172 + 165 + 172 + 129 + 171 + 87 + 128 + 130 + 122 + 86 + 50 + 86 + 86 + 43 + 129 + 86 + 165 + 87 + 207 + 136 + 122 + 86 + 86 + 79 + 44 + 79 + 49 + 79 + 43 + 43 + 37 + 43 + 79 + 43 + 1 + 85 + 43 + 86 + 80 + 43 + 79 + 86 + 86 + 129 + 165 + 129 + 129 + 123 + 92 + 123 + 128 + 129 + 165 + 166 + 172 + 172 + 165 + 172 + 129 + 172 + 172 + 166 + 171 + 129 + 129 + 129 + 129 + 123 + 86 + 92 + 136 + 129 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 173 + 173 + 179 + 173 + 137 + 178 + 131 + 137 + 136 + 136 + 94 + 136 + 130 + 100 + 80 + 49 + 38 + 42 + 44 + 43 + 87 + 49 + 80 + 44 + 14 + 80 + 50 + 94 + 87 + 86 + 93 + 87 + 86 + 51 + 87 + 135 + 129 + 172 + 172 + 172 + 135 + 130 + 134 + 172 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 164 + 129 + 123 + 92 + 123 + 128 + 88 + 129 + 165 + 172 + 209 + 172 + 171 + 166 + 172 + 172 + 208 + 173 + 208 + 172 + 172 + 172 + 171 + 166 + 135 + 173 + 208 + 172 + 171 + 130 + 129 + 172 + 129 + 129 + 129 + 92 + 86 + 86 + 44 + 86 + 86 + 129 + 122 + 130 + 129 + 172 + 129 + 86 + 43 + 86 + 79 + 7 + 37 + 43 + 43 + 36 + 7 + 43 + 79 + 43 + 1 + 42 + 43 + 43 + 37 + 43 + 43 + 86 + 123 + 129 + 129 + 129 + 165 + 92 + 123 + 86 + 122 + 130 + 129 + 165 + 208 + 136 + 208 + 129 + 129 + 172 + 166 + 129 + 135 + 123 + 129 + 92 + 123 + 86 + 129 + 130 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 209 + 179 + 173 + 179 + 173 + 137 + 178 + 137 + 173 + 130 + 136 + 136 + 130 + 101 + 136 + 130 + 94 + 86 + 85 + 1 + 43 + 43 + 86 + 86 + 44 + 44 + 43 + 51 + 44 + 93 + 88 + 123 + 93 + 93 + 88 + 87 + 87 + 87 + 94 + 135 + 166 + 172 + 172 + 172 + 165 + 136 + 171 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 129 + 122 + 93 + 123 + 129 + 124 + 129 + 171 + 166 + 173 + 208 + 171 + 173 + 208 + 172 + 166 + 171 + 172 + 166 + 178 + 173 + 165 + 172 + 214 + 172 + 172 + 166 + 171 + 136 + 165 + 130 + 135 + 123 + 129 + 86 + 128 + 44 + 86 + 92 + 122 + 130 + 171 + 129 + 172 + 123 + 86 + 49 + 80 + 43 + 43 + 43 + 0 + 44 + 43 + 36 + 44 + 85 + 43 + 1 + 36 + 43 + 43 + 43 + 44 + 43 + 43 + 129 + 129 + 129 + 166 + 129 + 165 + 129 + 87 + 122 + 123 + 129 + 171 + 167 + 172 + 172 + 166 + 129 + 136 + 165 + 129 + 129 + 123 + 128 + 93 + 123 + 171 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 137 + 173 + 173 + 143 + 137 + 173 + 136 + 131 + 137 + 136 + 94 + 137 + 136 + 94 + 94 + 128 + 80 + 7 + 43 + 80 + 86 + 50 + 44 + 7 + 44 + 44 + 87 + 87 + 94 + 129 + 124 + 94 + 87 + 88 + 92 + 124 + 130 + 136 + 131 + 172 + 166 + 172 + 172 + 166 + 171 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 130 + 129 + 123 + 129 + 87 + 129 + 123 + 129 + 166 + 172 + 172 + 209 + 172 + 165 + 173 + 165 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 166 + 171 + 172 + 136 + 165 + 172 + 135 + 130 + 122 + 92 + 87 + 85 + 123 + 92 + 87 + 171 + 130 + 171 + 130 + 165 + 93 + 43 + 79 + 44 + 43 + 42 + 1 + 43 + 79 + 7 + 80 + 44 + 43 + 0 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 123 + 123 + 129 + 130 + 135 + 123 + 123 + 92 + 159 + 129 + 123 + 136 + 165 + 165 + 172 + 172 + 166 + 135 + 166 + 135 + 129 + 123 + 129 + 129 + 172 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 173 + 137 + 173 + 137 + 173 + 136 + 136 + 131 + 136 + 137 + 94 + 136 + 130 + 94 + 99 + 129 + 80 + 7 + 43 + 79 + 51 + 79 + 50 + 8 + 44 + 87 + 87 + 87 + 130 + 95 + 130 + 88 + 129 + 88 + 130 + 88 + 130 + 130 + 131 + 173 + 172 + 131 + 172 + 166 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 93 + 123 + 129 + 87 + 165 + 173 + 136 + 208 + 209 + 173 + 208 + 173 + 214 + 173 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 171 + 172 + 172 + 129 + 135 + 122 + 87 + 79 + 93 + 122 + 129 + 136 + 166 + 135 + 129 + 166 + 92 + 43 + 44 + 79 + 50 + 36 + 7 + 37 + 43 + 43 + 44 + 85 + 38 + 6 + 43 + 87 + 80 + 43 + 36 + 7 + 37 + 86 + 129 + 123 + 135 + 130 + 122 + 123 + 86 + 129 + 123 + 136 + 165 + 130 + 164 + 166 + 136 + 171 + 130 + 165 + 136 + 165 + 136 + 171 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 173 + 179 + 137 + 173 + 137 + 173 + 137 + 136 + 131 + 136 + 130 + 100 + 136 + 131 + 94 + 94 + 100 + 122 + 43 + 43 + 37 + 43 + 44 + 43 + 44 + 50 + 80 + 51 + 88 + 129 + 94 + 124 + 94 + 124 + 94 + 124 + 95 + 124 + 130 + 131 + 136 + 167 + 131 + 173 + 166 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 130 + 124 + 129 + 129 + 124 + 129 + 129 + 172 + 172 + 209 + 214 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 172 + 178 + 172 + 172 + 166 + 171 + 172 + 172 + 172 + 178 + 166 + 135 + 130 + 122 + 86 + 43 + 93 + 128 + 123 + 172 + 135 + 166 + 135 + 129 + 86 + 50 + 79 + 86 + 50 + 79 + 1 + 43 + 37 + 43 + 43 + 43 + 44 + 43 + 1 + 85 + 86 + 1 + 43 + 44 + 37 + 49 + 87 + 129 + 166 + 135 + 130 + 122 + 87 + 86 + 122 + 172 + 165 + 130 + 135 + 166 + 172 + 172 + 171 + 172 + 208 + 178 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 173 + 179 + 137 + 173 + 137 + 137 + 130 + 137 + 94 + 137 + 94 + 136 + 95 + 94 + 130 + 94 + 50 + 43 + 43 + 36 + 43 + 37 + 14 + 80 + 50 + 87 + 87 + 88 + 88 + 94 + 124 + 94 + 124 + 88 + 94 + 124 + 94 + 131 + 124 + 131 + 131 + 173 + 167 + 131 + 173 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 165 + 87 + 136 + 130 + 165 + 87 + 129 + 172 + 166 + 136 + 166 + 172 + 136 + 165 + 129 + 172 + 171 + 173 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 166 + 171 + 93 + 80 + 6 + 86 + 129 + 129 + 166 + 135 + 166 + 129 + 129 + 86 + 49 + 80 + 86 + 86 + 43 + 44 + 36 + 7 + 43 + 37 + 43 + 43 + 44 + 43 + 86 + 44 + 79 + 43 + 43 + 43 + 44 + 86 + 135 + 166 + 165 + 130 + 129 + 87 + 86 + 92 + 123 + 172 + 167 + 172 + 215 + 215 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 137 + 179 + 137 + 137 + 137 + 173 + 137 + 131 + 100 + 131 + 100 + 131 + 94 + 94 + 100 + 130 + 94 + 44 + 79 + 43 + 43 + 43 + 1 + 50 + 80 + 44 + 87 + 87 + 87 + 94 + 88 + 130 + 88 + 88 + 88 + 94 + 88 + 124 + 94 + 124 + 130 + 131 + 131 + 167 + 131 + 167 + 136 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 129 + 130 + 129 + 93 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 129 + 130 + 135 + 172 + 172 + 166 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 129 + 79 + 43 + 50 + 86 + 129 + 129 + 166 + 135 + 123 + 86 + 86 + 43 + 86 + 86 + 86 + 43 + 86 + 37 + 7 + 37 + 43 + 44 + 49 + 44 + 37 + 86 + 86 + 44 + 79 + 43 + 44 + 50 + 122 + 129 + 137 + 172 + 129 + 122 + 87 + 50 + 122 + 130 + 172 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 137 + 179 + 173 + 137 + 143 + 137 + 137 + 131 + 137 + 137 + 95 + 136 + 94 + 94 + 130 + 95 + 94 + 93 + 58 + 80 + 85 + 44 + 43 + 43 + 37 + 43 + 50 + 44 + 86 + 51 + 88 + 93 + 124 + 94 + 88 + 123 + 87 + 94 + 87 + 88 + 88 + 94 + 124 + 94 + 125 + 130 + 131 + 130 + 131 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 130 + 123 + 129 + 129 + 130 + 129 + 130 + 135 + 129 + 166 + 93 + 129 + 166 + 129 + 129 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 166 + 172 + 172 + 172 + 171 + 129 + 86 + 43 + 43 + 86 + 129 + 129 + 129 + 172 + 122 + 43 + 43 + 50 + 86 + 86 + 86 + 43 + 44 + 43 + 37 + 43 + 43 + 43 + 50 + 79 + 1 + 43 + 86 + 86 + 80 + 49 + 44 + 79 + 93 + 129 + 123 + 130 + 129 + 86 + 86 + 87 + 172 + 172 + 173 + 178 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 179 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 95 + 136 + 95 + 94 + 130 + 95 + 130 + 94 + 93 + 94 + 52 + 86 + 122 + 43 + 44 + 43 + 43 + 43 + 44 + 8 + 86 + 87 + 88 + 87 + 93 + 88 + 93 + 88 + 88 + 87 + 87 + 87 + 129 + 88 + 88 + 124 + 94 + 94 + 124 + 88 + 130 + 131 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 166 + 136 + 130 + 129 + 93 + 129 + 123 + 93 + 130 + 129 + 93 + 129 + 129 + 130 + 171 + 166 + 136 + 171 + 130 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 129 + 172 + 130 + 128 + 44 + 86 + 86 + 128 + 87 + 172 + 129 + 87 + 43 + 43 + 49 + 80 + 85 + 44 + 43 + 86 + 43 + 43 + 44 + 43 + 43 + 79 + 44 + 6 + 37 + 86 + 123 + 50 + 44 + 86 + 86 + 86 + 123 + 93 + 129 + 122 + 93 + 129 + 130 + 173 + 178 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 137 + 179 + 137 + 173 + 143 + 131 + 137 + 101 + 137 + 131 + 100 + 131 + 94 + 94 + 130 + 94 + 94 + 88 + 95 + 87 + 95 + 86 + 87 + 85 + 44 + 43 + 37 + 50 + 43 + 44 + 51 + 87 + 87 + 87 + 87 + 94 + 87 + 94 + 87 + 87 + 130 + 87 + 93 + 88 + 87 + 94 + 124 + 88 + 94 + 130 + 88 + 166 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 179 + 173 + 136 + 171 + 130 + 86 + 130 + 93 + 129 + 129 + 129 + 129 + 130 + 129 + 135 + 166 + 172 + 129 + 172 + 136 + 171 + 130 + 172 + 172 + 130 + 171 + 130 + 171 + 172 + 93 + 122 + 86 + 129 + 86 + 129 + 129 + 129 + 93 + 79 + 43 + 43 + 50 + 43 + 79 + 44 + 49 + 44 + 79 + 44 + 43 + 44 + 43 + 44 + 42 + 44 + 86 + 86 + 50 + 80 + 129 + 86 + 86 + 123 + 129 + 130 + 136 + 136 + 172 + 173 + 214 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 173 + 143 + 137 + 173 + 101 + 131 + 137 + 95 + 136 + 94 + 95 + 130 + 94 + 94 + 94 + 89 + 93 + 52 + 93 + 88 + 58 + 122 + 86 + 86 + 43 + 43 + 44 + 43 + 44 + 43 + 51 + 86 + 87 + 87 + 51 + 93 + 86 + 93 + 87 + 94 + 129 + 87 + 129 + 94 + 87 + 88 + 94 + 94 + 87 + 130 + 94 + 137 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 179 + 179 + 215 + 215 + 179 + 215 + 173 + 136 + 129 + 128 + 130 + 93 + 129 + 129 + 93 + 129 + 129 + 129 + 129 + 172 + 129 + 136 + 166 + 171 + 136 + 166 + 135 + 166 + 136 + 165 + 136 + 165 + 129 + 93 + 122 + 129 + 130 + 129 + 171 + 129 + 93 + 43 + 43 + 43 + 86 + 44 + 49 + 43 + 80 + 43 + 50 + 80 + 43 + 44 + 43 + 43 + 43 + 44 + 86 + 86 + 80 + 50 + 128 + 87 + 123 + 172 + 135 + 166 + 136 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 137 + 179 + 137 + 137 + 137 + 137 + 131 + 101 + 130 + 94 + 101 + 130 + 94 + 94 + 94 + 89 + 94 + 87 + 95 + 88 + 93 + 52 + 123 + 86 + 50 + 43 + 44 + 43 + 37 + 43 + 50 + 45 + 86 + 93 + 86 + 50 + 87 + 93 + 93 + 87 + 135 + 94 + 87 + 93 + 93 + 94 + 94 + 94 + 93 + 94 + 130 + 130 + 131 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 137 + 178 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 172 + 172 + 166 + 129 + 129 + 93 + 123 + 92 + 129 + 129 + 130 + 129 + 165 + 135 + 130 + 129 + 172 + 129 + 129 + 166 + 129 + 172 + 129 + 129 + 123 + 92 + 122 + 129 + 130 + 129 + 172 + 129 + 92 + 80 + 43 + 43 + 49 + 87 + 86 + 43 + 50 + 79 + 43 + 86 + 50 + 80 + 43 + 43 + 43 + 44 + 86 + 86 + 44 + 86 + 92 + 130 + 172 + 167 + 172 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 173 + 143 + 173 + 137 + 137 + 179 + 131 + 101 + 137 + 94 + 130 + 95 + 94 + 100 + 88 + 94 + 57 + 124 + 93 + 52 + 93 + 87 + 87 + 51 + 122 + 51 + 44 + 85 + 7 + 37 + 7 + 44 + 85 + 51 + 122 + 87 + 56 + 50 + 87 + 93 + 51 + 135 + 93 + 94 + 129 + 94 + 93 + 94 + 93 + 129 + 100 + 94 + 130 + 137 + 130 + 167 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 173 + 179 + 137 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 129 + 135 + 123 + 129 + 129 + 129 + 130 + 129 + 171 + 172 + 172 + 130 + 129 + 129 + 172 + 172 + 172 + 129 + 129 + 123 + 86 + 87 + 128 + 136 + 130 + 129 + 129 + 50 + 43 + 86 + 50 + 123 + 86 + 43 + 43 + 50 + 44 + 50 + 43 + 44 + 50 + 79 + 7 + 80 + 86 + 86 + 87 + 129 + 173 + 209 + 215 + 215 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 143 + 173 + 137 + 173 + 137 + 101 + 137 + 131 + 100 + 95 + 130 + 94 + 94 + 94 + 93 + 52 + 94 + 93 + 88 + 93 + 87 + 51 + 87 + 93 + 87 + 87 + 86 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 50 + 86 + 87 + 86 + 93 + 50 + 87 + 93 + 92 + 93 + 94 + 93 + 129 + 100 + 129 + 93 + 94 + 94 + 130 + 100 + 136 + 131 + 172 + 131 + 209 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 172 + 143 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 173 + 136 + 136 + 129 + 130 + 129 + 130 + 136 + 179 + 173 + 215 + 172 + 131 + 171 + 172 + 173 + 179 + 166 + 129 + 129 + 86 + 93 + 86 + 130 + 171 + 130 + 129 + 51 + 85 + 44 + 80 + 50 + 86 + 43 + 44 + 49 + 44 + 86 + 50 + 43 + 79 + 50 + 43 + 44 + 123 + 135 + 166 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 173 + 143 + 173 + 137 + 137 + 131 + 101 + 94 + 130 + 94 + 94 + 94 + 93 + 52 + 93 + 51 + 87 + 51 + 51 + 51 + 93 + 87 + 86 + 51 + 87 + 86 + 51 + 86 + 43 + 80 + 49 + 44 + 7 + 44 + 44 + 86 + 86 + 129 + 86 + 93 + 87 + 93 + 92 + 87 + 93 + 129 + 100 + 94 + 129 + 93 + 57 + 87 + 93 + 93 + 94 + 130 + 136 + 130 + 131 + 136 + 131 + 172 + 179 + 173 + 215 + 179 + 173 + 137 + 136 + 166 + 143 + 173 + 143 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 172 + 137 + 172 + 179 + 215 + 173 + 179 + 215 + 179 + 173 + 173 + 178 + 172 + 173 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 130 + 129 + 86 + 50 + 43 + 86 + 44 + 86 + 86 + 49 + 50 + 43 + 86 + 50 + 43 + 44 + 86 + 50 + 165 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 137 + 137 + 130 + 137 + 94 + 94 + 94 + 94 + 93 + 94 + 88 + 94 + 57 + 87 + 51 + 87 + 57 + 51 + 51 + 87 + 86 + 86 + 57 + 87 + 87 + 87 + 86 + 50 + 86 + 43 + 44 + 43 + 43 + 44 + 86 + 50 + 87 + 129 + 93 + 87 + 93 + 92 + 87 + 93 + 93 + 130 + 99 + 129 + 86 + 57 + 51 + 86 + 50 + 93 + 88 + 93 + 94 + 94 + 130 + 124 + 100 + 131 + 130 + 137 + 136 + 131 + 136 + 129 + 137 + 130 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 173 + 179 + 215 + 179 + 179 + 179 + 215 + 173 + 179 + 179 + 179 + 173 + 172 + 136 + 179 + 173 + 172 + 136 + 129 + 130 + 172 + 93 + 129 + 129 + 87 + 136 + 129 + 136 + 165 + 129 + 93 + 86 + 93 + 92 + 86 + 92 + 129 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 172 + 101 + 130 + 94 + 94 + 88 + 94 + 94 + 94 + 129 + 100 + 87 + 57 + 93 + 87 + 51 + 57 + 87 + 51 + 93 + 86 + 87 + 87 + 93 + 86 + 93 + 86 + 80 + 50 + 43 + 44 + 49 + 44 + 43 + 86 + 50 + 122 + 93 + 87 + 129 + 93 + 86 + 93 + 129 + 94 + 129 + 93 + 93 + 86 + 51 + 50 + 44 + 51 + 50 + 87 + 87 + 94 + 87 + 94 + 88 + 94 + 93 + 130 + 94 + 93 + 130 + 93 + 94 + 131 + 136 + 137 + 172 + 143 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 209 + 179 + 179 + 179 + 179 + 173 + 179 + 179 + 173 + 178 + 172 + 136 + 173 + 166 + 215 + 178 + 173 + 215 + 179 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 136 + 130 + 94 + 136 + 130 + 130 + 137 + 136 + 130 + 100 + 130 + 94 + 93 + 93 + 94 + 88 + 93 + 56 + 87 + 87 + 93 + 86 + 93 + 93 + 130 + 86 + 57 + 79 + 44 + 43 + 44 + 44 + 49 + 80 + 56 + 123 + 86 + 86 + 93 + 87 + 86 + 93 + 93 + 129 + 94 + 129 + 93 + 123 + 56 + 44 + 7 + 43 + 2 + 50 + 44 + 50 + 51 + 87 + 57 + 88 + 87 + 94 + 51 + 88 + 93 + 94 + 87 + 94 + 129 + 94 + 137 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 215 + 179 + 179 + 215 + 179 + 215 + 179 + 179 + 179 + 215 + 215 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 137 + 173 + 137 + 136 + 137 + 173 + 172 + 173 + 143 + 173 + 137 + 171 + 100 + 130 + 93 + 129 + 93 + 94 + 87 + 93 + 93 + 92 + 130 + 93 + 129 + 93 + 122 + 8 + 43 + 43 + 49 + 44 + 44 + 86 + 92 + 86 + 87 + 87 + 128 + 87 + 50 + 93 + 87 + 129 + 92 + 130 + 129 + 87 + 93 + 43 + 8 + 43 + 6 + 44 + 44 + 51 + 50 + 87 + 58 + 87 + 51 + 94 + 87 + 52 + 93 + 88 + 58 + 129 + 94 + 94 + 137 + 136 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 215 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 179 + 173 + 179 + 179 + 173 + 179 + 179 + 173 + 172 + 137 + 135 + 130 + 129 + 100 + 130 + 129 + 93 + 129 + 129 + 100 + 129 + 93 + 129 + 94 + 79 + 50 + 43 + 44 + 49 + 80 + 86 + 93 + 86 + 87 + 86 + 93 + 86 + 86 + 50 + 87 + 86 + 129 + 129 + 130 + 86 + 93 + 86 + 0 + 7 + 8 + 43 + 45 + 50 + 51 + 51 + 88 + 51 + 93 + 51 + 88 + 50 + 94 + 94 + 87 + 94 + 94 + 95 + 136 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 215 + 179 + 179 + 173 + 178 + 137 + 172 + 129 + 136 + 136 + 130 + 136 + 129 + 136 + 129 + 136 + 135 + 130 + 129 + 49 + 80 + 44 + 85 + 44 + 86 + 87 + 50 + 86 + 87 + 92 + 86 + 80 + 50 + 50 + 80 + 87 + 92 + 129 + 93 + 123 + 93 + 44 + 43 + 0 + 43 + 8 + 44 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 57 + 88 + 51 + 94 + 94 + 88 + 136 + 94 + 136 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 179 + 173 + 178 + 173 + 172 + 137 + 172 + 136 + 172 + 136 + 135 + 130 + 136 + 172 + 136 + 136 + 128 + 136 + 44 + 86 + 86 + 50 + 86 + 44 + 86 + 87 + 50 + 86 + 50 + 80 + 50 + 43 + 43 + 86 + 86 + 86 + 94 + 122 + 92 + 86 + 44 + 37 + 7 + 1 + 43 + 50 + 44 + 51 + 51 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 101 + 130 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 173 + 179 + 172 + 173 + 136 + 172 + 136 + 172 + 173 + 136 + 136 + 172 + 135 + 130 + 135 + 136 + 130 + 135 + 93 + 129 + 87 + 92 + 86 + 44 + 86 + 43 + 50 + 44 + 49 + 44 + 43 + 43 + 43 + 43 + 44 + 86 + 51 + 86 + 86 + 87 + 86 + 44 + 7 + 1 + 42 + 8 + 44 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 94 + 51 + 94 + 87 + 94 + 95 + 136 + 137 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 209 + 179 + 173 + 173 + 172 + 143 + 172 + 130 + 137 + 171 + 136 + 137 + 172 + 136 + 130 + 136 + 171 + 136 + 136 + 130 + 136 + 129 + 99 + 129 + 94 + 93 + 86 + 86 + 43 + 44 + 43 + 7 + 43 + 43 + 7 + 43 + 37 + 7 + 7 + 42 + 44 + 80 + 50 + 86 + 50 + 79 + 44 + 7 + 7 + 37 + 7 + 44 + 51 + 51 + 50 + 16 + 45 + 51 + 93 + 51 + 88 + 57 + 87 + 94 + 52 + 129 + 100 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 136 + 172 + 137 + 136 + 136 + 130 + 136 + 136 + 137 + 165 + 137 + 100 + 166 + 100 + 136 + 129 + 94 + 135 + 93 + 93 + 93 + 87 + 49 + 86 + 44 + 43 + 7 + 42 + 1 + 7 + 43 + 7 + 43 + 1 + 43 + 6 + 1 + 43 + 44 + 85 + 44 + 50 + 43 + 44 + 7 + 37 + 7 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 52 + 57 + 87 + 51 + 94 + 87 + 58 + 94 + 94 + 130 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 136 + 172 + 173 + 173 + 136 + 167 + 136 + 136 + 136 + 165 + 136 + 130 + 136 + 94 + 137 + 135 + 130 + 101 + 136 + 130 + 136 + 93 + 93 + 130 + 93 + 99 + 87 + 129 + 57 + 86 + 50 + 43 + 44 + 43 + 7 + 0 + 43 + 1 + 7 + 43 + 7 + 0 + 43 + 7 + 37 + 7 + 43 + 43 + 44 + 43 + 14 + 43 + 43 + 7 + 44 + 44 + 8 + 86 + 9 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 94 + 94 + 94 + 137 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 136 + 130 + 136 + 130 + 171 + 101 + 166 + 129 + 100 + 130 + 130 + 136 + 94 + 135 + 130 + 100 + 130 + 130 + 135 + 94 + 94 + 129 + 93 + 93 + 93 + 86 + 57 + 93 + 87 + 93 + 92 + 80 + 49 + 43 + 7 + 1 + 43 + 6 + 1 + 43 + 7 + 43 + 43 + 43 + 2 + 42 + 43 + 7 + 44 + 43 + 43 + 44 + 50 + 44 + 43 + 44 + 8 + 51 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 52 + 87 + 57 + 87 + 58 + 88 + 93 + 88 + 136 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 178 + 94 + 130 + 136 + 137 + 130 + 130 + 130 + 136 + 94 + 129 + 94 + 130 + 130 + 100 + 130 + 94 + 130 + 93 + 94 + 94 + 93 + 94 + 93 + 92 + 87 + 57 + 93 + 87 + 56 + 124 + 93 + 92 + 86 + 44 + 6 + 1 + 43 + 1 + 7 + 43 + 43 + 43 + 50 + 43 + 1 + 43 + 43 + 7 + 43 + 43 + 44 + 86 + 44 + 49 + 8 + 43 + 44 + 51 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 52 + 87 + 52 + 93 + 53 + 88 + 88 + 93 + 131 + 173 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 94 + 136 + 130 + 136 + 130 + 136 + 94 + 130 + 130 + 100 + 130 + 93 + 130 + 94 + 130 + 94 + 93 + 130 + 93 + 94 + 93 + 87 + 93 + 94 + 92 + 87 + 93 + 51 + 87 + 129 + 93 + 86 + 92 + 49 + 43 + 7 + 43 + 1 + 43 + 43 + 50 + 49 + 86 + 50 + 80 + 44 + 7 + 43 + 43 + 50 + 86 + 45 + 50 + 43 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 8 + 44 + 15 + 44 + 9 + 50 + 51 + 52 + 87 + 51 + 46 + 87 + 52 + 95 + 131 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 136 + 95 + 136 + 131 + 136 + 130 + 137 + 94 + 130 + 100 + 130 + 129 + 94 + 94 + 130 + 94 + 93 + 94 + 123 + 94 + 93 + 93 + 51 + 93 + 87 + 51 + 93 + 50 + 130 + 92 + 129 + 86 + 51 + 86 + 7 + 43 + 1 + 43 + 43 + 49 + 87 + 92 + 86 + 45 + 49 + 37 + 43 + 43 + 51 + 86 + 86 + 50 + 44 + 50 + 43 + 44 + 15 + 44 + 50 + 51 + 8 + 45 + 8 + 14 + 44 + 51 + 45 + 51 + 51 + 52 + 88 + 52 + 125 + 94 + 130 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 130 + 137 + 130 + 101 + 130 + 94 + 130 + 94 + 136 + 94 + 124 + 94 + 93 + 130 + 94 + 93 + 94 + 124 + 93 + 88 + 57 + 87 + 87 + 57 + 87 + 51 + 87 + 50 + 129 + 93 + 129 + 92 + 123 + 49 + 50 + 44 + 43 + 43 + 50 + 86 + 86 + 123 + 92 + 50 + 44 + 43 + 43 + 44 + 86 + 93 + 87 + 50 + 80 + 50 + 43 + 50 + 9 + 51 + 50 + 45 + 50 + 9 + 7 + 8 + 8 + 45 + 50 + 52 + 88 + 52 + 125 + 94 + 89 + 131 + 131 + 173 + 173 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 137 + 94 + 137 + 94 + 130 + 94 + 101 + 88 + 94 + 94 + 94 + 130 + 87 + 94 + 87 + 94 + 87 + 94 + 51 + 87 + 94 + 51 + 86 + 51 + 51 + 51 + 80 + 15 + 129 + 129 + 93 + 129 + 93 + 86 + 86 + 44 + 43 + 50 + 49 + 86 + 129 + 87 + 129 + 86 + 50 + 43 + 44 + 44 + 86 + 129 + 86 + 87 + 50 + 50 + 44 + 44 + 51 + 50 + 45 + 14 + 45 + 8 + 8 + 7 + 51 + 44 + 52 + 52 + 88 + 89 + 94 + 125 + 131 + 131 + 131 + 131 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 100 + 130 + 95 + 94 + 94 + 94 + 94 + 87 + 94 + 93 + 88 + 57 + 88 + 88 + 93 + 51 + 88 + 93 + 51 + 87 + 50 + 87 + 51 + 45 + 51 + 50 + 51 + 44 + 129 + 135 + 93 + 123 + 92 + 87 + 55 + 80 + 50 + 44 + 86 + 92 + 87 + 129 + 93 + 87 + 86 + 49 + 80 + 50 + 87 + 129 + 93 + 86 + 45 + 50 + 44 + 44 + 50 + 51 + 44 + 15 + 45 + 8 + 7 + 50 + 9 + 51 + 88 + 88 + 95 + 89 + 95 + 125 + 95 + 131 + 125 + 167 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 131 + 94 + 95 + 136 + 52 + 93 + 94 + 88 + 57 + 88 + 87 + 94 + 51 + 88 + 87 + 52 + 87 + 51 + 51 + 88 + 45 + 50 + 51 + 50 + 44 + 51 + 8 + 51 diff --git a/Graphics/Presentations/Intellektika/KHKDEMO.BAS b/Graphics/Presentations/Intellektika/KHKDEMO.BAS new file mode 100755 index 0000000..77b7ff2 --- /dev/null +++ b/Graphics/Presentations/Intellektika/KHKDEMO.BAS @@ -0,0 +1,337 @@ +' Graphics animation. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 200?, Initial version +' 2024.09, Improved program readability using AI + +DECLARE SUB playsound (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +pi = 3.14128 + +turnon + +SCREEN 7, , , 1 + +timerinit +s = 50 + +2 : + s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 + s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 + +frm = frm + 1 +sv1 = 5 * s1 +sv2 = 2 +vp = SIN(timerCvalue(1) * 1.3) + +sh1 = 2 * s2 +sh2 = 1.4 +hp = SIN(timerCvalue(1)) * .7 + +mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 + +ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 +ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 +ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 +prn timerCvalue(5), 10, "KHK", 7, 250 + +prn timerCvalue(8), 130, "Infotehno-", 2, 0 +prn timerCvalue(8), 150, " loogia", 2, 0 + +timerprocess + +LOCATE 1, 1 +'PRINT timerCtime(0) +IF timerCtime(0) > 26 THEN CHAIN "ray.bas" +PCOPY 0, 1 +LINE (0, 0)-(319, 199), 15, BF +GOTO 2 +SYSTEM + +SUB ellips (x, y, s, v, t) + ' Draws an ellipse if the coordinates are positive + IF x > 0 THEN + IF y > 0 THEN + CIRCLE (x, y), s, v, , , t + PAINT (x, y), v + END IF + END IF +END SUB + +SUB mo (x, y, an, s, w) + ' Recursive function to draw a shape with rotating and scaling properties + depth = depth + 1 + IF s < .2 THEN GOTO 1 + + IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 + + CIRCLE (x, y), s, c + PAINT (x, y), c + + IF w <> 1 THEN + x1 = SIN(an) * s * 2.5 + x + y1 = COS(an) * s * 2.5 + y + IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 + mo x1, y1, an + vp, ns, 3 + END IF + + IF w <> 2 THEN + x1 = SIN(an - pi / 2) * s * 2.5 + x + y1 = COS(an - pi / 2) * s * 2.5 + y + IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 + mo x1, y1, an + hp, ns, 4 + END IF + + IF w <> 3 THEN + x1 = SIN(an - pi) * s * 2.5 + x + y1 = COS(an - pi) * s * 2.5 + y + IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 + mo x1, y1, an + vp, ns, 1 + END IF + + IF w <> 4 THEN + x1 = SIN(an - pi * 1.5) * s * 2.5 + x + y1 = COS(an - pi * 1.5) * s * 2.5 + y + IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 + mo x1, y1, an + hp, ns, 2 + END IF + +1 : + depth = depth - 1 +END SUB + +SUB prn (x, y, msg$, siz, col1) + ' Prints text with specified size and color at given coordinates + IF x < 0 THEN GOTO prn1 + IF x > 319 THEN GOTO prn1 + + DIM bck(10000) + + GET (0, 0)-(100, 7), bck + LOCATE 1, 1 + PRINT msg$ + + col = col1 + + FOR x1 = 0 TO LEN(msg$) * 8 - 1 + FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + rx = x1 * siz + x + ry = y1 * siz + y + IF col1 > 100 THEN col = RND * 4 + 10 + IF col1 > 200 THEN + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF + END IF + NEXT y1 + NEXT x1 + + PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB timerAdd (element, time, value) + ' Adds a new timer event for a specific element at a given time with the specified value + FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 + NEXT a +timer3: + + timerTime(element, a) = time + timerValue(element, a) = value +END SUB + +SUB timerinit + ' Initializes timers with predefined events and values + timerLast = TIMER + + paus = 24 + + ' stuff size + timerAdd 0, 0, 50 + timerAdd 0, 7, 10 + timerAdd 0, 20, 10 + timerAdd 0, 24, 0 + timerAdd 0, 1000, 0 + + ' stuff speed + timerAdd 1, 0, .1 + timerAdd 1, 1000, 1000 + + ' stuff X & Y + timerAdd 2, 0, 160 + timerAdd 3, 0, 100 + + timerAdd 2, 5, 160 + timerAdd 3, 5, 100 + + timerAdd 2, 9, 280 + timerAdd 3, 9, 160 + + timerAdd 2, 10, 280 + timerAdd 3, 10, 160 + + timerAdd 2, 20, 40 + timerAdd 3, 20, 160 + + timerAdd 2, 1000, 40 + timerAdd 3, 1000, 160 + + ' stuff rotations + timerAdd 4, 0, .1 + timerAdd 4, 10, .1 + timerAdd 4, 22, 18 + timerAdd 4, 2000, 10000 + + ' KHK message X + + timerAdd 5, 0, -1 + timerAdd 5, 5, -1 + timerAdd 5, 9, 50 + timerAdd 5, 10, 30 + timerAdd 5, paus, 30 + timerAdd 5, paus + 2, 321 + + ' Ellips Y & radius + timerAdd 6, 0, -1 + timerAdd 6, 4, -1 + timerAdd 6, 10, 30 + timerAdd 6, 1000, 50 + + timerAdd 7, 0, 1 + timerAdd 7, 6, 1 + timerAdd 7, 12, 130 + + timerAdd 7, paus, 130 + timerAdd 7, paus + 2, 1 + + ' "Infotehnoloogia" message + + timerAdd 8, 0, 320 + timerAdd 8, 11, 320 + timerAdd 8, 20, 100 + timerAdd 8, paus, 100 + timerAdd 8, paus + 1, -1 +END SUB + +SUB timerprocess + ' Processes timers to update their current values based on elapsed time + timerCurrent = TIMER + timerDiff = timerCurrent - timerLast + timerLast = timerCurrent + + FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim + NEXT a +END SUB + +SUB turnon + ' Initializes the program by playing a sound and displaying an animation + SCREEN 0 + SCREEN 7, , , 1 + + + SCREEN 7, , , 1 + + FOR x = 0 TO 160 STEP 15 + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF + LINE (160 - x, 90)-(160 + x, 110), 15, BF + + PCOPY 0, 1 + CLS + SOUND 0, .5 + NEXT x + + FOR y = 10 TO 100 STEP 15 + CLS + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF + + PCOPY 0, 1 + SOUND 0, .5 + NEXT y + + FOR a = 1 TO 25 + prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 + PCOPY 0, 1 + SOUND 0, 1 + NEXT a + + DIM buf(1 TO 1000) + FOR b = 1 TO 30 + FOR a = 0 TO 195 + t = ABS(100 - a) + + IF RND * 50 < t THEN + GET (1, a)-(318, a + 1), buf + IF a > 100 THEN + PUT (0, a), buf, PSET + ELSE + PUT (2, a), buf, PSET + END IF + END IF + NEXT a + PCOPY 0, 1 + 'SOUND 0, 1 + NEXT b +END SUB + diff --git a/Graphics/Presentations/Intellektika/KHKDEMO2.BAS b/Graphics/Presentations/Intellektika/KHKDEMO2.BAS new file mode 100755 index 0000000..2d0d9da --- /dev/null +++ b/Graphics/Presentations/Intellektika/KHKDEMO2.BAS @@ -0,0 +1,51 @@ +SCREEN 7, , , 1 + +1 +FOR a = 1 TO SIN(frame / 30) * 3 + 4 + LOCATE a * 2, a * 4 + COLOR RND * 5 + 10 + PRINT "Programming is fun!" +NEXT a + +' Update frame and calculate new values for x, y and step size. +frame = frame + 1 +stepSize = (SIN(frame / 10) + 2) / 3 +xPos = SIN(frame / 30) * 50 +yPos = COS(frame / 42) * 30 + +' Draw circles with varying arc sizes. +FOR a = .1 TO 10 STEP stepSize + CIRCLE (160 + xPos, 100 + yPos), 80, 2, , , a +NEXT a + +' Generate random color value for lines. +randomColor = RND * 2 + 12 +FOR a = 0 TO 10 + f1 = (a + frame) / 12 + f2 = (a + frame) / 7 + x1 = SIN(f1) * 50 + y1 = COS(f1) * 30 + x2 = SIN(f2 + 6) * 50 + y2 = COS(f2 + 6) * 30 + ' Draw line between calculated points. + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), randomColor +NEXT a + +' Draw random pixels on the screen. Like colorful stars in the night sky. +FOR a = 0 TO 50 + xRand = RND * 320 + yRand = RND * 320 + PSET (xRand, yRand), RND * 15 +NEXT a + +' Copy the current screen to the next page and clear the current screen. +PCOPY 0, 1 +CLS + +' Check if frame count has exceeded the limit; if so, chain to another program. +IF frame > 200 THEN GOTO 2 +GOTO 1 + +2 +CHAIN "KHKDEMO3.BAS" + diff --git a/Graphics/Presentations/Intellektika/KHKDEMO3.BAS b/Graphics/Presentations/Intellektika/KHKDEMO3.BAS new file mode 100755 index 0000000..8b65c88 --- /dev/null +++ b/Graphics/Presentations/Intellektika/KHKDEMO3.BAS @@ -0,0 +1,85 @@ +SCREEN 7, , , 1 + +' Main loop label +1 + ' Clear the screen + LINE (0, 0)-(319, 199), 0, BF + + ' Delay, to limit animation speed + SOUND 0, 1 + + ' Increment frame counter + frm = frm + 1 + + ' Calculate step size based on sine wave + stpSize = (SIN(frm / 10) + 2) / 3 + + ' Calculate x and y offsets based on sine and cosine waves + xOffset = SIN(frm / 30) * 50 + yOffset = COS(frm / 42) * 30 + + ' Draw circles with varying arc sizes + FOR a = .1 TO 10 STEP stpSize + CIRCLE (160 + xOffset, 100 + yOffset), 80, 10, , , a + NEXT a + + ' Calculate random color + colr = RND * 2 + 12 + + ' Draw lines between points calculated using sine and cosine waves + FOR a = 0 TO 50 + f1 = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f1) * 50 + y1 = COS(f1) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), colr + NEXT a + + ' Draw and fill circles with varying radii + FOR a = 0 TO 50 + f1 = (a * 15 + frm) / 12 + f2 = (a * 15 + frm) / 7 + x1 = SIN(f1) * 50 + y1 = COS(f1) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + CIRCLE (x1 + 80, y1 + 50), a / 2, 14 + PAINT (x1 + 80, y1 + 50), 14 + NEXT a + + ' Draw additional lines between points calculated using sine and cosine waves + FOR a = 0 TO 15 + f1 = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f1) * 50 + y1 = COS(f1) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), colr + NEXT a + + ' Draw random points on the screen + FOR a = 0 TO 50 + x = RND * 320 + y = RND * 320 + PSET (x, y), RND * 15 + NEXT a + + ' Copy active page to visual page for smooth animation + PCOPY 0, 1 + + ' Clear the screen + CLS + + ' Check if frame counter exceeds 100 + IF frm > 100 THEN GOTO 2 + + ' Continue loop + GOTO 1 + +' Exit label +2 + ' Chain to another program + CHAIN "KHKDEMO4.BAS" diff --git a/Graphics/Presentations/Intellektika/KHKDEMO6.BAS b/Graphics/Presentations/Intellektika/KHKDEMO6.BAS new file mode 100755 index 0000000..6e53abe --- /dev/null +++ b/Graphics/Presentations/Intellektika/KHKDEMO6.BAS @@ -0,0 +1,31 @@ +SCREEN 13 + +LOCATE 1, 1 +PRINT " Hello friend!" + +' Loop through each pixel in the screen to create an enlarged version of the current screen +FOR x = 0 TO 160 + FOR y = 0 TO 32 + colorVal = POINT(x, y) + x1 = x * 2 + y1 = y * 2 + 90 + LINE (x1, y1)-(x1 + 1, y1 + 1), colorVal, BF + NEXT y +NEXT x + +LOCATE 1, 1 +PRINT " " + +' Draw a series of circles along the screen +FOR x = 0 TO 320 + CIRCLE (x, 130), 10, 9 + SOUND 0, .1 +NEXT x + +' Draw horizontal lines creating an X pattern +FOR y = 0 TO 70 + SOUND 0, .1 + LINE (160 - 70 + y, y)-(160 + 70 - y, y), 9 +NEXT y + + diff --git a/Graphics/Presentations/Intellektika/khkdemo4.BAS b/Graphics/Presentations/Intellektika/khkdemo4.BAS new file mode 100755 index 0000000..4842b71 --- /dev/null +++ b/Graphics/Presentations/Intellektika/khkdemo4.BAS @@ -0,0 +1,34 @@ +DECLARE SUB drawFractal (x!, y!, s!) +DIM SHARED fractalColor ' this variable holds fractal color + ' and because it is 'SHARED' it is accessible + ' from within sub module. +SCREEN 12 + +fractalColor = 10 ' display single fractal +drawFractal 320, 240, 127 + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CLS + +FOR a = 1 TO 128 STEP 5 ' display fractal series + fractalColor = RND * 7 + 7 + drawFractal 320, 240, a +NEXT a + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a + +CHAIN "khkdemo5.bas" + +SUB drawFractal (x, y, s) + IF s >= 1 THEN + LINE (x - s, y - s)-(x + s, y + s), fractalColor, B + drawFractal x - s, y - s, s / 2.3 ' each fractal sub element is 2.3 times smaller + drawFractal x + s, y - s, s / 2.3 ' than previous. + drawFractal x + s, y + s, s / 2.3 + drawFractal x - s, y + s, s / 2.3 + END IF +END SUB diff --git a/Graphics/Presentations/Intellektika/khkdemo5.BAS b/Graphics/Presentations/Intellektika/khkdemo5.BAS new file mode 100755 index 0000000..dd8de8c --- /dev/null +++ b/Graphics/Presentations/Intellektika/khkdemo5.BAS @@ -0,0 +1,308 @@ +DECLARE FUNCTION getWord& (addr!) +DECLARE FUNCTION getByte! (addr!) +' Render animated 3D maze. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2002, Initial version +' 2024.09, Improved program readability using AI + + +DECLARE SUB startText () +DECLARE SUB control () +DECLARE SUB putByte (addr!, dat!) +DECLARE SUB putWord (addr!, dat!) +DECLARE SUB start () +DECLARE SUB animate () + +DIM SHARED px(1 TO 5000) +DIM SHARED py(1 TO 5000) +DIM SHARED pz(1 TO 5000) +DIM SHARED rpx(1 TO 5000) +DIM SHARED rpy(1 TO 5000) +DIM SHARED rpe(1 TO 5000) + +DIM SHARED l1(1 TO 5000) +DIM SHARED l2(1 TO 5000) +DIM SHARED lc(1 TO 5000) + +DIM SHARED nl, np + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + +nl = 0 +np = 0 + +start + +cx = 0 +cy = 0 +cz = 0 + +np = 1 +px(1) = 0 +py(1) = 0 +pz(1) = 0 + +' Main loop +1 +frm = frm + 1 +myx = SIN(frm / 30) * 100 +myz = COS(frm / 59) * 100 +myy = SIN(frm / 300) +an1 = SIN(frm / 60) +an2 = SIN(frm / 36) / 3 + +np = np + 1 +px(np) = cx +py(np) = cy +pz(np) = cz + +nl = nl + 1 +l1(nl) = np +l2(nl) = np - 1 +lc(nl) = INT(RND * 15) + 1 +' lc(nl) = ABS(cx / 20) + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + +' control +animate + +PCOPY 0, 1 +CLS + +IF frm > 1200 THEN GOTO 200 +GOTO 1 + +200 + +CHAIN "khkdemo6.bas" + +SUB animate + +s1 = SIN(an1) +s2 = SIN(an2) +s3 = SIN(an3) + +c1 = COS(an1) +c2 = COS(an2) +c3 = COS(an3) + +' Rotate and project points +FOR a = 1 TO np + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + ' First rotation around Y axis + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + ' Second rotation around X axis + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + ' Check if point is behind the viewer + IF z2 > 3 THEN + rpe(a) = 1 + rpx(a) = x1 / z2 * 130 + 160 + rpy(a) = y1 / z2 * 130 + 100 + ELSE + rpe(a) = 0 + END IF +NEXT a + +' Draw lines between visible points +FOR a = 1 TO nl + + p1 = l1(a) + p2 = l2(a) + IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) + +NEXT a + +END SUB + +SUB control + +IF getByte(8) <> 0 THEN + putByte 8, 0 + xp = getWord(2) + putWord 2, 0 + yp = getWord(4) + putWord 4, 0 + butt = getWord(6) + putWord 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + ' Handle mouse movement + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + +' Limit movement to maxmove +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + +a$ = INKEY$ + +' Handle keyboard input +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +FUNCTION getByte (addr) + getByte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getWord& (addr) + a = PEEK(extADDR + addr) + b = PEEK(extADDR + addr + 1) + + c$ = HEX$(a) + IF LEN(c$) = 1 THEN c$ = "0" + c$ + IF LEN(c$) = 0 THEN c$ = "00" + + c = VAL("&H" + HEX$(b) + c$) + + getWord = c +END FUNCTION + +SUB mouseDemo + +cx = 150 +cy = 100 +maxmove = 50 + +' Main loop +100 +frm = frm + 1 + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getWord(2) +putWord 2, 0 +yp = getWord(4) +putWord 4, 0 + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + +CIRCLE (cx, cy), 10, 10 + +SOUND 0, .05 +GOTO 100 + +END SUB + +SUB putByte (addr, dat) + POKE (extADDR + addr), dat +END SUB + +SUB putWord (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start + ' startext + +SCREEN 7, , , 1 + +maxmove = 50 + +END SUB + +SUB startText + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getWord(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/CAT.I01 b/Graphics/Presentations/KHK Intellektika 2004 demo/CAT.I01 deleted file mode 100644 index eb828e6..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/CAT.I01 +++ /dev/null @@ -1,32222 +0,0 @@ - 179 - 180 - 0 - 0 - 0 - 1 - 0 - 0 - 37 - 0 - 6 - 1 - 0 - 0 - 37 - 0 - 0 - 1 - 6 - 37 - 0 - 0 - 43 - 1 - 43 - 43 - 44 - 86 - 86 - 123 - 129 - 93 - 165 - 129 - 136 - 165 - 172 - 129 - 136 - 165 - 136 - 165 - 172 - 173 - 178 - 208 - 172 - 215 - 172 - 208 - 214 - 173 - 208 - 172 - 172 - 172 - 165 - 136 - 165 - 172 - 129 - 129 - 129 - 159 - 135 - 123 - 93 - 122 - 129 - 122 - 93 - 159 - 129 - 135 - 166 - 165 - 136 - 165 - 130 - 135 - 165 - 130 - 129 - 129 - 129 - 129 - 93 - 122 - 93 - 129 - 122 - 87 - 129 - 92 - 123 - 86 - 86 - 86 - 86 - 86 - 43 - 44 - 43 - 43 - 86 - 86 - 86 - 86 - 87 - 128 - 86 - 129 - 123 - 129 - 129 - 122 - 129 - 86 - 79 - 86 - 43 - 86 - 43 - 43 - 79 - 43 - 43 - 37 - 43 - 85 - 86 - 122 - 87 - 128 - 87 - 80 - 85 - 44 - 79 - 49 - 80 - 86 - 85 - 80 - 86 - 80 - 85 - 80 - 86 - 86 - 79 - 86 - 79 - 43 - 43 - 43 - 43 - 44 - 86 - 92 - 171 - 136 - 173 - 178 - 173 - 215 - 178 - 137 - 178 - 173 - 178 - 173 - 172 - 178 - 173 - 178 - 173 - 172 - 179 - 172 - 179 - 36 - 0 - 1 - 0 - 0 - 7 - 36 - 0 - 1 - 0 - 0 - 1 - 36 - 0 - 7 - 0 - 0 - 1 - 36 - 0 - 1 - 6 - 37 - 7 - 36 - 44 - 86 - 122 - 87 - 122 - 129 - 129 - 172 - 172 - 165 - 136 - 129 - 171 - 136 - 166 - 178 - 209 - 172 - 208 - 179 - 172 - 209 - 178 - 209 - 172 - 172 - 172 - 172 - 165 - 172 - 129 - 129 - 129 - 130 - 164 - 93 - 123 - 129 - 128 - 87 - 122 - 86 - 129 - 87 - 128 - 130 - 171 - 130 - 171 - 166 - 135 - 166 - 129 - 171 - 130 - 129 - 129 - 129 - 129 - 129 - 87 - 128 - 87 - 129 - 86 - 129 - 86 - 123 - 92 - 86 - 87 - 86 - 79 - 43 - 50 - 79 - 44 - 86 - 128 - 87 - 93 - 128 - 123 - 128 - 123 - 129 - 165 - 136 - 123 - 128 - 86 - 86 - 86 - 80 - 85 - 44 - 79 - 43 - 43 - 43 - 43 - 43 - 79 - 86 - 123 - 92 - 86 - 86 - 86 - 80 - 85 - 43 - 43 - 44 - 79 - 86 - 79 - 85 - 44 - 79 - 86 - 79 - 86 - 43 - 79 - 44 - 43 - 43 - 43 - 43 - 49 - 87 - 129 - 129 - 178 - 173 - 178 - 136 - 215 - 143 - 172 - 172 - 178 - 172 - 143 - 172 - 179 - 172 - 179 - 172 - 173 - 178 - 209 - 178 - 1 - 0 - 0 - 0 - 37 - 0 - 0 - 7 - 0 - 0 - 37 - 0 - 0 - 1 - 0 - 6 - 37 - 0 - 0 - 1 - 0 - 0 - 43 - 43 - 36 - 44 - 49 - 116 - 92 - 123 - 128 - 130 - 165 - 172 - 130 - 171 - 129 - 172 - 130 - 178 - 172 - 208 - 173 - 172 - 215 - 172 - 214 - 173 - 172 - 172 - 172 - 171 - 166 - 135 - 130 - 122 - 93 - 129 - 123 - 92 - 123 - 92 - 86 - 87 - 122 - 86 - 86 - 87 - 128 - 130 - 129 - 171 - 172 - 166 - 172 - 135 - 166 - 135 - 165 - 130 - 129 - 129 - 129 - 130 - 128 - 129 - 87 - 129 - 128 - 87 - 86 - 129 - 85 - 93 - 122 - 86 - 86 - 43 - 50 - 79 - 86 - 87 - 86 - 128 - 93 - 128 - 129 - 123 - 129 - 136 - 165 - 129 - 165 - 129 - 129 - 87 - 122 - 86 - 85 - 44 - 50 - 79 - 43 - 43 - 43 - 43 - 43 - 44 - 86 - 128 - 87 - 86 - 122 - 50 - 79 - 43 - 43 - 86 - 43 - 43 - 80 - 79 - 79 - 50 - 79 - 86 - 79 - 43 - 79 - 43 - 79 - 43 - 7 - 43 - 44 - 50 - 85 - 166 - 135 - 172 - 178 - 173 - 179 - 177 - 173 - 178 - 137 - 178 - 173 - 178 - 136 - 178 - 173 - 178 - 172 - 173 - 177 - 173 - 178 - 1 - 36 - 0 - 0 - 1 - 0 - 0 - 43 - 0 - 0 - 1 - 0 - 0 - 37 - 0 - 6 - 1 - 0 - 0 - 37 - 0 - 7 - 0 - 37 - 42 - 43 - 80 - 86 - 128 - 87 - 128 - 165 - 130 - 171 - 166 - 136 - 165 - 136 - 172 - 172 - 208 - 172 - 172 - 179 - 172 - 172 - 173 - 178 - 171 - 166 - 172 - 136 - 165 - 86 - 129 - 86 - 86 - 86 - 86 - 87 - 86 - 86 - 85 - 44 - 86 - 86 - 86 - 86 - 129 - 129 - 172 - 135 - 166 - 172 - 171 - 136 - 165 - 136 - 165 - 136 - 165 - 129 - 129 - 130 - 129 - 129 - 92 - 123 - 129 - 92 - 122 - 93 - 122 - 87 - 129 - 86 - 86 - 43 - 86 - 93 - 122 - 93 - 122 - 93 - 122 - 129 - 129 - 129 - 171 - 165 - 130 - 171 - 129 - 123 - 129 - 129 - 86 - 86 - 79 - 50 - 80 - 49 - 80 - 43 - 43 - 7 - 43 - 79 - 86 - 86 - 86 - 87 - 86 - 85 - 44 - 79 - 43 - 7 - 50 - 79 - 79 - 43 - 86 - 79 - 79 - 44 - 79 - 43 - 79 - 43 - 44 - 43 - 6 - 44 - 49 - 80 - 93 - 129 - 172 - 178 - 136 - 178 - 173 - 178 - 173 - 179 - 172 - 179 - 172 - 172 - 143 - 214 - 173 - 172 - 179 - 172 - 179 - 172 - 179 - 0 - 36 - 1 - 0 - 0 - 0 - 1 - 6 - 36 - 1 - 0 - 0 - 1 - 0 - 36 - 1 - 6 - 0 - 1 - 0 - 36 - 1 - 6 - 37 - 43 - 43 - 86 - 122 - 123 - 129 - 128 - 129 - 130 - 165 - 172 - 129 - 172 - 171 - 172 - 173 - 172 - 178 - 172 - 172 - 173 - 208 - 171 - 172 - 172 - 129 - 130 - 129 - 129 - 86 - 86 - 86 - 50 - 80 - 85 - 43 - 86 - 43 - 43 - 80 - 49 - 80 - 86 - 93 - 122 - 136 - 171 - 166 - 171 - 172 - 172 - 136 - 166 - 171 - 136 - 165 - 136 - 129 - 165 - 136 - 129 - 129 - 129 - 129 - 123 - 129 - 93 - 122 - 129 - 93 - 122 - 86 - 86 - 86 - 86 - 87 - 129 - 129 - 128 - 87 - 129 - 129 - 129 - 129 - 172 - 165 - 136 - 159 - 128 - 129 - 129 - 129 - 123 - 85 - 44 - 86 - 85 - 80 - 50 - 43 - 43 - 37 - 43 - 43 - 86 - 86 - 86 - 86 - 86 - 43 - 86 - 43 - 43 - 43 - 43 - 43 - 43 - 80 - 49 - 43 - 80 - 79 - 43 - 79 - 44 - 43 - 49 - 43 - 43 - 43 - 50 - 86 - 129 - 136 - 135 - 209 - 179 - 172 - 179 - 179 - 172 - 179 - 171 - 179 - 172 - 172 - 179 - 172 - 179 - 172 - 179 - 209 - 178 - 179 - 172 - 1 - 36 - 6 - 1 - 0 - 0 - 1 - 36 - 0 - 1 - 0 - 6 - 1 - 0 - 36 - 1 - 0 - 0 - 7 - 36 - 0 - 1 - 0 - 43 - 37 - 43 - 86 - 122 - 129 - 129 - 128 - 123 - 172 - 129 - 172 - 129 - 136 - 171 - 209 - 172 - 214 - 172 - 173 - 172 - 172 - 172 - 171 - 166 - 135 - 124 - 128 - 93 - 86 - 87 - 85 - 80 - 43 - 50 - 79 - 43 - 50 - 43 - 43 - 37 - 49 - 86 - 87 - 128 - 87 - 171 - 130 - 172 - 172 - 172 - 172 - 171 - 166 - 172 - 172 - 135 - 166 - 135 - 166 - 135 - 165 - 129 - 129 - 135 - 129 - 123 - 129 - 129 - 129 - 86 - 87 - 128 - 86 - 86 - 86 - 93 - 128 - 123 - 93 - 129 - 128 - 130 - 129 - 129 - 165 - 129 - 166 - 129 - 128 - 123 - 129 - 129 - 86 - 122 - 86 - 50 - 86 - 80 - 49 - 43 - 37 - 7 - 43 - 43 - 43 - 86 - 79 - 50 - 86 - 86 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 79 - 43 - 43 - 44 - 79 - 43 - 86 - 43 - 43 - 44 - 49 - 44 - 87 - 128 - 135 - 136 - 172 - 215 - 172 - 179 - 173 - 178 - 173 - 178 - 209 - 178 - 173 - 172 - 178 - 173 - 179 - 214 - 173 - 178 - 209 - 179 - 214 - 1 - 0 - 0 - 1 - 0 - 36 - 1 - 6 - 0 - 1 - 0 - 36 - 1 - 0 - 0 - 1 - 6 - 0 - 37 - 0 - 0 - 1 - 42 - 43 - 43 - 79 - 86 - 86 - 123 - 129 - 129 - 165 - 129 - 165 - 136 - 165 - 136 - 172 - 172 - 209 - 178 - 172 - 173 - 172 - 171 - 172 - 172 - 130 - 165 - 93 - 86 - 122 - 86 - 86 - 50 - 79 - 43 - 44 - 49 - 43 - 44 - 42 - 43 - 37 - 50 - 86 - 122 - 93 - 129 - 129 - 166 - 171 - 172 - 172 - 172 - 136 - 172 - 172 - 171 - 166 - 136 - 165 - 136 - 165 - 136 - 129 - 129 - 129 - 130 - 165 - 92 - 129 - 129 - 86 - 122 - 92 - 87 - 128 - 86 - 86 - 87 - 128 - 87 - 129 - 129 - 129 - 129 - 130 - 165 - 128 - 130 - 128 - 129 - 123 - 129 - 129 - 86 - 122 - 86 - 86 - 86 - 86 - 43 - 43 - 43 - 1 - 43 - 43 - 85 - 44 - 85 - 44 - 86 - 86 - 43 - 44 - 42 - 43 - 37 - 7 - 79 - 43 - 43 - 43 - 43 - 85 - 44 - 43 - 79 - 43 - 44 - 49 - 49 - 86 - 87 - 129 - 135 - 172 - 173 - 178 - 173 - 178 - 173 - 179 - 214 - 173 - 172 - 179 - 172 - 179 - 172 - 214 - 173 - 215 - 172 - 214 - 215 - 173 - 214 - 0 - 1 - 0 - 42 - 1 - 0 - 0 - 1 - 0 - 36 - 1 - 0 - 6 - 1 - 0 - 36 - 1 - 0 - 0 - 7 - 36 - 43 - 7 - 79 - 44 - 86 - 122 - 86 - 122 - 129 - 86 - 129 - 165 - 136 - 165 - 129 - 130 - 171 - 172 - 179 - 172 - 208 - 172 - 172 - 172 - 136 - 129 - 123 - 128 - 93 - 122 - 87 - 85 - 86 - 86 - 50 - 49 - 79 - 44 - 85 - 44 - 85 - 43 - 44 - 86 - 122 - 93 - 128 - 129 - 130 - 171 - 172 - 130 - 172 - 172 - 178 - 166 - 172 - 172 - 171 - 172 - 130 - 165 - 135 - 130 - 129 - 129 - 129 - 129 - 165 - 130 - 129 - 129 - 92 - 86 - 123 - 92 - 123 - 86 - 86 - 86 - 86 - 129 - 92 - 123 - 129 - 92 - 123 - 129 - 129 - 129 - 129 - 122 - 165 - 93 - 122 - 86 - 86 - 86 - 86 - 44 - 79 - 43 - 7 - 43 - 36 - 7 - 43 - 80 - 49 - 80 - 50 - 85 - 80 - 50 - 43 - 43 - 43 - 43 - 43 - 43 - 1 - 49 - 43 - 43 - 43 - 44 - 43 - 79 - 50 - 80 - 50 - 128 - 93 - 166 - 136 - 172 - 172 - 179 - 214 - 173 - 179 - 208 - 179 - 178 - 209 - 179 - 172 - 179 - 179 - 208 - 179 - 208 - 215 - 179 - 209 - 214 - 209 - 179 - 0 - 36 - 1 - 6 - 0 - 1 - 0 - 36 - 1 - 6 - 1 - 36 - 0 - 1 - 0 - 6 - 1 - 36 - 0 - 1 - 42 - 1 - 43 - 43 - 86 - 86 - 122 - 129 - 123 - 128 - 93 - 159 - 129 - 129 - 135 - 166 - 129 - 136 - 165 - 172 - 172 - 135 - 166 - 171 - 130 - 172 - 129 - 86 - 129 - 86 - 86 - 86 - 86 - 86 - 87 - 86 - 86 - 86 - 43 - 86 - 86 - 50 - 79 - 50 - 86 - 123 - 92 - 123 - 129 - 172 - 136 - 171 - 166 - 171 - 172 - 172 - 172 - 136 - 172 - 172 - 130 - 171 - 130 - 171 - 130 - 129 - 129 - 129 - 165 - 136 - 129 - 129 - 129 - 87 - 128 - 87 - 122 - 93 - 86 - 86 - 122 - 86 - 93 - 86 - 123 - 86 - 92 - 129 - 122 - 129 - 129 - 129 - 123 - 128 - 123 - 86 - 128 - 86 - 80 - 86 - 50 - 43 - 43 - 43 - 43 - 37 - 7 - 43 - 79 - 49 - 44 - 86 - 86 - 44 - 85 - 44 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 6 - 44 - 43 - 79 - 49 - 86 - 50 - 86 - 92 - 130 - 129 - 171 - 136 - 172 - 179 - 208 - 179 - 173 - 214 - 173 - 214 - 173 - 214 - 173 - 214 - 172 - 178 - 209 - 178 - 209 - 214 - 215 - 209 - 178 - 209 - 214 - 1 - 0 - 36 - 1 - 6 - 0 - 1 - 0 - 36 - 7 - 1 - 36 - 6 - 1 - 0 - 0 - 37 - 0 - 0 - 7 - 0 - 37 - 6 - 43 - 80 - 86 - 122 - 136 - 159 - 128 - 129 - 129 - 129 - 165 - 129 - 130 - 129 - 129 - 129 - 129 - 136 - 165 - 130 - 135 - 165 - 130 - 128 - 87 - 122 - 92 - 86 - 86 - 86 - 129 - 87 - 128 - 129 - 87 - 85 - 86 - 86 - 86 - 80 - 50 - 122 - 93 - 123 - 128 - 130 - 171 - 136 - 172 - 166 - 172 - 135 - 172 - 172 - 166 - 172 - 171 - 172 - 135 - 166 - 135 - 130 - 165 - 129 - 129 - 136 - 129 - 129 - 166 - 129 - 93 - 122 - 92 - 123 - 93 - 122 - 93 - 86 - 122 - 86 - 86 - 86 - 93 - 122 - 86 - 129 - 129 - 86 - 129 - 123 - 86 - 128 - 86 - 122 - 87 - 85 - 80 - 50 - 43 - 86 - 43 - 37 - 43 - 42 - 44 - 43 - 49 - 80 - 50 - 86 - 86 - 50 - 79 - 44 - 43 - 43 - 43 - 49 - 44 - 43 - 44 - 13 - 80 - 50 - 86 - 86 - 92 - 129 - 130 - 135 - 172 - 172 - 172 - 178 - 173 - 179 - 208 - 179 - 172 - 215 - 172 - 215 - 172 - 179 - 215 - 172 - 214 - 173 - 215 - 214 - 209 - 214 - 173 - 215 - 214 - 209 - 0 - 0 - 1 - 6 - 36 - 1 - 0 - 43 - 1 - 0 - 43 - 6 - 1 - 36 - 0 - 1 - 0 - 7 - 36 - 7 - 37 - 6 - 37 - 43 - 43 - 43 - 122 - 129 - 129 - 165 - 129 - 129 - 165 - 128 - 129 - 87 - 129 - 129 - 128 - 124 - 129 - 135 - 129 - 129 - 129 - 130 - 128 - 87 - 122 - 93 - 123 - 92 - 129 - 129 - 129 - 130 - 165 - 129 - 93 - 85 - 129 - 87 - 85 - 92 - 123 - 92 - 129 - 123 - 135 - 166 - 172 - 171 - 136 - 172 - 166 - 136 - 171 - 166 - 172 - 172 - 172 - 136 - 165 - 172 - 129 - 136 - 129 - 165 - 130 - 135 - 165 - 130 - 135 - 123 - 92 - 129 - 128 - 87 - 123 - 92 - 123 - 92 - 86 - 87 - 122 - 92 - 123 - 93 - 122 - 129 - 86 - 129 - 122 - 86 - 86 - 123 - 122 - 86 - 50 - 86 - 79 - 50 - 43 - 80 - 43 - 43 - 7 - 43 - 79 - 43 - 86 - 50 - 86 - 122 - 50 - 86 - 43 - 86 - 44 - 86 - 49 - 49 - 86 - 49 - 79 - 50 - 86 - 92 - 129 - 129 - 130 - 135 - 179 - 172 - 208 - 179 - 172 - 179 - 209 - 178 - 179 - 208 - 179 - 208 - 214 - 173 - 215 - 208 - 179 - 215 - 208 - 215 - 179 - 208 - 215 - 208 - 215 - 214 - 209 - 0 - 0 - 43 - 0 - 0 - 1 - 42 - 1 - 0 - 43 - 1 - 42 - 1 - 0 - 43 - 0 - 0 - 1 - 43 - 42 - 1 - 43 - 37 - 6 - 37 - 43 - 85 - 123 - 92 - 165 - 123 - 129 - 129 - 129 - 129 - 86 - 128 - 87 - 86 - 128 - 87 - 129 - 129 - 122 - 93 - 129 - 128 - 87 - 129 - 129 - 128 - 129 - 130 - 129 - 171 - 129 - 172 - 129 - 129 - 129 - 123 - 93 - 128 - 123 - 93 - 122 - 129 - 129 - 129 - 172 - 172 - 172 - 135 - 166 - 136 - 166 - 171 - 136 - 166 - 172 - 171 - 172 - 136 - 165 - 136 - 165 - 135 - 130 - 165 - 135 - 130 - 165 - 136 - 129 - 123 - 92 - 130 - 128 - 87 - 128 - 87 - 122 - 93 - 86 - 86 - 128 - 87 - 129 - 86 - 122 - 129 - 86 - 122 - 86 - 87 - 128 - 86 - 80 - 86 - 85 - 44 - 86 - 50 - 79 - 43 - 43 - 43 - 43 - 43 - 44 - 85 - 86 - 86 - 86 - 86 - 86 - 86 - 50 - 86 - 86 - 87 - 128 - 87 - 92 - 93 - 129 - 93 - 129 - 136 - 172 - 135 - 173 - 178 - 173 - 215 - 178 - 209 - 178 - 215 - 173 - 178 - 209 - 172 - 215 - 208 - 178 - 215 - 209 - 215 - 215 - 208 - 215 - 214 - 209 - 214 - 209 - 214 - 215 - 209 - 0 - 43 - 0 - 0 - 1 - 42 - 1 - 43 - 0 - 43 - 43 - 0 - 1 - 0 - 43 - 0 - 43 - 37 - 7 - 79 - 43 - 43 - 43 - 6 - 37 - 43 - 79 - 86 - 122 - 129 - 86 - 129 - 129 - 129 - 129 - 123 - 86 - 86 - 86 - 86 - 86 - 86 - 87 - 128 - 92 - 123 - 129 - 93 - 129 - 165 - 135 - 166 - 136 - 171 - 130 - 165 - 172 - 135 - 166 - 135 - 123 - 93 - 128 - 129 - 123 - 129 - 92 - 130 - 129 - 172 - 171 - 130 - 172 - 165 - 136 - 171 - 130 - 172 - 165 - 172 - 136 - 171 - 172 - 166 - 135 - 130 - 165 - 135 - 130 - 129 - 171 - 130 - 165 - 129 - 93 - 129 - 129 - 122 - 129 - 93 - 122 - 87 - 86 - 128 - 87 - 86 - 129 - 86 - 122 - 87 - 92 - 122 - 122 - 87 - 128 - 86 - 86 - 80 - 86 - 85 - 87 - 43 - 86 - 44 - 85 - 43 - 43 - 43 - 43 - 43 - 49 - 87 - 86 - 129 - 86 - 92 - 86 - 86 - 129 - 92 - 86 - 129 - 100 - 165 - 136 - 136 - 130 - 178 - 135 - 173 - 172 - 179 - 178 - 215 - 173 - 178 - 179 - 209 - 214 - 179 - 173 - 214 - 208 - 214 - 173 - 214 - 215 - 209 - 215 - 215 - 209 - 179 - 214 - 209 - 214 - 208 - 215 - 214 - 209 - 43 - 36 - 1 - 6 - 37 - 6 - 43 - 37 - 43 - 7 - 36 - 7 - 37 - 42 - 37 - 43 - 79 - 43 - 49 - 43 - 79 - 44 - 36 - 43 - 43 - 79 - 86 - 86 - 122 - 129 - 123 - 129 - 129 - 129 - 129 - 86 - 86 - 85 - 44 - 86 - 87 - 85 - 86 - 87 - 123 - 128 - 129 - 129 - 130 - 171 - 135 - 166 - 172 - 130 - 171 - 172 - 130 - 171 - 130 - 129 - 171 - 130 - 129 - 129 - 129 - 92 - 129 - 123 - 135 - 166 - 136 - 165 - 136 - 165 - 136 - 166 - 129 - 135 - 172 - 130 - 171 - 172 - 172 - 165 - 136 - 129 - 129 - 166 - 135 - 130 - 171 - 129 - 130 - 128 - 123 - 129 - 129 - 129 - 93 - 123 - 128 - 93 - 122 - 87 - 128 - 86 - 86 - 86 - 129 - 86 - 122 - 93 - 123 - 128 - 122 - 86 - 80 - 86 - 86 - 86 - 86 - 86 - 80 - 85 - 44 - 49 - 43 - 37 - 43 - 49 - 81 - 92 - 93 - 86 - 129 - 92 - 129 - 93 - 129 - 129 - 136 - 129 - 137 - 172 - 177 - 137 - 178 - 173 - 179 - 214 - 173 - 179 - 179 - 208 - 179 - 179 - 172 - 215 - 179 - 178 - 209 - 179 - 208 - 215 - 214 - 209 - 179 - 215 - 208 - 215 - 215 - 208 - 215 - 214 - 215 - 209 - 215 - 214 - 209 - 79 - 43 - 0 - 43 - 0 - 43 - 1 - 43 - 43 - 43 - 43 - 43 - 79 - 49 - 43 - 80 - 43 - 79 - 79 - 44 - 43 - 42 - 43 - 37 - 43 - 85 - 80 - 129 - 86 - 129 - 122 - 129 - 86 - 165 - 87 - 128 - 44 - 86 - 79 - 87 - 86 - 86 - 86 - 129 - 87 - 129 - 129 - 171 - 130 - 172 - 171 - 172 - 130 - 171 - 172 - 172 - 129 - 130 - 135 - 165 - 130 - 129 - 129 - 135 - 165 - 129 - 87 - 171 - 130 - 171 - 130 - 171 - 172 - 130 - 171 - 129 - 165 - 136 - 129 - 172 - 166 - 172 - 135 - 166 - 135 - 129 - 130 - 129 - 129 - 166 - 135 - 165 - 93 - 129 - 122 - 93 - 129 - 129 - 122 - 135 - 123 - 93 - 128 - 87 - 128 - 87 - 122 - 93 - 122 - 86 - 129 - 129 - 122 - 87 - 128 - 86 - 122 - 44 - 86 - 86 - 86 - 86 - 86 - 50 - 79 - 80 - 43 - 7 - 43 - 43 - 49 - 86 - 129 - 87 - 92 - 136 - 165 - 135 - 172 - 136 - 172 - 179 - 179 - 172 - 179 - 215 - 179 - 179 - 178 - 215 - 179 - 214 - 179 - 173 - 214 - 179 - 173 - 214 - 179 - 173 - 214 - 215 - 209 - 214 - 209 - 215 - 214 - 215 - 209 - 215 - 215 - 208 - 215 - 215 - 214 - 209 - 214 - 215 - 214 - 79 - 37 - 7 - 43 - 0 - 37 - 6 - 43 - 80 - 43 - 43 - 86 - 43 - 43 - 86 - 43 - 43 - 79 - 80 - 43 - 43 - 42 - 37 - 43 - 43 - 79 - 86 - 122 - 129 - 86 - 86 - 123 - 128 - 87 - 129 - 86 - 80 - 86 - 50 - 122 - 86 - 93 - 122 - 87 - 129 - 92 - 165 - 130 - 129 - 172 - 172 - 166 - 171 - 136 - 172 - 172 - 165 - 129 - 129 - 136 - 164 - 130 - 129 - 172 - 135 - 130 - 165 - 129 - 136 - 165 - 172 - 136 - 171 - 166 - 136 - 165 - 136 - 165 - 129 - 130 - 171 - 136 - 172 - 165 - 130 - 129 - 135 - 129 - 130 - 129 - 171 - 129 - 129 - 129 - 122 - 93 - 122 - 129 - 93 - 128 - 129 - 129 - 93 - 123 - 128 - 87 - 129 - 86 - 129 - 122 - 129 - 129 - 87 - 122 - 92 - 123 - 86 - 79 - 86 - 79 - 86 - 86 - 86 - 50 - 86 - 43 - 43 - 43 - 44 - 43 - 85 - 86 - 93 - 86 - 93 - 129 - 172 - 135 - 173 - 178 - 173 - 215 - 178 - 179 - 215 - 179 - 214 - 179 - 215 - 178 - 179 - 179 - 208 - 179 - 179 - 209 - 178 - 179 - 209 - 178 - 215 - 209 - 215 - 215 - 215 - 208 - 215 - 215 - 209 - 179 - 215 - 208 - 215 - 214 - 209 - 214 - 215 - 208 - 215 - 79 - 43 - 43 - 0 - 1 - 42 - 43 - 43 - 43 - 80 - 43 - 86 - 43 - 43 - 79 - 43 - 79 - 50 - 79 - 44 - 43 - 43 - 42 - 79 - 43 - 80 - 85 - 87 - 86 - 122 - 128 - 87 - 123 - 128 - 129 - 87 - 86 - 86 - 86 - 87 - 122 - 93 - 87 - 123 - 86 - 129 - 129 - 129 - 136 - 165 - 172 - 172 - 171 - 172 - 172 - 135 - 172 - 166 - 135 - 129 - 166 - 135 - 166 - 171 - 136 - 166 - 171 - 135 - 166 - 135 - 172 - 172 - 165 - 136 - 172 - 166 - 135 - 129 - 130 - 165 - 135 - 166 - 136 - 165 - 136 - 129 - 123 - 135 - 129 - 129 - 130 - 171 - 87 - 128 - 87 - 129 - 128 - 87 - 129 - 129 - 86 - 129 - 129 - 129 - 123 - 92 - 129 - 123 - 128 - 123 - 93 - 122 - 86 - 129 - 86 - 122 - 86 - 86 - 80 - 49 - 122 - 86 - 50 - 86 - 44 - 43 - 79 - 50 - 43 - 44 - 43 - 86 - 93 - 86 - 129 - 135 - 130 - 178 - 172 - 173 - 179 - 214 - 179 - 215 - 179 - 209 - 179 - 215 - 179 - 178 - 209 - 179 - 179 - 208 - 179 - 178 - 209 - 179 - 214 - 173 - 215 - 214 - 215 - 215 - 209 - 215 - 215 - 215 - 208 - 215 - 215 - 215 - 208 - 214 - 215 - 215 - 215 - 208 - 215 - 79 - 43 - 43 - 43 - 0 - 1 - 42 - 43 - 44 - 43 - 50 - 79 - 86 - 36 - 43 - 79 - 44 - 85 - 44 - 85 - 79 - 44 - 79 - 85 - 43 - 43 - 80 - 86 - 86 - 122 - 129 - 87 - 128 - 123 - 129 - 87 - 92 - 86 - 123 - 93 - 129 - 165 - 130 - 86 - 129 - 129 - 129 - 166 - 171 - 172 - 172 - 172 - 172 - 172 - 172 - 135 - 166 - 172 - 171 - 136 - 165 - 136 - 165 - 172 - 173 - 171 - 172 - 136 - 166 - 171 - 136 - 172 - 171 - 166 - 172 - 129 - 172 - 129 - 129 - 129 - 166 - 136 - 165 - 135 - 130 - 129 - 129 - 165 - 129 - 129 - 130 - 135 - 123 - 92 - 129 - 86 - 129 - 87 - 128 - 129 - 87 - 128 - 129 - 129 - 129 - 123 - 129 - 93 - 129 - 122 - 86 - 122 - 86 - 129 - 86 - 86 - 86 - 116 - 85 - 86 - 86 - 86 - 50 - 80 - 86 - 43 - 50 - 43 - 43 - 43 - 44 - 85 - 87 - 129 - 129 - 136 - 136 - 208 - 172 - 179 - 179 - 214 - 215 - 179 - 215 - 215 - 179 - 215 - 172 - 215 - 179 - 214 - 173 - 215 - 172 - 215 - 214 - 173 - 215 - 208 - 179 - 215 - 215 - 215 - 209 - 214 - 215 - 215 - 215 - 208 - 215 - 215 - 208 - 215 - 214 - 215 - 209 - 214 - 215 - 79 - 43 - 43 - 43 - 1 - 43 - 36 - 7 - 43 - 80 - 49 - 79 - 44 - 49 - 79 - 44 - 79 - 86 - 79 - 50 - 79 - 79 - 43 - 50 - 79 - 43 - 80 - 85 - 123 - 92 - 123 - 122 - 129 - 86 - 129 - 129 - 123 - 93 - 122 - 129 - 130 - 129 - 166 - 135 - 130 - 129 - 172 - 171 - 166 - 136 - 171 - 172 - 136 - 166 - 172 - 172 - 178 - 166 - 172 - 171 - 130 - 129 - 172 - 171 - 172 - 172 - 173 - 172 - 171 - 136 - 166 - 172 - 172 - 171 - 136 - 166 - 135 - 165 - 135 - 130 - 129 - 165 - 136 - 129 - 129 - 122 - 136 - 129 - 129 - 129 - 123 - 129 - 128 - 87 - 129 - 86 - 87 - 128 - 86 - 86 - 129 - 92 - 166 - 129 - 93 - 122 - 92 - 123 - 92 - 123 - 86 - 122 - 86 - 122 - 86 - 86 - 86 - 123 - 86 - 86 - 85 - 50 - 80 - 86 - 43 - 50 - 37 - 43 - 7 - 42 - 44 - 49 - 93 - 129 - 129 - 130 - 171 - 142 - 209 - 179 - 214 - 179 - 209 - 215 - 215 - 179 - 215 - 179 - 215 - 178 - 209 - 179 - 214 - 208 - 179 - 214 - 209 - 179 - 214 - 215 - 208 - 215 - 215 - 215 - 215 - 215 - 208 - 215 - 214 - 209 - 214 - 209 - 215 - 214 - 215 - 208 - 215 - 214 - 209 - 86 - 79 - 86 - 43 - 0 - 7 - 36 - 43 - 43 - 43 - 43 - 44 - 79 - 43 - 43 - 85 - 44 - 79 - 86 - 79 - 50 - 79 - 44 - 43 - 79 - 49 - 80 - 122 - 92 - 123 - 129 - 128 - 123 - 86 - 123 - 92 - 87 - 129 - 129 - 129 - 129 - 130 - 165 - 129 - 172 - 130 - 171 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 136 - 172 - 165 - 172 - 172 - 129 - 172 - 136 - 166 - 214 - 173 - 214 - 172 - 172 - 172 - 135 - 173 - 172 - 172 - 165 - 135 - 166 - 136 - 165 - 136 - 129 - 129 - 172 - 129 - 129 - 92 - 165 - 129 - 93 - 129 - 123 - 129 - 129 - 86 - 93 - 122 - 93 - 122 - 86 - 92 - 123 - 93 - 122 - 129 - 93 - 129 - 122 - 87 - 128 - 123 - 128 - 87 - 86 - 86 - 85 - 122 - 86 - 87 - 86 - 86 - 80 - 85 - 50 - 80 - 85 - 43 - 7 - 37 - 7 - 43 - 43 - 50 - 122 - 93 - 129 - 136 - 171 - 173 - 172 - 179 - 215 - 215 - 173 - 215 - 214 - 179 - 215 - 215 - 172 - 215 - 215 - 215 - 208 - 179 - 208 - 215 - 179 - 208 - 215 - 215 - 209 - 215 - 214 - 209 - 215 - 208 - 215 - 178 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 215 - 79 - 86 - 43 - 79 - 43 - 1 - 43 - 0 - 43 - 43 - 7 - 43 - 79 - 43 - 43 - 79 - 44 - 85 - 80 - 85 - 44 - 79 - 86 - 79 - 43 - 80 - 85 - 87 - 128 - 129 - 123 - 129 - 122 - 93 - 122 - 86 - 129 - 123 - 130 - 129 - 129 - 130 - 135 - 166 - 135 - 166 - 172 - 172 - 172 - 178 - 172 - 172 - 172 - 172 - 166 - 136 - 172 - 172 - 171 - 166 - 172 - 135 - 172 - 171 - 173 - 208 - 179 - 172 - 208 - 172 - 172 - 136 - 172 - 172 - 171 - 166 - 136 - 166 - 135 - 129 - 166 - 135 - 129 - 130 - 128 - 129 - 129 - 130 - 129 - 123 - 128 - 93 - 128 - 86 - 87 - 128 - 87 - 122 - 93 - 86 - 122 - 93 - 123 - 128 - 93 - 123 - 92 - 123 - 129 - 122 - 93 - 86 - 116 - 85 - 87 - 122 - 86 - 86 - 86 - 79 - 86 - 50 - 86 - 80 - 49 - 43 - 37 - 7 - 43 - 42 - 44 - 49 - 86 - 130 - 129 - 135 - 172 - 136 - 208 - 179 - 214 - 209 - 215 - 215 - 179 - 215 - 215 - 172 - 215 - 215 - 209 - 178 - 215 - 208 - 214 - 209 - 179 - 208 - 215 - 214 - 209 - 214 - 172 - 215 - 209 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 209 - 214 - 215 - 79 - 43 - 43 - 80 - 49 - 37 - 43 - 6 - 37 - 7 - 43 - 43 - 43 - 79 - 43 - 43 - 86 - 79 - 80 - 85 - 86 - 86 - 80 - 86 - 85 - 80 - 86 - 86 - 128 - 87 - 165 - 86 - 123 - 128 - 87 - 129 - 124 - 128 - 93 - 166 - 129 - 129 - 130 - 171 - 130 - 172 - 172 - 172 - 172 - 171 - 172 - 172 - 172 - 172 - 130 - 171 - 130 - 172 - 172 - 172 - 172 - 129 - 172 - 166 - 172 - 178 - 209 - 178 - 209 - 172 - 172 - 172 - 172 - 171 - 172 - 136 - 165 - 166 - 135 - 129 - 129 - 165 - 135 - 129 - 123 - 93 - 129 - 129 - 129 - 122 - 93 - 129 - 122 - 93 - 123 - 92 - 123 - 86 - 86 - 123 - 91 - 87 - 92 - 123 - 92 - 129 - 86 - 129 - 123 - 128 - 86 - 86 - 86 - 116 - 86 - 86 - 86 - 86 - 79 - 86 - 86 - 86 - 44 - 86 - 43 - 43 - 43 - 7 - 37 - 6 - 44 - 86 - 92 - 128 - 130 - 135 - 172 - 172 - 173 - 178 - 209 - 215 - 178 - 209 - 215 - 214 - 215 - 179 - 209 - 215 - 215 - 208 - 215 - 215 - 209 - 214 - 173 - 214 - 209 - 214 - 208 - 215 - 208 - 172 - 215 - 209 - 178 - 209 - 214 - 209 - 215 - 214 - 208 - 215 - 214 - 209 - 214 - 209 - 214 - 79 - 43 - 43 - 44 - 79 - 43 - 7 - 43 - 43 - 1 - 43 - 43 - 79 - 49 - 79 - 80 - 49 - 86 - 80 - 86 - 85 - 86 - 116 - 86 - 86 - 86 - 122 - 86 - 87 - 128 - 123 - 128 - 86 - 123 - 86 - 92 - 123 - 129 - 87 - 129 - 165 - 130 - 136 - 165 - 136 - 166 - 172 - 171 - 172 - 136 - 165 - 136 - 172 - 166 - 136 - 165 - 136 - 171 - 172 - 172 - 172 - 171 - 130 - 172 - 171 - 173 - 172 - 173 - 214 - 172 - 172 - 172 - 172 - 172 - 172 - 130 - 171 - 130 - 171 - 130 - 129 - 129 - 129 - 136 - 122 - 123 - 135 - 123 - 92 - 129 - 123 - 93 - 122 - 93 - 122 - 93 - 122 - 93 - 86 - 86 - 86 - 86 - 122 - 93 - 128 - 87 - 122 - 93 - 123 - 128 - 86 - 123 - 86 - 86 - 85 - 80 - 86 - 86 - 85 - 80 - 50 - 86 - 86 - 44 - 79 - 43 - 43 - 7 - 43 - 0 - 50 - 86 - 86 - 129 - 130 - 135 - 172 - 172 - 173 - 172 - 214 - 215 - 173 - 214 - 215 - 209 - 215 - 214 - 209 - 215 - 179 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 178 - 209 - 214 - 209 - 215 - 208 - 179 - 208 - 215 - 214 - 209 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 79 - 43 - 43 - 44 - 79 - 50 - 43 - 36 - 43 - 43 - 43 - 44 - 85 - 44 - 85 - 80 - 86 - 86 - 85 - 80 - 86 - 122 - 86 - 86 - 86 - 86 - 86 - 122 - 122 - 93 - 122 - 86 - 122 - 86 - 44 - 86 - 87 - 122 - 93 - 129 - 129 - 130 - 171 - 130 - 166 - 171 - 136 - 166 - 135 - 166 - 129 - 136 - 165 - 172 - 136 - 172 - 166 - 171 - 136 - 172 - 172 - 166 - 171 - 172 - 172 - 178 - 173 - 208 - 172 - 178 - 166 - 136 - 172 - 172 - 165 - 172 - 136 - 165 - 135 - 130 - 129 - 129 - 129 - 130 - 128 - 92 - 123 - 92 - 129 - 128 - 87 - 93 - 85 - 129 - 86 - 123 - 92 - 123 - 86 - 86 - 86 - 86 - 93 - 86 - 86 - 128 - 87 - 86 - 129 - 122 - 86 - 87 - 128 - 80 - 86 - 86 - 86 - 85 - 80 - 86 - 86 - 50 - 79 - 50 - 79 - 43 - 43 - 1 - 43 - 7 - 43 - 86 - 86 - 129 - 135 - 172 - 130 - 178 - 172 - 172 - 215 - 208 - 179 - 215 - 209 - 214 - 215 - 209 - 215 - 215 - 209 - 214 - 209 - 214 - 209 - 178 - 208 - 215 - 208 - 214 - 209 - 214 - 209 - 215 - 178 - 209 - 214 - 209 - 209 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 214 - 214 - 209 - 86 - 79 - 86 - 80 - 49 - 44 - 43 - 43 - 43 - 43 - 43 - 79 - 85 - 80 - 86 - 86 - 86 - 86 - 122 - 86 - 123 - 86 - 86 - 86 - 85 - 80 - 86 - 86 - 129 - 129 - 122 - 129 - 86 - 80 - 85 - 86 - 86 - 87 - 123 - 129 - 129 - 136 - 165 - 130 - 171 - 130 - 172 - 171 - 130 - 129 - 129 - 129 - 172 - 129 - 172 - 172 - 171 - 130 - 165 - 172 - 172 - 172 - 172 - 172 - 172 - 173 - 178 - 172 - 172 - 172 - 172 - 172 - 171 - 130 - 172 - 172 - 129 - 136 - 129 - 129 - 129 - 129 - 130 - 92 - 87 - 129 - 92 - 123 - 93 - 87 - 86 - 86 - 87 - 86 - 86 - 93 - 86 - 86 - 50 - 86 - 86 - 86 - 86 - 50 - 87 - 86 - 87 - 128 - 86 - 87 - 122 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 50 - 79 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 44 - 86 - 86 - 129 - 136 - 165 - 172 - 172 - 172 - 178 - 209 - 215 - 172 - 215 - 214 - 208 - 173 - 214 - 208 - 214 - 208 - 179 - 208 - 214 - 209 - 214 - 209 - 214 - 209 - 214 - 209 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 208 - 215 - 208 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 208 - 123 - 92 - 86 - 80 - 50 - 79 - 43 - 43 - 43 - 43 - 44 - 49 - 80 - 85 - 86 - 86 - 122 - 87 - 122 - 86 - 128 - 87 - 122 - 86 - 86 - 80 - 122 - 86 - 86 - 122 - 129 - 86 - 86 - 86 - 80 - 86 - 43 - 129 - 86 - 130 - 129 - 129 - 166 - 135 - 166 - 135 - 166 - 136 - 129 - 165 - 129 - 136 - 166 - 135 - 172 - 172 - 166 - 135 - 130 - 165 - 136 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 171 - 172 - 173 - 172 - 171 - 136 - 166 - 172 - 129 - 136 - 123 - 93 - 129 - 86 - 94 - 122 - 93 - 87 - 92 - 123 - 50 - 86 - 86 - 44 - 50 - 86 - 86 - 50 - 86 - 80 - 50 - 87 - 86 - 86 - 50 - 86 - 86 - 50 - 86 - 87 - 128 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 80 - 85 - 50 - 80 - 50 - 43 - 79 - 44 - 43 - 43 - 44 - 43 - 43 - 43 - 86 - 128 - 129 - 130 - 172 - 171 - 173 - 172 - 172 - 215 - 208 - 215 - 208 - 179 - 208 - 215 - 208 - 215 - 208 - 179 - 208 - 215 - 208 - 214 - 208 - 215 - 208 - 214 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 214 - 208 - 214 - 209 - 208 - 214 - 123 - 128 - 86 - 86 - 50 - 80 - 43 - 43 - 43 - 43 - 85 - 44 - 86 - 43 - 122 - 86 - 86 - 129 - 86 - 123 - 128 - 86 - 123 - 86 - 122 - 86 - 86 - 86 - 86 - 122 - 86 - 86 - 123 - 85 - 44 - 86 - 86 - 87 - 128 - 129 - 124 - 135 - 166 - 130 - 171 - 130 - 171 - 129 - 172 - 129 - 130 - 171 - 172 - 136 - 165 - 136 - 165 - 172 - 136 - 129 - 166 - 171 - 172 - 172 - 172 - 172 - 172 - 136 - 166 - 172 - 172 - 172 - 129 - 135 - 130 - 165 - 129 - 129 - 93 - 86 - 87 - 86 - 92 - 87 - 86 - 50 - 87 - 43 - 86 - 44 - 43 - 50 - 43 - 44 - 86 - 43 - 86 - 44 - 49 - 86 - 44 - 50 - 86 - 43 - 87 - 86 - 50 - 86 - 122 - 87 - 86 - 86 - 86 - 122 - 86 - 50 - 86 - 43 - 79 - 86 - 44 - 85 - 80 - 50 - 44 - 79 - 43 - 43 - 44 - 43 - 43 - 86 - 93 - 165 - 129 - 136 - 165 - 172 - 179 - 208 - 172 - 214 - 209 - 173 - 214 - 209 - 214 - 173 - 208 - 215 - 208 - 214 - 209 - 214 - 208 - 215 - 208 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 209 - 208 - 215 - 208 - 208 - 215 - 208 - 214 - 214 - 208 - 208 - 214 - 87 - 129 - 79 - 86 - 50 - 79 - 50 - 79 - 43 - 43 - 43 - 44 - 86 - 85 - 86 - 87 - 122 - 129 - 122 - 93 - 122 - 129 - 86 - 122 - 87 - 122 - 85 - 86 - 123 - 86 - 122 - 87 - 128 - 86 - 44 - 86 - 86 - 128 - 123 - 93 - 130 - 165 - 136 - 165 - 130 - 135 - 129 - 165 - 130 - 172 - 135 - 166 - 172 - 172 - 171 - 130 - 172 - 171 - 172 - 129 - 172 - 172 - 172 - 172 - 172 - 172 - 166 - 136 - 165 - 172 - 135 - 166 - 129 - 129 - 129 - 93 - 123 - 93 - 86 - 86 - 86 - 51 - 86 - 86 - 86 - 44 - 50 - 79 - 43 - 44 - 43 - 7 - 43 - 44 - 49 - 44 - 43 - 43 - 50 - 43 - 44 - 43 - 49 - 44 - 43 - 86 - 50 - 80 - 86 - 92 - 86 - 87 - 128 - 86 - 86 - 50 - 80 - 86 - 44 - 85 - 80 - 50 - 86 - 80 - 49 - 44 - 79 - 44 - 43 - 43 - 43 - 86 - 92 - 166 - 129 - 129 - 136 - 171 - 173 - 214 - 173 - 208 - 214 - 173 - 208 - 214 - 209 - 178 - 209 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 214 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 209 - 178 - 209 - 214 - 208 - 215 - 208 - 208 - 214 - 208 - 87 - 85 - 80 - 49 - 44 - 79 - 50 - 43 - 79 - 44 - 49 - 80 - 50 - 85 - 116 - 87 - 128 - 87 - 128 - 123 - 128 - 87 - 122 - 92 - 122 - 87 - 86 - 122 - 122 - 93 - 123 - 128 - 86 - 86 - 80 - 86 - 80 - 93 - 87 - 129 - 130 - 165 - 130 - 171 - 129 - 130 - 129 - 129 - 172 - 129 - 172 - 172 - 172 - 172 - 172 - 136 - 166 - 171 - 172 - 172 - 172 - 136 - 172 - 165 - 172 - 172 - 171 - 136 - 172 - 129 - 129 - 130 - 128 - 123 - 86 - 93 - 86 - 86 - 86 - 44 - 51 - 85 - 44 - 86 - 43 - 50 - 44 - 44 - 43 - 43 - 7 - 7 - 37 - 7 - 43 - 43 - 7 - 36 - 8 - 42 - 2 - 42 - 7 - 43 - 8 - 43 - 80 - 49 - 86 - 86 - 87 - 85 - 129 - 86 - 86 - 86 - 86 - 86 - 80 - 50 - 85 - 80 - 50 - 86 - 79 - 44 - 50 - 43 - 79 - 43 - 86 - 86 - 87 - 128 - 130 - 129 - 171 - 130 - 214 - 172 - 209 - 178 - 208 - 173 - 214 - 208 - 179 - 209 - 208 - 214 - 209 - 214 - 209 - 214 - 208 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 209 - 208 - 215 - 172 - 215 - 208 - 214 - 209 - 214 - 208 - 208 - 173 - 85 - 44 - 43 - 43 - 43 - 43 - 85 - 44 - 43 - 43 - 43 - 86 - 43 - 86 - 122 - 86 - 123 - 92 - 123 - 128 - 87 - 122 - 129 - 86 - 122 - 86 - 86 - 123 - 86 - 128 - 123 - 129 - 86 - 86 - 86 - 79 - 50 - 86 - 123 - 129 - 129 - 136 - 165 - 129 - 130 - 129 - 129 - 129 - 172 - 135 - 166 - 172 - 172 - 172 - 172 - 135 - 172 - 172 - 166 - 178 - 166 - 172 - 171 - 172 - 172 - 129 - 172 - 172 - 129 - 165 - 93 - 123 - 92 - 86 - 80 - 50 - 86 - 86 - 44 - 50 - 80 - 49 - 50 - 44 - 43 - 44 - 49 - 80 - 43 - 8 - 42 - 43 - 7 - 43 - 43 - 1 - 43 - 7 - 43 - 1 - 43 - 0 - 7 - 37 - 7 - 43 - 43 - 44 - 85 - 44 - 122 - 86 - 93 - 86 - 86 - 86 - 86 - 86 - 86 - 80 - 86 - 50 - 44 - 80 - 85 - 86 - 44 - 79 - 44 - 49 - 80 - 86 - 86 - 129 - 92 - 130 - 129 - 172 - 172 - 208 - 172 - 215 - 172 - 208 - 173 - 214 - 215 - 208 - 179 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 208 - 215 - 208 - 214 - 209 - 215 - 209 - 214 - 173 - 214 - 209 - 215 - 208 - 215 - 172 - 215 - 208 - 179 - 209 - 214 - 208 - 178 - 209 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 44 - 86 - 85 - 80 - 86 - 122 - 129 - 86 - 86 - 129 - 122 - 129 - 86 - 122 - 86 - 86 - 123 - 86 - 122 - 93 - 129 - 122 - 122 - 86 - 50 - 80 - 86 - 123 - 92 - 130 - 129 - 166 - 129 - 129 - 129 - 129 - 129 - 129 - 130 - 171 - 172 - 166 - 135 - 172 - 172 - 165 - 172 - 172 - 173 - 172 - 172 - 172 - 135 - 172 - 130 - 171 - 130 - 129 - 122 - 93 - 86 - 122 - 50 - 80 - 85 - 50 - 80 - 50 - 50 - 79 - 50 - 80 - 49 - 44 - 43 - 50 - 44 - 43 - 43 - 44 - 7 - 43 - 43 - 43 - 8 - 43 - 1 - 43 - 7 - 36 - 7 - 1 - 43 - 6 - 38 - 42 - 44 - 43 - 43 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 44 - 86 - 43 - 86 - 44 - 86 - 44 - 85 - 44 - 86 - 43 - 86 - 86 - 86 - 86 - 129 - 129 - 136 - 171 - 172 - 209 - 172 - 209 - 178 - 208 - 209 - 214 - 173 - 214 - 215 - 209 - 214 - 209 - 214 - 214 - 209 - 214 - 208 - 215 - 208 - 214 - 209 - 214 - 215 - 173 - 208 - 209 - 179 - 214 - 209 - 215 - 172 - 215 - 172 - 209 - 215 - 172 - 209 - 178 - 209 - 43 - 42 - 37 - 43 - 7 - 37 - 49 - 43 - 43 - 43 - 43 - 79 - 86 - 43 - 86 - 122 - 86 - 123 - 86 - 128 - 87 - 122 - 129 - 86 - 122 - 86 - 86 - 86 - 86 - 123 - 128 - 129 - 123 - 128 - 87 - 80 - 49 - 87 - 86 - 122 - 130 - 129 - 129 - 129 - 123 - 129 - 135 - 130 - 129 - 172 - 166 - 135 - 129 - 130 - 165 - 135 - 166 - 172 - 172 - 178 - 166 - 172 - 136 - 171 - 172 - 166 - 129 - 129 - 86 - 93 - 86 - 79 - 87 - 85 - 50 - 80 - 50 - 85 - 45 - 86 - 86 - 50 - 80 - 49 - 44 - 43 - 44 - 49 - 44 - 43 - 43 - 44 - 43 - 7 - 80 - 7 - 43 - 7 - 43 - 1 - 7 - 42 - 1 - 43 - 1 - 43 - 7 - 7 - 43 - 79 - 43 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 80 - 50 - 80 - 85 - 44 - 50 - 80 - 86 - 86 - 43 - 80 - 49 - 86 - 86 - 86 - 123 - 129 - 136 - 172 - 172 - 208 - 172 - 215 - 208 - 208 - 179 - 209 - 214 - 209 - 214 - 179 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 214 - 209 - 178 - 215 - 173 - 214 - 215 - 209 - 179 - 208 - 179 - 208 - 179 - 208 - 173 - 215 - 172 - 173 - 42 - 37 - 43 - 43 - 7 - 37 - 49 - 79 - 43 - 43 - 44 - 49 - 80 - 49 - 80 - 86 - 122 - 86 - 129 - 86 - 122 - 86 - 123 - 86 - 85 - 86 - 86 - 86 - 116 - 93 - 128 - 129 - 123 - 122 - 86 - 86 - 50 - 80 - 86 - 129 - 130 - 129 - 129 - 129 - 129 - 129 - 130 - 171 - 129 - 172 - 130 - 171 - 129 - 130 - 128 - 130 - 171 - 136 - 166 - 178 - 172 - 166 - 136 - 171 - 130 - 129 - 128 - 87 - 86 - 86 - 50 - 80 - 85 - 86 - 86 - 44 - 86 - 86 - 50 - 86 - 86 - 50 - 80 - 50 - 43 - 44 - 50 - 43 - 44 - 50 - 43 - 44 - 43 - 43 - 50 - 37 - 43 - 43 - 43 - 7 - 43 - 1 - 43 - 0 - 7 - 43 - 1 - 42 - 1 - 43 - 43 - 50 - 80 - 49 - 86 - 87 - 86 - 86 - 86 - 49 - 80 - 44 - 86 - 43 - 86 - 80 - 50 - 86 - 43 - 44 - 122 - 91 - 87 - 129 - 129 - 172 - 172 - 208 - 179 - 208 - 215 - 173 - 214 - 209 - 214 - 173 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 209 - 208 - 214 - 208 - 215 - 208 - 215 - 215 - 173 - 214 - 215 - 172 - 215 - 179 - 208 - 215 - 173 - 178 - 209 - 173 - 214 - 173 - 209 - 178 - 37 - 7 - 79 - 43 - 43 - 43 - 86 - 43 - 80 - 43 - 49 - 43 - 43 - 86 - 80 - 85 - 86 - 123 - 128 - 86 - 123 - 86 - 86 - 86 - 85 - 80 - 86 - 79 - 86 - 122 - 93 - 123 - 128 - 86 - 86 - 80 - 86 - 86 - 86 - 123 - 130 - 129 - 129 - 130 - 129 - 129 - 129 - 135 - 166 - 135 - 166 - 129 - 129 - 129 - 130 - 135 - 166 - 171 - 172 - 172 - 135 - 166 - 171 - 130 - 122 - 93 - 122 - 87 - 50 - 85 - 80 - 49 - 86 - 123 - 85 - 86 - 50 - 87 - 86 - 86 - 86 - 50 - 86 - 50 - 44 - 43 - 80 - 50 - 43 - 50 - 44 - 43 - 50 - 43 - 43 - 44 - 43 - 43 - 44 - 6 - 38 - 6 - 44 - 6 - 37 - 7 - 1 - 6 - 37 - 43 - 1 - 49 - 43 - 79 - 80 - 50 - 86 - 86 - 86 - 86 - 79 - 50 - 80 - 50 - 79 - 86 - 44 - 86 - 43 - 86 - 86 - 86 - 129 - 129 - 130 - 171 - 215 - 172 - 215 - 173 - 214 - 209 - 214 - 209 - 179 - 214 - 209 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 208 - 214 - 209 - 214 - 209 - 214 - 173 - 214 - 215 - 179 - 208 - 215 - 179 - 172 - 215 - 172 - 215 - 173 - 214 - 173 - 173 - 214 - 173 - 43 - 43 - 79 - 44 - 85 - 44 - 86 - 85 - 44 - 79 - 43 - 43 - 44 - 85 - 79 - 86 - 86 - 122 - 87 - 86 - 128 - 86 - 122 - 80 - 49 - 80 - 79 - 86 - 86 - 86 - 122 - 129 - 86 - 86 - 80 - 86 - 44 - 86 - 122 - 86 - 93 - 123 - 129 - 129 - 171 - 130 - 129 - 172 - 129 - 172 - 129 - 129 - 130 - 171 - 129 - 172 - 130 - 172 - 171 - 166 - 172 - 136 - 129 - 129 - 86 - 86 - 128 - 86 - 50 - 80 - 49 - 80 - 86 - 93 - 122 - 93 - 86 - 87 - 86 - 86 - 86 - 86 - 51 - 79 - 50 - 44 - 49 - 44 - 79 - 50 - 44 - 50 - 43 - 44 - 43 - 50 - 43 - 44 - 42 - 2 - 43 - 7 - 43 - 1 - 42 - 1 - 6 - 1 - 43 - 0 - 43 - 7 - 37 - 49 - 44 - 86 - 86 - 86 - 50 - 80 - 86 - 44 - 49 - 80 - 87 - 79 - 44 - 85 - 50 - 80 - 86 - 93 - 122 - 129 - 172 - 136 - 208 - 172 - 215 - 208 - 215 - 172 - 215 - 209 - 214 - 209 - 214 - 215 - 209 - 214 - 209 - 214 - 214 - 209 - 214 - 209 - 214 - 208 - 215 - 209 - 214 - 208 - 179 - 215 - 215 - 215 - 214 - 173 - 215 - 172 - 215 - 173 - 214 - 173 - 173 - 215 - 172 - 209 - 178 - 44 - 122 - 128 - 87 - 86 - 122 - 86 - 86 - 43 - 43 - 43 - 37 - 79 - 43 - 49 - 80 - 86 - 85 - 123 - 86 - 122 - 85 - 80 - 86 - 86 - 86 - 86 - 86 - 86 - 86 - 122 - 86 - 123 - 92 - 80 - 86 - 86 - 87 - 86 - 129 - 129 - 87 - 122 - 93 - 122 - 129 - 130 - 135 - 165 - 136 - 165 - 130 - 165 - 136 - 172 - 166 - 172 - 135 - 130 - 165 - 93 - 129 - 128 - 87 - 79 - 50 - 79 - 86 - 50 - 80 - 85 - 50 - 86 - 123 - 86 - 93 - 122 - 86 - 87 - 50 - 86 - 87 - 49 - 44 - 86 - 44 - 85 - 8 - 44 - 49 - 43 - 44 - 43 - 43 - 44 - 43 - 43 - 7 - 43 - 44 - 42 - 8 - 37 - 43 - 43 - 7 - 7 - 1 - 42 - 1 - 0 - 0 - 43 - 0 - 43 - 43 - 43 - 44 - 50 - 79 - 86 - 86 - 44 - 79 - 49 - 44 - 80 - 49 - 80 - 86 - 86 - 122 - 93 - 165 - 172 - 178 - 209 - 214 - 209 - 214 - 209 - 215 - 215 - 208 - 214 - 209 - 178 - 209 - 208 - 215 - 208 - 209 - 214 - 209 - 214 - 208 - 215 - 208 - 209 - 214 - 208 - 215 - 215 - 209 - 215 - 215 - 209 - 214 - 179 - 209 - 214 - 172 - 179 - 209 - 172 - 178 - 172 - 172 - 173 - 128 - 86 - 123 - 129 - 128 - 87 - 86 - 85 - 80 - 43 - 79 - 7 - 79 - 43 - 80 - 85 - 86 - 80 - 86 - 86 - 86 - 85 - 80 - 86 - 122 - 86 - 86 - 80 - 86 - 85 - 122 - 87 - 86 - 122 - 86 - 50 - 80 - 86 - 129 - 123 - 93 - 128 - 124 - 129 - 129 - 129 - 129 - 172 - 129 - 130 - 171 - 129 - 130 - 172 - 172 - 171 - 172 - 166 - 135 - 165 - 87 - 92 - 86 - 87 - 86 - 79 - 43 - 50 - 80 - 86 - 86 - 86 - 86 - 92 - 87 - 128 - 87 - 86 - 86 - 87 - 50 - 86 - 44 - 86 - 49 - 44 - 44 - 85 - 44 - 43 - 50 - 44 - 43 - 50 - 43 - 37 - 49 - 44 - 1 - 43 - 43 - 44 - 7 - 43 - 8 - 42 - 7 - 37 - 1 - 6 - 1 - 43 - 0 - 7 - 37 - 7 - 43 - 49 - 80 - 50 - 80 - 86 - 44 - 43 - 86 - 44 - 79 - 50 - 43 - 86 - 86 - 129 - 128 - 130 - 207 - 173 - 214 - 209 - 214 - 215 - 209 - 214 - 209 - 214 - 209 - 179 - 208 - 173 - 214 - 209 - 214 - 209 - 215 - 208 - 208 - 215 - 208 - 209 - 214 - 209 - 214 - 209 - 214 - 215 - 173 - 215 - 215 - 208 - 215 - 209 - 178 - 173 - 214 - 172 - 173 - 172 - 214 - 172 - 173 - 92 - 165 - 123 - 129 - 129 - 86 - 86 - 86 - 79 - 79 - 43 - 43 - 37 - 43 - 49 - 86 - 80 - 86 - 122 - 85 - 86 - 80 - 86 - 122 - 86 - 86 - 86 - 86 - 79 - 86 - 86 - 80 - 128 - 86 - 86 - 80 - 86 - 86 - 87 - 129 - 129 - 129 - 129 - 129 - 130 - 129 - 129 - 130 - 135 - 166 - 129 - 172 - 130 - 171 - 166 - 178 - 166 - 172 - 129 - 136 - 86 - 79 - 50 - 80 - 86 - 50 - 86 - 86 - 86 - 86 - 86 - 92 - 86 - 122 - 93 - 122 - 86 - 50 - 93 - 86 - 86 - 86 - 45 - 86 - 50 - 79 - 50 - 80 - 14 - 79 - 50 - 43 - 44 - 49 - 43 - 44 - 43 - 8 - 43 - 43 - 43 - 44 - 7 - 43 - 43 - 43 - 1 - 0 - 43 - 1 - 7 - 0 - 43 - 1 - 7 - 42 - 2 - 43 - 85 - 44 - 50 - 80 - 79 - 50 - 80 - 49 - 80 - 44 - 43 - 86 - 86 - 123 - 129 - 172 - 172 - 208 - 172 - 215 - 208 - 215 - 215 - 208 - 215 - 208 - 179 - 208 - 215 - 208 - 215 - 208 - 214 - 209 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 215 - 214 - 209 - 214 - 209 - 178 - 215 - 209 - 215 - 208 - 214 - 173 - 214 - 179 - 172 - 208 - 173 - 172 - 178 - 159 - 129 - 129 - 122 - 93 - 122 - 80 - 49 - 79 - 43 - 43 - 37 - 43 - 43 - 85 - 80 - 85 - 80 - 86 - 86 - 86 - 86 - 122 - 86 - 86 - 116 - 85 - 86 - 80 - 49 - 86 - 80 - 122 - 86 - 86 - 86 - 87 - 86 - 86 - 129 - 130 - 129 - 129 - 124 - 129 - 129 - 172 - 129 - 130 - 166 - 171 - 137 - 166 - 172 - 172 - 173 - 171 - 130 - 129 - 129 - 86 - 43 - 79 - 50 - 86 - 86 - 122 - 93 - 122 - 87 - 128 - 87 - 86 - 129 - 86 - 85 - 87 - 86 - 86 - 87 - 92 - 50 - 86 - 44 - 86 - 50 - 80 - 50 - 79 - 50 - 43 - 86 - 44 - 43 - 44 - 43 - 49 - 8 - 43 - 43 - 43 - 44 - 7 - 43 - 44 - 1 - 6 - 43 - 1 - 7 - 0 - 43 - 1 - 7 - 36 - 7 - 1 - 43 - 43 - 43 - 86 - 44 - 86 - 43 - 80 - 50 - 43 - 43 - 43 - 87 - 85 - 129 - 129 - 172 - 172 - 172 - 209 - 214 - 209 - 215 - 214 - 209 - 215 - 208 - 215 - 208 - 173 - 214 - 173 - 215 - 208 - 209 - 214 - 209 - 214 - 208 - 173 - 214 - 209 - 214 - 209 - 214 - 208 - 209 - 179 - 214 - 209 - 214 - 209 - 214 - 209 - 178 - 208 - 173 - 214 - 172 - 173 - 178 - 208 - 123 - 128 - 123 - 92 - 86 - 80 - 79 - 6 - 37 - 43 - 43 - 36 - 43 - 43 - 80 - 85 - 86 - 80 - 86 - 85 - 86 - 86 - 122 - 87 - 122 - 86 - 79 - 86 - 80 - 85 - 44 - 85 - 80 - 86 - 128 - 44 - 87 - 86 - 86 - 123 - 128 - 130 - 129 - 129 - 93 - 165 - 130 - 129 - 172 - 129 - 166 - 172 - 136 - 172 - 165 - 172 - 172 - 129 - 129 - 86 - 86 - 50 - 85 - 44 - 86 - 86 - 129 - 92 - 123 - 129 - 129 - 129 - 92 - 123 - 86 - 87 - 86 - 50 - 87 - 92 - 86 - 87 - 86 - 50 - 86 - 44 - 85 - 44 - 86 - 50 - 44 - 85 - 44 - 50 - 43 - 43 - 43 - 44 - 49 - 43 - 44 - 43 - 7 - 43 - 43 - 43 - 1 - 7 - 1 - 42 - 1 - 7 - 43 - 1 - 6 - 1 - 37 - 7 - 43 - 44 - 79 - 50 - 43 - 86 - 43 - 44 - 43 - 79 - 44 - 86 - 92 - 123 - 129 - 172 - 172 - 208 - 215 - 208 - 209 - 214 - 215 - 209 - 214 - 209 - 178 - 209 - 214 - 208 - 215 - 208 - 214 - 209 - 214 - 209 - 215 - 208 - 209 - 214 - 209 - 208 - 215 - 208 - 209 - 214 - 209 - 214 - 209 - 215 - 214 - 209 - 214 - 209 - 178 - 208 - 173 - 214 - 172 - 173 - 208 - 86 - 122 - 86 - 85 - 44 - 79 - 43 - 43 - 0 - 43 - 37 - 42 - 43 - 79 - 44 - 85 - 80 - 86 - 86 - 79 - 87 - 86 - 122 - 92 - 122 - 86 - 80 - 86 - 85 - 80 - 49 - 80 - 86 - 86 - 86 - 86 - 86 - 86 - 122 - 87 - 87 - 129 - 165 - 130 - 129 - 129 - 129 - 136 - 166 - 129 - 172 - 172 - 172 - 166 - 136 - 166 - 171 - 93 - 123 - 50 - 122 - 43 - 86 - 86 - 50 - 86 - 123 - 129 - 135 - 166 - 135 - 129 - 123 - 93 - 85 - 123 - 50 - 122 - 92 - 87 - 86 - 87 - 50 - 86 - 86 - 86 - 50 - 80 - 50 - 50 - 80 - 50 - 43 - 50 - 44 - 43 - 44 - 43 - 49 - 44 - 43 - 43 - 44 - 43 - 43 - 7 - 43 - 1 - 7 - 42 - 1 - 43 - 1 - 7 - 36 - 7 - 1 - 6 - 37 - 43 - 44 - 43 - 86 - 43 - 44 - 43 - 79 - 43 - 50 - 86 - 123 - 128 - 130 - 135 - 202 - 178 - 209 - 214 - 208 - 215 - 209 - 214 - 173 - 214 - 209 - 214 - 209 - 173 - 214 - 208 - 215 - 208 - 214 - 209 - 208 - 215 - 208 - 208 - 215 - 208 - 209 - 214 - 209 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 208 - 179 - 208 - 173 - 208 - 172 - 214 - 44 - 86 - 79 - 43 - 43 - 79 - 36 - 43 - 1 - 42 - 43 - 79 - 43 - 80 - 43 - 85 - 80 - 86 - 43 - 86 - 86 - 122 - 80 - 128 - 86 - 123 - 86 - 86 - 122 - 86 - 86 - 43 - 86 - 86 - 80 - 86 - 86 - 86 - 122 - 87 - 129 - 129 - 130 - 129 - 93 - 165 - 130 - 129 - 129 - 130 - 165 - 136 - 173 - 165 - 172 - 136 - 129 - 123 - 86 - 85 - 44 - 49 - 80 - 86 - 86 - 122 - 93 - 165 - 136 - 166 - 135 - 129 - 129 - 87 - 128 - 87 - 86 - 93 - 86 - 86 - 87 - 92 - 81 - 86 - 50 - 86 - 86 - 50 - 87 - 43 - 86 - 44 - 50 - 86 - 43 - 44 - 49 - 80 - 50 - 43 - 44 - 43 - 43 - 49 - 8 - 37 - 43 - 6 - 43 - 43 - 1 - 7 - 43 - 0 - 43 - 1 - 7 - 36 - 1 - 43 - 7 - 79 - 44 - 86 - 43 - 44 - 44 - 79 - 50 - 86 - 86 - 129 - 129 - 165 - 136 - 202 - 172 - 214 - 209 - 214 - 209 - 208 - 215 - 208 - 215 - 173 - 214 - 208 - 179 - 208 - 215 - 208 - 209 - 214 - 209 - 208 - 215 - 208 - 208 - 209 - 178 - 209 - 214 - 209 - 214 - 208 - 209 - 214 - 209 - 208 - 215 - 208 - 209 - 214 - 172 - 208 - 208 - 215 - 172 - 79 - 50 - 43 - 79 - 43 - 43 - 79 - 43 - 43 - 80 - 43 - 85 - 80 - 49 - 79 - 44 - 85 - 80 - 86 - 79 - 86 - 123 - 86 - 128 - 86 - 86 - 122 - 86 - 123 - 86 - 86 - 79 - 86 - 43 - 87 - 86 - 86 - 80 - 92 - 123 - 129 - 130 - 171 - 130 - 129 - 129 - 129 - 166 - 130 - 171 - 130 - 172 - 129 - 172 - 129 - 130 - 165 - 92 - 86 - 80 - 50 - 80 - 86 - 85 - 87 - 92 - 123 - 129 - 135 - 130 - 165 - 93 - 122 - 129 - 87 - 128 - 86 - 93 - 87 - 86 - 93 - 86 - 86 - 86 - 86 - 44 - 92 - 44 - 87 - 85 - 50 - 44 - 86 - 44 - 85 - 44 - 86 - 44 - 49 - 44 - 43 - 8 - 43 - 42 - 8 - 43 - 37 - 43 - 7 - 43 - 7 - 37 - 7 - 6 - 1 - 43 - 1 - 43 - 0 - 43 - 7 - 43 - 79 - 44 - 43 - 43 - 43 - 80 - 50 - 86 - 86 - 86 - 86 - 172 - 165 - 172 - 173 - 214 - 209 - 214 - 209 - 208 - 179 - 208 - 209 - 214 - 209 - 179 - 208 - 214 - 209 - 208 - 215 - 172 - 215 - 209 - 208 - 214 - 209 - 208 - 209 - 214 - 209 - 214 - 209 - 208 - 209 - 214 - 209 - 214 - 209 - 208 - 208 - 215 - 208 - 208 - 173 - 214 - 208 - 86 - 86 - 80 - 43 - 85 - 80 - 85 - 80 - 86 - 43 - 86 - 86 - 79 - 86 - 43 - 79 - 44 - 85 - 86 - 86 - 122 - 86 - 87 - 122 - 86 - 86 - 122 - 86 - 129 - 86 - 86 - 80 - 85 - 44 - 85 - 87 - 80 - 86 - 86 - 129 - 130 - 129 - 171 - 130 - 165 - 130 - 130 - 171 - 136 - 166 - 135 - 167 - 172 - 136 - 165 - 129 - 129 - 85 - 87 - 49 - 122 - 86 - 86 - 86 - 87 - 85 - 87 - 128 - 130 - 135 - 129 - 123 - 129 - 92 - 123 - 86 - 129 - 87 - 86 - 93 - 86 - 93 - 87 - 86 - 86 - 87 - 86 - 50 - 86 - 87 - 50 - 86 - 87 - 86 - 43 - 50 - 44 - 86 - 43 - 44 - 43 - 7 - 43 - 8 - 42 - 38 - 13 - 43 - 38 - 7 - 43 - 6 - 37 - 7 - 37 - 6 - 7 - 37 - 7 - 36 - 43 - 1 - 43 - 80 - 49 - 38 - 49 - 43 - 44 - 86 - 86 - 86 - 129 - 165 - 172 - 209 - 178 - 208 - 215 - 208 - 215 - 209 - 214 - 172 - 209 - 215 - 172 - 215 - 208 - 215 - 208 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 214 - 209 - 214 - 209 - 208 - 209 - 214 - 209 - 208 - 209 - 214 - 208 - 209 - 208 - 214 - 209 - 172 - 208 - 129 - 122 - 86 - 123 - 92 - 86 - 122 - 80 - 86 - 85 - 80 - 49 - 80 - 79 - 43 - 85 - 44 - 79 - 86 - 86 - 122 - 86 - 123 - 92 - 122 - 86 - 87 - 122 - 86 - 122 - 86 - 43 - 86 - 79 - 86 - 80 - 50 - 80 - 92 - 124 - 135 - 130 - 165 - 130 - 172 - 129 - 166 - 136 - 166 - 172 - 172 - 165 - 172 - 137 - 165 - 129 - 87 - 86 - 50 - 86 - 85 - 123 - 92 - 92 - 123 - 122 - 93 - 86 - 129 - 123 - 135 - 86 - 129 - 86 - 129 - 86 - 87 - 92 - 123 - 92 - 123 - 93 - 86 - 129 - 87 - 86 - 93 - 87 - 128 - 87 - 92 - 87 - 86 - 86 - 51 - 79 - 50 - 80 - 49 - 43 - 8 - 43 - 37 - 7 - 43 - 7 - 43 - 43 - 43 - 37 - 7 - 43 - 1 - 43 - 7 - 43 - 1 - 42 - 1 - 7 - 36 - 43 - 37 - 8 - 79 - 43 - 43 - 43 - 44 - 87 - 91 - 129 - 129 - 166 - 214 - 208 - 173 - 214 - 208 - 209 - 214 - 209 - 209 - 178 - 208 - 215 - 208 - 179 - 208 - 215 - 208 - 173 - 214 - 209 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 208 - 215 - 209 - 208 - 215 - 208 - 209 - 214 - 208 - 208 - 209 - 172 - 208 - 129 - 129 - 128 - 123 - 123 - 92 - 122 - 86 - 86 - 79 - 80 - 49 - 79 - 44 - 43 - 79 - 43 - 86 - 86 - 122 - 86 - 86 - 123 - 128 - 86 - 86 - 122 - 86 - 87 - 85 - 80 - 86 - 86 - 79 - 86 - 86 - 44 - 85 - 87 - 129 - 129 - 130 - 129 - 166 - 135 - 166 - 136 - 165 - 172 - 130 - 172 - 172 - 166 - 135 - 130 - 122 - 86 - 86 - 50 - 86 - 122 - 93 - 123 - 128 - 130 - 129 - 128 - 86 - 93 - 122 - 87 - 128 - 87 - 129 - 86 - 86 - 87 - 92 - 87 - 129 - 129 - 130 - 87 - 129 - 129 - 86 - 94 - 129 - 129 - 93 - 123 - 93 - 122 - 93 - 80 - 50 - 50 - 80 - 43 - 44 - 7 - 43 - 7 - 43 - 43 - 7 - 37 - 44 - 7 - 43 - 7 - 36 - 8 - 42 - 1 - 43 - 43 - 7 - 1 - 37 - 6 - 37 - 7 - 43 - 43 - 37 - 43 - 43 - 44 - 86 - 92 - 123 - 171 - 136 - 208 - 173 - 214 - 209 - 209 - 214 - 208 - 215 - 208 - 215 - 172 - 215 - 208 - 215 - 172 - 214 - 209 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 209 - 208 - 215 - 208 - 209 - 214 - 209 - 208 - 209 - 214 - 208 - 209 - 208 - 208 - 214 - 123 - 129 - 129 - 86 - 122 - 86 - 80 - 49 - 43 - 80 - 49 - 79 - 80 - 43 - 43 - 43 - 79 - 43 - 86 - 122 - 86 - 123 - 92 - 123 - 128 - 86 - 123 - 86 - 86 - 85 - 80 - 86 - 43 - 86 - 80 - 86 - 86 - 50 - 86 - 123 - 129 - 129 - 129 - 130 - 172 - 166 - 136 - 172 - 166 - 172 - 171 - 167 - 136 - 165 - 136 - 122 - 86 - 44 - 86 - 86 - 86 - 93 - 122 - 130 - 135 - 129 - 123 - 93 - 86 - 87 - 86 - 86 - 92 - 87 - 93 - 122 - 93 - 122 - 130 - 129 - 136 - 129 - 129 - 129 - 123 - 93 - 129 - 129 - 129 - 130 - 122 - 93 - 86 - 129 - 86 - 87 - 86 - 44 - 49 - 80 - 43 - 44 - 7 - 6 - 43 - 43 - 1 - 43 - 7 - 43 - 1 - 7 - 37 - 7 - 42 - 1 - 44 - 43 - 0 - 0 - 7 - 36 - 1 - 43 - 43 - 7 - 37 - 43 - 87 - 86 - 86 - 93 - 129 - 172 - 208 - 172 - 215 - 215 - 208 - 215 - 208 - 215 - 208 - 215 - 208 - 214 - 215 - 208 - 215 - 208 - 215 - 208 - 214 - 209 - 214 - 208 - 215 - 214 - 208 - 215 - 208 - 215 - 208 - 209 - 214 - 208 - 209 - 208 - 215 - 208 - 208 - 209 - 208 - 172 - 208 - 178 - 208 - 166 - 208 - 93 - 122 - 129 - 86 - 80 - 79 - 43 - 79 - 43 - 79 - 49 - 44 - 79 - 43 - 43 - 43 - 79 - 44 - 85 - 122 - 86 - 123 - 86 - 129 - 122 - 92 - 122 - 80 - 86 - 86 - 79 - 50 - 79 - 86 - 80 - 50 - 80 - 86 - 86 - 128 - 130 - 129 - 130 - 123 - 135 - 166 - 129 - 172 - 131 - 172 - 172 - 172 - 172 - 130 - 123 - 92 - 86 - 86 - 80 - 86 - 92 - 123 - 86 - 129 - 129 - 93 - 123 - 93 - 86 - 86 - 86 - 86 - 51 - 86 - 129 - 86 - 129 - 129 - 130 - 129 - 172 - 130 - 165 - 129 - 129 - 130 - 92 - 123 - 93 - 122 - 92 - 124 - 93 - 87 - 129 - 122 - 87 - 50 - 85 - 44 - 43 - 44 - 43 - 7 - 44 - 7 - 37 - 42 - 8 - 42 - 1 - 7 - 43 - 1 - 43 - 7 - 43 - 43 - 1 - 0 - 1 - 42 - 1 - 37 - 43 - 7 - 43 - 43 - 80 - 50 - 86 - 128 - 130 - 171 - 172 - 173 - 214 - 209 - 215 - 208 - 214 - 209 - 214 - 215 - 208 - 215 - 208 - 215 - 214 - 209 - 214 - 208 - 215 - 208 - 214 - 209 - 214 - 214 - 208 - 214 - 209 - 214 - 209 - 214 - 209 - 208 - 208 - 215 - 208 - 208 - 209 - 172 - 178 - 208 - 172 - 172 - 207 - 166 - 172 - 129 - 129 - 123 - 86 - 49 - 79 - 43 - 43 - 79 - 43 - 44 - 79 - 43 - 79 - 43 - 43 - 86 - 43 - 86 - 122 - 86 - 86 - 123 - 122 - 86 - 86 - 122 - 86 - 86 - 79 - 50 - 79 - 86 - 79 - 50 - 86 - 80 - 86 - 86 - 87 - 129 - 129 - 130 - 129 - 129 - 129 - 129 - 166 - 136 - 165 - 172 - 172 - 136 - 123 - 128 - 87 - 86 - 86 - 80 - 86 - 87 - 122 - 93 - 123 - 129 - 93 - 122 - 87 - 50 - 86 - 86 - 50 - 86 - 86 - 87 - 92 - 130 - 129 - 166 - 172 - 136 - 166 - 172 - 123 - 92 - 123 - 86 - 44 - 86 - 44 - 85 - 86 - 86 - 123 - 86 - 87 - 128 - 87 - 86 - 44 - 43 - 49 - 44 - 43 - 7 - 43 - 38 - 7 - 42 - 7 - 37 - 7 - 43 - 7 - 37 - 7 - 43 - 43 - 1 - 36 - 6 - 1 - 37 - 7 - 36 - 43 - 37 - 49 - 80 - 50 - 86 - 92 - 130 - 135 - 209 - 172 - 214 - 209 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 214 - 209 - 214 - 208 - 215 - 208 - 215 - 208 - 215 - 214 - 208 - 214 - 208 - 215 - 214 - 208 - 215 - 208 - 208 - 208 - 173 - 178 - 208 - 208 - 172 - 208 - 171 - 172 - 165 - 172 - 171 - 172 - 171 - 165 - 172 - 129 - 122 - 86 - 86 - 80 - 85 - 44 - 79 - 49 - 79 - 44 - 79 - 43 - 79 - 44 - 85 - 86 - 86 - 86 - 122 - 86 - 80 - 86 - 86 - 85 - 80 - 86 - 86 - 79 - 86 - 86 - 79 - 44 - 86 - 86 - 80 - 49 - 123 - 93 - 165 - 93 - 129 - 123 - 129 - 129 - 130 - 171 - 130 - 172 - 166 - 136 - 87 - 86 - 86 - 86 - 86 - 87 - 86 - 86 - 122 - 87 - 86 - 129 - 87 - 92 - 86 - 86 - 44 - 86 - 86 - 87 - 50 - 86 - 129 - 130 - 171 - 172 - 173 - 172 - 129 - 129 - 80 - 49 - 37 - 7 - 37 - 0 - 43 - 1 - 43 - 37 - 7 - 79 - 50 - 123 - 92 - 87 - 43 - 86 - 43 - 8 - 43 - 43 - 43 - 44 - 44 - 6 - 43 - 43 - 1 - 43 - 7 - 43 - 1 - 43 - 43 - 1 - 7 - 36 - 7 - 0 - 37 - 0 - 7 - 43 - 43 - 80 - 50 - 86 - 93 - 129 - 166 - 171 - 173 - 214 - 209 - 172 - 214 - 208 - 215 - 208 - 208 - 178 - 208 - 214 - 208 - 208 - 215 - 208 - 208 - 178 - 209 - 214 - 208 - 208 - 214 - 208 - 214 - 172 - 214 - 209 - 207 - 172 - 172 - 207 - 166 - 171 - 208 - 172 - 171 - 129 - 171 - 171 - 165 - 171 - 171 - 171 - 165 - 172 - 129 - 128 - 123 - 129 - 86 - 122 - 86 - 80 - 85 - 79 - 44 - 79 - 49 - 44 - 79 - 86 - 79 - 86 - 86 - 122 - 86 - 86 - 80 - 86 - 85 - 86 - 86 - 123 - 86 - 85 - 80 - 86 - 43 - 86 - 80 - 50 - 86 - 80 - 129 - 129 - 87 - 129 - 165 - 129 - 130 - 129 - 136 - 166 - 135 - 166 - 129 - 86 - 87 - 86 - 86 - 80 - 86 - 92 - 80 - 86 - 87 - 92 - 123 - 86 - 86 - 51 - 86 - 86 - 86 - 87 - 50 - 86 - 86 - 129 - 172 - 166 - 173 - 135 - 129 - 86 - 44 - 43 - 38 - 6 - 37 - 0 - 0 - 1 - 42 - 1 - 0 - 0 - 37 - 7 - 85 - 45 - 86 - 86 - 86 - 50 - 43 - 43 - 44 - 50 - 43 - 44 - 42 - 7 - 44 - 37 - 7 - 43 - 7 - 37 - 43 - 7 - 7 - 37 - 0 - 37 - 6 - 0 - 1 - 37 - 43 - 50 - 43 - 44 - 86 - 92 - 129 - 165 - 136 - 172 - 214 - 173 - 208 - 214 - 208 - 173 - 214 - 208 - 214 - 208 - 208 - 178 - 209 - 214 - 208 - 208 - 208 - 172 - 208 - 172 - 208 - 171 - 171 - 208 - 171 - 172 - 171 - 207 - 135 - 165 - 171 - 171 - 171 - 165 - 171 - 171 - 165 - 134 - 172 - 128 - 172 - 134 - 166 - 171 - 166 - 135 - 165 - 130 - 128 - 123 - 93 - 122 - 86 - 79 - 44 - 79 - 49 - 43 - 79 - 44 - 85 - 80 - 86 - 122 - 86 - 86 - 129 - 86 - 122 - 86 - 122 - 93 - 123 - 128 - 86 - 80 - 86 - 43 - 50 - 80 - 86 - 80 - 50 - 122 - 129 - 130 - 129 - 130 - 129 - 135 - 130 - 165 - 130 - 165 - 129 - 93 - 123 - 86 - 86 - 86 - 87 - 86 - 86 - 86 - 123 - 92 - 86 - 86 - 81 - 86 - 50 - 80 - 50 - 86 - 93 - 86 - 86 - 87 - 136 - 165 - 173 - 172 - 93 - 80 - 0 - 43 - 0 - 1 - 43 - 37 - 7 - 36 - 7 - 36 - 1 - 0 - 1 - 36 - 6 - 1 - 43 - 44 - 86 - 86 - 87 - 49 - 44 - 44 - 49 - 44 - 43 - 43 - 44 - 43 - 7 - 43 - 1 - 43 - 7 - 43 - 43 - 1 - 37 - 7 - 36 - 1 - 42 - 1 - 0 - 44 - 43 - 43 - 49 - 86 - 129 - 129 - 130 - 171 - 173 - 172 - 208 - 172 - 214 - 173 - 208 - 178 - 209 - 172 - 208 - 178 - 209 - 172 - 214 - 172 - 202 - 171 - 172 - 207 - 172 - 171 - 171 - 171 - 171 - 172 - 164 - 171 - 165 - 165 - 134 - 171 - 165 - 171 - 165 - 171 - 128 - 171 - 128 - 171 - 170 - 129 - 171 - 135 - 165 - 129 - 166 - 135 - 159 - 129 - 129 - 129 - 122 - 86 - 86 - 43 - 79 - 43 - 86 - 43 - 80 - 85 - 86 - 86 - 123 - 86 - 122 - 92 - 122 - 87 - 122 - 129 - 86 - 129 - 122 - 86 - 86 - 79 - 44 - 43 - 86 - 44 - 86 - 129 - 123 - 129 - 129 - 129 - 129 - 129 - 130 - 129 - 130 - 129 - 165 - 93 - 87 - 86 - 80 - 86 - 86 - 86 - 87 - 129 - 129 - 87 - 123 - 86 - 86 - 50 - 80 - 50 - 43 - 87 - 86 - 93 - 87 - 128 - 93 - 166 - 172 - 172 - 130 - 43 - 1 - 42 - 1 - 6 - 37 - 80 - 7 - 43 - 37 - 7 - 37 - 43 - 43 - 0 - 1 - 42 - 1 - 0 - 43 - 43 - 44 - 86 - 87 - 50 - 49 - 80 - 44 - 49 - 44 - 43 - 43 - 7 - 43 - 37 - 44 - 7 - 43 - 50 - 37 - 43 - 7 - 37 - 43 - 7 - 37 - 43 - 44 - 43 - 44 - 85 - 87 - 129 - 93 - 172 - 130 - 171 - 172 - 208 - 172 - 172 - 171 - 171 - 172 - 201 - 172 - 171 - 171 - 171 - 166 - 135 - 208 - 172 - 165 - 166 - 170 - 129 - 170 - 165 - 129 - 170 - 165 - 128 - 171 - 129 - 164 - 165 - 134 - 165 - 128 - 165 - 134 - 165 - 134 - 165 - 129 - 134 - 165 - 134 - 171 - 122 - 129 - 129 - 129 - 123 - 129 - 165 - 86 - 122 - 86 - 50 - 43 - 79 - 80 - 85 - 43 - 80 - 86 - 86 - 122 - 86 - 129 - 86 - 122 - 86 - 129 - 86 - 122 - 123 - 128 - 86 - 86 - 86 - 80 - 43 - 86 - 44 - 86 - 86 - 129 - 122 - 93 - 166 - 93 - 129 - 123 - 129 - 129 - 129 - 130 - 129 - 129 - 86 - 87 - 80 - 86 - 92 - 87 - 122 - 129 - 87 - 129 - 86 - 87 - 122 - 50 - 86 - 44 - 86 - 50 - 86 - 129 - 87 - 129 - 136 - 129 - 166 - 129 - 43 - 0 - 1 - 43 - 37 - 43 - 50 - 86 - 80 - 85 - 44 - 87 - 122 - 92 - 81 - 49 - 38 - 43 - 0 - 0 - 1 - 42 - 44 - 43 - 87 - 85 - 51 - 80 - 50 - 79 - 50 - 43 - 44 - 7 - 44 - 7 - 43 - 43 - 50 - 80 - 7 - 37 - 7 - 36 - 43 - 1 - 42 - 44 - 43 - 37 - 7 - 85 - 86 - 93 - 129 - 129 - 130 - 171 - 166 - 172 - 171 - 166 - 136 - 172 - 165 - 136 - 172 - 172 - 171 - 165 - 136 - 165 - 171 - 165 - 171 - 165 - 166 - 134 - 165 - 128 - 165 - 170 - 129 - 164 - 135 - 171 - 128 - 171 - 164 - 129 - 170 - 135 - 164 - 135 - 165 - 134 - 165 - 134 - 165 - 134 - 171 - 80 - 86 - 128 - 123 - 128 - 87 - 122 - 86 - 86 - 43 - 79 - 44 - 85 - 80 - 49 - 79 - 44 - 122 - 86 - 122 - 93 - 122 - 122 - 93 - 122 - 87 - 128 - 123 - 86 - 128 - 86 - 123 - 79 - 50 - 44 - 79 - 86 - 86 - 86 - 81 - 92 - 86 - 129 - 88 - 128 - 123 - 129 - 93 - 123 - 165 - 129 - 93 - 87 - 86 - 80 - 86 - 86 - 87 - 128 - 87 - 128 - 87 - 86 - 86 - 87 - 86 - 80 - 86 - 50 - 87 - 92 - 87 - 165 - 136 - 137 - 165 - 92 - 38 - 6 - 0 - 37 - 43 - 43 - 86 - 87 - 128 - 87 - 129 - 129 - 130 - 123 - 129 - 87 - 128 - 86 - 86 - 1 - 43 - 0 - 0 - 1 - 43 - 50 - 86 - 86 - 50 - 81 - 50 - 86 - 44 - 49 - 43 - 44 - 43 - 43 - 44 - 50 - 79 - 7 - 43 - 43 - 37 - 7 - 43 - 0 - 80 - 7 - 36 - 43 - 50 - 85 - 87 - 92 - 129 - 130 - 129 - 171 - 166 - 165 - 172 - 135 - 166 - 170 - 136 - 166 - 171 - 136 - 171 - 165 - 136 - 171 - 202 - 171 - 172 - 165 - 134 - 166 - 164 - 171 - 171 - 165 - 171 - 165 - 135 - 171 - 171 - 165 - 171 - 171 - 165 - 171 - 171 - 165 - 170 - 135 - 165 - 171 - 171 - 135 - 80 - 86 - 86 - 122 - 87 - 128 - 79 - 50 - 43 - 79 - 43 - 79 - 43 - 80 - 49 - 79 - 44 - 86 - 122 - 86 - 129 - 122 - 87 - 128 - 123 - 86 - 86 - 128 - 123 - 86 - 86 - 86 - 79 - 86 - 79 - 43 - 50 - 80 - 86 - 87 - 128 - 123 - 93 - 129 - 129 - 123 - 129 - 93 - 130 - 165 - 129 - 87 - 86 - 122 - 50 - 86 - 80 - 86 - 86 - 87 - 128 - 87 - 80 - 50 - 79 - 50 - 86 - 87 - 86 - 86 - 93 - 129 - 130 - 172 - 172 - 129 - 44 - 7 - 36 - 7 - 80 - 43 - 129 - 123 - 136 - 129 - 130 - 122 - 129 - 87 - 128 - 87 - 86 - 129 - 129 - 123 - 43 - 7 - 0 - 1 - 36 - 7 - 43 - 86 - 45 - 86 - 86 - 86 - 50 - 86 - 44 - 49 - 80 - 50 - 43 - 8 - 79 - 49 - 44 - 7 - 37 - 43 - 43 - 0 - 43 - 44 - 37 - 7 - 43 - 85 - 51 - 86 - 129 - 129 - 172 - 129 - 165 - 172 - 130 - 172 - 171 - 172 - 172 - 135 - 172 - 171 - 172 - 171 - 166 - 178 - 172 - 207 - 172 - 208 - 172 - 207 - 172 - 208 - 171 - 172 - 207 - 172 - 207 - 172 - 172 - 207 - 172 - 207 - 172 - 171 - 208 - 135 - 165 - 172 - 172 - 171 - 172 - 165 - 171 - 79 - 86 - 86 - 86 - 122 - 86 - 43 - 43 - 37 - 42 - 37 - 43 - 49 - 79 - 43 - 37 - 79 - 86 - 86 - 129 - 122 - 87 - 128 - 87 - 122 - 128 - 86 - 123 - 86 - 86 - 86 - 86 - 79 - 86 - 80 - 50 - 43 - 86 - 86 - 123 - 123 - 93 - 129 - 166 - 129 - 93 - 129 - 129 - 129 - 166 - 93 - 122 - 87 - 86 - 86 - 86 - 87 - 86 - 86 - 86 - 87 - 86 - 80 - 43 - 50 - 79 - 50 - 86 - 87 - 93 - 129 - 166 - 136 - 130 - 136 - 43 - 37 - 1 - 43 - 79 - 92 - 87 - 123 - 129 - 93 - 123 - 86 - 128 - 87 - 86 - 122 - 93 - 86 - 87 - 122 - 51 - 79 - 0 - 7 - 0 - 36 - 1 - 7 - 80 - 49 - 87 - 86 - 50 - 80 - 86 - 50 - 86 - 44 - 43 - 50 - 43 - 80 - 49 - 43 - 44 - 43 - 37 - 7 - 43 - 43 - 44 - 36 - 44 - 43 - 50 - 86 - 93 - 129 - 165 - 136 - 129 - 172 - 207 - 173 - 208 - 172 - 179 - 208 - 179 - 171 - 178 - 172 - 172 - 173 - 178 - 172 - 208 - 209 - 208 - 215 - 208 - 171 - 209 - 207 - 214 - 172 - 171 - 208 - 172 - 207 - 172 - 208 - 171 - 208 - 171 - 172 - 208 - 172 - 171 - 172 - 171 - 172 - 166 - 172 - 85 - 86 - 86 - 122 - 80 - 50 - 79 - 36 - 43 - 7 - 79 - 43 - 80 - 79 - 43 - 43 - 43 - 79 - 86 - 128 - 87 - 122 - 129 - 86 - 122 - 87 - 122 - 92 - 122 - 86 - 87 - 85 - 116 - 86 - 43 - 43 - 86 - 44 - 86 - 123 - 92 - 123 - 129 - 94 - 129 - 129 - 129 - 129 - 129 - 130 - 129 - 87 - 92 - 123 - 86 - 87 - 86 - 93 - 87 - 86 - 86 - 44 - 80 - 50 - 43 - 43 - 87 - 86 - 87 - 92 - 130 - 135 - 130 - 135 - 123 - 7 - 0 - 37 - 43 - 87 - 129 - 123 - 129 - 93 - 123 - 87 - 80 - 50 - 86 - 80 - 43 - 86 - 87 - 80 - 50 - 79 - 44 - 0 - 7 - 36 - 0 - 1 - 6 - 80 - 44 - 86 - 86 - 43 - 87 - 86 - 86 - 50 - 86 - 44 - 80 - 49 - 80 - 50 - 43 - 44 - 79 - 7 - 37 - 43 - 86 - 7 - 37 - 79 - 7 - 50 - 86 - 166 - 99 - 166 - 136 - 172 - 172 - 178 - 208 - 173 - 214 - 208 - 214 - 173 - 214 - 208 - 178 - 173 - 207 - 173 - 208 - 172 - 208 - 214 - 208 - 172 - 208 - 172 - 208 - 171 - 208 - 172 - 178 - 208 - 172 - 171 - 173 - 207 - 171 - 173 - 171 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 165 - 93 - 122 - 86 - 86 - 79 - 50 - 79 - 37 - 42 - 43 - 44 - 79 - 86 - 43 - 43 - 36 - 43 - 79 - 86 - 122 - 93 - 122 - 123 - 92 - 122 - 87 - 122 - 92 - 123 - 86 - 79 - 86 - 86 - 86 - 43 - 80 - 50 - 79 - 86 - 87 - 86 - 86 - 122 - 93 - 123 - 92 - 87 - 129 - 93 - 129 - 130 - 86 - 86 - 86 - 87 - 86 - 87 - 92 - 87 - 86 - 86 - 50 - 80 - 43 - 50 - 44 - 86 - 87 - 128 - 93 - 130 - 165 - 136 - 129 - 50 - 37 - 0 - 7 - 79 - 44 - 130 - 123 - 129 - 86 - 86 - 86 - 44 - 43 - 44 - 79 - 44 - 44 - 43 - 86 - 80 - 44 - 43 - 0 - 1 - 36 - 7 - 0 - 1 - 43 - 43 - 80 - 86 - 86 - 86 - 86 - 44 - 86 - 86 - 79 - 50 - 86 - 44 - 86 - 79 - 50 - 80 - 7 - 43 - 80 - 43 - 43 - 43 - 43 - 37 - 87 - 135 - 130 - 135 - 166 - 172 - 136 - 172 - 208 - 179 - 172 - 208 - 214 - 173 - 214 - 208 - 173 - 214 - 172 - 208 - 172 - 209 - 208 - 178 - 172 - 208 - 172 - 208 - 172 - 172 - 208 - 172 - 172 - 172 - 172 - 172 - 173 - 171 - 172 - 172 - 136 - 172 - 172 - 135 - 172 - 136 - 172 - 172 - 136 - 171 - 123 - 86 - 86 - 86 - 86 - 43 - 43 - 36 - 43 - 43 - 79 - 80 - 49 - 80 - 42 - 37 - 43 - 43 - 86 - 122 - 93 - 122 - 129 - 122 - 87 - 86 - 128 - 123 - 86 - 86 - 122 - 86 - 79 - 86 - 44 - 43 - 86 - 86 - 86 - 81 - 86 - 86 - 86 - 87 - 92 - 87 - 86 - 86 - 93 - 123 - 86 - 50 - 87 - 49 - 87 - 86 - 87 - 93 - 86 - 86 - 87 - 50 - 86 - 86 - 50 - 87 - 86 - 123 - 93 - 135 - 166 - 136 - 172 - 87 - 43 - 0 - 7 - 0 - 37 - 44 - 122 - 94 - 122 - 88 - 80 - 43 - 43 - 1 - 43 - 1 - 43 - 43 - 43 - 44 - 80 - 7 - 37 - 0 - 43 - 0 - 1 - 0 - 36 - 7 - 37 - 50 - 79 - 87 - 85 - 44 - 86 - 86 - 86 - 86 - 80 - 87 - 86 - 86 - 50 - 80 - 86 - 43 - 44 - 86 - 43 - 43 - 37 - 43 - 43 - 93 - 129 - 130 - 129 - 136 - 166 - 135 - 173 - 172 - 136 - 208 - 215 - 208 - 179 - 208 - 215 - 208 - 178 - 208 - 173 - 208 - 172 - 209 - 178 - 208 - 208 - 173 - 172 - 207 - 173 - 208 - 172 - 136 - 172 - 172 - 172 - 172 - 172 - 172 - 136 - 172 - 171 - 136 - 172 - 172 - 135 - 172 - 172 - 130 - 172 - 129 - 129 - 122 - 79 - 86 - 43 - 43 - 37 - 43 - 43 - 79 - 43 - 86 - 43 - 42 - 37 - 37 - 43 - 86 - 86 - 128 - 123 - 128 - 86 - 123 - 86 - 122 - 93 - 122 - 86 - 122 - 86 - 80 - 49 - 80 - 43 - 86 - 86 - 123 - 92 - 87 - 86 - 86 - 87 - 122 - 93 - 86 - 87 - 93 - 129 - 86 - 50 - 81 - 50 - 86 - 92 - 87 - 122 - 93 - 50 - 122 - 50 - 87 - 86 - 87 - 128 - 93 - 88 - 171 - 131 - 172 - 135 - 130 - 87 - 6 - 37 - 0 - 7 - 0 - 37 - 86 - 86 - 81 - 86 - 43 - 37 - 7 - 36 - 8 - 36 - 43 - 1 - 43 - 44 - 37 - 43 - 43 - 0 - 37 - 0 - 1 - 6 - 0 - 1 - 36 - 44 - 50 - 80 - 79 - 50 - 86 - 80 - 86 - 86 - 86 - 87 - 86 - 87 - 86 - 86 - 44 - 86 - 86 - 80 - 43 - 43 - 43 - 7 - 80 - 92 - 123 - 86 - 93 - 93 - 130 - 172 - 130 - 172 - 208 - 179 - 173 - 214 - 209 - 214 - 173 - 208 - 214 - 173 - 208 - 172 - 172 - 208 - 179 - 208 - 173 - 172 - 208 - 173 - 172 - 202 - 172 - 173 - 172 - 178 - 172 - 172 - 136 - 171 - 173 - 135 - 173 - 136 - 171 - 166 - 136 - 172 - 136 - 172 - 171 - 129 - 87 - 128 - 80 - 86 - 86 - 43 - 79 - 43 - 79 - 43 - 43 - 79 - 1 - 43 - 0 - 43 - 37 - 85 - 86 - 122 - 123 - 86 - 129 - 86 - 122 - 93 - 122 - 86 - 122 - 86 - 86 - 79 - 50 - 80 - 79 - 51 - 128 - 87 - 129 - 123 - 86 - 87 - 92 - 124 - 92 - 87 - 129 - 86 - 93 - 87 - 86 - 86 - 87 - 86 - 86 - 87 - 93 - 86 - 86 - 51 - 86 - 86 - 86 - 129 - 94 - 129 - 129 - 136 - 130 - 171 - 130 - 129 - 87 - 0 - 1 - 42 - 1 - 37 - 7 - 80 - 43 - 44 - 43 - 43 - 1 - 42 - 1 - 37 - 6 - 38 - 42 - 1 - 37 - 43 - 1 - 43 - 1 - 36 - 6 - 1 - 0 - 0 - 0 - 37 - 7 - 43 - 43 - 80 - 50 - 80 - 85 - 87 - 80 - 50 - 122 - 86 - 86 - 86 - 44 - 86 - 86 - 86 - 86 - 43 - 80 - 43 - 44 - 86 - 87 - 92 - 87 - 129 - 129 - 130 - 130 - 172 - 178 - 173 - 173 - 214 - 209 - 178 - 209 - 172 - 215 - 209 - 214 - 172 - 209 - 172 - 173 - 214 - 172 - 209 - 172 - 172 - 173 - 208 - 173 - 166 - 178 - 136 - 172 - 172 - 136 - 172 - 172 - 172 - 172 - 136 - 171 - 136 - 166 - 135 - 166 - 136 - 136 - 172 - 129 - 122 - 86 - 122 - 87 - 49 - 79 - 86 - 43 - 80 - 43 - 43 - 42 - 79 - 1 - 1 - 36 - 43 - 79 - 86 - 86 - 86 - 123 - 128 - 86 - 86 - 123 - 122 - 93 - 122 - 86 - 86 - 79 - 86 - 43 - 80 - 86 - 93 - 123 - 129 - 86 - 86 - 87 - 122 - 93 - 87 - 93 - 122 - 93 - 86 - 87 - 86 - 50 - 86 - 87 - 86 - 93 - 122 - 87 - 86 - 50 - 86 - 87 - 86 - 93 - 129 - 130 - 136 - 165 - 136 - 130 - 135 - 123 - 50 - 1 - 43 - 1 - 36 - 7 - 43 - 44 - 37 - 43 - 43 - 1 - 37 - 7 - 36 - 1 - 43 - 0 - 37 - 7 - 36 - 1 - 7 - 37 - 36 - 7 - 0 - 1 - 36 - 0 - 1 - 0 - 6 - 37 - 44 - 43 - 86 - 44 - 86 - 86 - 86 - 80 - 92 - 44 - 86 - 86 - 44 - 86 - 122 - 87 - 50 - 43 - 79 - 44 - 50 - 128 - 45 - 86 - 92 - 123 - 129 - 136 - 136 - 166 - 179 - 208 - 179 - 209 - 179 - 208 - 215 - 172 - 215 - 209 - 178 - 173 - 208 - 173 - 208 - 173 - 179 - 208 - 173 - 172 - 172 - 166 - 172 - 173 - 178 - 172 - 172 - 172 - 136 - 172 - 136 - 172 - 135 - 172 - 172 - 136 - 130 - 171 - 136 - 171 - 130 - 172 - 165 - 128 - 129 - 129 - 86 - 122 - 44 - 85 - 79 - 44 - 79 - 43 - 43 - 43 - 42 - 1 - 37 - 42 - 80 - 49 - 122 - 87 - 86 - 122 - 86 - 122 - 86 - 86 - 122 - 87 - 86 - 85 - 80 - 49 - 80 - 86 - 87 - 128 - 87 - 129 - 129 - 87 - 128 - 87 - 123 - 93 - 128 - 87 - 50 - 86 - 50 - 80 - 50 - 86 - 86 - 87 - 86 - 93 - 122 - 87 - 86 - 92 - 87 - 86 - 129 - 129 - 136 - 130 - 135 - 166 - 130 - 135 - 87 - 7 - 37 - 6 - 1 - 36 - 7 - 37 - 7 - 37 - 43 - 0 - 37 - 1 - 42 - 1 - 0 - 37 - 0 - 7 - 36 - 1 - 43 - 0 - 37 - 7 - 37 - 0 - 7 - 36 - 0 - 1 - 0 - 0 - 37 - 7 - 43 - 44 - 79 - 49 - 80 - 50 - 86 - 80 - 87 - 86 - 85 - 81 - 92 - 86 - 80 - 50 - 86 - 80 - 86 - 129 - 86 - 44 - 86 - 51 - 86 - 129 - 129 - 130 - 172 - 173 - 178 - 173 - 172 - 208 - 179 - 173 - 209 - 178 - 209 - 173 - 214 - 173 - 173 - 214 - 173 - 208 - 173 - 172 - 172 - 179 - 208 - 172 - 172 - 172 - 179 - 136 - 172 - 208 - 136 - 172 - 136 - 166 - 135 - 172 - 136 - 171 - 172 - 136 - 172 - 136 - 166 - 135 - 166 - 122 - 93 - 122 - 86 - 79 - 86 - 43 - 79 - 44 - 43 - 42 - 37 - 43 - 36 - 7 - 37 - 79 - 85 - 80 - 92 - 86 - 122 - 86 - 87 - 86 - 122 - 86 - 86 - 80 - 85 - 80 - 49 - 80 - 86 - 129 - 123 - 129 - 129 - 93 - 123 - 86 - 129 - 86 - 87 - 86 - 92 - 87 - 86 - 50 - 80 - 50 - 86 - 50 - 86 - 123 - 50 - 87 - 86 - 92 - 87 - 86 - 129 - 93 - 130 - 129 - 136 - 172 - 166 - 136 - 93 - 86 - 43 - 1 - 43 - 0 - 0 - 1 - 43 - 1 - 36 - 7 - 37 - 0 - 43 - 0 - 1 - 36 - 1 - 0 - 0 - 43 - 1 - 36 - 7 - 1 - 36 - 7 - 37 - 0 - 0 - 37 - 6 - 0 - 1 - 0 - 37 - 43 - 7 - 79 - 44 - 86 - 86 - 87 - 85 - 80 - 87 - 43 - 86 - 87 - 86 - 85 - 80 - 86 - 87 - 129 - 129 - 43 - 80 - 50 - 86 - 93 - 129 - 129 - 172 - 172 - 173 - 172 - 179 - 173 - 172 - 173 - 209 - 178 - 173 - 209 - 179 - 172 - 209 - 179 - 172 - 173 - 215 - 172 - 172 - 173 - 172 - 173 - 178 - 173 - 172 - 178 - 172 - 172 - 173 - 135 - 172 - 136 - 166 - 136 - 172 - 171 - 136 - 136 - 172 - 166 - 136 - 171 - 130 - 165 - 86 - 128 - 86 - 80 - 85 - 80 - 43 - 43 - 43 - 43 - 79 - 42 - 1 - 37 - 6 - 37 - 79 - 49 - 80 - 86 - 86 - 123 - 85 - 86 - 80 - 122 - 86 - 86 - 86 - 86 - 79 - 80 - 86 - 92 - 124 - 129 - 129 - 129 - 123 - 93 - 86 - 124 - 92 - 86 - 50 - 87 - 86 - 50 - 80 - 50 - 43 - 86 - 44 - 92 - 86 - 87 - 86 - 51 - 87 - 128 - 87 - 129 - 129 - 130 - 135 - 173 - 166 - 136 - 130 - 129 - 50 - 37 - 6 - 1 - 36 - 1 - 42 - 1 - 37 - 6 - 37 - 1 - 42 - 1 - 0 - 1 - 36 - 7 - 0 - 37 - 0 - 43 - 1 - 36 - 1 - 43 - 1 - 0 - 43 - 0 - 43 - 1 - 36 - 0 - 1 - 0 - 43 - 1 - 43 - 79 - 50 - 80 - 86 - 86 - 86 - 86 - 44 - 86 - 86 - 86 - 86 - 44 - 86 - 129 - 123 - 93 - 79 - 50 - 86 - 87 - 86 - 172 - 130 - 172 - 173 - 172 - 179 - 172 - 173 - 179 - 172 - 173 - 173 - 209 - 173 - 179 - 172 - 173 - 173 - 178 - 173 - 172 - 173 - 178 - 209 - 172 - 172 - 173 - 172 - 136 - 178 - 173 - 172 - 135 - 172 - 166 - 136 - 172 - 135 - 172 - 172 - 130 - 172 - 135 - 172 - 136 - 172 - 128 - 87 - 122 - 86 - 85 - 80 - 86 - 43 - 86 - 43 - 43 - 36 - 43 - 37 - 42 - 1 - 43 - 37 - 42 - 43 - 80 - 49 - 122 - 80 - 86 - 86 - 85 - 80 - 86 - 86 - 86 - 80 - 85 - 86 - 86 - 86 - 129 - 129 - 123 - 130 - 86 - 87 - 128 - 86 - 123 - 86 - 51 - 86 - 50 - 79 - 50 - 44 - 50 - 79 - 86 - 51 - 86 - 86 - 92 - 87 - 129 - 93 - 123 - 129 - 130 - 135 - 136 - 166 - 136 - 166 - 93 - 86 - 49 - 37 - 7 - 0 - 43 - 38 - 43 - 7 - 36 - 1 - 43 - 0 - 1 - 36 - 1 - 0 - 6 - 37 - 0 - 0 - 1 - 36 - 7 - 37 - 0 - 1 - 42 - 1 - 1 - 42 - 1 - 37 - 0 - 0 - 7 - 36 - 1 - 36 - 7 - 43 - 44 - 86 - 86 - 86 - 80 - 86 - 87 - 86 - 86 - 86 - 80 - 86 - 86 - 130 - 122 - 50 - 86 - 86 - 86 - 87 - 93 - 166 - 136 - 172 - 172 - 173 - 178 - 173 - 172 - 173 - 179 - 172 - 173 - 173 - 172 - 173 - 173 - 208 - 179 - 173 - 173 - 172 - 178 - 173 - 172 - 137 - 208 - 173 - 142 - 172 - 172 - 172 - 172 - 136 - 172 - 136 - 166 - 135 - 172 - 136 - 172 - 136 - 165 - 136 - 172 - 172 - 172 - 86 - 86 - 79 - 86 - 86 - 79 - 86 - 44 - 79 - 43 - 43 - 43 - 42 - 37 - 43 - 0 - 43 - 37 - 42 - 43 - 43 - 80 - 79 - 86 - 86 - 86 - 79 - 86 - 86 - 80 - 85 - 86 - 86 - 80 - 86 - 123 - 93 - 129 - 123 - 86 - 87 - 86 - 86 - 92 - 123 - 87 - 92 - 81 - 49 - 50 - 44 - 80 - 50 - 86 - 93 - 86 - 86 - 87 - 93 - 129 - 123 - 94 - 129 - 135 - 130 - 172 - 130 - 171 - 136 - 123 - 93 - 44 - 43 - 0 - 7 - 43 - 44 - 43 - 43 - 37 - 43 - 1 - 0 - 37 - 6 - 0 - 1 - 0 - 37 - 0 - 7 - 36 - 0 - 1 - 0 - 37 - 0 - 6 - 1 - 0 - 37 - 7 - 36 - 1 - 0 - 0 - 1 - 42 - 1 - 36 - 1 - 43 - 43 - 86 - 44 - 86 - 86 - 86 - 87 - 86 - 86 - 80 - 50 - 122 - 123 - 92 - 44 - 86 - 86 - 86 - 87 - 86 - 130 - 135 - 130 - 171 - 137 - 208 - 173 - 178 - 173 - 173 - 173 - 173 - 173 - 172 - 179 - 173 - 172 - 173 - 173 - 178 - 173 - 172 - 173 - 172 - 179 - 172 - 173 - 136 - 179 - 172 - 171 - 172 - 136 - 166 - 136 - 172 - 171 - 136 - 172 - 130 - 172 - 136 - 171 - 172 - 136 - 172 - 172 - 80 - 49 - 80 - 85 - 44 - 86 - 79 - 50 - 79 - 1 - 42 - 43 - 37 - 42 - 37 - 1 - 42 - 1 - 43 - 36 - 43 - 86 - 43 - 86 - 80 - 86 - 85 - 86 - 44 - 86 - 85 - 80 - 86 - 86 - 86 - 86 - 87 - 128 - 87 - 85 - 44 - 86 - 86 - 86 - 123 - 87 - 92 - 50 - 86 - 44 - 86 - 43 - 87 - 86 - 93 - 86 - 93 - 123 - 92 - 129 - 130 - 129 - 130 - 135 - 130 - 130 - 172 - 136 - 166 - 92 - 86 - 80 - 7 - 0 - 43 - 1 - 86 - 44 - 37 - 7 - 36 - 1 - 0 - 6 - 1 - 0 - 36 - 1 - 0 - 1 - 42 - 0 - 1 - 0 - 1 - 36 - 7 - 0 - 0 - 37 - 1 - 43 - 43 - 0 - 0 - 1 - 36 - 7 - 38 - 6 - 1 - 36 - 43 - 50 - 80 - 86 - 50 - 87 - 122 - 50 - 80 - 85 - 87 - 129 - 87 - 86 - 43 - 86 - 86 - 44 - 86 - 130 - 135 - 165 - 129 - 130 - 172 - 172 - 172 - 179 - 173 - 172 - 173 - 173 - 208 - 173 - 173 - 172 - 173 - 179 - 173 - 173 - 178 - 173 - 172 - 173 - 172 - 179 - 130 - 178 - 167 - 178 - 166 - 178 - 130 - 171 - 136 - 172 - 172 - 135 - 172 - 135 - 166 - 136 - 171 - 136 - 172 - 172 - 135 - 80 - 85 - 44 - 79 - 50 - 79 - 50 - 79 - 43 - 43 - 43 - 43 - 37 - 6 - 37 - 0 - 43 - 0 - 1 - 43 - 43 - 43 - 79 - 50 - 79 - 50 - 80 - 85 - 50 - 80 - 86 - 44 - 85 - 86 - 44 - 86 - 86 - 86 - 85 - 80 - 50 - 79 - 50 - 87 - 86 - 129 - 86 - 87 - 50 - 80 - 49 - 44 - 86 - 86 - 93 - 86 - 86 - 94 - 123 - 129 - 135 - 130 - 129 - 94 - 165 - 136 - 166 - 135 - 166 - 93 - 80 - 50 - 36 - 1 - 7 - 44 - 80 - 43 - 7 - 1 - 36 - 7 - 0 - 0 - 1 - 0 - 36 - 1 - 6 - 1 - 36 - 1 - 36 - 7 - 0 - 1 - 0 - 36 - 1 - 6 - 37 - 50 - 80 - 1 - 43 - 1 - 43 - 43 - 43 - 43 - 1 - 42 - 44 - 49 - 80 - 43 - 86 - 86 - 87 - 49 - 80 - 93 - 122 - 129 - 86 - 43 - 50 - 80 - 43 - 122 - 136 - 87 - 86 - 171 - 130 - 129 - 136 - 166 - 178 - 172 - 209 - 173 - 173 - 208 - 173 - 173 - 173 - 215 - 173 - 208 - 173 - 179 - 173 - 172 - 173 - 172 - 173 - 178 - 172 - 166 - 136 - 172 - 172 - 136 - 172 - 136 - 172 - 135 - 166 - 172 - 135 - 166 - 135 - 172 - 135 - 172 - 129 - 172 - 135 - 86 - 79 - 86 - 44 - 86 - 79 - 50 - 43 - 43 - 43 - 43 - 0 - 43 - 1 - 36 - 6 - 1 - 37 - 6 - 37 - 7 - 43 - 85 - 44 - 79 - 50 - 86 - 43 - 86 - 44 - 85 - 43 - 43 - 44 - 49 - 80 - 43 - 43 - 79 - 86 - 87 - 86 - 86 - 92 - 122 - 87 - 93 - 50 - 86 - 44 - 86 - 44 - 86 - 50 - 86 - 87 - 92 - 123 - 93 - 129 - 87 - 130 - 129 - 135 - 130 - 172 - 129 - 130 - 129 - 86 - 86 - 1 - 37 - 7 - 37 - 79 - 7 - 43 - 8 - 37 - 0 - 0 - 7 - 36 - 0 - 1 - 0 - 0 - 1 - 36 - 6 - 1 - 0 - 37 - 0 - 0 - 7 - 37 - 0 - 43 - 44 - 86 - 86 - 44 - 85 - 44 - 86 - 80 - 50 - 86 - 43 - 80 - 86 - 43 - 43 - 43 - 50 - 86 - 79 - 50 - 86 - 129 - 123 - 86 - 43 - 86 - 50 - 79 - 50 - 165 - 43 - 86 - 130 - 128 - 87 - 129 - 129 - 165 - 172 - 172 - 173 - 215 - 209 - 173 - 173 - 209 - 178 - 209 - 173 - 209 - 179 - 173 - 172 - 179 - 172 - 173 - 172 - 173 - 172 - 172 - 137 - 171 - 136 - 172 - 136 - 172 - 172 - 135 - 172 - 130 - 135 - 172 - 165 - 136 - 172 - 129 - 171 - 171 - 136 - 86 - 80 - 86 - 86 - 49 - 80 - 43 - 43 - 43 - 43 - 0 - 43 - 1 - 42 - 1 - 6 - 37 - 0 - 43 - 7 - 37 - 43 - 43 - 49 - 80 - 49 - 80 - 49 - 80 - 50 - 79 - 43 - 43 - 7 - 43 - 37 - 43 - 49 - 86 - 87 - 122 - 92 - 123 - 86 - 93 - 122 - 87 - 50 - 86 - 86 - 50 - 80 - 50 - 87 - 86 - 92 - 87 - 87 - 129 - 93 - 122 - 94 - 129 - 136 - 130 - 171 - 130 - 129 - 129 - 86 - 44 - 0 - 43 - 43 - 37 - 7 - 36 - 8 - 37 - 6 - 1 - 43 - 1 - 6 - 1 - 36 - 1 - 0 - 6 - 37 - 0 - 1 - 0 - 37 - 6 - 1 - 43 - 43 - 44 - 80 - 86 - 86 - 87 - 128 - 87 - 86 - 123 - 92 - 123 - 86 - 93 - 86 - 86 - 80 - 49 - 86 - 86 - 44 - 43 - 85 - 87 - 129 - 86 - 86 - 86 - 44 - 43 - 86 - 129 - 86 - 86 - 86 - 129 - 86 - 86 - 86 - 87 - 171 - 130 - 172 - 173 - 172 - 209 - 173 - 172 - 173 - 173 - 173 - 208 - 173 - 215 - 172 - 173 - 179 - 172 - 173 - 172 - 172 - 172 - 137 - 171 - 172 - 136 - 171 - 136 - 172 - 135 - 166 - 136 - 171 - 135 - 130 - 171 - 136 - 164 - 136 - 171 - 129 - 172 - 86 - 86 - 122 - 50 - 79 - 44 - 43 - 43 - 43 - 43 - 6 - 37 - 7 - 0 - 36 - 1 - 7 - 42 - 37 - 7 - 43 - 36 - 43 - 44 - 49 - 80 - 43 - 50 - 79 - 49 - 80 - 43 - 43 - 43 - 7 - 79 - 50 - 122 - 129 - 129 - 130 - 129 - 129 - 86 - 129 - 87 - 92 - 50 - 81 - 49 - 86 - 87 - 86 - 86 - 93 - 122 - 93 - 129 - 87 - 129 - 129 - 93 - 130 - 129 - 172 - 129 - 130 - 136 - 129 - 80 - 43 - 43 - 1 - 43 - 0 - 37 - 7 - 43 - 37 - 7 - 1 - 43 - 43 - 0 - 1 - 0 - 1 - 36 - 6 - 1 - 0 - 0 - 37 - 7 - 37 - 44 - 86 - 85 - 87 - 86 - 86 - 123 - 129 - 86 - 130 - 128 - 124 - 129 - 129 - 129 - 128 - 123 - 93 - 86 - 86 - 122 - 43 - 43 - 80 - 91 - 93 - 86 - 80 - 85 - 44 - 86 - 93 - 122 - 86 - 86 - 93 - 80 - 43 - 85 - 44 - 86 - 129 - 129 - 172 - 129 - 172 - 167 - 172 - 179 - 172 - 173 - 208 - 173 - 173 - 172 - 209 - 179 - 172 - 173 - 142 - 172 - 173 - 172 - 172 - 136 - 172 - 171 - 136 - 172 - 135 - 171 - 130 - 171 - 135 - 135 - 129 - 171 - 129 - 136 - 165 - 136 - 165 - 135 - 165 - 86 - 123 - 85 - 50 - 80 - 49 - 44 - 43 - 43 - 43 - 0 - 43 - 37 - 6 - 0 - 1 - 43 - 0 - 43 - 37 - 6 - 37 - 7 - 49 - 80 - 43 - 86 - 43 - 50 - 79 - 44 - 43 - 85 - 44 - 79 - 86 - 92 - 130 - 171 - 129 - 130 - 171 - 129 - 129 - 87 - 128 - 87 - 50 - 86 - 86 - 86 - 87 - 86 - 93 - 87 - 129 - 130 - 93 - 129 - 129 - 129 - 93 - 130 - 130 - 171 - 130 - 129 - 129 - 87 - 79 - 1 - 43 - 37 - 7 - 0 - 37 - 43 - 44 - 42 - 1 - 43 - 44 - 43 - 0 - 43 - 1 - 0 - 1 - 36 - 7 - 36 - 1 - 0 - 43 - 44 - 86 - 80 - 86 - 86 - 129 - 123 - 129 - 129 - 129 - 129 - 129 - 123 - 171 - 129 - 129 - 165 - 129 - 87 - 86 - 165 - 93 - 85 - 80 - 129 - 86 - 86 - 86 - 43 - 79 - 86 - 129 - 129 - 86 - 92 - 86 - 80 - 49 - 80 - 50 - 122 - 129 - 129 - 123 - 93 - 129 - 129 - 172 - 209 - 173 - 214 - 172 - 173 - 173 - 208 - 173 - 179 - 172 - 179 - 172 - 208 - 179 - 172 - 136 - 172 - 172 - 136 - 171 - 136 - 165 - 136 - 171 - 135 - 172 - 135 - 171 - 129 - 135 - 130 - 171 - 130 - 135 - 165 - 136 - 129 - 129 - 86 - 86 - 79 - 50 - 79 - 44 - 43 - 43 - 43 - 0 - 43 - 7 - 0 - 37 - 42 - 7 - 37 - 7 - 36 - 43 - 7 - 43 - 79 - 50 - 80 - 86 - 43 - 86 - 43 - 50 - 80 - 49 - 44 - 86 - 129 - 129 - 165 - 136 - 129 - 172 - 129 - 129 - 129 - 129 - 86 - 87 - 50 - 86 - 50 - 79 - 87 - 93 - 86 - 130 - 93 - 122 - 93 - 129 - 129 - 94 - 129 - 129 - 135 - 166 - 129 - 94 - 122 - 50 - 37 - 43 - 0 - 43 - 1 - 0 - 42 - 1 - 43 - 37 - 7 - 43 - 80 - 1 - 43 - 0 - 37 - 7 - 36 - 0 - 1 - 0 - 0 - 43 - 43 - 80 - 86 - 93 - 86 - 123 - 129 - 129 - 165 - 129 - 129 - 165 - 129 - 129 - 129 - 129 - 123 - 171 - 166 - 86 - 122 - 129 - 129 - 129 - 159 - 92 - 123 - 49 - 44 - 85 - 86 - 87 - 128 - 87 - 122 - 92 - 44 - 85 - 44 - 86 - 122 - 135 - 123 - 86 - 50 - 86 - 122 - 130 - 172 - 208 - 179 - 172 - 166 - 172 - 172 - 172 - 172 - 172 - 135 - 173 - 172 - 178 - 136 - 208 - 172 - 136 - 172 - 135 - 171 - 136 - 171 - 129 - 135 - 172 - 135 - 171 - 99 - 172 - 129 - 171 - 130 - 165 - 136 - 129 - 165 - 129 - 87 - 122 - 50 - 85 - 86 - 44 - 43 - 79 - 43 - 7 - 43 - 43 - 0 - 43 - 37 - 6 - 1 - 43 - 0 - 43 - 43 - 43 - 43 - 44 - 85 - 86 - 44 - 86 - 43 - 86 - 44 - 85 - 86 - 86 - 87 - 129 - 171 - 130 - 172 - 171 - 130 - 129 - 129 - 129 - 93 - 122 - 93 - 87 - 50 - 80 - 86 - 86 - 93 - 129 - 86 - 129 - 87 - 93 - 129 - 87 - 129 - 129 - 136 - 130 - 129 - 129 - 88 - 128 - 43 - 37 - 43 - 7 - 37 - 0 - 43 - 1 - 43 - 80 - 7 - 36 - 44 - 86 - 43 - 80 - 43 - 43 - 44 - 43 - 36 - 1 - 6 - 0 - 37 - 50 - 86 - 86 - 123 - 129 - 123 - 171 - 129 - 164 - 129 - 130 - 165 - 129 - 165 - 129 - 165 - 86 - 122 - 129 - 123 - 129 - 165 - 129 - 129 - 165 - 129 - 92 - 43 - 86 - 87 - 128 - 129 - 123 - 92 - 86 - 44 - 43 - 86 - 129 - 129 - 86 - 86 - 44 - 85 - 86 - 87 - 129 - 165 - 136 - 172 - 129 - 130 - 166 - 135 - 166 - 135 - 166 - 172 - 136 - 178 - 172 - 172 - 172 - 172 - 142 - 172 - 130 - 172 - 171 - 136 - 135 - 136 - 165 - 136 - 171 - 136 - 130 - 135 - 166 - 135 - 165 - 136 - 165 - 130 - 171 - 130 - 86 - 123 - 86 - 49 - 86 - 80 - 49 - 44 - 43 - 43 - 43 - 36 - 7 - 43 - 37 - 6 - 37 - 7 - 36 - 43 - 7 - 43 - 79 - 44 - 43 - 86 - 49 - 87 - 79 - 50 - 86 - 80 - 86 - 92 - 129 - 166 - 135 - 172 - 172 - 165 - 136 - 129 - 129 - 129 - 123 - 93 - 128 - 87 - 86 - 87 - 50 - 93 - 128 - 88 - 129 - 86 - 129 - 87 - 92 - 130 - 129 - 129 - 129 - 129 - 130 - 93 - 128 - 81 - 7 - 43 - 36 - 7 - 43 - 1 - 43 - 43 - 37 - 85 - 43 - 80 - 86 - 86 - 129 - 86 - 80 - 86 - 86 - 79 - 7 - 37 - 0 - 1 - 43 - 86 - 43 - 87 - 86 - 158 - 129 - 129 - 165 - 129 - 165 - 129 - 208 - 171 - 171 - 166 - 171 - 123 - 129 - 122 - 86 - 129 - 165 - 129 - 123 - 165 - 129 - 128 - 86 - 86 - 129 - 123 - 92 - 80 - 43 - 85 - 50 - 123 - 128 - 87 - 92 - 79 - 44 - 85 - 92 - 87 - 165 - 93 - 122 - 93 - 129 - 129 - 129 - 166 - 135 - 166 - 136 - 165 - 172 - 136 - 172 - 177 - 136 - 172 - 172 - 172 - 136 - 171 - 172 - 136 - 165 - 136 - 136 - 166 - 135 - 130 - 172 - 135 - 130 - 165 - 136 - 129 - 172 - 129 - 166 - 135 - 166 - 92 - 123 - 86 - 86 - 86 - 50 - 80 - 49 - 79 - 43 - 43 - 1 - 43 - 42 - 1 - 37 - 7 - 42 - 1 - 43 - 43 - 43 - 43 - 80 - 49 - 43 - 80 - 86 - 86 - 86 - 50 - 86 - 122 - 135 - 129 - 172 - 171 - 172 - 172 - 130 - 172 - 129 - 129 - 129 - 130 - 93 - 122 - 93 - 87 - 92 - 123 - 93 - 86 - 129 - 93 - 129 - 123 - 94 - 129 - 129 - 129 - 130 - 135 - 130 - 93 - 129 - 123 - 80 - 43 - 6 - 43 - 37 - 43 - 43 - 80 - 49 - 80 - 86 - 128 - 123 - 129 - 129 - 122 - 129 - 122 - 87 - 122 - 50 - 43 - 0 - 0 - 37 - 43 - 44 - 92 - 123 - 122 - 129 - 129 - 165 - 171 - 171 - 172 - 208 - 215 - 208 - 208 - 214 - 208 - 171 - 166 - 129 - 123 - 128 - 165 - 123 - 122 - 129 - 165 - 129 - 129 - 86 - 49 - 80 - 86 - 50 - 80 - 86 - 128 - 86 - 86 - 44 - 86 - 86 - 122 - 93 - 129 - 122 - 93 - 86 - 86 - 87 - 86 - 129 - 129 - 172 - 129 - 172 - 172 - 129 - 172 - 136 - 177 - 172 - 172 - 135 - 172 - 172 - 172 - 136 - 172 - 136 - 166 - 136 - 165 - 136 - 130 - 171 - 130 - 130 - 135 - 130 - 165 - 130 - 166 - 135 - 129 - 88 - 165 - 129 - 92 - 123 - 86 - 86 - 86 - 86 - 43 - 50 - 79 - 43 - 1 - 42 - 1 - 43 - 1 - 42 - 1 - 43 - 43 - 43 - 43 - 43 - 86 - 43 - 43 - 50 - 80 - 85 - 86 - 86 - 87 - 129 - 129 - 172 - 171 - 172 - 172 - 171 - 130 - 172 - 171 - 130 - 129 - 86 - 128 - 87 - 93 - 122 - 93 - 87 - 93 - 129 - 130 - 87 - 129 - 129 - 93 - 129 - 130 - 136 - 129 - 129 - 93 - 129 - 87 - 86 - 85 - 44 - 44 - 43 - 80 - 86 - 86 - 86 - 86 - 129 - 123 - 165 - 129 - 129 - 129 - 165 - 86 - 123 - 128 - 87 - 122 - 7 - 43 - 0 - 0 - 44 - 79 - 93 - 129 - 165 - 136 - 201 - 172 - 214 - 209 - 214 - 208 - 215 - 215 - 214 - 209 - 207 - 172 - 208 - 208 - 171 - 165 - 130 - 122 - 122 - 129 - 129 - 129 - 129 - 87 - 86 - 85 - 80 - 87 - 128 - 93 - 80 - 85 - 50 - 80 - 92 - 166 - 92 - 86 - 87 - 86 - 85 - 86 - 122 - 50 - 122 - 93 - 129 - 165 - 130 - 171 - 136 - 165 - 136 - 171 - 136 - 172 - 135 - 172 - 178 - 136 - 172 - 171 - 136 - 173 - 129 - 172 - 131 - 129 - 131 - 130 - 172 - 130 - 130 - 130 - 130 - 129 - 129 - 129 - 129 - 87 - 122 - 129 - 129 - 86 - 86 - 86 - 86 - 80 - 86 - 49 - 80 - 7 - 36 - 43 - 1 - 6 - 37 - 7 - 36 - 43 - 43 - 43 - 44 - 43 - 86 - 43 - 49 - 44 - 79 - 50 - 86 - 122 - 130 - 129 - 171 - 130 - 172 - 172 - 172 - 171 - 130 - 172 - 165 - 129 - 130 - 128 - 93 - 87 - 86 - 93 - 123 - 129 - 129 - 93 - 123 - 128 - 93 - 130 - 123 - 93 - 129 - 129 - 136 - 129 - 129 - 87 - 122 - 44 - 85 - 44 - 122 - 86 - 93 - 122 - 130 - 129 - 123 - 128 - 129 - 164 - 130 - 171 - 129 - 165 - 129 - 123 - 128 - 129 - 123 - 43 - 7 - 36 - 1 - 7 - 37 - 85 - 123 - 135 - 166 - 214 - 208 - 209 - 172 - 214 - 209 - 214 - 215 - 208 - 215 - 214 - 208 - 209 - 171 - 208 - 172 - 165 - 129 - 122 - 123 - 86 - 122 - 93 - 123 - 128 - 86 - 123 - 86 - 85 - 44 - 86 - 129 - 129 - 129 - 87 - 86 - 85 - 86 - 80 - 86 - 86 - 86 - 86 - 92 - 123 - 93 - 128 - 129 - 130 - 129 - 135 - 166 - 135 - 171 - 136 - 171 - 129 - 172 - 136 - 172 - 171 - 136 - 172 - 137 - 130 - 173 - 129 - 167 - 136 - 130 - 130 - 130 - 165 - 129 - 130 - 129 - 123 - 123 - 86 - 86 - 86 - 123 - 128 - 87 - 128 - 86 - 86 - 50 - 79 - 50 - 79 - 43 - 7 - 36 - 7 - 37 - 1 - 42 - 1 - 43 - 36 - 43 - 7 - 43 - 79 - 44 - 85 - 44 - 86 - 86 - 86 - 93 - 129 - 129 - 166 - 171 - 130 - 172 - 135 - 172 - 166 - 136 - 165 - 136 - 129 - 129 - 123 - 128 - 129 - 87 - 129 - 87 - 129 - 129 - 129 - 123 - 135 - 123 - 135 - 130 - 129 - 129 - 129 - 129 - 123 - 86 - 44 - 85 - 43 - 122 - 129 - 130 - 165 - 129 - 129 - 129 - 129 - 159 - 92 - 130 - 165 - 165 - 129 - 172 - 165 - 130 - 128 - 129 - 86 - 79 - 7 - 37 - 0 - 37 - 6 - 1 - 43 - 86 - 123 - 170 - 172 - 172 - 214 - 209 - 208 - 214 - 209 - 171 - 215 - 202 - 135 - 207 - 172 - 166 - 171 - 172 - 164 - 129 - 129 - 129 - 129 - 122 - 93 - 122 - 86 - 80 - 122 - 92 - 129 - 130 - 122 - 92 - 80 - 50 - 85 - 80 - 50 - 86 - 122 - 92 - 129 - 123 - 92 - 86 - 86 - 43 - 87 - 128 - 129 - 171 - 130 - 136 - 129 - 136 - 172 - 136 - 136 - 172 - 136 - 173 - 130 - 135 - 173 - 130 - 130 - 136 - 167 - 135 - 130 - 130 - 130 - 87 - 129 - 123 - 123 - 86 - 122 - 86 - 116 - 50 - 123 - 86 - 122 - 93 - 86 - 80 - 49 - 86 - 44 - 85 - 37 - 7 - 36 - 7 - 37 - 7 - 36 - 1 - 43 - 6 - 37 - 43 - 43 - 44 - 49 - 80 - 79 - 50 - 86 - 86 - 128 - 129 - 130 - 171 - 136 - 165 - 136 - 166 - 171 - 136 - 171 - 130 - 172 - 129 - 129 - 123 - 129 - 93 - 123 - 129 - 93 - 123 - 129 - 129 - 123 - 135 - 130 - 130 - 165 - 129 - 130 - 129 - 129 - 123 - 92 - 80 - 86 - 86 - 86 - 165 - 172 - 129 - 165 - 130 - 165 - 135 - 123 - 171 - 166 - 172 - 129 - 165 - 129 - 172 - 166 - 135 - 129 - 122 - 43 - 1 - 0 - 7 - 36 - 1 - 6 - 37 - 6 - 80 - 86 - 172 - 208 - 172 - 214 - 209 - 214 - 173 - 165 - 129 - 129 - 128 - 129 - 165 - 130 - 129 - 171 - 172 - 171 - 172 - 207 - 130 - 129 - 122 - 128 - 87 - 129 - 164 - 129 - 129 - 87 - 85 - 86 - 80 - 50 - 122 - 93 - 86 - 128 - 87 - 122 - 92 - 86 - 80 - 50 - 79 - 50 - 80 - 92 - 129 - 130 - 129 - 135 - 93 - 130 - 136 - 130 - 136 - 136 - 130 - 136 - 172 - 135 - 131 - 172 - 130 - 129 - 136 - 130 - 129 - 87 - 130 - 87 - 87 - 128 - 123 - 80 - 122 - 86 - 80 - 122 - 86 - 86 - 129 - 86 - 86 - 44 - 85 - 44 - 85 - 44 - 43 - 42 - 1 - 37 - 7 - 36 - 7 - 37 - 42 - 1 - 43 - 43 - 43 - 43 - 43 - 43 - 44 - 86 - 86 - 86 - 129 - 129 - 172 - 129 - 172 - 165 - 136 - 172 - 171 - 130 - 172 - 172 - 171 - 129 - 130 - 129 - 129 - 129 - 123 - 92 - 129 - 87 - 122 - 130 - 129 - 129 - 135 - 166 - 129 - 130 - 129 - 129 - 129 - 87 - 86 - 86 - 80 - 128 - 165 - 130 - 171 - 166 - 171 - 166 - 136 - 172 - 165 - 129 - 172 - 166 - 171 - 172 - 165 - 172 - 172 - 165 - 136 - 86 - 37 - 6 - 0 - 37 - 6 - 1 - 36 - 7 - 0 - 37 - 43 - 122 - 129 - 172 - 172 - 208 - 215 - 214 - 166 - 129 - 129 - 86 - 129 - 123 - 85 - 165 - 129 - 172 - 171 - 172 - 207 - 172 - 129 - 166 - 129 - 172 - 165 - 129 - 86 - 86 - 86 - 86 - 122 - 87 - 129 - 128 - 87 - 85 - 86 - 86 - 86 - 80 - 49 - 86 - 86 - 44 - 86 - 86 - 86 - 87 - 128 - 129 - 129 - 93 - 130 - 172 - 129 - 136 - 136 - 172 - 136 - 166 - 136 - 130 - 135 - 124 - 94 - 129 - 123 - 93 - 87 - 86 - 86 - 80 - 87 - 122 - 86 - 116 - 86 - 123 - 122 - 92 - 87 - 122 - 86 - 86 - 86 - 44 - 86 - 43 - 49 - 37 - 43 - 1 - 42 - 1 - 43 - 0 - 43 - 1 - 42 - 43 - 37 - 43 - 43 - 44 - 49 - 79 - 50 - 123 - 92 - 129 - 165 - 136 - 165 - 136 - 166 - 171 - 136 - 172 - 172 - 166 - 171 - 172 - 171 - 130 - 129 - 129 - 123 - 129 - 87 - 129 - 122 - 93 - 123 - 129 - 129 - 129 - 130 - 129 - 130 - 129 - 165 - 93 - 130 - 122 - 50 - 86 - 159 - 171 - 130 - 171 - 166 - 178 - 208 - 172 - 166 - 172 - 165 - 135 - 166 - 214 - 172 - 208 - 172 - 173 - 208 - 135 - 79 - 37 - 6 - 1 - 0 - 37 - 0 - 7 - 36 - 1 - 0 - 43 - 43 - 79 - 129 - 166 - 214 - 215 - 209 - 215 - 171 - 165 - 129 - 134 - 129 - 80 - 122 - 92 - 166 - 128 - 172 - 172 - 172 - 172 - 208 - 165 - 129 - 86 - 129 - 129 - 122 - 129 - 123 - 92 - 87 - 122 - 92 - 80 - 50 - 79 - 86 - 86 - 50 - 80 - 86 - 50 - 79 - 86 - 86 - 86 - 129 - 86 - 129 - 87 - 93 - 136 - 130 - 172 - 172 - 136 - 136 - 172 - 130 - 135 - 130 - 123 - 93 - 123 - 87 - 92 - 87 - 80 - 86 - 86 - 86 - 86 - 116 - 87 - 123 - 122 - 129 - 122 - 129 - 129 - 123 - 86 - 86 - 86 - 86 - 50 - 79 - 43 - 43 - 7 - 37 - 7 - 36 - 43 - 1 - 36 - 7 - 37 - 43 - 43 - 43 - 43 - 44 - 85 - 44 - 86 - 129 - 122 - 136 - 129 - 172 - 129 - 171 - 166 - 135 - 172 - 165 - 179 - 172 - 172 - 136 - 165 - 136 - 130 - 129 - 159 - 93 - 86 - 129 - 123 - 93 - 123 - 129 - 93 - 129 - 123 - 129 - 129 - 124 - 129 - 122 - 93 - 86 - 86 - 165 - 129 - 166 - 171 - 172 - 172 - 172 - 208 - 172 - 130 - 208 - 171 - 209 - 178 - 209 - 214 - 215 - 215 - 208 - 172 - 129 - 43 - 36 - 1 - 7 - 36 - 6 - 1 - 0 - 37 - 0 - 6 - 1 - 36 - 43 - 43 - 123 - 172 - 214 - 209 - 215 - 215 - 215 - 208 - 172 - 171 - 129 - 165 - 129 - 92 - 123 - 171 - 128 - 166 - 129 - 172 - 129 - 123 - 129 - 164 - 129 - 93 - 123 - 128 - 87 - 86 - 80 - 86 - 86 - 85 - 50 - 80 - 43 - 49 - 80 - 43 - 86 - 43 - 86 - 50 - 86 - 86 - 129 - 129 - 136 - 165 - 136 - 135 - 130 - 172 - 130 - 136 - 129 - 130 - 129 - 86 - 87 - 86 - 86 - 50 - 87 - 80 - 86 - 86 - 50 - 116 - 86 - 123 - 123 - 128 - 123 - 123 - 128 - 129 - 123 - 129 - 122 - 92 - 86 - 86 - 50 - 79 - 43 - 43 - 43 - 1 - 43 - 0 - 37 - 7 - 36 - 7 - 37 - 43 - 7 - 43 - 43 - 79 - 50 - 80 - 92 - 129 - 129 - 165 - 136 - 165 - 136 - 166 - 135 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 130 - 171 - 166 - 129 - 130 - 93 - 128 - 87 - 128 - 87 - 129 - 123 - 93 - 129 - 123 - 128 - 123 - 93 - 86 - 87 - 122 - 50 - 129 - 165 - 172 - 166 - 172 - 172 - 172 - 172 - 172 - 171 - 166 - 208 - 215 - 215 - 214 - 215 - 209 - 215 - 215 - 209 - 172 - 128 - 37 - 43 - 7 - 36 - 1 - 0 - 6 - 1 - 36 - 1 - 0 - 43 - 1 - 36 - 43 - 43 - 129 - 208 - 214 - 215 - 215 - 208 - 172 - 208 - 215 - 171 - 173 - 171 - 165 - 87 - 129 - 129 - 165 - 129 - 171 - 166 - 129 - 171 - 123 - 86 - 123 - 92 - 122 - 86 - 86 - 86 - 86 - 44 - 85 - 43 - 44 - 79 - 50 - 79 - 86 - 50 - 86 - 86 - 86 - 86 - 123 - 129 - 129 - 136 - 165 - 130 - 129 - 130 - 129 - 136 - 123 - 92 - 129 - 86 - 86 - 81 - 49 - 86 - 44 - 86 - 86 - 87 - 80 - 86 - 86 - 123 - 128 - 123 - 159 - 128 - 123 - 129 - 129 - 165 - 87 - 128 - 87 - 86 - 86 - 86 - 43 - 43 - 43 - 43 - 43 - 36 - 7 - 37 - 0 - 43 - 1 - 43 - 43 - 37 - 43 - 49 - 79 - 44 - 86 - 129 - 129 - 129 - 165 - 136 - 165 - 136 - 165 - 136 - 172 - 166 - 171 - 172 - 172 - 136 - 165 - 136 - 166 - 129 - 130 - 129 - 129 - 129 - 129 - 123 - 93 - 129 - 129 - 123 - 93 - 122 - 93 - 122 - 94 - 122 - 92 - 123 - 86 - 130 - 165 - 172 - 172 - 172 - 172 - 208 - 172 - 208 - 166 - 172 - 215 - 214 - 215 - 215 - 215 - 208 - 215 - 208 - 172 - 172 - 86 - 37 - 6 - 37 - 6 - 37 - 6 - 37 - 43 - 43 - 43 - 79 - 7 - 36 - 43 - 37 - 6 - 80 - 165 - 208 - 178 - 209 - 129 - 135 - 172 - 165 - 214 - 208 - 214 - 214 - 208 - 171 - 136 - 165 - 172 - 166 - 172 - 165 - 129 - 128 - 87 - 129 - 122 - 129 - 93 - 129 - 123 - 92 - 128 - 123 - 93 - 128 - 87 - 92 - 128 - 87 - 85 - 87 - 86 - 85 - 86 - 86 - 123 - 92 - 129 - 87 - 129 - 93 - 123 - 92 - 123 - 93 - 86 - 93 - 123 - 85 - 44 - 86 - 80 - 49 - 80 - 79 - 86 - 86 - 87 - 122 - 129 - 122 - 123 - 129 - 159 - 86 - 129 - 165 - 129 - 129 - 128 - 87 - 86 - 86 - 79 - 50 - 79 - 7 - 37 - 43 - 43 - 0 - 7 - 36 - 1 - 43 - 1 - 43 - 43 - 43 - 43 - 43 - 86 - 86 - 123 - 135 - 129 - 130 - 165 - 135 - 166 - 135 - 166 - 136 - 171 - 130 - 172 - 129 - 172 - 129 - 166 - 129 - 129 - 129 - 130 - 129 - 129 - 130 - 129 - 165 - 129 - 130 - 129 - 93 - 129 - 165 - 130 - 86 - 123 - 92 - 123 - 93 - 165 - 130 - 178 - 208 - 172 - 208 - 166 - 172 - 172 - 214 - 209 - 215 - 215 - 215 - 208 - 215 - 215 - 209 - 214 - 172 - 86 - 43 - 36 - 7 - 37 - 43 - 6 - 80 - 43 - 86 - 79 - 50 - 86 - 79 - 80 - 85 - 43 - 37 - 42 - 87 - 165 - 178 - 209 - 86 - 86 - 164 - 93 - 165 - 215 - 215 - 215 - 215 - 214 - 172 - 209 - 214 - 172 - 208 - 165 - 136 - 171 - 165 - 130 - 164 - 129 - 130 - 129 - 135 - 129 - 159 - 93 - 128 - 87 - 122 - 86 - 86 - 50 - 37 - 42 - 43 - 44 - 85 - 86 - 86 - 92 - 124 - 128 - 87 - 86 - 86 - 93 - 123 - 92 - 124 - 128 - 87 - 86 - 85 - 86 - 80 - 86 - 44 - 85 - 80 - 86 - 87 - 122 - 129 - 122 - 159 - 92 - 123 - 122 - 81 - 171 - 129 - 129 - 123 - 92 - 86 - 80 - 50 - 44 - 85 - 43 - 43 - 37 - 6 - 37 - 7 - 0 - 43 - 37 - 7 - 43 - 37 - 43 - 43 - 49 - 80 - 92 - 122 - 130 - 135 - 165 - 135 - 166 - 135 - 166 - 135 - 165 - 136 - 166 - 135 - 130 - 165 - 136 - 165 - 136 - 165 - 129 - 130 - 129 - 136 - 165 - 130 - 129 - 129 - 129 - 130 - 129 - 166 - 129 - 166 - 136 - 129 - 166 - 135 - 166 - 172 - 172 - 208 - 172 - 208 - 173 - 171 - 172 - 172 - 215 - 209 - 215 - 215 - 214 - 209 - 215 - 209 - 214 - 172 - 166 - 85 - 1 - 0 - 43 - 43 - 43 - 86 - 80 - 49 - 87 - 86 - 85 - 80 - 50 - 85 - 80 - 86 - 36 - 43 - 43 - 165 - 172 - 215 - 122 - 86 - 129 - 86 - 86 - 209 - 178 - 208 - 208 - 178 - 209 - 214 - 208 - 173 - 172 - 172 - 171 - 130 - 165 - 128 - 87 - 86 - 128 - 123 - 129 - 93 - 129 - 85 - 87 - 86 - 86 - 49 - 80 - 43 - 43 - 43 - 43 - 79 - 50 - 86 - 123 - 92 - 123 - 86 - 93 - 86 - 123 - 86 - 123 - 129 - 129 - 93 - 123 - 129 - 86 - 86 - 86 - 122 - 79 - 86 - 80 - 86 - 129 - 122 - 123 - 128 - 123 - 122 - 87 - 122 - 80 - 165 - 129 - 93 - 128 - 86 - 86 - 86 - 80 - 50 - 85 - 44 - 43 - 43 - 37 - 0 - 7 - 36 - 7 - 37 - 7 - 37 - 43 - 43 - 43 - 43 - 79 - 87 - 92 - 129 - 129 - 129 - 166 - 135 - 129 - 129 - 130 - 129 - 129 - 123 - 129 - 129 - 135 - 165 - 136 - 166 - 129 - 130 - 171 - 130 - 165 - 136 - 129 - 123 - 129 - 129 - 87 - 129 - 129 - 129 - 166 - 135 - 130 - 129 - 166 - 129 - 172 - 172 - 215 - 172 - 208 - 172 - 172 - 208 - 172 - 215 - 215 - 208 - 208 - 172 - 172 - 215 - 215 - 208 - 172 - 129 - 79 - 0 - 43 - 43 - 43 - 86 - 87 - 86 - 86 - 86 - 122 - 93 - 122 - 86 - 86 - 80 - 43 - 85 - 44 - 79 - 129 - 135 - 209 - 171 - 165 - 128 - 86 - 128 - 123 - 129 - 208 - 215 - 214 - 172 - 166 - 172 - 172 - 208 - 136 - 165 - 129 - 165 - 129 - 129 - 86 - 123 - 129 - 129 - 129 - 129 - 86 - 93 - 122 - 86 - 86 - 86 - 43 - 43 - 43 - 43 - 44 - 86 - 86 - 86 - 85 - 87 - 86 - 86 - 123 - 86 - 129 - 87 - 129 - 165 - 129 - 172 - 129 - 123 - 128 - 123 - 86 - 128 - 86 - 87 - 116 - 92 - 123 - 128 - 123 - 123 - 122 - 86 - 122 - 86 - 123 - 86 - 129 - 122 - 93 - 86 - 86 - 85 - 80 - 50 - 43 - 43 - 43 - 37 - 6 - 37 - 7 - 36 - 1 - 43 - 43 - 1 - 43 - 43 - 43 - 85 - 44 - 86 - 129 - 128 - 87 - 129 - 129 - 129 - 86 - 86 - 92 - 86 - 87 - 86 - 129 - 128 - 130 - 129 - 129 - 172 - 129 - 130 - 166 - 135 - 130 - 129 - 165 - 93 - 129 - 123 - 129 - 129 - 172 - 130 - 129 - 129 - 129 - 166 - 172 - 172 - 172 - 208 - 172 - 165 - 136 - 208 - 215 - 208 - 179 - 208 - 208 - 172 - 130 - 214 - 208 - 215 - 209 - 171 - 87 - 85 - 1 - 43 - 43 - 86 - 86 - 122 - 86 - 93 - 128 - 87 - 128 - 86 - 86 - 86 - 86 - 122 - 80 - 86 - 49 - 80 - 172 - 172 - 172 - 172 - 166 - 129 - 164 - 135 - 122 - 129 - 135 - 171 - 166 - 129 - 165 - 172 - 166 - 135 - 166 - 171 - 129 - 123 - 86 - 129 - 128 - 130 - 128 - 123 - 129 - 129 - 129 - 86 - 86 - 87 - 85 - 79 - 50 - 43 - 43 - 80 - 86 - 86 - 86 - 86 - 79 - 86 - 123 - 92 - 123 - 129 - 129 - 130 - 129 - 172 - 172 - 165 - 165 - 129 - 123 - 129 - 122 - 129 - 86 - 123 - 122 - 123 - 128 - 123 - 122 - 123 - 86 - 122 - 86 - 122 - 87 - 128 - 87 - 86 - 85 - 86 - 87 - 79 - 50 - 86 - 43 - 80 - 43 - 6 - 1 - 43 - 0 - 1 - 43 - 43 - 7 - 43 - 37 - 43 - 43 - 49 - 80 - 44 - 86 - 43 - 86 - 86 - 86 - 51 - 79 - 50 - 86 - 86 - 87 - 129 - 129 - 129 - 129 - 93 - 129 - 130 - 165 - 129 - 130 - 166 - 135 - 130 - 123 - 129 - 129 - 128 - 87 - 130 - 171 - 129 - 130 - 129 - 171 - 130 - 208 - 172 - 215 - 172 - 209 - 172 - 214 - 208 - 172 - 214 - 173 - 208 - 130 - 214 - 209 - 215 - 215 - 214 - 166 - 86 - 85 - 44 - 79 - 50 - 79 - 129 - 87 - 135 - 123 - 128 - 123 - 129 - 93 - 86 - 79 - 87 - 86 - 86 - 86 - 79 - 86 - 129 - 172 - 130 - 207 - 172 - 214 - 208 - 172 - 129 - 166 - 171 - 166 - 165 - 135 - 202 - 172 - 129 - 129 - 122 - 87 - 86 - 129 - 128 - 123 - 128 - 135 - 166 - 129 - 129 - 129 - 166 - 129 - 129 - 92 - 122 - 86 - 123 - 86 - 86 - 86 - 122 - 86 - 86 - 86 - 80 - 50 - 86 - 86 - 122 - 87 - 129 - 166 - 172 - 172 - 166 - 136 - 172 - 165 - 165 - 136 - 165 - 129 - 122 - 123 - 93 - 158 - 123 - 129 - 122 - 122 - 116 - 87 - 122 - 85 - 87 - 122 - 86 - 86 - 86 - 86 - 44 - 85 - 44 - 86 - 85 - 44 - 86 - 7 - 37 - 6 - 1 - 43 - 43 - 1 - 43 - 44 - 43 - 43 - 7 - 36 - 43 - 1 - 43 - 43 - 43 - 43 - 43 - 50 - 43 - 44 - 85 - 50 - 123 - 93 - 129 - 130 - 93 - 129 - 123 - 129 - 129 - 136 - 159 - 129 - 94 - 165 - 129 - 129 - 129 - 130 - 93 - 165 - 93 - 165 - 130 - 171 - 130 - 172 - 172 - 208 - 172 - 215 - 172 - 208 - 215 - 209 - 172 - 171 - 166 - 178 - 208 - 172 - 209 - 214 - 215 - 209 - 172 - 86 - 85 - 80 - 49 - 80 - 86 - 123 - 135 - 129 - 165 - 93 - 130 - 128 - 123 - 87 - 85 - 86 - 87 - 86 - 86 - 86 - 44 - 128 - 130 - 166 - 214 - 208 - 179 - 208 - 209 - 171 - 208 - 179 - 208 - 214 - 172 - 166 - 172 - 165 - 129 - 172 - 129 - 123 - 92 - 122 - 123 - 129 - 92 - 159 - 129 - 86 - 122 - 93 - 165 - 129 - 123 - 128 - 129 - 86 - 123 - 86 - 128 - 93 - 123 - 122 - 43 - 43 - 86 - 44 - 123 - 93 - 129 - 129 - 166 - 135 - 166 - 172 - 172 - 165 - 136 - 165 - 129 - 165 - 130 - 122 - 93 - 122 - 159 - 123 - 165 - 122 - 122 - 87 - 122 - 122 - 80 - 86 - 49 - 80 - 50 - 79 - 87 - 85 - 50 - 86 - 44 - 79 - 50 - 43 - 43 - 44 - 43 - 43 - 50 - 43 - 80 - 7 - 43 - 43 - 1 - 37 - 0 - 43 - 1 - 36 - 7 - 43 - 43 - 44 - 43 - 43 - 43 - 50 - 86 - 87 - 129 - 86 - 129 - 93 - 123 - 129 - 129 - 130 - 129 - 166 - 129 - 129 - 136 - 129 - 129 - 166 - 135 - 166 - 135 - 166 - 129 - 171 - 136 - 166 - 172 - 172 - 172 - 208 - 136 - 208 - 173 - 214 - 215 - 166 - 128 - 166 - 172 - 214 - 173 - 172 - 208 - 214 - 179 - 202 - 86 - 85 - 43 - 44 - 79 - 50 - 123 - 93 - 172 - 165 - 136 - 129 - 166 - 87 - 128 - 87 - 86 - 122 - 87 - 86 - 86 - 86 - 87 - 171 - 172 - 208 - 179 - 209 - 214 - 208 - 173 - 208 - 215 - 215 - 208 - 179 - 207 - 130 - 165 - 128 - 123 - 129 - 129 - 172 - 129 - 165 - 123 - 128 - 87 - 122 - 92 - 122 - 80 - 86 - 86 - 129 - 86 - 123 - 128 - 129 - 129 - 123 - 129 - 128 - 116 - 50 - 43 - 43 - 80 - 86 - 129 - 93 - 165 - 130 - 130 - 172 - 172 - 166 - 173 - 165 - 136 - 165 - 129 - 123 - 93 - 122 - 123 - 165 - 123 - 158 - 129 - 123 - 122 - 87 - 122 - 86 - 86 - 79 - 43 - 44 - 79 - 43 - 86 - 50 - 80 - 49 - 80 - 43 - 14 - 37 - 6 - 43 - 1 - 44 - 49 - 80 - 50 - 44 - 79 - 50 - 37 - 6 - 37 - 7 - 37 - 6 - 37 - 44 - 49 - 80 - 43 - 50 - 44 - 93 - 86 - 87 - 129 - 86 - 87 - 92 - 123 - 129 - 136 - 165 - 130 - 171 - 130 - 166 - 135 - 130 - 129 - 165 - 136 - 129 - 172 - 171 - 130 - 171 - 130 - 172 - 172 - 172 - 208 - 171 - 173 - 208 - 208 - 172 - 171 - 130 - 172 - 208 - 172 - 172 - 165 - 129 - 172 - 215 - 172 - 165 - 79 - 50 - 43 - 80 - 86 - 92 - 124 - 171 - 130 - 172 - 129 - 166 - 129 - 93 - 129 - 86 - 87 - 122 - 87 - 86 - 87 - 129 - 172 - 208 - 214 - 173 - 208 - 178 - 209 - 215 - 215 - 209 - 214 - 208 - 215 - 215 - 166 - 129 - 129 - 129 - 164 - 166 - 135 - 166 - 171 - 166 - 129 - 129 - 129 - 122 - 122 - 93 - 86 - 122 - 129 - 129 - 123 - 128 - 123 - 135 - 123 - 86 - 122 - 86 - 43 - 43 - 86 - 80 - 86 - 92 - 123 - 92 - 166 - 129 - 172 - 172 - 165 - 172 - 166 - 130 - 129 - 165 - 129 - 122 - 87 - 123 - 122 - 165 - 123 - 122 - 129 - 123 - 122 - 87 - 122 - 86 - 86 - 43 - 43 - 80 - 49 - 43 - 44 - 43 - 85 - 44 - 79 - 50 - 44 - 43 - 7 - 43 - 0 - 43 - 8 - 43 - 37 - 42 - 7 - 37 - 43 - 50 - 79 - 44 - 86 - 86 - 93 - 86 - 86 - 86 - 50 - 87 - 86 - 129 - 123 - 93 - 87 - 93 - 123 - 130 - 171 - 130 - 172 - 171 - 130 - 166 - 135 - 130 - 165 - 130 - 135 - 129 - 166 - 135 - 165 - 130 - 135 - 172 - 166 - 171 - 173 - 208 - 178 - 208 - 173 - 172 - 165 - 171 - 173 - 172 - 208 - 129 - 129 - 123 - 128 - 172 - 215 - 208 - 172 - 122 - 87 - 85 - 86 - 87 - 86 - 129 - 130 - 166 - 135 - 166 - 130 - 171 - 130 - 123 - 86 - 93 - 129 - 122 - 87 - 86 - 129 - 130 - 172 - 172 - 208 - 172 - 215 - 172 - 215 - 215 - 215 - 172 - 215 - 208 - 172 - 165 - 93 - 129 - 166 - 171 - 208 - 130 - 165 - 172 - 171 - 166 - 171 - 135 - 159 - 129 - 129 - 129 - 128 - 123 - 129 - 165 - 129 - 93 - 158 - 87 - 128 - 80 - 85 - 44 - 79 - 50 - 80 - 92 - 87 - 122 - 129 - 130 - 129 - 172 - 167 - 135 - 166 - 173 - 165 - 129 - 165 - 94 - 122 - 87 - 86 - 123 - 122 - 123 - 128 - 123 - 122 - 87 - 122 - 129 - 86 - 86 - 80 - 49 - 80 - 43 - 50 - 43 - 43 - 37 - 6 - 43 - 7 - 43 - 1 - 43 - 44 - 50 - 85 - 44 - 43 - 7 - 43 - 1 - 36 - 7 - 37 - 7 - 36 - 43 - 44 - 44 - 85 - 87 - 86 - 86 - 87 - 92 - 129 - 87 - 92 - 123 - 93 - 86 - 86 - 123 - 130 - 135 - 166 - 129 - 129 - 130 - 129 - 172 - 129 - 165 - 136 - 165 - 136 - 165 - 130 - 135 - 165 - 136 - 172 - 209 - 214 - 209 - 178 - 209 - 171 - 166 - 172 - 208 - 179 - 165 - 86 - 86 - 165 - 165 - 172 - 215 - 209 - 135 - 129 - 122 - 44 - 86 - 86 - 123 - 86 - 130 - 129 - 173 - 129 - 172 - 129 - 166 - 129 - 87 - 86 - 130 - 165 - 93 - 86 - 86 - 129 - 129 - 130 - 165 - 179 - 215 - 172 - 209 - 178 - 215 - 208 - 172 - 179 - 201 - 130 - 135 - 165 - 172 - 172 - 172 - 208 - 173 - 165 - 172 - 172 - 165 - 136 - 165 - 165 - 129 - 129 - 128 - 123 - 86 - 129 - 129 - 164 - 129 - 129 - 122 - 86 - 43 - 80 - 43 - 44 - 86 - 86 - 122 - 87 - 129 - 123 - 136 - 166 - 172 - 166 - 172 - 166 - 136 - 165 - 129 - 123 - 122 - 93 - 116 - 87 - 123 - 86 - 123 - 87 - 93 - 87 - 87 - 86 - 129 - 86 - 86 - 122 - 50 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 7 - 37 - 6 - 8 - 43 - 43 - 44 - 43 - 7 - 43 - 43 - 44 - 37 - 43 - 44 - 85 - 44 - 86 - 122 - 93 - 123 - 93 - 129 - 87 - 129 - 129 - 93 - 130 - 129 - 86 - 93 - 123 - 93 - 165 - 130 - 172 - 135 - 130 - 129 - 123 - 86 - 171 - 130 - 129 - 171 - 130 - 171 - 130 - 135 - 166 - 172 - 214 - 209 - 215 - 172 - 209 - 172 - 172 - 208 - 214 - 215 - 172 - 172 - 123 - 43 - 165 - 178 - 209 - 208 - 215 - 129 - 166 - 86 - 86 - 86 - 86 - 93 - 123 - 129 - 130 - 171 - 166 - 136 - 165 - 136 - 166 - 93 - 122 - 129 - 130 - 129 - 129 - 129 - 129 - 87 - 86 - 129 - 171 - 172 - 165 - 179 - 172 - 172 - 172 - 172 - 129 - 165 - 130 - 171 - 208 - 172 - 166 - 172 - 172 - 172 - 171 - 165 - 130 - 171 - 129 - 166 - 166 - 135 - 129 - 123 - 165 - 93 - 165 - 129 - 165 - 129 - 129 - 122 - 50 - 79 - 44 - 43 - 85 - 44 - 86 - 80 - 93 - 86 - 129 - 129 - 166 - 135 - 166 - 165 - 172 - 131 - 171 - 165 - 123 - 93 - 122 - 87 - 122 - 87 - 123 - 80 - 92 - 80 - 50 - 87 - 122 - 129 - 93 - 122 - 87 - 86 - 85 - 43 - 43 - 43 - 43 - 43 - 43 - 8 - 36 - 7 - 1 - 43 - 43 - 7 - 1 - 42 - 1 - 43 - 1 - 42 - 1 - 37 - 7 - 43 - 79 - 86 - 87 - 92 - 130 - 129 - 87 - 129 - 136 - 129 - 129 - 130 - 129 - 86 - 86 - 86 - 86 - 87 - 86 - 123 - 86 - 129 - 123 - 93 - 129 - 123 - 135 - 166 - 136 - 165 - 136 - 165 - 136 - 172 - 172 - 208 - 172 - 172 - 172 - 208 - 173 - 208 - 214 - 215 - 173 - 208 - 135 - 123 - 165 - 136 - 208 - 172 - 208 - 173 - 171 - 129 - 86 - 80 - 86 - 86 - 129 - 129 - 124 - 129 - 135 - 172 - 167 - 172 - 129 - 172 - 129 - 87 - 165 - 136 - 166 - 172 - 172 - 129 - 86 - 49 - 80 - 50 - 87 - 171 - 129 - 136 - 172 - 171 - 172 - 172 - 166 - 172 - 207 - 172 - 173 - 208 - 172 - 214 - 172 - 166 - 171 - 166 - 172 - 165 - 135 - 166 - 129 - 172 - 123 - 128 - 123 - 129 - 128 - 130 - 129 - 164 - 87 - 122 - 80 - 43 - 49 - 80 - 49 - 80 - 86 - 87 - 86 - 129 - 93 - 166 - 129 - 166 - 135 - 166 - 129 - 172 - 123 - 129 - 129 - 122 - 80 - 87 - 50 - 80 - 87 - 80 - 51 - 86 - 51 - 86 - 122 - 87 - 128 - 87 - 86 - 85 - 44 - 43 - 43 - 43 - 43 - 43 - 43 - 43 - 7 - 43 - 44 - 43 - 7 - 37 - 43 - 7 - 37 - 0 - 43 - 0 - 43 - 1 - 43 - 80 - 86 - 93 - 123 - 136 - 129 - 129 - 129 - 93 - 130 - 129 - 130 - 93 - 87 - 85 - 80 - 50 - 86 - 86 - 87 - 86 - 87 - 86 - 129 - 129 - 129 - 129 - 172 - 173 - 172 - 171 - 172 - 130 - 171 - 129 - 172 - 166 - 172 - 172 - 208 - 215 - 215 - 215 - 215 - 208 - 166 - 128 - 129 - 172 - 208 - 209 - 178 - 172 - 166 - 172 - 165 - 86 - 79 - 87 - 92 - 123 - 129 - 129 - 129 - 130 - 172 - 172 - 172 - 165 - 172 - 130 - 92 - 123 - 136 - 173 - 172 - 166 - 129 - 50 - 43 - 44 - 86 - 92 - 166 - 136 - 172 - 215 - 179 - 208 - 172 - 215 - 208 - 173 - 214 - 172 - 209 - 214 - 172 - 208 - 172 - 172 - 165 - 172 - 172 - 165 - 136 - 172 - 166 - 165 - 86 - 122 - 93 - 128 - 166 - 129 - 122 - 129 - 86 - 79 - 43 - 44 - 85 - 80 - 86 - 86 - 87 - 86 - 129 - 130 - 129 - 165 - 136 - 166 - 165 - 136 - 159 - 135 - 159 - 93 - 122 - 80 - 50 - 80 - 51 - 79 - 51 - 44 - 51 - 44 - 86 - 79 - 86 - 86 - 86 - 86 - 86 - 43 - 43 - 43 - 43 - 80 - 43 - 50 - 7 - 43 - 43 - 80 - 50 - 44 - 43 - 43 - 7 - 37 - 43 - 43 - 44 - 43 - 86 - 86 - 86 - 129 - 130 - 172 - 129 - 136 - 172 - 130 - 136 - 165 - 130 - 135 - 130 - 93 - 122 - 87 - 86 - 86 - 80 - 50 - 80 - 123 - 92 - 166 - 172 - 136 - 171 - 172 - 166 - 171 - 129 - 136 - 129 - 129 - 123 - 136 - 165 - 172 - 214 - 209 - 214 - 215 - 173 - 214 - 209 - 129 - 129 - 165 - 172 - 172 - 215 - 208 - 165 - 136 - 172 - 166 - 128 - 80 - 87 - 129 - 129 - 129 - 130 - 130 - 171 - 166 - 178 - 166 - 173 - 130 - 171 - 129 - 87 - 166 - 135 - 130 - 165 - 93 - 43 - 43 - 43 - 44 - 92 - 136 - 172 - 172 - 215 - 215 - 215 - 178 - 215 - 209 - 214 - 209 - 215 - 214 - 173 - 214 - 209 - 208 - 172 - 129 - 172 - 165 - 130 - 171 - 165 - 130 - 129 - 128 - 123 - 129 - 122 - 129 - 86 - 122 - 93 - 79 - 86 - 80 - 49 - 86 - 80 - 86 - 86 - 86 - 93 - 123 - 129 - 130 - 165 - 136 - 165 - 130 - 129 - 165 - 129 - 130 - 122 - 86 - 80 - 86 - 44 - 80 - 51 - 50 - 81 - 14 - 51 - 79 - 44 - 43 - 86 - 79 - 86 - 50 - 79 - 44 - 49 - 43 - 43 - 44 - 85 - 44 - 43 - 86 - 86 - 87 - 86 - 50 - 86 - 44 - 43 - 86 - 44 - 123 - 129 - 93 - 165 - 130 - 171 - 172 - 173 - 172 - 172 - 130 - 172 - 135 - 172 - 130 - 129 - 130 - 129 - 129 - 86 - 129 - 86 - 44 - 86 - 122 - 136 - 166 - 172 - 129 - 135 - 130 - 129 - 123 - 128 - 93 - 129 - 123 - 128 - 130 - 129 - 171 - 173 - 208 - 215 - 172 - 208 - 172 - 172 - 208 - 179 - 208 - 129 - 172 - 166 - 171 - 209 - 171 - 166 - 172 - 172 - 129 - 43 - 129 - 129 - 130 - 172 - 165 - 172 - 129 - 173 - 172 - 172 - 172 - 172 - 173 - 165 - 136 - 123 - 129 - 93 - 129 - 123 - 86 - 49 - 50 - 43 - 86 - 136 - 172 - 173 - 178 - 215 - 215 - 215 - 215 - 209 - 214 - 209 - 215 - 214 - 209 - 215 - 208 - 178 - 208 - 129 - 129 - 165 - 166 - 136 - 164 - 129 - 129 - 129 - 123 - 128 - 123 - 86 - 122 - 92 - 86 - 80 - 86 - 79 - 87 - 86 - 50 - 86 - 80 - 92 - 123 - 86 - 129 - 130 - 129 - 165 - 131 - 171 - 130 - 123 - 129 - 123 - 93 - 116 - 86 - 86 - 45 - 52 - 49 - 81 - 51 - 50 - 45 - 43 - 50 - 86 - 86 - 80 - 85 - 44 - 49 - 43 - 37 - 43 - 85 - 44 - 43 - 43 - 44 - 86 - 87 - 92 - 123 - 92 - 123 - 93 - 122 - 93 - 123 - 136 - 165 - 172 - 172 - 173 - 172 - 173 - 172 - 172 - 209 - 172 - 172 - 137 - 171 - 130 - 130 - 135 - 165 - 136 - 129 - 129 - 166 - 135 - 166 - 172 - 136 - 165 - 129 - 136 - 123 - 92 - 122 - 86 - 130 - 171 - 136 - 165 - 129 - 136 - 129 - 165 - 130 - 214 - 215 - 172 - 172 - 173 - 172 - 208 - 179 - 208 - 172 - 165 - 136 - 166 - 171 - 130 - 129 - 129 - 165 - 129 - 130 - 129 - 172 - 172 - 172 - 172 - 165 - 136 - 165 - 172 - 179 - 172 - 208 - 173 - 209 - 172 - 171 - 87 - 128 - 130 - 122 - 129 - 86 - 1 - 43 - 129 - 129 - 172 - 178 - 209 - 178 - 209 - 215 - 215 - 209 - 215 - 214 - 209 - 215 - 179 - 208 - 208 - 215 - 172 - 172 - 165 - 165 - 136 - 165 - 172 - 172 - 123 - 128 - 123 - 128 - 87 - 122 - 92 - 123 - 79 - 50 - 79 - 79 - 50 - 80 - 50 - 80 - 86 - 86 - 86 - 87 - 129 - 129 - 129 - 130 - 130 - 130 - 129 - 94 - 123 - 129 - 88 - 86 - 87 - 51 - 81 - 50 - 9 - 50 - 51 - 45 - 50 - 43 - 43 - 37 - 7 - 43 - 80 - 86 - 49 - 80 - 43 - 44 - 85 - 44 - 86 - 44 - 86 - 86 - 129 - 129 - 129 - 130 - 129 - 136 - 166 - 129 - 172 - 172 - 173 - 209 - 172 - 179 - 173 - 208 - 173 - 178 - 173 - 172 - 172 - 167 - 136 - 165 - 129 - 130 - 172 - 215 - 172 - 172 - 172 - 129 - 172 - 129 - 129 - 87 - 129 - 122 - 129 - 130 - 129 - 135 - 129 - 166 - 136 - 165 - 129 - 129 - 93 - 129 - 165 - 172 - 136 - 129 - 172 - 208 - 172 - 172 - 172 - 172 - 166 - 135 - 123 - 129 - 87 - 86 - 86 - 129 - 87 - 129 - 129 - 171 - 166 - 179 - 172 - 165 - 136 - 129 - 172 - 172 - 209 - 214 - 172 - 172 - 172 - 172 - 166 - 128 - 123 - 172 - 129 - 171 - 87 - 43 - 36 - 43 - 87 - 171 - 166 - 172 - 214 - 173 - 208 - 172 - 208 - 178 - 209 - 172 - 172 - 208 - 215 - 172 - 215 - 172 - 208 - 172 - 215 - 172 - 166 - 172 - 171 - 166 - 128 - 129 - 129 - 123 - 122 - 86 - 86 - 79 - 86 - 43 - 43 - 86 - 80 - 49 - 80 - 86 - 87 - 86 - 129 - 87 - 129 - 130 - 129 - 93 - 130 - 93 - 129 - 88 - 86 - 87 - 87 - 87 - 51 - 51 - 45 - 50 - 15 - 45 - 50 - 51 - 43 - 43 - 43 - 43 - 43 - 37 - 43 - 43 - 1 - 80 - 49 - 81 - 86 - 86 - 92 - 123 - 130 - 171 - 131 - 172 - 172 - 172 - 171 - 173 - 209 - 173 - 214 - 173 - 215 - 209 - 178 - 209 - 173 - 178 - 209 - 172 - 173 - 171 - 166 - 136 - 165 - 130 - 136 - 129 - 166 - 135 - 166 - 129 - 135 - 129 - 130 - 129 - 165 - 93 - 129 - 166 - 178 - 172 - 172 - 172 - 165 - 136 - 122 - 93 - 129 - 86 - 129 - 129 - 130 - 165 - 135 - 172 - 172 - 166 - 172 - 171 - 130 - 135 - 130 - 123 - 122 - 86 - 50 - 80 - 44 - 43 - 86 - 123 - 135 - 172 - 172 - 172 - 129 - 165 - 136 - 166 - 172 - 178 - 172 - 172 - 165 - 166 - 129 - 165 - 93 - 165 - 172 - 172 - 171 - 129 - 80 - 43 - 43 - 43 - 43 - 43 - 80 - 85 - 43 - 80 - 43 - 85 - 80 - 43 - 123 - 128 - 129 - 130 - 165 - 165 - 172 - 172 - 172 - 208 - 173 - 172 - 171 - 172 - 166 - 171 - 165 - 129 - 86 - 123 - 85 - 50 - 79 - 80 - 85 - 44 - 121 - 50 - 80 - 50 - 79 - 87 - 92 - 123 - 129 - 123 - 129 - 93 - 93 - 94 - 123 - 87 - 93 - 87 - 88 - 51 - 80 - 51 - 50 - 45 - 51 - 50 - 45 - 51 - 50 - 43 - 43 - 1 - 0 - 43 - 43 - 80 - 43 - 50 - 79 - 43 - 43 - 43 - 50 - 123 - 93 - 166 - 129 - 215 - 172 - 209 - 179 - 209 - 215 - 179 - 214 - 209 - 179 - 209 - 214 - 179 - 209 - 172 - 173 - 172 - 178 - 166 - 172 - 129 - 129 - 130 - 129 - 129 - 129 - 166 - 135 - 172 - 172 - 166 - 171 - 136 - 172 - 172 - 172 - 166 - 178 - 172 - 172 - 173 - 172 - 171 - 172 - 172 - 135 - 165 - 171 - 129 - 87 - 87 - 128 - 130 - 171 - 129 - 129 - 130 - 129 - 129 - 129 - 129 - 86 - 86 - 44 - 79 - 8 - 79 - 86 - 87 - 135 - 165 - 172 - 172 - 130 - 135 - 166 - 129 - 129 - 129 - 130 - 129 - 128 - 165 - 129 - 129 - 123 - 86 - 92 - 202 - 215 - 172 - 208 - 129 - 165 - 86 - 86 - 86 - 79 - 86 - 86 - 86 - 79 - 86 - 80 - 85 - 86 - 86 - 80 - 85 - 86 - 80 - 129 - 129 - 165 - 172 - 171 - 173 - 172 - 207 - 172 - 166 - 172 - 171 - 129 - 123 - 86 - 79 - 86 - 43 - 86 - 122 - 86 - 86 - 86 - 80 - 86 - 44 - 86 - 87 - 86 - 122 - 88 - 92 - 87 - 93 - 87 - 86 - 87 - 51 - 87 - 45 - 87 - 51 - 51 - 45 - 50 - 51 - 45 - 50 - 51 - 45 - 7 - 42 - 37 - 7 - 36 - 1 - 43 - 43 - 44 - 43 - 43 - 80 - 86 - 86 - 129 - 136 - 209 - 173 - 172 - 215 - 215 - 173 - 215 - 215 - 209 - 179 - 215 - 209 - 172 - 179 - 209 - 172 - 173 - 172 - 171 - 172 - 166 - 130 - 129 - 86 - 93 - 122 - 130 - 129 - 166 - 172 - 178 - 172 - 172 - 172 - 165 - 172 - 172 - 172 - 172 - 136 - 171 - 166 - 136 - 165 - 135 - 166 - 135 - 166 - 136 - 172 - 128 - 123 - 92 - 87 - 122 - 93 - 122 - 93 - 129 - 129 - 122 - 93 - 123 - 86 - 87 - 128 - 86 - 44 - 86 - 86 - 130 - 171 - 172 - 173 - 171 - 123 - 93 - 165 - 93 - 123 - 128 - 87 - 128 - 129 - 123 - 129 - 129 - 122 - 86 - 86 - 129 - 208 - 173 - 172 - 208 - 178 - 166 - 171 - 123 - 171 - 166 - 172 - 172 - 165 - 136 - 165 - 172 - 165 - 166 - 135 - 123 - 128 - 123 - 129 - 165 - 135 - 166 - 165 - 172 - 172 - 172 - 208 - 172 - 172 - 172 - 129 - 86 - 86 - 86 - 80 - 122 - 86 - 86 - 129 - 86 - 86 - 80 - 50 - 80 - 50 - 79 - 87 - 86 - 129 - 123 - 93 - 86 - 51 - 87 - 44 - 51 - 87 - 44 - 86 - 51 - 45 - 50 - 9 - 51 - 50 - 45 - 51 - 50 - 43 - 43 - 1 - 43 - 0 - 43 - 37 - 7 - 37 - 6 - 37 - 43 - 50 - 86 - 129 - 166 - 172 - 179 - 208 - 173 - 215 - 215 - 209 - 215 - 215 - 215 - 179 - 209 - 214 - 173 - 173 - 208 - 172 - 136 - 166 - 172 - 130 - 129 - 129 - 86 - 80 - 86 - 92 - 123 - 136 - 172 - 208 - 179 - 209 - 178 - 172 - 208 - 173 - 172 - 172 - 135 - 172 - 172 - 165 - 136 - 165 - 136 - 166 - 172 - 172 - 135 - 166 - 135 - 130 - 164 - 93 - 122 - 86 - 93 - 129 - 129 - 130 - 129 - 166 - 172 - 129 - 129 - 86 - 37 - 50 - 122 - 172 - 179 - 172 - 214 - 130 - 86 - 123 - 92 - 123 - 86 - 93 - 128 - 123 - 129 - 129 - 129 - 165 - 129 - 80 - 85 - 86 - 129 - 208 - 172 - 208 - 172 - 172 - 208 - 172 - 172 - 173 - 207 - 172 - 172 - 165 - 172 - 172 - 172 - 166 - 171 - 166 - 135 - 129 - 130 - 158 - 129 - 130 - 208 - 172 - 172 - 172 - 172 - 165 - 172 - 172 - 123 - 128 - 86 - 123 - 86 - 122 - 128 - 87 - 129 - 86 - 86 - 122 - 50 - 80 - 86 - 43 - 87 - 128 - 129 - 87 - 93 - 123 - 50 - 80 - 44 - 49 - 51 - 81 - 50 - 15 - 81 - 51 - 14 - 45 - 51 - 50 - 45 - 51 - 43 - 43 - 43 - 43 - 43 - 37 - 7 - 36 - 7 - 37 - 6 - 37 - 86 - 87 - 165 - 137 - 208 - 179 - 209 - 215 - 215 - 172 - 215 - 215 - 209 - 179 - 209 - 179 - 172 - 209 - 172 - 173 - 172 - 172 - 165 - 136 - 172 - 130 - 122 - 50 - 80 - 49 - 80 - 86 - 87 - 171 - 172 - 173 - 178 - 209 - 178 - 209 - 172 - 172 - 171 - 130 - 172 - 214 - 173 - 214 - 172 - 173 - 172 - 178 - 209 - 172 - 178 - 172 - 173 - 172 - 171 - 129 - 166 - 171 - 173 - 178 - 172 - 209 - 179 - 208 - 172 - 130 - 86 - 44 - 43 - 129 - 172 - 172 - 215 - 215 - 86 - 80 - 93 - 122 - 92 - 86 - 86 - 122 - 93 - 123 - 128 - 129 - 165 - 87 - 129 - 122 - 43 - 86 - 129 - 165 - 172 - 172 - 165 - 172 - 208 - 173 - 208 - 178 - 208 - 172 - 208 - 172 - 171 - 166 - 172 - 129 - 172 - 165 - 166 - 171 - 172 - 130 - 171 - 172 - 208 - 172 - 166 - 171 - 166 - 135 - 165 - 129 - 123 - 129 - 165 - 129 - 129 - 165 - 129 - 129 - 129 - 123 - 86 - 86 - 50 - 80 - 86 - 86 - 129 - 123 - 130 - 86 - 44 - 43 - 44 - 50 - 45 - 51 - 87 - 52 - 45 - 50 - 51 - 45 - 51 - 44 - 51 - 14 - 45 - 43 - 86 - 43 - 43 - 37 - 43 - 7 - 37 - 0 - 43 - 7 - 79 - 44 - 129 - 129 - 172 - 209 - 179 - 209 - 215 - 214 - 173 - 215 - 215 - 173 - 215 - 215 - 172 - 173 - 172 - 173 - 166 - 171 - 172 - 172 - 131 - 171 - 166 - 93 - 80 - 86 - 43 - 86 - 86 - 123 - 172 - 172 - 178 - 173 - 208 - 179 - 172 - 172 - 166 - 135 - 172 - 215 - 172 - 172 - 208 - 179 - 208 - 172 - 179 - 172 - 208 - 179 - 172 - 208 - 172 - 172 - 173 - 178 - 208 - 215 - 179 - 209 - 215 - 215 - 165 - 130 - 129 - 86 - 7 - 44 - 129 - 208 - 215 - 179 - 172 - 86 - 86 - 87 - 128 - 123 - 93 - 86 - 122 - 128 - 86 - 123 - 129 - 165 - 129 - 129 - 122 - 86 - 43 - 86 - 122 - 129 - 129 - 166 - 135 - 166 - 208 - 178 - 209 - 172 - 215 - 208 - 173 - 208 - 172 - 214 - 172 - 209 - 172 - 214 - 166 - 136 - 207 - 166 - 179 - 208 - 172 - 172 - 165 - 172 - 129 - 165 - 129 - 129 - 165 - 129 - 129 - 172 - 172 - 165 - 129 - 123 - 86 - 86 - 44 - 86 - 79 - 93 - 129 - 129 - 124 - 86 - 43 - 44 - 43 - 1 - 44 - 86 - 50 - 45 - 51 - 51 - 51 - 51 - 44 - 51 - 15 - 44 - 51 - 45 - 49 - 80 - 49 - 80 - 43 - 1 - 43 - 43 - 43 - 37 - 7 - 44 - 86 - 123 - 171 - 173 - 173 - 215 - 215 - 208 - 179 - 215 - 209 - 215 - 179 - 209 - 215 - 172 - 172 - 166 - 172 - 135 - 172 - 173 - 165 - 136 - 130 - 165 - 92 - 87 - 122 - 93 - 123 - 129 - 87 - 135 - 165 - 172 - 172 - 173 - 172 - 172 - 135 - 166 - 172 - 172 - 172 - 172 - 178 - 172 - 172 - 173 - 208 - 178 - 173 - 208 - 179 - 214 - 173 - 214 - 172 - 172 - 172 - 172 - 215 - 209 - 215 - 215 - 173 - 215 - 165 - 87 - 86 - 86 - 123 - 172 - 178 - 215 - 209 - 86 - 86 - 92 - 123 - 128 - 130 - 129 - 86 - 128 - 87 - 128 - 87 - 122 - 129 - 165 - 129 - 172 - 86 - 86 - 80 - 128 - 123 - 129 - 171 - 130 - 165 - 172 - 172 - 172 - 208 - 172 - 172 - 208 - 172 - 172 - 209 - 214 - 172 - 208 - 166 - 178 - 172 - 172 - 208 - 172 - 172 - 165 - 172 - 172 - 166 - 207 - 172 - 130 - 171 - 172 - 166 - 171 - 172 - 165 - 172 - 165 - 93 - 86 - 79 - 43 - 44 - 123 - 129 - 130 - 171 - 87 - 86 - 37 - 43 - 44 - 43 - 44 - 51 - 44 - 51 - 51 - 51 - 51 - 51 - 45 - 51 - 51 - 8 - 51 - 50 - 80 - 50 - 80 - 49 - 44 - 79 - 37 - 7 - 43 - 37 - 43 - 50 - 86 - 123 - 172 - 172 - 215 - 173 - 215 - 215 - 173 - 215 - 215 - 172 - 215 - 173 - 215 - 173 - 172 - 172 - 166 - 173 - 172 - 129 - 130 - 129 - 129 - 166 - 129 - 130 - 129 - 129 - 87 - 86 - 85 - 87 - 129 - 172 - 166 - 178 - 129 - 166 - 135 - 172 - 172 - 171 - 130 - 172 - 172 - 172 - 172 - 172 - 172 - 214 - 172 - 215 - 173 - 214 - 173 - 214 - 172 - 172 - 173 - 214 - 215 - 209 - 215 - 179 - 209 - 129 - 129 - 44 - 86 - 172 - 172 - 215 - 173 - 214 - 130 - 86 - 86 - 129 - 129 - 129 - 129 - 87 - 128 - 80 - 86 - 128 - 87 - 128 - 129 - 130 - 158 - 136 - 122 - 86 - 86 - 129 - 123 - 129 - 129 - 165 - 129 - 171 - 130 - 171 - 166 - 208 - 172 - 172 - 208 - 179 - 215 - 209 - 214 - 172 - 166 - 172 - 208 - 171 - 173 - 214 - 172 - 208 - 172 - 172 - 172 - 166 - 172 - 172 - 165 - 179 - 208 - 171 - 166 - 172 - 129 - 165 - 129 - 44 - 43 - 80 - 86 - 92 - 130 - 167 - 171 - 129 - 44 - 79 - 37 - 43 - 44 - 50 - 87 - 44 - 15 - 51 - 51 - 52 - 51 - 51 - 51 - 51 - 44 - 51 - 51 - 43 - 80 - 49 - 80 - 49 - 43 - 44 - 37 - 43 - 43 - 43 - 80 - 92 - 130 - 172 - 172 - 209 - 215 - 179 - 215 - 209 - 179 - 215 - 208 - 179 - 209 - 172 - 172 - 172 - 172 - 172 - 165 - 173 - 136 - 172 - 130 - 165 - 136 - 129 - 123 - 92 - 124 - 86 - 50 - 79 - 93 - 129 - 164 - 172 - 136 - 172 - 172 - 172 - 172 - 208 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 179 - 208 - 173 - 214 - 172 - 209 - 179 - 215 - 214 - 179 - 208 - 173 - 171 - 87 - 86 - 86 - 123 - 129 - 129 - 166 - 172 - 172 - 172 - 93 - 85 - 123 - 129 - 129 - 129 - 86 - 129 - 86 - 86 - 122 - 86 - 92 - 123 - 129 - 129 - 122 - 129 - 129 - 86 - 123 - 128 - 129 - 129 - 123 - 129 - 129 - 171 - 130 - 165 - 129 - 129 - 165 - 172 - 172 - 209 - 172 - 208 - 172 - 172 - 178 - 202 - 172 - 172 - 172 - 208 - 172 - 208 - 214 - 209 - 172 - 172 - 171 - 166 - 172 - 208 - 172 - 208 - 172 - 136 - 165 - 129 - 123 - 85 - 44 - 85 - 81 - 129 - 172 - 130 - 129 - 171 - 80 - 80 - 7 - 43 - 43 - 81 - 50 - 51 - 45 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 45 - 49 - 43 - 80 - 49 - 44 - 80 - 43 - 44 - 43 - 43 - 44 - 85 - 87 - 172 - 172 - 173 - 215 - 179 - 209 - 215 - 179 - 209 - 215 - 179 - 209 - 179 - 172 - 173 - 171 - 167 - 135 - 130 - 172 - 129 - 136 - 130 - 136 - 129 - 123 - 93 - 87 - 129 - 123 - 86 - 86 - 93 - 123 - 129 - 135 - 172 - 129 - 172 - 209 - 172 - 172 - 171 - 136 - 172 - 166 - 172 - 172 - 178 - 166 - 172 - 172 - 178 - 172 - 209 - 214 - 173 - 215 - 215 - 215 - 214 - 130 - 122 - 86 - 123 - 128 - 129 - 166 - 173 - 171 - 130 - 136 - 165 - 172 - 123 - 92 - 86 - 130 - 128 - 123 - 129 - 92 - 87 - 86 - 128 - 86 - 86 - 80 - 128 - 87 - 165 - 92 - 123 - 129 - 129 - 129 - 129 - 129 - 123 - 165 - 129 - 165 - 135 - 165 - 130 - 165 - 129 - 128 - 166 - 172 - 208 - 208 - 178 - 209 - 208 - 172 - 208 - 130 - 207 - 172 - 209 - 172 - 208 - 171 - 209 - 214 - 173 - 172 - 201 - 172 - 208 - 172 - 172 - 172 - 202 - 129 - 128 - 80 - 86 - 43 - 86 - 122 - 130 - 172 - 172 - 129 - 165 - 86 - 1 - 43 - 37 - 86 - 8 - 86 - 51 - 51 - 51 - 51 - 51 - 51 - 45 - 51 - 51 - 51 - 51 - 51 - 86 - 87 - 86 - 50 - 86 - 43 - 43 - 44 - 43 - 8 - 49 - 87 - 129 - 166 - 178 - 173 - 179 - 215 - 173 - 179 - 215 - 173 - 215 - 215 - 173 - 215 - 137 - 208 - 136 - 167 - 135 - 130 - 130 - 135 - 130 - 93 - 94 - 129 - 93 - 87 - 87 - 130 - 86 - 86 - 86 - 87 - 128 - 129 - 130 - 171 - 136 - 172 - 173 - 165 - 136 - 165 - 130 - 135 - 172 - 166 - 171 - 172 - 171 - 172 - 172 - 172 - 209 - 178 - 209 - 214 - 209 - 135 - 123 - 122 - 129 - 86 - 172 - 165 - 172 - 172 - 172 - 165 - 172 - 129 - 123 - 129 - 129 - 122 - 93 - 123 - 129 - 135 - 87 - 128 - 123 - 86 - 50 - 79 - 93 - 122 - 86 - 86 - 129 - 129 - 129 - 87 - 129 - 129 - 165 - 171 - 166 - 136 - 171 - 166 - 165 - 171 - 166 - 135 - 165 - 130 - 165 - 208 - 172 - 209 - 214 - 172 - 202 - 172 - 208 - 165 - 129 - 129 - 165 - 208 - 172 - 171 - 166 - 165 - 172 - 172 - 165 - 208 - 172 - 172 - 172 - 208 - 172 - 208 - 129 - 122 - 44 - 79 - 86 - 86 - 123 - 135 - 172 - 166 - 165 - 136 - 43 - 37 - 42 - 43 - 44 - 80 - 50 - 52 - 87 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 43 - 44 - 79 - 44 - 49 - 44 - 50 - 80 - 50 - 86 - 86 - 129 - 136 - 166 - 179 - 209 - 179 - 179 - 209 - 178 - 215 - 173 - 215 - 172 - 215 - 173 - 179 - 172 - 166 - 136 - 136 - 166 - 129 - 136 - 94 - 130 - 130 - 136 - 93 - 87 - 87 - 86 - 87 - 87 - 86 - 86 - 86 - 86 - 129 - 93 - 165 - 172 - 172 - 129 - 129 - 166 - 135 - 172 - 166 - 172 - 135 - 172 - 172 - 172 - 173 - 208 - 178 - 209 - 172 - 165 - 129 - 123 - 92 - 123 - 171 - 166 - 172 - 172 - 171 - 172 - 166 - 171 - 166 - 129 - 123 - 128 - 93 - 165 - 129 - 135 - 129 - 165 - 93 - 122 - 86 - 87 - 49 - 80 - 86 - 92 - 86 - 92 - 123 - 86 - 172 - 129 - 129 - 129 - 129 - 166 - 171 - 172 - 172 - 172 - 166 - 171 - 172 - 165 - 129 - 165 - 166 - 172 - 207 - 172 - 209 - 215 - 215 - 208 - 165 - 172 - 128 - 159 - 129 - 172 - 208 - 172 - 202 - 172 - 171 - 166 - 171 - 166 - 172 - 208 - 171 - 166 - 172 - 165 - 123 - 122 - 43 - 79 - 86 - 129 - 129 - 165 - 172 - 166 - 129 - 165 - 43 - 43 - 43 - 43 - 44 - 87 - 44 - 51 - 87 - 51 - 51 - 51 - 51 - 15 - 51 - 51 - 51 - 51 - 45 - 85 - 44 - 49 - 44 - 43 - 43 - 43 - 44 - 43 - 43 - 50 - 87 - 135 - 173 - 172 - 173 - 215 - 172 - 179 - 215 - 173 - 179 - 173 - 214 - 173 - 179 - 172 - 172 - 136 - 166 - 135 - 130 - 172 - 94 - 135 - 131 - 136 - 93 - 129 - 87 - 93 - 86 - 88 - 128 - 87 - 86 - 86 - 79 - 50 - 86 - 123 - 128 - 93 - 130 - 165 - 135 - 166 - 172 - 135 - 172 - 172 - 172 - 173 - 214 - 173 - 172 - 171 - 130 - 122 - 86 - 86 - 165 - 166 - 172 - 171 - 130 - 171 - 172 - 208 - 172 - 173 - 172 - 172 - 165 - 171 - 130 - 165 - 136 - 172 - 172 - 165 - 136 - 122 - 87 - 128 - 86 - 86 - 44 - 86 - 86 - 86 - 128 - 87 - 92 - 165 - 93 - 129 - 164 - 130 - 165 - 172 - 172 - 166 - 172 - 171 - 130 - 171 - 166 - 129 - 128 - 165 - 166 - 172 - 208 - 129 - 208 - 208 - 172 - 208 - 172 - 166 - 171 - 166 - 171 - 209 - 208 - 208 - 172 - 214 - 166 - 208 - 172 - 202 - 135 - 165 - 166 - 128 - 165 - 87 - 79 - 43 - 79 - 92 - 123 - 165 - 130 - 171 - 129 - 166 - 129 - 43 - 43 - 43 - 43 - 80 - 50 - 87 - 50 - 51 - 87 - 51 - 51 - 15 - 51 - 51 - 51 - 51 - 51 - 45 - 86 - 43 - 43 - 50 - 43 - 44 - 86 - 43 - 44 - 50 - 86 - 87 - 129 - 136 - 172 - 172 - 173 - 179 - 173 - 208 - 179 - 173 - 178 - 209 - 179 - 172 - 172 - 172 - 130 - 136 - 130 - 171 - 130 - 136 - 130 - 100 - 129 - 94 - 130 - 92 - 88 - 86 - 87 - 129 - 123 - 92 - 86 - 86 - 87 - 122 - 93 - 129 - 165 - 130 - 135 - 172 - 166 - 172 - 172 - 214 - 172 - 179 - 209 - 178 - 171 - 166 - 86 - 122 - 87 - 171 - 172 - 208 - 208 - 172 - 172 - 172 - 208 - 172 - 171 - 166 - 172 - 171 - 166 - 136 - 208 - 172 - 171 - 172 - 209 - 172 - 136 - 165 - 92 - 86 - 87 - 86 - 86 - 80 - 86 - 49 - 80 - 86 - 93 - 122 - 93 - 122 - 93 - 129 - 123 - 171 - 166 - 172 - 171 - 208 - 136 - 166 - 171 - 165 - 129 - 166 - 165 - 172 - 208 - 172 - 208 - 208 - 165 - 136 - 208 - 208 - 172 - 165 - 166 - 171 - 166 - 172 - 208 - 171 - 202 - 172 - 172 - 165 - 129 - 165 - 208 - 129 - 165 - 123 - 86 - 79 - 79 - 86 - 86 - 129 - 165 - 129 - 166 - 135 - 165 - 123 - 43 - 43 - 43 - 43 - 80 - 50 - 87 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 45 - 51 - 51 - 51 - 51 - 50 - 43 - 44 - 43 - 43 - 49 - 44 - 43 - 44 - 43 - 43 - 86 - 93 - 129 - 166 - 178 - 172 - 173 - 172 - 215 - 173 - 178 - 173 - 179 - 208 - 173 - 172 - 136 - 172 - 130 - 130 - 135 - 130 - 136 - 136 - 130 - 94 - 129 - 94 - 86 - 87 - 86 - 88 - 92 - 123 - 129 - 93 - 86 - 79 - 50 - 122 - 93 - 123 - 135 - 165 - 172 - 135 - 208 - 173 - 178 - 215 - 208 - 172 - 172 - 130 - 171 - 172 - 130 - 171 - 166 - 214 - 209 - 215 - 172 - 172 - 172 - 208 - 172 - 208 - 172 - 172 - 166 - 172 - 208 - 178 - 209 - 215 - 172 - 178 - 208 - 172 - 123 - 93 - 86 - 86 - 122 - 43 - 86 - 50 - 79 - 43 - 50 - 122 - 86 - 129 - 93 - 122 - 50 - 80 - 128 - 129 - 166 - 172 - 208 - 172 - 165 - 136 - 171 - 166 - 165 - 165 - 165 - 136 - 165 - 172 - 208 - 209 - 207 - 166 - 214 - 166 - 172 - 165 - 166 - 171 - 172 - 208 - 202 - 172 - 171 - 166 - 165 - 122 - 123 - 129 - 165 - 123 - 122 - 85 - 43 - 80 - 122 - 86 - 129 - 129 - 129 - 165 - 166 - 171 - 86 - 43 - 43 - 79 - 44 - 43 - 87 - 50 - 51 - 51 - 87 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 45 - 49 - 43 - 44 - 43 - 50 - 43 - 44 - 43 - 50 - 43 - 80 - 50 - 86 - 93 - 87 - 172 - 136 - 172 - 136 - 172 - 173 - 172 - 173 - 208 - 179 - 166 - 136 - 172 - 172 - 172 - 136 - 172 - 130 - 135 - 172 - 94 - 136 - 94 - 123 - 94 - 86 - 87 - 86 - 87 - 129 - 129 - 129 - 87 - 128 - 92 - 86 - 86 - 86 - 87 - 165 - 136 - 172 - 172 - 215 - 215 - 173 - 178 - 172 - 172 - 209 - 172 - 214 - 208 - 173 - 214 - 208 - 172 - 208 - 172 - 172 - 215 - 172 - 172 - 166 - 172 - 214 - 208 - 215 - 215 - 208 - 179 - 209 - 214 - 209 - 172 - 135 - 86 - 86 - 93 - 80 - 86 - 86 - 49 - 123 - 49 - 43 - 122 - 93 - 86 - 79 - 93 - 123 - 86 - 86 - 92 - 166 - 128 - 173 - 171 - 166 - 172 - 165 - 172 - 165 - 129 - 165 - 172 - 208 - 166 - 172 - 165 - 208 - 172 - 208 - 208 - 172 - 208 - 166 - 171 - 166 - 207 - 172 - 166 - 171 - 166 - 122 - 129 - 165 - 129 - 123 - 122 - 116 - 49 - 79 - 79 - 80 - 92 - 123 - 129 - 129 - 122 - 172 - 172 - 129 - 79 - 80 - 49 - 43 - 80 - 50 - 87 - 86 - 50 - 52 - 51 - 51 - 51 - 51 - 51 - 87 - 51 - 51 - 51 - 51 - 43 - 43 - 44 - 43 - 43 - 80 - 50 - 43 - 43 - 44 - 86 - 50 - 86 - 129 - 130 - 135 - 167 - 136 - 172 - 136 - 172 - 173 - 172 - 179 - 172 - 172 - 172 - 137 - 166 - 136 - 171 - 130 - 137 - 130 - 172 - 101 - 130 - 99 - 123 - 93 - 87 - 51 - 86 - 122 - 129 - 130 - 129 - 171 - 130 - 129 - 129 - 86 - 86 - 128 - 129 - 130 - 172 - 208 - 179 - 209 - 214 - 215 - 172 - 215 - 209 - 178 - 172 - 172 - 166 - 172 - 208 - 214 - 173 - 208 - 172 - 214 - 173 - 208 - 172 - 201 - 172 - 215 - 173 - 214 - 215 - 208 - 179 - 209 - 214 - 173 - 135 - 122 - 86 - 86 - 50 - 86 - 122 - 44 - 86 - 86 - 86 - 43 - 86 - 87 - 122 - 93 - 122 - 50 - 43 - 122 - 129 - 123 - 171 - 172 - 172 - 172 - 165 - 172 - 129 - 159 - 171 - 165 - 166 - 171 - 172 - 209 - 207 - 130 - 165 - 171 - 166 - 172 - 207 - 209 - 208 - 172 - 165 - 165 - 166 - 171 - 129 - 165 - 129 - 159 - 122 - 87 - 86 - 79 - 79 - 79 - 43 - 123 - 128 - 87 - 122 - 129 - 171 - 129 - 123 - 43 - 79 - 43 - 86 - 44 - 86 - 86 - 87 - 51 - 56 - 51 - 51 - 87 - 51 - 51 - 51 - 87 - 51 - 51 - 52 - 36 - 43 - 7 - 43 - 43 - 44 - 79 - 50 - 44 - 50 - 86 - 87 - 86 - 129 - 136 - 130 - 136 - 171 - 167 - 172 - 178 - 173 - 172 - 179 - 173 - 173 - 172 - 172 - 172 - 172 - 130 - 171 - 136 - 173 - 136 - 136 - 130 - 136 - 87 - 130 - 86 - 50 - 86 - 87 - 86 - 129 - 166 - 135 - 172 - 172 - 129 - 129 - 129 - 128 - 129 - 129 - 173 - 178 - 209 - 214 - 173 - 215 - 215 - 215 - 179 - 208 - 214 - 172 - 209 - 172 - 208 - 172 - 172 - 172 - 172 - 215 - 172 - 165 - 172 - 172 - 208 - 173 - 214 - 215 - 208 - 215 - 209 - 178 - 215 - 172 - 166 - 93 - 122 - 86 - 86 - 86 - 50 - 85 - 129 - 86 - 44 - 86 - 86 - 85 - 86 - 129 - 129 - 86 - 43 - 79 - 86 - 129 - 166 - 172 - 172 - 172 - 165 - 172 - 122 - 129 - 166 - 165 - 129 - 171 - 202 - 214 - 166 - 172 - 208 - 165 - 172 - 165 - 172 - 208 - 165 - 172 - 166 - 171 - 165 - 129 - 208 - 123 - 129 - 165 - 122 - 86 - 116 - 86 - 43 - 86 - 122 - 86 - 123 - 128 - 130 - 129 - 165 - 129 - 122 - 50 - 79 - 44 - 85 - 44 - 122 - 93 - 51 - 51 - 93 - 51 - 51 - 87 - 50 - 51 - 51 - 86 - 51 - 51 - 86 - 7 - 36 - 7 - 37 - 7 - 43 - 44 - 85 - 44 - 43 - 87 - 50 - 128 - 124 - 135 - 130 - 136 - 129 - 172 - 136 - 173 - 215 - 172 - 179 - 172 - 172 - 173 - 172 - 172 - 173 - 172 - 172 - 179 - 173 - 142 - 173 - 136 - 130 - 129 - 94 - 86 - 51 - 86 - 80 - 86 - 129 - 172 - 172 - 172 - 179 - 166 - 171 - 130 - 129 - 129 - 171 - 172 - 172 - 172 - 209 - 178 - 215 - 209 - 178 - 215 - 209 - 178 - 208 - 173 - 208 - 178 - 166 - 208 - 172 - 214 - 209 - 172 - 172 - 165 - 172 - 179 - 208 - 215 - 208 - 215 - 208 - 215 - 172 - 215 - 172 - 129 - 129 - 86 - 87 - 86 - 91 - 123 - 43 - 129 - 86 - 43 - 80 - 86 - 50 - 122 - 92 - 123 - 93 - 86 - 79 - 86 - 80 - 135 - 208 - 171 - 166 - 172 - 129 - 165 - 129 - 123 - 165 - 165 - 129 - 171 - 166 - 172 - 208 - 165 - 172 - 166 - 207 - 130 - 171 - 202 - 171 - 129 - 165 - 165 - 130 - 171 - 159 - 129 - 123 - 164 - 86 - 87 - 116 - 86 - 122 - 86 - 122 - 93 - 122 - 165 - 136 - 165 - 129 - 122 - 44 - 85 - 80 - 85 - 87 - 86 - 93 - 87 - 51 - 86 - 57 - 51 - 87 - 51 - 51 - 86 - 87 - 51 - 87 - 51 - 43 - 7 - 36 - 7 - 43 - 37 - 7 - 50 - 44 - 43 - 86 - 50 - 86 - 123 - 93 - 166 - 135 - 130 - 136 - 172 - 215 - 172 - 215 - 173 - 179 - 172 - 172 - 179 - 172 - 172 - 179 - 215 - 215 - 215 - 179 - 131 - 100 - 165 - 100 - 131 - 86 - 86 - 44 - 86 - 44 - 128 - 130 - 171 - 130 - 172 - 136 - 165 - 130 - 171 - 129 - 172 - 172 - 172 - 172 - 208 - 179 - 215 - 172 - 215 - 172 - 215 - 208 - 179 - 208 - 172 - 166 - 172 - 214 - 209 - 178 - 208 - 172 - 166 - 172 - 171 - 173 - 208 - 215 - 208 - 215 - 208 - 179 - 172 - 215 - 171 - 129 - 87 - 85 - 86 - 87 - 129 - 129 - 86 - 80 - 86 - 43 - 43 - 50 - 86 - 123 - 128 - 93 - 129 - 86 - 79 - 43 - 43 - 129 - 166 - 171 - 166 - 172 - 165 - 129 - 165 - 129 - 159 - 129 - 165 - 129 - 165 - 165 - 135 - 202 - 172 - 165 - 172 - 165 - 172 - 208 - 165 - 123 - 129 - 165 - 165 - 130 - 171 - 123 - 128 - 86 - 123 - 122 - 122 - 87 - 165 - 123 - 92 - 123 - 129 - 164 - 130 - 129 - 128 - 87 - 85 - 80 - 86 - 87 - 122 - 87 - 50 - 128 - 51 - 87 - 57 - 87 - 51 - 93 - 87 - 51 - 87 - 93 - 87 - 93 - 43 - 1 - 43 - 43 - 1 - 43 - 43 - 43 - 44 - 43 - 14 - 80 - 86 - 93 - 93 - 130 - 130 - 130 - 171 - 172 - 179 - 173 - 215 - 173 - 178 - 173 - 172 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 136 - 129 - 130 - 172 - 129 - 129 - 87 - 43 - 44 - 86 - 86 - 129 - 136 - 172 - 166 - 214 - 172 - 215 - 172 - 179 - 215 - 208 - 173 - 214 - 209 - 215 - 215 - 208 - 214 - 173 - 214 - 209 - 172 - 172 - 214 - 166 - 172 - 214 - 172 - 209 - 172 - 172 - 165 - 172 - 166 - 171 - 215 - 172 - 215 - 209 - 215 - 208 - 178 - 209 - 135 - 123 - 86 - 86 - 93 - 122 - 129 - 129 - 93 - 80 - 49 - 43 - 79 - 50 - 80 - 86 - 129 - 171 - 129 - 86 - 43 - 43 - 79 - 44 - 171 - 166 - 171 - 166 - 171 - 166 - 129 - 129 - 122 - 130 - 165 - 165 - 166 - 171 - 129 - 166 - 171 - 165 - 165 - 130 - 207 - 172 - 202 - 135 - 166 - 122 - 129 - 166 - 165 - 128 - 87 - 122 - 122 - 87 - 128 - 123 - 165 - 129 - 129 - 129 - 129 - 129 - 129 - 165 - 86 - 44 - 86 - 86 - 86 - 123 - 86 - 86 - 87 - 57 - 87 - 93 - 87 - 93 - 93 - 87 - 93 - 87 - 130 - 86 - 94 - 93 - 79 - 43 - 43 - 7 - 37 - 43 - 7 - 43 - 44 - 43 - 50 - 86 - 44 - 129 - 87 - 130 - 135 - 167 - 172 - 173 - 178 - 215 - 172 - 215 - 179 - 172 - 179 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 93 - 86 - 122 - 130 - 136 - 129 - 86 - 43 - 79 - 86 - 93 - 166 - 172 - 172 - 178 - 172 - 215 - 208 - 172 - 215 - 214 - 209 - 178 - 208 - 215 - 209 - 215 - 172 - 215 - 172 - 208 - 172 - 209 - 171 - 172 - 172 - 209 - 172 - 208 - 214 - 166 - 172 - 172 - 172 - 172 - 172 - 208 - 215 - 208 - 215 - 215 - 172 - 172 - 129 - 129 - 86 - 86 - 87 - 128 - 129 - 129 - 87 - 128 - 80 - 43 - 79 - 86 - 85 - 87 - 129 - 172 - 159 - 128 - 50 - 79 - 37 - 43 - 128 - 129 - 166 - 172 - 135 - 166 - 135 - 159 - 93 - 122 - 129 - 166 - 135 - 166 - 172 - 171 - 166 - 165 - 172 - 129 - 166 - 135 - 166 - 171 - 129 - 160 - 129 - 129 - 129 - 165 - 129 - 86 - 122 - 93 - 122 - 129 - 129 - 123 - 128 - 87 - 129 - 129 - 171 - 123 - 92 - 80 - 86 - 86 - 86 - 93 - 86 - 87 - 86 - 86 - 93 - 87 - 129 - 93 - 130 - 129 - 129 - 93 - 129 - 129 - 93 - 130 - 79 - 43 - 44 - 79 - 7 - 43 - 43 - 43 - 8 - 43 - 50 - 86 - 87 - 93 - 123 - 136 - 130 - 172 - 172 - 173 - 179 - 179 - 214 - 209 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 129 - 7 - 43 - 87 - 165 - 172 - 172 - 86 - 43 - 49 - 87 - 122 - 136 - 165 - 178 - 173 - 172 - 208 - 179 - 208 - 215 - 208 - 215 - 208 - 215 - 179 - 209 - 215 - 214 - 208 - 209 - 178 - 172 - 166 - 172 - 208 - 178 - 209 - 172 - 172 - 172 - 208 - 172 - 166 - 171 - 172 - 209 - 214 - 215 - 209 - 214 - 172 - 172 - 129 - 87 - 85 - 87 - 128 - 130 - 129 - 135 - 166 - 122 - 86 - 86 - 79 - 86 - 43 - 122 - 129 - 172 - 129 - 172 - 80 - 42 - 37 - 43 - 43 - 129 - 165 - 172 - 165 - 129 - 172 - 166 - 128 - 129 - 166 - 165 - 171 - 130 - 129 - 208 - 136 - 166 - 171 - 166 - 129 - 129 - 165 - 130 - 128 - 123 - 129 - 171 - 129 - 165 - 87 - 79 - 128 - 87 - 129 - 122 - 129 - 129 - 123 - 93 - 171 - 129 - 130 - 128 - 86 - 80 - 86 - 86 - 93 - 86 - 86 - 87 - 92 - 123 - 129 - 130 - 129 - 136 - 130 - 130 - 135 - 130 - 130 - 136 - 129 - 129 - 44 - 85 - 80 - 50 - 43 - 43 - 44 - 36 - 44 - 50 - 50 - 50 - 87 - 129 - 130 - 131 - 171 - 137 - 171 - 173 - 172 - 215 - 179 - 172 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 93 - 43 - 79 - 50 - 123 - 178 - 172 - 129 - 86 - 80 - 43 - 86 - 129 - 136 - 208 - 172 - 172 - 179 - 208 - 179 - 208 - 208 - 179 - 209 - 214 - 214 - 209 - 178 - 208 - 173 - 208 - 214 - 166 - 172 - 172 - 208 - 179 - 208 - 208 - 172 - 172 - 172 - 172 - 208 - 130 - 171 - 209 - 208 - 179 - 208 - 215 - 172 - 172 - 172 - 86 - 86 - 80 - 135 - 129 - 166 - 171 - 136 - 122 - 86 - 86 - 79 - 43 - 86 - 86 - 123 - 171 - 166 - 172 - 85 - 37 - 43 - 0 - 80 - 129 - 129 - 129 - 171 - 130 - 129 - 164 - 130 - 123 - 128 - 172 - 172 - 166 - 129 - 165 - 129 - 172 - 129 - 166 - 171 - 130 - 171 - 130 - 165 - 128 - 123 - 129 - 129 - 129 - 80 - 86 - 128 - 86 - 165 - 129 - 129 - 129 - 165 - 129 - 171 - 129 - 87 - 86 - 49 - 80 - 86 - 93 - 87 - 122 - 93 - 86 - 87 - 129 - 129 - 136 - 129 - 136 - 129 - 130 - 172 - 129 - 130 - 136 - 129 - 129 - 86 - 44 - 86 - 86 - 44 - 79 - 44 - 49 - 8 - 43 - 49 - 86 - 94 - 129 - 130 - 129 - 172 - 172 - 130 - 171 - 136 - 178 - 209 - 179 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 86 - 43 - 43 - 43 - 86 - 166 - 178 - 136 - 129 - 86 - 43 - 79 - 86 - 93 - 165 - 130 - 178 - 172 - 209 - 171 - 208 - 173 - 208 - 178 - 209 - 208 - 179 - 208 - 172 - 172 - 208 - 172 - 172 - 172 - 208 - 209 - 178 - 209 - 172 - 171 - 172 - 166 - 172 - 172 - 129 - 165 - 172 - 215 - 209 - 214 - 173 - 214 - 173 - 165 - 93 - 79 - 50 - 129 - 166 - 172 - 172 - 171 - 87 - 86 - 122 - 43 - 79 - 86 - 86 - 129 - 165 - 172 - 166 - 92 - 80 - 42 - 37 - 43 - 86 - 129 - 165 - 123 - 129 - 128 - 87 - 171 - 208 - 129 - 123 - 172 - 172 - 129 - 165 - 93 - 165 - 172 - 166 - 171 - 166 - 135 - 166 - 172 - 165 - 123 - 92 - 123 - 128 - 123 - 86 - 129 - 86 - 165 - 129 - 129 - 129 - 129 - 166 - 135 - 129 - 86 - 86 - 86 - 87 - 122 - 93 - 129 - 86 - 87 - 92 - 130 - 129 - 130 - 135 - 130 - 130 - 129 - 166 - 135 - 129 - 130 - 129 - 130 - 129 - 86 - 87 - 92 - 80 - 49 - 80 - 43 - 44 - 49 - 44 - 50 - 87 - 92 - 125 - 99 - 129 - 166 - 136 - 130 - 135 - 130 - 171 - 142 - 209 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 43 - 43 - 43 - 43 - 50 - 122 - 172 - 178 - 172 - 130 - 85 - 80 - 49 - 44 - 86 - 129 - 172 - 165 - 136 - 172 - 165 - 172 - 209 - 178 - 208 - 208 - 215 - 172 - 208 - 179 - 171 - 202 - 172 - 172 - 215 - 209 - 172 - 208 - 178 - 208 - 172 - 166 - 129 - 165 - 93 - 171 - 209 - 172 - 214 - 209 - 215 - 172 - 172 - 165 - 92 - 44 - 85 - 130 - 135 - 165 - 136 - 166 - 128 - 87 - 122 - 86 - 79 - 49 - 87 - 165 - 129 - 171 - 165 - 129 - 86 - 79 - 1 - 43 - 43 - 122 - 129 - 86 - 86 - 123 - 128 - 123 - 135 - 166 - 171 - 130 - 165 - 171 - 123 - 135 - 166 - 171 - 130 - 165 - 172 - 129 - 172 - 166 - 170 - 123 - 129 - 86 - 122 - 86 - 86 - 129 - 123 - 128 - 129 - 166 - 129 - 171 - 130 - 135 - 123 - 85 - 51 - 86 - 122 - 129 - 87 - 129 - 129 - 86 - 93 - 93 - 129 - 129 - 130 - 129 - 172 - 129 - 93 - 130 - 172 - 93 - 130 - 129 - 136 - 122 - 129 - 86 - 123 - 49 - 80 - 50 - 43 - 44 - 50 - 44 - 86 - 50 - 93 - 123 - 129 - 129 - 129 - 129 - 93 - 136 - 165 - 136 - 172 - 172 - 172 - 179 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 129 - 43 - 86 - 43 - 43 - 43 - 87 - 172 - 172 - 178 - 172 - 166 - 86 - 43 - 0 - 80 - 92 - 166 - 135 - 129 - 172 - 166 - 214 - 172 - 172 - 209 - 215 - 172 - 208 - 172 - 172 - 209 - 172 - 172 - 208 - 178 - 208 - 173 - 171 - 173 - 208 - 171 - 166 - 172 - 129 - 129 - 165 - 172 - 166 - 214 - 172 - 173 - 214 - 172 - 129 - 44 - 85 - 87 - 129 - 172 - 171 - 129 - 129 - 123 - 128 - 87 - 85 - 86 - 79 - 87 - 165 - 86 - 172 - 129 - 129 - 122 - 122 - 7 - 37 - 42 - 80 - 86 - 86 - 122 - 86 - 122 - 129 - 129 - 172 - 165 - 166 - 171 - 130 - 129 - 165 - 129 - 165 - 129 - 129 - 172 - 172 - 202 - 135 - 172 - 123 - 128 - 123 - 92 - 129 - 165 - 129 - 165 - 129 - 166 - 171 - 178 - 166 - 135 - 123 - 86 - 86 - 50 - 122 - 92 - 123 - 93 - 128 - 87 - 128 - 87 - 129 - 130 - 93 - 136 - 165 - 136 - 130 - 129 - 172 - 130 - 136 - 135 - 166 - 136 - 86 - 129 - 123 - 86 - 86 - 86 - 43 - 50 - 43 - 44 - 49 - 44 - 51 - 86 - 86 - 87 - 92 - 129 - 93 - 86 - 134 - 93 - 129 - 136 - 171 - 130 - 141 - 171 - 178 - 177 - 215 - 215 - 215 - 215 - 215 - 129 - 43 - 44 - 85 - 43 - 43 - 86 - 129 - 173 - 208 - 171 - 136 - 123 - 85 - 50 - 44 - 86 - 128 - 130 - 129 - 166 - 172 - 208 - 171 - 172 - 172 - 209 - 172 - 208 - 179 - 208 - 172 - 208 - 165 - 178 - 173 - 208 - 172 - 172 - 202 - 172 - 171 - 172 - 130 - 165 - 129 - 129 - 165 - 172 - 136 - 201 - 173 - 171 - 136 - 123 - 49 - 86 - 86 - 166 - 172 - 135 - 123 - 129 - 87 - 128 - 122 - 44 - 86 - 79 - 86 - 122 - 92 - 129 - 166 - 128 - 129 - 123 - 43 - 42 - 37 - 86 - 43 - 86 - 79 - 43 - 85 - 123 - 123 - 128 - 130 - 171 - 129 - 129 - 165 - 130 - 171 - 166 - 129 - 129 - 129 - 165 - 172 - 166 - 171 - 129 - 130 - 128 - 165 - 123 - 129 - 129 - 129 - 165 - 130 - 172 - 171 - 172 - 129 - 86 - 123 - 86 - 91 - 87 - 129 - 129 - 92 - 87 - 86 - 93 - 87 - 128 - 129 - 130 - 129 - 172 - 130 - 136 - 172 - 129 - 173 - 135 - 172 - 166 - 136 - 128 - 87 - 129 - 86 - 86 - 86 - 44 - 44 - 49 - 44 - 44 - 50 - 49 - 80 - 50 - 87 - 85 - 93 - 86 - 91 - 87 - 92 - 128 - 129 - 135 - 129 - 134 - 135 - 134 - 171 - 178 - 215 - 215 - 215 - 215 - 129 - 43 - 86 - 44 - 85 - 44 - 43 - 92 - 166 - 172 - 172 - 172 - 129 - 92 - 86 - 80 - 49 - 86 - 129 - 129 - 165 - 172 - 166 - 172 - 135 - 166 - 172 - 171 - 208 - 172 - 209 - 172 - 172 - 171 - 166 - 172 - 214 - 173 - 208 - 172 - 165 - 172 - 172 - 166 - 129 - 129 - 129 - 165 - 129 - 129 - 165 - 172 - 129 - 129 - 86 - 43 - 92 - 123 - 129 - 171 - 130 - 122 - 86 - 86 - 86 - 122 - 86 - 86 - 43 - 86 - 122 - 86 - 129 - 165 - 172 - 123 - 129 - 85 - 43 - 1 - 79 - 43 - 79 - 86 - 43 - 80 - 128 - 129 - 129 - 129 - 129 - 165 - 129 - 166 - 129 - 172 - 165 - 165 - 129 - 130 - 171 - 129 - 166 - 172 - 165 - 171 - 129 - 166 - 172 - 129 - 165 - 129 - 129 - 165 - 172 - 172 - 129 - 129 - 86 - 87 - 129 - 128 - 87 - 129 - 129 - 86 - 129 - 44 - 86 - 86 - 87 - 93 - 171 - 130 - 136 - 172 - 172 - 137 - 172 - 172 - 130 - 173 - 171 - 136 - 129 - 129 - 86 - 123 - 86 - 50 - 86 - 44 - 50 - 43 - 44 - 50 - 49 - 79 - 50 - 49 - 80 - 86 - 50 - 86 - 91 - 86 - 92 - 91 - 92 - 91 - 128 - 97 - 128 - 140 - 177 - 215 - 214 - 215 - 215 - 129 - 49 - 80 - 50 - 85 - 44 - 79 - 86 - 129 - 172 - 172 - 172 - 129 - 129 - 86 - 50 - 79 - 86 - 93 - 123 - 128 - 166 - 172 - 172 - 129 - 165 - 129 - 136 - 165 - 208 - 172 - 166 - 136 - 171 - 209 - 172 - 208 - 172 - 208 - 172 - 165 - 172 - 166 - 171 - 130 - 129 - 128 - 166 - 129 - 122 - 129 - 136 - 122 - 129 - 86 - 7 - 86 - 123 - 128 - 172 - 130 - 85 - 50 - 79 - 86 - 79 - 44 - 122 - 86 - 86 - 86 - 85 - 80 - 172 - 172 - 165 - 129 - 86 - 79 - 37 - 43 - 42 - 43 - 80 - 85 - 87 - 122 - 129 - 129 - 165 - 129 - 172 - 129 - 172 - 129 - 165 - 136 - 172 - 166 - 171 - 208 - 172 - 166 - 135 - 172 - 166 - 165 - 135 - 166 - 208 - 129 - 171 - 130 - 165 - 172 - 172 - 129 - 86 - 86 - 123 - 92 - 130 - 129 - 129 - 129 - 129 - 86 - 44 - 49 - 86 - 87 - 129 - 130 - 172 - 136 - 173 - 173 - 172 - 178 - 172 - 173 - 172 - 173 - 173 - 165 - 93 - 122 - 87 - 86 - 86 - 86 - 50 - 80 - 7 - 50 - 44 - 50 - 80 - 49 - 50 - 85 - 50 - 86 - 91 - 49 - 92 - 86 - 92 - 91 - 128 - 91 - 97 - 128 - 140 - 177 - 215 - 214 - 215 - 215 - 172 - 79 - 86 - 50 - 86 - 86 - 44 - 85 - 123 - 136 - 172 - 171 - 166 - 129 - 92 - 87 - 86 - 86 - 122 - 93 - 165 - 172 - 172 - 165 - 130 - 128 - 166 - 171 - 166 - 136 - 171 - 166 - 171 - 166 - 178 - 209 - 129 - 172 - 172 - 172 - 208 - 165 - 172 - 136 - 165 - 129 - 165 - 128 - 123 - 86 - 129 - 128 - 87 - 86 - 86 - 43 - 86 - 129 - 130 - 129 - 171 - 87 - 86 - 86 - 79 - 86 - 36 - 86 - 86 - 86 - 122 - 86 - 80 - 171 - 172 - 129 - 129 - 123 - 86 - 43 - 86 - 43 - 43 - 79 - 79 - 87 - 122 - 86 - 129 - 128 - 166 - 172 - 165 - 135 - 166 - 129 - 171 - 208 - 166 - 172 - 172 - 171 - 172 - 166 - 172 - 172 - 172 - 165 - 129 - 172 - 129 - 165 - 172 - 171 - 130 - 129 - 122 - 92 - 123 - 86 - 129 - 129 - 129 - 136 - 129 - 129 - 86 - 92 - 87 - 87 - 129 - 129 - 172 - 136 - 172 - 173 - 172 - 173 - 178 - 173 - 173 - 178 - 173 - 172 - 129 - 129 - 123 - 86 - 87 - 86 - 86 - 86 - 44 - 49 - 8 - 43 - 50 - 86 - 86 - 49 - 86 - 86 - 56 - 85 - 92 - 85 - 55 - 86 - 91 - 127 - 98 - 134 - 97 - 171 - 177 - 214 - 215 - 215 - 215 - 172 - 86 - 86 - 50 - 79 - 87 - 85 - 86 - 87 - 129 - 172 - 172 - 172 - 171 - 87 - 129 - 92 - 87 - 128 - 123 - 172 - 171 - 172 - 165 - 129 - 130 - 165 - 172 - 172 - 172 - 201 - 172 - 136 - 165 - 172 - 208 - 166 - 172 - 135 - 166 - 214 - 166 - 172 - 165 - 129 - 129 - 171 - 87 - 85 - 80 - 93 - 122 - 86 - 86 - 86 - 43 - 129 - 129 - 165 - 130 - 135 - 123 - 86 - 122 - 86 - 86 - 79 - 86 - 86 - 122 - 86 - 129 - 80 - 129 - 135 - 165 - 129 - 165 - 87 - 86 - 85 - 80 - 43 - 86 - 79 - 86 - 86 - 129 - 122 - 129 - 129 - 166 - 171 - 130 - 171 - 166 - 171 - 172 - 166 - 129 - 172 - 207 - 172 - 166 - 172 - 208 - 172 - 171 - 172 - 172 - 165 - 166 - 171 - 130 - 129 - 122 - 93 - 86 - 129 - 86 - 129 - 129 - 135 - 130 - 171 - 129 - 130 - 93 - 130 - 130 - 129 - 172 - 172 - 137 - 172 - 172 - 173 - 215 - 173 - 208 - 179 - 173 - 208 - 179 - 129 - 123 - 92 - 87 - 122 - 86 - 86 - 44 - 49 - 44 - 7 - 44 - 50 - 92 - 50 - 85 - 50 - 85 - 55 - 85 - 92 - 49 - 85 - 55 - 92 - 127 - 98 - 133 - 141 - 140 - 178 - 214 - 215 - 214 - 215 - 172 - 129 - 86 - 86 - 86 - 86 - 86 - 50 - 86 - 122 - 136 - 172 - 172 - 165 - 130 - 129 - 128 - 87 - 128 - 129 - 172 - 165 - 130 - 171 - 172 - 166 - 165 - 172 - 172 - 129 - 172 - 172 - 165 - 172 - 166 - 171 - 172 - 172 - 172 - 165 - 136 - 165 - 172 - 130 - 165 - 135 - 123 - 50 - 79 - 86 - 50 - 80 - 85 - 86 - 86 - 123 - 128 - 129 - 129 - 165 - 129 - 86 - 129 - 122 - 129 - 80 - 86 - 85 - 86 - 86 - 123 - 129 - 79 - 87 - 170 - 129 - 166 - 129 - 165 - 129 - 86 - 122 - 86 - 86 - 86 - 79 - 129 - 122 - 93 - 129 - 159 - 135 - 166 - 172 - 165 - 129 - 172 - 208 - 172 - 171 - 166 - 172 - 172 - 208 - 172 - 172 - 172 - 172 - 165 - 122 - 172 - 172 - 208 - 129 - 123 - 86 - 92 - 87 - 129 - 93 - 165 - 129 - 136 - 172 - 172 - 172 - 137 - 172 - 136 - 166 - 136 - 173 - 136 - 173 - 178 - 173 - 179 - 215 - 173 - 215 - 173 - 173 - 214 - 173 - 129 - 129 - 123 - 122 - 86 - 51 - 85 - 44 - 44 - 43 - 7 - 50 - 49 - 86 - 92 - 50 - 85 - 50 - 85 - 56 - 85 - 49 - 92 - 49 - 91 - 134 - 134 - 140 - 140 - 135 - 177 - 214 - 215 - 215 - 215 - 215 - 172 - 86 - 129 - 86 - 86 - 50 - 86 - 79 - 87 - 129 - 171 - 172 - 129 - 129 - 172 - 129 - 129 - 129 - 129 - 130 - 165 - 135 - 166 - 172 - 165 - 129 - 172 - 166 - 172 - 172 - 207 - 166 - 135 - 208 - 166 - 172 - 172 - 165 - 136 - 165 - 172 - 129 - 129 - 129 - 123 - 92 - 80 - 43 - 49 - 44 - 79 - 86 - 86 - 129 - 122 - 172 - 123 - 128 - 172 - 129 - 86 - 123 - 122 - 92 - 80 - 86 - 43 - 79 - 86 - 122 - 93 - 79 - 86 - 129 - 159 - 135 - 166 - 129 - 128 - 129 - 123 - 85 - 87 - 122 - 85 - 87 - 122 - 86 - 129 - 165 - 129 - 172 - 172 - 165 - 129 - 208 - 172 - 172 - 172 - 172 - 208 - 166 - 171 - 172 - 208 - 172 - 166 - 171 - 166 - 172 - 172 - 129 - 165 - 87 - 128 - 129 - 94 - 129 - 165 - 137 - 172 - 179 - 214 - 173 - 179 - 173 - 215 - 179 - 173 - 173 - 143 - 172 - 173 - 209 - 179 - 173 - 215 - 173 - 215 - 173 - 179 - 172 - 209 - 93 - 129 - 122 - 123 - 86 - 50 - 80 - 49 - 7 - 43 - 8 - 44 - 49 - 86 - 92 - 49 - 86 - 49 - 50 - 49 - 85 - 49 - 55 - 85 - 129 - 134 - 135 - 141 - 141 - 177 - 177 - 214 - 215 - 215 - 215 - 215 - 215 - 129 - 86 - 92 - 86 - 86 - 86 - 44 - 122 - 86 - 93 - 172 - 172 - 172 - 129 - 166 - 129 - 135 - 129 - 129 - 165 - 130 - 165 - 172 - 129 - 172 - 165 - 172 - 171 - 172 - 166 - 171 - 166 - 172 - 171 - 172 - 166 - 129 - 165 - 136 - 172 - 123 - 129 - 129 - 92 - 86 - 86 - 80 - 49 - 43 - 44 - 122 - 129 - 129 - 129 - 164 - 130 - 86 - 129 - 122 - 86 - 123 - 86 - 122 - 86 - 43 - 43 - 43 - 86 - 165 - 86 - 79 - 86 - 86 - 123 - 92 - 165 - 129 - 165 - 129 - 129 - 80 - 86 - 122 - 86 - 86 - 122 - 93 - 165 - 171 - 166 - 172 - 129 - 171 - 166 - 172 - 172 - 172 - 208 - 172 - 172 - 208 - 172 - 172 - 172 - 173 - 208 - 214 - 173 - 172 - 171 - 123 - 129 - 122 - 93 - 129 - 130 - 135 - 173 - 215 - 173 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 215 - 179 - 173 - 179 - 173 - 179 - 209 - 179 - 215 - 173 - 173 - 215 - 173 - 173 - 179 - 86 - 123 - 86 - 122 - 86 - 50 - 86 - 43 - 7 - 37 - 8 - 49 - 87 - 50 - 92 - 86 - 50 - 50 - 85 - 49 - 49 - 85 - 56 - 128 - 128 - 136 - 135 - 177 - 141 - 178 - 178 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 93 - 123 - 128 - 87 - 86 - 86 - 85 - 86 - 87 - 172 - 172 - 172 - 171 - 130 - 165 - 93 - 129 - 165 - 129 - 129 - 172 - 165 - 136 - 202 - 171 - 172 - 166 - 135 - 172 - 166 - 171 - 166 - 129 - 172 - 172 - 165 - 165 - 130 - 171 - 130 - 128 - 130 - 128 - 87 - 86 - 86 - 49 - 80 - 86 - 129 - 129 - 123 - 128 - 165 - 130 - 86 - 122 - 86 - 85 - 123 - 86 - 86 - 86 - 86 - 79 - 37 - 86 - 128 - 123 - 49 - 79 - 86 - 123 - 86 - 93 - 165 - 122 - 129 - 129 - 86 - 79 - 87 - 122 - 92 - 165 - 123 - 172 - 129 - 172 - 172 - 165 - 172 - 166 - 171 - 172 - 208 - 173 - 214 - 172 - 208 - 172 - 173 - 208 - 214 - 215 - 166 - 172 - 171 - 129 - 129 - 123 - 129 - 122 - 93 - 136 - 208 - 179 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 215 - 179 - 179 - 215 - 173 - 179 - 179 - 173 - 215 - 179 - 173 - 179 - 209 - 179 - 172 - 173 - 86 - 86 - 79 - 51 - 122 - 87 - 49 - 44 - 43 - 0 - 8 - 50 - 85 - 87 - 49 - 87 - 49 - 50 - 91 - 49 - 49 - 85 - 92 - 129 - 136 - 135 - 177 - 136 - 178 - 177 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 171 - 129 - 87 - 129 - 86 - 86 - 86 - 86 - 129 - 130 - 172 - 172 - 171 - 130 - 128 - 93 - 165 - 165 - 136 - 165 - 129 - 172 - 207 - 173 - 171 - 166 - 135 - 172 - 166 - 172 - 165 - 129 - 171 - 130 - 172 - 165 - 129 - 166 - 135 - 130 - 128 - 86 - 93 - 86 - 86 - 80 - 49 - 123 - 129 - 129 - 165 - 135 - 166 - 122 - 93 - 122 - 43 - 86 - 86 - 122 - 129 - 79 - 86 - 87 - 42 - 43 - 80 - 86 - 86 - 79 - 86 - 165 - 86 - 129 - 166 - 92 - 122 - 123 - 86 - 85 - 87 - 122 - 129 - 129 - 165 - 136 - 165 - 172 - 172 - 208 - 172 - 172 - 172 - 165 - 172 - 215 - 172 - 208 - 165 - 172 - 130 - 171 - 172 - 166 - 135 - 130 - 129 - 129 - 123 - 128 - 129 - 130 - 171 - 173 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 215 - 179 - 215 - 173 - 179 - 215 - 173 - 215 - 173 - 179 - 173 - 172 - 179 - 173 - 79 - 43 - 44 - 79 - 93 - 122 - 50 - 80 - 7 - 43 - 7 - 50 - 51 - 86 - 87 - 50 - 85 - 92 - 50 - 86 - 92 - 49 - 129 - 134 - 136 - 136 - 172 - 141 - 142 - 177 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 129 - 129 - 92 - 123 - 86 - 128 - 87 - 129 - 129 - 215 - 165 - 136 - 122 - 93 - 165 - 172 - 166 - 171 - 129 - 166 - 135 - 172 - 166 - 171 - 208 - 130 - 165 - 172 - 165 - 129 - 166 - 171 - 136 - 164 - 129 - 166 - 135 - 130 - 122 - 92 - 86 - 86 - 86 - 44 - 86 - 122 - 136 - 165 - 129 - 207 - 130 - 165 - 92 - 123 - 43 - 79 - 86 - 86 - 165 - 50 - 122 - 86 - 79 - 43 - 86 - 86 - 43 - 79 - 86 - 166 - 129 - 129 - 129 - 165 - 122 - 93 - 79 - 86 - 165 - 129 - 129 - 129 - 129 - 166 - 129 - 172 - 208 - 172 - 172 - 208 - 172 - 172 - 166 - 172 - 172 - 172 - 165 - 135 - 129 - 165 - 130 - 93 - 165 - 129 - 129 - 87 - 129 - 129 - 129 - 172 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 179 - 215 - 179 - 173 - 215 - 179 - 179 - 173 - 179 - 173 - 173 - 179 - 173 - 43 - 42 - 38 - 49 - 122 - 87 - 86 - 86 - 50 - 2 - 49 - 43 - 50 - 86 - 93 - 50 - 86 - 50 - 92 - 86 - 92 - 86 - 129 - 135 - 130 - 177 - 136 - 135 - 142 - 141 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 123 - 92 - 129 - 123 - 92 - 87 - 128 - 129 - 172 - 172 - 172 - 129 - 172 - 166 - 171 - 172 - 166 - 129 - 165 - 136 - 165 - 172 - 172 - 172 - 165 - 172 - 129 - 172 - 129 - 165 - 130 - 165 - 135 - 165 - 129 - 123 - 93 - 86 - 79 - 86 - 86 - 43 - 86 - 86 - 87 - 129 - 165 - 129 - 172 - 171 - 166 - 86 - 122 - 43 - 43 - 86 - 122 - 129 - 80 - 49 - 86 - 80 - 43 - 79 - 86 - 79 - 43 - 79 - 166 - 135 - 123 - 171 - 129 - 123 - 129 - 86 - 129 - 165 - 129 - 129 - 129 - 165 - 129 - 165 - 172 - 166 - 178 - 202 - 172 - 171 - 172 - 172 - 172 - 202 - 171 - 130 - 165 - 129 - 93 - 128 - 87 - 128 - 93 - 122 - 93 - 129 - 129 - 129 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 215 - 215 - 173 - 179 - 179 - 173 - 179 - 173 - 179 - 173 - 137 - 173 - 42 - 37 - 43 - 49 - 80 - 93 - 86 - 86 - 44 - 50 - 43 - 7 - 87 - 86 - 51 - 86 - 50 - 87 - 92 - 86 - 93 - 92 - 92 - 130 - 171 - 136 - 135 - 141 - 136 - 177 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 129 - 129 - 129 - 86 - 129 - 86 - 93 - 129 - 165 - 172 - 171 - 173 - 171 - 172 - 129 - 166 - 171 - 166 - 135 - 166 - 172 - 172 - 172 - 201 - 172 - 166 - 171 - 129 - 129 - 129 - 166 - 165 - 93 - 129 - 128 - 123 - 93 - 79 - 50 - 43 - 86 - 44 - 85 - 129 - 123 - 129 - 129 - 171 - 166 - 128 - 122 - 87 - 85 - 43 - 43 - 122 - 123 - 49 - 37 - 79 - 49 - 44 - 79 - 43 - 86 - 79 - 44 - 128 - 129 - 123 - 135 - 123 - 122 - 129 - 129 - 128 - 130 - 165 - 129 - 129 - 165 - 129 - 129 - 172 - 208 - 172 - 172 - 172 - 172 - 166 - 171 - 166 - 172 - 165 - 135 - 123 - 130 - 128 - 129 - 87 - 92 - 129 - 86 - 129 - 93 - 172 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 173 - 215 - 137 - 179 - 173 - 173 - 136 - 179 - 173 - 137 - 137 - 79 - 7 - 37 - 79 - 50 - 86 - 86 - 87 - 44 - 49 - 44 - 7 - 50 - 86 - 93 - 86 - 50 - 86 - 87 - 55 - 87 - 128 - 100 - 129 - 172 - 135 - 177 - 135 - 135 - 142 - 179 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 130 - 128 - 129 - 123 - 93 - 122 - 93 - 165 - 136 - 165 - 172 - 136 - 165 - 129 - 165 - 130 - 171 - 166 - 172 - 172 - 171 - 208 - 172 - 166 - 135 - 166 - 171 - 130 - 122 - 172 - 165 - 129 - 129 - 129 - 129 - 129 - 80 - 50 - 85 - 44 - 79 - 50 - 129 - 129 - 166 - 128 - 129 - 129 - 129 - 80 - 122 - 86 - 43 - 43 - 86 - 122 - 43 - 43 - 1 - 79 - 43 - 79 - 43 - 86 - 79 - 44 - 86 - 122 - 128 - 129 - 86 - 123 - 129 - 165 - 129 - 129 - 129 - 123 - 92 - 165 - 123 - 171 - 172 - 166 - 172 - 171 - 172 - 208 - 130 - 171 - 166 - 135 - 166 - 129 - 129 - 129 - 92 - 123 - 92 - 130 - 129 - 93 - 135 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 173 - 215 - 179 - 173 - 173 - 179 - 137 - 172 - 173 - 137 - 136 - 137 - 136 - 137 - 79 - 36 - 7 - 43 - 79 - 44 - 92 - 81 - 49 - 44 - 50 - 44 - 86 - 87 - 51 - 86 - 50 - 92 - 87 - 56 - 122 - 93 - 134 - 136 - 171 - 136 - 177 - 135 - 99 - 178 - 177 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 135 - 166 - 129 - 93 - 129 - 122 - 129 - 129 - 129 - 129 - 136 - 172 - 166 - 171 - 172 - 165 - 130 - 171 - 166 - 172 - 172 - 208 - 172 - 172 - 172 - 172 - 165 - 172 - 129 - 165 - 136 - 165 - 129 - 166 - 92 - 129 - 123 - 92 - 85 - 80 - 50 - 86 - 79 - 87 - 129 - 170 - 123 - 129 - 129 - 129 - 122 - 80 - 49 - 79 - 44 - 85 - 79 - 43 - 43 - 37 - 42 - 44 - 43 - 42 - 80 - 79 - 50 - 79 - 86 - 80 - 86 - 122 - 93 - 165 - 135 - 123 - 165 - 86 - 122 - 129 - 129 - 129 - 166 - 171 - 172 - 165 - 172 - 172 - 172 - 130 - 171 - 166 - 129 - 171 - 123 - 129 - 129 - 86 - 93 - 86 - 165 - 135 - 172 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 215 - 173 - 173 - 179 - 172 - 173 - 143 - 130 - 173 - 136 - 137 - 136 - 130 - 100 - 79 - 43 - 1 - 43 - 80 - 49 - 87 - 86 - 44 - 50 - 43 - 50 - 51 - 86 - 87 - 50 - 86 - 87 - 56 - 122 - 93 - 93 - 129 - 172 - 135 - 172 - 135 - 141 - 135 - 135 - 178 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 166 - 129 - 93 - 128 - 123 - 93 - 122 - 93 - 165 - 172 - 172 - 172 - 208 - 172 - 129 - 172 - 171 - 172 - 208 - 173 - 208 - 172 - 208 - 136 - 165 - 172 - 129 - 172 - 165 - 172 - 129 - 171 - 87 - 128 - 130 - 122 - 86 - 50 - 86 - 86 - 43 - 129 - 86 - 165 - 87 - 207 - 136 - 122 - 86 - 86 - 79 - 44 - 79 - 49 - 79 - 43 - 43 - 37 - 43 - 79 - 43 - 1 - 85 - 43 - 86 - 80 - 43 - 79 - 86 - 86 - 129 - 165 - 129 - 129 - 123 - 92 - 123 - 128 - 129 - 165 - 166 - 172 - 172 - 165 - 172 - 129 - 172 - 172 - 166 - 171 - 129 - 129 - 129 - 129 - 123 - 86 - 92 - 136 - 129 - 179 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 215 - 173 - 173 - 179 - 173 - 137 - 178 - 131 - 137 - 136 - 136 - 94 - 136 - 130 - 100 - 80 - 49 - 38 - 42 - 44 - 43 - 87 - 49 - 80 - 44 - 14 - 80 - 50 - 94 - 87 - 86 - 93 - 87 - 86 - 51 - 87 - 135 - 129 - 172 - 172 - 172 - 135 - 130 - 134 - 172 - 214 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 164 - 129 - 123 - 92 - 123 - 128 - 88 - 129 - 165 - 172 - 209 - 172 - 171 - 166 - 172 - 172 - 208 - 173 - 208 - 172 - 172 - 172 - 171 - 166 - 135 - 173 - 208 - 172 - 171 - 130 - 129 - 172 - 129 - 129 - 129 - 92 - 86 - 86 - 44 - 86 - 86 - 129 - 122 - 130 - 129 - 172 - 129 - 86 - 43 - 86 - 79 - 7 - 37 - 43 - 43 - 36 - 7 - 43 - 79 - 43 - 1 - 42 - 43 - 43 - 37 - 43 - 43 - 86 - 123 - 129 - 129 - 129 - 165 - 92 - 123 - 86 - 122 - 130 - 129 - 165 - 208 - 136 - 208 - 129 - 129 - 172 - 166 - 129 - 135 - 123 - 129 - 92 - 123 - 86 - 129 - 130 - 178 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 209 - 179 - 173 - 179 - 173 - 137 - 178 - 137 - 173 - 130 - 136 - 136 - 130 - 101 - 136 - 130 - 94 - 86 - 85 - 1 - 43 - 43 - 86 - 86 - 44 - 44 - 43 - 51 - 44 - 93 - 88 - 123 - 93 - 93 - 88 - 87 - 87 - 87 - 94 - 135 - 166 - 172 - 172 - 172 - 165 - 136 - 171 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 129 - 129 - 122 - 93 - 123 - 129 - 124 - 129 - 171 - 166 - 173 - 208 - 171 - 173 - 208 - 172 - 166 - 171 - 172 - 166 - 178 - 173 - 165 - 172 - 214 - 172 - 172 - 166 - 171 - 136 - 165 - 130 - 135 - 123 - 129 - 86 - 128 - 44 - 86 - 92 - 122 - 130 - 171 - 129 - 172 - 123 - 86 - 49 - 80 - 43 - 43 - 43 - 0 - 44 - 43 - 36 - 44 - 85 - 43 - 1 - 36 - 43 - 43 - 43 - 44 - 43 - 43 - 129 - 129 - 129 - 166 - 129 - 165 - 129 - 87 - 122 - 123 - 129 - 171 - 167 - 172 - 172 - 166 - 129 - 136 - 165 - 129 - 129 - 123 - 128 - 93 - 123 - 171 - 172 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 209 - 179 - 179 - 137 - 173 - 173 - 143 - 137 - 173 - 136 - 131 - 137 - 136 - 94 - 137 - 136 - 94 - 94 - 128 - 80 - 7 - 43 - 80 - 86 - 50 - 44 - 7 - 44 - 44 - 87 - 87 - 94 - 129 - 124 - 94 - 87 - 88 - 92 - 124 - 130 - 136 - 131 - 172 - 166 - 172 - 172 - 166 - 171 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 130 - 129 - 123 - 129 - 87 - 129 - 123 - 129 - 166 - 172 - 172 - 209 - 172 - 165 - 173 - 165 - 173 - 172 - 173 - 214 - 172 - 172 - 172 - 172 - 172 - 166 - 171 - 172 - 136 - 165 - 172 - 135 - 130 - 122 - 92 - 87 - 85 - 123 - 92 - 87 - 171 - 130 - 171 - 130 - 165 - 93 - 43 - 79 - 44 - 43 - 42 - 1 - 43 - 79 - 7 - 80 - 44 - 43 - 0 - 43 - 44 - 79 - 7 - 43 - 43 - 43 - 123 - 123 - 129 - 130 - 135 - 123 - 123 - 92 - 159 - 129 - 123 - 136 - 165 - 165 - 172 - 172 - 166 - 135 - 166 - 135 - 129 - 123 - 129 - 129 - 172 - 178 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 173 - 179 - 173 - 137 - 173 - 137 - 173 - 136 - 136 - 131 - 136 - 137 - 94 - 136 - 130 - 94 - 99 - 129 - 80 - 7 - 43 - 79 - 51 - 79 - 50 - 8 - 44 - 87 - 87 - 87 - 130 - 95 - 130 - 88 - 129 - 88 - 130 - 88 - 130 - 130 - 131 - 173 - 172 - 131 - 172 - 166 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 123 - 93 - 123 - 129 - 87 - 165 - 173 - 136 - 208 - 209 - 173 - 208 - 173 - 214 - 173 - 208 - 172 - 172 - 172 - 172 - 172 - 172 - 135 - 172 - 172 - 166 - 171 - 172 - 172 - 129 - 135 - 122 - 87 - 79 - 93 - 122 - 129 - 136 - 166 - 135 - 129 - 166 - 92 - 43 - 44 - 79 - 50 - 36 - 7 - 37 - 43 - 43 - 44 - 85 - 38 - 6 - 43 - 87 - 80 - 43 - 36 - 7 - 37 - 86 - 129 - 123 - 135 - 130 - 122 - 123 - 86 - 129 - 123 - 136 - 165 - 130 - 164 - 166 - 136 - 171 - 130 - 165 - 136 - 165 - 136 - 171 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 179 - 173 - 179 - 137 - 173 - 137 - 173 - 137 - 136 - 131 - 136 - 130 - 100 - 136 - 131 - 94 - 94 - 100 - 122 - 43 - 43 - 37 - 43 - 44 - 43 - 44 - 50 - 80 - 51 - 88 - 129 - 94 - 124 - 94 - 124 - 94 - 124 - 95 - 124 - 130 - 131 - 136 - 167 - 131 - 173 - 166 - 173 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 130 - 124 - 129 - 129 - 124 - 129 - 129 - 172 - 172 - 209 - 214 - 209 - 172 - 173 - 172 - 171 - 172 - 166 - 172 - 178 - 172 - 172 - 166 - 171 - 172 - 172 - 172 - 178 - 166 - 135 - 130 - 122 - 86 - 43 - 93 - 128 - 123 - 172 - 135 - 166 - 135 - 129 - 86 - 50 - 79 - 86 - 50 - 79 - 1 - 43 - 37 - 43 - 43 - 43 - 44 - 43 - 1 - 85 - 86 - 1 - 43 - 44 - 37 - 49 - 87 - 129 - 166 - 135 - 130 - 122 - 87 - 86 - 122 - 172 - 165 - 130 - 135 - 166 - 172 - 172 - 171 - 172 - 208 - 178 - 209 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 215 - 179 - 143 - 173 - 173 - 179 - 137 - 173 - 137 - 137 - 130 - 137 - 94 - 137 - 94 - 136 - 95 - 94 - 130 - 94 - 50 - 43 - 43 - 36 - 43 - 37 - 14 - 80 - 50 - 87 - 87 - 88 - 88 - 94 - 124 - 94 - 124 - 88 - 94 - 124 - 94 - 131 - 124 - 131 - 131 - 173 - 167 - 131 - 173 - 173 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 165 - 87 - 136 - 130 - 165 - 87 - 129 - 172 - 166 - 136 - 166 - 172 - 136 - 165 - 129 - 172 - 171 - 173 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 172 - 179 - 166 - 171 - 93 - 80 - 6 - 86 - 129 - 129 - 166 - 135 - 166 - 129 - 129 - 86 - 49 - 80 - 86 - 86 - 43 - 44 - 36 - 7 - 43 - 37 - 43 - 43 - 44 - 43 - 86 - 44 - 79 - 43 - 43 - 43 - 44 - 86 - 135 - 166 - 165 - 130 - 129 - 87 - 86 - 92 - 123 - 172 - 167 - 172 - 215 - 215 - 179 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 173 - 179 - 137 - 179 - 137 - 137 - 137 - 173 - 137 - 131 - 100 - 131 - 100 - 131 - 94 - 94 - 100 - 130 - 94 - 44 - 79 - 43 - 43 - 43 - 1 - 50 - 80 - 44 - 87 - 87 - 87 - 94 - 88 - 130 - 88 - 88 - 88 - 94 - 88 - 124 - 94 - 124 - 130 - 131 - 131 - 167 - 131 - 167 - 136 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 173 - 129 - 130 - 129 - 93 - 129 - 130 - 129 - 166 - 135 - 130 - 129 - 172 - 129 - 130 - 135 - 172 - 172 - 166 - 172 - 172 - 178 - 172 - 172 - 172 - 172 - 172 - 172 - 173 - 171 - 129 - 79 - 43 - 50 - 86 - 129 - 129 - 166 - 135 - 123 - 86 - 86 - 43 - 86 - 86 - 86 - 43 - 86 - 37 - 7 - 37 - 43 - 44 - 49 - 44 - 37 - 86 - 86 - 44 - 79 - 43 - 44 - 50 - 122 - 129 - 137 - 172 - 129 - 122 - 87 - 50 - 122 - 130 - 172 - 172 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 137 - 179 - 173 - 137 - 143 - 137 - 137 - 131 - 137 - 137 - 95 - 136 - 94 - 94 - 130 - 95 - 94 - 93 - 58 - 80 - 85 - 44 - 43 - 43 - 37 - 43 - 50 - 44 - 86 - 51 - 88 - 93 - 124 - 94 - 88 - 123 - 87 - 94 - 87 - 88 - 88 - 94 - 124 - 94 - 125 - 130 - 131 - 130 - 131 - 172 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 136 - 130 - 123 - 129 - 129 - 130 - 129 - 130 - 135 - 129 - 166 - 93 - 129 - 166 - 129 - 129 - 172 - 172 - 136 - 172 - 172 - 172 - 172 - 172 - 166 - 172 - 172 - 172 - 171 - 129 - 86 - 43 - 43 - 86 - 129 - 129 - 129 - 172 - 122 - 43 - 43 - 50 - 86 - 86 - 86 - 43 - 44 - 43 - 37 - 43 - 43 - 43 - 50 - 79 - 1 - 43 - 86 - 86 - 80 - 49 - 44 - 79 - 93 - 129 - 123 - 130 - 129 - 86 - 86 - 87 - 172 - 172 - 173 - 178 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 215 - 179 - 143 - 173 - 179 - 137 - 137 - 137 - 137 - 137 - 137 - 137 - 95 - 136 - 95 - 94 - 130 - 95 - 130 - 94 - 93 - 94 - 52 - 86 - 122 - 43 - 44 - 43 - 43 - 43 - 44 - 8 - 86 - 87 - 88 - 87 - 93 - 88 - 93 - 88 - 88 - 87 - 87 - 87 - 129 - 88 - 88 - 124 - 94 - 94 - 124 - 88 - 130 - 131 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 143 - 166 - 136 - 130 - 129 - 93 - 129 - 123 - 93 - 130 - 129 - 93 - 129 - 129 - 130 - 171 - 166 - 136 - 171 - 130 - 172 - 172 - 171 - 172 - 172 - 172 - 172 - 129 - 172 - 130 - 128 - 44 - 86 - 86 - 128 - 87 - 172 - 129 - 87 - 43 - 43 - 49 - 80 - 85 - 44 - 43 - 86 - 43 - 43 - 44 - 43 - 43 - 79 - 44 - 6 - 37 - 86 - 123 - 50 - 44 - 86 - 86 - 86 - 123 - 93 - 129 - 122 - 93 - 129 - 130 - 173 - 178 - 215 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 215 - 179 - 137 - 179 - 137 - 173 - 143 - 131 - 137 - 101 - 137 - 131 - 100 - 131 - 94 - 94 - 130 - 94 - 94 - 88 - 95 - 87 - 95 - 86 - 87 - 85 - 44 - 43 - 37 - 50 - 43 - 44 - 51 - 87 - 87 - 87 - 87 - 94 - 87 - 94 - 87 - 87 - 130 - 87 - 93 - 88 - 87 - 94 - 124 - 88 - 94 - 130 - 88 - 166 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 215 - 179 - 215 - 179 - 173 - 136 - 171 - 130 - 86 - 130 - 93 - 129 - 129 - 129 - 129 - 130 - 129 - 135 - 166 - 172 - 129 - 172 - 136 - 171 - 130 - 172 - 172 - 130 - 171 - 130 - 171 - 172 - 93 - 122 - 86 - 129 - 86 - 129 - 129 - 129 - 93 - 79 - 43 - 43 - 50 - 43 - 79 - 44 - 49 - 44 - 79 - 44 - 43 - 44 - 43 - 44 - 42 - 44 - 86 - 86 - 50 - 80 - 129 - 86 - 86 - 123 - 129 - 130 - 136 - 136 - 172 - 173 - 214 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 179 - 179 - 173 - 143 - 137 - 173 - 101 - 131 - 137 - 95 - 136 - 94 - 95 - 130 - 94 - 94 - 94 - 89 - 93 - 52 - 93 - 88 - 58 - 122 - 86 - 86 - 43 - 43 - 44 - 43 - 44 - 43 - 51 - 86 - 87 - 87 - 51 - 93 - 86 - 93 - 87 - 94 - 129 - 87 - 129 - 94 - 87 - 88 - 94 - 94 - 87 - 130 - 94 - 137 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 215 - 179 - 179 - 215 - 215 - 179 - 215 - 173 - 136 - 129 - 128 - 130 - 93 - 129 - 129 - 93 - 129 - 129 - 129 - 129 - 172 - 129 - 136 - 166 - 171 - 136 - 166 - 135 - 166 - 136 - 165 - 136 - 165 - 129 - 93 - 122 - 129 - 130 - 129 - 171 - 129 - 93 - 43 - 43 - 43 - 86 - 44 - 49 - 43 - 80 - 43 - 50 - 80 - 43 - 44 - 43 - 43 - 43 - 44 - 86 - 86 - 80 - 50 - 128 - 87 - 123 - 172 - 135 - 166 - 136 - 215 - 179 - 215 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 179 - 137 - 179 - 137 - 137 - 137 - 137 - 131 - 101 - 130 - 94 - 101 - 130 - 94 - 94 - 94 - 89 - 94 - 87 - 95 - 88 - 93 - 52 - 123 - 86 - 50 - 43 - 44 - 43 - 37 - 43 - 50 - 45 - 86 - 93 - 86 - 50 - 87 - 93 - 93 - 87 - 135 - 94 - 87 - 93 - 93 - 94 - 94 - 94 - 93 - 94 - 130 - 130 - 131 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 137 - 178 - 179 - 173 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 179 - 172 - 172 - 166 - 129 - 129 - 93 - 123 - 92 - 129 - 129 - 130 - 129 - 165 - 135 - 130 - 129 - 172 - 129 - 129 - 166 - 129 - 172 - 129 - 129 - 123 - 92 - 122 - 129 - 130 - 129 - 172 - 129 - 92 - 80 - 43 - 43 - 49 - 87 - 86 - 43 - 50 - 79 - 43 - 86 - 50 - 80 - 43 - 43 - 43 - 44 - 86 - 86 - 44 - 86 - 92 - 130 - 172 - 167 - 172 - 208 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 179 - 173 - 143 - 173 - 137 - 137 - 179 - 131 - 101 - 137 - 94 - 130 - 95 - 94 - 100 - 88 - 94 - 57 - 124 - 93 - 52 - 93 - 87 - 87 - 51 - 122 - 51 - 44 - 85 - 7 - 37 - 7 - 44 - 85 - 51 - 122 - 87 - 56 - 50 - 87 - 93 - 51 - 135 - 93 - 94 - 129 - 94 - 93 - 94 - 93 - 129 - 100 - 94 - 130 - 137 - 130 - 167 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 143 - 173 - 179 - 137 - 179 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 129 - 130 - 129 - 135 - 123 - 129 - 129 - 129 - 130 - 129 - 171 - 172 - 172 - 130 - 129 - 129 - 172 - 172 - 172 - 129 - 129 - 123 - 86 - 87 - 128 - 136 - 130 - 129 - 129 - 50 - 43 - 86 - 50 - 123 - 86 - 43 - 43 - 50 - 44 - 50 - 43 - 44 - 50 - 79 - 7 - 80 - 86 - 86 - 87 - 129 - 173 - 209 - 215 - 215 - 178 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 143 - 173 - 137 - 173 - 137 - 101 - 137 - 131 - 100 - 95 - 130 - 94 - 94 - 94 - 93 - 52 - 94 - 93 - 88 - 93 - 87 - 51 - 87 - 93 - 87 - 87 - 86 - 44 - 49 - 44 - 43 - 43 - 43 - 44 - 50 - 86 - 87 - 86 - 93 - 50 - 87 - 93 - 92 - 93 - 94 - 93 - 129 - 100 - 129 - 93 - 94 - 94 - 130 - 100 - 136 - 131 - 172 - 131 - 209 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 173 - 173 - 172 - 143 - 173 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 172 - 173 - 136 - 136 - 129 - 130 - 129 - 130 - 136 - 179 - 173 - 215 - 172 - 131 - 171 - 172 - 173 - 179 - 166 - 129 - 129 - 86 - 93 - 86 - 130 - 171 - 130 - 129 - 51 - 85 - 44 - 80 - 50 - 86 - 43 - 44 - 49 - 44 - 86 - 50 - 43 - 79 - 50 - 43 - 44 - 123 - 135 - 166 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 143 - 173 - 143 - 173 - 137 - 137 - 131 - 101 - 94 - 130 - 94 - 94 - 94 - 93 - 52 - 93 - 51 - 87 - 51 - 51 - 51 - 93 - 87 - 86 - 51 - 87 - 86 - 51 - 86 - 43 - 80 - 49 - 44 - 7 - 44 - 44 - 86 - 86 - 129 - 86 - 93 - 87 - 93 - 92 - 87 - 93 - 129 - 100 - 94 - 129 - 93 - 57 - 87 - 93 - 93 - 94 - 130 - 136 - 130 - 131 - 136 - 131 - 172 - 179 - 173 - 215 - 179 - 173 - 137 - 136 - 166 - 143 - 173 - 143 - 179 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 137 - 172 - 137 - 172 - 179 - 215 - 173 - 179 - 215 - 179 - 173 - 173 - 178 - 172 - 173 - 129 - 136 - 130 - 136 - 129 - 123 - 93 - 130 - 129 - 86 - 50 - 43 - 86 - 44 - 86 - 86 - 49 - 50 - 43 - 86 - 50 - 43 - 44 - 86 - 50 - 165 - 179 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 173 - 137 - 137 - 130 - 137 - 94 - 94 - 94 - 94 - 93 - 94 - 88 - 94 - 57 - 87 - 51 - 87 - 57 - 51 - 51 - 87 - 86 - 86 - 57 - 87 - 87 - 87 - 86 - 50 - 86 - 43 - 44 - 43 - 43 - 44 - 86 - 50 - 87 - 129 - 93 - 87 - 93 - 92 - 87 - 93 - 93 - 130 - 99 - 129 - 86 - 57 - 51 - 86 - 50 - 93 - 88 - 93 - 94 - 94 - 130 - 124 - 100 - 131 - 130 - 137 - 136 - 131 - 136 - 129 - 137 - 130 - 179 - 173 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 173 - 179 - 215 - 179 - 179 - 179 - 215 - 173 - 179 - 179 - 179 - 173 - 172 - 136 - 179 - 173 - 172 - 136 - 129 - 130 - 172 - 93 - 129 - 129 - 87 - 136 - 129 - 136 - 165 - 129 - 93 - 86 - 93 - 92 - 86 - 92 - 129 - 172 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 173 - 137 - 172 - 101 - 130 - 94 - 94 - 88 - 94 - 94 - 94 - 129 - 100 - 87 - 57 - 93 - 87 - 51 - 57 - 87 - 51 - 93 - 86 - 87 - 87 - 93 - 86 - 93 - 86 - 80 - 50 - 43 - 44 - 49 - 44 - 43 - 86 - 50 - 122 - 93 - 87 - 129 - 93 - 86 - 93 - 129 - 94 - 129 - 93 - 93 - 86 - 51 - 50 - 44 - 51 - 50 - 87 - 87 - 94 - 87 - 94 - 88 - 94 - 93 - 130 - 94 - 93 - 130 - 93 - 94 - 131 - 136 - 137 - 172 - 143 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 179 - 179 - 179 - 179 - 215 - 179 - 179 - 179 - 209 - 179 - 179 - 179 - 179 - 173 - 179 - 179 - 173 - 178 - 172 - 136 - 173 - 166 - 215 - 178 - 173 - 215 - 179 - 215 - 215 - 215 - 179 - 215 - 215 - 179 - 208 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 173 - 137 - 136 - 130 - 94 - 136 - 130 - 130 - 137 - 136 - 130 - 100 - 130 - 94 - 93 - 93 - 94 - 88 - 93 - 56 - 87 - 87 - 93 - 86 - 93 - 93 - 130 - 86 - 57 - 79 - 44 - 43 - 44 - 44 - 49 - 80 - 56 - 123 - 86 - 86 - 93 - 87 - 86 - 93 - 93 - 129 - 94 - 129 - 93 - 123 - 56 - 44 - 7 - 43 - 2 - 50 - 44 - 50 - 51 - 87 - 57 - 88 - 87 - 94 - 51 - 88 - 93 - 94 - 87 - 94 - 129 - 94 - 137 - 173 - 179 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 179 - 179 - 215 - 179 - 179 - 179 - 215 - 179 - 179 - 215 - 179 - 215 - 179 - 179 - 179 - 215 - 215 - 215 - 179 - 215 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 137 - 173 - 137 - 136 - 137 - 173 - 172 - 173 - 143 - 173 - 137 - 171 - 100 - 130 - 93 - 129 - 93 - 94 - 87 - 93 - 93 - 92 - 130 - 93 - 129 - 93 - 122 - 8 - 43 - 43 - 49 - 44 - 44 - 86 - 92 - 86 - 87 - 87 - 128 - 87 - 50 - 93 - 87 - 129 - 92 - 130 - 129 - 87 - 93 - 43 - 8 - 43 - 6 - 44 - 44 - 51 - 50 - 87 - 58 - 87 - 51 - 94 - 87 - 52 - 93 - 88 - 58 - 129 - 94 - 94 - 137 - 136 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 179 - 179 - 215 - 179 - 215 - 179 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 173 - 173 - 179 - 173 - 179 - 179 - 173 - 179 - 179 - 173 - 172 - 137 - 135 - 130 - 129 - 100 - 130 - 129 - 93 - 129 - 129 - 100 - 129 - 93 - 129 - 94 - 79 - 50 - 43 - 44 - 49 - 80 - 86 - 93 - 86 - 87 - 86 - 93 - 86 - 86 - 50 - 87 - 86 - 129 - 129 - 130 - 86 - 93 - 86 - 0 - 7 - 8 - 43 - 45 - 50 - 51 - 51 - 88 - 51 - 93 - 51 - 88 - 50 - 94 - 94 - 87 - 94 - 94 - 95 - 136 - 137 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 179 - 215 - 179 - 215 - 215 - 179 - 179 - 173 - 178 - 137 - 172 - 129 - 136 - 136 - 130 - 136 - 129 - 136 - 129 - 136 - 135 - 130 - 129 - 49 - 80 - 44 - 85 - 44 - 86 - 87 - 50 - 86 - 87 - 92 - 86 - 80 - 50 - 50 - 80 - 87 - 92 - 129 - 93 - 123 - 93 - 44 - 43 - 0 - 43 - 8 - 44 - 50 - 51 - 51 - 87 - 51 - 51 - 51 - 87 - 57 - 88 - 51 - 94 - 94 - 88 - 136 - 94 - 136 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 179 - 215 - 179 - 215 - 179 - 179 - 173 - 178 - 173 - 172 - 137 - 172 - 136 - 172 - 136 - 135 - 130 - 136 - 172 - 136 - 136 - 128 - 136 - 44 - 86 - 86 - 50 - 86 - 44 - 86 - 87 - 50 - 86 - 50 - 80 - 50 - 43 - 43 - 86 - 86 - 86 - 94 - 122 - 92 - 86 - 44 - 37 - 7 - 1 - 43 - 50 - 44 - 51 - 51 - 51 - 51 - 51 - 51 - 87 - 57 - 87 - 52 - 93 - 88 - 94 - 101 - 130 - 137 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 215 - 179 - 179 - 215 - 173 - 179 - 173 - 179 - 172 - 173 - 136 - 172 - 136 - 172 - 173 - 136 - 136 - 172 - 135 - 130 - 135 - 136 - 130 - 135 - 93 - 129 - 87 - 92 - 86 - 44 - 86 - 43 - 50 - 44 - 49 - 44 - 43 - 43 - 43 - 43 - 44 - 86 - 51 - 86 - 86 - 87 - 86 - 44 - 7 - 1 - 42 - 8 - 44 - 50 - 45 - 51 - 51 - 51 - 51 - 51 - 51 - 51 - 94 - 51 - 94 - 87 - 94 - 95 - 136 - 137 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 215 - 179 - 209 - 179 - 179 - 209 - 179 - 173 - 173 - 172 - 143 - 172 - 130 - 137 - 171 - 136 - 137 - 172 - 136 - 130 - 136 - 171 - 136 - 136 - 130 - 136 - 129 - 99 - 129 - 94 - 93 - 86 - 86 - 43 - 44 - 43 - 7 - 43 - 43 - 7 - 43 - 37 - 7 - 7 - 42 - 44 - 80 - 50 - 86 - 50 - 79 - 44 - 7 - 7 - 37 - 7 - 44 - 51 - 51 - 50 - 16 - 45 - 51 - 93 - 51 - 88 - 57 - 87 - 94 - 52 - 129 - 100 - 94 - 173 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 179 - 172 - 173 - 179 - 172 - 173 - 173 - 172 - 173 - 136 - 172 - 137 - 136 - 136 - 130 - 136 - 136 - 137 - 165 - 137 - 100 - 166 - 100 - 136 - 129 - 94 - 135 - 93 - 93 - 93 - 87 - 49 - 86 - 44 - 43 - 7 - 42 - 1 - 7 - 43 - 7 - 43 - 1 - 43 - 6 - 1 - 43 - 44 - 85 - 44 - 50 - 43 - 44 - 7 - 37 - 7 - 44 - 44 - 50 - 51 - 44 - 51 - 51 - 52 - 57 - 87 - 51 - 94 - 87 - 58 - 94 - 94 - 130 - 94 - 173 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 136 - 136 - 172 - 173 - 173 - 136 - 167 - 136 - 136 - 136 - 165 - 136 - 130 - 136 - 94 - 137 - 135 - 130 - 101 - 136 - 130 - 136 - 93 - 93 - 130 - 93 - 99 - 87 - 129 - 57 - 86 - 50 - 43 - 44 - 43 - 7 - 0 - 43 - 1 - 7 - 43 - 7 - 0 - 43 - 7 - 37 - 7 - 43 - 43 - 44 - 43 - 14 - 43 - 43 - 7 - 44 - 44 - 8 - 86 - 9 - 51 - 51 - 51 - 51 - 87 - 57 - 87 - 52 - 93 - 88 - 94 - 94 - 94 - 94 - 137 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 136 - 136 - 130 - 136 - 130 - 171 - 101 - 166 - 129 - 100 - 130 - 130 - 136 - 94 - 135 - 130 - 100 - 130 - 130 - 135 - 94 - 94 - 129 - 93 - 93 - 93 - 86 - 57 - 93 - 87 - 93 - 92 - 80 - 49 - 43 - 7 - 1 - 43 - 6 - 1 - 43 - 7 - 43 - 43 - 43 - 2 - 42 - 43 - 7 - 44 - 43 - 43 - 44 - 50 - 44 - 43 - 44 - 8 - 51 - 50 - 51 - 45 - 51 - 51 - 51 - 51 - 52 - 87 - 57 - 87 - 58 - 88 - 93 - 88 - 136 - 173 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 178 - 94 - 130 - 136 - 137 - 130 - 130 - 130 - 136 - 94 - 129 - 94 - 130 - 130 - 100 - 130 - 94 - 130 - 93 - 94 - 94 - 93 - 94 - 93 - 92 - 87 - 57 - 93 - 87 - 56 - 124 - 93 - 92 - 86 - 44 - 6 - 1 - 43 - 1 - 7 - 43 - 43 - 43 - 50 - 43 - 1 - 43 - 43 - 7 - 43 - 43 - 44 - 86 - 44 - 49 - 8 - 43 - 44 - 51 - 50 - 45 - 51 - 51 - 51 - 51 - 51 - 51 - 52 - 87 - 52 - 93 - 53 - 88 - 88 - 93 - 131 - 173 - 215 - 179 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 94 - 136 - 130 - 136 - 130 - 136 - 94 - 130 - 130 - 100 - 130 - 93 - 130 - 94 - 130 - 94 - 93 - 130 - 93 - 94 - 93 - 87 - 93 - 94 - 92 - 87 - 93 - 51 - 87 - 129 - 93 - 86 - 92 - 49 - 43 - 7 - 43 - 1 - 43 - 43 - 50 - 49 - 86 - 50 - 80 - 44 - 7 - 43 - 43 - 50 - 86 - 45 - 50 - 43 - 44 - 44 - 50 - 51 - 44 - 51 - 51 - 8 - 44 - 15 - 44 - 9 - 50 - 51 - 52 - 87 - 51 - 46 - 87 - 52 - 95 - 131 - 167 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 173 - 136 - 95 - 136 - 131 - 136 - 130 - 137 - 94 - 130 - 100 - 130 - 129 - 94 - 94 - 130 - 94 - 93 - 94 - 123 - 94 - 93 - 93 - 51 - 93 - 87 - 51 - 93 - 50 - 130 - 92 - 129 - 86 - 51 - 86 - 7 - 43 - 1 - 43 - 43 - 49 - 87 - 92 - 86 - 45 - 49 - 37 - 43 - 43 - 51 - 86 - 86 - 50 - 44 - 50 - 43 - 44 - 15 - 44 - 50 - 51 - 8 - 45 - 8 - 14 - 44 - 51 - 45 - 51 - 51 - 52 - 88 - 52 - 125 - 94 - 130 - 167 - 173 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 143 - 130 - 137 - 130 - 101 - 130 - 94 - 130 - 94 - 136 - 94 - 124 - 94 - 93 - 130 - 94 - 93 - 94 - 124 - 93 - 88 - 57 - 87 - 87 - 57 - 87 - 51 - 87 - 50 - 129 - 93 - 129 - 92 - 123 - 49 - 50 - 44 - 43 - 43 - 50 - 86 - 86 - 123 - 92 - 50 - 44 - 43 - 43 - 44 - 86 - 93 - 87 - 50 - 80 - 50 - 43 - 50 - 9 - 51 - 50 - 45 - 50 - 9 - 7 - 8 - 8 - 45 - 50 - 52 - 88 - 52 - 125 - 94 - 89 - 131 - 131 - 173 - 173 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 137 - 137 - 94 - 137 - 94 - 130 - 94 - 101 - 88 - 94 - 94 - 94 - 130 - 87 - 94 - 87 - 94 - 87 - 94 - 51 - 87 - 94 - 51 - 86 - 51 - 51 - 51 - 80 - 15 - 129 - 129 - 93 - 129 - 93 - 86 - 86 - 44 - 43 - 50 - 49 - 86 - 129 - 87 - 129 - 86 - 50 - 43 - 44 - 44 - 86 - 129 - 86 - 87 - 50 - 50 - 44 - 44 - 51 - 50 - 45 - 14 - 45 - 8 - 8 - 7 - 51 - 44 - 52 - 52 - 88 - 89 - 94 - 125 - 131 - 131 - 131 - 131 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 173 - 100 - 130 - 95 - 94 - 94 - 94 - 94 - 87 - 94 - 93 - 88 - 57 - 88 - 88 - 93 - 51 - 88 - 93 - 51 - 87 - 50 - 87 - 51 - 45 - 51 - 50 - 51 - 44 - 129 - 135 - 93 - 123 - 92 - 87 - 55 - 80 - 50 - 44 - 86 - 92 - 87 - 129 - 93 - 87 - 86 - 49 - 80 - 50 - 87 - 129 - 93 - 86 - 45 - 50 - 44 - 44 - 50 - 51 - 44 - 15 - 45 - 8 - 7 - 50 - 9 - 51 - 88 - 88 - 95 - 89 - 95 - 125 - 95 - 131 - 125 - 167 - 179 - 209 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 215 - 179 - 143 - 131 - 94 - 95 - 136 - 52 - 93 - 94 - 88 - 57 - 88 - 87 - 94 - 51 - 88 - 87 - 52 - 87 - 51 - 51 - 88 - 45 - 50 - 51 - 50 - 44 - 51 - 8 - 51 diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS deleted file mode 100755 index 77b7ff2..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS +++ /dev/null @@ -1,337 +0,0 @@ -' Graphics animation. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 200?, Initial version -' 2024.09, Improved program readability using AI - -DECLARE SUB playsound (a$) -DECLARE SUB turnon () -DECLARE SUB ellips (x!, y!, s!, v!, t!) -DECLARE SUB prn (x!, y!, msg$, siz!, col1!) -DECLARE SUB timerAdd (element!, time!, value!) -DECLARE SUB timerdisp () -DECLARE SUB timerinit () -DECLARE SUB timerprocess () -DECLARE SUB mo (x!, y!, an!, s!, w!) -DIM SHARED depth -DIM SHARED pi - -DIM SHARED sh1, sh2, sv1, sv2, hp, vp -DIM SHARED timerTime(0 TO 50, 0 TO 100) -DIM SHARED timerValue(0 TO 50, 0 TO 100) - -DIM SHARED timerCplace(0 TO 50) -DIM SHARED timerCtime(0 TO 50) -DIM SHARED timerCvalue(0 TO 50) -DIM SHARED timerLast - - -pi = 3.14128 - -turnon - -SCREEN 7, , , 1 - -timerinit -s = 50 - -2 : - s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 - s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 - -frm = frm + 1 -sv1 = 5 * s1 -sv2 = 2 -vp = SIN(timerCvalue(1) * 1.3) - -sh1 = 2 * s2 -sh2 = 1.4 -hp = SIN(timerCvalue(1)) * .7 - -mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 - -ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 -ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 -ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 -prn timerCvalue(5), 10, "KHK", 7, 250 - -prn timerCvalue(8), 130, "Infotehno-", 2, 0 -prn timerCvalue(8), 150, " loogia", 2, 0 - -timerprocess - -LOCATE 1, 1 -'PRINT timerCtime(0) -IF timerCtime(0) > 26 THEN CHAIN "ray.bas" -PCOPY 0, 1 -LINE (0, 0)-(319, 199), 15, BF -GOTO 2 -SYSTEM - -SUB ellips (x, y, s, v, t) - ' Draws an ellipse if the coordinates are positive - IF x > 0 THEN - IF y > 0 THEN - CIRCLE (x, y), s, v, , , t - PAINT (x, y), v - END IF - END IF -END SUB - -SUB mo (x, y, an, s, w) - ' Recursive function to draw a shape with rotating and scaling properties - depth = depth + 1 - IF s < .2 THEN GOTO 1 - - IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 - - CIRCLE (x, y), s, c - PAINT (x, y), c - - IF w <> 1 THEN - x1 = SIN(an) * s * 2.5 + x - y1 = COS(an) * s * 2.5 + y - IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 - mo x1, y1, an + vp, ns, 3 - END IF - - IF w <> 2 THEN - x1 = SIN(an - pi / 2) * s * 2.5 + x - y1 = COS(an - pi / 2) * s * 2.5 + y - IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 - mo x1, y1, an + hp, ns, 4 - END IF - - IF w <> 3 THEN - x1 = SIN(an - pi) * s * 2.5 + x - y1 = COS(an - pi) * s * 2.5 + y - IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 - mo x1, y1, an + vp, ns, 1 - END IF - - IF w <> 4 THEN - x1 = SIN(an - pi * 1.5) * s * 2.5 + x - y1 = COS(an - pi * 1.5) * s * 2.5 + y - IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 - mo x1, y1, an + hp, ns, 2 - END IF - -1 : - depth = depth - 1 -END SUB - -SUB prn (x, y, msg$, siz, col1) - ' Prints text with specified size and color at given coordinates - IF x < 0 THEN GOTO prn1 - IF x > 319 THEN GOTO prn1 - - DIM bck(10000) - - GET (0, 0)-(100, 7), bck - LOCATE 1, 1 - PRINT msg$ - - col = col1 - - FOR x1 = 0 TO LEN(msg$) * 8 - 1 - FOR y1 = 0 TO 7 - IF POINT(x1, y1) > 0 THEN - rx = x1 * siz + x - ry = y1 * siz + y - IF col1 > 100 THEN col = RND * 4 + 10 - IF col1 > 200 THEN - LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B - ELSE - LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF - END IF - END IF - NEXT y1 - NEXT x1 - - PUT (0, 0), bck, PSET -prn1: -END SUB - -SUB timerAdd (element, time, value) - ' Adds a new timer event for a specific element at a given time with the specified value - FOR a = 0 TO 100 - IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 - NEXT a -timer3: - - timerTime(element, a) = time - timerValue(element, a) = value -END SUB - -SUB timerinit - ' Initializes timers with predefined events and values - timerLast = TIMER - - paus = 24 - - ' stuff size - timerAdd 0, 0, 50 - timerAdd 0, 7, 10 - timerAdd 0, 20, 10 - timerAdd 0, 24, 0 - timerAdd 0, 1000, 0 - - ' stuff speed - timerAdd 1, 0, .1 - timerAdd 1, 1000, 1000 - - ' stuff X & Y - timerAdd 2, 0, 160 - timerAdd 3, 0, 100 - - timerAdd 2, 5, 160 - timerAdd 3, 5, 100 - - timerAdd 2, 9, 280 - timerAdd 3, 9, 160 - - timerAdd 2, 10, 280 - timerAdd 3, 10, 160 - - timerAdd 2, 20, 40 - timerAdd 3, 20, 160 - - timerAdd 2, 1000, 40 - timerAdd 3, 1000, 160 - - ' stuff rotations - timerAdd 4, 0, .1 - timerAdd 4, 10, .1 - timerAdd 4, 22, 18 - timerAdd 4, 2000, 10000 - - ' KHK message X - - timerAdd 5, 0, -1 - timerAdd 5, 5, -1 - timerAdd 5, 9, 50 - timerAdd 5, 10, 30 - timerAdd 5, paus, 30 - timerAdd 5, paus + 2, 321 - - ' Ellips Y & radius - timerAdd 6, 0, -1 - timerAdd 6, 4, -1 - timerAdd 6, 10, 30 - timerAdd 6, 1000, 50 - - timerAdd 7, 0, 1 - timerAdd 7, 6, 1 - timerAdd 7, 12, 130 - - timerAdd 7, paus, 130 - timerAdd 7, paus + 2, 1 - - ' "Infotehnoloogia" message - - timerAdd 8, 0, 320 - timerAdd 8, 11, 320 - timerAdd 8, 20, 100 - timerAdd 8, paus, 100 - timerAdd 8, paus + 1, -1 -END SUB - -SUB timerprocess - ' Processes timers to update their current values based on elapsed time - timerCurrent = TIMER - timerDiff = timerCurrent - timerLast - timerLast = timerCurrent - - FOR a = 0 TO 50 - ctim = timerCtime(a) + timerDiff - Cplace = timerCplace(a) -timer2: - IF timerTime(a, Cplace + 1) = -1 THEN - ctim = 0 - Cplace = 0 - END IF - IF timerTime(a, Cplace + 1) < ctim THEN - IF timerTime(a, Cplace + 1) = 0 THEN - timerCvalue(a) = timerValue(a, Cplace) - GOTO timer1: - END IF - Cplace = Cplace + 1 - GOTO timer2 - END IF - - v1 = timerValue(a, Cplace) - t1 = timerTime(a, Cplace) - v2 = timerValue(a, Cplace + 1) - t2 = timerTime(a, Cplace + 1) - - IF v1 = v2 THEN - timerCvalue(a) = v1 - ELSE - Tdiff1 = t2 - t1 - Tdiff2 = ctim - t1 - Vdiff = v2 - v1 - timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 - END IF -timer1: - timerCplace(a) = Cplace - timerCtime(a) = ctim - NEXT a -END SUB - -SUB turnon - ' Initializes the program by playing a sound and displaying an animation - SCREEN 0 - SCREEN 7, , , 1 - - - SCREEN 7, , , 1 - - FOR x = 0 TO 160 STEP 15 - LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF - LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF - LINE (160 - x, 90)-(160 + x, 110), 15, BF - - PCOPY 0, 1 - CLS - SOUND 0, .5 - NEXT x - - FOR y = 10 TO 100 STEP 15 - CLS - - LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF - LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF - LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF - - PCOPY 0, 1 - SOUND 0, .5 - NEXT y - - FOR a = 1 TO 25 - prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 - PCOPY 0, 1 - SOUND 0, 1 - NEXT a - - DIM buf(1 TO 1000) - FOR b = 1 TO 30 - FOR a = 0 TO 195 - t = ABS(100 - a) - - IF RND * 50 < t THEN - GET (1, a)-(318, a + 1), buf - IF a > 100 THEN - PUT (0, a), buf, PSET - ELSE - PUT (2, a), buf, PSET - END IF - END IF - NEXT a - PCOPY 0, 1 - 'SOUND 0, 1 - NEXT b -END SUB - diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS deleted file mode 100755 index 2d0d9da..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS +++ /dev/null @@ -1,51 +0,0 @@ -SCREEN 7, , , 1 - -1 -FOR a = 1 TO SIN(frame / 30) * 3 + 4 - LOCATE a * 2, a * 4 - COLOR RND * 5 + 10 - PRINT "Programming is fun!" -NEXT a - -' Update frame and calculate new values for x, y and step size. -frame = frame + 1 -stepSize = (SIN(frame / 10) + 2) / 3 -xPos = SIN(frame / 30) * 50 -yPos = COS(frame / 42) * 30 - -' Draw circles with varying arc sizes. -FOR a = .1 TO 10 STEP stepSize - CIRCLE (160 + xPos, 100 + yPos), 80, 2, , , a -NEXT a - -' Generate random color value for lines. -randomColor = RND * 2 + 12 -FOR a = 0 TO 10 - f1 = (a + frame) / 12 - f2 = (a + frame) / 7 - x1 = SIN(f1) * 50 - y1 = COS(f1) * 30 - x2 = SIN(f2 + 6) * 50 - y2 = COS(f2 + 6) * 30 - ' Draw line between calculated points. - LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), randomColor -NEXT a - -' Draw random pixels on the screen. Like colorful stars in the night sky. -FOR a = 0 TO 50 - xRand = RND * 320 - yRand = RND * 320 - PSET (xRand, yRand), RND * 15 -NEXT a - -' Copy the current screen to the next page and clear the current screen. -PCOPY 0, 1 -CLS - -' Check if frame count has exceeded the limit; if so, chain to another program. -IF frame > 200 THEN GOTO 2 -GOTO 1 - -2 -CHAIN "KHKDEMO3.BAS" - diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS deleted file mode 100755 index 8b65c88..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS +++ /dev/null @@ -1,85 +0,0 @@ -SCREEN 7, , , 1 - -' Main loop label -1 - ' Clear the screen - LINE (0, 0)-(319, 199), 0, BF - - ' Delay, to limit animation speed - SOUND 0, 1 - - ' Increment frame counter - frm = frm + 1 - - ' Calculate step size based on sine wave - stpSize = (SIN(frm / 10) + 2) / 3 - - ' Calculate x and y offsets based on sine and cosine waves - xOffset = SIN(frm / 30) * 50 - yOffset = COS(frm / 42) * 30 - - ' Draw circles with varying arc sizes - FOR a = .1 TO 10 STEP stpSize - CIRCLE (160 + xOffset, 100 + yOffset), 80, 10, , , a - NEXT a - - ' Calculate random color - colr = RND * 2 + 12 - - ' Draw lines between points calculated using sine and cosine waves - FOR a = 0 TO 50 - f1 = (a + frm) / 12 - f2 = (a + frm) / 7 - x1 = SIN(f1) * 50 - y1 = COS(f1) * 30 - x2 = SIN(f2 + 6) * 80 - y2 = COS(f2 + 6) * 120 - LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), colr - NEXT a - - ' Draw and fill circles with varying radii - FOR a = 0 TO 50 - f1 = (a * 15 + frm) / 12 - f2 = (a * 15 + frm) / 7 - x1 = SIN(f1) * 50 - y1 = COS(f1) * 30 - x2 = SIN(f2 + 6) * 80 - y2 = COS(f2 + 6) * 120 - CIRCLE (x1 + 80, y1 + 50), a / 2, 14 - PAINT (x1 + 80, y1 + 50), 14 - NEXT a - - ' Draw additional lines between points calculated using sine and cosine waves - FOR a = 0 TO 15 - f1 = (a + frm) / 12 - f2 = (a + frm) / 7 - x1 = SIN(f1) * 50 - y1 = COS(f1) * 30 - x2 = SIN(f2 + 6) * 80 - y2 = COS(f2 + 6) * 120 - LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), colr - NEXT a - - ' Draw random points on the screen - FOR a = 0 TO 50 - x = RND * 320 - y = RND * 320 - PSET (x, y), RND * 15 - NEXT a - - ' Copy active page to visual page for smooth animation - PCOPY 0, 1 - - ' Clear the screen - CLS - - ' Check if frame counter exceeds 100 - IF frm > 100 THEN GOTO 2 - - ' Continue loop - GOTO 1 - -' Exit label -2 - ' Chain to another program - CHAIN "KHKDEMO4.BAS" diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS deleted file mode 100755 index 6e53abe..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS +++ /dev/null @@ -1,31 +0,0 @@ -SCREEN 13 - -LOCATE 1, 1 -PRINT " Hello friend!" - -' Loop through each pixel in the screen to create an enlarged version of the current screen -FOR x = 0 TO 160 - FOR y = 0 TO 32 - colorVal = POINT(x, y) - x1 = x * 2 - y1 = y * 2 + 90 - LINE (x1, y1)-(x1 + 1, y1 + 1), colorVal, BF - NEXT y -NEXT x - -LOCATE 1, 1 -PRINT " " - -' Draw a series of circles along the screen -FOR x = 0 TO 320 - CIRCLE (x, 130), 10, 9 - SOUND 0, .1 -NEXT x - -' Draw horizontal lines creating an X pattern -FOR y = 0 TO 70 - SOUND 0, .1 - LINE (160 - 70 + y, y)-(160 + 70 - y, y), 9 -NEXT y - - diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo4.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo4.BAS deleted file mode 100755 index 4842b71..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo4.BAS +++ /dev/null @@ -1,34 +0,0 @@ -DECLARE SUB drawFractal (x!, y!, s!) -DIM SHARED fractalColor ' this variable holds fractal color - ' and because it is 'SHARED' it is accessible - ' from within sub module. -SCREEN 12 - -fractalColor = 10 ' display single fractal -drawFractal 320, 240, 127 - -FOR a = 1 TO 50 - SOUND 0, 1 -NEXT a -CLS - -FOR a = 1 TO 128 STEP 5 ' display fractal series - fractalColor = RND * 7 + 7 - drawFractal 320, 240, a -NEXT a - -FOR a = 1 TO 50 - SOUND 0, 1 -NEXT a - -CHAIN "khkdemo5.bas" - -SUB drawFractal (x, y, s) - IF s >= 1 THEN - LINE (x - s, y - s)-(x + s, y + s), fractalColor, B - drawFractal x - s, y - s, s / 2.3 ' each fractal sub element is 2.3 times smaller - drawFractal x + s, y - s, s / 2.3 ' than previous. - drawFractal x + s, y + s, s / 2.3 - drawFractal x - s, y + s, s / 2.3 - END IF -END SUB diff --git a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS b/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS deleted file mode 100755 index dd8de8c..0000000 --- a/Graphics/Presentations/KHK Intellektika 2004 demo/khkdemo5.BAS +++ /dev/null @@ -1,308 +0,0 @@ -DECLARE FUNCTION getWord& (addr!) -DECLARE FUNCTION getByte! (addr!) -' Render animated 3D maze. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2002, Initial version -' 2024.09, Improved program readability using AI - - -DECLARE SUB startText () -DECLARE SUB control () -DECLARE SUB putByte (addr!, dat!) -DECLARE SUB putWord (addr!, dat!) -DECLARE SUB start () -DECLARE SUB animate () - -DIM SHARED px(1 TO 5000) -DIM SHARED py(1 TO 5000) -DIM SHARED pz(1 TO 5000) -DIM SHARED rpx(1 TO 5000) -DIM SHARED rpy(1 TO 5000) -DIM SHARED rpe(1 TO 5000) - -DIM SHARED l1(1 TO 5000) -DIM SHARED l2(1 TO 5000) -DIM SHARED lc(1 TO 5000) - -DIM SHARED nl, np - -DIM SHARED an1, an2, an3 - -DIM SHARED tim - -DIM SHARED extSEG, extADDR - -DIM SHARED myx, myy, myz -DIM SHARED myxs, myys, myzs -DIM SHARED buttL, buttR -DIM SHARED maxmove - -nl = 0 -np = 0 - -start - -cx = 0 -cy = 0 -cz = 0 - -np = 1 -px(1) = 0 -py(1) = 0 -pz(1) = 0 - -' Main loop -1 -frm = frm + 1 -myx = SIN(frm / 30) * 100 -myz = COS(frm / 59) * 100 -myy = SIN(frm / 300) -an1 = SIN(frm / 60) -an2 = SIN(frm / 36) / 3 - -np = np + 1 -px(np) = cx -py(np) = cy -pz(np) = cz - -nl = nl + 1 -l1(nl) = np -l2(nl) = np - 1 -lc(nl) = INT(RND * 15) + 1 -' lc(nl) = ABS(cx / 20) - -va = INT(RND * 3) - -SELECT CASE va -CASE 0 - cx = RND * 500 - 250 -CASE 1 - cy = RND * 100 - 50 -CASE 2 - cz = RND * 500 - 250 -END SELECT - -' control -animate - -PCOPY 0, 1 -CLS - -IF frm > 1200 THEN GOTO 200 -GOTO 1 - -200 - -CHAIN "khkdemo6.bas" - -SUB animate - -s1 = SIN(an1) -s2 = SIN(an2) -s3 = SIN(an3) - -c1 = COS(an1) -c2 = COS(an2) -c3 = COS(an3) - -' Rotate and project points -FOR a = 1 TO np - x = px(a) - myx - y = py(a) - myy - z = pz(a) - myz - - ' First rotation around Y axis - x1 = x * c1 + z * s1 - z1 = z * c1 - x * s1 - - ' Second rotation around X axis - y1 = y * c2 + z1 * s2 - z2 = z1 * c2 - y * s2 - - ' Check if point is behind the viewer - IF z2 > 3 THEN - rpe(a) = 1 - rpx(a) = x1 / z2 * 130 + 160 - rpy(a) = y1 / z2 * 130 + 100 - ELSE - rpe(a) = 0 - END IF -NEXT a - -' Draw lines between visible points -FOR a = 1 TO nl - - p1 = l1(a) - p2 = l2(a) - IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) - -NEXT a - -END SUB - -SUB control - -IF getByte(8) <> 0 THEN - putByte 8, 0 - xp = getWord(2) - putWord 2, 0 - yp = getWord(4) - putWord 4, 0 - butt = getWord(6) - putWord 6, 0 - buttL = 0 - buttR = 0 - IF butt = 1 THEN buttL = 1 - IF butt = 2 THEN buttR = 1 - IF butt = 3 THEN buttL = 1: buttR = 1 - - ' Handle mouse movement - IF buttR = 1 THEN - IF buttL = 1 THEN - myxs = myxs + SIN(an1) * yp / 4 - myzs = myzs - COS(an1) * yp / 4 - GOTO 3 - END IF - myys = myys + yp / 4 -3 - yp = 0 - END IF - -END IF - -' Limit movement to maxmove -IF xp < -maxmove THEN xp = -maxmove -IF xp > maxmove THEN xp = maxmove -an1 = an1 - xp / 150 - -IF yp < -maxmove THEN yp = -maxmove -IF yp > maxmove THEN yp = maxmove -an2 = an2 - yp / 150 - -a$ = INKEY$ - -' Handle keyboard input -IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) -IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) -IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) -IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) -IF a$ = "q" THEN SYSTEM - -myxs = myxs / 1.1 -myys = myys / 1.1 -myzs = myzs / 1.1 - -myx = myx + myxs -myz = myz + myzs -myy = myy + myys - -END SUB - -FUNCTION getByte (addr) - getByte = PEEK(extADDR + addr) -END FUNCTION - -FUNCTION getWord& (addr) - a = PEEK(extADDR + addr) - b = PEEK(extADDR + addr + 1) - - c$ = HEX$(a) - IF LEN(c$) = 1 THEN c$ = "0" + c$ - IF LEN(c$) = 0 THEN c$ = "00" - - c = VAL("&H" + HEX$(b) + c$) - - getWord = c -END FUNCTION - -SUB mouseDemo - -cx = 150 -cy = 100 -maxmove = 50 - -' Main loop -100 -frm = frm + 1 - -LOCATE 1, 1 -PRINT cx, cy -PRINT frm - -CIRCLE (cx, cy), 10, 0 -xp = getWord(2) -putWord 2, 0 -yp = getWord(4) -putWord 4, 0 - -IF xp < -maxmove THEN xp = -maxmove -IF xp > maxmove THEN xp = maxmove -cx = cx + xp - -IF yp < -maxmove THEN yp = -maxmove -IF yp > maxmove THEN yp = maxmove -cy = cy + yp - -CIRCLE (cx, cy), 10, 10 - -SOUND 0, .05 -GOTO 100 - -END SUB - -SUB putByte (addr, dat) - POKE (extADDR + addr), dat -END SUB - -SUB putWord (addr, dat) - -b$ = HEX$(dat) - -2 -IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 - -n1 = VAL("&H" + LEFT$(b$, 2)) -n2 = VAL("&H" + RIGHT$(b$, 2)) - -POKE (extADDR + addr), n2 -POKE (extADDR + addr + 1), n1 - -END SUB - -SUB start - ' startext - -SCREEN 7, , , 1 - -maxmove = 50 - -END SUB - -SUB startText - -DEF SEG = 0 ' read first from interrupt table - -extSEG = PEEK(&H79 * 4 + 3) * 256 -extSEG = extSEG + PEEK(&H79 * 4 + 2) - -PRINT "Segment is: " + HEX$(extSEG) - -extADDR = PEEK(&H79 * 4 + 1) * 256 -extADDR = extADDR + PEEK(&H79 * 4 + 0) - -PRINT "relative address is:"; extADDR - -DEF SEG = extSEG - -IF getWord(0) <> 1983 THEN - PRINT "FATAL ERROR: you must load" - PRINT "QBasic extension TSR first!" - SYSTEM -END IF - -END SUB - diff --git a/Graphics/Presentations/christmas.bas b/Graphics/Presentations/christmas.bas new file mode 100755 index 0000000..e6fbfac --- /dev/null +++ b/Graphics/Presentations/christmas.bas @@ -0,0 +1,365 @@ +DECLARE SUB playsound (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + +pi = 3.14128 + +turnon + +SCREEN 7, , , 1 + +timerinit +s = 50 +' Main loop label +2 +s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 +s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 + +frm = frm + 1 +sv1 = 5 * s1 +sv2 = 2 +vp = SIN(timerCvalue(1) * 1.3) + +sh1 = 2 * s2 +sh2 = 1.4 +hp = SIN(timerCvalue(1)) * .7 + +' Draw main object +mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 + +' Draw ellipses +ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 +ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 +ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 +prn timerCvalue(5), 10, "KHK", 7, 250 + +' Print messages +prn timerCvalue(8), 130, "Infotehno-", 2, 0 +prn timerCvalue(8), 150, " loogia", 2, 0 + +timerprocess +LOCATE 1, 1 +'PRINT timerCtime(0) +IF timerCtime(0) > 26 THEN SYSTEM +PCOPY 0, 1 +LINE (0, 0)-(319, 199), 15, BF +GOTO 2 + +SUB ellips (x!, y!, s!, v!, t!) + ' Draw an ellipse if x and y are positive + IF x > 0 THEN + IF y > 0 THEN + CIRCLE (x!, y!), s!, v!, , , t! + PAINT (x!, y!), v! + END IF + END IF +END SUB + +SUB mo (x!, y!, an!, s!, w!) + depth = depth + 1 + + ' If size is less than .2, skip drawing + IF s < .2 THEN GOTO 1 + + ' Determine color based on depth + IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 + + CIRCLE (x!, y!), s!, c + PAINT (x!, y!), c + + IF w <> 1 THEN + x1 = SIN(an!) * s! * 2.5 + x! + y1 = COS(an!) * s! * 2.5 + y! + + ' Change size based on the value of w + IF w = 3 THEN ns = s! / sv2 ELSE ns = s! / sv1 + + mo x1, y1, an! + vp, ns, 3 + END IF + + IF w <> 2 THEN + x1 = SIN(an! - pi / 2) * s! * 2.5 + x! + y1 = COS(an! - pi / 2) * s! * 2.5 + y! + + ' Change size based on the value of w + IF w = 4 THEN ns = s! / sh2 ELSE ns = s! / sh1 + + mo x1, y1, an! + hp, ns, 4 + END IF + + IF w <> 3 THEN + x1 = SIN(an! - pi) * s! * 2.5 + x! + y1 = COS(an! - pi) * s! * 2.5 + y! + + ' Change size based on the value of w + IF w = 1 THEN ns = s! / sv2 ELSE ns = s! / sv1 + + mo x1, y1, an! + vp, ns, 1 + END IF + + IF w <> 4 THEN + x1 = SIN(an! - pi * 1.5) * s! * 2.5 + x! + y1 = COS(an! - pi * 1.5) * s! * 2.5 + y! + + ' Change size based on the value of w + IF w = 2 THEN ns = s! / sh2 ELSE ns = s! / sh1 + + mo x1, y1, an! + hp, ns, 2 + END IF + +1 + depth = depth - 1 +END SUB + +SUB prn (x!, y!, msg$, siz!, col1!) + IF x < 0 THEN GOTO prn1 + IF x > 319 THEN GOTO prn1 + + DIM bck(10000) + + ' Save a portion of the screen to buffer + GET (0, 0)-(100, 7), bck + + LOCATE 1, 1 + PRINT msg$ + + col = col1! + + FOR x1 = 0 TO LEN(msg$) * 8 - 1 + FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + ' Calculate the coordinates for the enlarged character + rx = x1 * siz! + x! + ry = y1 * siz! + y! + + IF col1! > 100 THEN + col = RND * 4 + 10 + + ' Draw a solid box or outlined box based on the color value + IF col1! > 200 THEN + LINE (rx, ry)-(rx + siz! - 1, ry + siz! - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz! - 1, ry + siz! - 1), col, BF + END IF + END IF + END IF + NEXT y1 + NEXT x1 + + ' Restore the saved portion of the screen + PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB timerAdd (element!, time!, value!) + + FOR a = 0 TO 100 + IF (timerTime(element!, a) = 0) AND (timerValue(element!, a) = 0) THEN GOTO timer3 + NEXT a + +timer3: + + timerTime(element!, a) = time! + timerValue(element!, a) = value! + +END SUB + +SUB timerdisp + LOCATE 1, 1 + + ' Display the current state of timers + FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) + NEXT a + +END SUB + +SUB timerinit + timerLast = TIMER + + paus = 24 + + ' Initialize stuff size + timerAdd 0, 0, 50 + timerAdd 0, 7, 10 + timerAdd 0, 20, 10 + timerAdd 0, 24, 0 + timerAdd 0, 1000, 0 + + ' Initialize stuff speed + timerAdd 1, 0, .1 + timerAdd 1, 1000, 1000 + + ' Initialize stuff X & Y + timerAdd 2, 0, 160 + timerAdd 3, 0, 100 + + timerAdd 2, 5, 160 + timerAdd 3, 5, 100 + + timerAdd 2, 9, 280 + timerAdd 3, 9, 160 + + timerAdd 2, 10, 280 + timerAdd 3, 10, 160 + + timerAdd 2, 20, 40 + timerAdd 3, 20, 160 + + timerAdd 2, 1000, 40 + timerAdd 3, 1000, 160 + + ' Initialize stuff rotations + timerAdd 4, 0, .1 + timerAdd 4, 10, .1 + timerAdd 4, 22, 18 + timerAdd 4, 2000, 10000 + + ' Initialize KHK message X + + timerAdd 5, 0, -1 + timerAdd 5, 5, -1 + timerAdd 5, 9, 50 + timerAdd 5, 10, 30 + timerAdd 5, paus, 30 + timerAdd 5, paus + 2, 321 + + ' Initialize Ellips Y & radius + timerAdd 6, 0, -1 + timerAdd 6, 4, -1 + timerAdd 6, 10, 30 + timerAdd 6, 1000, 50 + + timerAdd 7, 0, 1 + timerAdd 7, 6, 1 + timerAdd 7, 12, 130 + + timerAdd 7, paus, 130 + timerAdd 7, paus + 2, 1 + + ' Initialize "Infotehnoloogia" message + + timerAdd 8, 0, 320 + timerAdd 8, 11, 320 + timerAdd 8, 20, 100 + timerAdd 8, paus, 100 + timerAdd 8, paus + 1, -1 + +END SUB + +SUB timerprocess + timerCurrent = TIMER + timerDiff = timerCurrent - timerLast + timerLast = timerCurrent + + FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + + ' Update the current time and value of each element + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1 + END IF + + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + + ' Interpolate the current value + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim + NEXT a + +END SUB + +SUB turnon + SCREEN 7, , , 1 + + FOR x = 0 TO 160 STEP 15 + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF + LINE (160 - x, 90)-(160 + x, 110), 15, BF + + PCOPY 0, 1 + CLS + SOUND 0, .5 + NEXT x + + FOR y = 10 TO 100 STEP 15 + CLS + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF + + PCOPY 0, 1 + SOUND 0, .5 + NEXT y + + FOR a = 1 TO 25 + prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 + PCOPY 0, 1 + SOUND 0, 1 + NEXT a + + DIM buf(1 TO 1000) + + FOR b = 1 TO 30 + FOR a = 0 TO 195 + t = ABS(100 - a) + + IF RND * 50 < t THEN + GET (1, a)-(318, a + 1), buf + + ' Randomly shift parts of the screen + IF a > 100 THEN + PUT (0, a), buf, PSET + ELSE + PUT (2, a), buf, PSET + END IF + END IF + NEXT a + + PCOPY 0, 1 + NEXT b + +END SUB diff --git a/Graphics/Presentations/joulud.bas b/Graphics/Presentations/joulud.bas deleted file mode 100755 index e6fbfac..0000000 --- a/Graphics/Presentations/joulud.bas +++ /dev/null @@ -1,365 +0,0 @@ -DECLARE SUB playsound (a$) -DECLARE SUB turnon () -DECLARE SUB ellips (x!, y!, s!, v!, t!) -DECLARE SUB prn (x!, y!, msg$, siz!, col1!) -DECLARE SUB timerAdd (element!, time!, value!) -DECLARE SUB timerdisp () -DECLARE SUB timerinit () -DECLARE SUB timerprocess () -DECLARE SUB mo (x!, y!, an!, s!, w!) -DIM SHARED depth -DIM SHARED pi - -DIM SHARED sh1, sh2, sv1, sv2, hp, vp -DIM SHARED timerTime(0 TO 50, 0 TO 100) -DIM SHARED timerValue(0 TO 50, 0 TO 100) - -DIM SHARED timerCplace(0 TO 50) -DIM SHARED timerCtime(0 TO 50) -DIM SHARED timerCvalue(0 TO 50) -DIM SHARED timerLast - -pi = 3.14128 - -turnon - -SCREEN 7, , , 1 - -timerinit -s = 50 -' Main loop label -2 -s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 -s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 - -frm = frm + 1 -sv1 = 5 * s1 -sv2 = 2 -vp = SIN(timerCvalue(1) * 1.3) - -sh1 = 2 * s2 -sh2 = 1.4 -hp = SIN(timerCvalue(1)) * .7 - -' Draw main object -mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 - -' Draw ellipses -ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 -ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 -ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 -prn timerCvalue(5), 10, "KHK", 7, 250 - -' Print messages -prn timerCvalue(8), 130, "Infotehno-", 2, 0 -prn timerCvalue(8), 150, " loogia", 2, 0 - -timerprocess -LOCATE 1, 1 -'PRINT timerCtime(0) -IF timerCtime(0) > 26 THEN SYSTEM -PCOPY 0, 1 -LINE (0, 0)-(319, 199), 15, BF -GOTO 2 - -SUB ellips (x!, y!, s!, v!, t!) - ' Draw an ellipse if x and y are positive - IF x > 0 THEN - IF y > 0 THEN - CIRCLE (x!, y!), s!, v!, , , t! - PAINT (x!, y!), v! - END IF - END IF -END SUB - -SUB mo (x!, y!, an!, s!, w!) - depth = depth + 1 - - ' If size is less than .2, skip drawing - IF s < .2 THEN GOTO 1 - - ' Determine color based on depth - IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 - - CIRCLE (x!, y!), s!, c - PAINT (x!, y!), c - - IF w <> 1 THEN - x1 = SIN(an!) * s! * 2.5 + x! - y1 = COS(an!) * s! * 2.5 + y! - - ' Change size based on the value of w - IF w = 3 THEN ns = s! / sv2 ELSE ns = s! / sv1 - - mo x1, y1, an! + vp, ns, 3 - END IF - - IF w <> 2 THEN - x1 = SIN(an! - pi / 2) * s! * 2.5 + x! - y1 = COS(an! - pi / 2) * s! * 2.5 + y! - - ' Change size based on the value of w - IF w = 4 THEN ns = s! / sh2 ELSE ns = s! / sh1 - - mo x1, y1, an! + hp, ns, 4 - END IF - - IF w <> 3 THEN - x1 = SIN(an! - pi) * s! * 2.5 + x! - y1 = COS(an! - pi) * s! * 2.5 + y! - - ' Change size based on the value of w - IF w = 1 THEN ns = s! / sv2 ELSE ns = s! / sv1 - - mo x1, y1, an! + vp, ns, 1 - END IF - - IF w <> 4 THEN - x1 = SIN(an! - pi * 1.5) * s! * 2.5 + x! - y1 = COS(an! - pi * 1.5) * s! * 2.5 + y! - - ' Change size based on the value of w - IF w = 2 THEN ns = s! / sh2 ELSE ns = s! / sh1 - - mo x1, y1, an! + hp, ns, 2 - END IF - -1 - depth = depth - 1 -END SUB - -SUB prn (x!, y!, msg$, siz!, col1!) - IF x < 0 THEN GOTO prn1 - IF x > 319 THEN GOTO prn1 - - DIM bck(10000) - - ' Save a portion of the screen to buffer - GET (0, 0)-(100, 7), bck - - LOCATE 1, 1 - PRINT msg$ - - col = col1! - - FOR x1 = 0 TO LEN(msg$) * 8 - 1 - FOR y1 = 0 TO 7 - IF POINT(x1, y1) > 0 THEN - ' Calculate the coordinates for the enlarged character - rx = x1 * siz! + x! - ry = y1 * siz! + y! - - IF col1! > 100 THEN - col = RND * 4 + 10 - - ' Draw a solid box or outlined box based on the color value - IF col1! > 200 THEN - LINE (rx, ry)-(rx + siz! - 1, ry + siz! - 1), col, B - ELSE - LINE (rx, ry)-(rx + siz! - 1, ry + siz! - 1), col, BF - END IF - END IF - END IF - NEXT y1 - NEXT x1 - - ' Restore the saved portion of the screen - PUT (0, 0), bck, PSET -prn1: -END SUB - -SUB timerAdd (element!, time!, value!) - - FOR a = 0 TO 100 - IF (timerTime(element!, a) = 0) AND (timerValue(element!, a) = 0) THEN GOTO timer3 - NEXT a - -timer3: - - timerTime(element!, a) = time! - timerValue(element!, a) = value! - -END SUB - -SUB timerdisp - LOCATE 1, 1 - - ' Display the current state of timers - FOR a = 0 TO 10 - PRINT timerCplace(a), timerCtime(a), timerCvalue(a) - NEXT a - -END SUB - -SUB timerinit - timerLast = TIMER - - paus = 24 - - ' Initialize stuff size - timerAdd 0, 0, 50 - timerAdd 0, 7, 10 - timerAdd 0, 20, 10 - timerAdd 0, 24, 0 - timerAdd 0, 1000, 0 - - ' Initialize stuff speed - timerAdd 1, 0, .1 - timerAdd 1, 1000, 1000 - - ' Initialize stuff X & Y - timerAdd 2, 0, 160 - timerAdd 3, 0, 100 - - timerAdd 2, 5, 160 - timerAdd 3, 5, 100 - - timerAdd 2, 9, 280 - timerAdd 3, 9, 160 - - timerAdd 2, 10, 280 - timerAdd 3, 10, 160 - - timerAdd 2, 20, 40 - timerAdd 3, 20, 160 - - timerAdd 2, 1000, 40 - timerAdd 3, 1000, 160 - - ' Initialize stuff rotations - timerAdd 4, 0, .1 - timerAdd 4, 10, .1 - timerAdd 4, 22, 18 - timerAdd 4, 2000, 10000 - - ' Initialize KHK message X - - timerAdd 5, 0, -1 - timerAdd 5, 5, -1 - timerAdd 5, 9, 50 - timerAdd 5, 10, 30 - timerAdd 5, paus, 30 - timerAdd 5, paus + 2, 321 - - ' Initialize Ellips Y & radius - timerAdd 6, 0, -1 - timerAdd 6, 4, -1 - timerAdd 6, 10, 30 - timerAdd 6, 1000, 50 - - timerAdd 7, 0, 1 - timerAdd 7, 6, 1 - timerAdd 7, 12, 130 - - timerAdd 7, paus, 130 - timerAdd 7, paus + 2, 1 - - ' Initialize "Infotehnoloogia" message - - timerAdd 8, 0, 320 - timerAdd 8, 11, 320 - timerAdd 8, 20, 100 - timerAdd 8, paus, 100 - timerAdd 8, paus + 1, -1 - -END SUB - -SUB timerprocess - timerCurrent = TIMER - timerDiff = timerCurrent - timerLast - timerLast = timerCurrent - - FOR a = 0 TO 50 - ctim = timerCtime(a) + timerDiff - Cplace = timerCplace(a) -timer2: - IF timerTime(a, Cplace + 1) = -1 THEN - ctim = 0 - Cplace = 0 - END IF - - ' Update the current time and value of each element - IF timerTime(a, Cplace + 1) < ctim THEN - IF timerTime(a, Cplace + 1) = 0 THEN - timerCvalue(a) = timerValue(a, Cplace) - GOTO timer1 - END IF - - Cplace = Cplace + 1 - GOTO timer2 - END IF - - v1 = timerValue(a, Cplace) - t1 = timerTime(a, Cplace) - v2 = timerValue(a, Cplace + 1) - t2 = timerTime(a, Cplace + 1) - - IF v1 = v2 THEN - timerCvalue(a) = v1 - ELSE - Tdiff1 = t2 - t1 - Tdiff2 = ctim - t1 - Vdiff = v2 - v1 - - ' Interpolate the current value - timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 - END IF -timer1: - timerCplace(a) = Cplace - timerCtime(a) = ctim - NEXT a - -END SUB - -SUB turnon - SCREEN 7, , , 1 - - FOR x = 0 TO 160 STEP 15 - LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF - LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF - LINE (160 - x, 90)-(160 + x, 110), 15, BF - - PCOPY 0, 1 - CLS - SOUND 0, .5 - NEXT x - - FOR y = 10 TO 100 STEP 15 - CLS - - LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF - LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF - LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF - - PCOPY 0, 1 - SOUND 0, .5 - NEXT y - - FOR a = 1 TO 25 - prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 - PCOPY 0, 1 - SOUND 0, 1 - NEXT a - - DIM buf(1 TO 1000) - - FOR b = 1 TO 30 - FOR a = 0 TO 195 - t = ABS(100 - a) - - IF RND * 50 < t THEN - GET (1, a)-(318, a + 1), buf - - ' Randomly shift parts of the screen - IF a > 100 THEN - PUT (0, a), buf, PSET - ELSE - PUT (2, a), buf, PSET - END IF - END IF - NEXT a - - PCOPY 0, 1 - NEXT b - -END SUB diff --git a/Graphics/Texture generation/map1.bas b/Graphics/Texture generation/map1.bas deleted file mode 100755 index 56ffcce..0000000 --- a/Graphics/Texture generation/map1.bas +++ /dev/null @@ -1,45 +0,0 @@ -' Yellow flame -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2003.12, Initial version -' 2024.08, Improved program readability using AI - - -DEFINT A-Z ' Define all variables as integers -SCREEN 13 ' Set graphics mode to 320x200 with 256 colors -RANDOMIZE TIMER ' Seed the random number generator - -' Initialize palette registers with sine wave colors -FOR paletteIndex = 0 TO 255 - OUT &H3C8, paletteIndex - OUT &H3C9, INT(SIN(paletteIndex / 21) * 30 + 30) - OUT &H3C9, INT(SIN(paletteIndex / 34) * 30 + 30) - OUT &H3C9, INT(SIN(paletteIndex / 10) * 30 + 30) -NEXT paletteIndex - -' Generate the surface pattern -FOR y = 1 TO 199 - FOR x = 1 TO 319 - prevPixel = POINT(x, y - 1) - leftPixel = POINT(x - 1, y) - diagPixel = POINT(x - 1, y - 1) - left2Pixel = POINT(x - 2, y) - - ' Calculate the average of surrounding pixels and add some randomness - newColor = (prevPixel + leftPixel + diagPixel + left2Pixel) \ 4 + (RND * 5 - 2) - - ' Clamp the color value within the valid range - IF newColor < 0 THEN newColor = 0 - IF newColor > 63 THEN newColor = 63 - - ' Set the pixel with the calculated color - PSET (x, y), newColor - NEXT x -NEXT y - -' Wait for user input to exit -userInput$ = INPUT$(1) - diff --git a/Graphics/Texture generation/map2.bas b/Graphics/Texture generation/map2.bas deleted file mode 100755 index 7fde5c0..0000000 --- a/Graphics/Texture generation/map2.bas +++ /dev/null @@ -1,35 +0,0 @@ -' Old paper surface -' made by Svjatoslav Agejenko -' in 2003.12 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslav@svjatoslav.eu - -DEFINT A-Z -SCREEN 13 -RANDOMIZE TIMER -FOR a = 0 TO 63 -OUT &H3C8, a -OUT &H3C9, a 'R -OUT &H3C9, a 'G -OUT &H3C9, a 'B -NEXT a - -z = 0 - -FOR y = 1 TO 190 -FOR x = 1 TO 310 -p = p + 1 -IF p > 10 THEN z = RND * c / 20: p = p - (RND * 20 + 10) -c1 = POINT(x, y - 1) -c = (c1 + c) \ 2 + ((RND * 2) - z) -IF c < 0 THEN c = 0 -IF c > 63 THEN c = 63 -PSET (x - 1, y), c - -NEXT x -PSET (0, y + 1), c -NEXT y -a$ = INPUT$(1) - -SYSTEM - diff --git a/Graphics/Texture generation/map3.bas b/Graphics/Texture generation/map3.bas deleted file mode 100755 index 927409b..0000000 --- a/Graphics/Texture generation/map3.bas +++ /dev/null @@ -1,94 +0,0 @@ -DECLARE SUB DrawPixels (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) -' Program to render cloud surface using diamond square algorithm. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2003.12, Initial version -' 2024.08, Improved program readability using AI - -DECLARE SUB DrawBox (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) -DECLARE SUB SetPalette () -DECLARE SUB InitializeProgram () -DEFINT A-Z -InitializeProgram - -DIM SHARED maxLightness AS INTEGER -maxLightness = 127 - -DIM scale AS INTEGER -scale = 2 ^ 8 - -1 : -scale = scale \ 2 -x1 = (319 \ scale) - 1 -y1 = (199 \ scale) - 1 - -FOR y = 0 TO y1 - FOR x = 0 TO x1 - DrawPixels x * scale, y * scale, scale - NEXT x -NEXT y - -IF scale > 2 THEN GOTO 1 -WAITa$ = INPUT$(1) - -SUB DrawPixels (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) - ' Get the lightness values for the corners of the box - c1 = POINT(x1, y1) - c2 = POINT(x1 + s, y1) - c3 = POINT(x1, y1 + s) - c4 = POINT(x1 + s, y1 + s) - - ' Calculate the midpoint lightness values - sp = s \ 2 - k = s * 2 - kp = k / 2 - - cc2 = ((c1 + c2) / 2) + (RND * k) - kp - IF cc2 > maxLightness THEN cc2 = maxLightness - IF cc2 < 0 THEN cc2 = 0 - - cc3 = ((c1 + c3) / 2) + (RND * k) - kp - IF cc3 > maxLightness THEN cc3 = maxLightness - IF cc3 < 0 THEN cc3 = 0 - - cc4 = ((c2 + c4) / 2) + (RND * k) - kp - IF cc4 > maxLightness THEN cc4 = maxLightness - IF cc4 < 0 THEN cc4 = 0 - - cc5 = ((c3 + c4) / 2) + (RND * k) - kp - IF cc5 > maxLightness THEN cc5 = maxLightness - IF cc5 < 0 THEN cc5 = 0 - - ' Calculate the central lightness value - cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * k) - kp - IF cc1 > maxLightness THEN cc1 = maxLightness - IF cc1 < 0 THEN cc1 = 0 - - ' Set the calculated lightness values for the box - PSET (x1 + sp, y1 + sp), cc1 - PSET (x1 + sp, y1), cc2 - PSET (x1, y1 + sp), cc3 - PSET (x1 + s, y1 + sp), cc4 - PSET (x1 + sp, y1 + s), cc5 -END SUB - -SUB InitializeProgram - ' Set the screen mode and initialize the color palette - SCREEN 13 - SetPalette - RANDOMIZE TIMER -END SUB - -SUB SetPalette - ' Set the color palette for lightness levels - FOR a = 0 TO 255 - OUT &H3C8, a - OUT &H3C9, a / 4 - OUT &H3C9, a / 3 - OUT &H3C9, a / 2.3 - NEXT a -END SUB - diff --git a/Graphics/Texture generation/oldpaper.bas b/Graphics/Texture generation/oldpaper.bas deleted file mode 100755 index 8bdca0d..0000000 --- a/Graphics/Texture generation/oldpaper.bas +++ /dev/null @@ -1,84 +0,0 @@ -' Program to render surface resembling old paper. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2003.12, Initial version -' 2024.08, Improved program readability using AI - -DECLARE SUB DrawPaper (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER) - -DEFINT A-Z -SCREEN 12 -RANDOMIZE TIMER - -' Set color palette -FOR colorIndex = 0 TO 15 - OUT &H3C8, colorIndex - OUT &H3C9, colorIndex * 3 - OUT &H3C9, colorIndex * 3 - OUT &H3C9, colorIndex * 2 -NEXT colorIndex - -' Generate and draw paper surfaces continuously until a key is pressed -1 - x1 = RND * 600 + 20 - x2 = RND * 600 + 20 - y1 = RND * 400 + 40 - y2 = RND * 400 + 40 - - ' Ensure x1 is less than x2 and y1 is less than y2 - IF x1 > x2 THEN SWAP x1, x2 - IF y1 > y2 THEN SWAP y1, y2 - - ' Draw the paper with the calculated coordinates - CALL DrawPaper(x1, y1, x2, y2) - - ' Continue drawing until any key is pressed - IF INKEY$ <> "" THEN SYSTEM -GOTO 1 - -SUB DrawPaper (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER) - DIM c AS INTEGER - DIM z AS SINGLE - DIM p AS INTEGER - DIM c1 AS INTEGER - DIM yl AS INTEGER - - ' Initialize variables - yl = y2 + 1 - z = 0 - - ' Draw the bottom and right borders of the paper - LINE (x1, y1)-(x2, y1), 0 - LINE (x2, y1)-(x2, y2), 0 - - ' Generate the texture of the paper - FOR y = y1 + 1 TO y2 - c = 0 - FOR x = x1 TO x2 - p = p + 1 - - ' Randomly reset the pattern counter - IF p > 23 THEN - z = RND * 1 - p = 0 - END IF - - ' Get the color of the previous row - c1 = POINT(x, y - 1) - - ' Calculate the average color with random variation - c = (c1 + c) / 2 + (RND * (2 + (5 / y))) - (3 / (yl - y)) - z - - ' Clamp the color value within the range [0, 15] - IF c < 0 THEN c = 0 - IF c > 15 THEN c = 15 - - ' Set the pixel color for the current position - PSET (x - 1, y), c - NEXT x - NEXT y -END SUB - diff --git a/Graphics/Texture generation/test3.bas b/Graphics/Texture generation/test3.bas deleted file mode 100755 index c23659c..0000000 --- a/Graphics/Texture generation/test3.bas +++ /dev/null @@ -1,27 +0,0 @@ -' Strange surface -' Made by Svjatoslav Agejenko in 2003.12 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslav@svjatoslav.eu - -SCREEN 13 - -' Initialize the screen mode to 320x200 with 16 colors - -' Outer loop for the vertical axis (y-coordinate) -FOR ycoordinate = 1 TO 199 - ' Inner loop for the horizontal axis (x-coordinate) - FOR xcoordinate = 1 TO 319 - ' Calculate the sine value based on the squared distances from the origin - colorvalue = SIN((xcoordinate ^ 2 + ycoordinate ^ 2) / 10) * 10 - - ' Clamp the color value to the range [0, 15] - IF colorvalue < 0 THEN colorvalue = 0 - IF colorvalue > 15 THEN colorvalue = 15 - - ' Set the pixel color at (xcoordinate, ycoordinate) with an offset to use the full 16-color palette - PSET (xcoordinate, ycoordinate), colorvalue + 16 - NEXT xcoordinate -NEXT ycoordinate - -' Wait for a key press before exiting -WAIT 30, 1 \ No newline at end of file diff --git a/Graphics/Texture generation/wood.bas b/Graphics/Texture generation/wood.bas deleted file mode 100755 index 2bf38d0..0000000 --- a/Graphics/Texture generation/wood.bas +++ /dev/null @@ -1,73 +0,0 @@ -' Program to render surface resembling wood. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2003.12, Initial version -' 2024.08, Improved program readability using AI - -DECLARE SUB DrawWood(xPos%, yPos%) -DECLARE SUB DrawPaper(xPos%, y1Pos%) -DEFINT A-Z -SCREEN 12 -RANDOMIZE TIMER - -' Set palette colors -FOR colorIndex = 0 TO 15 - OUT &H3C8, colorIndex - OUT &H3C9, colorIndex * 4 - OUT &H3C9, colorIndex * 3 - OUT &H3C9, colorIndex * 0 -NEXT colorIndex - -' Main loop to draw wood at random positions -100: -xPos = RND * 400 + 200 -yPos = RND * 100 + 200 -CALL DrawWood(xPos, yPos) -GOTO 100 - -' Wait for user input to exit -a$ = INPUT$(1) - -SUB DrawWood (xPos, yPos) - DIM yl AS INTEGER - DIM pe AS INTEGER - DIM p AS INTEGER - DIM z AS INTEGER - DIM c AS INTEGER - DIM c1 AS INTEGER - DIM c2 AS INTEGER - - ' Draw the outline of the wood - yl = yPos + 1 - LINE (0, 0)-(xPos, yPos), 0, BF - LINE (5, 5)-(xPos - 5, yl - 5), 8, BF - LINE (10, 10)-(xPos - 10, yl - 10), 15, BF - - ' Initialize random factor for color variation - pe = RND * 300 - - ' Draw the wood texture - FOR y = yPos - 1 TO 0 STEP -1 - FOR x = xPos - 1 TO 0 STEP -1 - p = p + 1 - IF p > xPos THEN - z = RND * 13 - p = SIN((y + pe) / 100) * xPos - END IF - c1 = POINT(x, y + 1) - c2 = POINT(x, y) - c = (c1 * 2 + c2 + c * 3 + z) / 7 + RND * 1 - - ' Ensure color value is within the valid range - IF c < 0 THEN c = 0 - IF c > 15 THEN c = 15 - - ' Set the pixel color for the wood texture - PSET (x + 1, y), c - NEXT x - NEXT y - -END SUB \ No newline at end of file diff --git a/Graphics/Textures/map1.bas b/Graphics/Textures/map1.bas new file mode 100755 index 0000000..56ffcce --- /dev/null +++ b/Graphics/Textures/map1.bas @@ -0,0 +1,45 @@ +' Yellow flame +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.12, Initial version +' 2024.08, Improved program readability using AI + + +DEFINT A-Z ' Define all variables as integers +SCREEN 13 ' Set graphics mode to 320x200 with 256 colors +RANDOMIZE TIMER ' Seed the random number generator + +' Initialize palette registers with sine wave colors +FOR paletteIndex = 0 TO 255 + OUT &H3C8, paletteIndex + OUT &H3C9, INT(SIN(paletteIndex / 21) * 30 + 30) + OUT &H3C9, INT(SIN(paletteIndex / 34) * 30 + 30) + OUT &H3C9, INT(SIN(paletteIndex / 10) * 30 + 30) +NEXT paletteIndex + +' Generate the surface pattern +FOR y = 1 TO 199 + FOR x = 1 TO 319 + prevPixel = POINT(x, y - 1) + leftPixel = POINT(x - 1, y) + diagPixel = POINT(x - 1, y - 1) + left2Pixel = POINT(x - 2, y) + + ' Calculate the average of surrounding pixels and add some randomness + newColor = (prevPixel + leftPixel + diagPixel + left2Pixel) \ 4 + (RND * 5 - 2) + + ' Clamp the color value within the valid range + IF newColor < 0 THEN newColor = 0 + IF newColor > 63 THEN newColor = 63 + + ' Set the pixel with the calculated color + PSET (x, y), newColor + NEXT x +NEXT y + +' Wait for user input to exit +userInput$ = INPUT$(1) + diff --git a/Graphics/Textures/map2.bas b/Graphics/Textures/map2.bas new file mode 100755 index 0000000..7fde5c0 --- /dev/null +++ b/Graphics/Textures/map2.bas @@ -0,0 +1,35 @@ +' Old paper surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslav@svjatoslav.eu + +DEFINT A-Z +SCREEN 13 +RANDOMIZE TIMER +FOR a = 0 TO 63 +OUT &H3C8, a +OUT &H3C9, a 'R +OUT &H3C9, a 'G +OUT &H3C9, a 'B +NEXT a + +z = 0 + +FOR y = 1 TO 190 +FOR x = 1 TO 310 +p = p + 1 +IF p > 10 THEN z = RND * c / 20: p = p - (RND * 20 + 10) +c1 = POINT(x, y - 1) +c = (c1 + c) \ 2 + ((RND * 2) - z) +IF c < 0 THEN c = 0 +IF c > 63 THEN c = 63 +PSET (x - 1, y), c + +NEXT x +PSET (0, y + 1), c +NEXT y +a$ = INPUT$(1) + +SYSTEM + diff --git a/Graphics/Textures/map3.bas b/Graphics/Textures/map3.bas new file mode 100755 index 0000000..927409b --- /dev/null +++ b/Graphics/Textures/map3.bas @@ -0,0 +1,94 @@ +DECLARE SUB DrawPixels (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) +' Program to render cloud surface using diamond square algorithm. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.12, Initial version +' 2024.08, Improved program readability using AI + +DECLARE SUB DrawBox (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) +DECLARE SUB SetPalette () +DECLARE SUB InitializeProgram () +DEFINT A-Z +InitializeProgram + +DIM SHARED maxLightness AS INTEGER +maxLightness = 127 + +DIM scale AS INTEGER +scale = 2 ^ 8 + +1 : +scale = scale \ 2 +x1 = (319 \ scale) - 1 +y1 = (199 \ scale) - 1 + +FOR y = 0 TO y1 + FOR x = 0 TO x1 + DrawPixels x * scale, y * scale, scale + NEXT x +NEXT y + +IF scale > 2 THEN GOTO 1 +WAITa$ = INPUT$(1) + +SUB DrawPixels (x1 AS INTEGER, y1 AS INTEGER, s AS INTEGER) + ' Get the lightness values for the corners of the box + c1 = POINT(x1, y1) + c2 = POINT(x1 + s, y1) + c3 = POINT(x1, y1 + s) + c4 = POINT(x1 + s, y1 + s) + + ' Calculate the midpoint lightness values + sp = s \ 2 + k = s * 2 + kp = k / 2 + + cc2 = ((c1 + c2) / 2) + (RND * k) - kp + IF cc2 > maxLightness THEN cc2 = maxLightness + IF cc2 < 0 THEN cc2 = 0 + + cc3 = ((c1 + c3) / 2) + (RND * k) - kp + IF cc3 > maxLightness THEN cc3 = maxLightness + IF cc3 < 0 THEN cc3 = 0 + + cc4 = ((c2 + c4) / 2) + (RND * k) - kp + IF cc4 > maxLightness THEN cc4 = maxLightness + IF cc4 < 0 THEN cc4 = 0 + + cc5 = ((c3 + c4) / 2) + (RND * k) - kp + IF cc5 > maxLightness THEN cc5 = maxLightness + IF cc5 < 0 THEN cc5 = 0 + + ' Calculate the central lightness value + cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * k) - kp + IF cc1 > maxLightness THEN cc1 = maxLightness + IF cc1 < 0 THEN cc1 = 0 + + ' Set the calculated lightness values for the box + PSET (x1 + sp, y1 + sp), cc1 + PSET (x1 + sp, y1), cc2 + PSET (x1, y1 + sp), cc3 + PSET (x1 + s, y1 + sp), cc4 + PSET (x1 + sp, y1 + s), cc5 +END SUB + +SUB InitializeProgram + ' Set the screen mode and initialize the color palette + SCREEN 13 + SetPalette + RANDOMIZE TIMER +END SUB + +SUB SetPalette + ' Set the color palette for lightness levels + FOR a = 0 TO 255 + OUT &H3C8, a + OUT &H3C9, a / 4 + OUT &H3C9, a / 3 + OUT &H3C9, a / 2.3 + NEXT a +END SUB + diff --git a/Graphics/Textures/oldpaper.bas b/Graphics/Textures/oldpaper.bas new file mode 100755 index 0000000..8bdca0d --- /dev/null +++ b/Graphics/Textures/oldpaper.bas @@ -0,0 +1,84 @@ +' Program to render surface resembling old paper. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.12, Initial version +' 2024.08, Improved program readability using AI + +DECLARE SUB DrawPaper (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER) + +DEFINT A-Z +SCREEN 12 +RANDOMIZE TIMER + +' Set color palette +FOR colorIndex = 0 TO 15 + OUT &H3C8, colorIndex + OUT &H3C9, colorIndex * 3 + OUT &H3C9, colorIndex * 3 + OUT &H3C9, colorIndex * 2 +NEXT colorIndex + +' Generate and draw paper surfaces continuously until a key is pressed +1 + x1 = RND * 600 + 20 + x2 = RND * 600 + 20 + y1 = RND * 400 + 40 + y2 = RND * 400 + 40 + + ' Ensure x1 is less than x2 and y1 is less than y2 + IF x1 > x2 THEN SWAP x1, x2 + IF y1 > y2 THEN SWAP y1, y2 + + ' Draw the paper with the calculated coordinates + CALL DrawPaper(x1, y1, x2, y2) + + ' Continue drawing until any key is pressed + IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + +SUB DrawPaper (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER) + DIM c AS INTEGER + DIM z AS SINGLE + DIM p AS INTEGER + DIM c1 AS INTEGER + DIM yl AS INTEGER + + ' Initialize variables + yl = y2 + 1 + z = 0 + + ' Draw the bottom and right borders of the paper + LINE (x1, y1)-(x2, y1), 0 + LINE (x2, y1)-(x2, y2), 0 + + ' Generate the texture of the paper + FOR y = y1 + 1 TO y2 + c = 0 + FOR x = x1 TO x2 + p = p + 1 + + ' Randomly reset the pattern counter + IF p > 23 THEN + z = RND * 1 + p = 0 + END IF + + ' Get the color of the previous row + c1 = POINT(x, y - 1) + + ' Calculate the average color with random variation + c = (c1 + c) / 2 + (RND * (2 + (5 / y))) - (3 / (yl - y)) - z + + ' Clamp the color value within the range [0, 15] + IF c < 0 THEN c = 0 + IF c > 15 THEN c = 15 + + ' Set the pixel color for the current position + PSET (x - 1, y), c + NEXT x + NEXT y +END SUB + diff --git a/Graphics/Textures/test3.bas b/Graphics/Textures/test3.bas new file mode 100755 index 0000000..c23659c --- /dev/null +++ b/Graphics/Textures/test3.bas @@ -0,0 +1,27 @@ +' Strange surface +' Made by Svjatoslav Agejenko in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslav@svjatoslav.eu + +SCREEN 13 + +' Initialize the screen mode to 320x200 with 16 colors + +' Outer loop for the vertical axis (y-coordinate) +FOR ycoordinate = 1 TO 199 + ' Inner loop for the horizontal axis (x-coordinate) + FOR xcoordinate = 1 TO 319 + ' Calculate the sine value based on the squared distances from the origin + colorvalue = SIN((xcoordinate ^ 2 + ycoordinate ^ 2) / 10) * 10 + + ' Clamp the color value to the range [0, 15] + IF colorvalue < 0 THEN colorvalue = 0 + IF colorvalue > 15 THEN colorvalue = 15 + + ' Set the pixel color at (xcoordinate, ycoordinate) with an offset to use the full 16-color palette + PSET (xcoordinate, ycoordinate), colorvalue + 16 + NEXT xcoordinate +NEXT ycoordinate + +' Wait for a key press before exiting +WAIT 30, 1 \ No newline at end of file diff --git a/Graphics/Textures/wood.bas b/Graphics/Textures/wood.bas new file mode 100755 index 0000000..2bf38d0 --- /dev/null +++ b/Graphics/Textures/wood.bas @@ -0,0 +1,73 @@ +' Program to render surface resembling wood. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.12, Initial version +' 2024.08, Improved program readability using AI + +DECLARE SUB DrawWood(xPos%, yPos%) +DECLARE SUB DrawPaper(xPos%, y1Pos%) +DEFINT A-Z +SCREEN 12 +RANDOMIZE TIMER + +' Set palette colors +FOR colorIndex = 0 TO 15 + OUT &H3C8, colorIndex + OUT &H3C9, colorIndex * 4 + OUT &H3C9, colorIndex * 3 + OUT &H3C9, colorIndex * 0 +NEXT colorIndex + +' Main loop to draw wood at random positions +100: +xPos = RND * 400 + 200 +yPos = RND * 100 + 200 +CALL DrawWood(xPos, yPos) +GOTO 100 + +' Wait for user input to exit +a$ = INPUT$(1) + +SUB DrawWood (xPos, yPos) + DIM yl AS INTEGER + DIM pe AS INTEGER + DIM p AS INTEGER + DIM z AS INTEGER + DIM c AS INTEGER + DIM c1 AS INTEGER + DIM c2 AS INTEGER + + ' Draw the outline of the wood + yl = yPos + 1 + LINE (0, 0)-(xPos, yPos), 0, BF + LINE (5, 5)-(xPos - 5, yl - 5), 8, BF + LINE (10, 10)-(xPos - 10, yl - 10), 15, BF + + ' Initialize random factor for color variation + pe = RND * 300 + + ' Draw the wood texture + FOR y = yPos - 1 TO 0 STEP -1 + FOR x = xPos - 1 TO 0 STEP -1 + p = p + 1 + IF p > xPos THEN + z = RND * 13 + p = SIN((y + pe) / 100) * xPos + END IF + c1 = POINT(x, y + 1) + c2 = POINT(x, y) + c = (c1 * 2 + c2 + c * 3 + z) / 7 + RND * 1 + + ' Ensure color value is within the valid range + IF c < 0 THEN c = 0 + IF c > 15 THEN c = 15 + + ' Set the pixel color for the wood texture + PSET (x + 1, y), c + NEXT x + NEXT y + +END SUB \ No newline at end of file diff --git a/Math/05graaf.bas b/Math/05graaf.bas deleted file mode 100755 index cdb2607..0000000 --- a/Math/05graaf.bas +++ /dev/null @@ -1,81 +0,0 @@ -' 2D Graph Plotter by Svjatoslav Agejenko - -' 2003.12, Created initial version -' 2024.08, Updated for better readability and maintainability - -' Homepage: https://svjatoslav.eu -' email: svjatoslav@svjatoslav.eu - -DECLARE SUB InitializeGraphicsEnvironment () -DECLARE SUB PlotPoint (x1 AS SINGLE, y1 AS SINGLE, x2 AS SINGLE, y2 AS SINGLE, colorCode AS INTEGER) - -' Scaling factor for the graph -DIM SHARED scaleFactor AS INTEGER -scaleFactor = 100 - -' Initialize the graphics environment -InitializeGraphicsEnvironment - -' Set the origin of the graph -DIM originX AS SINGLE -DIM originY AS SINGLE -originX = -320 / scaleFactor -originY = 0 - -' Loop to plot each point on the graph based on the formula -DIM currentX AS SINGLE -DIM currentY AS SINGLE -FOR currentX = -320 / scaleFactor TO 320 / scaleFactor STEP 1 / scaleFactor - ' Function to calculate y-value based on x-value - currentY = 1 - (COS(currentX * 2)) + (SIN(currentX * 2)) ' User-defined formula - - ' Plot the point and update the origin for the next segment - PlotPoint currentX, currentY, originX, originY, 14 - originX = currentX - originY = currentY -NEXT currentX - -' Subroutine to initialize the graphics window and grid -SUB InitializeGraphicsEnvironment - SCREEN 12 - - ' Draw horizontal grid lines - DIM horizontalGridStep AS SINGLE - FOR horizontalGridStep = -320 TO 320 - IF horizontalGridStep / scaleFactor = horizontalGridStep \ scaleFactor THEN - LINE (horizontalGridStep + 320, 0)-(horizontalGridStep + 320, 479), 1 - END IF - NEXT horizontalGridStep - - ' Draw vertical grid lines - DIM verticalGridStep AS SINGLE - FOR verticalGridStep = -240 TO 240 - IF verticalGridStep / scaleFactor = verticalGridStep \ scaleFactor THEN - LINE (0, verticalGridStep + 240)-(639, verticalGridStep + 240), 1 - END IF - NEXT verticalGridStep - - ' Draw the central axis lines - LINE (0, 240)-(639, 240), 3 - LINE (320, 0)-(320, 479), 3 -END SUB - -' Subroutine to plot a point on the graph -SUB PlotPoint (x AS SINGLE, y AS SINGLE, x1 AS SINGLE, y1 AS SINGLE, colorCode AS INTEGER) - ' Convert graph coordinates to screen pixel coordinates - DIM screenX1 AS INTEGER - DIM screenY1 AS INTEGER - DIM screenX2 AS INTEGER - DIM screenY2 AS INTEGER - - screenX1 = (x * scaleFactor) + 320 - screenY1 = 240 - (y * scaleFactor) - screenX2 = (x1 * scaleFactor) + 320 - screenY2 = 240 - (y1 * scaleFactor) - - ' Check if the point is within the screen boundaries before plotting - IF screenX1 >= 0 AND screenY1 >= 0 AND screenX1 <= 639 AND screenY1 <= 479 AND screenX2 >= 0 AND screenY2 >= 0 AND screenX2 <= 639 AND screenY2 <= 479 THEN - LINE (screenX1, screenY1)-(screenX2, screenY2), colorCode - END IF -END SUB - diff --git a/Math/2D graph plot.bas b/Math/2D graph plot.bas new file mode 100755 index 0000000..cdb2607 --- /dev/null +++ b/Math/2D graph plot.bas @@ -0,0 +1,81 @@ +' 2D Graph Plotter by Svjatoslav Agejenko + +' 2003.12, Created initial version +' 2024.08, Updated for better readability and maintainability + +' Homepage: https://svjatoslav.eu +' email: svjatoslav@svjatoslav.eu + +DECLARE SUB InitializeGraphicsEnvironment () +DECLARE SUB PlotPoint (x1 AS SINGLE, y1 AS SINGLE, x2 AS SINGLE, y2 AS SINGLE, colorCode AS INTEGER) + +' Scaling factor for the graph +DIM SHARED scaleFactor AS INTEGER +scaleFactor = 100 + +' Initialize the graphics environment +InitializeGraphicsEnvironment + +' Set the origin of the graph +DIM originX AS SINGLE +DIM originY AS SINGLE +originX = -320 / scaleFactor +originY = 0 + +' Loop to plot each point on the graph based on the formula +DIM currentX AS SINGLE +DIM currentY AS SINGLE +FOR currentX = -320 / scaleFactor TO 320 / scaleFactor STEP 1 / scaleFactor + ' Function to calculate y-value based on x-value + currentY = 1 - (COS(currentX * 2)) + (SIN(currentX * 2)) ' User-defined formula + + ' Plot the point and update the origin for the next segment + PlotPoint currentX, currentY, originX, originY, 14 + originX = currentX + originY = currentY +NEXT currentX + +' Subroutine to initialize the graphics window and grid +SUB InitializeGraphicsEnvironment + SCREEN 12 + + ' Draw horizontal grid lines + DIM horizontalGridStep AS SINGLE + FOR horizontalGridStep = -320 TO 320 + IF horizontalGridStep / scaleFactor = horizontalGridStep \ scaleFactor THEN + LINE (horizontalGridStep + 320, 0)-(horizontalGridStep + 320, 479), 1 + END IF + NEXT horizontalGridStep + + ' Draw vertical grid lines + DIM verticalGridStep AS SINGLE + FOR verticalGridStep = -240 TO 240 + IF verticalGridStep / scaleFactor = verticalGridStep \ scaleFactor THEN + LINE (0, verticalGridStep + 240)-(639, verticalGridStep + 240), 1 + END IF + NEXT verticalGridStep + + ' Draw the central axis lines + LINE (0, 240)-(639, 240), 3 + LINE (320, 0)-(320, 479), 3 +END SUB + +' Subroutine to plot a point on the graph +SUB PlotPoint (x AS SINGLE, y AS SINGLE, x1 AS SINGLE, y1 AS SINGLE, colorCode AS INTEGER) + ' Convert graph coordinates to screen pixel coordinates + DIM screenX1 AS INTEGER + DIM screenY1 AS INTEGER + DIM screenX2 AS INTEGER + DIM screenY2 AS INTEGER + + screenX1 = (x * scaleFactor) + 320 + screenY1 = 240 - (y * scaleFactor) + screenX2 = (x1 * scaleFactor) + 320 + screenY2 = 240 - (y1 * scaleFactor) + + ' Check if the point is within the screen boundaries before plotting + IF screenX1 >= 0 AND screenY1 >= 0 AND screenX1 <= 639 AND screenY1 <= 479 AND screenX2 >= 0 AND screenY2 >= 0 AND screenX2 <= 639 AND screenY2 <= 479 THEN + LINE (screenX1, screenY1)-(screenX2, screenY2), colorCode + END IF +END SUB + diff --git a/Math/Deriviative calculator.bas b/Math/Deriviative calculator.bas new file mode 100755 index 0000000..5f38c46 --- /dev/null +++ b/Math/Deriviative calculator.bas @@ -0,0 +1,85 @@ +' Program that computes and plots arbitrary mathematical function on a 2D graph. +' Also it computes and plots the derivative of the function. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 200?, Initial version +' 2024.09, Improved program readability using AI + + +DECLARE SUB Initialize () +DECLARE SUB PlotPoint (x, y, x1, y1, c!) +DIM SHARED scaleFactor + +scaleFactor = 50 ' Scale factor for the graph +Initialize + +oldX = -320 / scaleFactor +oldY = 0 + +FOR x = -320 / scaleFactor TO 320 / scaleFactor STEP 1 / scaleFactor + + ' Calculate the function value (replace with your desired formula) + t = x ^ 3 - (3 * x) + + PlotPoint x, t, oldX, prevY, 10 + y = (t - prevY) * scaleFactor + prevY = t + + PlotPoint x, y, oldX, oldY, 14 + oldX = x + oldY = y +NEXT x + +SUB Initialize + SCREEN 12 + + ' Draw vertical grid lines + FOR x = -320 TO 320 + IF x / scaleFactor = x \ scaleFactor THEN LINE (x + 320, 0)-(x + 320, 479), 1 + NEXT x + + ' Draw horizontal grid lines + FOR y = -240 TO 240 + IF y / scaleFactor = y \ scaleFactor THEN LINE (0, y + 240)-(639, y + 240), 1 + NEXT y + + ' Draw thicker vertical grid lines for every 5th unit + FOR x = -320 TO 320 + IF x / (scaleFactor * 5) = x \ (scaleFactor * 5) THEN LINE (x + 320, 0)-(x + 320, 479), 4 + NEXT x + + ' Draw thicker horizontal grid lines for every 5th unit + FOR y = -240 TO 240 + IF y / (scaleFactor * 5) = y \ (scaleFactor * 5) THEN LINE (0, y + 240)-(639, y + 240), 4 + NEXT y + + ' Draw x-axis and y-axis + LINE (0, 240)-(639, 240), 3 + LINE (320, 0)-(320, 479), 3 +END SUB + +SUB PlotPoint (x, y, x1, y1, c) + + x2 = (x * scaleFactor) + 320 + y2 = 240 - (y * scaleFactor) + x3 = (x1 * scaleFactor) + 320 + y3 = 240 - (y1 * scaleFactor) + + ' Check if the points are within the screen boundaries + IF x2 < 0 THEN GOTO Skip + IF y2 < 0 THEN GOTO Skip + IF x2 > 639 THEN GOTO Skip + IF y2 > 479 THEN GOTO Skip + IF x3 < 0 THEN GOTO Skip + IF y3 < 0 THEN GOTO Skip + IF x3 > 639 THEN GOTO Skip + IF y3 > 479 THEN GOTO Skip + + ' Draw a line between the two points with the specified color + LINE (x2, y2)-(x3, y3), c + +Skip: +END SUB diff --git a/Math/Gravitation simulator.bas b/Math/Gravitation simulator.bas new file mode 100755 index 0000000..138dcdc --- /dev/null +++ b/Math/Gravitation simulator.bas @@ -0,0 +1,54 @@ +' Gravitation Simulation +' By Svjatoslav Agejenko +' Homepage: svjatoslav.eu +' Email: svjatoslav@svjatoslav.eu + + +' 2001, Initial version +' 2024.08, Improved code readability + +' This program simulates the gravitational pull of a central mass +' on a small object in two-dimensional space. The simulation is +' visualized on the screen with the central mass as a large circle +' and the orbiting object as a smaller circle. + +DEFDBL A-Z ' Declare all variables as double precision for accuracy +SCREEN 12 ' Set the graphics mode to 640x480 resolution, 16 colors + +' Initialize position and velocity of the orbiting object +objX = -200 ' X-coordinate of the object +objY = 0 ' Y-coordinate of the object +objVelX = -1 ' X-velocity (speed) of the object +objVelY = 3 ' Y-velocity (speed) of the object + +' Draw the central mass as a large circle +CIRCLE (320, 240), 100, 3 + +' Main simulation loop +DO + + ' Draw a small circle to represent the orbiting object + CIRCLE (objX + 320, objY + 240), 2, 14 + + ' Update the position of the orbiting object + objX = objX + objVelX + objY = objY + objVelY + + ' Calculate the distance from the central mass + dist = SQR(objX * objX + objY * objY) + + ' Calculate the gravitational acceleration towards the center + gravAccel = 20 / dist ' Gravitational constant for this simulation + + ' Adjust velocities based on gravitational pull and distance + objVelX = objVelX + (gravAccel * (-objX) / dist) + objVelY = objVelY + (gravAccel * (-objY) / dist) + + ' Draw a line to show the object's trajectory + LINE (objX + 320, objY + 240)-(320, 240), 1 + + + SOUND 0, .1 + +LOOP + diff --git a/Math/Multiplication trainer.bas b/Math/Multiplication trainer.bas new file mode 100644 index 0000000..473f63e --- /dev/null +++ b/Math/Multiplication trainer.bas @@ -0,0 +1,186 @@ +' Program to teach and test multiplication. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2000, Initial version +' 2024, Improved program readability using AI + +DECLARE SUB vastus () +DEFINT A-Y +DECLARE SUB tere () +DIM SHARED nimi$ +DIM SHARED kus + +tere +vastus + +DEFINT Z +SUB tere + +' Clear the screen and set up graphics mode +CLS +SCREEN 13 +LOCATE 2, 1 +PRINT " Math teaching program" + +' Draw a simple background pattern +FOR y = 3 TO 20 + FOR x = 0 TO 320 + IF POINT(x, y) > 0 THEN + c = y + 56 + ELSE + c = 31 - y / 2 + END IF + PSET (x, y), c + NEXT x +NEXT y + +' Get user input for their name +LOCATE 5, 1 +COLOR 7 +INPUT "Enter your name ", nimi$ +LOCATE 5, 1 +COLOR 8 +PRINT "Enter your name " + nimi$ + +' Greet the user +LOCATE 6, 1 +COLOR 7 +PRINT "Hello " + nimi$ + "!" + +8 +LOCATE 7, 1 +COLOR 8 +PRINT SPACE$(35) +COLOR 7 +LOCATE 7, 1 +INPUT "How many questions would you like ? ", kus +LOCATE 7, 1 +COLOR 8 +PRINT SPACE$(35) +LOCATE 7, 1 +COLOR 8 +PRINT "How many questions would you like ?" + STR$(kus) + +' Validate the number of questions +IF kus < 5 THEN + PRINT "That would be too easy !" + GOTO 8 +END IF + +IF kus > 30 THEN + PRINT "That would be too hard !" + GOTO 8 +END IF + +PRINT "I will ask you some math questions." +PRINT "Press any button when you are ready..." + +' Initialize color palette +FOR a = 200 TO 230 + OUT &H3C8, a + OUT &H3C9, a - 200 + OUT &H3C9, 0 + OUT &H3C9, 0 +NEXT + +' Initialize color array +DIM varv(1 TO 32) + +c = 4 +d = 1 + +2 +FOR a = 0 TO 31 + ' Draw vertical lines with decreasing brightness + LINE (a * 10, 170)-(a * 10 + 10, 190), 200 + varv(a + 1), BF + varv(a + 1) = varv(a + 1) - 1 + IF varv(a + 1) < 0 THEN varv(a + 1) = 0 +NEXT a + +' Change the color index +c = c + d +IF c > 30 OR c < 3 THEN d = -d +varv(c) = 30 +SOUND 0, 1 + +' Check if user is ready +IF INKEY$ <> "" THEN GOTO 3 +GOTO 2 + +3 +CLS +END SUB + +DEFSNG Z +SUB vastus +RANDOMIZE TIMER + +mitmes = 0 +vale = 0 +oige = 0 +PRINT "How much is:" +4 +mitmes = mitmes + 1 +IF mitmes > kus THEN GOTO 6 + +' Generate random numbers for multiplication +ar1 = RND * 9 +ar2 = RND * 9 +a$ = STR$(ar1) + " X" + STR$(ar2) +PRINT " " +PRINT a$ + +5 +INPUT vas$ + +' Handle invalid inputs +IF LEFT$(vas$, 6) = "don't know" THEN + PRINT "Try at least !" + GOTO 5 +END IF + +' Convert input to number +IF vas$ = "0" THEN + vas = 0 + GOTO 10 +ELSE + vas = VAL(vas$) + IF vas = 0 THEN vas = -1 +END IF + +10 + +' Check if the answer is correct +IF ar1 * ar2 = vas THEN + oige = oige + 1 + PRINT "Correct !" +ELSE + PRINT "Wrong !" + PRINT "Correct answer is ", ar1 * ar2 + vale = vale + 1 +END IF + +GOTO 4 + +6 +PRINT "-------------------------" +COLOR 2 +PRINT "Wrong answers :", vale + +' Calculate the score +z = oige / kus * 100 + +hinne = 1 + +' Determine the grade +IF z >= 25 THEN hinne = 2 +IF z >= 50 THEN hinne = 3 +IF z >= 70 THEN hinne = 4 +IF z >= 90 THEN hinne = 5 + +COLOR 14 +PRINT "Your grade is: "; hinne +END SUB \ No newline at end of file diff --git a/Math/Sinus and cosinus table.bas b/Math/Sinus and cosinus table.bas new file mode 100755 index 0000000..6ab72ad --- /dev/null +++ b/Math/Sinus and cosinus table.bas @@ -0,0 +1,103 @@ +' SIN & COS table generator +' Created by Svjatoslav Agejenko. +' Homepage: https://svjatoslav.eu +' Email: svjatoslav@svjatoslav.eu + +' 2003.12, Initial version. +' 2024.08, Updated code readability. + + +' Screen dimensions and video mode settings +screenWidth = 640 +screenHeight = 480 +videoMode = 12 ' Video mode switch (0 for text mode, non-zero for graphics mode) +stringSize = 0 ' String size for text mode + +' Adjust screen dimensions for a more accurate representation +screenWidth = screenWidth / 11.3 +screenHeight = screenHeight / 11.7 + +' Determine string size based on video mode +IF stringSize = 0 THEN + SELECT CASE videoMode + CASE 12, 11 + stringSize = 16 + + CASE 9, 10 + stringSize = 14 + + CASE 1, 13, 2, 7, 8 + stringSize = 8 + END SELECT +ELSE + GOTO InitializeScreen +END IF + +InitializeScreen: +SCREEN videoMode + +' Draw grid and label axes +FOR gridLine = 1 TO 10 + ' Draw horizontal grid lines + LINE (0, gridLine * screenHeight)-(screenWidth * 10, gridLine * screenHeight), 8 + + ' Draw vertical grid lines + LINE (gridLine * screenWidth, 0)-(gridLine * screenWidth, screenHeight * 10), 8 + + ' Label horizontal axis with numbers + textRow = 10 * screenHeight / stringSize + 2 + textCol = gridLine * screenWidth / 8 + 1 + LOCATE textRow, textCol + PRINT CHR$(gridLine + 48); +NEXT gridLine + +' Label the end of the horizontal axis +LOCATE 10 * screenHeight / stringSize + 2, screenWidth * 10 / 8 +PRINT "10"; + +' Label special points on the vertical axis +LOCATE 1 * screenHeight / stringSize + 1, screenWidth * 10 / 8 + 3 +PRINT "-1"; +LOCATE 5 * screenHeight / stringSize + 1, screenWidth * 10 / 8 + 3 +PRINT "0"; +LOCATE 10 * screenHeight / stringSize, screenWidth * 10 / 8 + 3 +PRINT "1"; + +' Draw central horizontal and vertical lines +LINE (0, screenHeight * 5 + 1)-(screenWidth * 10, screenHeight * 5 + 1), 14 +LINE (5 * screenWidth + 1, 0)-(5 * screenWidth + 1, 10 * screenHeight), 14 + +' Plot SIN function +FOR angle = 0 TO 10 STEP .05 + xPosition = angle * screenWidth + yPosition = SIN(angle) * screenHeight * 5 + screenHeight * 5 + IF angle > 0 THEN LINE (xPositionPrev, yPositionPrev)-(xPosition, yPosition), 15 + xPositionPrev = xPosition + yPositionPrev = yPosition +NEXT angle + +' Label the SIN curve +textRow = yPosition / stringSize + 1 +textCol = screenWidth * 10 / 8 +LOCATE textRow, textCol +PRINT "sin"; + +' Plot COS function +FOR angle = 0 TO 10 STEP .05 + xPosition = angle * screenWidth + yPosition = COS(angle) * screenHeight * 5 + screenHeight * 5 + IF angle > 0 THEN LINE (xPositionPrev, yPositionPrev)-(xPosition, yPosition), 12 + xPositionPrev = xPosition + yPositionPrev = yPosition +NEXT angle + +' Label the COS curve +textRow = yPosition / stringSize + 1 +textCol = screenWidth * 10 / 8 +LOCATE textRow, textCol +PRINT "cos"; + +' Wait for user input before exiting +a$ = INPUT$(1) +SYSTEM + diff --git a/Math/Sinus computation.bas b/Math/Sinus computation.bas new file mode 100755 index 0000000..efbf0d1 --- /dev/null +++ b/Math/Sinus computation.bas @@ -0,0 +1,49 @@ +' Sinus Calculator +' by Svjatoslav Agejenko in 2003.12 +' Homepage: https://svjatoslav.eu +' Email: svjatoslav@svjatoslav.eu +' +' 2003.12, initial version +' 2024.08, used AI to enhance program readability +' +' This program calculates the sine of an angle without using +' the built-in SIN function. Then it plots the calculated sine +' wave alongside the true sine wave for comparison. There is intentional +' vertical 1 pixel offset between the two waves for better visibility of them both. + +SCREEN 12 + +' Draw a horizontal baseline +LINE (0, 240)-(640, 240), 15 + +' Initialize variables for the sine wave calculation +' r represents the current value of the sine approximation +' r1 represents the rate of change of the sine approximation +LET radius = 0 +LET rateOfChange = 1 + +' Iterate over each horizontal pixel to calculate and plot the sine values +FOR angleDegrees = 1 TO 639 + ' Calculate the actual sine value using the built-in SIN function + ' for comparison. + ' Scale and translate the sine wave to fit within the screen coordinates. + LET trueSineY = SIN(angleDegrees / 100) * 100 + 240 + PSET (angleDegrees, trueSineY), 15 + + ' Update the rate of change and the radius (sine approximation) + ' This is a simple implementation of the differential equation + ' that defines the sine function, effectively integrating over time + LET rateOfChange = rateOfChange + ((0 - radius) / 10000) + LET radius = radius + rateOfChange + + ' Calculate the approximate sine value using our own method + ' Offset the plot by 241 pixels to display below the true sine wave + LET approxSineY = radius + PSET (angleDegrees, approxSineY + 241), 12 +NEXT angleDegrees + +' Wait for a key press before ending the program +PRINT "Press any key to exit." +DO UNTIL INKEY$ <> "" +LOOP + diff --git a/Math/deriviative.bas b/Math/deriviative.bas deleted file mode 100755 index 5f38c46..0000000 --- a/Math/deriviative.bas +++ /dev/null @@ -1,85 +0,0 @@ -' Program that computes and plots arbitrary mathematical function on a 2D graph. -' Also it computes and plots the derivative of the function. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 200?, Initial version -' 2024.09, Improved program readability using AI - - -DECLARE SUB Initialize () -DECLARE SUB PlotPoint (x, y, x1, y1, c!) -DIM SHARED scaleFactor - -scaleFactor = 50 ' Scale factor for the graph -Initialize - -oldX = -320 / scaleFactor -oldY = 0 - -FOR x = -320 / scaleFactor TO 320 / scaleFactor STEP 1 / scaleFactor - - ' Calculate the function value (replace with your desired formula) - t = x ^ 3 - (3 * x) - - PlotPoint x, t, oldX, prevY, 10 - y = (t - prevY) * scaleFactor - prevY = t - - PlotPoint x, y, oldX, oldY, 14 - oldX = x - oldY = y -NEXT x - -SUB Initialize - SCREEN 12 - - ' Draw vertical grid lines - FOR x = -320 TO 320 - IF x / scaleFactor = x \ scaleFactor THEN LINE (x + 320, 0)-(x + 320, 479), 1 - NEXT x - - ' Draw horizontal grid lines - FOR y = -240 TO 240 - IF y / scaleFactor = y \ scaleFactor THEN LINE (0, y + 240)-(639, y + 240), 1 - NEXT y - - ' Draw thicker vertical grid lines for every 5th unit - FOR x = -320 TO 320 - IF x / (scaleFactor * 5) = x \ (scaleFactor * 5) THEN LINE (x + 320, 0)-(x + 320, 479), 4 - NEXT x - - ' Draw thicker horizontal grid lines for every 5th unit - FOR y = -240 TO 240 - IF y / (scaleFactor * 5) = y \ (scaleFactor * 5) THEN LINE (0, y + 240)-(639, y + 240), 4 - NEXT y - - ' Draw x-axis and y-axis - LINE (0, 240)-(639, 240), 3 - LINE (320, 0)-(320, 479), 3 -END SUB - -SUB PlotPoint (x, y, x1, y1, c) - - x2 = (x * scaleFactor) + 320 - y2 = 240 - (y * scaleFactor) - x3 = (x1 * scaleFactor) + 320 - y3 = 240 - (y1 * scaleFactor) - - ' Check if the points are within the screen boundaries - IF x2 < 0 THEN GOTO Skip - IF y2 < 0 THEN GOTO Skip - IF x2 > 639 THEN GOTO Skip - IF y2 > 479 THEN GOTO Skip - IF x3 < 0 THEN GOTO Skip - IF y3 < 0 THEN GOTO Skip - IF x3 > 639 THEN GOTO Skip - IF y3 > 479 THEN GOTO Skip - - ' Draw a line between the two points with the specified color - LINE (x2, y2)-(x3, y3), c - -Skip: -END SUB diff --git a/Math/gravi2.bas b/Math/gravi2.bas deleted file mode 100755 index 138dcdc..0000000 --- a/Math/gravi2.bas +++ /dev/null @@ -1,54 +0,0 @@ -' Gravitation Simulation -' By Svjatoslav Agejenko -' Homepage: svjatoslav.eu -' Email: svjatoslav@svjatoslav.eu - - -' 2001, Initial version -' 2024.08, Improved code readability - -' This program simulates the gravitational pull of a central mass -' on a small object in two-dimensional space. The simulation is -' visualized on the screen with the central mass as a large circle -' and the orbiting object as a smaller circle. - -DEFDBL A-Z ' Declare all variables as double precision for accuracy -SCREEN 12 ' Set the graphics mode to 640x480 resolution, 16 colors - -' Initialize position and velocity of the orbiting object -objX = -200 ' X-coordinate of the object -objY = 0 ' Y-coordinate of the object -objVelX = -1 ' X-velocity (speed) of the object -objVelY = 3 ' Y-velocity (speed) of the object - -' Draw the central mass as a large circle -CIRCLE (320, 240), 100, 3 - -' Main simulation loop -DO - - ' Draw a small circle to represent the orbiting object - CIRCLE (objX + 320, objY + 240), 2, 14 - - ' Update the position of the orbiting object - objX = objX + objVelX - objY = objY + objVelY - - ' Calculate the distance from the central mass - dist = SQR(objX * objX + objY * objY) - - ' Calculate the gravitational acceleration towards the center - gravAccel = 20 / dist ' Gravitational constant for this simulation - - ' Adjust velocities based on gravitational pull and distance - objVelX = objVelX + (gravAccel * (-objX) / dist) - objVelY = objVelY + (gravAccel * (-objY) / dist) - - ' Draw a line to show the object's trajectory - LINE (objX + 320, objY + 240)-(320, 240), 1 - - - SOUND 0, .1 - -LOOP - diff --git a/Math/multiplication.bas b/Math/multiplication.bas deleted file mode 100644 index 473f63e..0000000 --- a/Math/multiplication.bas +++ /dev/null @@ -1,186 +0,0 @@ -' Program to teach and test multiplication. -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2000, Initial version -' 2024, Improved program readability using AI - -DECLARE SUB vastus () -DEFINT A-Y -DECLARE SUB tere () -DIM SHARED nimi$ -DIM SHARED kus - -tere -vastus - -DEFINT Z -SUB tere - -' Clear the screen and set up graphics mode -CLS -SCREEN 13 -LOCATE 2, 1 -PRINT " Math teaching program" - -' Draw a simple background pattern -FOR y = 3 TO 20 - FOR x = 0 TO 320 - IF POINT(x, y) > 0 THEN - c = y + 56 - ELSE - c = 31 - y / 2 - END IF - PSET (x, y), c - NEXT x -NEXT y - -' Get user input for their name -LOCATE 5, 1 -COLOR 7 -INPUT "Enter your name ", nimi$ -LOCATE 5, 1 -COLOR 8 -PRINT "Enter your name " + nimi$ - -' Greet the user -LOCATE 6, 1 -COLOR 7 -PRINT "Hello " + nimi$ + "!" - -8 -LOCATE 7, 1 -COLOR 8 -PRINT SPACE$(35) -COLOR 7 -LOCATE 7, 1 -INPUT "How many questions would you like ? ", kus -LOCATE 7, 1 -COLOR 8 -PRINT SPACE$(35) -LOCATE 7, 1 -COLOR 8 -PRINT "How many questions would you like ?" + STR$(kus) - -' Validate the number of questions -IF kus < 5 THEN - PRINT "That would be too easy !" - GOTO 8 -END IF - -IF kus > 30 THEN - PRINT "That would be too hard !" - GOTO 8 -END IF - -PRINT "I will ask you some math questions." -PRINT "Press any button when you are ready..." - -' Initialize color palette -FOR a = 200 TO 230 - OUT &H3C8, a - OUT &H3C9, a - 200 - OUT &H3C9, 0 - OUT &H3C9, 0 -NEXT - -' Initialize color array -DIM varv(1 TO 32) - -c = 4 -d = 1 - -2 -FOR a = 0 TO 31 - ' Draw vertical lines with decreasing brightness - LINE (a * 10, 170)-(a * 10 + 10, 190), 200 + varv(a + 1), BF - varv(a + 1) = varv(a + 1) - 1 - IF varv(a + 1) < 0 THEN varv(a + 1) = 0 -NEXT a - -' Change the color index -c = c + d -IF c > 30 OR c < 3 THEN d = -d -varv(c) = 30 -SOUND 0, 1 - -' Check if user is ready -IF INKEY$ <> "" THEN GOTO 3 -GOTO 2 - -3 -CLS -END SUB - -DEFSNG Z -SUB vastus -RANDOMIZE TIMER - -mitmes = 0 -vale = 0 -oige = 0 -PRINT "How much is:" -4 -mitmes = mitmes + 1 -IF mitmes > kus THEN GOTO 6 - -' Generate random numbers for multiplication -ar1 = RND * 9 -ar2 = RND * 9 -a$ = STR$(ar1) + " X" + STR$(ar2) -PRINT " " -PRINT a$ - -5 -INPUT vas$ - -' Handle invalid inputs -IF LEFT$(vas$, 6) = "don't know" THEN - PRINT "Try at least !" - GOTO 5 -END IF - -' Convert input to number -IF vas$ = "0" THEN - vas = 0 - GOTO 10 -ELSE - vas = VAL(vas$) - IF vas = 0 THEN vas = -1 -END IF - -10 - -' Check if the answer is correct -IF ar1 * ar2 = vas THEN - oige = oige + 1 - PRINT "Correct !" -ELSE - PRINT "Wrong !" - PRINT "Correct answer is ", ar1 * ar2 - vale = vale + 1 -END IF - -GOTO 4 - -6 -PRINT "-------------------------" -COLOR 2 -PRINT "Wrong answers :", vale - -' Calculate the score -z = oige / kus * 100 - -hinne = 1 - -' Determine the grade -IF z >= 25 THEN hinne = 2 -IF z >= 50 THEN hinne = 3 -IF z >= 70 THEN hinne = 4 -IF z >= 90 THEN hinne = 5 - -COLOR 14 -PRINT "Your grade is: "; hinne -END SUB \ No newline at end of file diff --git a/Math/sin_cos.bas b/Math/sin_cos.bas deleted file mode 100755 index 6ab72ad..0000000 --- a/Math/sin_cos.bas +++ /dev/null @@ -1,103 +0,0 @@ -' SIN & COS table generator -' Created by Svjatoslav Agejenko. -' Homepage: https://svjatoslav.eu -' Email: svjatoslav@svjatoslav.eu - -' 2003.12, Initial version. -' 2024.08, Updated code readability. - - -' Screen dimensions and video mode settings -screenWidth = 640 -screenHeight = 480 -videoMode = 12 ' Video mode switch (0 for text mode, non-zero for graphics mode) -stringSize = 0 ' String size for text mode - -' Adjust screen dimensions for a more accurate representation -screenWidth = screenWidth / 11.3 -screenHeight = screenHeight / 11.7 - -' Determine string size based on video mode -IF stringSize = 0 THEN - SELECT CASE videoMode - CASE 12, 11 - stringSize = 16 - - CASE 9, 10 - stringSize = 14 - - CASE 1, 13, 2, 7, 8 - stringSize = 8 - END SELECT -ELSE - GOTO InitializeScreen -END IF - -InitializeScreen: -SCREEN videoMode - -' Draw grid and label axes -FOR gridLine = 1 TO 10 - ' Draw horizontal grid lines - LINE (0, gridLine * screenHeight)-(screenWidth * 10, gridLine * screenHeight), 8 - - ' Draw vertical grid lines - LINE (gridLine * screenWidth, 0)-(gridLine * screenWidth, screenHeight * 10), 8 - - ' Label horizontal axis with numbers - textRow = 10 * screenHeight / stringSize + 2 - textCol = gridLine * screenWidth / 8 + 1 - LOCATE textRow, textCol - PRINT CHR$(gridLine + 48); -NEXT gridLine - -' Label the end of the horizontal axis -LOCATE 10 * screenHeight / stringSize + 2, screenWidth * 10 / 8 -PRINT "10"; - -' Label special points on the vertical axis -LOCATE 1 * screenHeight / stringSize + 1, screenWidth * 10 / 8 + 3 -PRINT "-1"; -LOCATE 5 * screenHeight / stringSize + 1, screenWidth * 10 / 8 + 3 -PRINT "0"; -LOCATE 10 * screenHeight / stringSize, screenWidth * 10 / 8 + 3 -PRINT "1"; - -' Draw central horizontal and vertical lines -LINE (0, screenHeight * 5 + 1)-(screenWidth * 10, screenHeight * 5 + 1), 14 -LINE (5 * screenWidth + 1, 0)-(5 * screenWidth + 1, 10 * screenHeight), 14 - -' Plot SIN function -FOR angle = 0 TO 10 STEP .05 - xPosition = angle * screenWidth - yPosition = SIN(angle) * screenHeight * 5 + screenHeight * 5 - IF angle > 0 THEN LINE (xPositionPrev, yPositionPrev)-(xPosition, yPosition), 15 - xPositionPrev = xPosition - yPositionPrev = yPosition -NEXT angle - -' Label the SIN curve -textRow = yPosition / stringSize + 1 -textCol = screenWidth * 10 / 8 -LOCATE textRow, textCol -PRINT "sin"; - -' Plot COS function -FOR angle = 0 TO 10 STEP .05 - xPosition = angle * screenWidth - yPosition = COS(angle) * screenHeight * 5 + screenHeight * 5 - IF angle > 0 THEN LINE (xPositionPrev, yPositionPrev)-(xPosition, yPosition), 12 - xPositionPrev = xPosition - yPositionPrev = yPosition -NEXT angle - -' Label the COS curve -textRow = yPosition / stringSize + 1 -textCol = screenWidth * 10 / 8 -LOCATE textRow, textCol -PRINT "cos"; - -' Wait for user input before exiting -a$ = INPUT$(1) -SYSTEM - diff --git a/Math/sinus.bas b/Math/sinus.bas deleted file mode 100755 index efbf0d1..0000000 --- a/Math/sinus.bas +++ /dev/null @@ -1,49 +0,0 @@ -' Sinus Calculator -' by Svjatoslav Agejenko in 2003.12 -' Homepage: https://svjatoslav.eu -' Email: svjatoslav@svjatoslav.eu -' -' 2003.12, initial version -' 2024.08, used AI to enhance program readability -' -' This program calculates the sine of an angle without using -' the built-in SIN function. Then it plots the calculated sine -' wave alongside the true sine wave for comparison. There is intentional -' vertical 1 pixel offset between the two waves for better visibility of them both. - -SCREEN 12 - -' Draw a horizontal baseline -LINE (0, 240)-(640, 240), 15 - -' Initialize variables for the sine wave calculation -' r represents the current value of the sine approximation -' r1 represents the rate of change of the sine approximation -LET radius = 0 -LET rateOfChange = 1 - -' Iterate over each horizontal pixel to calculate and plot the sine values -FOR angleDegrees = 1 TO 639 - ' Calculate the actual sine value using the built-in SIN function - ' for comparison. - ' Scale and translate the sine wave to fit within the screen coordinates. - LET trueSineY = SIN(angleDegrees / 100) * 100 + 240 - PSET (angleDegrees, trueSineY), 15 - - ' Update the rate of change and the radius (sine approximation) - ' This is a simple implementation of the differential equation - ' that defines the sine function, effectively integrating over time - LET rateOfChange = rateOfChange + ((0 - radius) / 10000) - LET radius = radius + rateOfChange - - ' Calculate the approximate sine value using our own method - ' Offset the plot by 241 pixels to display below the true sine wave - LET approxSineY = radius - PSET (angleDegrees, approxSineY + 241), 12 -NEXT angleDegrees - -' Wait for a key press before ending the program -PRINT "Press any key to exit." -DO UNTIL INKEY$ <> "" -LOOP - diff --git a/Miscellaneous/Alien font.bas b/Miscellaneous/Alien font.bas new file mode 100644 index 0000000..4370f6a --- /dev/null +++ b/Miscellaneous/Alien font.bas @@ -0,0 +1,111 @@ +' Program author: +' Svjatoslav Agejenko +' email: svjatoslav@svjatoslav.eu +' homepage: https://svjatoslav.eu +' +' Program attempts to render imaginary alien text. +' Text is composed by subdividing square into 4 triangles. +' +' 2001, Initial version. +' 2024.08, Improved code readability. + +DEFINT A-Z + +' Declare the subroutine which will draw a character at a given position with a given size and color +DECLARE SUB DrawCharacter (characterX, characterY, characterColor, CharacterSize) + +' Define shared array for colors +DIM SHARED characterColors(1 TO 4) AS INTEGER + +' Initialize the color palette +characterColors(1) = 7 ' LightGray +characterColors(2) = 7 ' LightGray +characterColors(3) = 0 ' Black +characterColors(4) = 0 ' Black + +' Set the screen mode and seed the random number generator +SCREEN 12 +RANDOMIZE TIMER + +' Clear the screen with black color +PAINT (1, 1), 0 + +' Define the size of each character +CONST CharacterSize = 4 + +' Initialize counters for drawing characters +DIM tmp AS INTEGER +tmp = 0 + +' Outer loop for vertical positioning of characters +FOR characterY = 1 TO 480 - CharacterSize - 2 STEP CharacterSize + (CharacterSize \ 2) + DIM tmp1 AS INTEGER + tmp1 = 0 + + ' Inner loop for horizontal positioning of characters + FOR characterX = 1 TO 640 - CharacterSize - 2 STEP CharacterSize + (CharacterSize \ 2) + ' Draw a character with random color and specified size at the current position + CALL DrawCharacter(characterX, characterY, INT(RND * 16), CharacterSize) + + ' Increment the inner loop counter + tmp1 = tmp1 + 1 + + ' Add spaces to emulate visual character clusters + IF tmp1 > 20 THEN + tmp1 = 0 + characterX = characterX + (CharacterSize) + END IF + NEXT characterX + + ' Increment the outer loop counter + tmp = tmp + 1 + + ' Add space to group caracters visually into clusters + IF tmp > 5 THEN + tmp = 0 + characterY = characterY + (CharacterSize) + END IF +NEXT characterY + +' Subroutine to draw a character at a given position with a given size and color +SUB DrawCharacter (characterX AS INTEGER, characterY AS INTEGER, characterColor AS INTEGER, CharacterSize AS INTEGER) + ' Calculate half the size of the character for drawing diagonals + DIM halfSize AS INTEGER + halfSize = CharacterSize \ 2 + + ' Randomly select a color from the palette + DIM randomColor AS INTEGER + randomColor = characterColors(INT(RND * 3) + 1) + + ' Draw the top horizontal line and diagonals of the character + LINE (characterX, characterY)-(characterX + CharacterSize, characterY), randomColor + LINE (characterX, characterY)-(characterX + halfSize, characterY + halfSize), randomColor + LINE (characterX + CharacterSize, characterY)-(characterX + halfSize, characterY + halfSize), randomColor + ' Fill the top right corner of the character + PAINT (characterX + 2, characterY + 1), randomColor + + ' Draw the left vertical line and diagonals of the character + randomColor = characterColors(INT(RND * 3) + 1) + LINE (characterX, characterY)-(characterX, characterY + CharacterSize), randomColor + LINE (characterX, characterY)-(characterX + halfSize, characterY + halfSize), randomColor + LINE (characterX, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor + ' Fill the middle left of the character + PAINT (characterX + 1, characterY + 2), randomColor + + ' Draw the right vertical line and diagonals of the character + randomColor = characterColors(INT(RND * 3) + 1) + LINE (characterX + CharacterSize, characterY)-(characterX + CharacterSize, characterY + CharacterSize), randomColor + LINE (characterX + CharacterSize, characterY)-(characterX + halfSize, characterY + halfSize), randomColor + LINE (characterX + CharacterSize, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor + ' Fill the middle right of the character + PAINT (characterX + CharacterSize - 1, characterY + 2), randomColor + + ' Draw the bottom horizontal line and diagonals of the character + randomColor = characterColors(INT(RND * 3) + 1) + LINE (characterX, characterY + CharacterSize)-(characterX + CharacterSize, characterY + CharacterSize), randomColor + LINE (characterX, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor + LINE (characterX + CharacterSize, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor + ' Fill the bottom left corner of the character + PAINT (characterX + 2, characterY + CharacterSize - 1), randomColor +END SUB + diff --git a/Miscellaneous/Custom palette.bas b/Miscellaneous/Custom palette.bas new file mode 100644 index 0000000..e1644e9 --- /dev/null +++ b/Miscellaneous/Custom palette.bas @@ -0,0 +1,164 @@ +' An attempt to generate a universally reusable color palette for 256 color limit. +' By Svjatoslav Agejenko: +' homepage: svjatoslav.eu +' email: svjatoslav@svjatoslav.eu + +' 2001, initial version +' 2024.08, used AI to enhance program readability + +DEFINT A-Y +SCREEN 13 +CLS + +' Initialize color index +colorIndex = 0 + +' Generate colors by varying red, green, and blue components from 0 to 5 +FOR redComponent = 0 TO 5 + FOR greenComponent = 0 TO 5 + FOR blueComponent = 0 TO 5 + ' Set the color for the next pixel + OUT &H3C8, colorIndex + colorIndex = colorIndex + 1 + + ' Output the RGB components to the palette registers + OUT &H3C9, redComponent * 12 + OUT &H3C9, greenComponent * 12 + OUT &H3C9, blueComponent * 12 + NEXT blueComponent + NEXT greenComponent +NEXT redComponent + +' Draw a grid of colored squares using the generated color palette +FOR colorIndex = 0 TO 5 + FOR blueComponent = 0 TO 5 + FOR redComponent = 0 TO 5 + ' Draw a square with the calculated color + LINE (redComponent * 5 + colorIndex * 30, blueComponent * 5)-_ + (redComponent * 5 + 4 + colorIndex * 30, blueComponent * 5 + 4), _ + colorIndex * 36 + blueComponent * 6 + redComponent, BF + NEXT redComponent + NEXT blueComponent +NEXT colorIndex + +' Wait for user input before proceeding +a$ = INPUT$(1) + +' Initialize coordinates for pattern drawing +patternEx = -100 +patternEy = 0 + +' Draw a series of patterns with varying colors +FOR patternZ = 0 TO 75 STEP 15 + ' Calculate the vertices of an equilateral triangle + x1 = 50 - (patternZ / 2) + y1 = 50 - (patternZ * .866025) + x2 = 50 + patternZ + y2 = 50 + x3 = x1 + y3 = 100 - y1 + + ' Move to the next starting position for the pattern + patternEx = patternEx + 100 + IF patternZ = 45 THEN + patternEx = patternEx - 300 + patternEy = patternEy + 101 + END IF + + ' Draw the pattern by calculating colors based on distance from triangle vertices + FOR x = 0 TO 100 + FOR y = 0 TO 100 + ' Calculate color components based on distance to each vertex + r = 7 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 15 + 1) + g = 7 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 15 + 1) + b = 7 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 15 + 1) + + ' Clamp color values within the range of 0 to 5 + IF r < 0 THEN r = 0 + IF g < 0 THEN g = 0 + IF b < 0 THEN b = 0 + IF r > 5 THEN r = 5 + IF g > 5 THEN g = 5 + IF b > 5 THEN b = 5 + + ' Calculate the final color index + colorIndex = r * 36 + g * 6 + b + + ' Plot the pixel with the calculated color + PSET (x + patternEx, y + patternEy), colorIndex + NEXT y + NEXT x +NEXT patternZ + +' Wait for user input before proceeding +a$ = INPUT$(1) + +' Reset starting position for the second pattern +patternEx = -100 +patternEy = 0 + +' Draw a second series of patterns using color dithering, to create +' seemingly smooth color transitions while still having only 8bit colors to work with +FOR patternZ = 0 TO 75 STEP 15 + ' Calculate the vertices of an equilateral triangle with different scaling + x1 = 50 - (patternZ / 2.5) + y1 = 50 - (patternZ * .566025) + x2 = 50 + patternZ / 1.5 + y2 = 50 + x3 = x1 + y3 = 100 - y1 + + ' Move to the next starting position for the pattern + patternEx = patternEx + 100 + IF patternZ = 45 THEN + patternEx = patternEx - 300 + patternEy = patternEy + 101 + END IF + + ' Initialize accumulators for dithering color components + rSum = 0 + gSum = 0 + bSum = 0 + + ' Draw the pattern by calculating average colors based on distance from triangle vertices + FOR x = 0 TO 100 + FOR y = 0 TO 100 + ' Calculate color components based on distance to each vertex + r = 30 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 2 + 1) + g = 30 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 2 + 1) + b = 30 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 2 + 1) + + ' Accumulate the color components + rSum = rSum + r + gSum = gSum + g + bSum = bSum + b + + ' Calculate the average color components over a span of 5 pixels + rAvg = rSum / 5 + gAvg = gSum / 5 + bAvg = bSum / 5 + + ' Reset the sums after calculating the averages + rSum = rSum - (rAvg * 5) + gSum = gSum - (gAvg * 5) + bSum = bSum - (bAvg * 5) + + ' Clamp average color values within the range of 0 to 5 + IF rAvg < 0 THEN rAvg = 0 + IF gAvg < 0 THEN gAvg = 0 + IF bAvg < 0 THEN bAvg = 0 + IF rAvg > 5 THEN rAvg = 5 + IF gAvg > 5 THEN gAvg = 5 + IF bAvg > 5 THEN bAvg = 5 + + ' Calculate the final color index + colorIndex = rAvg * 36 + gAvg * 6 + bAvg + + ' Plot the pixel with the calculated color + PSET (x + patternEx, y + patternEy), colorIndex + NEXT y + NEXT x +NEXT patternZ + +' Wait for user input before exiting +a$ = INPUT$(1) \ No newline at end of file diff --git a/Miscellaneous/Mouse driver/index.html b/Miscellaneous/Mouse driver/index.html new file mode 100644 index 0000000..25a8c73 --- /dev/null +++ b/Miscellaneous/Mouse driver/index.html @@ -0,0 +1,16 @@ + +QBasic mouse extension + + +

QBasic mouse extension

+
+
+ +This TSR written in x86 assembler, allows QBasic programs to use mouse, +by writing mouse movement and button press info to memory, +referenced by INT 79h. +Afterwards QBasic programs can read mouse cursor position +directly from RAM by using PEEK command. + + + \ No newline at end of file diff --git a/Miscellaneous/Mouse driver/mousedrv.bas b/Miscellaneous/Mouse driver/mousedrv.bas new file mode 100755 index 0000000..2114d82 --- /dev/null +++ b/Miscellaneous/Mouse driver/mousedrv.bas @@ -0,0 +1,136 @@ +' Mouse demo +' made by Svjatoslav Agejenko +' in 2004.01 +' Homepage: http://svjatoslav.eu + +DECLARE SUB mousedemo () +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () + +DIM SHARED extSEG, extADDR + +start + +mousedemo + +FUNCTION getbyte (addr) + ' This function retrieves a byte from the specified address. + getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) + ' This function retrieves a word (2 bytes) from the specified address. + a = PEEK(extADDR + addr) + b = PEEK(extADDR + addr + 1) + + c$ = HEX$(a) + IF LEN(c$) = 1 THEN c$ = "0" + c$ + IF LEN(c$) = 0 THEN c$ = "00" + + ' Combine the two bytes into a single word. + c = VAL("&H" + HEX$(b) + c$) + + getword = c +END FUNCTION + +SUB mousedemo + ' This subroutine demonstrates mouse movement and button clicks. + + cx = 150 + cy = 100 + maxmove = 50 + + 1 + frm = frm + 1 + + ' Print the current coordinates and frame number. + LOCATE 1, 1 + PRINT cx, cy + PRINT frm + + ' Draw a circle at the current mouse position. + CIRCLE (cx, cy), 10, 0 + + ' Retrieve the x and y movement values from the mouse. + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + + ' Retrieve the button status from the mouse. + butt = getword(6) + putword 6, 0 + + ' Print the button status if a button is pressed. + IF butt <> 0 THEN + LOCATE 5 + PRINT butt + END IF + + ' Limit the mouse movement to within maxmove. + IF xp < -maxmove THEN xp = -maxmove + IF xp > maxmove THEN xp = maxmove + cx = cx + xp + + IF yp < -maxmove THEN yp = -maxmove + IF yp > maxmove THEN yp = maxmove + cy = cy + yp + + ' Draw a circle at the new mouse position. + CIRCLE (cx, cy), 10, 10 + + ' Use sound command for adding short delay + SOUND 0, .05 + + ' Repeat the loop to continuously update the mouse position. + GOTO 1 + +END SUB + +SUB putword (addr, dat) + ' This subroutine stores a word (2 bytes) at the specified address. + + b$ = HEX$(dat) + + 2 + IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + + ' Split the word into two bytes. + n1 = VAL("&H" + LEFT$(b$, 2)) + n2 = VAL("&H" + RIGHT$(b$, 2)) + + ' Store the bytes at the specified address. + POKE (extADDR + addr), n2 + POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start + ' This subroutine initializes the screen and retrieves the segment and address of the mouse driver. + + SCREEN 13 + + DEF SEG = 0 ' read first from interrupt table + + extSEG = PEEK(&H79 * 4 + 3) * 256 + extSEG = extSEG + PEEK(&H79 * 4 + 2) + + PRINT "Segment is: " + HEX$(extSEG) + + extADDR = PEEK(&H79 * 4 + 1) * 256 + extADDR = extADDR + PEEK(&H79 * 4 + 0) + + PRINT "relative address is:"; extADDR + + DEF SEG = extSEG + + ' Check if the mouse driver is loaded. + IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM + END IF + +END SUB \ No newline at end of file diff --git a/Miscellaneous/Mouse driver/qbext.asm b/Miscellaneous/Mouse driver/qbext.asm new file mode 100644 index 0000000..57dd874 --- /dev/null +++ b/Miscellaneous/Mouse driver/qbext.asm @@ -0,0 +1,84 @@ +; TSR hack that allows QBasic programs to use mouse. +; Made by Svjatoslav Agejenko +; in 2004.01 +; Homepage: http://svjatoslav.eu + + +org 100h + +myint = 79h ; interrupt to hook, becomes pointer to data table + + + mov dx, msg + mov ah, 9 + int 21h + + mov ax, 0 ; Saves old interrupt vector + mov es, ax + mov eax, [es:32] + mov [oldVector], eax + + cli + mov ax, cs ; Set new interrupt vector for IRQ 0 + shl eax, 16 + mov ax, custom + mov [es:32], eax + mov ax, dataTable ; Set interrupt vector for INT 79 (default) + mov [es:4 * myint], eax + sti + + mov ax, endPointer ; Calculate needed memory size, become TSR + add ax, 32 + mov dx, 0 + mov bx, 16 + div bx + mov dx, ax + mov ax, 3100h + int 21h + +custom: + pushf ; Execute default code in old int vector + call dword [cs:oldVector] + + cmp [cs:isRunning], 0 ; Check if custom routine is already active + jne EndOfRoutine + + mov [cs:isRunning], 1 ; Set active flag + pusha + push ds + push es + + cli + mov ax, 0bh ; Read Mouse Motion Counters + int 33h + add [CS:mouseHorisontal], cx + add [CS:mouseVertical], dx + mov ax, 3 ; read mouse buttons + int 33h + or [CS:mouseButtons], bx + inc byte [CS:updated] + sti + + pop es + pop ds + popa + mov [cs:isRunning], 0 ; Terminate active flag + EndOfRoutine: + iret + +oldVector dd 0 +isRunning db 0 + +dataTable: + dw 1983 ; check number, indicates that module is loaded + mouseHorisontal dw 0 + mouseVertical dw 0 + mouseButtons dw 0 + updated db 0 + + +endPointer: + +msg: +file 'readme.txt' + db '$' diff --git a/Miscellaneous/Mouse driver/qbext.com b/Miscellaneous/Mouse driver/qbext.com new file mode 100755 index 0000000..ae54fc4 Binary files /dev/null and b/Miscellaneous/Mouse driver/qbext.com differ diff --git a/Miscellaneous/Password lock/passw.bas b/Miscellaneous/Password lock/passw.bas new file mode 100644 index 0000000..fe9a51a --- /dev/null +++ b/Miscellaneous/Password lock/passw.bas @@ -0,0 +1,251 @@ +' Program tries to render fancy rocket control system with password protection. +' When entered password is wrong, program will halt in 3 attempts. +' When password is correct, program will exit and return control to the user. +' Password is stored in "passw.dat" file. +' +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2002, Initial version. +' 2024, Improved program readability using AI. + + +DECLARE SUB checkPassword (a$) +DECLARE SUB startProgram () +DECLARE SUB makeVerticalLines (s%, C%) +DECLARE SUB drawBox (x1%, y1%, x2%, y2%) + +DIM SHARED cha +DIM SHARED password$ + +startProgram + +' Initialize variables +x = 25 +x2 = 10 +x3 = 0 +B$ = "" + +1 +' Update position of the bouncing ball +x = x + xs +IF x > 0 THEN + ' Decrease speed if ball is moving right + xs = xs - .5 +ELSE + ' Increase speed if ball is moving left + xs = xs + .5 +END IF +' Gradually decrease the speed +xs = xs - (xs / 8) + +' Draw a vertical line and a dot +IF x2 > 100 THEN + ' Reset the position of the line + x2 = 10 +ELSE + LINE (x2, 10)-(x2, 60), 0 + PSET (x2, x + 35), 10 +END IF +' Draw another vertical line next to the first one +IF x2 < 99 THEN + LINE (x2 + 1, 10)-(x2 + 1, 60), 3 +END IF + +' Update position of the lines +x2 = x2 + 1 +x3 = x3 + 1 + +' Play a sound when the ball hits the right edge +IF x3 > 40 THEN + x3 = 0 + xs = xs - 5 + SOUND 1000, 1 +END IF + +SOUND 0, .5 + +a$ = INKEY$ +' Check if the Enter key is pressed +IF a$ = CHR$(13) THEN + ' Validate the entered password + checkPassword B$ + ' Clear the input buffer + B$ = "" + GOTO 2 +END IF + +' Check if any other key is pressed +IF a$ <> "" THEN + ' Handle backspace + IF a$ = CHR$(8) THEN + ' Remove the last character from the input buffer + IF LEN(B$) > 0 THEN + B$ = LEFT$(B$, LEN(B$) - 1) + END IF + GOTO 2 + END IF + ' Add the pressed key to the input buffer + B$ = B$ + a$ + ' Limit the length of the input buffer + IF LEN(B$) > 10 THEN + B$ = LEFT$(B$, 10) + END IF +2 + ' Draw the characters in the input buffer + FOR a = 1 TO 10 + ' Determine the color of the character + IF a <= LEN(B$) THEN + C = 5 + ELSE + C = 1 + END IF + ' Draw the character + CIRCLE (a * 15 + 20, 150), 6, C + PAINT (a * 15 + 20, 150), C + NEXT a +END IF + +GOTO 1 + +SUB checkPassword (a$) + cha = cha - 1 + + ' Check if the entered password is correct + IF a$ = password$ THEN + CLS + SCREEN 2 + SYSTEM + END IF + + ' Draw the background of the error message box + DIM buf(1 TO 3000) + GET (79, 80)-(241, 141), buf(1) + + ' Draw the borders of the error message box + drawBox 80, 90, 240, 140 + + ' Display the error message + LOCATE 14, 14 + COLOR 12 + PRINT "Wrong password" + + ' Display the number of remaining attempts + COLOR 5 + LOCATE 16, 13 + PRINT STR$(cha) + " chances left" + + ' Play a sound to indicate an error + FOR a = 1 TO 30 + SOUND 0, 1 + NEXT a + + ' Display the final message when all attempts are exhausted + IF cha = 0 THEN + DIM buf2(1000) + GET (79, 138)-(241, 140), buf2 + FOR a = 1 TO 40 + PUT (79, 138 + a), buf2, PSET + SOUND 0, .5 + NEXT a + + LOCATE 19, 14 + COLOR 12 + PRINT "SYSTEM HALTED" + LOCATE 21, 14 + PRINT "SUCCESSFULLY!!" +3 + GOTO 3 + END IF + + ' Restore the background of the error message box + PUT (79, 80), buf(1), PSET +END SUB + +DEFINT A-Z +SUB drawBox (x1%, y1%, x2%, y2%) + ' Draw the top border of the box + LINE (x1 + 1, y1 + 1)-(x2 - 1, y2 - 1), 0, BF + ' Draw the bottom border of the box + LINE (x1, y1)-(x2, y2), 10, B + ' Draw the left and right borders of the box + LINE (x1, y1)-(x2, y1 - 9), 14, BF + LINE (x1, y1)-(x2, y1 - 9), 10, B + + ' Draw the top left corner of the box + LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 7, BF + ' Draw the top right corner of the box + LINE (x2 - 9, y1 - 2)-(x2 - 14, y1 - 7), 7, BF + + ' Draw the diagonal lines in the top left corner + LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 0 + LINE (x2 - 2, y1 - 7)-(x2 - 7, y1 - 2), 0 + + ' Draw the horizontal line in the top left corner + LINE (x2 - 10, y1 - 3)-(x2 - 13, y1 - 3), 0 +END SUB + +SUB makeVerticalLines (s%, C%) + ' Draw vertical lines + FOR x = 160 TO 319 STEP s + LINE (x, 0)-(x, 199), C + LINE (320 - x, 0)-(320 - x, 199), C + NEXT x + + ' Draw horizontal lines + FOR y = 100 TO 199 STEP s + LINE (0, y)-(319, y), C + LINE (0, 200 - y)-(319, 200 - y), C + NEXT y +END SUB + +DEFSNG A-Z +SUB startProgram + ' Read the password from the file + OPEN "passw.dat" FOR INPUT AS #1 + LINE INPUT #1, password$ + CLOSE #1 + + ' Set the screen mode + SCREEN 13 + + ' Initialize the number of remaining attempts + cha = 3 + + ' Draw vertical lines with increasing spacing + s = 2 + FOR C = 16 TO 31 + s = s * 1.4 + makeVerticalLines INT(s), INT(C) + NEXT C + makeVerticalLines INT(s), 0 + + ' Draw the main box + drawBox 70, 20, 270, 90 + + ' Display the initial message + COLOR 5 + LOCATE 8, 10 + PRINT " stack dump:" + LOCATE 9, 10 + PRINT "010010010010010010010100" + + ' Display the running message + LOCATE 10, 10 + PRINT "Running rocket ground" + LOCATE 11, 10 + PRINT "control system..." + + ' Draw the input box + drawBox 9, 9, 101, 61 + + ' Draw the password input box + drawBox 20, 130, 300, 190 + + ' Display the password prompt + LOCATE 18, 5 + PRINT "ENTER PASSWORD:" +END SUB + diff --git a/Miscellaneous/Password lock/passw.dat b/Miscellaneous/Password lock/passw.dat new file mode 100644 index 0000000..6ea1900 --- /dev/null +++ b/Miscellaneous/Password lock/passw.dat @@ -0,0 +1 @@ +jerry \ No newline at end of file diff --git a/Miscellaneous/Pressed key test.bas b/Miscellaneous/Pressed key test.bas new file mode 100644 index 0000000..35202cb --- /dev/null +++ b/Miscellaneous/Pressed key test.bas @@ -0,0 +1,26 @@ +' Utility to print information about pressed keyboard buttons +' + +MainLoop: + ' Wait for a key press and store it in userInput$ + userInput$ = INKEY$ + + ' If no key has been pressed, jump back to the main loop + IF userInput$ = "" THEN GOTO MainLoop + + ' Print the character that was typed by the user + PRINT "You typed: "; userInput$ + + ' Calculate the ASCII value of the first character (if input is more than one character) + ' and print it + IF LEN(userInput$) > 0 THEN + PRINT "ASCII value of the first character ('"; LEFT$(userInput$, 1); "'): "; ASC(LEFT$(userInput$, 1)) + END IF + + ' Calculate the ASCII value of the last character and print it + IF LEN(userInput$) > 0 THEN + PRINT "ASCII value of the last character ('"; RIGHT$(userInput$, 1); "'): "; ASC(RIGHT$(userInput$, 1)) + END IF + + ' Jump back to the main loop to wait for another key press + GOTO MainLoop \ No newline at end of file diff --git a/Miscellaneous/Video modes detector.bas b/Miscellaneous/Video modes detector.bas new file mode 100644 index 0000000..9602423 --- /dev/null +++ b/Miscellaneous/Video modes detector.bas @@ -0,0 +1,54 @@ +' Utility to determine available video modes. +' +' Written by Svjatoslav Agejenko +' Homepage: svjatoslav.eu +' Email: svjatoslav@svjatoslav.eu + +' 2001, initial version +' 2024.08, used AI to enhance program readability + +DIM SHARED AvailableModes(1 TO 100) AS INTEGER +ON ERROR GOTO ErrorHandler + +' Initialize the video mode counter and the current mode number. +currentModeIndex = 1 +currentModeNumber = 0 + +' Start the loop to test each video mode. +DO + ' Attempt to set the screen to the current video mode. + SCREEN currentModeNumber + + ' Increment the mode number for the next iteration. + currentModeNumber = currentModeNumber + 1 + + ' Store the successful video mode in the array. + AvailableModes(currentModeIndex) = currentModeNumber - 1 + + ' Move to the next index in the array. + currentModeIndex = currentModeIndex + 1 + +LOOP + +' Error handling routine when an error occurs (e.g., invalid video mode). +ErrorHandler: +' Increment the mode number to continue testing after an error. +currentModeNumber = currentModeNumber + 1 + +' Check if we have reached the maximum number of modes to test. +IF currentModeNumber > 1000 THEN + ' Reset the screen to text mode (usually mode 1). + SCREEN 1 + + ' Display the list of available video modes. + PRINT "Available video modes on this computer:" + FOR modeIndex = 1 TO currentModeIndex - 1 + PRINT AvailableModes(modeIndex) + NEXT modeIndex + + ' End the program after displaying the results. + END +END IF + +' Resume execution after an error to continue testing modes. +RESUME \ No newline at end of file diff --git a/Miscellaneous/Windowing system.bas b/Miscellaneous/Windowing system.bas new file mode 100755 index 0000000..c5c9332 --- /dev/null +++ b/Miscellaneous/Windowing system.bas @@ -0,0 +1,252 @@ +' Text mode windowing system. Each window can display text file. +' Window content can be scrolled horizontally and vertically. +' Window can have arbitrary size and location on the screen. +' +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu + +' Changelog: +' 2003, Initial version +' 2024, Improved program readability using AI + +DECLARE SUB demo () +DECLARE FUNCTION getline$ (w%, l%) +DECLARE SUB loadfile (file$, d%) +DECLARE SUB sendline (w%, l%, newstring$) +DECLARE FUNCTION getflin% () +DECLARE SUB refresh () +DECLARE FUNCTION addpage% (x%, y%, xs%, ys%, title$) +DECLARE SUB box (x%, y%, xl%, yl%, e$) +DEFINT A-Z +DECLARE SUB shpage (a) +DECLARE SUB start () + +DIM SHARED stamo +stamo = 5000 +DIM SHARED st$(1 TO stamo) +DIM SHARED stpn + +DIM SHARED pag(1 TO 10, 1 TO 1000) +DIM SHARED pagx(1 TO 10), pagy(1 TO 10), pagxs(1 TO 10), pagys(1 TO 10) +DIM SHARED pagon(1 TO 10) +DIM SHARED pagtitle$(1 TO 10) + +DIM SHARED pagshx(1 TO 10) ' x & y shift +DIM SHARED pagshy(1 TO 10) + +DIM SHARED pageactive ' active page + +start + +demo + +FUNCTION addpage% (x, y, xs, ys, title$) + FOR a = 1 TO 10 + IF pagon(a) = 0 THEN + b = a + GOTO 1 + END IF + NEXT a +1 + + pagon(b) = 1 + pagx(b) = x + pagy(b) = y + pagxs(b) = xs + pagys(b) = ys + pagtitle$(b) = title$ + + addpage% = b +END FUNCTION + +SUB clrwnd (w) + FOR a = 1 TO 1000 + IF pag(w, a) > 0 THEN + st$(pag(w, a)) = "" + pag(w, a) = 0 + END IF + NEXT a +END SUB + +SUB demo + ' Create three windows with different sizes and titles + w1 = addpage%(1, 1, 30, 10, "window 1.") + w2 = addpage%(1, 12, 80, 30, "second window") + w3 = addpage%(31, 2, 30, 10, "last window") + + ' Load the same file into all windows + loadfile "wsystem.bas", w2 + loadfile "wsystem.bas", w1 + loadfile "wsystem.bas", w3 + +4 + pageactive = INT(RND * 3) + 1 + refresh + + ' Animate the windows by shifting their content + FOR a = 1 TO 100 + pagshx(pageactive) = SIN(a / 10) * 10 + 10 + pagshy(pageactive) = a + shpage (pageactive) + SOUND 0, 1 + IF INKEY$ <> "" THEN SYSTEM + NEXT a + + GOTO 4 +END SUB + +FUNCTION getflin% ' Get free line +2 + IF stpn > 1000 THEN + stpn = 1 + END IF + IF st$(stpn) = "" THEN + getflin% = stpn + stpn = stpn + 1 + ELSE + stpn = stpn + 1 + GOTO 2 + END IF +END FUNCTION + +FUNCTION getline$ (w, l) + ' Retrieve the line from the window memory + IF pag(w, l) = 0 THEN + getline$ = "" + ELSE + getline$ = st$(pag(w, l)) + END IF +END FUNCTION + +SUB loadfile (file$, d) + ' Load a file into the window memory + + OPEN file$ FOR INPUT AS #1 + FOR a = 1 TO 1000 + IF EOF(1) <> 0 THEN + GOTO 3 + END IF + LINE INPUT #1, a$ + sendline d, a, a$ + NEXT a +3 + + CLOSE #1 + + ' Fill the remaining lines with empty strings + FOR b = a TO 1000 + sendline d, b, "" + NEXT b +END SUB + +SUB refresh + ' Redraw all active windows + CLS + FOR a = 1 TO 10 + IF pagon(a) > 0 THEN + shpage (a) + END IF + NEXT a +END SUB + +SUB sendline (w, l, newstring$) ' window, lineNum, lineItself + ' send string into window memory + a$ = newstring$ + + ' Remove trailing spaces from the string + IF a$ = SPACE$(LEN(a$)) THEN + a$ = "" + END IF + + IF LEN(a$) > 0 THEN +5 + IF RIGHT$(a$, 1) = " " THEN + a$ = LEFT$(a$, LEN(a$) - 1) + GOTO 5 + END IF + END IF + + ' Update the window memory with the new string + IF a$ = "" THEN + IF pag(w, l) > 0 THEN + st$(pag(w, l)) = "": pag(w, l) = 0 + END IF + ELSE + IF pag(w, l) = 0 THEN + pag(w, l) = getflin% + END IF + st$(pag(w, l)) = a$ + END IF +END SUB + +SUB shpage (page) + ' Draw the specified window on the screen + + ' Determine background color based on active page + IF page = pageactive THEN + bg = 1 + ELSE + bg = 0 + END IF + + x = pagx(page) + y = pagy(page) + xl = pagxs(page) + yl = pagys(page) + e$ = pagtitle$(page) + + COLOR 11, bg + + ' Draw the window border + a$ = "" + d$ = "" + FOR a = 1 TO xl - 2 + a$ = a$ + CHR$(205) + NEXT a + b$ = CHR$(201) + a$ + CHR$(187) + c$ = CHR$(200) + a$ + CHR$(188) + + LOCATE y, x + PRINT b$ + LOCATE y + yl - 1, x + PRINT c$ + + ' Draw the window content + FOR a = 1 TO yl - 2 + LOCATE y + a, x + d$ = getline$(page, a + pagshy(page)) + d$ = d$ + SPACE$(300) + d$ = RIGHT$(d$, LEN(d$) - pagshx(page)) + d$ = LEFT$(d$, xl - 2) + PRINT CHR$(186) + d$ + CHR$(186) + NEXT a + + ' Draw the window title + xt = INT(x + (xl / 2) - (LEN(e$) / 2) - 2) + LOCATE y, xt + PRINT "[ " + xt = xt + 2 + + COLOR 10 + LOCATE y, xt + PRINT e$ + + xt = xt + LEN(e$) + COLOR 11 + LOCATE y, xt + PRINT " ]" + COLOR 7, 0 +END SUB + +SUB start + ' Initialize the screen and shared memory + WIDTH 80, 50 + VIEW PRINT 1 TO 50 + + FOR a = 1 TO stamo + st$(a) = "" + NEXT a + + stpn = 1 +END SUB \ No newline at end of file diff --git a/Miscellaneous/font.bas b/Miscellaneous/font.bas deleted file mode 100644 index 4370f6a..0000000 --- a/Miscellaneous/font.bas +++ /dev/null @@ -1,111 +0,0 @@ -' Program author: -' Svjatoslav Agejenko -' email: svjatoslav@svjatoslav.eu -' homepage: https://svjatoslav.eu -' -' Program attempts to render imaginary alien text. -' Text is composed by subdividing square into 4 triangles. -' -' 2001, Initial version. -' 2024.08, Improved code readability. - -DEFINT A-Z - -' Declare the subroutine which will draw a character at a given position with a given size and color -DECLARE SUB DrawCharacter (characterX, characterY, characterColor, CharacterSize) - -' Define shared array for colors -DIM SHARED characterColors(1 TO 4) AS INTEGER - -' Initialize the color palette -characterColors(1) = 7 ' LightGray -characterColors(2) = 7 ' LightGray -characterColors(3) = 0 ' Black -characterColors(4) = 0 ' Black - -' Set the screen mode and seed the random number generator -SCREEN 12 -RANDOMIZE TIMER - -' Clear the screen with black color -PAINT (1, 1), 0 - -' Define the size of each character -CONST CharacterSize = 4 - -' Initialize counters for drawing characters -DIM tmp AS INTEGER -tmp = 0 - -' Outer loop for vertical positioning of characters -FOR characterY = 1 TO 480 - CharacterSize - 2 STEP CharacterSize + (CharacterSize \ 2) - DIM tmp1 AS INTEGER - tmp1 = 0 - - ' Inner loop for horizontal positioning of characters - FOR characterX = 1 TO 640 - CharacterSize - 2 STEP CharacterSize + (CharacterSize \ 2) - ' Draw a character with random color and specified size at the current position - CALL DrawCharacter(characterX, characterY, INT(RND * 16), CharacterSize) - - ' Increment the inner loop counter - tmp1 = tmp1 + 1 - - ' Add spaces to emulate visual character clusters - IF tmp1 > 20 THEN - tmp1 = 0 - characterX = characterX + (CharacterSize) - END IF - NEXT characterX - - ' Increment the outer loop counter - tmp = tmp + 1 - - ' Add space to group caracters visually into clusters - IF tmp > 5 THEN - tmp = 0 - characterY = characterY + (CharacterSize) - END IF -NEXT characterY - -' Subroutine to draw a character at a given position with a given size and color -SUB DrawCharacter (characterX AS INTEGER, characterY AS INTEGER, characterColor AS INTEGER, CharacterSize AS INTEGER) - ' Calculate half the size of the character for drawing diagonals - DIM halfSize AS INTEGER - halfSize = CharacterSize \ 2 - - ' Randomly select a color from the palette - DIM randomColor AS INTEGER - randomColor = characterColors(INT(RND * 3) + 1) - - ' Draw the top horizontal line and diagonals of the character - LINE (characterX, characterY)-(characterX + CharacterSize, characterY), randomColor - LINE (characterX, characterY)-(characterX + halfSize, characterY + halfSize), randomColor - LINE (characterX + CharacterSize, characterY)-(characterX + halfSize, characterY + halfSize), randomColor - ' Fill the top right corner of the character - PAINT (characterX + 2, characterY + 1), randomColor - - ' Draw the left vertical line and diagonals of the character - randomColor = characterColors(INT(RND * 3) + 1) - LINE (characterX, characterY)-(characterX, characterY + CharacterSize), randomColor - LINE (characterX, characterY)-(characterX + halfSize, characterY + halfSize), randomColor - LINE (characterX, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor - ' Fill the middle left of the character - PAINT (characterX + 1, characterY + 2), randomColor - - ' Draw the right vertical line and diagonals of the character - randomColor = characterColors(INT(RND * 3) + 1) - LINE (characterX + CharacterSize, characterY)-(characterX + CharacterSize, characterY + CharacterSize), randomColor - LINE (characterX + CharacterSize, characterY)-(characterX + halfSize, characterY + halfSize), randomColor - LINE (characterX + CharacterSize, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor - ' Fill the middle right of the character - PAINT (characterX + CharacterSize - 1, characterY + 2), randomColor - - ' Draw the bottom horizontal line and diagonals of the character - randomColor = characterColors(INT(RND * 3) + 1) - LINE (characterX, characterY + CharacterSize)-(characterX + CharacterSize, characterY + CharacterSize), randomColor - LINE (characterX, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor - LINE (characterX + CharacterSize, characterY + CharacterSize)-(characterX + halfSize, characterY + halfSize), randomColor - ' Fill the bottom left corner of the character - PAINT (characterX + 2, characterY + CharacterSize - 1), randomColor -END SUB - diff --git a/Miscellaneous/key.bas b/Miscellaneous/key.bas deleted file mode 100644 index 35202cb..0000000 --- a/Miscellaneous/key.bas +++ /dev/null @@ -1,26 +0,0 @@ -' Utility to print information about pressed keyboard buttons -' - -MainLoop: - ' Wait for a key press and store it in userInput$ - userInput$ = INKEY$ - - ' If no key has been pressed, jump back to the main loop - IF userInput$ = "" THEN GOTO MainLoop - - ' Print the character that was typed by the user - PRINT "You typed: "; userInput$ - - ' Calculate the ASCII value of the first character (if input is more than one character) - ' and print it - IF LEN(userInput$) > 0 THEN - PRINT "ASCII value of the first character ('"; LEFT$(userInput$, 1); "'): "; ASC(LEFT$(userInput$, 1)) - END IF - - ' Calculate the ASCII value of the last character and print it - IF LEN(userInput$) > 0 THEN - PRINT "ASCII value of the last character ('"; RIGHT$(userInput$, 1); "'): "; ASC(RIGHT$(userInput$, 1)) - END IF - - ' Jump back to the main loop to wait for another key press - GOTO MainLoop \ No newline at end of file diff --git a/Miscellaneous/modes.bas b/Miscellaneous/modes.bas deleted file mode 100644 index 9602423..0000000 --- a/Miscellaneous/modes.bas +++ /dev/null @@ -1,54 +0,0 @@ -' Utility to determine available video modes. -' -' Written by Svjatoslav Agejenko -' Homepage: svjatoslav.eu -' Email: svjatoslav@svjatoslav.eu - -' 2001, initial version -' 2024.08, used AI to enhance program readability - -DIM SHARED AvailableModes(1 TO 100) AS INTEGER -ON ERROR GOTO ErrorHandler - -' Initialize the video mode counter and the current mode number. -currentModeIndex = 1 -currentModeNumber = 0 - -' Start the loop to test each video mode. -DO - ' Attempt to set the screen to the current video mode. - SCREEN currentModeNumber - - ' Increment the mode number for the next iteration. - currentModeNumber = currentModeNumber + 1 - - ' Store the successful video mode in the array. - AvailableModes(currentModeIndex) = currentModeNumber - 1 - - ' Move to the next index in the array. - currentModeIndex = currentModeIndex + 1 - -LOOP - -' Error handling routine when an error occurs (e.g., invalid video mode). -ErrorHandler: -' Increment the mode number to continue testing after an error. -currentModeNumber = currentModeNumber + 1 - -' Check if we have reached the maximum number of modes to test. -IF currentModeNumber > 1000 THEN - ' Reset the screen to text mode (usually mode 1). - SCREEN 1 - - ' Display the list of available video modes. - PRINT "Available video modes on this computer:" - FOR modeIndex = 1 TO currentModeIndex - 1 - PRINT AvailableModes(modeIndex) - NEXT modeIndex - - ' End the program after displaying the results. - END -END IF - -' Resume execution after an error to continue testing modes. -RESUME \ No newline at end of file diff --git a/Miscellaneous/pal.bas b/Miscellaneous/pal.bas deleted file mode 100644 index e1644e9..0000000 --- a/Miscellaneous/pal.bas +++ /dev/null @@ -1,164 +0,0 @@ -' An attempt to generate a universally reusable color palette for 256 color limit. -' By Svjatoslav Agejenko: -' homepage: svjatoslav.eu -' email: svjatoslav@svjatoslav.eu - -' 2001, initial version -' 2024.08, used AI to enhance program readability - -DEFINT A-Y -SCREEN 13 -CLS - -' Initialize color index -colorIndex = 0 - -' Generate colors by varying red, green, and blue components from 0 to 5 -FOR redComponent = 0 TO 5 - FOR greenComponent = 0 TO 5 - FOR blueComponent = 0 TO 5 - ' Set the color for the next pixel - OUT &H3C8, colorIndex - colorIndex = colorIndex + 1 - - ' Output the RGB components to the palette registers - OUT &H3C9, redComponent * 12 - OUT &H3C9, greenComponent * 12 - OUT &H3C9, blueComponent * 12 - NEXT blueComponent - NEXT greenComponent -NEXT redComponent - -' Draw a grid of colored squares using the generated color palette -FOR colorIndex = 0 TO 5 - FOR blueComponent = 0 TO 5 - FOR redComponent = 0 TO 5 - ' Draw a square with the calculated color - LINE (redComponent * 5 + colorIndex * 30, blueComponent * 5)-_ - (redComponent * 5 + 4 + colorIndex * 30, blueComponent * 5 + 4), _ - colorIndex * 36 + blueComponent * 6 + redComponent, BF - NEXT redComponent - NEXT blueComponent -NEXT colorIndex - -' Wait for user input before proceeding -a$ = INPUT$(1) - -' Initialize coordinates for pattern drawing -patternEx = -100 -patternEy = 0 - -' Draw a series of patterns with varying colors -FOR patternZ = 0 TO 75 STEP 15 - ' Calculate the vertices of an equilateral triangle - x1 = 50 - (patternZ / 2) - y1 = 50 - (patternZ * .866025) - x2 = 50 + patternZ - y2 = 50 - x3 = x1 - y3 = 100 - y1 - - ' Move to the next starting position for the pattern - patternEx = patternEx + 100 - IF patternZ = 45 THEN - patternEx = patternEx - 300 - patternEy = patternEy + 101 - END IF - - ' Draw the pattern by calculating colors based on distance from triangle vertices - FOR x = 0 TO 100 - FOR y = 0 TO 100 - ' Calculate color components based on distance to each vertex - r = 7 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 15 + 1) - g = 7 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 15 + 1) - b = 7 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 15 + 1) - - ' Clamp color values within the range of 0 to 5 - IF r < 0 THEN r = 0 - IF g < 0 THEN g = 0 - IF b < 0 THEN b = 0 - IF r > 5 THEN r = 5 - IF g > 5 THEN g = 5 - IF b > 5 THEN b = 5 - - ' Calculate the final color index - colorIndex = r * 36 + g * 6 + b - - ' Plot the pixel with the calculated color - PSET (x + patternEx, y + patternEy), colorIndex - NEXT y - NEXT x -NEXT patternZ - -' Wait for user input before proceeding -a$ = INPUT$(1) - -' Reset starting position for the second pattern -patternEx = -100 -patternEy = 0 - -' Draw a second series of patterns using color dithering, to create -' seemingly smooth color transitions while still having only 8bit colors to work with -FOR patternZ = 0 TO 75 STEP 15 - ' Calculate the vertices of an equilateral triangle with different scaling - x1 = 50 - (patternZ / 2.5) - y1 = 50 - (patternZ * .566025) - x2 = 50 + patternZ / 1.5 - y2 = 50 - x3 = x1 - y3 = 100 - y1 - - ' Move to the next starting position for the pattern - patternEx = patternEx + 100 - IF patternZ = 45 THEN - patternEx = patternEx - 300 - patternEy = patternEy + 101 - END IF - - ' Initialize accumulators for dithering color components - rSum = 0 - gSum = 0 - bSum = 0 - - ' Draw the pattern by calculating average colors based on distance from triangle vertices - FOR x = 0 TO 100 - FOR y = 0 TO 100 - ' Calculate color components based on distance to each vertex - r = 30 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 2 + 1) - g = 30 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 2 + 1) - b = 30 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 2 + 1) - - ' Accumulate the color components - rSum = rSum + r - gSum = gSum + g - bSum = bSum + b - - ' Calculate the average color components over a span of 5 pixels - rAvg = rSum / 5 - gAvg = gSum / 5 - bAvg = bSum / 5 - - ' Reset the sums after calculating the averages - rSum = rSum - (rAvg * 5) - gSum = gSum - (gAvg * 5) - bSum = bSum - (bAvg * 5) - - ' Clamp average color values within the range of 0 to 5 - IF rAvg < 0 THEN rAvg = 0 - IF gAvg < 0 THEN gAvg = 0 - IF bAvg < 0 THEN bAvg = 0 - IF rAvg > 5 THEN rAvg = 5 - IF gAvg > 5 THEN gAvg = 5 - IF bAvg > 5 THEN bAvg = 5 - - ' Calculate the final color index - colorIndex = rAvg * 36 + gAvg * 6 + bAvg - - ' Plot the pixel with the calculated color - PSET (x + patternEx, y + patternEy), colorIndex - NEXT y - NEXT x -NEXT patternZ - -' Wait for user input before exiting -a$ = INPUT$(1) \ No newline at end of file diff --git a/Miscellaneous/passw.bas b/Miscellaneous/passw.bas deleted file mode 100644 index fe9a51a..0000000 --- a/Miscellaneous/passw.bas +++ /dev/null @@ -1,251 +0,0 @@ -' Program tries to render fancy rocket control system with password protection. -' When entered password is wrong, program will halt in 3 attempts. -' When password is correct, program will exit and return control to the user. -' Password is stored in "passw.dat" file. -' -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu -' -' Changelog: -' 2002, Initial version. -' 2024, Improved program readability using AI. - - -DECLARE SUB checkPassword (a$) -DECLARE SUB startProgram () -DECLARE SUB makeVerticalLines (s%, C%) -DECLARE SUB drawBox (x1%, y1%, x2%, y2%) - -DIM SHARED cha -DIM SHARED password$ - -startProgram - -' Initialize variables -x = 25 -x2 = 10 -x3 = 0 -B$ = "" - -1 -' Update position of the bouncing ball -x = x + xs -IF x > 0 THEN - ' Decrease speed if ball is moving right - xs = xs - .5 -ELSE - ' Increase speed if ball is moving left - xs = xs + .5 -END IF -' Gradually decrease the speed -xs = xs - (xs / 8) - -' Draw a vertical line and a dot -IF x2 > 100 THEN - ' Reset the position of the line - x2 = 10 -ELSE - LINE (x2, 10)-(x2, 60), 0 - PSET (x2, x + 35), 10 -END IF -' Draw another vertical line next to the first one -IF x2 < 99 THEN - LINE (x2 + 1, 10)-(x2 + 1, 60), 3 -END IF - -' Update position of the lines -x2 = x2 + 1 -x3 = x3 + 1 - -' Play a sound when the ball hits the right edge -IF x3 > 40 THEN - x3 = 0 - xs = xs - 5 - SOUND 1000, 1 -END IF - -SOUND 0, .5 - -a$ = INKEY$ -' Check if the Enter key is pressed -IF a$ = CHR$(13) THEN - ' Validate the entered password - checkPassword B$ - ' Clear the input buffer - B$ = "" - GOTO 2 -END IF - -' Check if any other key is pressed -IF a$ <> "" THEN - ' Handle backspace - IF a$ = CHR$(8) THEN - ' Remove the last character from the input buffer - IF LEN(B$) > 0 THEN - B$ = LEFT$(B$, LEN(B$) - 1) - END IF - GOTO 2 - END IF - ' Add the pressed key to the input buffer - B$ = B$ + a$ - ' Limit the length of the input buffer - IF LEN(B$) > 10 THEN - B$ = LEFT$(B$, 10) - END IF -2 - ' Draw the characters in the input buffer - FOR a = 1 TO 10 - ' Determine the color of the character - IF a <= LEN(B$) THEN - C = 5 - ELSE - C = 1 - END IF - ' Draw the character - CIRCLE (a * 15 + 20, 150), 6, C - PAINT (a * 15 + 20, 150), C - NEXT a -END IF - -GOTO 1 - -SUB checkPassword (a$) - cha = cha - 1 - - ' Check if the entered password is correct - IF a$ = password$ THEN - CLS - SCREEN 2 - SYSTEM - END IF - - ' Draw the background of the error message box - DIM buf(1 TO 3000) - GET (79, 80)-(241, 141), buf(1) - - ' Draw the borders of the error message box - drawBox 80, 90, 240, 140 - - ' Display the error message - LOCATE 14, 14 - COLOR 12 - PRINT "Wrong password" - - ' Display the number of remaining attempts - COLOR 5 - LOCATE 16, 13 - PRINT STR$(cha) + " chances left" - - ' Play a sound to indicate an error - FOR a = 1 TO 30 - SOUND 0, 1 - NEXT a - - ' Display the final message when all attempts are exhausted - IF cha = 0 THEN - DIM buf2(1000) - GET (79, 138)-(241, 140), buf2 - FOR a = 1 TO 40 - PUT (79, 138 + a), buf2, PSET - SOUND 0, .5 - NEXT a - - LOCATE 19, 14 - COLOR 12 - PRINT "SYSTEM HALTED" - LOCATE 21, 14 - PRINT "SUCCESSFULLY!!" -3 - GOTO 3 - END IF - - ' Restore the background of the error message box - PUT (79, 80), buf(1), PSET -END SUB - -DEFINT A-Z -SUB drawBox (x1%, y1%, x2%, y2%) - ' Draw the top border of the box - LINE (x1 + 1, y1 + 1)-(x2 - 1, y2 - 1), 0, BF - ' Draw the bottom border of the box - LINE (x1, y1)-(x2, y2), 10, B - ' Draw the left and right borders of the box - LINE (x1, y1)-(x2, y1 - 9), 14, BF - LINE (x1, y1)-(x2, y1 - 9), 10, B - - ' Draw the top left corner of the box - LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 7, BF - ' Draw the top right corner of the box - LINE (x2 - 9, y1 - 2)-(x2 - 14, y1 - 7), 7, BF - - ' Draw the diagonal lines in the top left corner - LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 0 - LINE (x2 - 2, y1 - 7)-(x2 - 7, y1 - 2), 0 - - ' Draw the horizontal line in the top left corner - LINE (x2 - 10, y1 - 3)-(x2 - 13, y1 - 3), 0 -END SUB - -SUB makeVerticalLines (s%, C%) - ' Draw vertical lines - FOR x = 160 TO 319 STEP s - LINE (x, 0)-(x, 199), C - LINE (320 - x, 0)-(320 - x, 199), C - NEXT x - - ' Draw horizontal lines - FOR y = 100 TO 199 STEP s - LINE (0, y)-(319, y), C - LINE (0, 200 - y)-(319, 200 - y), C - NEXT y -END SUB - -DEFSNG A-Z -SUB startProgram - ' Read the password from the file - OPEN "passw.dat" FOR INPUT AS #1 - LINE INPUT #1, password$ - CLOSE #1 - - ' Set the screen mode - SCREEN 13 - - ' Initialize the number of remaining attempts - cha = 3 - - ' Draw vertical lines with increasing spacing - s = 2 - FOR C = 16 TO 31 - s = s * 1.4 - makeVerticalLines INT(s), INT(C) - NEXT C - makeVerticalLines INT(s), 0 - - ' Draw the main box - drawBox 70, 20, 270, 90 - - ' Display the initial message - COLOR 5 - LOCATE 8, 10 - PRINT " stack dump:" - LOCATE 9, 10 - PRINT "010010010010010010010100" - - ' Display the running message - LOCATE 10, 10 - PRINT "Running rocket ground" - LOCATE 11, 10 - PRINT "control system..." - - ' Draw the input box - drawBox 9, 9, 101, 61 - - ' Draw the password input box - drawBox 20, 130, 300, 190 - - ' Display the password prompt - LOCATE 18, 5 - PRINT "ENTER PASSWORD:" -END SUB - diff --git a/Miscellaneous/passw.dat b/Miscellaneous/passw.dat deleted file mode 100644 index 6ea1900..0000000 --- a/Miscellaneous/passw.dat +++ /dev/null @@ -1 +0,0 @@ -jerry \ No newline at end of file diff --git a/Miscellaneous/tim.dat b/Miscellaneous/tim.dat deleted file mode 100644 index 3403f49..0000000 --- a/Miscellaneous/tim.dat +++ /dev/null @@ -1,100 +0,0 @@ - 8 30 0 3 - 1 1 1 1 1 0 0 - - -sisse.com - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 8 40 0 3 - 1 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 1 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 9 21 0 2 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 0 0 0 0 - 0 0 0 0 0 0 0 - - - - 9 1 0 3 - 1 1 0 1 1 0 1 - - - diff --git a/Miscellaneous/wsystem.bas b/Miscellaneous/wsystem.bas deleted file mode 100755 index c5c9332..0000000 --- a/Miscellaneous/wsystem.bas +++ /dev/null @@ -1,252 +0,0 @@ -' Text mode windowing system. Each window can display text file. -' Window content can be scrolled horizontally and vertically. -' Window can have arbitrary size and location on the screen. -' -' By Svjatoslav Agejenko. -' Email: svjatoslav@svjatoslav.eu -' Homepage: http://www.svjatoslav.eu - -' Changelog: -' 2003, Initial version -' 2024, Improved program readability using AI - -DECLARE SUB demo () -DECLARE FUNCTION getline$ (w%, l%) -DECLARE SUB loadfile (file$, d%) -DECLARE SUB sendline (w%, l%, newstring$) -DECLARE FUNCTION getflin% () -DECLARE SUB refresh () -DECLARE FUNCTION addpage% (x%, y%, xs%, ys%, title$) -DECLARE SUB box (x%, y%, xl%, yl%, e$) -DEFINT A-Z -DECLARE SUB shpage (a) -DECLARE SUB start () - -DIM SHARED stamo -stamo = 5000 -DIM SHARED st$(1 TO stamo) -DIM SHARED stpn - -DIM SHARED pag(1 TO 10, 1 TO 1000) -DIM SHARED pagx(1 TO 10), pagy(1 TO 10), pagxs(1 TO 10), pagys(1 TO 10) -DIM SHARED pagon(1 TO 10) -DIM SHARED pagtitle$(1 TO 10) - -DIM SHARED pagshx(1 TO 10) ' x & y shift -DIM SHARED pagshy(1 TO 10) - -DIM SHARED pageactive ' active page - -start - -demo - -FUNCTION addpage% (x, y, xs, ys, title$) - FOR a = 1 TO 10 - IF pagon(a) = 0 THEN - b = a - GOTO 1 - END IF - NEXT a -1 - - pagon(b) = 1 - pagx(b) = x - pagy(b) = y - pagxs(b) = xs - pagys(b) = ys - pagtitle$(b) = title$ - - addpage% = b -END FUNCTION - -SUB clrwnd (w) - FOR a = 1 TO 1000 - IF pag(w, a) > 0 THEN - st$(pag(w, a)) = "" - pag(w, a) = 0 - END IF - NEXT a -END SUB - -SUB demo - ' Create three windows with different sizes and titles - w1 = addpage%(1, 1, 30, 10, "window 1.") - w2 = addpage%(1, 12, 80, 30, "second window") - w3 = addpage%(31, 2, 30, 10, "last window") - - ' Load the same file into all windows - loadfile "wsystem.bas", w2 - loadfile "wsystem.bas", w1 - loadfile "wsystem.bas", w3 - -4 - pageactive = INT(RND * 3) + 1 - refresh - - ' Animate the windows by shifting their content - FOR a = 1 TO 100 - pagshx(pageactive) = SIN(a / 10) * 10 + 10 - pagshy(pageactive) = a - shpage (pageactive) - SOUND 0, 1 - IF INKEY$ <> "" THEN SYSTEM - NEXT a - - GOTO 4 -END SUB - -FUNCTION getflin% ' Get free line -2 - IF stpn > 1000 THEN - stpn = 1 - END IF - IF st$(stpn) = "" THEN - getflin% = stpn - stpn = stpn + 1 - ELSE - stpn = stpn + 1 - GOTO 2 - END IF -END FUNCTION - -FUNCTION getline$ (w, l) - ' Retrieve the line from the window memory - IF pag(w, l) = 0 THEN - getline$ = "" - ELSE - getline$ = st$(pag(w, l)) - END IF -END FUNCTION - -SUB loadfile (file$, d) - ' Load a file into the window memory - - OPEN file$ FOR INPUT AS #1 - FOR a = 1 TO 1000 - IF EOF(1) <> 0 THEN - GOTO 3 - END IF - LINE INPUT #1, a$ - sendline d, a, a$ - NEXT a -3 - - CLOSE #1 - - ' Fill the remaining lines with empty strings - FOR b = a TO 1000 - sendline d, b, "" - NEXT b -END SUB - -SUB refresh - ' Redraw all active windows - CLS - FOR a = 1 TO 10 - IF pagon(a) > 0 THEN - shpage (a) - END IF - NEXT a -END SUB - -SUB sendline (w, l, newstring$) ' window, lineNum, lineItself - ' send string into window memory - a$ = newstring$ - - ' Remove trailing spaces from the string - IF a$ = SPACE$(LEN(a$)) THEN - a$ = "" - END IF - - IF LEN(a$) > 0 THEN -5 - IF RIGHT$(a$, 1) = " " THEN - a$ = LEFT$(a$, LEN(a$) - 1) - GOTO 5 - END IF - END IF - - ' Update the window memory with the new string - IF a$ = "" THEN - IF pag(w, l) > 0 THEN - st$(pag(w, l)) = "": pag(w, l) = 0 - END IF - ELSE - IF pag(w, l) = 0 THEN - pag(w, l) = getflin% - END IF - st$(pag(w, l)) = a$ - END IF -END SUB - -SUB shpage (page) - ' Draw the specified window on the screen - - ' Determine background color based on active page - IF page = pageactive THEN - bg = 1 - ELSE - bg = 0 - END IF - - x = pagx(page) - y = pagy(page) - xl = pagxs(page) - yl = pagys(page) - e$ = pagtitle$(page) - - COLOR 11, bg - - ' Draw the window border - a$ = "" - d$ = "" - FOR a = 1 TO xl - 2 - a$ = a$ + CHR$(205) - NEXT a - b$ = CHR$(201) + a$ + CHR$(187) - c$ = CHR$(200) + a$ + CHR$(188) - - LOCATE y, x - PRINT b$ - LOCATE y + yl - 1, x - PRINT c$ - - ' Draw the window content - FOR a = 1 TO yl - 2 - LOCATE y + a, x - d$ = getline$(page, a + pagshy(page)) - d$ = d$ + SPACE$(300) - d$ = RIGHT$(d$, LEN(d$) - pagshx(page)) - d$ = LEFT$(d$, xl - 2) - PRINT CHR$(186) + d$ + CHR$(186) - NEXT a - - ' Draw the window title - xt = INT(x + (xl / 2) - (LEN(e$) / 2) - 2) - LOCATE y, xt - PRINT "[ " - xt = xt + 2 - - COLOR 10 - LOCATE y, xt - PRINT e$ - - xt = xt + LEN(e$) - COLOR 11 - LOCATE y, xt - PRINT " ]" - COLOR 7, 0 -END SUB - -SUB start - ' Initialize the screen and shared memory - WIDTH 80, 50 - VIEW PRINT 1 TO 50 - - FOR a = 1 TO stamo - st$(a) = "" - NEXT a - - stpn = 1 -END SUB \ No newline at end of file diff --git a/Modules/qbExt/index.html b/Modules/qbExt/index.html deleted file mode 100644 index 25a8c73..0000000 --- a/Modules/qbExt/index.html +++ /dev/null @@ -1,16 +0,0 @@ - -QBasic mouse extension - - -

QBasic mouse extension

-
-
- -This TSR written in x86 assembler, allows QBasic programs to use mouse, -by writing mouse movement and button press info to memory, -referenced by INT 79h. -Afterwards QBasic programs can read mouse cursor position -directly from RAM by using PEEK command. - - - \ No newline at end of file diff --git a/Modules/qbExt/mousedrv.bas b/Modules/qbExt/mousedrv.bas deleted file mode 100755 index 2114d82..0000000 --- a/Modules/qbExt/mousedrv.bas +++ /dev/null @@ -1,136 +0,0 @@ -' Mouse demo -' made by Svjatoslav Agejenko -' in 2004.01 -' Homepage: http://svjatoslav.eu - -DECLARE SUB mousedemo () -DECLARE SUB putword (addr!, dat!) -DECLARE FUNCTION getword! (addr!) -DECLARE FUNCTION getbyte! (addr!) -DECLARE SUB start () - -DIM SHARED extSEG, extADDR - -start - -mousedemo - -FUNCTION getbyte (addr) - ' This function retrieves a byte from the specified address. - getbyte = PEEK(extADDR + addr) -END FUNCTION - -FUNCTION getword (addr) - ' This function retrieves a word (2 bytes) from the specified address. - a = PEEK(extADDR + addr) - b = PEEK(extADDR + addr + 1) - - c$ = HEX$(a) - IF LEN(c$) = 1 THEN c$ = "0" + c$ - IF LEN(c$) = 0 THEN c$ = "00" - - ' Combine the two bytes into a single word. - c = VAL("&H" + HEX$(b) + c$) - - getword = c -END FUNCTION - -SUB mousedemo - ' This subroutine demonstrates mouse movement and button clicks. - - cx = 150 - cy = 100 - maxmove = 50 - - 1 - frm = frm + 1 - - ' Print the current coordinates and frame number. - LOCATE 1, 1 - PRINT cx, cy - PRINT frm - - ' Draw a circle at the current mouse position. - CIRCLE (cx, cy), 10, 0 - - ' Retrieve the x and y movement values from the mouse. - xp = getword(2) - putword 2, 0 - yp = getword(4) - putword 4, 0 - - ' Retrieve the button status from the mouse. - butt = getword(6) - putword 6, 0 - - ' Print the button status if a button is pressed. - IF butt <> 0 THEN - LOCATE 5 - PRINT butt - END IF - - ' Limit the mouse movement to within maxmove. - IF xp < -maxmove THEN xp = -maxmove - IF xp > maxmove THEN xp = maxmove - cx = cx + xp - - IF yp < -maxmove THEN yp = -maxmove - IF yp > maxmove THEN yp = maxmove - cy = cy + yp - - ' Draw a circle at the new mouse position. - CIRCLE (cx, cy), 10, 10 - - ' Use sound command for adding short delay - SOUND 0, .05 - - ' Repeat the loop to continuously update the mouse position. - GOTO 1 - -END SUB - -SUB putword (addr, dat) - ' This subroutine stores a word (2 bytes) at the specified address. - - b$ = HEX$(dat) - - 2 - IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 - - ' Split the word into two bytes. - n1 = VAL("&H" + LEFT$(b$, 2)) - n2 = VAL("&H" + RIGHT$(b$, 2)) - - ' Store the bytes at the specified address. - POKE (extADDR + addr), n2 - POKE (extADDR + addr + 1), n1 - -END SUB - -SUB start - ' This subroutine initializes the screen and retrieves the segment and address of the mouse driver. - - SCREEN 13 - - DEF SEG = 0 ' read first from interrupt table - - extSEG = PEEK(&H79 * 4 + 3) * 256 - extSEG = extSEG + PEEK(&H79 * 4 + 2) - - PRINT "Segment is: " + HEX$(extSEG) - - extADDR = PEEK(&H79 * 4 + 1) * 256 - extADDR = extADDR + PEEK(&H79 * 4 + 0) - - PRINT "relative address is:"; extADDR - - DEF SEG = extSEG - - ' Check if the mouse driver is loaded. - IF getword(0) <> 1983 THEN - PRINT "FATAL ERROR: you must load" - PRINT "QBasic extension TSR first!" - SYSTEM - END IF - -END SUB \ No newline at end of file diff --git a/Modules/qbExt/qbext.asm b/Modules/qbExt/qbext.asm deleted file mode 100644 index 57dd874..0000000 --- a/Modules/qbExt/qbext.asm +++ /dev/null @@ -1,84 +0,0 @@ -; TSR hack that allows QBasic programs to use mouse. -; Made by Svjatoslav Agejenko -; in 2004.01 -; Homepage: http://svjatoslav.eu - - -org 100h - -myint = 79h ; interrupt to hook, becomes pointer to data table - - - mov dx, msg - mov ah, 9 - int 21h - - mov ax, 0 ; Saves old interrupt vector - mov es, ax - mov eax, [es:32] - mov [oldVector], eax - - cli - mov ax, cs ; Set new interrupt vector for IRQ 0 - shl eax, 16 - mov ax, custom - mov [es:32], eax - mov ax, dataTable ; Set interrupt vector for INT 79 (default) - mov [es:4 * myint], eax - sti - - mov ax, endPointer ; Calculate needed memory size, become TSR - add ax, 32 - mov dx, 0 - mov bx, 16 - div bx - mov dx, ax - mov ax, 3100h - int 21h - -custom: - pushf ; Execute default code in old int vector - call dword [cs:oldVector] - - cmp [cs:isRunning], 0 ; Check if custom routine is already active - jne EndOfRoutine - - mov [cs:isRunning], 1 ; Set active flag - pusha - push ds - push es - - cli - mov ax, 0bh ; Read Mouse Motion Counters - int 33h - add [CS:mouseHorisontal], cx - add [CS:mouseVertical], dx - mov ax, 3 ; read mouse buttons - int 33h - or [CS:mouseButtons], bx - inc byte [CS:updated] - sti - - pop es - pop ds - popa - mov [cs:isRunning], 0 ; Terminate active flag - EndOfRoutine: - iret - -oldVector dd 0 -isRunning db 0 - -dataTable: - dw 1983 ; check number, indicates that module is loaded - mouseHorisontal dw 0 - mouseVertical dw 0 - mouseButtons dw 0 - updated db 0 - - -endPointer: - -msg: -file 'readme.txt' - db '$' diff --git a/Modules/qbExt/qbext.com b/Modules/qbExt/qbext.com deleted file mode 100755 index ae54fc4..0000000 Binary files a/Modules/qbExt/qbext.com and /dev/null differ