-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.blocks
More file actions
1 lines (1 loc) · 26.4 KB
/
main.blocks
File metadata and controls
1 lines (1 loc) · 26.4 KB
1
<xml xmlns="https://developers.google.com/blockly/xml"><block type="pxt-on-start" id="FY+S48t+bomfy9[gs|Or" x="0" y="0"><statement name="HANDLER"><block type="typescript_statement" id="nS.K-QP^+@.GNsk7:cHr" editable="false"><mutation xmlns="http://www.w3.org/1999/xhtml" line0="declare interface Math {" line1=" floor(x: number): number;" line2="}" numlines="3"></mutation><next><block type="typescript_statement" id="$/t[clRk%F;7=mD`D*54" editable="false"><mutation xmlns="http://www.w3.org/1999/xhtml" line0="namespace Counter {" line1=" let startTime = 0" line2=" let timeInterval = 0 " line3="" line4=" //% weight=4" line5=" //% block="start countdown $time"" line6=" //% time.min=1 time.max=10000" line7=" export function startCountdown(time: number): void {" line8=" startTime = control.millis()" line9=" timeInterval = time" line10=" }" line11="" line12=" //% weight=4" line13=" //% block="countdown finished"" line14=" export function countdownFinished(): boolean {" line15=" if (timeInterval > 0 && (control.millis() - startTime) >= timeInterval) {" line16=" timeInterval = 0" line17=" return true" line18=" } else {" line19=" return false" line20=" }" line21=" }" line22="}" numlines="23"></mutation><next><block type="typescript_statement" id="eHj.oUIvvwCR!n8)b@Mm" editable="false"><mutation xmlns="http://www.w3.org/1999/xhtml" line0="namespace Servo {" line1=" let zero = 1530;" line2="" line3=" export enum ServoList {" line4=" //% block="P13" enumval=13" line5=" P13 = AnalogPin.P13," line6=" //% block.P14," line7=" P14 = AnalogPin.P14," line8=" //% block="P15" enmval=15" line9=" P15 = AnalogPin.P15," line10=" //% block="P16" enumval=16" line11=" P16 = AnalogPin.P16" line12=" }" line13="" line14=" /*" line15=" * TODO: Setting the angle of a servo motor. " line16=" * @param servo A servo in the ServoList , eg: ServoList.S1" line17=" * @param angel Angle of servo motor , eg: 90" line18=" //% block="Servo motor at pin: $pin speed: $speed zero: $zero max: $max"" line19=" */" line20=" //% weight=4" line21=" //% block="servo motor zero $_zero"" line22=" //% _zero.min=1000 _zero.max=2000" line23=" export function setZero(_zero: number): void {" line24=" zero = _zero;" line25=" }" line26="" line27=" //% weight=4" line28=" //% block="servo motor at pin $pin speed $speed"" line29=" //% speed.min=-100 speed.max=100" line30=" export function setServoMotor(pin: AnalogPin, speed: number, max: number = 150): void {" line31=" if (speed == 0) {" line32=" pins.analogWritePin(pin, 0);" line33=" } else {" line34=" let x = Math.constrain(speed, -100, 100)" line35=" x = Math.map(x, -100, 100, zero - max, zero + max);" line36=" pins.servoSetPulse(pin, x);" line37=" }" line38=" }" line39="" line40=" //% weight=4" line41=" //% block="servo at pin $pin position $pos"" line42=" //% pos.min=-90 pos.max=90" line43=" export function setServoPosition(pin: AnalogPin, pos: number, zero: number = 1500, max: number = 1000): void {" line44=" if (pos == 0) {" line45=" pins.analogWritePin(pin, 0);" line46=" } else {" line47=" let x2 = Math.constrain(pos, -90, 90)" line48=" x2 = Math.map(x2, -90, 90, zero - max, zero + max);" line49=" pins.servoSetPulse(pin, x2);" line50=" }" line51=" }" line52="" line53="}" numlines="54"></mutation><next><block type="typescript_statement" id="5Mvn3H=3Ly.:d1oF[M#U" editable="false"><mutation xmlns="http://www.w3.org/1999/xhtml" line0="namespace Oled {" line1=" let font: Buffer;" line2="" line3=" const SSD1306_SETCONTRAST = 0x81" line4=" const SSD1306_SETCOLUMNADRESS = 0x21" line5=" const SSD1306_SETPAGEADRESS = 0x22" line6=" const SSD1306_DISPLAYALLON_RESUME = 0xA4" line7=" const SSD1306_DISPLAYALLON = 0xA5" line8=" const SSD1306_NORMALDISPLAY = 0xA6" line9=" const SSD1306_INVERTDISPLAY = 0xA7" line10=" const SSD1306_DISPLAYOFF = 0xAE" line11=" const SSD1306_DISPLAYON = 0xAF" line12=" const SSD1306_SETDISPLAYOFFSET = 0xD3" line13=" const SSD1306_SETCOMPINS = 0xDA" line14=" const SSD1306_SETVCOMDETECT = 0xDB" line15=" const SSD1306_SETDISPLAYCLOCKDIV = 0xD5" line16=" const SSD1306_SETPRECHARGE = 0xD9" line17=" const SSD1306_SETMULTIPLEX = 0xA8" line18=" const SSD1306_SETLOWCOLUMN = 0x00" line19=" const SSD1306_SETHIGHCOLUMN = 0x10" line20=" const SSD1306_SETSTARTLINE = 0x40" line21=" const SSD1306_MEMORYMODE = 0x20" line22=" const SSD1306_COMSCANINC = 0xC0" line23=" const SSD1306_COMSCANDEC = 0xC8" line24=" const SSD1306_SEGREMAP = 0xA0" line25=" const SSD1306_CHARGEPUMP = 0x8D" line26=" const chipAdress = 0x3C" line27=" const xOffset = 0" line28=" const yOffset = 0" line29=" let charX = 0" line30=" let charY = 0" line31=" let displayWidth = 128" line32=" let displayHeight = 64 / 8" line33=" let screenSize = 0" line34=" let zoomX = 0" line35=" let zoomY = 0" line36=" //let font: Array<Array<number>>" line37=" let loadStarted: boolean;" line38=" let loadPercent: number;" line39=" function command(cmd: number) {" line40=" let buf = pins.createBuffer(2)" line41=" buf[0] = 0x00" line42=" buf[1] = cmd" line43=" pins.i2cWriteBuffer(chipAdress, buf, false)" line44=" }" line45=" //% block="clear OLED display"" line46=" //% weight=3" line47=" export function clear() {" line48=" loadStarted = false" line49=" loadPercent = 0" line50=" command(SSD1306_SETCOLUMNADRESS)" line51=" command(0x00)" line52=" command(displayWidth - 1)" line53=" command(SSD1306_SETPAGEADRESS)" line54=" command(0x00)" line55=" command(displayHeight - 1)" line56=" let data = pins.createBuffer(17);" line57=" data[0] = 0x40; // Data Mode" line58=" for (let i = 1; i < 17; i++) {" line59=" data[i] = 0x00" line60=" }" line61=" // send display buffer in 16 byte chunks" line62=" for (let j = 0; j < screenSize; j += 16) {" line63=" pins.i2cWriteBuffer(chipAdress, data, false)" line64=" }" line65=" charX = xOffset" line66=" charY = yOffset" line67=" }" line68="" line69=" function drawLoadingFrame() {" line70=" command(SSD1306_SETCOLUMNADRESS)" line71=" command(0x00)" line72=" command(displayWidth - 1)" line73=" command(SSD1306_SETPAGEADRESS)" line74=" command(0x00)" line75=" command(displayHeight - 1)" line76=" let col = 0" line77=" let page = 0" line78=" let data2 = pins.createBuffer(17);" line79=" data2[0] = 0x40; // Data Mode" line80=" let k = 1" line81=" for (let page2 = 0; page2 < displayHeight; page2++) {" line82=" for (let col2 = 0; col2 < displayWidth; col2++) {" line83=" if (page2 === 3 && col2 > 12 && col2 < displayWidth - 12) {" line84=" data2[k] = 0x60" line85=" } else if (page2 === 5 && col2 > 12 && col2 < displayWidth - 12) {" line86=" data2[k] = 0x06" line87=" } else if (page2 === 4 && (col2 === 12 || col2 === 13 || col2 === displayWidth - 12 || col2 === displayWidth - 13)) {" line88=" data2[k] = 0xFF" line89=" } else {" line90=" data2[k] = 0x00" line91=" }" line92=" if (k === 16) {" line93=" pins.i2cWriteBuffer(chipAdress, data2, false)" line94=" k = 1" line95=" } else {" line96=" k++" line97=" }" line98="" line99=" }" line100=" }" line101=" charX = 30" line102=" charY = 2" line103=" writeString("Loading:")" line104=" }" line105=" function drawLoadingBar(percent: number) {" line106=" charX = 78" line107=" charY = 2" line108=" let num = Math.floor(percent)" line109=" writeNum(num)" line110=" writeString("%")" line111=" let width = displayWidth - 14 - 13" line112=" let lastStart = width * (loadPercent / displayWidth)" line113=" command(SSD1306_SETCOLUMNADRESS)" line114=" command(14 + lastStart)" line115=" command(displayWidth - 13)" line116=" command(SSD1306_SETPAGEADRESS)" line117=" command(4)" line118=" command(5)" line119=" let data3 = pins.createBuffer(2);" line120=" data3[0] = 0x40; // Data Mode" line121=" data3[1] = 0x7E" line122=" for (let l = lastStart; l < width * (Math.floor(percent) / 100); l++) {" line123=" pins.i2cWriteBuffer(chipAdress, data3, false)" line124=" }" line125=" loadPercent = num" line126=" }" line127="" line128=" //% block="draw loading bar at $percent percent"" line129=" //% percent.min=0 percent.max=100" line130=" //% weight=2" line131=" export function drawLoading(percent: number) {" line132=" if (loadStarted) {" line133=" drawLoadingBar(percent)" line134=" } else {" line135=" drawLoadingFrame()" line136=" drawLoadingBar(percent)" line137=" loadStarted = true" line138=" }" line139=" }" line140="" line141="" line142=" //% block="show (without newline) string $str"" line143=" //% weight=6" line144=" export function writeString(str: string) {" line145=" for (let m = 0; m < str.length; m++) {" line146=" if (charX > displayWidth - 6) {" line147=" newLine()" line148=" }" line149=" drawChar(charX, charY, str.charAt(m))" line150=" charX += 6 * (1 + zoomX)" line151=" }" line152=" }" line153=" //% block="show (without newline) number $n"" line154=" //% weight=5" line155=" export function writeNum(n: number) {" line156=" let numString = n.toString()" line157=" writeString(numString)" line158=" }" line159=" //% block="show string $str"" line160=" //% weight=8" line161=" export function writeStringNewLine(str: string) {" line162=" writeString(str)" line163=" newLine()" line164=" }" line165=" //% block="show number $n"" line166=" //% weight=7" line167=" export function writeNumNewLine(n: number) {" line168=" writeNum(n)" line169=" newLine()" line170=" }" line171="" line172=" //% block="show decimal number $n $d $f"" line173=" //% weight=7" line174=" //% d.defl=3" line175=" //% f.defl=0" line176=" export function writeFloat(n: number, d: number, f: number) {" line177=" let str = Math.round(n * 10 ** f).toString()" line178=" if (f > 0) str = str.slice(0, str.length - f) + "." + str.slice(str.length - f)" line179=" while (str.length < d) str = " " + str" line180=" writeString(str)" line181=" }" line182="" line183=" //% block="insert newline"" line184=" //% weight=4" line185=" export function newLine() {" line186=" charY++" line187=" if (zoomY === 1) charY++" line188=" charX = xOffset" line189=" }" line190="" line191=" //% block="zoom x: $x y: $y"" line192=" //% x.defl=false" line193=" //% y.defl=false" line194=" //% weight=4" line195=" export function zoom(x: boolean = false, y: boolean = false) {" line196=" zoomX = x ? 1 : 0" line197=" zoomY = y ? 1 : 0" line198=" }" line199="" line200=" function drawChar(x: number, y: number, c: string) {" line201=" command(SSD1306_SETCOLUMNADRESS)" line202=" command(x)" line203=" command(x + 5 + 6 * zoomX)" line204=" command(SSD1306_SETPAGEADRESS)" line205=" command(y)" line206=" command(y + 1 + zoomY)" line207=" let line = pins.createBuffer(2 + zoomX)" line208=" line[0] = 0x40" line209=" for (let n = 0; n <= zoomY; n++) {" line210=" for (let o = 0; o < 6; o++) {" line211=" if (o === 5) {" line212=" line[1] = 0x00" line213=" } else {" line214=" let charIndex = c.charCodeAt(0)" line215=" let charNumber = font.getNumber(NumberFormat.UInt8BE, 5 * charIndex + o)" line216=" if (zoomY === 0) {" line217=" line[1] = charNumber" line218=" } else {" line219=" let mask = (n === 0) ? 0x01 : 0x10;" line220=" line[1] = charNumber & mask ? 0x03 : 0;" line221=" mask *= 2;" line222=" line[1] |= charNumber & mask ? 0x0C : 0;" line223=" mask *= 2;" line224=" line[1] |= charNumber & mask ? 0x30 : 0;" line225=" mask *= 2;" line226=" line[1] |= charNumber & mask ? 0xC0 : 0;" line227=" }" line228=" }" line229=" if (zoomX === 1) line[2] = line[1]" line230=" pins.i2cWriteBuffer(chipAdress, line, false)" line231=" }" line232=" }" line233=" }" line234=" function drawShape(pixels: Array<Array<number>>) {" line235=" let x1 = displayWidth" line236=" let y1 = displayHeight * 8" line237=" let x22 = 0" line238=" let y2 = 0" line239=" for (let p = 0; p < pixels.length; p++) {" line240=" if (pixels[p][0] < x1) {" line241=" x1 = pixels[p][0]" line242=" }" line243=" if (pixels[p][0] > x22) {" line244=" x22 = pixels[p][0]" line245=" }" line246=" if (pixels[p][1] < y1) {" line247=" y1 = pixels[p][1]" line248=" }" line249=" if (pixels[p][1] > y2) {" line250=" y2 = pixels[p][1]" line251=" }" line252=" }" line253=" let page1 = Math.floor(y1 / 8)" line254=" let page22 = Math.floor(y2 / 8)" line255=" let line2 = pins.createBuffer(2)" line256=" line2[0] = 0x40" line257=" for (let x3 = x1; x3 <= x22; x3++) {" line258=" for (let page3 = page1; page3 <= page22; page3++) {" line259=" line2[1] = 0x00" line260=" for (let q = 0; q < pixels.length; q++) {" line261=" if (pixels[q][0] === x3) {" line262=" if (Math.floor(pixels[q][1] / 8) === page3) {" line263=" line2[1] |= Math.pow(2, (pixels[q][1] % 8))" line264=" }" line265=" }" line266=" }" line267=" if (line2[1] !== 0x00) {" line268=" command(SSD1306_SETCOLUMNADRESS)" line269=" command(x3)" line270=" command(x3 + 1)" line271=" command(SSD1306_SETPAGEADRESS)" line272=" command(page3)" line273=" command(page3 + 1)" line274=" //line[1] |= pins.i2cReadBuffer(chipAdress, 2)[1]" line275=" pins.i2cWriteBuffer(chipAdress, line2, false)" line276=" }" line277=" }" line278=" }" line279=" }" line280="" line281=" //% block="draw line from:|x: $x0 y: $y0 to| x: $x1 y: $y1"" line282=" //% x0.defl=0" line283=" //% y0.defl=0" line284=" //% x1.defl=20" line285=" //% y1.defl=20" line286=" //% weight=1" line287=" export function drawLine(x0: number, y0: number, x1: number, y1: number) {" line288=" let pixels: Array<Array<number>> = []" line289=" let kx: number, ky: number, c: number, r: number, xx: number, yy: number, dx: number, dy: number;" line290=" let targetX = x1" line291=" let targetY = y1" line292=" x1 -= x0; kx = 0; if (x1 > 0) kx = +1; if (x1 < 0) { kx = -1; x1 = -x1; } x1++;" line293=" y1 -= y0; ky = 0; if (y1 > 0) ky = +1; if (y1 < 0) { ky = -1; y1 = -y1; } y1++;" line294=" if (x1 >= y1) {" line295=" c = x1" line296=" for (r = 0; r < x1; r++, x0 += kx) {" line297=" pixels.push([x0, y0])" line298=" c -= y1; if (c <= 0) { if (r != x1 - 1) pixels.push([x0 + kx, y0]); c += x1; y0 += ky; if (r != x1 - 1) pixels.push([x0, y0]); }" line299=" if (pixels.length > 20) {" line300=" drawShape(pixels)" line301=" pixels = []" line302=" drawLine(x0, y0, targetX, targetY)" line303=" return" line304=" }" line305=" }" line306=" } else {" line307=" c = y1" line308=" for (r = 0; r < y1; r++, y0 += ky) {" line309=" pixels.push([x0, y0])" line310=" c -= x1; if (c <= 0) { if (r != y1 - 1) pixels.push([x0, y0 + ky]); c += y1; x0 += kx; if (r != y1 - 1) pixels.push([x0, y0]); }" line311=" if (pixels.length > 20) {" line312=" drawShape(pixels)" line313=" pixels = []" line314=" drawLine(x0, y0, targetX, targetY)" line315=" return" line316=" }" line317=" }" line318=" }" line319=" drawShape(pixels)" line320=" }" line321="" line322=" //% block="draw rectangle from:|x: $x0 y: $y0 to| x: $x1 y: $y1"" line323=" //% x0.defl=0" line324=" //% y0.defl=0" line325=" //% x1.defl=20" line326=" //% y1.defl=20" line327=" //% weight=0" line328=" export function drawRectangle(x0: number, y0: number, x1: number, y1: number) {" line329=" drawLine(x0, y0, x1, y0)" line330=" drawLine(x0, y1, x1, y1)" line331=" drawLine(x0, y0, x0, y1)" line332=" drawLine(x1, y0, x1, y1)" line333=" }" line334=" //% block="initialize OLED with width $width height $height"" line335=" //% width.defl=128" line336=" //% height.defl=64" line337=" //% weight=9" line338=" export function init(width: number, height: number) {" line339=" command(SSD1306_DISPLAYOFF);" line340=" command(SSD1306_SETDISPLAYCLOCKDIV);" line341=" command(0x80); // the suggested ratio 0x80" line342=" command(SSD1306_SETMULTIPLEX);" line343=" if (height == 64) command(0x3F); else command(0x1F);" line344=" command(SSD1306_SETDISPLAYOFFSET);" line345=" command(0x0); // no offset" line346=" command(SSD1306_SETSTARTLINE | 0x0); // line #0" line347=" command(SSD1306_CHARGEPUMP);" line348=" command(0x14);" line349=" command(SSD1306_MEMORYMODE);" line350=" command(0x00); // 0x0 act like ks0108" line351=" command(SSD1306_SEGREMAP | 0x1);" line352=" command(SSD1306_COMSCANDEC);" line353=" command(SSD1306_SETCOMPINS);" line354=" if (height == 64) command(0x12); else command(0x02);" line355=" command(SSD1306_SETCONTRAST);" line356=" command(0xCF);" line357=" command(SSD1306_SETPRECHARGE);" line358=" command(0xF1);" line359=" command(SSD1306_SETVCOMDETECT);" line360=" command(0x40);" line361=" command(SSD1306_DISPLAYALLON_RESUME);" line362=" command(SSD1306_NORMALDISPLAY);" line363=" command(SSD1306_DISPLAYON);" line364=" displayWidth = width" line365=" displayHeight = height / 8" line366=" screenSize = displayWidth * displayHeight" line367=" charX = xOffset" line368=" charY = yOffset" line369=" zoomX = 0" line370=" zoomY = 0" line371=" font = hex`" line372=" 0000000000" line373=" 3E5B4F5B3E" line374=" 3E6B4F6B3E" line375=" 1C3E7C3E1C" line376=" 183C7E3C18" line377=" 1C577D571C" line378=" 1C5E7F5E1C" line379=" 00183C1800" line380=" FFE7C3E7FF" line381=" 0018241800" line382=" FFE7DBE7FF" line383=" 30483A060E" line384=" 2629792926" line385=" 407F050507" line386=" 407F05253F" line387=" 5A3CE73C5A" line388=" 7F3E1C1C08" line389=" 081C1C3E7F" line390=" 14227F2214" line391=" 5F5F005F5F" line392=" 06097F017F" line393=" 006689956A" line394=" 6060606060" line395=" 94A2FFA294" line396=" 08047E0408" line397=" 10207E2010" line398=" 08082A1C08" line399=" 081C2A0808" line400=" 1E10101010" line401=" 0C1E0C1E0C" line402=" 30383E3830" line403=" 060E3E0E06" line404=" 0000000000" line405=" 00005F0000" line406=" 0007000700" line407=" 147F147F14" line408=" 242A7F2A12" line409=" 2313086462" line410=" 3649562050" line411=" 0008070300" line412=" 001C224100" line413=" 0041221C00" line414=" 2A1C7F1C2A" line415=" 08083E0808" line416=" 0080703000" line417=" 0808080808" line418=" 0000606000" line419=" 2010080402" line420=" 3E5149453E" line421=" 00427F4000" line422=" 7249494946" line423=" 2141494D33" line424=" 1814127F10" line425=" 2745454539" line426=" 3C4A494931" line427=" 4121110907" line428=" 3649494936" line429=" 464949291E" line430=" 0000140000" line431=" 0040340000" line432=" 0008142241" line433=" 1414141414" line434=" 0041221408" line435=" 0201590906" line436=" 3E415D594E" line437=" 7C1211127C" line438=" 7F49494936" line439=" 3E41414122" line440=" 7F4141413E" line441=" 7F49494941" line442=" 7F09090901" line443=" 3E41415173" line444=" 7F0808087F" line445=" 00417F4100" line446=" 2040413F01" line447=" 7F08142241" line448=" 7F40404040" line449=" 7F021C027F" line450=" 7F0408107F" line451=" 3E4141413E" line452=" 7F09090906" line453=" 3E4151215E" line454=" 7F09192946" line455=" 2649494932" line456=" 03017F0103" line457=" 3F4040403F" line458=" 1F2040201F" line459=" 3F4038403F" line460=" 6314081463" line461=" 0304780403" line462=" 6159494D43" line463=" 007F414141" line464=" 0204081020" line465=" 004141417F" line466=" 0402010204" line467=" 4040404040" line468=" 0003070800" line469=" 2054547840" line470=" 7F28444438" line471=" 3844444428" line472=" 384444287F" line473=" 3854545418" line474=" 00087E0902" line475=" 18A4A49C78" line476=" 7F08040478" line477=" 00447D4000" line478=" 2040403D00" line479=" 7F10284400" line480=" 00417F4000" line481=" 7C04780478" line482=" 7C08040478" line483=" 3844444438" line484=" FC18242418" line485=" 18242418FC" line486=" 7C08040408" line487=" 4854545424" line488=" 04043F4424" line489=" 3C4040207C" line490=" 1C2040201C" line491=" 3C4030403C" line492=" 4428102844" line493=" 4C9090907C" line494=" 4464544C44" line495=" 0008364100" line496=" 0000770000" line497=" 0041360800" line498=" 0201020402" line499=" 3C2623263C" line500=" 1EA1A16112" line501=" 3A4040207A" line502=" 3854545559" line503=" 2155557941" line504=" 2154547841" line505=" 2155547840" line506=" 2054557940" line507=" 0C1E527212" line508=" 3955555559" line509=" 3954545459" line510=" 3955545458" line511=" 0000457C41" line512=" 0002457D42" line513=" 0001457C40" line514=" F0292429F0" line515=" F0282528F0" line516=" 7C54554500" line517=" 2054547C54" line518=" 7C0A097F49" line519=" 3249494932" line520=" 3248484832" line521=" 324A484830" line522=" 3A4141217A" line523=" 3A42402078" line524=" 009DA0A07D" line525=" 3944444439" line526=" 3D4040403D" line527=" 3C24FF2424" line528=" 487E494366" line529=" 2B2FFC2F2B" line530=" FF0929F620" line531=" C0887E0903" line532=" 2054547941" line533=" 0000447D41" line534=" 3048484A32" line535=" 384040227A" line536=" 007A0A0A72" line537=" 7D0D19317D" line538=" 2629292F28" line539=" 2629292926" line540=" 30484D4020" line541=" 3808080808" line542=" 0808080838" line543=" 2F10C8ACBA" line544=" 2F102834FA" line545=" 00007B0000" line546=" 08142A1422" line547=" 22142A1408" line548=" AA005500AA" line549=" AA55AA55AA" line550=" 000000FF00" line551=" 101010FF00" line552=" 141414FF00" line553=" 1010FF00FF" line554=" 1010F010F0" line555=" 141414FC00" line556=" 1414F700FF" line557=" 0000FF00FF" line558=" 1414F404FC" line559=" 141417101F" line560=" 10101F101F" line561=" 1414141F00" line562=" 101010F000" line563=" 0000001F10" line564=" 1010101F10" line565=" 101010F010" line566=" 000000FF10" line567=" 1010101010" line568=" 101010FF10" line569=" 000000FF14" line570=" 0000FF00FF" line571=" 00001F1017" line572=" 0000FC04F4" line573=" 1414171017" line574=" 1414F404F4" line575=" 0000FF00F7" line576=" 1414141414" line577=" 1414F700F7" line578=" 1414141714" line579=" 10101F101F" line580=" 141414F414" line581=" 1010F010F0" line582=" 00001F101F" line583=" 0000001F14" line584=" 000000FC14" line585=" 0000F010F0" line586=" 1010FF10FF" line587=" 141414FF14" line588=" 1010101F00" line589=" 000000F010" line590=" FFFFFFFFFF" line591=" F0F0F0F0F0" line592=" FFFFFF0000" line593=" 000000FFFF" line594=" 0F0F0F0F0F" line595=" 3844443844" line596=" 7C2A2A3E14" line597=" 7E02020606" line598=" 027E027E02" line599=" 6355494163" line600=" 3844443C04" line601=" 407E201E20" line602=" 06027E0202" line603=" 99A5E7A599" line604=" 1C2A492A1C" line605=" 4C7201724C" line606=" 304A4D4D30" line607=" 3048784830" line608=" BC625A463D" line609=" 3E49494900" line610=" 7E0101017E" line611=" 2A2A2A2A2A" line612=" 44445F4444" line613=" 40514A4440" line614=" 40444A5140" line615=" 0000FF0103" line616=" E080FF0000" line617=" 08086B6B08" line618=" 3612362436" line619=" 060F090F06" line620=" 0000181800" line621=" 0000101000" line622=" 3040FF0101" line623=" 001F01011E" line624=" 00191D1712" line625=" 003C3C3C3C" line626=" 0000000000`" line627=" loadStarted = false" line628=" loadPercent = 0" line629=" clear()" line630=" }" line631="}" numlines="632"></mutation></block></next></block></next></block></next></block></statement></block></xml>