STORY LOOP FURRY PORN GAMES C SERVICES [?] [R] RND POPULAR | Archived flashes: 229671 |
/disc/ · /res/ — /show/ · /fap/ · /gg/ · /swf/ | P0001 · P2596 · P5191 |
This is the info page for Flash #131768 |
> Hello, Dr. Vile! > I have missed you! >> |
Hello, Lexe. |
> What would you like to do, today? >> |
The same thing we do everyday, Lexe! |
Check the World Scientist Rankings! |
> Okay! > WORLD SCIENTIST RANKINGS > 1. Dr. Ben Evolent > 2. Dr. Harris > 3. Dr. Davis > 4. Dr. Anderson > 5. Dr. Everest > 6. Dr. Miyamoto > 7. Dr. Link > 8. Dr. Grossman >> |
CURSE THAT DR. BEN EVOLENT! Number one since I can remember! |
WHAT IS MY RANKING?! |
> . > .. > ... > .... > ..... > 99,992. Dr. Vile >> |
DOWN TWO SPOTS! I've had it, Lexe! I'VE HAD IT! |
Today, we complete the Death Ray and destroy this world! |
THAT will show them! THAT will move me, the great Dr. Vile, to the VERY TOP! HA HA HA HA! |
> ... Sound reasoning, Dr. Vile. >> |
Let's get to work! |
> *GASP!* >> |
What is it?! |
> A meteor! A meteor is headed for Earth! Collision is inevitable. >> |
Really?! Let me see! |
> It is massive! We are all going to die. >> |
Hoooo... that IS big. |
HA HA! EXCELLENT! |
> What. >> |
The meteor will do my work for me! The Earth is DOOMED! HA HA HA! |
Today, we celebrate! |
> Wait! I have a wonderful idea. >> |
> Why don't we use the Death Ray to destroy the meteor? >> |
Preposterous! You are defective! |
> Think of the headlines, Dr. Vile. > DR. VILE SAVES THE WORLD! > SCIENTIST HAILED AS WORLD HERO! > DR. VILE DECLARED GREATEST SCIENTIST IN HISTORY! >> |
Hmmm. Interesting. |
Hmmm... |
HMMMM! |
Alright! We will destroy this meteor! |
> Okay! >> |
> The Death Ray will need to be upgraded. We will need parts. >> |
> Find the parts around town. Take metal from cars, wood from tables and trees, circuits from TVs - whatever it takes! Say please! >> |
> Use the SPACE BAR to open the Needed Parts List and collect the necessary parts. >> |
HA! The simpletons in this town will never let me take their belongings! |
... Likely due to the fact that I try to kill them everyday. |
> We must upgrade the Death Ray! You can do it, Dr. Vile! Only YOU can save the world! >> |
Very well! I will get the parts! |
I WILL save this world! Even if I have to KILL EVERYONE with a BAT! |
> N-no, no. Please don't kill anyone. That is the point, Dr. Vile. >> |
I MUST! FOR THE GREATER GOOD! |
THE GREATER GOOD! HOOOOO! |
> Yeah. We're gonna be just fine. >> |
Well done, Dr. Vile! The Death Ray is ready to destroy the meteor! |
The fools in this town were HAPPY to give me the parts! They love me! |
Now the whole world will love you! |
World Scientist Rankings number one spot, HERE I COME! |
Activating Death Ray. |
Targeting meteor. |
Target locked. |
Firing Death Ray in 3... |
2... |
1... |
FIIIIIIIIIRE!!! |
> We did it! We destroyed the meteor! >> |
YES! HA HA HA! YES! |
> You are a hero! The whole world is undoubtedly cheering your name right now! >> |
As they should have been all this time! I will FINALLY get the respect and recognition I deserve! |
And, most importantly, the FEAR! The world will fear me and my all-powerful Death Ray! HA HA HA! |
Bring up the headlines, Lexe! Let me witness the fruits of my labour! |
> Searching for headlines! >> |
> Found 'em! >> |
YES! Let me see! |
> O-oh. Ah. Um... >> |
Display them! Come on, Lexe. LET ME SEE! I'm giddy with excitement! |
> O-okay. Loading headlines... >> |
... |
... C-close headlines. |
> I'm so sorry, Dr. Vile. >> |
> You are still MY hero. >> |
... D-Dr. Ben Evolent... |
DR. BEN EVOLENT... |
DR. BEN EVOLENT!! |
> N-now, please calm down, Dr. Vile. > Tomorrow is another day. >> |
Tomorrow... |
... Tomorrow, I go after YOU, Dr. Ben Evolent. |
Tomorrow, I KILL DR. BEN EVOLENT!! |
HIM AND EVERYONE ON THIS PLANET! HA HA HA! |
I, DR. VILE, AM THE GREATEST SCIENTIST THIS WORLD WILL EVER KNOW!! |
> That's the spirit, Dr. Vile! >> |
> You will always be my number one scientist. > I wuv you so much. > MUAH! >> |
> Thank you for playing DR. VILE in THE GREATER GOOD! > We at GREEN PIXEL hope you had as much fun playing it as we did making it! > Thank you to Ludum Dare for making our first Jam so much fun! >> |
> We may take this game further and pump it full of features so please give us your feedback! > We'll keep you updated on our progress and our other projects on Twitter, @GreenPixelDev, and on our website, www.greenpixel.ca! >> |
> Please follow us and send us your feedback or I'll be sad. >> |
> Thank you again for playing! > Congratulations to all you other Ludum Dare 25 devs! See you next time! > We wuv you so much! > MUAH! >> |
> Now, off you go! > Back to the main menu! >> |
ActionScript [AS3]
Section 1//Sprite2D (greenpixel.game.sprite.Sprite2D) package greenpixel.game.sprite { import flash.display.*; import greenpixel.gut.anim.*; import flash.geom.*; public class Sprite2D extends Sprite { protected var drawData:DrawData; public var hitBox:Rectangle; private var currentAnimBundle:int; private var currentFrame:int; public var isAlive:Boolean; private var frameOpStatus:int; private var currentAnimIndex:int; private var frameCounter:int; public var isAnimFinished:Boolean; public function Sprite2D(){ currentAnimBundle = -1; currentAnimIndex = -1; } public function resetAnim(_arg1:int){ currentAnimIndex = -1; setAnim(currentAnimBundle, _arg1); } public function checkFrameOps():int{ var _local1:int; _local1 = frameOpStatus; frameOpStatus = FrameData.OP_NONE; return (_local1); } public function nextFrame():void{ if (frameCounter == drawData.numDrawFrames){ frameCounter = 0; if (currentFrame < (drawData.totalFrames - 1)){ currentFrame++; } else { if (drawData.loopType == AnimationBundle.ONESHOT){ isAnimFinished = true; } else { currentFrame = 0; }; }; if (!isAnimFinished){ setDrawData(); }; } else { frameCounter++; }; } public function setDrawData():void{ drawData = AnimManager.instance.getDrawData(currentAnimBundle, currentAnimIndex, currentFrame); frameOpStatus = drawData.frameOp; } public function setPos(_arg1:Number, _arg2:Number):void{ x = _arg1; y = _arg2; } public function setAnim(_arg1:int, _arg2:int){ if ((((currentAnimBundle == _arg1)) && ((currentAnimIndex == _arg2)))){ return; }; currentAnimBundle = _arg1; currentAnimIndex = _arg2; currentFrame = 0; frameCounter = 0; setDrawData(); isAnimFinished = false; } public function drawToBuffer(_arg1:BitmapData, _arg2:int, _arg3:int){ _arg1.copyPixels(drawData.img, drawData.bounds, new Point((_arg2 + drawData.imageOffsetX), (_arg3 + drawData.imageOffsetY))); } } }//package greenpixel.game.spriteSection 2//TextSprite (greenpixel.game.sprite.TextSprite) package greenpixel.game.sprite { import flash.display.*; import flash.geom.*; import flash.text.*; import greenpixel.game.ui.*; public class TextSprite extends Sprite2D { private var useBGAnim:Boolean; private var textArea:TextArea; public function TextSprite(_arg1:Rectangle, _arg2:int, _arg3:int, _arg4:Boolean){ textArea = new TextArea(_arg1, _arg2, _arg3); useBGAnim = _arg4; } public function isTextFinished():Boolean{ return (textArea.isTextFinished); } public function nextPage():void{ textArea.nextPage(); } public function showPage():void{ textArea.showPage(); } override public function nextFrame():void{ if (useBGAnim){ super.nextFrame(); }; textArea.nextFrame(); } public function isPageFinished():Boolean{ return (textArea.isPageFinished); } public function setText(_arg1:String, _arg2:int):void{ textArea.setText(_arg1, _arg2); } public function setFormat(_arg1:TextFormat):void{ textArea.setFormat(_arg1); } override public function drawToBuffer(_arg1:BitmapData, _arg2:int, _arg3:int){ var _local4:Matrix; if (useBGAnim){ super.drawToBuffer(_arg1, _arg2, _arg3); }; _local4 = new Matrix(); _local4.translate((_arg2 + textArea.x), (_arg3 + textArea.y)); _arg1.draw(textArea, _local4); } } }//package greenpixel.game.spriteSection 3//Tile (greenpixel.game.tilemap.Tile) package greenpixel.game.tilemap { public class Tile { public static var SPECIAL_SPAWN_COUCH = 16; public static var ROT90:int = (1 << 6); public static var TILE_YPOS_SHIFT:int = 8; public static var ROTFLAGS:int = ((ROT180 | ROT270) | ROT90); public static var FLIPFLAGS:int = (HFLIP | VFLIP); public static var SPECIAL_SPAWN_CAR = 21; public static var SPECIAL_SPAWN_ROCK = 9; public static var SPECIAL_SPAWN_BUSH = 8; public static var SPECIAL_SPAWN_STOVE = 10; public static var HFLIP:int = (1 << 0); public static var SPECIAL_SPAWN_NPC = 7; public static var VFLIP:int = (1 << 1); public static var SPECIAL_SPAWN_TABLE = 17; public static var SPECIAL_PLAYER = 2; public static var WALL:int = (1 << 2); public static var SPECIAL_SPAWN_TV = 15; public static var TILE_TYPE_SHIFT:int = 24; public static var SPECIAL_SPAWN_FRIDGE = 13; public static var SPECIAL_SPIKES_RIGHT = 4; public static var SPECIAL_SPAWN_TABLE_AND_CHAIRS = 14; public static var ROT180:int = (1 << 4); public static var OVER:int = (1 << 3); public static var SPECIAL_SPIKES_DOWN = 5; public static var SPECIAL_SPIKES_UP = 3; public static var SPECIAL_SPAWN_BED = 18; public static var SPECIAL_SPAWN_COUNTER = 12; public static var SPECIAL_SPAWN_SINK = 11; public static var SPECIAL_SPAWN_DESK = 20; public static var SPECIAL_VISIBILITY_NODE = 23; public static var SPECIAL_SPAWN_TREE = 22; public static var TILE_XPOS_SHIFT:int = 16; public static var ROT270:int = (1 << 5); public static var SPECIAL_SPAWN_DOOR = 6; public static var SPECIAL_GOAL = 1; public static var SPECIAL_SPAWN_DRESSER = 19; public static function hasFlag(_arg1:int, _arg2:int):Boolean{ return (((_arg1 & _arg2) == _arg2)); } public static function getType(_arg1:int):int{ return (((_arg1 >> Tile.TILE_TYPE_SHIFT) & 31)); } public static function getImageX(_arg1:int):int{ return (((_arg1 >> Tile.TILE_XPOS_SHIFT) & 0xFF)); } public static function getImageY(_arg1:int):int{ return (((_arg1 >> Tile.TILE_YPOS_SHIFT) & 0xFF)); } } }//package greenpixel.game.tilemapSection 4//TileMap (greenpixel.game.tilemap.TileMap) package greenpixel.game.tilemap { import flash.display.*; import flash.geom.*; import greenpixel.game.world.objects.*; import flash.utils.*; public class TileMap { private var special:Array; public var mapWidth:int; private var tileImage:BitmapData; public var tileSize:int; private var drawTileWidth:int; private var scrollOffsetX:int; private var scrollOffsetY:int; private var map:Array; private var drawTileHeight:int; public var mapHeight:int; private var drawTileStartY:int; private var drawTileStartX:int; private var screenHeight:int; private var animNum:int; private var screenWidth:int; public function TileMap(_arg1:int, _arg2:int){ screenWidth = _arg1; screenHeight = _arg2; drawTileStartX = 0; drawTileStartY = 0; drawTileWidth = 0; drawTileHeight = 0; } public function hasWall(_arg1:int, _arg2:int):Boolean{ return (Tile.hasFlag(map[_arg2][_arg1], Tile.WALL)); } public function nextFrame():void{ } public function centerMap(_arg1:Number, _arg2:Number):Point{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; _local3 = int((_arg1 / tileSize)); _local4 = int((_arg2 / tileSize)); _local5 = (_local3 - (drawTileWidth >> 1)); _local6 = (_local4 - (drawTileHeight >> 1)); _local7 = _arg1; _local8 = _arg2; drawTileStartX = 0; drawTileStartY = 0; scrollOffsetX = 0; scrollOffsetY = 0; if (((((_local5 + 1) > 0)) && ((mapWidth > drawTileWidth)))){ drawTileStartX = _local5; _local7 = ((drawTileWidth >> 1) * tileSize); if ((drawTileStartX + drawTileWidth) >= mapWidth){ drawTileStartX = (mapWidth - drawTileWidth); _local7 = (_arg1 - ((mapWidth - drawTileWidth) * tileSize)); } else { scrollOffsetX = (scrollOffsetX - (_arg1 % tileSize)); }; }; if (((((_local6 + 1) > 0)) && ((mapHeight > drawTileHeight)))){ drawTileStartY = _local6; _local8 = ((drawTileHeight >> 1) * tileSize); if ((drawTileStartY + drawTileHeight) >= mapHeight){ drawTileStartY = (mapHeight - drawTileHeight); _local8 = (_arg2 - ((mapHeight - drawTileHeight) * tileSize)); } else { scrollOffsetY = (scrollOffsetY - (_arg2 % tileSize)); }; }; return (new Point(_local7, _local8)); } public function moveSpriteRight(_arg1:Entity, _arg2:int):Boolean{ var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = int(((((_arg1.x + _arg1.hitBox.x) + _arg1.hitBox.width) + _arg2) / tileSize)); _local4 = int(((_arg1.y + _arg1.hitBox.y) / tileSize)); _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (tileSize / 2); if ((((_arg1.x + _arg1.hitBox.x) + _arg1.hitBox.width) + _arg2) > (mapWidth * tileSize)){ _arg1.x = ((mapWidth * tileSize) - (_arg1.hitBox.x + _arg1.hitBox.width)); return (false); }; _local6 = ((_arg1.y + _arg1.hitBox.y) - (_local4 * tileSize)); _local7 = (((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) - ((_local4 + 1) * tileSize)); if ((((((((((_local7 > 0)) && ((_local7 <= _local8)))) && (((_local4 + 1) < mapHeight)))) && (Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][_local3], Tile.WALL))))){ _arg1.x = ((_local3 * tileSize) - (_arg1.hitBox.x + _arg1.hitBox.width)); if (!_arg1.doingAction(Entity.ACTION_DOWN)){ _local5 = Math.min(_arg2, _local7); moveSpriteUp(_arg1, _local5); }; return (false); } else { if ((((((((_local6 > (tileSize - _local8))) && (((_local4 + 1) < mapHeight)))) && (Tile.hasFlag(map[_local4][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL))))){ _arg1.x = ((_local3 * tileSize) - (_arg1.hitBox.x + _arg1.hitBox.width)); if (!_arg1.doingAction(Entity.ACTION_UP)){ _local5 = Math.min(_arg2, (tileSize - _local6)); moveSpriteDown(_arg1, _local5); }; return (false); } else { if (((Tile.hasFlag(map[_local4][_local3], Tile.WALL)) || (((((((_local4 + 1) < mapHeight)) && ((((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) > ((_local4 + 1) * tileSize))))) && (Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL)))))){ _arg1.xSpeed = 0; _arg1.x = ((_local3 * tileSize) - (_arg1.hitBox.x + _arg1.hitBox.width)); return (false); }; }; }; _arg1.x = (_arg1.x + _arg2); return (true); } public function loadMap(_arg1:Array, _arg2:BitmapData){ var _local3:int; var _local4:int; var _local5:int; var _local6:int; _local5 = 0; var _temp1 = _local5; _local5 = (_local5 + 1); _local6 = _arg1[_temp1]; tileImage = _arg2; _local3 = 0; while (_local3 < _local6) { _local3++; }; var _temp2 = _local5; _local5 = (_local5 + 1); mapWidth = _arg1[_temp2]; var _temp3 = _local5; _local5 = (_local5 + 1); mapHeight = _arg1[_temp3]; var _temp4 = _local5; _local5 = (_local5 + 1); tileSize = _arg1[_temp4]; trace(((((mapWidth + " ") + mapHeight) + " ") + tileSize)); drawTileWidth = (screenWidth / tileSize); drawTileHeight = (screenHeight / tileSize); map = new Array(mapHeight); special = new Array(mapHeight); _local3 = 0; while (_local3 < mapHeight) { map[_local3] = new Array(mapWidth); special[_local3] = new Array(mapWidth); _local3++; }; _local3 = 0; while (_local3 < mapHeight) { _local4 = 0; while (_local4 < mapWidth) { var _temp5 = _local5; _local5 = (_local5 + 1); special[_local3][_local4] = _arg1[_temp5]; var _temp6 = _local5; _local5 = (_local5 + 1); map[_local3][_local4] = _arg1[_temp6]; _local4++; }; _local3++; }; } public function moveSpriteLeft(_arg1:Entity, _arg2:int):Boolean{ var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = int((((_arg1.x + _arg1.hitBox.x) - _arg2) / tileSize)); _local4 = int(((_arg1.y + _arg1.hitBox.y) / tileSize)); _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (tileSize / 2); if (((_arg1.x + _arg1.hitBox.x) - _arg2) < 0){ _arg1.xSpeed = 0; _arg1.x = -(_arg1.hitBox.x); return (false); }; _local6 = ((_arg1.y + _arg1.hitBox.y) - (_local4 * tileSize)); _local7 = (((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) - ((_local4 + 1) * tileSize)); if ((((((((((_local7 > 0)) && ((_local7 <= _local8)))) && (((_local4 + 1) < mapHeight)))) && (Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][_local3], Tile.WALL))))){ _arg1.x = (((_local3 + 1) * tileSize) - _arg1.hitBox.x); if (!_arg1.doingAction(Entity.ACTION_DOWN)){ _local5 = Math.min(_arg2, _local7); moveSpriteUp(_arg1, _local5); }; return (false); } else { if ((((((((_local6 > (tileSize - _local8))) && (((_local4 + 1) < mapHeight)))) && (Tile.hasFlag(map[_local4][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL))))){ _arg1.x = (((_local3 + 1) * tileSize) - _arg1.hitBox.x); if (!_arg1.doingAction(Entity.ACTION_UP)){ _local5 = Math.min(_arg2, (tileSize - _local6)); moveSpriteDown(_arg1, _local5); }; return (false); } else { if (((Tile.hasFlag(map[_local4][_local3], Tile.WALL)) || (((((((_local4 + 1) < mapHeight)) && ((((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) > ((_local4 + 1) * tileSize))))) && (Tile.hasFlag(map[(_local4 + 1)][_local3], Tile.WALL)))))){ _arg1.xSpeed = 0; _arg1.x = (((_local3 + 1) * tileSize) - _arg1.hitBox.x); return (false); }; }; }; _arg1.x = (_arg1.x - _arg2); return (true); } public function moveSpriteDown(_arg1:Entity, _arg2:int):Boolean{ var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = int(((_arg1.x + _arg1.hitBox.x) / tileSize)); _local4 = int(((((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) + _arg2) / tileSize)); _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (tileSize / 2); if ((((_arg1.y + _arg1.hitBox.y) + _arg1.hitBox.height) + _arg2) >= (mapHeight * tileSize)){ _arg1.y = ((mapHeight * tileSize) - (_arg1.hitBox.y + _arg1.hitBox.height)); return (false); }; _local6 = ((_arg1.x + _arg1.hitBox.x) - (_local3 * tileSize)); _local7 = (((_arg1.x + _arg1.hitBox.x) + _arg1.hitBox.width) - ((_local3 + 1) * tileSize)); if ((((((((((_local7 > 0)) && ((_local7 <= _local8)))) && (((_local3 + 1) < mapWidth)))) && (Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][_local3], Tile.WALL))))){ _arg1.y = ((_local4 * tileSize) - (_arg1.hitBox.y + _arg1.hitBox.height)); if (!_arg1.doingAction(Entity.ACTION_RIGHT)){ _local5 = Math.min(_arg2, _local7); moveSpriteLeft(_arg1, _local5); }; return (false); } else { if ((((((((_local6 > (tileSize - _local8))) && (((_local3 + 1) < mapWidth)))) && (Tile.hasFlag(map[_local4][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL))))){ _arg1.y = ((_local4 * tileSize) - (_arg1.hitBox.y + _arg1.hitBox.height)); if (!_arg1.doingAction(Entity.ACTION_LEFT)){ _local5 = Math.min(_arg2, (tileSize - _local6)); moveSpriteRight(_arg1, _local5); }; return (false); } else { if (((Tile.hasFlag(map[_local4][_local3], Tile.WALL)) || (((((((_local3 + 1) < mapWidth)) && (((_arg1.x + _arg1.hitBox.width) > ((_local3 + 1) * tileSize))))) && (Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL)))))){ _arg1.ySpeed = 0; _arg1.y = ((_local4 * tileSize) - (_arg1.hitBox.y + _arg1.hitBox.height)); return (false); }; }; }; _arg1.y = (_arg1.y + _arg2); return (true); } public function getMap():Array{ return (map); } public function loadByteMap(_arg1:Array, _arg2:BitmapData){ var _local3:int; var _local4:int; var _local5:ByteArray; _local5 = new ByteArray(); tileImage = _arg2; _local3 = 0; while (_local3 < _arg1.length) { _local5.writeByte(_arg1[_local3]); _local3++; }; _local5.position = 0; animNum = _local5.readInt(); _local3 = 0; while (_local3 < animNum) { _local5.readInt(); _local5.readInt(); _local3++; }; mapWidth = _local5.readInt(); mapHeight = _local5.readInt(); tileSize = _local5.readInt(); drawTileWidth = (screenWidth / tileSize); drawTileHeight = (screenHeight / tileSize); map = new Array(mapHeight); special = new Array(mapHeight); _local3 = 0; while (_local3 < mapHeight) { map[_local3] = new Array(mapWidth); special[_local3] = new Array(mapWidth); _local3++; }; _local3 = 0; while (_local3 < mapHeight) { _local4 = 0; while (_local4 < mapWidth) { special[_local3][_local4] = _local5.readInt(); map[_local3][_local4] = _local5.readInt(); _local4++; }; _local3++; }; } public function moveSpriteUp(_arg1:Entity, _arg2:int):Boolean{ var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = int(((_arg1.x + _arg1.hitBox.x) / tileSize)); _local4 = int((((_arg1.y + _arg1.hitBox.y) - _arg2) / tileSize)); _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (tileSize / 2); if ((_arg1.y - _arg2) < 0){ _arg1.y = 0; return (false); }; _local6 = ((_arg1.x + _arg1.hitBox.x) - (_local3 * tileSize)); _local7 = (((_arg1.x + _arg1.hitBox.x) + _arg1.hitBox.width) - ((_local3 + 1) * tileSize)); if ((((((((((_local7 > 0)) && ((_local7 <= _local8)))) && (((_local3 + 1) < mapWidth)))) && (Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][_local3], Tile.WALL))))){ _arg1.y = (((_local4 + 1) * tileSize) - _arg1.hitBox.y); if (!_arg1.doingAction(Entity.ACTION_RIGHT)){ _local5 = Math.min(_arg2, _local7); moveSpriteLeft(_arg1, _local5); }; return (false); } else { if ((((((((_local6 > (tileSize - _local8))) && (((_local3 + 1) < mapWidth)))) && (Tile.hasFlag(map[_local4][_local3], Tile.WALL)))) && (!(Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL))))){ _arg1.y = (((_local4 + 1) * tileSize) - _arg1.hitBox.y); if (!_arg1.doingAction(Entity.ACTION_LEFT)){ _local5 = Math.min(_arg2, (tileSize - _local6)); moveSpriteRight(_arg1, _local5); }; return (false); } else { if (((Tile.hasFlag(map[_local4][_local3], Tile.WALL)) || (((((((_local3 + 1) < mapWidth)) && ((((_arg1.x + _arg1.hitBox.x) + _arg1.hitBox.width) > ((_local3 + 1) * tileSize))))) && (Tile.hasFlag(map[_local4][(_local3 + 1)], Tile.WALL)))))){ _arg1.ySpeed = 0; _arg1.y = (((_local4 + 1) * tileSize) - _arg1.hitBox.y); return (false); }; }; }; _arg1.y = (_arg1.y - _arg2); return (true); } public function getCurrentOffset():Point{ return (new Point(((tileSize * drawTileStartX) - scrollOffsetX), ((tileSize * drawTileStartY) - scrollOffsetY))); } public function loadMap2D(_arg1:Array, _arg2:Array, _arg3:BitmapData, _arg4:int){ var _local5:int; var _local6:int; tileImage = _arg3; _local5 = 0; while (_local5 < animNum) { _local5++; }; mapWidth = _arg1[0].length; mapHeight = _arg1.length; tileSize = _arg4; drawTileWidth = (screenWidth / tileSize); drawTileHeight = (screenHeight / tileSize); map = new Array(mapHeight); special = new Array(mapHeight); _local5 = 0; while (_local5 < mapHeight) { map[_local5] = new Array(mapWidth); special[_local5] = new Array(mapWidth); _local5++; }; _local5 = 0; while (_local5 < mapHeight) { _local6 = 0; while (_local6 < mapWidth) { special[_local5][_local6] = _arg2[_local5][_local6]; map[_local5][_local6] = _arg1[_local5][_local6]; _local6++; }; _local5++; }; } public function removeWall(_arg1:int, _arg2:int):void{ map[_arg2][_arg1] = (map[_arg2][_arg1] & ~(Tile.WALL)); } public function drawToBuffer(_arg1:BitmapData){ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; _local2 = 0; while (_local2 <= drawTileHeight) { _local3 = 0; while (_local3 <= drawTileWidth) { if (((((_local2 + drawTileStartY) >= mapHeight)) || (((_local3 + drawTileStartX) >= mapWidth)))){ } else { _local4 = map[(_local2 + drawTileStartY)][(_local3 + drawTileStartX)]; _local5 = (Tile.getImageX(_local4) * tileSize); _local6 = (Tile.getImageY(_local4) * tileSize); _arg1.copyPixels(tileImage, new Rectangle(_local5, _local6, tileSize, tileSize), new Point(((_local3 * tileSize) + scrollOffsetX), ((_local2 * tileSize) + scrollOffsetY))); }; _local3++; }; _local2++; }; } public static function translateByteMapTo2D(_arg1:Array, _arg2:Array, _arg3:Array):void{ var _local4:int; var _local5:int; var _local6:ByteArray; var _local7:int; var _local8:int; var _local9:int; var _local10:int; _local6 = new ByteArray(); _local4 = 0; while (_local4 < _arg1.length) { _local6.writeByte(_arg1[_local4]); _local4++; }; _local6.position = 0; _local7 = _local6.readInt(); _local4 = 0; while (_local4 < _local7) { _local6.readInt(); _local6.readInt(); _local4++; }; _local8 = _local6.readInt(); _local9 = _local6.readInt(); _local10 = _local6.readInt(); _local4 = 0; while (_local4 < _local9) { _local5 = 0; while (_local5 < _local8) { _arg3[_local4][_local5] = _local6.readInt(); _arg2[_local4][_local5] = _local6.readInt(); _local5++; }; _local4++; }; } } }//package greenpixel.game.tilemapSection 5//TextArea (greenpixel.game.ui.TextArea) package greenpixel.game.ui { import flash.geom.*; import flash.text.*; public class TextArea extends TextField { private var counter:int; public var debug:Boolean;// = false public var isTextFinished:Boolean; private var maxCounter:int; private var testField:TextField; public var splitText:Array; public var textIndex:int; public var isPageFinished:Boolean; private var animType:int; public static var ANIMATED:int = 1; public static var LINE_BREAK:String = "^"; public static var STATIC:int = 0; public function TextArea(_arg1:Rectangle, _arg2:int, _arg3:uint){ debug = false; super(); x = _arg1.x; y = _arg1.y; width = _arg1.width; height = _arg1.height; selectable = false; textIndex = 0; isPageFinished = false; isTextFinished = false; wordWrap = true; animType = _arg2; textColor = _arg3; text = ""; testField = new TextField(); testField.width = _arg1.width; testField.height = _arg1.height; testField.wordWrap = true; if (debug){ background = true; backgroundColor = 0xFFFFFF; textColor = 0; }; } public function setFormat(_arg1:TextFormat):void{ defaultTextFormat = _arg1; } public function nextPage():void{ testField.text = ""; isPageFinished = false; counter = 0; } public function showPage():void{ while (!(((isPageFinished) || (isTextFinished)))) { testField.appendText(splitText[textIndex]); if (textIndex < (splitText.length - 1)){ testField.appendText(" "); }; if (testField.textHeight <= testField.height){ text = testField.text; textIndex++; if (textIndex == splitText.length){ isTextFinished = true; }; } else { if (testField.textHeight > testField.height){ isPageFinished = true; }; }; }; counter = 0; } public function nextFrame():void{ if (((isPageFinished) || (isTextFinished))){ return; }; if (counter == 0){ if (textIndex < splitText.length){ testField.appendText(splitText[textIndex]); if (textIndex < (splitText.length - 1)){ testField.appendText(" "); }; if (testField.textHeight <= testField.height){ text = testField.text; textIndex++; } else { if (testField.textHeight > testField.height){ isPageFinished = true; }; }; } else { isTextFinished = true; }; counter = maxCounter; } else { counter--; }; } public function setText(_arg1:String, _arg2:int):void{ testField.text = ""; text = ""; splitText = _arg1.split(" "); textIndex = 0; isPageFinished = false; isTextFinished = false; counter = 0; maxCounter = _arg2; if (animType == TextArea.STATIC){ showPage(); }; } } }//package greenpixel.game.uiSection 6//Character (greenpixel.game.world.objects.Character) package greenpixel.game.world.objects { public class Character extends Entity { public var health:int; public function Character(){ health = 100; } } }//package greenpixel.game.world.objectsSection 7//Entity (greenpixel.game.world.objects.Entity) package greenpixel.game.world.objects { import flash.geom.*; import greenpixel.math.*; import greenpixel.game.sprite.*; public class Entity extends Sprite2D { public var heading:Vector2D; public var isMoveable:Boolean; public var directionsMovedLastFrame:int; public var id:int; public var entityName:String; public var type:int; public var ySpeed:Number; public var speed:Number; public var direction:int; public var state:int; public var dest:Vector2D; public var xSpeed:Number; public var hasArrivedAtPathDest:Boolean; private var actions:int; public static var ACTION_UP:int = 1; public static var ACTION_DOWN:int = 4; public static var ACTION_JUMP:int = 16; public static var DIR_LEFT:int = 3; public static var STATE_MOVING:int = 1; public static var ACTION_NONE:int = 0; public static var STATE_IDLE:int = 0; public static var DIR_RIGHT:int = 1; public static var DIR_UP:int = 0; public static var ACTION_LEFT:int = 8; public static var STATE_MOVING_ON_PATH:int = 2; public static var ACTION_RIGHT:int = 2; public static var DIR_DOWN:int = 2; private static var idCounter:int = 0; public function Entity(){ name = ""; xSpeed = 0; ySpeed = 0; isAlive = false; speed = 0; direction = DIR_UP; hitBox = new Rectangle(0, 0, 0, 0); heading = new Vector2D(0, 0); dest = new Vector2D(0, 0); directionsMovedLastFrame = 0; type = 0; actions = 0; isMoveable = false; id = idCounter; idCounter++; } private function clearActions():void{ actions = ACTION_NONE; } public function setAction(_arg1:int):void{ actions = (actions | _arg1); } public function doingAction(_arg1:int):Boolean{ return (((actions & _arg1) == _arg1)); } } }//package greenpixel.game.world.objectsSection 8//BasicGame (greenpixel.game.BasicGame) package greenpixel.game { import flash.display.*; import greenpixel.gut.anim.*; import flash.media.*; import flash.events.*; import greenpixel.sound.*; public class BasicGame extends MovieClip { private var STATE_FADE_IN:int;// = 1 private var keyPressedIDs:Array; private var MAX_KEYS:int;// = 0x0100 private var fadeLayer:Shape; private var nextLayer:GameLayer; private var FADE_INCREMENT:Number;// = 0.1 private var currentLayer:GameLayer; private var keyDownIDs:Array; private var mouseButtonDown:Boolean; private var STATE_NEXT_LAYER:int;// = 3 private var STATE_RUN:int;// = 0 private var mouseButtonClick:Boolean; private var gameStates:Array; public var screenHeight:int; private var fadeAlpha:Number; public var screenWidth:int; private var gameLayers:Array; private var STATE_FADE_OUT:int;// = 2 private var canPressKeys:Array; public function BasicGame(_arg1:int, _arg2:int){ var _local3:Shape; var _local4:*; STATE_RUN = 0; STATE_FADE_IN = 1; STATE_FADE_OUT = 2; STATE_NEXT_LAYER = 3; MAX_KEYS = 0x0100; FADE_INCREMENT = 0.1; super(); stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(Event.ENTER_FRAME, gameLoop); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); stage.addEventListener(KeyboardEvent.KEY_UP, keyUp); screenWidth = _arg1; screenHeight = _arg2; _local3 = new Shape(); _local3.graphics.beginFill(0); _local3.graphics.drawRect(0, 0, _arg1, _arg2); _local3.graphics.endFill(); addChild(_local3); mask = _local3; fadeAlpha = 0; fadeLayer = new Shape(); addChild(fadeLayer); AnimManager.instance = new AnimManager(); SoundManager.instance = new SoundManager(); gameLayers = new Array(); gameStates = new Array(); gameStates.push(STATE_RUN); keyDownIDs = new Array(MAX_KEYS); keyPressedIDs = new Array(MAX_KEYS); canPressKeys = new Array(MAX_KEYS); _local4 = 0; while (_local4 < MAX_KEYS) { canPressKeys[_local4] = true; _local4++; }; mouseButtonDown = false; mouseButtonClick = false; } protected function addMusic(_arg1:Sound):void{ SoundManager.instance.addMusic(_arg1); } protected function mouseClick(_arg1:MouseEvent):void{ mouseButtonDown = false; mouseButtonClick = true; } public function fadeAndPushLayer(_arg1:GameLayer):void{ fadeAlpha = 0; nextLayer = _arg1; pushState(STATE_NEXT_LAYER); pushState(STATE_FADE_OUT); } private function getGameState():int{ return (gameStates[(gameStates.length - 1)]); } public function isKeyDown(_arg1:int):Boolean{ return (keyDownIDs[_arg1]); } public function isMouseClicked():Boolean{ var _local1:Boolean; _local1 = mouseButtonClick; mouseButtonClick = false; return (_local1); } public function fadeOut():void{ fadeAlpha = 0; pushState(STATE_FADE_OUT); } protected function mouseDown(_arg1:MouseEvent):void{ mouseButtonDown = true; } public function pushLayer(_arg1:GameLayer):void{ if (currentLayer != null){ removeChild(currentLayer); }; addChildAt(_arg1, 1); clearKeys(); _arg1.init(); gameLayers.push(_arg1); currentLayer = _arg1; } protected function keyUp(_arg1:KeyboardEvent):void{ keyDownIDs[_arg1.keyCode] = false; keyPressedIDs[_arg1.keyCode] = false; canPressKeys[_arg1.keyCode] = true; } protected function addAnimBundle(_arg1:Array, _arg2:BitmapData):void{ AnimManager.instance.addBundle(_arg1, _arg2); } private function pushState(_arg1:int):void{ gameStates.push(_arg1); } protected function addEffect(_arg1:Sound):void{ SoundManager.instance.addEffect(_arg1); } protected function keyDown(_arg1:KeyboardEvent):void{ keyDownIDs[_arg1.keyCode] = true; if (canPressKeys[_arg1.keyCode]){ keyPressedIDs[_arg1.keyCode] = true; canPressKeys[_arg1.keyCode] = false; }; } public function isKeyPressed(_arg1:int):Boolean{ var _local2:Boolean; _local2 = keyPressedIDs[_arg1]; keyPressedIDs[_arg1] = false; return (_local2); } private function gameLoop(_arg1:Event):void{ switch (getGameState()){ case STATE_RUN: if (currentLayer != null){ currentLayer.updateManager(); currentLayer.drawManager(); }; break; case STATE_FADE_IN: if (currentLayer != null){ currentLayer.drawManager(); }; fadeAlpha = (fadeAlpha - FADE_INCREMENT); if (fadeAlpha <= 0){ fadeAlpha = 0; drawFade(); popState(); } else { drawFade(); }; break; case STATE_FADE_OUT: if (currentLayer != null){ currentLayer.drawManager(); }; fadeAlpha = (fadeAlpha + FADE_INCREMENT); if (fadeAlpha >= 1){ fadeAlpha = 1; drawFade(); popState(); } else { drawFade(); }; break; case STATE_NEXT_LAYER: popState(); pushLayer(nextLayer); break; }; } public function fadeIn():void{ fadeAlpha = 1; pushState(STATE_FADE_IN); } public function isAnyKeyPressed():Boolean{ var _local1:int; var _local2:Boolean; _local2 = false; _local1 = 0; while (_local1 < MAX_KEYS) { if (keyPressedIDs[_local1]){ keyPressedIDs[_local1] = false; _local2 = true; }; _local1++; }; return (_local2); } private function popState():void{ gameStates.pop(); } public function isMouseDown():Boolean{ return (mouseButtonDown); } private function drawFade():void{ fadeLayer.graphics.clear(); fadeLayer.graphics.beginFill(0, fadeAlpha); fadeLayer.graphics.drawRect(0, 0, width, height); fadeLayer.graphics.endFill(); } public function clearKeys():void{ var _local1:*; _local1 = 0; while (_local1 < MAX_KEYS) { canPressKeys[_local1] = true; keyPressedIDs[_local1] = false; keyDownIDs[_local1] = false; _local1++; }; } } }//package greenpixel.gameSection 9//GameLayer (greenpixel.game.GameLayer) package greenpixel.game { import flash.display.*; import flash.geom.*; import greenpixel.game.tilemap.*; import greenpixel.game.sprite.*; import greenpixel.io.*; public class GameLayer extends MovieClip { private var backBuffer:BitmapData; private var textPopup:TextSprite; protected var screenHeight:int; protected var screenWidth:int; protected var layerStates:Array; protected var game:BasicGame; public static var STATE_TEXT:int = 999; public static var STATE_BASE:int = 0; public function GameLayer(_arg1:BasicGame){ this.game = _arg1; screenWidth = _arg1.screenWidth; screenHeight = _arg1.screenHeight; backBuffer = new BitmapData(screenWidth, screenHeight, false, 0); addChild(new Bitmap(backBuffer)); layerStates = new Array(); pushState(STATE_BASE); } public function init():void{ } protected function isKeyDown(_arg1:int):Boolean{ return (game.isKeyDown(_arg1)); } protected function isMouseClicked():Boolean{ return (game.isMouseClicked()); } protected function drawSprite(_arg1:Sprite2D):void{ drawSpriteAt(_arg1, _arg1.x, _arg1.y); } protected function fadeOut():void{ game.fadeOut(); } public function clearBackBuffer():void{ backBuffer.fillRect(new Rectangle(0, 0, backBuffer.width, backBuffer.height), 0); } protected function drawSpriteAt(_arg1:Sprite2D, _arg2:Number, _arg3:Number):void{ _arg1.drawToBuffer(backBuffer, _arg2, _arg3); _arg1.nextFrame(); } public function draw():void{ } protected function initPopup(_arg1:Rectangle, _arg2:int, _arg3:int, _arg4:Boolean):void{ textPopup = new TextSprite(_arg1, _arg2, _arg3, _arg4); } public function drawText():void{ draw(); drawSprite(textPopup); } protected function pushState(_arg1:int):void{ layerStates.push(_arg1); } public function updateText():void{ if (isKeyPressed(KeyCodes.KEY_SPACE)){ if (textPopup.isPageFinished()){ textPopup.nextPage(); } else { if (textPopup.isTextFinished()){ popState(); } else { textPopup.showPage(); }; }; }; textPopup.nextFrame(); } protected function isKeyPressed(_arg1:int):Boolean{ return (game.isKeyPressed(_arg1)); } protected function setPopupText(_arg1:String, _arg2:int){ pushState(STATE_TEXT); textPopup.setText(_arg1, _arg2); } protected function drawObject(_arg1:DisplayObject):void{ var _local2:Matrix; _local2 = new Matrix(); _local2.translate(_arg1.x, _arg1.y); backBuffer.draw(_arg1, _local2); } protected function setPopupAnim(_arg1:int, _arg2:int):void{ textPopup.setAnim(_arg1, _arg2); } protected function fadeIn():void{ game.fadeIn(); } protected function isAnyKeyPressed():Boolean{ return (game.isAnyKeyPressed()); } public function update():void{ } protected function popState():void{ if (layerStates.length == 1){ trace("Cannot pop base state from game layer"); return; }; layerStates.pop(); } public function drawManager():void{ if (getState() == STATE_TEXT){ drawText(); } else { draw(); }; } public function updateManager():void{ if (getState() == STATE_TEXT){ updateText(); } else { update(); }; } protected function getState():int{ return (layerStates[(layerStates.length - 1)]); } protected function isMouseDown():Boolean{ return (game.isMouseDown()); } protected function drawTileMap(_arg1:TileMap):void{ _arg1.drawToBuffer(backBuffer); _arg1.nextFrame(); } } }//package greenpixel.gameSection 10//Animation (greenpixel.gut.anim.Animation) package greenpixel.gut.anim { public class Animation { public var frameList:Array; public var name:String; public var type:int; public var loopType:int; public function Animation(_arg1:String):void{ this.name = _arg1; frameList = new Array(); type = 0; loopType = 0; } public function addFrame(_arg1:FrameData):void{ frameList.push(_arg1); } } }//package greenpixel.gut.animSection 11//AnimationBundle (greenpixel.gut.anim.AnimationBundle) package greenpixel.gut.anim { import flash.display.*; import flash.geom.*; public class AnimationBundle { public var anims:Array; public var name:String; public var bounds:Array; public var spriteSheet:BitmapData; public static var LOOP:int = 0; public static var ONESHOT:int = 1; public function AnimationBundle(_arg1:String){ this.name = _arg1; bounds = new Array(); anims = new Array(); } public function loadData(_arg1:Array):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Rectangle; var _local7:Animation; var _local8:int; var _local9:int; var _local10:FrameData; _local2 = 0; var _temp1 = _local2; _local2 = (_local2 + 1); _local3 = _arg1[_temp1]; _local4 = 0; while (_local4 < _local3) { _local6 = new Rectangle(); var _temp2 = _local2; _local2 = (_local2 + 1); _local6.x = _arg1[_temp2]; var _temp3 = _local2; _local2 = (_local2 + 1); _local6.y = _arg1[_temp3]; var _temp4 = _local2; _local2 = (_local2 + 1); _local6.width = _arg1[_temp4]; var _temp5 = _local2; _local2 = (_local2 + 1); _local6.height = _arg1[_temp5]; bounds.push(_local6); _local4++; }; var _temp6 = _local2; _local2 = (_local2 + 1); _local5 = _arg1[_temp6]; _local4 = 0; while (_local4 < _local5) { _local7 = new Animation(""); var _temp7 = _local2; _local2 = (_local2 + 1); _local7.type = _arg1[_temp7]; var _temp8 = _local2; _local2 = (_local2 + 1); _local7.loopType = _arg1[_temp8]; var _temp9 = _local2; _local2 = (_local2 + 1); _local8 = _arg1[_temp9]; _local9 = 0; while (_local9 < _local8) { _local10 = new FrameData(); var _temp10 = _local2; _local2 = (_local2 + 1); _local10.numDrawFrames = _arg1[_temp10]; var _temp11 = _local2; _local2 = (_local2 + 1); _local10.frameIndex = _arg1[_temp11]; var _temp12 = _local2; _local2 = (_local2 + 1); _local10.offsetX = _arg1[_temp12]; var _temp13 = _local2; _local2 = (_local2 + 1); _local10.offsetY = _arg1[_temp13]; var _temp14 = _local2; _local2 = (_local2 + 1); _local10.frameOp = _arg1[_temp14]; var _temp15 = _local2; _local2 = (_local2 + 1); _local10.orientation = _arg1[_temp15]; _local7.addFrame(_local10); _local9++; }; anims.push(_local7); _local4++; }; } } }//package greenpixel.gut.animSection 12//AnimManager (greenpixel.gut.anim.AnimManager) package greenpixel.gut.anim { import flash.display.*; public class AnimManager { public var animBundles:Array; public static var instance:AnimManager; public function AnimManager(){ animBundles = new Array(); } public function getDrawData(_arg1:int, _arg2:int, _arg3:int):DrawData{ var _local4:DrawData; var _local5:AnimationBundle; var _local6:Array; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; _local4 = new DrawData(); _local5 = animBundles[_arg1]; _local6 = _local5.anims; _local7 = _local6[_arg2].frameList[_arg3].frameIndex; _local8 = _local6[_arg2].frameList[_arg3].offsetX; _local9 = _local6[_arg2].frameList[_arg3].offsetY; _local10 = _local6[_arg2].loopType; _local11 = _local6[_arg2].frameList.length; _local12 = _local6[_arg2].frameList[_arg3].numDrawFrames; _local13 = _local6[_arg2].frameList[_arg3].frameOp; _local4.init(_local5.spriteSheet, _local5.bounds[_local7], _local8, _local9, _local10, _local11, _local12, _local13); return (_local4); } public function addBundle(_arg1:Array, _arg2:BitmapData):void{ var _local3:AnimationBundle; _local3 = new AnimationBundle(""); _local3.spriteSheet = _arg2; _local3.loadData(_arg1); animBundles.push(_local3); } } }//package greenpixel.gut.animSection 13//DrawData (greenpixel.gut.anim.DrawData) package greenpixel.gut.anim { import flash.display.*; import flash.geom.*; public class DrawData { public var img:BitmapData; public var imageOffsetX:int; public var imageOffsetY:int; public var frameOp:int; public var numDrawFrames:int; public var bounds:Rectangle; public var totalFrames:int; public var loopType:int; public function init(_arg1:BitmapData, _arg2:Rectangle, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int){ img = _arg1; bounds = _arg2; imageOffsetX = _arg3; imageOffsetY = _arg4; loopType = _arg5; totalFrames = _arg6; numDrawFrames = _arg7; frameOp = _arg8; } } }//package greenpixel.gut.animSection 14//FrameData (greenpixel.gut.anim.FrameData) package greenpixel.gut.anim { public class FrameData { public var frameIndex:int; public var offsetY:int; public var frameOp:int; public var numDrawFrames:int; public var offsetX:int; public var orientation:int; public static var OP_ATTACK:int = 1; public static var OR_CENTER_X:int = 1; public static var OR_CENTER_Y:int = 2; public static var OR_CENTER_BOTH:int = 3; public static var OR_NONE:int = 0; public static var OP_NONE:int = 0; public function FrameData(){ numDrawFrames = 0; frameIndex = 0; offsetX = 0; offsetY = 0; frameOp = OP_NONE; orientation = OR_NONE; } } }//package greenpixel.gut.animSection 15//KeyCodes (greenpixel.io.KeyCodes) package greenpixel.io { public class KeyCodes { public static var KEY_LEFT:int = 37; public static var KEY_UP:int = 38; public static var KEY_1:int = 49; public static var KEY_3:int = 51; public static var KEY_5:int = 53; public static var KEY_6:int = 54; public static var KEY_0:int = 48; public static var KEY_8:int = 56; public static var KEY_2:int = 50; public static var KEY_DOWN:int = 40; public static var KEY_4:int = 52; public static var KEY_7:int = 55; public static var KEY_ENTER:int = 13; public static var KEY_9:int = 57; public static var KEY_A:int = 65; public static var KEY_B:int = 66; public static var KEY_C:int = 67; public static var KEY_D:int = 68; public static var KEY_E:int = 69; public static var KEY_F:int = 70; public static var KEY_G:int = 71; public static var KEY_H:int = 72; public static var KEY_I:int = 73; public static var KEY_J:int = 74; public static var KEY_K:int = 75; public static var KEY_L:int = 76; public static var KEY_M:int = 77; public static var KEY_N:int = 78; public static var KEY_O:int = 79; public static var KEY_P:int = 80; public static var KEY_Q:int = 81; public static var KEY_R:int = 82; public static var KEY_S:int = 83; public static var KEY_T:int = 84; public static var KEY_U:int = 85; public static var KEY_V:int = 86; public static var KEY_W:int = 87; public static var KEY_X:int = 88; public static var KEY_Y:int = 89; public static var KEY_Z:int = 90; public static var KEY_SHIFT:int = 16; public static var KEY_CTRL:int = 17; public static var KEY_ESC:int = 27; public static var KEY_SPACE:int = 32; public static var KEY_RIGHT:int = 39; } }//package greenpixel.ioSection 16//Utils (greenpixel.math.Utils) package greenpixel.math { import flash.geom.*; public class Utils { public static function lineInBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int, _arg6:int, _arg7:int, _arg8:int):Boolean{ var _local9:int; var _local10:int; var _local11:Array; var _local12:Array; var _local13:Vector2D; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local11 = new Array(); _local12 = new Array(); _local13 = new Vector2D((_arg3 - _arg1), (_arg4 - _arg2)); _local13.normalize(); _local13.y = (_local13.y * -1); _local11.push(_local13); _local11.push(new Vector2D(1, 0)); _local11.push(new Vector2D(0, 1)); _local12.push(new Vector2D(_arg5, _arg7)); _local12.push(new Vector2D((_arg5 + _arg6), (_arg7 + _arg8))); _local9 = 0; while (_local9 < _local11.length) { _local16 = int.MAX_VALUE; _local17 = -(int.MAX_VALUE); _local18 = Utils.dotProduct(_local11[_local9], new Vector2D(_arg1, _arg2)); _local19 = Utils.dotProduct(_local11[_local9], new Vector2D(_arg3, _arg4)); if (_local18 < _local19){ _local14 = _local18; _local15 = _local19; } else { _local14 = _local19; _local15 = _local18; }; _local10 = 0; while (_local10 < _local12.length) { _local20 = Utils.dotProduct(_local11[_local9], _local12[_local10]); if (_local20 < _local16){ _local16 = _local20; }; if (_local20 > _local17){ _local17 = _local20; }; _local10++; }; if ((((_local14 > _local17)) || ((_local15 < _local16)))){ return (false); }; _local9++; }; return (true); } public static function AABBCollision(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):Vector2D{ var _local9:Vector2D; var _local10:Vector2D; var _local11:Vector2D; var _local12:Vector2D; var _local13:Number; var _local14:Number; _local9 = new Vector2D(); _local10 = new Vector2D((_arg1 + _arg2), (_arg3 + _arg4)); _local11 = new Vector2D((_arg5 + _arg6), (_arg7 + _arg8)); _local12 = new Vector2D((_local11.x - _local10.x), (_local11.y - _local10.y)); _local13 = ((_arg2 + _arg6) - Math.abs(_local12.x)); _local14 = ((_arg4 + _arg8) - Math.abs(_local12.y)); if (_local13 > 0){ if (_local14 > 0){ if (_local13 < _local14){ if (_local12.x < 0){ return (new Vector2D(_local13, 0)); }; return (new Vector2D(-(_local13), 0)); } else { if (_local12.y < 0){ return (new Vector2D(0, _local14)); }; return (new Vector2D(0, -(_local14))); }; }; }; return (null); } public static function boxInRect(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Rectangle){ return (boxInBox(_arg1, _arg2, _arg3, _arg4, _arg5.x, _arg5.width, _arg5.y, _arg5.height)); } public static function dotProduct(_arg1:Vector2D, _arg2:Vector2D):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function pointInBox(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int):Boolean{ return ((((((((_arg1 >= _arg3)) && ((_arg1 <= (_arg3 + _arg4))))) && ((_arg2 >= _arg5)))) && ((_arg2 <= (_arg5 + _arg6))))); } public static function boxInBox(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):Boolean{ return (!((((((((_arg1 >= (_arg5 + _arg6))) || ((_arg5 >= (_arg1 + _arg2))))) || ((_arg3 >= (_arg7 + _arg8))))) || ((_arg7 >= (_arg3 + _arg4)))))); } public static function rectInRect(_arg1:Rectangle, _arg2:Rectangle):Boolean{ return (boxInBox(_arg1.x, _arg1.width, _arg1.y, _arg1.height, _arg2.x, _arg2.width, _arg2.y, _arg2.height)); } } }//package greenpixel.mathSection 17//Vector2D (greenpixel.math.Vector2D) package greenpixel.math { public class Vector2D { public var x:Number; public var y:Number; public function Vector2D(_arg1:Number=0, _arg2:Number=0){ x = _arg1; y = _arg2; } public function length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function SquaredDistance():Number{ return (((x * x) + (y * y))); } public function normalize():void{ var _local1:Number; _local1 = Math.sqrt(SquaredDistance()); if (_local1 == 0){ x = 0; y = 0; } else { x = (x / _local1); y = (y / _local1); }; } } }//package greenpixel.mathSection 18//SoundManager (greenpixel.sound.SoundManager) package greenpixel.sound { import flash.media.*; import flash.events.*; public class SoundManager { private var currentMusicIndex:int; public var state:int; private var effectsData:Array; private var loopMusic:Boolean; public var isMute:Boolean; private var music:SoundChannel; private var INIT_VOLUME:Number;// = 1 private var effectsInUse:Array; private var musicData:Array; private var currentVolume:Number; private var pausePosition:Number; public static var STATE_STOP:int = 0; public static var instance:SoundManager; public static var STATE_PAUSE:int = 2; public static var STATE_PLAY:int = 1; public function SoundManager(){ INIT_VOLUME = 1; super(); musicData = new Array(); effectsData = new Array(); effectsInUse = new Array(); currentVolume = INIT_VOLUME; loopMusic = false; isMute = false; currentMusicIndex = -1; pausePosition = -1; state = STATE_STOP; } public function stopMusic():void{ if (music == null){ trace("Cannot stop, no music playing"); return; }; currentMusicIndex = -1; music.stop(); state = STATE_STOP; } public function addMusic(_arg1:Sound):void{ musicData.push(_arg1); } public function toggleMute():void{ if (isMute){ SoundMixer.soundTransform = new SoundTransform(currentVolume); } else { SoundMixer.soundTransform = new SoundTransform(0); }; isMute = !(isMute); } public function pauseMusic():void{ if ((((music == null)) || (!((state == STATE_PLAY))))){ trace("Cannot pause, no music playing"); return; }; pausePosition = music.position; music.stop(); state = STATE_PAUSE; } public function addEffect(_arg1:Sound):void{ effectsData.push(_arg1); effectsInUse.push(false); } public function setVolume(_arg1:Number):void{ currentVolume = _arg1; SoundMixer.soundTransform = new SoundTransform(currentVolume); } public function playMusic(_arg1:int, _arg2:Boolean):void{ if (state == STATE_PLAY){ if (_arg1 == currentMusicIndex){ trace(("Already playing music: " + _arg1)); return; }; }; loopMusic = _arg2; if (music != null){ music.stop(); }; music = musicData[_arg1].play(0, 0); music.soundTransform = new SoundTransform(currentVolume); music.addEventListener(Event.SOUND_COMPLETE, musicFinished); currentMusicIndex = _arg1; state = STATE_PLAY; } public function playEffect(_arg1:int){ var _local2:SoundChannel; if (effectsInUse[_arg1]){ return; }; _local2 = effectsData[_arg1].play(0, 0); _local2.soundTransform = new SoundTransform(currentVolume); effectsInUse[_arg1] = true; } public function clearEffectsInUse():void{ var _local1:int; _local1 = 0; while (_local1 < effectsInUse.length) { effectsInUse[_local1] = false; _local1++; }; } private function musicFinished(_arg1:Event):void{ if (loopMusic){ music = musicData[currentMusicIndex].play(0, 0); music.soundTransform = new SoundTransform(currentVolume); music.addEventListener(Event.SOUND_COMPLETE, musicFinished); } else { stopMusic(); }; } public function resumeMusic():void{ if (state != STATE_PAUSE){ trace("Music is not paused"); return; }; music = musicData[currentMusicIndex].play(pausePosition, 0); music.soundTransform = new SoundTransform(currentVolume); music.addEventListener(Event.SOUND_COMPLETE, musicFinished); state = STATE_PLAY; } } }//package greenpixel.soundSection 19//MochiAd (mochi.as3.MochiAd) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showClickAwayAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_timeout:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:5500, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_timeout = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType == "application"){ return (_local2); }; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:5500, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!(clip is DisplayObject)){ trace("Warning: Object passed as container clip not a descendant of the DisplayObject type"); return (null); }; if (MovieClip(clip).stage == null){ trace("Warning: Container clip for ad is not attached to the stage"); return (null); }; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; } else { trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal"); }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{ trace("[MochiAds] Blocked URL"); }); if (!options.skip){ loader.load(req); }; mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.right - _local3.left); _local5 = (_local3.top - _local3.bottom); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array; var _local4:Number; _local3 = _arg2.split("."); _local4 = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_w:Number; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var progress:Number; var f:Function; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:5500, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }, progress_override:function (_arg1:Object):Number{ return (NaN); }, bar_offset:0}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; if (options.skip){ ad_timeout = 0; }; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = (10 + options.bar_offset); bar.y = (h - 20); }; bar_w = ((w - bar.x) - 10); bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo(bar_w, 0); backing.lineTo(bar_w, 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo(bar_w, 0); inside.lineTo(bar_w, 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo(bar_w, 0); outline.lineTo(bar_w, 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; progress = Math.min(1, options.progress_override(clip)); f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; if (!isNaN(progress)){ complete = (progress == 1); } else { if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){ complete = true; } else { if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Object; var _local11:Number; var _local12:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; _local7 = Math.min(1, options.progress_override(_local1)); if (_local7 == 1){ complete = true; }; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local8 = ((100 * _local6) / _local5); if (!isNaN(_local7)){ _local8 = (100 * _local7); }; _local9 = ((100 * _local3) / chk.ad_msec); _local10 = this._mochiad_bar._inside; _local11 = Math.min(100, Math.min(((_local8) || (0)), _local9)); _local11 = Math.max(this.last_pcnt, _local11); this.last_pcnt = _local11; _local10.scaleX = (_local11 * 0.01); options.ad_progress(_local11); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8}); if (_local8 >= 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local12 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (unloaded){ MochiAd.unload(_local1); } else { if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package mochi.as3Section 20//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const NO_USER:String = "NoUser"; public static const IO_ERROR:String = "IOError"; public static const ITEM_NEW:String = "ItemNew"; public static const ITEM_OWNED:String = "ItemOwned"; public static const STORE_ITEMS:String = "StoreItems"; public static const ERROR:String = "Error"; public static const STORE_SHOW:String = "StoreShow"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _inventory:MochiInventory; public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function get inventory():MochiInventory{ return (_inventory); } public static function showStore(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function requestFunding(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestFunding", _arg1); } public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _inventory = new MochiInventory(); }); addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _inventory = null; }); } }//package mochi.as3Section 21//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3Section 22//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3Section 23//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { public class MochiEvents { public static const FORMAT_NONE:String = "NoForm"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const IO_ERROR:String = "IOError"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ACHIEVEMENTS_OWNED:String = "AchievementOwned"; public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_NEW:String = "AchievementReceived"; public static const GAME_ACHIEVEMENTS:String = "GameAchievements"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const IO_PENDING:String = "IOPending"; public static const ERROR:String = "Error"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var gameStart:Number; private static var levelStart:Number; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function showAwards(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.stayOnTop(); MochiServices.send("events_showAwards", _arg1); } public static function trackEvent(_arg1:String, _arg2=null):void{ MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null); } public static function getAchievements(_arg1:Object=null):void{ MochiServices.send("events_getAchievements", _arg1); } public static function setNotifications(_arg1:Object):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("events_setNotifications", _arg1, null, null); } public static function endPlay():void{ MochiServices.send("events_clearRoundID", null, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startPlay(_arg1:String="gameplay"):void{ MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function unlockAchievement(_arg1:Object):void{ MochiServices.send("events_unlockAchievement", _arg1); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } } }//package mochi.as3Section 24//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _names:Array; private var _consumableProperties:Object; private var _syncID:Number; private var _storeSync:Object; private var _outstandingID:Number; private var _syncPending:Boolean; public static const READY:String = "InvReady"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; private static const KEY_SALT:String = " syncMaint"; public static const WRITTEN:String = "InvWritten"; public static const NOT_READY:String = "InvNotReady"; public static const VALUE_ERROR:String = "InvValueError"; private static const CONSUMER_KEY:String = "MochiConsumables"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned); MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut); _storeSync = new Object(); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiSocial.loggedIn){ loggedIn(); } else { loggedOut(); }; } private function newItems(_arg1:Object):void{ if (!this[(_arg1.id + KEY_SALT)]){ this[(_arg1.id + KEY_SALT)] = 0; }; if (!this[_arg1.id]){ this[_arg1.id] = 0; }; this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count); this[_arg1.id] = (this[_arg1.id] + _arg1.count); if (((_arg1.privateProperties) && (_arg1.privateProperties.consumable))){ if (!this[_arg1.privateProperties.tag]){ this[_arg1.privateProperties.tag] = 0; }; this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count)); }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } private function sync(_arg1:Event=null):void{ var _local2:Object; var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; _local2 = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } private function itemOwned(_arg1:Object):void{ _storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count}; } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; var _local3:Number; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; for (_local2 in _storeSync) { _local3 = _storeSync[_local2].count; if (_consumableProperties[(_local2 + KEY_SALT)]){ _local3 = (_local3 - _consumableProperties[(_local2 + KEY_SALT)].value); }; if (_local3 == 0){ } else { newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties}); }; }; triggerEvent(READY, {}); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } } }//package mochi.as3Section 25//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiServices { public static const CONNECTED:String = "onConnected"; private static var _container:Object; private static var _connected:Boolean = false; private static var _queue:Array; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; private static var _nextCallbackID:Number; private static var _clip:MovieClip; private static var _loader:Loader; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var _callbacks:Object; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = _callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _callbacks[cb]; } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_nextCallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID}); }; if (_clip != null){ if (_callbacks != null){ _callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _nextCallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } private static function detach(_arg1:Event):void{ var _local2:LoaderInfo; _local2 = LoaderInfo(_arg1.target); _local2.removeEventListener(Event.COMPLETE, detach); _local2.removeEventListener(IOErrorEvent.IO_ERROR, detach); _local2.removeEventListener(Event.COMPLETE, loadLCBridgeComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, loadError); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } private static function loadLCBridgeComplete(_arg1:Event):void{ var _local2:Loader; _local2 = LoaderInfo(_arg1.target).loader; _mochiLocalConnection = MovieClip(_local2.content); listen(); } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, connectWait); _timer = null; } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.9.4 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } public static function warnID(_arg1:String, _arg2:Boolean):void{ var _local3:Number; _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; _local3 = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_queue))){ while (_queue.length > 0) { _local2 = _queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _callbacks[_local2.callbackID]; }; delete _callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String; var _local3:String; _local2 = _arg1.target; _local3 = _arg1.event; switch (_local2){ case "services": MochiServices.triggerEvent(_arg1.event, _arg1.args); break; case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "social": MochiSocial.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; vars = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); s = "?"; i = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://link.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_clip.parent){ _clip.parent.removeChild(_clip); }; if (_arg1 != null){ if ((_arg1 is DisplayObjectContainer)){ _container = _arg1; }; }; if (_arg2){ if ((_container is DisplayObjectContainer)){ DisplayObjectContainer(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError("NotConnected"); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError("NotConnected"); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } public static function get childClip():Object{ return (_clip); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift()); }; }; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } private static function loadLCBridge(_arg1:Object):void{ var _local2:Loader; var _local3:String; var _local4:URLRequest; _local2 = new Loader(); _local3 = (_servURL + _mochiLC); _local4 = new URLRequest(_local3); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, detach); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLCBridgeComplete); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local2.load(_local4); _arg1.addChild(_local2); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String; var _local4:URLRequest; var _local5:URLVariables; if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ MochiServices.onError("NotConnected"); return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; _local3 = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local3 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local3); _clip = new MovieClip(); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local4 = new URLRequest(_local3); _local5 = new URLVariables(); _local5.listenLC = _listenChannelName; _local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local5.api_version = getVersion(); if (widget){ _local5.widget = true; }; _local4.data = _local5; _loader.load(_local4); _clip.addChild(_loader); _sendChannel = new LocalConnection(); _queue = []; _nextCallbackID = 0; _callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function get clip():Object{ return (_container); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; if ((clip is DisplayObject)){ if (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); } else { _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, connectWait); _timer = null; }; } } }//package mochi.as3Section 26//MochiSocial (mochi.as3.MochiSocial) package mochi.as3 { public class MochiSocial { public static const LOGGED_IN:String = "LoggedIn"; public static const ACTION_CANCELED:String = "onCancel"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const IO_ERROR:String = "IOError"; public static const NO_USER:String = "NoUser"; public static const FRIEND_LIST:String = "FriendsList"; public static const PROFILE_DATA:String = "ProfileData"; public static const GAMEPLAY_DATA:String = "GameplayData"; public static const ACTION_COMPLETE:String = "onComplete"; public static const LOGIN_SHOW:String = "LoginShow"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const USER_INFO:String = "UserInfo"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const ERROR:String = "Error"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_HIDE:String = "LoginHide"; public static const LOGIN_SHOWN:String = "LoginShown"; public static var _user_info:Object = null; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function requestFan(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestFan", _arg1); } public static function postToStream(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_postToStream", _arg1); } public static function getFriendsList(_arg1:Object=null):void{ MochiServices.send("social_getFriendsList", _arg1); } public static function requestLogin(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestLogin", _arg1); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("social_saveUserProperties", _arg1); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function inviteFriends(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_inviteFriends", _arg1); } public static function get loggedIn():Boolean{ return (!((_user_info == null))); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_showLoginWidget", {options:_arg1}); } public static function getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function showProfile(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.stayOnTop(); MochiServices.send("social_showProfile", _arg1); } public static function hideLoginWidget():void{ MochiServices.send("social_hideLoginWidget"); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _user_info = _arg1; }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _user_info = null; }); } }//package mochi.as3Section 27//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var error:Event;// = null public var key:String;// = null public var operation:String;// = null public var data;// = null public var _loader:URLLoader; public function MochiUserData(_arg1:String="", _arg2:Function=null){ key = null; data = null; error = null; operation = null; callback = null; super(); this.key = _arg1; this.callback = _arg2; } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function request(_arg1:String, _arg2:ByteArray):void{ var api_url:String; var api_token:String; var args:URLVariables; var req:URLRequest; var _operation = _arg1; var _data = _arg2; operation = _operation; api_url = MochiSocial.getAPIURL(); api_token = MochiSocial.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); args = new URLVariables(); args.op = _operation; args.key = key; req = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData; _local3 = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData; _local4 = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3Section 28//AnimData (AnimData) package { public class AnimData { public static var TILES_GROUND_DRIVEWAY:int = 9; public static var SPRITE_MADSCIENTIST_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPC01_WALK_GUN_LEFT:int = 14; public static var SPRITE_NPC04_WALK_LEFT:int = 6; public static var SPRITE_NPC04_IDLE_RIGHT:int = 3; public static var SPRITE_MADSCIENTIST_WALK_GUN_FRONT:int = 12; public static var SPRITE_NPC01_MELEE_RIGHT:int = 19; public static var SPRITE_NPCGOODSCIENTIST_MELEE_BACK:int = 17; public static var SPRITE_NPC04_IDLE_FRONT:int = 0; public static var TILES_GROUND_DIRT01:int = 3; public static var SPRITE_NPC01_MELEE_FRONT:int = 16; public static var SPRITE_NPC06_WALK_GUN_BACK:int = 13; public static var ITEMS_METAL_IDLE:int = 2; public static var SPRITE_NPCSOLDIER_DATA = [36, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 20, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 2, 24, 4, 0, 0, 0, 2, 25, 4, 0, 0, 0, 6, 26, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 2, 28, -14, 0, 0, 0, 2, 29, -14, -12, 0, 0, 6, 30, -14, -22, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 2, 33, -22, -12, 0, 0, 2, 34, -22, -10, 0, 0, 6, 35, -22, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 2, 27, 4, -12, 0, 0, 2, 31, 4, -10, 0, 0, 6, 32, 4, 0, 0, 0, 1, 14, 0, 0, 0, 0]; public static var UI_SHORTCUT_ICONS_BAT:int = 0; public static var SPRITE_NPCGOODSCIENTIST_WALK_LEFT:int = 6; public static var TILES_OBJECTS_CAR07_IDLE:int = 9; public static var TILES_GROUND_DIRT02:int = 4; public static var UI_SHORTCUT_ICONS_STUNGUN_READYFLASH:int = 3; public static var SPRITE_MADSCIENTIST_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPC02_IDLE_BACK:int = 1; public static var SPRITE_NPC05_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPC03_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var ITEMS_WOOD_IDLE:int = 0; public static var SPRITE_MADSCIENTIST_IDLE_GUN_RIGHT:int = 11; public static var SPRITE_MADSCIENTIST_MELEE_BACK:int = 17; public static var SPRITE_MADSCIENTIST_IDLE_GUN_FRONT:int = 8; public static var TILES_OBJECTS_CAR01_IDLE:int = 3; public static var SPRITE_NPCSOLDIER_IDLE_BACK:int = 1; public static var SPRITE_NPC02_MELEE_BACK:int = 17; public static var ITEMS_ISOTOPE_IDLE:int = 1; public static var SPRITE_NPC05_IDLE_BACK:int = 1; public static var SPRITE_NPC01_DEAD_FRONT:int = 20; public static var TILES_OBJECTS_KITCHEN_NORTH_FRIDGE:int = 13; public static var SPRITE_NPC03_WALK_GUN_LEFT:int = 14; public static var TILES_OBJECTS_ROCK_IDLE:int = 1; public static var SPRITE_NPC05_MELEE_BACK:int = 17; public static var TILES_OBJECTS_KITCHEN_DINING:int = 14; public static var SPRITE_NPC01_IDLE_LEFT:int = 2; public static var SPRITE_NPC06_MELEE_RIGHT:int = 19; public static var SPRITE_NPC04_DEAD_FRONT:int = 20; public static var SPRITE_NPC01_WALK_BACK:int = 5; public static var SPRITE_NPC02_IDLE_GUN_LEFT:int = 10; public static var SPRITE_NPC06_MELEE_FRONT:int = 16; public static var SPRITE_NPCSOLDIER_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPCGOODSCIENTIST_IDLE_GUN_LEFT:int = 10; public static var SPRITE_MADSCIENTIST_DATA = [36, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 20, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 1, 1, 15, 3, 0, 0, 1, 0, 0, 1, 1, 15, 9, 0, 0, 1, 0, 0, 1, 1, 15, 23, 0, 0, 1, 0, 0, 1, 1, 15, 17, 0, 0, 1, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0]; public static var ITEMS_CIRCUIT_IDLE:int = 3; public static var SPRITE_NPCGOODSCIENTIST_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPC03_WALK_RIGHT:int = 7; public static var ANIM_SET_8_DATA = [1, 0, 0, 94, 104, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]; public static var SPRITE_NPC04_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var SPRITE_NPCGOODSCIENTIST_WALK_GUN_FRONT:int = 12; public static var UI_SHORTCUTS:int = 17; public static var SPRITE_NPC01_WALK_GUN_BACK:int = 13; public static var UI_SHORTCUTS_DATA = [1, 0, 0, 640, 480, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]; public static var SPRITE_NPC03_WALK_FRONT:int = 4; public static var ITEMS_DATA = [16, 0, 0, 24, 32, 24, 0, 24, 32, 48, 0, 24, 32, 72, 0, 24, 32, 96, 0, 24, 32, 120, 0, 24, 32, 144, 0, 24, 32, 168, 0, 24, 32, 0, 32, 24, 32, 24, 32, 24, 32, 48, 32, 24, 32, 72, 32, 24, 32, 96, 32, 24, 32, 120, 32, 24, 32, 144, 32, 24, 32, 168, 32, 24, 32, 8, 0, 0, 2, 15, 0, 0, 0, 0, 0, 15, 8, 0, 0, 0, 0, 0, 0, 2, 15, 1, 0, 0, 0, 0, 15, 9, 0, 0, 0, 0, 0, 0, 2, 15, 2, 0, 0, 0, 0, 15, 10, 0, 0, 0, 0, 0, 0, 2, 15, 3, 0, 0, 0, 0, 15, 11, 0, 0, 0, 0, 0, 0, 2, 15, 4, 0, 0, 0, 0, 15, 12, 0, 0, 0, 0, 0, 0, 2, 15, 5, 0, 0, 0, 0, 15, 13, 0, 0, 0, 0, 0, 0, 2, 15, 6, 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, 0, 0, 2, 15, 7, 0, 0, 0, 0, 15, 15, 0, 0, 0, 0]; public static var SPRITE_NPC04_IDLE_LEFT:int = 2; public static var SPRITE_NPC03_MELEE_LEFT:int = 18; public static var SPRITE_NPC04_WALK_BACK:int = 5; public static var TILES_OBJECTS_DEN_TABLE:int = 17; public static var SPRITE_NPC06_WALK_RIGHT:int = 7; public static var SPRITE_NPCGOODSCIENTIST_IDLE_RIGHT:int = 3; public static var SPRITE_MADSCIENTIST_WALK_GUN_LEFT:int = 14; public static var SPRITE_MADSCIENTIST:int = 2; public static var SPRITE_NPC06_MELEE_LEFT:int = 18; public static var SPRITE_NPC06_WALK_FRONT:int = 4; public static var SPRITE_NPCGOODSCIENTIST_IDLE_LEFT:int = 2; public static var SPRITE_NPC05_WALK_GUN_LEFT:int = 14; public static var TILES_OBJECTS_DEN_SOUTH_COUCH:int = 16; public static var SPRITE_NPCGOODSCIENTIST_WALK_BACK:int = 5; public static var SPRITE_NPC03_MELEE_RIGHT:int = 19; public static var SPRITE_NPC04_IDLE_GUN_LEFT:int = 10; public static var TILES_GROUND_ROAD:int = 8; public static var SPRITE_NPCGOODSCIENTIST_IDLE_FRONT:int = 0; public static var SPRITE_NPCGOODSCIENTIST_IDLE_GUN_RIGHT:int = 11; public static var UI_DEATHSCREEN_DEATHSCREEN:int = 0; public static var SPRITE_NPC03_MELEE_FRONT:int = 16; public static var SPRITE_MADSCIENTIST_IDLE_RIGHT:int = 3; public static var TILES_OBJECTS_CAR02_IDLE:int = 4; public static var TILES_OBJECTS_BEDROOM_NORTH_DRAWER:int = 20; public static var SPRITE_NPCGOODSCIENTIST_IDLE_GUN_FRONT:int = 8; public static var SPRITE_NPC05_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPCSOLDIER:int = 10; public static var UI_SHORTCUT_ICONS_DATA = [5, 0, 0, 32, 32, 32, 0, 32, 32, 64, 0, 32, 32, 96, 0, 32, 32, 128, 0, 32, 32, 4, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 1, 4, 1, 3, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0]; public static var BUILDING_HOUSES:int = 12; public static var SPRITE_MADSCIENTIST_IDLE_FRONT:int = 0; public static var SPRITE_NPC02_IDLE_RIGHT:int = 3; public static var SPRITE_NPC03_WALK_LEFT:int = 6; public static var SPRITE_NPC05_WALK_GUN_FRONT:int = 12; public static var UI_INVENTORY:int = 16; public static var SPRITE_NPC02_IDLE_FRONT:int = 0; public static var SPRITE_NPC05_IDLE_RIGHT:int = 3; public static var TILES_OBJECTS_BEDROOM_NORTH_DRESSER:int = 19; public static var SPRITE_NPC03_WALK_GUN_BACK:int = 13; public static var BLUE_JELLYFISH:int = 0; public static var SPRITE_NPC05_IDLE_FRONT:int = 0; public static var SPRITE_NPC01_IDLE_BACK:int = 1; public static var SPRITE_NPC03_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPC05_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var SPRITE_NPCSOLDIER_WALK_GUN_LEFT:int = 14; public static var SPRITE_NPC02_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPC05_IDLE_GUN_RIGHT:int = 11; public static var TILES_GROUND_DATA = [12, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 0, 192, 32, 32, 0, 224, 32, 32, 0, 0x0100, 32, 32, 0, 288, 32, 32, 32, 288, 32, 32, 32, 0, 128, 288, 10, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 1, 1, 8, 0, 0, 0, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 7, 0, 0, 0, 0, 0, 0, 1, 1, 10, 0, 0, 0, 0, 0, 0, 1, 1, 11, 0, 0, 0, 0]; public static var SPRITE_NPC03_WALK_GUN_FRONT:int = 12; public static var SPRITE_NPCSOLDIER_WALK_RIGHT:int = 7; public static var SPRITE_NPC06_WALK_LEFT:int = 6; public static var SPRITE_NPCGOODSCIENTIST_MELEE_RIGHT:int = 19; public static var SPRITE_NPC05_IDLE_GUN_FRONT:int = 8; public static var SPRITE_NPCGOODSCIENTIST_MELEE_FRONT:int = 16; public static var SPRITE_NPCSOLDIER_MELEE_LEFT:int = 18; public static var SPRITE_NPCSOLDIER_WALK_FRONT:int = 4; public static var SPRITE_NPC06_IDLE_GUN_LEFT:int = 10; public static var TILES_OBJECTS_CAR03_IDLE:int = 5; public static var ITEMS_COIL_IDLE:int = 4; public static var SPRITE_NPCGOODSCIENTIST_IDLE_GUN_BACK:int = 9; public static var UI_SHORTCUTS_SHORTCUTS:int = 0; public static var UI_LIFE_NOLIFE:int = 1; public static var BLUE_JELLYFISH_DATA = [2, 0, 0, 32, 32, 32, 0, 32, 32, 1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0]; public static var SPRITE_NPC01_WALK_GUN_RIGHT:int = 15; public static var SPRITE_MADSCIENTIST_WALK_LEFT:int = 6; public static var SPRITE_NPC04_IDLE_BACK:int = 1; public static var SPRITE_NPC03_MELEE_BACK:int = 17; public static var SPRITE_NPC01_WALK_GUN_FRONT:int = 12; public static var UI_LIFE:int = 18; public static var SPRITE_NPC03_IDLE_GUN_FRONT:int = 8; public static var SPRITE_NPC03_IDLE_GUN_RIGHT:int = 11; public static var UI_INVENTORY_DATA = [1, 0, 0, 640, 480, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]; public static var MESSAGE_WINDOW_SMALL_WINDOW:int = 0; public static var BLUE_JELLYFISH_IDLE:int = 0; public static var SPRITE_NPC02_DEAD_FRONT:int = 20; public static var SPRITE_MADSCIENTIST_WALK_GUN_BACK:int = 13; public static var SPRITE_NPCGOODSCIENTIST_IDLE_BACK:int = 1; public static var SPRITE_NPC05_WALK_GUN_BACK:int = 13; public static var SPRITE_NPC06_MELEE_BACK:int = 17; public static var SPRITE_NPCGOODSCIENTIST:int = 11; public static var SPRITE_NPC04_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPC05_DEAD_FRONT:int = 20; public static var TILES_GROUND_PATH:int = 6; public static var SPRITE_NPC01_IDLE_GUN_RIGHT:int = 11; public static var BUILDING_HOUSES_DATA = [7, 0, 64, 224, 320, 0x0100, 0, 224, 384, 0x0200, 128, 224, 0x0100, 0x0300, 64, 224, 320, 0x0400, 64, 224, 320, 0x0500, 64, 224, 320, 0x0600, 128, 224, 0x0100, 7, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0]; public static var SPRITE_NPC01_IDLE_GUN_FRONT:int = 8; public static var TILES_OBJECTS:int = 14; public static var SPRITE_NPC06_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 0, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var SPRITE_NPC01_WALK_RIGHT:int = 7; public static var SPRITE_NPC05_MELEE_RIGHT:int = 19; public static var SPRITE_NPC03_IDLE_LEFT:int = 2; public static var SPRITE_NPC01_MELEE_LEFT:int = 18; public static var SPRITE_NPC05_MELEE_FRONT:int = 16; public static var SPRITE_NPC03_WALK_BACK:int = 5; public static var SPRITE_NPC01_WALK_FRONT:int = 4; public static var ANIM_SET_8_ANIM_0:int = 0; public static var SPRITE_NPC04_WALK_RIGHT:int = 7; public static var TILES_OBJECTS_CAR04_IDLE:int = 6; public static var MESSAGE_WINDOW_DATA = [1, 0, 0, 510, 134, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]; public static var SPRITE_NPC02_WALK_GUN_LEFT:int = 14; public static var SPRITE_NPC04_WALK_FRONT:int = 4; public static var TILES_OBJECTS_DEN_NORTH_TV:int = 15; public static var SPRITE_NPC04_MELEE_LEFT:int = 18; public static var SPRITE_NPCSOLDIER_MELEE_RIGHT:int = 19; public static var SPRITE_NPCSOLDIER_WALK_GUN_BACK:int = 13; public static var SPRITE_NPC01_IDLE_GUN_LEFT:int = 10; public static var SPRITE_NPC06_IDLE_LEFT:int = 2; public static var SPRITE_NPCSOLDIER_MELEE_FRONT:int = 16; public static var SPRITE_NPC06_WALK_BACK:int = 5; public static var SPRITE_NPCGOODSCIENTIST_WALK_GUN_LEFT:int = 14; public static var TILES_OBJECTS_BROKEN3X1:int = 26; public static var TILES_GROUND_SIDEWALK:int = 2; public static var SPRITE_NPC06_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPCSOLDIER_MELEE_BACK:int = 17; public static var SPRITE_NPC02_WALK_LEFT:int = 6; public static var SPRITE_NPC01:int = 3; public static var SPRITE_NPC02:int = 4; public static var SPRITE_NPC03:int = 5; public static var SPRITE_NPC04:int = 6; public static var SPRITE_NPC05:int = 7; public static var SPRITE_NPC06:int = 9; public static var UI_DEATHSCREEN:int = 20; public static var TILES_OBJECTS_BROKEN3X3:int = 27; public static var ITEMS_STEAK_IDLE:int = 7; public static var SPRITE_NPC02_MELEE_RIGHT:int = 19; public static var SPRITE_MADSCIENTIST_IDLE_LEFT:int = 2; public static var SPRITE_MADSCIENTIST_WALK_BACK:int = 5; public static var UI_LIFE_LIFE:int = 0; public static var SPRITE_NPC03_IDLE_RIGHT:int = 3; public static var SPRITE_NPCSOLDIER_WALK_GUN_RIGHT:int = 15; public static var TILES_OBJECTS_DATA = [33, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 32, 96, 32, 32, 64, 96, 32, 32, 96, 96, 32, 64, 32, 0, 96, 96, 0, 128, 96, 32, 128, 96, 64, 64, 192, 128, 32, 32, 192, 96, 96, 32, 288, 96, 32, 64, 320, 96, 64, 64, 384, 96, 64, 32, 448, 96, 32, 32, 480, 96, 32, 32, 0x0200, 96, 32, 32, 544, 96, 32, 32, 448, 128, 32, 32, 128, 0, 64, 96, 192, 0, 64, 96, 0x0100, 0, 64, 96, 320, 0, 64, 96, 384, 0, 64, 96, 448, 0, 64, 96, 0x0200, 0, 64, 96, 480, 128, 32, 32, 384, 128, 64, 32, 0, 160, 96, 96, 96, 160, 32, 64, 128, 160, 64, 64, 96, 224, 96, 32, 192, 160, 64, 96, 29, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 19, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 21, 0, 0, 0, 0, 0, 0, 1, 1, 22, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 24, 0, 0, 0, 0, 0, 0, 1, 1, 25, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 7, 0, 0, 0, 0, 0, 0, 1, 1, 8, 0, 0, 0, 0, 0, 0, 1, 1, 10, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 11, 0, 0, 0, 0, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 0, 1, 1, 13, 0, 0, 0, 0, 0, 1, 5, 1, 14, 0, 0, 0, 0, 1, 15, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 1, 17, 0, 0, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 1, 1, 18, 0, 0, 0, 0, 0, 0, 1, 1, 27, 0, 0, 0, 0, 0, 0, 1, 1, 29, 0, 0, 0, 0, 0, 0, 1, 1, 30, 0, 0, 0, 0, 0, 0, 1, 1, 31, 0, 0, 0, 0, 0, 0, 1, 1, 28, 0, 0, 0, 0, 0, 0, 1, 1, 32, 0, 0, 0, 0]; public static var TILES_OBJECTS_KITCHEN_NORTH_COUNTER:int = 12; public static var TILES_OBJECTS_BROKEN2X2:int = 25; public static var SPRITE_NPC03_IDLE_FRONT:int = 0; public static var SPRITE_NPCSOLDIER_WALK_LEFT:int = 6; public static var TILES_GROUND_FLOWERS:int = 7; public static var SPRITE_NPCSOLDIER_WALK_GUN_FRONT:int = 12; public static var SPRITE_NPC02_MELEE_FRONT:int = 16; public static var TILES_OBJECTS_BROKEN2X3:int = 28; public static var SPRITE_NPC06_IDLE_RIGHT:int = 3; public static var SPRITE_NPC04_WALK_GUN_LEFT:int = 14; public static var TILES_OBJECTS_BROKEN2X1:int = 23; public static var SPRITE_NPC05_WALK_LEFT:int = 6; public static var UI_SHORTCUT_ICONS:int = 19; public static var SPRITE_NPC06_IDLE_FRONT:int = 0; public static var SPRITE_NPC03_IDLE_GUN_LEFT:int = 10; public static var TILES_OBJECTS_CAR05_IDLE:int = 7; public static var BUILDING_HOUSES_HOUSE01:int = 0; public static var SPRITE_NPC01_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 1, 33, -22, -12, 0, 0, 1, 34, -22, -10, 0, 0, 4, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 1, 27, 4, -12, 0, 0, 1, 31, 4, -10, 0, 0, 4, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var BUILDING_HOUSES_HOUSE03:int = 2; public static var SPRITE_NPCSOLDIER_IDLE_GUN_FRONT:int = 8; public static var SPRITE_NPC03_IDLE_BACK:int = 1; public static var SPRITE_NPCSOLDIER_IDLE_GUN_RIGHT:int = 11; public static var BUILDING_HOUSES_HOUSE07:int = 6; public static var BUILDING_HOUSES_HOUSE02:int = 1; public static var SPRITE_NPC01_MELEE_BACK:int = 17; public static var BUILDING_HOUSES_HOUSE05:int = 4; public static var TILES_GROUND_TALL_GRASS:int = 1; public static var TILES_OBJECTS_BROKEN1X2:int = 24; public static var UI_DEATHSCREEN_DATA = [1, 0, 0, 640, 480, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0]; public static var SPRITE_NPCGOODSCIENTIST_DATA = [36, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 20, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 2, 24, 4, 0, 0, 0, 2, 25, 4, 0, 0, 0, 6, 26, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 2, 28, -14, 0, 0, 0, 2, 29, -14, -12, 0, 0, 6, 30, -14, -22, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 2, 33, -22, -12, 0, 0, 2, 34, -22, -10, 0, 0, 6, 35, -22, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 2, 27, 4, -12, 0, 0, 2, 31, 4, -10, 0, 0, 6, 32, 4, 0, 0, 0, 1, 14, 0, 0, 0, 0]; public static var SPRITE_NPC06_WALK_GUN_RIGHT:int = 15; public static var BUILDING_HOUSES_HOUSE06:int = 5; public static var TILES_OBJECTS_BREAKING:int = 21; public static var UI_LIFE_DATA = [2, 0, 0, 32, 32, 32, 0, 32, 32, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]; public static var BUILDING_HOUSES_HOUSE04:int = 3; public static var SPRITE_NPC02_WALK_GUN_BACK:int = 13; public static var TILES_OBJECTS_BROKEN1X1:int = 22; public static var SPRITE_NPC04_MELEE_BACK:int = 17; public static var TILES_GROUND_PATCH_GRASS:int = 5; public static var SPRITE_NPCGOODSCIENTIST_WALK_RIGHT:int = 7; public static var SPRITE_NPC06_WALK_GUN_FRONT:int = 12; public static var SPRITE_NPC01_IDLE_GUN_BACK:int = 9; public static var SPRITE_NPCGOODSCIENTIST_MELEE_LEFT:int = 18; public static var SPRITE_NPC03_DEAD_FRONT:int = 20; public static var MESSAGE_WINDOW:int = 1; public static var SPRITE_NPCGOODSCIENTIST_WALK_FRONT:int = 4; public static var SPRITE_NPC06_IDLE_BACK:int = 1; public static var SPRITE_NPC06_WALK_GUN_LEFT:int = 14; public static var SPRITE_MADSCIENTIST_IDLE_GUN_LEFT:int = 10; public static var SPRITE_NPCSOLDIER_IDLE_RIGHT:int = 3; public static var SPRITE_NPCGOODSCIENTIST_WALK_GUN_BACK:int = 13; public static var SPRITE_NPC04_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPC02_IDLE_LEFT:int = 2; public static var SPRITE_NPC05_IDLE_GUN_LEFT:int = 10; public static var SPRITE_NPC06_DEAD_FRONT:int = 20; public static var SPRITE_NPCSOLDIER_IDLE_FRONT:int = 0; public static var SPRITE_MADSCIENTIST_WALK_RIGHT:int = 7; public static var SPRITE_NPC06_IDLE_GUN_RIGHT:int = 11; public static var UI_SHORTCUT_ICONS_STUNGUN_COOLING:int = 2; public static var SPRITE_NPC02_WALK_BACK:int = 5; public static var SPRITE_NPC04_WALK_GUN_FRONT:int = 12; public static var SPRITE_MADSCIENTIST_MELEE_LEFT:int = 18; public static var SPRITE_NPC06_IDLE_GUN_FRONT:int = 8; public static var SPRITE_MADSCIENTIST_IDLE_BACK:int = 1; public static var SPRITE_MADSCIENTIST_WALK_FRONT:int = 4; public static var TILES_OBJECTS_CAR06_IDLE:int = 8; public static var TILES_GROUND_GRASS:int = 0; public static var SPRITE_NPC02_WALK_RIGHT:int = 7; public static var SPRITE_NPC02_MELEE_LEFT:int = 18; public static var SPRITE_NPC02_WALK_FRONT:int = 4; public static var TILES_OBJECTS_KITCHEN_NORTH_STOVE:int = 10; public static var TILES_OBJECTS_KITCHEN_NORTH_SINK:int = 11; public static var SPRITE_NPCSOLDIER_IDLE_LEFT:int = 2; public static var SPRITE_MADSCIENTIST_MELEE_RIGHT:int = 19; public static var SPRITE_NPC05_WALK_RIGHT:int = 7; public static var SPRITE_NPC02_WALK_GUN_RIGHT:int = 15; public static var SPRITE_NPC05_IDLE_LEFT:int = 2; public static var ITEMS:int = 15; public static var TILES_GROUND:int = 13; public static var SPRITE_NPC04_MELEE_RIGHT:int = 19; public static var SPRITE_NPC05_MELEE_LEFT:int = 18; public static var SPRITE_NPC02_DATA = [37, 0, 0, 32, 32, 0, 32, 32, 32, 0, 64, 32, 32, 0, 96, 32, 32, 0, 128, 32, 32, 0, 160, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 64, 32, 32, 32, 96, 32, 32, 32, 128, 32, 32, 32, 160, 32, 32, 64, 0, 32, 32, 64, 32, 32, 32, 64, 64, 32, 32, 64, 96, 32, 32, 64, 128, 32, 32, 64, 160, 32, 32, 96, 0, 32, 32, 96, 32, 32, 32, 96, 64, 32, 32, 96, 96, 32, 32, 96, 128, 32, 32, 96, 160, 32, 32, 164, 32, 40, 32, 164, 96, 40, 48, 164, 160, 40, 54, 228, 20, 50, 44, 146, 0x0100, 42, 32, 146, 308, 42, 44, 146, 362, 42, 54, 228, 86, 50, 42, 228, 160, 50, 32, 202, 244, 50, 44, 202, 310, 50, 42, 202, 384, 50, 32, 0, 192, 32, 32, 21, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 0, 0, 0, 0, 0, 0, 1, 1, 20, 0, 0, 0, 0, 0, 0, 1, 1, 14, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 4, 6, 20, 0, 0, 0, 0, 6, 18, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 6, 19, 0, 0, 0, 0, 0, 0, 4, 6, 14, 0, 0, 0, 0, 6, 12, 0, 0, 0, 0, 6, 14, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0, 0, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 1, 23, 0, 0, 0, 0, 0, 0, 1, 1, 17, 0, 0, 0, 0, 0, 0, 4, 6, 3, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 4, 6, 9, 0, 0, 0, 0, 6, 10, 0, 0, 0, 0, 6, 9, 0, 0, 0, 0, 6, 11, 0, 0, 0, 0, 0, 0, 4, 6, 23, 0, 0, 0, 0, 6, 21, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 6, 22, 0, 0, 0, 0, 0, 0, 4, 6, 17, 0, 0, 0, 0, 6, 15, 0, 0, 0, 0, 6, 17, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 1, 4, 1, 24, 4, 0, 0, 0, 1, 25, 4, 0, 0, 0, 4, 26, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 4, 1, 28, -14, 0, 0, 0, 1, 29, -14, -12, 0, 0, 4, 30, -14, -22, 1, 0, 1, 6, 0, 0, 0, 0, 0, 1, 4, 2, 33, -22, -12, 0, 0, 2, 34, -22, -10, 0, 0, 6, 35, -22, 0, 1, 0, 1, 20, 0, 0, 0, 0, 0, 1, 4, 2, 27, 4, -12, 0, 0, 2, 31, 4, -10, 0, 0, 6, 32, 4, 0, 1, 0, 1, 14, 0, 0, 0, 0, 0, 0, 1, 1, 36, 0, 0, 0, 0]; public static var SPRITE_MADSCIENTIST_MELEE_FRONT:int = 16; public static var SPRITE_NPC02_WALK_GUN_FRONT:int = 12; public static var SPRITE_NPC04_IDLE_GUN_RIGHT:int = 11; public static var SPRITE_NPC04_MELEE_FRONT:int = 16; public static var SPRITE_NPC04_IDLE_GUN_FRONT:int = 8; public static var SPRITE_NPC05_WALK_FRONT:int = 4; public static var SPRITE_NPC04_WALK_GUN_BACK:int = 13; public static var ITEMS_APPLE_IDLE:int = 6; public static var SPRITE_NPC05_WALK_BACK:int = 5; public static var UI_SHORTCUT_ICONS_STUNGUN:int = 1; public static var SPRITE_NPC03_IDLE_GUN_BACK:int = 9; public static var TILES_OBJECTS_BEDROOM_BED:int = 18; public static var SPRITE_NPC01_WALK_LEFT:int = 6; public static var ANIM_SET_8:int = 8; public static var SPRITE_NPCSOLDIER_IDLE_GUN_LEFT:int = 10; public static var UI_INVENTORY_INVENTORY:int = 0; public static var SPRITE_NPCSOLDIER_WALK_BACK:int = 5; public static var TILES_OBJECTS_BUSH_IDLE:int = 0; public static var SPRITE_NPC01_IDLE_RIGHT:int = 3; public static var TILES_OBJECTS_TREE_IDLE:int = 2; public static var SPRITE_NPC01_IDLE_FRONT:int = 0; public static var SPRITE_NPC02_IDLE_GUN_RIGHT:int = 11; public static var SPRITE_NPC02_IDLE_GUN_FRONT:int = 8; public static var ITEMS_DUCTTAPE_IDLE:int = 5; } }//packageSection 29//BinaryHeap (BinaryHeap) package { public class BinaryHeap { private var heapSize:int; private var nodes:Array; public function BinaryHeap(_arg1:int){ nodes = new Array(_arg1); heapSize = 0; } public function add(_arg1:Node){ var _local2:int; var _local3:Node; var _local4:Node; var _local5:int; var _local6:int; var _local7:Node; nodes[heapSize] = _arg1; _local5 = heapSize; _local4 = nodes[_local5]; if ((_local5 > 0)){ _local6 = ((_local5 - 1) / 2); _local3 = nodes[_local6]; while (_local4.value < _local3.value) { _local7 = new Node(0); _local7.copy(_local3); nodes[_local6].copy(_local4); nodes[_local5].copy(_local7); _local5 = _local6; _local4 = nodes[_local5]; _local6 = ((_local5 - 1) / 2); if (_local6 < 0){ break; }; _local3 = nodes[_local6]; }; }; heapSize++; } public function getTopNode():Node{ var _local1:int; var _local2:Node; var _local3:Node; var _local4:int; var _local5:Node; var _local6:Node; var _local7:Node; _local1 = 0; _local2 = nodes[_local1]; nodes[_local1] = nodes[(heapSize - 1)]; heapSize--; if (heapSize > 1){ while (true) { _local4 = -1; _local3 = nodes[_local1]; if (((_local1 << 1) + 1) < heapSize){ _local5 = nodes[((_local1 << 1) + 1)]; if (_local5.value < _local3.value){ _local4 = ((_local1 << 1) + 1); }; if (((_local1 << 1) + 2) < heapSize){ _local6 = nodes[((_local1 << 1) + 2)]; if ((((_local6.value < _local3.value)) && ((_local6.value < _local5.value)))){ _local4 = ((_local1 << 1) + 2); }; }; }; if (_local4 >= 0){ _local7 = new Node(0); _local7.copy(nodes[_local4]); nodes[_local4].copy(_local3); nodes[_local1].copy(_local7); _local1 = _local4; } else { break; }; }; }; return (_local2); } public function replaceNode(_arg1:Node){ var _local2:Node; var _local3:Node; var _local4:int; var _local5:int; var _local6:int; var _local7:Node; var _local8:int; var _local9:Node; _local4 = 0; _local5 = 0; _local6 = 0; while (_local6 < heapSize) { _local7 = nodes[_local6]; if (_local7.id == _arg1.id){ _local5 = _local6; break; }; _local6++; }; nodes[_local5].copy(_arg1); _local2 = nodes[_local5]; _local4 = _local5; if ((_local4 > 0)){ _local8 = ((_local4 - 1) / 2); _local3 = nodes[_local8]; while (_local2.value < _local3.value) { _local9 = new Node(0); _local9.copy(_local3); nodes[_local8].copy(_local2); nodes[_local4].copy(_local9); _local4 = _local8; _local2 = nodes[_local4]; _local8 = ((_local4 - 1) / 2); if (_local8 < 0){ break; }; _local3 = nodes[_local8]; }; }; } public function getSize():int{ return (heapSize); } public function getNode(_arg1:int):Node{ var _local2:int; _local2 = 0; while (_local2 < heapSize) { if (nodes[_local2].id == _arg1){ return (nodes[_local2]); }; _local2++; }; return (null); } public function printHeap(){ var _local1:int; var _local2:String; var _local3:int; var _local4:int; _local2 = "heap: "; _local3 = 0; _local4 = 0; _local1 = 0; while (_local1 < heapSize) { _local2 = (_local2 + (nodes[_local1].value + " ")); if ((((_local1 == 0)) || (((_local1 % _local4) == 0)))){ _local2 = (_local2 + "\t"); _local4 = (_local4 + (2 << _local3)); _local3++; }; _local1++; }; trace(_local2); } } }//packageSection 30//BlueJellyfish (BlueJellyfish) package { import flash.display.*; public dynamic class BlueJellyfish extends BitmapData { public function BlueJellyfish(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 31//CityTiles (CityTiles) package { import flash.display.*; public dynamic class CityTiles extends BitmapData { public function CityTiles(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 32//Door (Door) package { import flash.geom.*; public class Door { public var houseIndex:int; public var bounds:Rectangle; public function Door(_arg1:int, _arg2:int, _arg3:int){ bounds = new Rectangle(_arg1, (_arg2 + 16), 32, 16); houseIndex = _arg3; } } }//packageSection 33//Floor (Floor) package { import greenpixel.game.tilemap.*; public class Floor { public var doors:Array; public var map:TileMap; public static var MIN_FLOOR_WIDTH = 15; public static var MAX_WALL_OFFSET_Y = 4; public static var MIN_ROOMS = 2; public static var MAX_WALL_OFFSET_X = 4; public static var MAX_FLOOR_HEIGHT = 15; public static var MAX_FLOOR_WIDTH = 15; public static var MAX_ROOMS = 4; public static var MIN_FLOOR_HEIGHT = 15; public function Floor(_arg1:TileMap){ map = _arg1; doors = new Array(); } public function setDoor(_arg1:Door):void{ doors.push(_arg1); } public function initMap(_arg1:int, _arg2:int){ map = new TileMap(_arg1, _arg2); } } }//packageSection 34//Game (Game) package { import greenpixel.gut.anim.*; import flash.events.*; import flash.geom.*; import greenpixel.game.world.objects.*; import greenpixel.game.tilemap.*; import greenpixel.math.*; import flash.text.*; import greenpixel.game.*; import greenpixel.game.sprite.*; import greenpixel.sound.*; import greenpixel.io.*; import greenpixel.game.ui.*; public class Game extends GameLayer { private var theGame:Main; private var HOUSE_TILES_HEIGHT;// = 15 private var MAX_METAL:int;// = 30 private var housesWidth:int; private var NUM_HOUSES;// = 8 private var townHeight:int; private var townWidth:int; private var townItems:Array; private var metalField:TextSprite; private var housesHeight:int; private var stunBullet:StunBullet; private var playerDrawPos:Point; private var woodField:TextSprite; private var worldMap:Array; private var gunImg:Sprite2D; private var NUM_HOUSES_PER_HEIGHT;// = 2 private var COIL_FIELD_X:int;// = 363 private var COIL_FIELD_Y:int;// = 310 private var currentDoors:Array; private var BAT_Y:int;// = 414 private var BAT_X:int;// = 532 private var WOOD_FIELD_X:int;// = 269 private var WOOD_INDEX:int;// = 0 private var WOOD_FIELD_Y:int;// = 275 private var MAX_COIL:int;// = 20 private var PROPERTY_SLICE_HEIGHT;// = 800 private var CIRCUIT_INDEX:int;// = 1 private var MAX_RESOURCES:int;// = 4 private var currentNPCs:Array; private var worldSpecial:Array; private var MAX_WOOD:int;// = 60 private var inventoryImg:Sprite2D; private var METAL_FIELD_Y:int;// = 310 private var player:Player; private var circuitField:TextSprite; private var METAL_FIELD_X:int;// = 269 private var lastTownPosY:int; private var font32:GameFont; private var lastTownPosX:int; private var GUN_X:int;// = 578 private var GUN_Y:int;// = 414 private var COIL_INDEX:int;// = 3 private var housesMap:Array; private var TILE_SIZE;// = 32 private var PROPERTY_SLICE_TILES_WIDTH;// = 19 private var NUM_HOUSE_TYPES;// = 7 private var townDoors:Array; private var currentMap:TileMap; private var lifeImg:Sprite2D; private var PROPERTY_SLICE_WIDTH;// = 608 private var currentSpawns:Array; private var PROPERTIES_PER_HEIGHT;// = 3 private var soundButton:SoundButton; private var houseArray:Array; private var METAL_INDEX:int;// = 2 private var inventory:Array; private var townNPCs:Array; private var townMap:TileMap; private var batImg:Sprite2D; private var NUM_PROPERTY_TYPES;// = 8 private var NUM_PROPERTY_PER_WIDTH;// = 4 private var propertyArray:Array; private var townSpawns:Array; private var PROPERTY_SLICE_TILES_HEIGHT;// = 25 private var shortcutImg:Sprite2D; private var HOUSE_TILES_WIDTH;// = 20 private var NUM_HOUSES_PER_WIDTH;// = 4 private var NUM_PROPERTIES;// = 12 private var LIFE_SPACING_X:int;// = 40 private var coilField:TextSprite; private var CIRCUIT_FIELD_X:int;// = 363 private var CIRCUIT_FIELD_Y:int;// = 275 private var MAX_CIRCUIT:int;// = 20 private var LIFE_X:int;// = 16 private var LIFE_Y:int;// = 16 private var housesSpecial:Array; private var PROPERTIES_PER_WIDTH;// = 5 private var currentItems:Array; private var gameOverImg:Sprite2D; private static var STATE_PLAY = 0; private static var STATE_GAME_OVER = 3; private static var STATE_FADE_IN = 2; private static var STATE_INVENTORY = 1; public function Game(_arg1:Main){ var _local2:int; var _local3:TextFormat; WOOD_INDEX = 0; CIRCUIT_INDEX = 1; METAL_INDEX = 2; COIL_INDEX = 3; MAX_WOOD = 60; MAX_METAL = 30; MAX_CIRCUIT = 20; MAX_COIL = 20; MAX_RESOURCES = 4; WOOD_FIELD_X = 269; WOOD_FIELD_Y = 275; METAL_FIELD_X = 269; METAL_FIELD_Y = 310; CIRCUIT_FIELD_X = 363; CIRCUIT_FIELD_Y = 275; COIL_FIELD_X = 363; COIL_FIELD_Y = 310; LIFE_X = 16; LIFE_Y = 16; LIFE_SPACING_X = 40; BAT_X = 532; BAT_Y = 414; GUN_X = 578; GUN_Y = 414; TILE_SIZE = 32; PROPERTIES_PER_WIDTH = 5; PROPERTIES_PER_HEIGHT = 3; PROPERTY_SLICE_TILES_WIDTH = 19; PROPERTY_SLICE_TILES_HEIGHT = 25; PROPERTY_SLICE_WIDTH = 608; PROPERTY_SLICE_HEIGHT = 800; NUM_PROPERTIES = 12; NUM_HOUSE_TYPES = 7; NUM_PROPERTY_TYPES = 8; NUM_PROPERTY_PER_WIDTH = 4; HOUSE_TILES_WIDTH = 20; HOUSE_TILES_HEIGHT = 15; NUM_HOUSES = 8; NUM_HOUSES_PER_WIDTH = 4; NUM_HOUSES_PER_HEIGHT = 2; super(_arg1); theGame = _arg1; housesWidth = (NUM_HOUSES_PER_WIDTH * HOUSE_TILES_WIDTH); housesHeight = (NUM_HOUSES_PER_HEIGHT * HOUSE_TILES_HEIGHT); housesMap = new Array(housesHeight); housesSpecial = new Array(housesWidth); _local2 = 0; while (_local2 < housesMap.length) { housesMap[_local2] = new Array(housesWidth); housesSpecial[_local2] = new Array(housesWidth); _local2++; }; soundButton = new SoundButton(); soundButton.buttonMode = true; soundButton.gotoAndStop(0); soundButton.addEventListener(MouseEvent.CLICK, toggleSound); soundButton.x = 588; soundButton.y = 20; TileMap.translateByteMapTo2D(Maps.HOUSES_MAP, housesMap, housesSpecial); townWidth = (PROPERTIES_PER_WIDTH * PROPERTY_SLICE_TILES_WIDTH); townHeight = (PROPERTIES_PER_HEIGHT * PROPERTY_SLICE_TILES_HEIGHT); worldMap = new Array(townHeight); worldSpecial = new Array(townHeight); _local2 = 0; while (_local2 < worldMap.length) { worldMap[_local2] = new Array(townWidth); worldSpecial[_local2] = new Array(townWidth); _local2++; }; TileMap.translateByteMapTo2D(Maps.WORLD_MAP, worldMap, worldSpecial); inventory = new Array(MAX_RESOURCES); inventoryImg = new Sprite2D(); inventoryImg.setAnim(AnimData.UI_INVENTORY, AnimData.UI_INVENTORY_INVENTORY); gameOverImg = new Sprite2D(); gameOverImg.setAnim(AnimData.UI_DEATHSCREEN, AnimData.UI_DEATHSCREEN_DEATHSCREEN); batImg = new Sprite2D(); batImg.setPos(BAT_X, BAT_Y); batImg.setAnim(AnimData.UI_SHORTCUT_ICONS, AnimData.UI_SHORTCUT_ICONS_BAT); gunImg = new Sprite2D(); gunImg.setPos(GUN_X, GUN_Y); gunImg.setAnim(AnimData.UI_SHORTCUT_ICONS, AnimData.UI_SHORTCUT_ICONS_STUNGUN); font32 = new GameFont(); _local3 = new TextFormat(); _local3.font = font32.fontName; _local3.size = 16; woodField = new TextSprite(new Rectangle(WOOD_FIELD_X, WOOD_FIELD_Y, 32, 32), TextArea.STATIC, 0xFF00, false); woodField.setFormat(_local3); metalField = new TextSprite(new Rectangle(METAL_FIELD_X, METAL_FIELD_Y, 32, 32), TextArea.STATIC, 0xFF00, false); metalField.setFormat(_local3); circuitField = new TextSprite(new Rectangle(CIRCUIT_FIELD_X, CIRCUIT_FIELD_Y, 32, 32), TextArea.STATIC, 0xFF00, false); circuitField.setFormat(_local3); coilField = new TextSprite(new Rectangle(COIL_FIELD_X, COIL_FIELD_Y, 32, 32), TextArea.STATIC, 0xFF00, false); coilField.setFormat(_local3); lifeImg = new Sprite2D(); lifeImg.setAnim(AnimData.UI_LIFE, AnimData.UI_LIFE_LIFE); shortcutImg = new Sprite2D(); shortcutImg.setAnim(AnimData.UI_SHORTCUTS, AnimData.UI_SHORTCUTS_SHORTCUTS); initPopup(new Rectangle(10, 10, 300, 100), TextArea.ANIMATED, 0, true); setPopupAnim(AnimData.MESSAGE_WINDOW, AnimData.MESSAGE_WINDOW_SMALL_WINDOW); pushState(STATE_PLAY); addChild(soundButton); } public function hitObjects():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:Rectangle; var _local5:Rectangle; var _local6:NPC; var _local7:NPC; var _local8:Vector2D; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:Array; var _local14:Item; var _local15:Spawn; var _local16:int; var _local17:int; var _local18:int; _local4 = new Rectangle(0, 0, 0, 0); _local5 = new Rectangle(0, 0, 0, 0); switch (player.direction){ case Entity.DIR_UP: _local4 = new Rectangle(player.x, (player.y - Player.ATTACK_HEIGHT), Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_RIGHT: _local4 = new Rectangle(((player.x + player.hitBox.x) + player.hitBox.width), player.y, Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_DOWN: _local4 = new Rectangle(player.x, ((player.y + player.hitBox.y) + player.hitBox.height), Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_LEFT: _local4 = new Rectangle((player.x - Player.ATTACK_WIDTH), player.y, Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; }; _local1 = 0; while (_local1 < currentNPCs.length) { _local6 = currentNPCs[_local1]; if (!_local6.isAlive){ } else { _local5 = new Rectangle(_local6.x, _local6.y, _local6.hitBox.width, _local6.hitBox.height); if (Utils.rectInRect(_local4, _local5)){ SoundManager.instance.playEffect(Main.HIT_EFFECT); _local6.health = (_local6.health - player.attackPower); _local2 = 0; while (_local2 < currentNPCs.length) { _local7 = currentNPCs[_local2]; if ((((((((_local2 == _local1)) || (!(_local7.isAlive)))) || ((_local7.state == NPC.STATE_SEARCH)))) || ((_local7.state == NPC.STATE_ATTACK)))){ } else { _local8 = new Vector2D((_local7.x - player.x), (_local7.y - player.y)); if (_local8.length() <= NPC.HEARING_RADIUS){ _local9 = (_local7.x / TILE_SIZE); _local10 = (_local7.y / TILE_SIZE); _local11 = (player.x / TILE_SIZE); _local12 = (player.y / TILE_SIZE); _local13 = PathFinder.getPathAStar(currentMap.getMap(), _local9, _local10, _local11, _local12); _local7.setPath(_local13); _local7.setState(NPC.STATE_SEARCH); }; }; _local2++; }; if (_local6.health <= 0){ _local6.kill(); } else { _local6.hit(); }; switch (player.direction){ case Entity.DIR_UP: currentMap.moveSpriteUp(_local6, (TILE_SIZE - 2)); break; case Entity.DIR_RIGHT: currentMap.moveSpriteRight(_local6, (TILE_SIZE - 2)); break; case Entity.DIR_DOWN: currentMap.moveSpriteDown(_local6, (TILE_SIZE - 2)); break; case Entity.DIR_LEFT: currentMap.moveSpriteLeft(_local6, (TILE_SIZE - 2)); break; }; }; }; _local1++; }; _local1 = 0; while (_local1 < currentItems.length) { _local14 = currentItems[_local1]; if (((_local14.isPickedUp) || ((_local14.state == Item.STATE_BROKEN)))){ } else { _local5 = new Rectangle(_local14.x, _local14.y, _local14.hitBox.width, _local14.hitBox.height); if (Utils.rectInRect(_local4, _local5)){ SoundManager.instance.playEffect(Main.HIT_EFFECT); _local14.hit(); _local14.health = (_local14.health - player.attackPower); _local2 = 0; while (_local2 < currentNPCs.length) { _local6 = currentNPCs[_local2]; if (((((!(_local6.isAlive)) || ((_local6.state == NPC.STATE_SEARCH)))) || ((_local6.state == NPC.STATE_ATTACK)))){ } else { _local8 = new Vector2D((_local6.x - player.x), (_local6.y - player.y)); if (_local8.length() <= NPC.HEARING_RADIUS){ _local9 = (_local6.x / TILE_SIZE); _local10 = (_local6.y / TILE_SIZE); _local11 = (player.x / TILE_SIZE); _local12 = (player.y / TILE_SIZE); _local13 = PathFinder.getPathAStar(currentMap.getMap(), _local9, _local10, _local11, _local12); _local6.setPath(_local13); _local6.setState(NPC.STATE_SEARCH); }; }; _local2++; }; if (_local14.health <= 0){ _local14.breakYoself(); _local2 = 0; while (_local2 < (_local14.hitBox.height / TILE_SIZE)) { _local3 = 0; while (_local3 < (_local14.hitBox.width / TILE_SIZE)) { _local15 = getAvailableSpawn(); _local16 = _local14.spawnType1; if (Math.random() < 0.25){ _local16 = _local14.spawnType2; }; _local15.init((_local14.x + (_local3 * TILE_SIZE)), (_local14.y + (_local2 * TILE_SIZE)), _local16); _local17 = (_local14.x / TILE_SIZE); _local18 = (_local14.y / TILE_SIZE); currentMap.removeWall((_local17 + _local3), (_local18 + _local2)); _local3++; }; _local2++; }; }; }; }; _local1++; }; } public function toggleSound(_arg1:MouseEvent):void{ SoundManager.instance.toggleMute(); } private function generateFloorMap(_arg1:House, _arg2:TileMap):Door{ var _local3:Array; var _local4:Array; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:Door; var _local10:int; var _local11:int; var _local12:int; var _local13:Item; var _local14:NPC; _local3 = new Array(HOUSE_TILES_HEIGHT); _local4 = new Array(HOUSE_TILES_HEIGHT); _local9 = new Door(0, 0, -1); _local5 = 0; while (_local5 < _local3.length) { _local3[_local5] = new Array(HOUSE_TILES_WIDTH); _local4[_local5] = new Array(HOUSE_TILES_WIDTH); _local5++; }; _local10 = 0; _local11 = 0; _local12 = int((Math.random() * NUM_HOUSES)); _local10 = (int((_local12 % NUM_HOUSES_PER_WIDTH)) * HOUSE_TILES_WIDTH); _local11 = (int((_local12 / NUM_HOUSES_PER_WIDTH)) * HOUSE_TILES_HEIGHT); _local5 = 0; while (_local5 < HOUSE_TILES_HEIGHT) { _local6 = 0; while (_local6 < HOUSE_TILES_WIDTH) { _local3[_local5][_local6] = housesMap[(_local5 + _local11)][(_local6 + _local10)]; _local6++; }; _local5++; }; _local5 = 0; while (_local5 < HOUSE_TILES_HEIGHT) { _local6 = 0; while (_local6 < HOUSE_TILES_WIDTH) { _local13 = null; switch (Tile.getType(housesSpecial[(_local5 + _local11)][(_local6 + _local10)])){ case Tile.SPECIAL_SPAWN_DOOR: _local9 = new Door((_local6 * TILE_SIZE), (_local5 * TILE_SIZE), -1); break; case Tile.SPECIAL_SPAWN_NPC: _local14 = new NPC(); _local14.setPos((_local6 * TILE_SIZE), (_local5 * TILE_SIZE)); _arg1.addNPC(_local14); break; case Tile.SPECIAL_SPAWN_BUSH: case Tile.SPECIAL_SPAWN_ROCK: case Tile.SPECIAL_SPAWN_STOVE: case Tile.SPECIAL_SPAWN_SINK: case Tile.SPECIAL_SPAWN_COUNTER: case Tile.SPECIAL_SPAWN_FRIDGE: case Tile.SPECIAL_SPAWN_TABLE_AND_CHAIRS: case Tile.SPECIAL_SPAWN_TV: case Tile.SPECIAL_SPAWN_COUCH: case Tile.SPECIAL_SPAWN_TABLE: case Tile.SPECIAL_SPAWN_BED: case Tile.SPECIAL_SPAWN_DRESSER: case Tile.SPECIAL_SPAWN_DESK: case Tile.SPECIAL_SPAWN_CAR: case Tile.SPECIAL_SPAWN_TREE: _local13 = _arg1.addItem(Tile.getType(housesSpecial[(_local5 + _local11)][(_local6 + _local10)]), (_local6 * TILE_SIZE), (_local5 * TILE_SIZE)); break; }; if (_local13 != null){ _local7 = 0; while (_local7 < (_local13.hitBox.height / TILE_SIZE)) { _local8 = 0; while (_local8 < (_local13.hitBox.width / TILE_SIZE)) { _local3[(_local5 + _local7)][(_local6 + _local8)] = (_local3[(_local5 + _local7)][(_local6 + _local8)] | Tile.WALL); _local8++; }; _local7++; }; }; _local6++; }; _local5++; }; _arg2.loadMap2D(_local3, _local4, new HouseTiles(0, 0), 32); return (_local9); } private function updateGame():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:Door; var _local5:int; var _local6:Rectangle; var _local7:int; var _local8:int; var _local9:NPC; var _local10:Rectangle; var _local11:int; var _local12:Boolean; var _local13:Rectangle; var _local14:int; var _local15:int; var _local16:int; var _local17:int; var _local18:Number; var _local19:int; var _local20:int; var _local21:int; var _local22:int; var _local23:Array; var _local24:Rectangle; _local1 = Player.ANIM_IDLE; _local2 = 0; if (isKeyPressed(KeyCodes.KEY_SPACE)){ pushState(STATE_INVENTORY); return; }; SoundManager.instance.clearEffectsInUse(); if (player.stunCooldown > 0){ gunImg.setAnim(AnimData.UI_SHORTCUT_ICONS, AnimData.UI_SHORTCUT_ICONS_STUNGUN_COOLING); player.stunCooldown--; if (player.stunCooldown == 0){ gunImg.setAnim(AnimData.UI_SHORTCUT_ICONS, AnimData.UI_SHORTCUT_ICONS_STUNGUN_READYFLASH); }; }; if (player.state == Player.STATE_IDLE){ if (isKeyDown(KeyCodes.KEY_LEFT)){ player.direction = Entity.DIR_LEFT; if (!objectCollision(-(player.speed), 0)){ currentMap.moveSpriteLeft(player, player.speed); }; _local1 = Player.ANIM_WALK; } else { if (isKeyDown(KeyCodes.KEY_RIGHT)){ player.direction = Entity.DIR_RIGHT; if (!objectCollision(player.speed, 0)){ currentMap.moveSpriteRight(player, player.speed); }; _local1 = Player.ANIM_WALK; }; }; if (isKeyDown(KeyCodes.KEY_DOWN)){ player.direction = Entity.DIR_DOWN; if (!objectCollision(0, player.speed)){ currentMap.moveSpriteDown(player, player.speed); }; _local1 = Player.ANIM_WALK; } else { if (isKeyDown(KeyCodes.KEY_UP)){ player.direction = Entity.DIR_UP; if (!objectCollision(0, -(player.speed))){ currentMap.moveSpriteUp(player, player.speed); }; _local1 = Player.ANIM_WALK; }; }; if (isKeyDown(KeyCodes.KEY_X)){ _local1 = Player.ANIM_MELEE; player.state = Player.STATE_ATTACK; } else { if (((isKeyDown(KeyCodes.KEY_C)) && ((player.stunCooldown == 0)))){ _local1 = Player.ANIM_SHOOT; player.state = Player.STATE_SHOOT; }; }; }; if ((((_local1 == Player.ANIM_MELEE)) || ((player.state == Player.STATE_ATTACK)))){ switch (player.direction){ case Entity.DIR_UP: _local2 = AnimData.SPRITE_MADSCIENTIST_MELEE_BACK; break; case Entity.DIR_RIGHT: _local2 = AnimData.SPRITE_MADSCIENTIST_MELEE_RIGHT; break; case Entity.DIR_DOWN: _local2 = AnimData.SPRITE_MADSCIENTIST_MELEE_FRONT; break; case Entity.DIR_LEFT: _local2 = AnimData.SPRITE_MADSCIENTIST_MELEE_LEFT; break; }; if (((player.isAnimFinished) && (isKeyDown(KeyCodes.KEY_X)))){ player.resetAnim(_local2); }; } else { if ((((_local1 == Player.ANIM_SHOOT)) || ((player.state == Player.STATE_SHOOT)))){ switch (player.direction){ case Entity.DIR_UP: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_GUN_BACK; break; case Entity.DIR_RIGHT: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_GUN_RIGHT; break; case Entity.DIR_DOWN: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_GUN_FRONT; break; case Entity.DIR_LEFT: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_GUN_LEFT; break; }; } else { switch (_local1){ case Player.ANIM_WALK: switch (player.direction){ case Entity.DIR_UP: _local2 = AnimData.SPRITE_MADSCIENTIST_WALK_BACK; break; case Entity.DIR_RIGHT: _local2 = AnimData.SPRITE_MADSCIENTIST_WALK_RIGHT; break; case Entity.DIR_DOWN: _local2 = AnimData.SPRITE_MADSCIENTIST_WALK_FRONT; break; case Entity.DIR_LEFT: _local2 = AnimData.SPRITE_MADSCIENTIST_WALK_LEFT; break; }; break; case Player.ANIM_IDLE: switch (player.direction){ case Entity.DIR_UP: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_BACK; break; case Entity.DIR_RIGHT: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_RIGHT; break; case Entity.DIR_DOWN: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_FRONT; break; case Entity.DIR_LEFT: _local2 = AnimData.SPRITE_MADSCIENTIST_IDLE_LEFT; break; }; break; }; }; }; player.setAnim(AnimData.SPRITE_MADSCIENTIST, _local2); if (player.state == Player.STATE_ATTACK){ switch (player.checkFrameOps()){ case FrameData.OP_ATTACK: SoundManager.instance.playEffect(Main.SWING_EFFECT); hitObjects(); break; }; if (player.isAnimFinished){ player.state = Player.STATE_IDLE; }; } else { if (player.state == Player.STATE_SHOOT){ switch (player.checkFrameOps()){ case FrameData.OP_ATTACK: SoundManager.instance.playEffect(Main.LASER_EFFECT); player.shoot(); switch (player.direction){ case Entity.DIR_UP: stunBullet.init((player.x + (player.hitBox.width / 2)), (player.y + (player.hitBox.height / 2)), 0, -1); break; case Entity.DIR_RIGHT: stunBullet.init((player.x + (player.hitBox.width / 2)), (player.y + (player.hitBox.height / 2)), 1, 0); break; case Entity.DIR_DOWN: stunBullet.init((player.x + (player.hitBox.width / 2)), (player.y + (player.hitBox.height / 2)), 0, 1); break; case Entity.DIR_LEFT: stunBullet.init((player.x + (player.hitBox.width / 2)), (player.y + (player.hitBox.height / 2)), -1, 0); break; }; break; }; if (player.isAnimFinished){ player.state = Player.STATE_IDLE; }; }; }; if (player.attackCooldown > 0){ player.attackCooldown--; }; playerDrawPos = currentMap.centerMap(player.x, player.y); _local3 = 0; while (_local3 < currentDoors.length) { _local4 = currentDoors[_local3]; if (Utils.boxInRect((player.x + player.hitBox.x), player.hitBox.width, (player.y + player.hitBox.y), player.hitBox.height, _local4.bounds)){ _local5 = _local4.houseIndex; if (_local5 > -1){ currentMap = houseArray[_local5].getCurrentFloor().map; currentDoors = houseArray[_local5].getCurrentFloor().doors; currentNPCs = houseArray[_local5].npcArray; currentItems = houseArray[_local5].itemArray; currentSpawns = houseArray[_local5].spawnArray; lastTownPosX = _local4.bounds.x; lastTownPosY = _local4.bounds.y; player.setPos(currentDoors[0].bounds.x, (currentDoors[0].bounds.y - TILE_SIZE)); playerDrawPos = currentMap.centerMap(player.x, player.y); fadeOut(); pushState(STATE_FADE_IN); } else { currentMap = townMap; currentDoors = townDoors; currentItems = townItems; currentNPCs = townNPCs; currentSpawns = townSpawns; player.setPos(lastTownPosX, (lastTownPosY + 16)); playerDrawPos = currentMap.centerMap(player.x, player.y); fadeOut(); pushState(STATE_FADE_IN); }; break; }; _local3++; }; if (stunBullet.isAlive){ _local6 = new Rectangle(stunBullet.x, stunBullet.y, stunBullet.hitBox.width, stunBullet.hitBox.height); _local3 = 0; while (_local3 < currentNPCs.length) { _local9 = currentNPCs[_local3]; if (!_local9.isAlive){ } else { _local10 = new Rectangle(_local9.x, _local9.y, _local9.hitBox.width, _local9.hitBox.height); if (Utils.rectInRect(_local6, _local10)){ _local9.stun(); stunBullet.isAlive = false; break; }; }; _local3++; }; stunBullet.x = (stunBullet.x + (stunBullet.heading.x * stunBullet.speed)); stunBullet.y = (stunBullet.y + (stunBullet.heading.y * stunBullet.speed)); _local7 = (stunBullet.x / TILE_SIZE); _local8 = (stunBullet.y / TILE_SIZE); if ((((((((((_local7 < 0)) || ((_local8 < 0)))) || ((_local7 >= currentMap.mapWidth)))) || ((_local8 >= currentMap.mapHeight)))) || (currentMap.hasWall(_local7, _local8)))){ stunBullet.isAlive = false; }; }; _local3 = 0; while (_local3 < currentNPCs.length) { _local9 = currentNPCs[_local3]; _local12 = true; _local13 = new Rectangle((player.x + player.hitBox.x), (player.y + player.hitBox.y), player.hitBox.width, player.hitBox.height); _local10 = new Rectangle((_local9.x + (_local9.heading.x * _local9.speed)), (_local9.y + (_local9.heading.y * _local9.speed)), _local9.hitBox.width, _local9.hitBox.height); if (((!(_local9.isAlive)) || ((_local9.hitCooldown > 0)))){ } else { switch (_local9.state){ case NPC.STATE_IDLE: getNewNPCDest(_local9); break; case NPC.STATE_WALK: if ((((Math.abs((_local9.y - _local9.dest.y)) <= _local9.speed)) && ((Math.abs((_local9.x - _local9.dest.x)) <= _local9.speed)))){ _local9.x = _local9.dest.x; _local9.y = _local9.dest.y; getNewNPCDest(_local9); } else { if (Utils.rectInRect(_local13, _local10)){ _local12 = false; }; if (_local12){ switch (_local9.direction){ case Entity.DIR_UP: _local12 = currentMap.moveSpriteUp(_local9, _local9.speed); break; case Entity.DIR_RIGHT: _local12 = currentMap.moveSpriteRight(_local9, _local9.speed); break; case Entity.DIR_DOWN: _local12 = currentMap.moveSpriteDown(_local9, _local9.speed); break; case Entity.DIR_LEFT: _local12 = currentMap.moveSpriteLeft(_local9, _local9.speed); break; }; }; if (!_local12){ getNewNPCDest(_local9); }; }; break; case NPC.STATE_SEARCH: _local14 = ((_local9.x + (_local9.hitBox.width / 2)) / TILE_SIZE); _local15 = ((_local9.y + (_local9.hitBox.height / 2)) / TILE_SIZE); _local16 = ((player.x + (player.hitBox.width / 2)) / TILE_SIZE); _local17 = ((player.y + (player.hitBox.height / 2)) / TILE_SIZE); if (lineOfSightBresenham(_local14, _local15, _local16, _local17)){ _local9.setState(NPC.STATE_ATTACK); } else { if ((((Math.abs((_local9.y - _local9.dest.y)) <= _local9.speed)) && ((Math.abs((_local9.x - _local9.dest.x)) <= _local9.speed)))){ _local9.setPos(_local9.dest.x, _local9.dest.y); if (_local9.hasNextDest()){ _local9.nextDest(); } else { _local9.setState(NPC.STATE_WALK); }; } else { _local9.x = (_local9.x + (_local9.heading.x * _local9.speed)); _local9.y = (_local9.y + (_local9.heading.y * _local9.speed)); }; }; break; case NPC.STATE_ATTACK: if (Utils.rectInRect(_local13, _local10)){ _local18 = Math.atan2(((_local9.y + (_local9.hitBox.height / 2)) - (player.y + (player.hitBox.height / 2))), ((_local9.x + (_local9.hitBox.width / 2)) - (player.x + (player.hitBox.width / 2)))); if ((((_local18 < (-(Math.PI) / 4))) && ((_local18 > (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_DOWN; } else { if ((((_local18 > (Math.PI / 4))) && ((_local18 < (Math.PI - (Math.PI / 4)))))){ _local9.direction = Entity.DIR_UP; } else { if ((((_local18 > (Math.PI - (Math.PI / 4)))) || ((_local18 < (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_RIGHT; } else { _local9.direction = Entity.DIR_LEFT; }; }; }; _local9.attack(); _local9.setState(NPC.STATE_SWING_BAT); } else { _local19 = (_local9.x / TILE_SIZE); _local20 = (_local9.y / TILE_SIZE); _local21 = (player.x / TILE_SIZE); _local22 = (player.y / TILE_SIZE); _local23 = PathFinder.getPathAStar(currentMap.getMap(), _local19, _local20, _local21, _local22); _local9.setPath(_local23); if ((((Math.abs((_local9.y - _local9.dest.y)) <= _local9.speed)) && ((Math.abs((_local9.x - _local9.dest.x)) <= _local9.speed)))){ _local9.setPos(_local9.dest.x, _local9.dest.y); if (_local9.hasNextDest()){ _local9.nextDest(); }; } else { _local9.x = (_local9.x + (_local9.heading.x * _local9.speed)); _local9.y = (_local9.y + (_local9.heading.y * _local9.speed)); }; }; break; case NPC.STATE_SWING_BAT: _local18 = Math.atan2(((_local9.y + (_local9.hitBox.height / 2)) - (player.y + (player.hitBox.height / 2))), ((_local9.x + (_local9.hitBox.width / 2)) - (player.x + (player.hitBox.width / 2)))); if ((((_local18 < (-(Math.PI) / 4))) && ((_local18 > (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_DOWN; } else { if ((((_local18 > (Math.PI / 4))) && ((_local18 < (Math.PI - (Math.PI / 4)))))){ _local9.direction = Entity.DIR_UP; } else { if ((((_local18 > (Math.PI - (Math.PI / 4)))) || ((_local18 < (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_RIGHT; } else { _local9.direction = Entity.DIR_LEFT; }; }; }; if (_local9.isAnimFinished){ _local10 = new Rectangle((_local9.x + (_local9.heading.x * _local9.speed)), (_local9.y + (_local9.heading.y * _local9.speed)), _local9.hitBox.width, _local9.hitBox.height); if (!Utils.rectInRect(_local13, _local10)){ _local9.setState(NPC.STATE_ATTACK); } else { _local9.attack(); }; }; break; }; if (_local9.state == NPC.STATE_SWING_BAT){ switch (_local9.checkFrameOps()){ case FrameData.OP_ATTACK: _local24 = new Rectangle(0, 0, 0, 0); switch (_local9.direction){ case Entity.DIR_UP: _local24 = new Rectangle(_local9.x, (_local9.y - Player.ATTACK_HEIGHT), Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_RIGHT: _local24 = new Rectangle(((_local9.x + _local9.hitBox.x) + _local9.hitBox.width), _local9.y, Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_DOWN: _local24 = new Rectangle(_local9.x, (_local9.y + _local9.hitBox.height), Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; case Entity.DIR_LEFT: _local24 = new Rectangle((_local9.x - Player.ATTACK_WIDTH), _local9.y, Player.ATTACK_WIDTH, Player.ATTACK_HEIGHT); break; }; if (((Utils.rectInRect(_local24, _local13)) && ((player.damageCooldown == 0)))){ SoundManager.instance.playEffect(Main.HIT_EFFECT); player.hit(_local9.attackPower); if (player.health <= 0){ drawGame(); pushState(STATE_GAME_OVER); return; }; }; break; }; } else { if (_local9.state == NPC.STATE_ATTACK){ _local18 = Math.atan2(((_local9.y + (_local9.hitBox.height / 2)) - (player.y + (player.hitBox.height / 2))), ((_local9.x + (_local9.hitBox.width / 2)) - (player.x + (player.hitBox.width / 2)))); if ((((_local18 < (-(Math.PI) / 4))) && ((_local18 > (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_DOWN; _local11 = AnimData.SPRITE_NPC01_WALK_FRONT; } else { if ((((_local18 > (Math.PI / 4))) && ((_local18 < (Math.PI - (Math.PI / 4)))))){ _local9.direction = Entity.DIR_UP; _local11 = AnimData.SPRITE_NPC01_WALK_BACK; } else { if ((((_local18 > (Math.PI - (Math.PI / 4)))) || ((_local18 < (-(Math.PI) + (Math.PI / 4)))))){ _local9.direction = Entity.DIR_RIGHT; _local11 = AnimData.SPRITE_NPC01_WALK_RIGHT; } else { _local9.direction = Entity.DIR_LEFT; _local11 = AnimData.SPRITE_NPC01_WALK_LEFT; }; }; }; _local9.setAnim((_local9.npcType + AnimData.SPRITE_NPC01), _local11); } else { switch (_local9.direction){ case Entity.DIR_UP: _local11 = AnimData.SPRITE_NPC01_WALK_BACK; break; case Entity.DIR_RIGHT: _local11 = AnimData.SPRITE_NPC01_WALK_RIGHT; break; case Entity.DIR_DOWN: _local11 = AnimData.SPRITE_NPC01_WALK_FRONT; break; case Entity.DIR_LEFT: _local11 = AnimData.SPRITE_NPC01_WALK_LEFT; break; }; _local9.setAnim((_local9.npcType + AnimData.SPRITE_NPC01), _local11); }; }; }; _local3++; }; } private function drawInventory():void{ drawSprite(inventoryImg); woodField.setText(("" + (((MAX_WOOD - inventory[WOOD_INDEX]) > 0)) ? (MAX_WOOD - inventory[WOOD_INDEX]) : 0), 0); metalField.setText(("" + (((MAX_METAL - inventory[METAL_INDEX]) > 0)) ? (MAX_METAL - inventory[METAL_INDEX]) : 0), 0); circuitField.setText(("" + (((MAX_CIRCUIT - inventory[CIRCUIT_INDEX]) > 0)) ? (MAX_CIRCUIT - inventory[CIRCUIT_INDEX]) : 0), 0); coilField.setText(("" + (((MAX_COIL - inventory[COIL_INDEX]) > 0)) ? (MAX_COIL - inventory[COIL_INDEX]) : 0), 0); drawSprite(woodField); drawSprite(metalField); drawSprite(circuitField); drawSprite(coilField); } private function generateProperty(_arg1:Array, _arg2:Array, _arg3, _arg4):void{ } private function updateInventory():void{ if (isKeyPressed(KeyCodes.KEY_SPACE)){ popState(); }; } override public function update():void{ soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); switch (getState()){ case STATE_FADE_IN: popState(); fadeIn(); break; case STATE_PLAY: updateGame(); break; case STATE_INVENTORY: updateInventory(); break; case STATE_GAME_OVER: updateGameOver(); break; }; } private function generateHouse():void{ var _local1:House; var _local2:TileMap; var _local3:Door; var _local4:Floor; _local1 = new House(); _local2 = new TileMap(screenWidth, screenHeight); _local3 = generateFloorMap(_local1, _local2); _local4 = new Floor(_local2); _local4.setDoor(_local3); _local1.addFloor(_local4); houseArray.push(_local1); } private function objectCollision(_arg1:int, _arg2:int):Boolean{ var _local3:int; var _local4:Rectangle; var _local5:NPC; var _local6:*; var _local7:Spawn; var _local8:*; var _local9:int; var _local10:Boolean; _local4 = new Rectangle(((player.x + player.hitBox.x) + _arg1), ((player.y + player.hitBox.y) + _arg2), player.hitBox.width, player.hitBox.height); _local3 = 0; while (_local3 < currentNPCs.length) { _local5 = currentNPCs[_local3]; if (!_local5.isAlive){ } else { _local6 = new Rectangle(_local5.x, _local5.y, _local5.hitBox.width, _local5.hitBox.height); if (Utils.rectInRect(_local4, _local6)){ return (true); }; }; _local3++; }; _local3 = 0; while (_local3 < currentSpawns.length) { _local7 = currentSpawns[_local3]; if (!_local7.isAlive){ } else { _local8 = new Rectangle(_local7.x, _local7.y, _local7.hitBox.width, _local7.hitBox.height); if (Utils.rectInRect(_local4, _local8)){ SoundManager.instance.playEffect(Main.LOOT_EFFECT); _local7.isAlive = false; _local9 = WOOD_INDEX; switch (_local7.spawnType){ case Spawn.SPAWN_TYPE_WOOD: _local9 = WOOD_INDEX; break; case Spawn.SPAWN_TYPE_METAL: _local9 = METAL_INDEX; break; case Spawn.SPAWN_TYPE_CIRCUIT: _local9 = CIRCUIT_INDEX; break; case Spawn.SPAWN_TYPE_COIL: _local9 = COIL_INDEX; break; case Spawn.SPAWN_TYPE_APPLE: player.health = ((player.health)<Player.MAX_HEALTH) ? (player.health + 1) : Player.MAX_HEALTH; break; case Spawn.SPAWN_TYPE_STEAK: player.health = Player.MAX_HEALTH; break; }; var _local11 = inventory; var _local12 = _local9; var _local13 = (_local11[_local12] + 1); _local11[_local12] = _local13; _local10 = (((((((inventory[WOOD_INDEX] >= MAX_WOOD)) && ((inventory[METAL_INDEX] >= MAX_METAL)))) && ((inventory[CIRCUIT_INDEX] >= MAX_CIRCUIT)))) && ((inventory[COIL_INDEX] >= MAX_COIL))); if (_local10){ theGame.switchLayerOutro(); }; }; }; _local3++; }; return (false); } override public function init():void{ SoundManager.instance.playMusic(Main.WORLD_THEME, true); reset(); fadeIn(); } override public function draw():void{ switch (getState()){ case STATE_PLAY: drawGame(); break; case STATE_INVENTORY: drawInventory(); break; case STATE_GAME_OVER: drawGameOver(); break; }; } private function getAvailableSpawn():Spawn{ var _local1:int; var _local2:Spawn; var _local3:Spawn; _local1 = 0; while (_local1 < currentSpawns.length) { _local3 = currentSpawns[_local1]; if (!_local3.isAlive){ return (_local3); }; _local1++; }; _local2 = new Spawn(); currentSpawns.push(_local2); return (currentSpawns[(currentSpawns.length - 1)]); } private function drawGame():void{ var _local1:int; var _local2:Point; var _local3:Item; var _local4:NPC; var _local5:Spawn; clearBackBuffer(); drawTileMap(currentMap); _local2 = currentMap.getCurrentOffset(); _local1 = 0; while (_local1 < currentItems.length) { _local3 = currentItems[_local1]; if (_local3.isPickedUp){ } else { if (_local3.hitCooldown > 0){ _local3.hitCooldown--; } else { drawSpriteAt(_local3, (_local3.x - _local2.x), (_local3.y - _local2.y)); }; }; _local1++; }; _local1 = 0; while (_local1 < currentNPCs.length) { _local4 = currentNPCs[_local1]; if (_local4.hitCooldown > 0){ _local4.hitCooldown--; //unresolved if } else { drawSpriteAt(_local4, (_local4.x - _local2.x), (_local4.y - _local2.y)); }; _local1++; }; _local1 = 0; while (_local1 < currentSpawns.length) { _local5 = currentSpawns[_local1]; if (!_local5.isAlive){ } else { drawSpriteAt(_local5, (_local5.x - _local2.x), (_local5.y - _local2.y)); }; _local1++; }; if (player.damageCooldown > 0){ if ((player.damageCooldown % 2) == 0){ drawSpriteAt(player, playerDrawPos.x, playerDrawPos.y); }; player.damageCooldown--; } else { drawSpriteAt(player, playerDrawPos.x, playerDrawPos.y); }; if (stunBullet.isAlive){ drawSpriteAt(stunBullet, (stunBullet.x - _local2.x), (stunBullet.y - _local2.y)); }; lifeImg.setAnim(AnimData.UI_LIFE, AnimData.UI_LIFE_LIFE); _local1 = 0; while (_local1 < Player.MAX_HEALTH) { if (player.health <= _local1){ lifeImg.setAnim(AnimData.UI_LIFE, AnimData.UI_LIFE_NOLIFE); }; drawSpriteAt(lifeImg, (LIFE_X + (_local1 * LIFE_SPACING_X)), LIFE_Y); _local1++; }; drawSprite(shortcutImg); drawSprite(batImg); drawSprite(gunImg); } private function reset():void{ var _local1:int; lastTownPosX = 0; lastTownPosY = 0; generateTown(); player = new Player(); player.setAnim(AnimData.SPRITE_MADSCIENTIST, AnimData.SPRITE_MADSCIENTIST_IDLE_FRONT); player.setPos((((townWidth * TILE_SIZE) / 2) - 64), ((townHeight * TILE_SIZE) - 64)); stunBullet = new StunBullet(); stunBullet.setAnim(AnimData.BLUE_JELLYFISH, AnimData.BLUE_JELLYFISH_IDLE); _local1 = 0; while (_local1 < inventory.length) { inventory[_local1] = 0; _local1++; }; playerDrawPos = currentMap.centerMap(player.x, player.y); gunImg.setAnim(AnimData.UI_SHORTCUT_ICONS, AnimData.UI_SHORTCUT_ICONS_STUNGUN); } private function drawGameOver():void{ drawSprite(gameOverImg); } private function getNewNPCDest(_arg1:NPC):void{ var _local2:int; _local2 = _arg1.direction; if (Math.random() <= 0.25){ _local2 = int((4 * Math.random())); if (_local2 == 4){ _local2--; }; }; _arg1.heading.x = 0; _arg1.heading.y = 0; switch (_local2){ case Entity.DIR_UP: _arg1.setDest(_arg1.x, (_arg1.y - TILE_SIZE)); break; case Entity.DIR_DOWN: _arg1.setDest(_arg1.x, (_arg1.y + TILE_SIZE)); break; case Entity.DIR_RIGHT: _arg1.setDest((_arg1.x + TILE_SIZE), _arg1.y); break; case Entity.DIR_LEFT: _arg1.setDest((_arg1.x - TILE_SIZE), _arg1.y); break; }; _arg1.setState(NPC.STATE_WALK); } private function generateTown():void{ var _local1:Array; var _local2:Array; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; var _local14:int; var _local15:Item; var _local16:NPC; var _local17:int; var _local18:int; _local1 = new Array(townHeight); _local2 = new Array(townHeight); _local3 = 0; while (_local3 < townHeight) { _local1[_local3] = new Array(townWidth); _local2[_local3] = new Array(townWidth); _local3++; }; _local7 = 0; _local8 = 0; propertyArray = new Array(PROPERTIES_PER_HEIGHT); townDoors = new Array(); townNPCs = new Array(); townItems = new Array(); townSpawns = new Array(); houseArray = new Array(); _local3 = 0; while (_local3 < PROPERTIES_PER_HEIGHT) { propertyArray[_local3] = new Array(PROPERTIES_PER_WIDTH); _local3++; }; _local9 = 0; while (_local9 < NUM_PROPERTIES) { _local10 = (Math.random() * PROPERTIES_PER_WIDTH); _local11 = (Math.random() * PROPERTIES_PER_HEIGHT); if (!propertyArray[_local11][_local10]){ propertyArray[_local11][_local10] = true; _local9++; }; }; _local3 = 0; while (_local3 < PROPERTIES_PER_HEIGHT) { _local4 = 0; while (_local4 < PROPERTIES_PER_WIDTH) { _local12 = 0; _local13 = 0; _local14 = (NUM_PROPERTY_TYPES - 1); if (propertyArray[_local3][_local4]){ _local14 = int((Math.random() * NUM_HOUSE_TYPES)); generateHouse(); }; _local12 = (int((_local14 % NUM_PROPERTY_PER_WIDTH)) * PROPERTY_SLICE_TILES_WIDTH); _local13 = (int((_local14 / NUM_PROPERTY_PER_WIDTH)) * PROPERTY_SLICE_TILES_HEIGHT); _local5 = 0; while (_local5 < PROPERTY_SLICE_TILES_HEIGHT) { _local6 = 0; while (_local6 < PROPERTY_SLICE_TILES_WIDTH) { _local1[(_local5 + (_local3 * PROPERTY_SLICE_TILES_HEIGHT))][(_local6 + (_local4 * PROPERTY_SLICE_TILES_WIDTH))] = worldMap[(_local5 + _local13)][(_local6 + _local12)]; _local6++; }; _local5++; }; _local5 = 0; while (_local5 < PROPERTY_SLICE_TILES_HEIGHT) { _local6 = 0; while (_local6 < PROPERTY_SLICE_TILES_WIDTH) { _local15 = null; switch (Tile.getType(worldSpecial[(_local5 + _local13)][(_local6 + _local12)])){ case Tile.SPECIAL_SPAWN_DOOR: townDoors.push(new Door(((_local6 + (_local4 * PROPERTY_SLICE_TILES_WIDTH)) * TILE_SIZE), ((_local5 + (_local3 * PROPERTY_SLICE_TILES_HEIGHT)) * TILE_SIZE), townDoors.length)); break; case Tile.SPECIAL_SPAWN_NPC: _local16 = new NPC(); _local16.setPos(((_local6 + (_local4 * PROPERTY_SLICE_TILES_WIDTH)) * TILE_SIZE), ((_local5 + (_local3 * PROPERTY_SLICE_TILES_HEIGHT)) * TILE_SIZE)); townNPCs.push(_local16); break; case Tile.SPECIAL_SPAWN_BUSH: case Tile.SPECIAL_SPAWN_ROCK: case Tile.SPECIAL_SPAWN_STOVE: case Tile.SPECIAL_SPAWN_SINK: case Tile.SPECIAL_SPAWN_COUNTER: case Tile.SPECIAL_SPAWN_FRIDGE: case Tile.SPECIAL_SPAWN_TABLE_AND_CHAIRS: case Tile.SPECIAL_SPAWN_TV: case Tile.SPECIAL_SPAWN_COUCH: case Tile.SPECIAL_SPAWN_TABLE: case Tile.SPECIAL_SPAWN_BED: case Tile.SPECIAL_SPAWN_DRESSER: case Tile.SPECIAL_SPAWN_DESK: case Tile.SPECIAL_SPAWN_CAR: case Tile.SPECIAL_SPAWN_TREE: _local15 = new Item(Tile.getType(worldSpecial[(_local5 + _local13)][(_local6 + _local12)])); _local15.setPos(((_local6 + (_local4 * PROPERTY_SLICE_TILES_WIDTH)) * TILE_SIZE), ((_local5 + (_local3 * PROPERTY_SLICE_TILES_HEIGHT)) * TILE_SIZE)); townItems.push(_local15); break; }; if (_local15 != null){ _local17 = 0; while (_local17 < (_local15.hitBox.height / TILE_SIZE)) { _local18 = 0; while (_local18 < (_local15.hitBox.width / TILE_SIZE)) { _local1[((_local17 + _local5) + (_local3 * PROPERTY_SLICE_TILES_HEIGHT))][((_local18 + _local6) + (_local4 * PROPERTY_SLICE_TILES_WIDTH))] = (_local1[((_local17 + _local5) + (_local3 * PROPERTY_SLICE_TILES_HEIGHT))][((_local18 + _local6) + (_local4 * PROPERTY_SLICE_TILES_WIDTH))] | Tile.WALL); _local18++; }; _local17++; }; }; _local6++; }; _local5++; }; _local4++; }; _local3++; }; townMap = new TileMap(screenWidth, screenHeight); townMap.loadMap2D(_local1, _local2, new TownTiles(0, 0), 32); currentMap = townMap; currentDoors = townDoors; currentNPCs = townNPCs; currentItems = townItems; currentSpawns = townSpawns; } private function lineOfSightBresenham(_arg1:int, _arg2:int, _arg3:int, _arg4:int):Boolean{ var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; _local5 = _arg1; _local6 = _arg3; _local7 = _arg2; _local8 = _arg4; _local9 = (_arg3 - _arg1); _local10 = (_arg4 - _arg2); _local11 = 0; _local12 = 0; _local13 = 0; if (_local10 == 0){ if (_local9 == 0){ return (true); }; if (_local9 < 0){ _local12 = -1; } else { _local12 = 1; }; while (_local5 != _local6) { _local5 = (_local5 + _local12); if (currentMap.hasWall(_local5, _local7)){ return (false); }; }; return (true); }; if (_local9 == 0){ if (_local10 < 0){ _local11 = -1; } else { _local11 = 1; }; while (_local7 != _local8) { _local7 = (_local7 + _local11); if (currentMap.hasWall(_local5, _local7)){ return (false); }; }; return (true); }; if (_local10 < 0){ _local10 = -(_local10); _local11 = -1; } else { _local11 = 1; }; if (_local9 < 0){ _local9 = -(_local9); _local12 = -1; } else { _local12 = 1; }; _local9 = (_local9 * 2); _local10 = (_local10 * 2); if (_local9 > _local10){ _local13 = ((2 * _local10) - _local9); while (_local5 != _local6) { if (_local13 >= 0){ _local7 = (_local7 + _local11); _local13 = (_local13 - _local9); }; _local5 = (_local5 + _local12); _local13 = (_local13 + _local10); if (currentMap.hasWall(_local5, _local7)){ return (false); }; }; } else { _local13 = ((2 * _local9) - _local10); while (_local7 != _local8) { if (_local13 >= 0){ _local5 = (_local5 + _local12); _local13 = (_local13 - _local10); }; _local7 = (_local7 + _local11); _local13 = (_local13 + _local9); if (currentMap.hasWall(_local5, _local7)){ return (false); }; }; }; return (true); } private function updateGameOver():void{ if (isKeyPressed(KeyCodes.KEY_SPACE)){ reset(); popState(); }; } } }//packageSection 35//GameFont (GameFont) package { import flash.text.*; public dynamic class GameFont extends Font { } }//packageSection 36//GameOverImage (GameOverImage) package { import flash.display.*; public dynamic class GameOverImage extends BitmapData { public function GameOverImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 37//HitSound (HitSound) package { import flash.media.*; public dynamic class HitSound extends Sound { } }//packageSection 38//House (House) package { public class House { public var itemArray:Array; private var floors:Array; private var currentFloor:int; public var npcArray:Array; public var spawnArray:Array; public function House(){ floors = new Array(); npcArray = new Array(); itemArray = new Array(); spawnArray = new Array(); currentFloor = 0; } public function addNPC(_arg1:NPC):void{ npcArray.push(_arg1); } public function getCurrentFloor():Floor{ return (floors[currentFloor]); } public function addFloor(_arg1:Floor):void{ floors.push(_arg1); } public function addItem(_arg1:int, _arg2:int, _arg3:int):Item{ var _local4:Item; _local4 = new Item(_arg1); _local4.setPos(_arg2, _arg3); itemArray.push(_local4); return (_local4); } } }//packageSection 39//HouseTiles (HouseTiles) package { import flash.display.*; public dynamic class HouseTiles extends BitmapData { public function HouseTiles(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 40//IntroClip (IntroClip) package { import flash.display.*; public dynamic class IntroClip extends MovieClip { public var soundButton:SoundButton; public var btn_skip:SimpleButton; public function IntroClip(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8, 8, frame9, 9, frame10, 10, frame11, 11, frame12, 12, frame13, 13, frame14, 14, frame15, 15, frame16, 16, frame17, 17, frame18, 18, frame19, 19, frame20, 20, frame21, 21, frame22, 22, frame23, 23, frame24, 24, frame25, 25, frame26, 26, frame27, 27, frame28, 28, frame29, 29, frame30, 30, frame31, 31, frame32, 32, frame33, 33, frame34, 34, frame35, 35, frame36, 36, frame37, 37, frame38, 38, frame39, 39, frame40, 40, frame41, 41, frame42, 42, frame43, 43, frame44, 87, frame88); } function frame88(){ stop(); } function frame10(){ stop(); } function frame14(){ stop(); } function frame18(){ stop(); } function frame12(){ stop(); } function frame3(){ stop(); } function frame6(){ stop(); } function frame7(){ stop(); } function frame1(){ stop(); } function frame19(){ stop(); } function frame25(){ stop(); } function frame13(){ stop(); } function frame17(){ stop(); } function frame4(){ stop(); } function frame5(){ stop(); } function frame22(){ stop(); } function frame16(){ stop(); } function frame8(){ stop(); } function frame9(){ stop(); } function frame2(){ stop(); } function frame15(){ stop(); } function frame23(){ stop(); } function frame28(){ stop(); } function frame36(){ stop(); } function frame20(){ stop(); } function frame21(){ stop(); } function frame31(){ stop(); } function frame34(){ stop(); } function frame27(){ stop(); } function frame11(){ stop(); } function frame35(){ stop(); } function frame24(){ stop(); } function frame37(){ stop(); } function frame30(){ stop(); } function frame29(){ stop(); } function frame33(){ stop(); } function frame40(){ stop(); } function frame41(){ stop(); } function frame43(){ stop(); } function frame39(){ stop(); } function frame26(){ stop(); } function frame32(){ stop(); } function frame42(){ stop(); } function frame44(){ stop(); } function frame38(){ stop(); } } }//packageSection 41//IntroCutscene (IntroCutscene) package { import flash.events.*; import greenpixel.game.*; import greenpixel.sound.*; public class IntroCutscene extends GameLayer { private var theGame:Main; private var cutscene:IntroClip; public function IntroCutscene(_arg1:Main){ super(_arg1); theGame = _arg1; cutscene = new IntroClip(); cutscene.btn_skip.addEventListener(MouseEvent.CLICK, loadGame); cutscene.soundButton.gotoAndStop(0); cutscene.soundButton.buttonMode = true; cutscene.soundButton.addEventListener(MouseEvent.CLICK, toggleSound); addChild(cutscene); cutscene.stop(); } override public function init():void{ stage.focus = stage; SoundManager.instance.playMusic(Main.LAIR_THEME, true); cutscene.gotoAndStop(0); cutscene.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); fadeIn(); } override public function draw():void{ } public function toggleSound(_arg1:MouseEvent):void{ SoundManager.instance.toggleMute(); } override public function update():void{ if (cutscene.currentFrame == cutscene.totalFrames){ cutscene.stop(); stage.focus = stage; theGame.switchLayerGame(); }; if (isAnyKeyPressed()){ cutscene.play(); }; cutscene.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); } private function loadGame(_arg1:MouseEvent):void{ stage.focus = stage; theGame.switchLayerGame(); } } }//packageSection 42//InventoryImage (InventoryImage) package { import flash.display.*; public dynamic class InventoryImage extends BitmapData { public function InventoryImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 43//Item (Item) package { import flash.geom.*; import greenpixel.game.world.objects.*; import greenpixel.game.tilemap.*; public class Item extends Character { private var breakAnimIndex:int; public var hitCooldown:int; public var spawnType1:int; public var spawnType2:int; public var isPickedUp:Boolean; private var HIT_COOLDOWN_MAX:int;// = 4 public static var STATE_FIXED:int = 0; public static var CAR_HEALTH = 200; public static var SINK_HEALTH:int = 50; public static var TABLE_HEALTH:int = 25; public static var TYPE_WOOD:int = 1; public static var BUSH_HEALTH:int = 25; public static var FRIDGE_HEALTH:int = 100; public static var TREE_HEALTH = 100; public static var COUNTER_HEALTH:int = 50; public static var STATE_BROKEN:int = 1; public static var STOVE_HEALTH:int = 75; public static var TYPE_ENGINE:int = 0; public static var DRAWER_HEALTH = 50; public static var COUCH_HEALTH:int = 75; public static var TABLE_AND_CHAIR_HEALTH:int = 100; public static var NUM_CAR_TYPES = 7; public static var ROCK_HEALTH:int = 50; public static var DRESSER_HEALTH = 125; public static var TV_HEALTH:int = 150; public static var BED_HEALTH:int = 75; public function Item(_arg1:int){ var _local2:int; HIT_COOLDOWN_MAX = 4; super(); breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN1X1; type = _arg1; isAlive = true; isPickedUp = false; switch (_arg1){ case Tile.SPECIAL_SPAWN_BUSH: _local2 = AnimData.TILES_OBJECTS_BUSH_IDLE; hitBox = new Rectangle(0, 0, 32, 32); health = BUSH_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_WOOD; break; case Tile.SPECIAL_SPAWN_ROCK: _local2 = AnimData.TILES_OBJECTS_ROCK_IDLE; hitBox = new Rectangle(0, 0, 32, 32); health = ROCK_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_WOOD; break; case Tile.SPECIAL_SPAWN_STOVE: _local2 = AnimData.TILES_OBJECTS_KITCHEN_NORTH_STOVE; hitBox = new Rectangle(0, 0, 32, 32); health = STOVE_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_METAL; spawnType2 = Spawn.SPAWN_TYPE_METAL; break; case Tile.SPECIAL_SPAWN_SINK: _local2 = AnimData.TILES_OBJECTS_KITCHEN_NORTH_SINK; hitBox = new Rectangle(0, 0, 32, 32); health = SINK_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_METAL; spawnType2 = Spawn.SPAWN_TYPE_METAL; break; case Tile.SPECIAL_SPAWN_COUNTER: _local2 = AnimData.TILES_OBJECTS_KITCHEN_NORTH_COUNTER; hitBox = new Rectangle(0, 0, 32, 32); health = COUNTER_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_METAL; spawnType2 = Spawn.SPAWN_TYPE_METAL; break; case Tile.SPECIAL_SPAWN_FRIDGE: _local2 = AnimData.TILES_OBJECTS_KITCHEN_NORTH_FRIDGE; hitBox = new Rectangle(0, 0, 32, 64); health = FRIDGE_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_COIL; spawnType2 = Spawn.SPAWN_TYPE_STEAK; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN1X2; break; case Tile.SPECIAL_SPAWN_TABLE_AND_CHAIRS: _local2 = AnimData.TILES_OBJECTS_KITCHEN_DINING; hitBox = new Rectangle(0, 0, 96, 32); health = TABLE_AND_CHAIR_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_METAL; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN3X1; break; case Tile.SPECIAL_SPAWN_TV: _local2 = AnimData.TILES_OBJECTS_DEN_NORTH_TV; hitBox = new Rectangle(0, 0, 64, 64); health = TV_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_CIRCUIT; spawnType2 = Spawn.SPAWN_TYPE_METAL; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN2X2; break; case Tile.SPECIAL_SPAWN_COUCH: _local2 = AnimData.TILES_OBJECTS_DEN_SOUTH_COUCH; hitBox = new Rectangle(0, 0, 96, 32); health = COUCH_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_COIL; spawnType2 = Spawn.SPAWN_TYPE_WOOD; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN3X1; break; case Tile.SPECIAL_SPAWN_TABLE: _local2 = AnimData.TILES_OBJECTS_DEN_TABLE; hitBox = new Rectangle(0, 0, 32, 32); health = TABLE_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_WOOD; break; case Tile.SPECIAL_SPAWN_BED: _local2 = AnimData.TILES_OBJECTS_BEDROOM_BED; hitBox = new Rectangle(0, 0, 32, 64); health = BED_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_COIL; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN1X2; break; case Tile.SPECIAL_SPAWN_DRESSER: _local2 = AnimData.TILES_OBJECTS_BEDROOM_NORTH_DRESSER; hitBox = new Rectangle(0, 0, 64, 64); health = DRESSER_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_WOOD; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN2X2; break; case Tile.SPECIAL_SPAWN_DESK: _local2 = AnimData.TILES_OBJECTS_BEDROOM_NORTH_DRAWER; hitBox = new Rectangle(0, 0, 64, 32); health = DRAWER_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_WOOD; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN2X1; break; case Tile.SPECIAL_SPAWN_CAR: _local2 = (AnimData.TILES_OBJECTS_CAR01_IDLE + int((Math.random() * NUM_CAR_TYPES))); hitBox = new Rectangle(0, 0, 64, 96); health = CAR_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_METAL; spawnType2 = Spawn.SPAWN_TYPE_CIRCUIT; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN2X3; break; case Tile.SPECIAL_SPAWN_TREE: _local2 = AnimData.TILES_OBJECTS_TREE_IDLE; hitBox = new Rectangle(0, 0, 96, 96); health = TREE_HEALTH; spawnType1 = Spawn.SPAWN_TYPE_WOOD; spawnType2 = Spawn.SPAWN_TYPE_APPLE; breakAnimIndex = AnimData.TILES_OBJECTS_BROKEN3X3; break; }; state = STATE_FIXED; setAnim(AnimData.TILES_OBJECTS, _local2); } public function breakYoself():void{ health = 0; isAlive = false; setAnim(AnimData.TILES_OBJECTS, breakAnimIndex); state = Item.STATE_BROKEN; } public function hit():void{ hitCooldown = HIT_COOLDOWN_MAX; } } }//packageSection 44//ItemImages (ItemImages) package { import flash.display.*; public dynamic class ItemImages extends BitmapData { public function ItemImages(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 45//LairTheme (LairTheme) package { import flash.media.*; public dynamic class LairTheme extends Sound { } }//packageSection 46//LaserSound (LaserSound) package { import flash.media.*; public dynamic class LaserSound extends Sound { } }//packageSection 47//LifeImage (LifeImage) package { import flash.display.*; public dynamic class LifeImage extends BitmapData { public function LifeImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 48//LootSound (LootSound) package { import flash.media.*; public dynamic class LootSound extends Sound { } }//packageSection 49//Main (Main) package { import flash.display.*; import mochi.as3.*; import greenpixel.game.*; public class Main extends BasicGame { public var outro:OutroCutscene; public var SCREEN_WIDTH:int;// = 640 private var adClip:MovieClip; private var adIsFinished:Boolean;// = true var _mochiads_game_id:String;// = "6ccc17658bbc0d83" public var menu:Menu; public var splash:Splash; public var SCREEN_HEIGHT:int;// = 480 public var intro:IntroCutscene; public var game:Game; public static var LASER_EFFECT = 3; public static var LOOT_EFFECT = 2; public static var MENU_THEME = 0; public static var LAIR_THEME = 1; public static var SWING_EFFECT = 1; public static var WORLD_THEME = 2; public static var HIT_EFFECT = 0; public function Main(){ SCREEN_WIDTH = 640; SCREEN_HEIGHT = 480; _mochiads_game_id = "6ccc17658bbc0d83"; adIsFinished = true; super(SCREEN_WIDTH, SCREEN_HEIGHT); addAnimBundle(AnimData.BLUE_JELLYFISH_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.MESSAGE_WINDOW_DATA, new MessageBoxes(0, 0)); addAnimBundle(AnimData.SPRITE_MADSCIENTIST_DATA, new PlayerImage(0, 0)); addAnimBundle(AnimData.SPRITE_NPC01_DATA, new NPCImage0(0, 0)); addAnimBundle(AnimData.SPRITE_NPC02_DATA, new NPCImage1(0, 0)); addAnimBundle(AnimData.SPRITE_NPC03_DATA, new NPCImage2(0, 0)); addAnimBundle(AnimData.SPRITE_NPC04_DATA, new NPCImage3(0, 0)); addAnimBundle(AnimData.SPRITE_NPC05_DATA, new NPCImage4(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.ANIM_SET_8_DATA, new BlueJellyfish(0, 0)); addAnimBundle(AnimData.TILES_OBJECTS_DATA, new ObjectImages(0, 0)); addAnimBundle(AnimData.ITEMS_DATA, new ItemImages(0, 0)); addAnimBundle(AnimData.UI_INVENTORY_DATA, new InventoryImage(0, 0)); addAnimBundle(AnimData.UI_SHORTCUTS_DATA, new ShortcutImage(0, 0)); addAnimBundle(AnimData.UI_LIFE_DATA, new LifeImage(0, 0)); addAnimBundle(AnimData.UI_SHORTCUT_ICONS_DATA, new ShortcutIconsImage(0, 0)); addAnimBundle(AnimData.UI_DEATHSCREEN_DATA, new GameOverImage(0, 0)); addMusic(new MenuTheme()); addMusic(new LairTheme()); addMusic(new WorldTheme()); addEffect(new HitSound()); addEffect(new SwingSound()); addEffect(new LootSound()); addEffect(new LaserSound()); splash = new Splash(this); menu = new Menu(this); game = new Game(this); intro = new IntroCutscene(this); outro = new OutroCutscene(this); adClip = new MovieClip(); adClip.graphics.beginFill(0); adClip.graphics.drawRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); adClip.graphics.endFill(); addChild(adClip); MochiAd.showPreGameAd({id:"6ccc17658bbc0d83", res:"640x480", clip:adClip, no_progress_bar:true, no_bg:true, ad_started:adStart, ad_finished:adFinished}); } private function adLoaded(_arg1:Number, _arg2:Number):void{ adIsFinished = false; } public function switchLayerGame():void{ fadeAndPushLayer(game); } public function switchLayerSplash():void{ fadeAndPushLayer(splash); } public function switchLayerOutro():void{ fadeAndPushLayer(outro); } public function switchLayerMenu():void{ fadeAndPushLayer(menu); } private function adFinished():void{ removeChild(adClip); switchLayerMenu(); } public function switchLayerIntro():void{ fadeAndPushLayer(intro); } private function adStart():void{ adIsFinished = false; } } }//packageSection 50//MainMenuClip (MainMenuClip) package { import flash.display.*; public dynamic class MainMenuClip extends MovieClip { public var soundButton:SoundButton; public var greenpixelButton:SimpleButton; public var twitterButton:SimpleButton; public var btn_start:SimpleButton; } }//packageSection 51//Maps (Maps) package { public class Maps { public static var HOUSES_MAP:Array = [0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 10, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 18, 0, 0, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 19, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 18, 0, 0, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 19, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 10, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 13, 0, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 15, 0, 11, 0, 0, 0, 0, 0, 15, 0, 10, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 14, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 3, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 7, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 14, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 3, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 15, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 14, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 20, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 10, 0, 0, 0, 0, 0, 15, 0, 11, 0, 0, 0, 0, 0, 15, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 14, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 17, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 16, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 16, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 4, 4, 6, 0, 0, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 2, 6, 4, 0, 0, 0, 0, 0, 2, 7, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 9, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 12, 4, 6, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 14, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 15, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 4, 4, 6, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 2, 6, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 7, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 2, 9, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 17, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 12, 4, 6, 0, 0, 0, 0, 2, 18, 0, 0, 0, 0, 0, 0, 2, 14, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 17, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 15, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 3, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 5, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 20, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 20, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 10, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 19, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 18, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 3, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 15, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 10, 0, 0, 0, 0, 0, 15, 0, 11, 0, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 15, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 11, 0, 13, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 16, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 15, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 16, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 18, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 14, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 4, 2, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 4, 3, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 5, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 7, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 9, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 7, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 4, 10, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 15, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 10, 0, 0, 0, 0, 0, 15, 0, 11, 0, 0, 0, 0, 0, 15, 0, 13, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 15, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 20, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 14, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 19, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 16, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 19, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 16, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 14, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 17, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 18, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 16, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 18, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 18, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 7, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 16, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 4, 11, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 13, 4, 0, 0, 0, 0, 0, 4, 14, 4, 6, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 4, 16, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 13, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 18, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 4, 19, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 5, 1, 4, 6, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 5, 3, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 4, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 4, 11, 4, 0, 0, 0, 0, 0, 4, 14, 4, 6, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 4, 16, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 13, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 4, 18, 4, 0, 0, 0, 0, 0, 4, 19, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 6, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 1, 4, 6, 0, 0, 0, 0, 5, 7, 0, 0, 0, 0, 0, 0, 5, 3, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 4, 4, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0]; public static var WORLD_MAP:Array = [0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 50, 0, 0, 0, 32, 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, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 3, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 14, 4, 0, 0, 0, 0, 0, 1, 15, 4, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 1, 18, 4, 0, 0, 0, 0, 0, 1, 19, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 22, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 14, 4, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 4, 4, 0, 0, 0, 0, 0, 2, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 2, 6, 4, 0, 0, 0, 0, 0, 2, 7, 4, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 2, 9, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 12, 4, 0, 0, 0, 0, 0, 2, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 4, 4, 0, 0, 0, 0, 0, 2, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 4, 4, 0, 0, 0, 0, 0, 2, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 2, 14, 4, 0, 0, 0, 0, 0, 2, 15, 4, 0, 0, 0, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 2, 17, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 2, 18, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 2, 6, 4, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 3, 4, 0, 0, 0, 0, 0, 2, 8, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 5, 4, 0, 0, 0, 0, 0, 3, 5, 4, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 18, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 2, 0, 7, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 2, 18, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 17, 4, 0, 0, 0, 0, 0, 2, 14, 4, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 2, 16, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 13, 4, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 3, 3, 4, 0, 0, 0, 0, 0, 3, 15, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 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, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 4, 0, 0, 0, 0, 0, 3, 7, 4, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 3, 9, 4, 0, 0, 0, 0, 0, 3, 18, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 4, 3, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 5, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 4, 9, 4, 0, 0, 0, 0, 0, 4, 10, 4, 0, 0, 0, 0, 0, 4, 11, 4, 0, 0, 0, 0, 0, 4, 8, 4, 0, 0, 0, 0, 0, 4, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 17, 4, 0, 0, 0, 0, 0, 4, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 5, 4, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 4, 19, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 1, 4, 0, 0, 0, 0, 0, 5, 2, 4, 0, 0, 0, 0, 0, 5, 3, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 0, 0, 0, 0, 0, 5, 8, 4, 0, 0, 0, 0, 0, 5, 9, 4, 6, 0, 0, 0, 0, 5, 10, 0, 0, 0, 0, 0, 0, 5, 11, 4, 0, 0, 0, 0, 0, 5, 8, 4, 0, 0, 0, 0, 0, 5, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 16, 4, 0, 0, 0, 0, 0, 5, 17, 4, 0, 0, 0, 0, 0, 5, 18, 4, 0, 0, 0, 0, 0, 5, 19, 4, 0, 0, 0, 0, 0, 6, 0, 4, 0, 0, 0, 0, 0, 5, 17, 4, 0, 0, 0, 0, 0, 6, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 4, 19, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 1, 4, 0, 0, 0, 0, 0, 5, 2, 4, 0, 0, 0, 0, 0, 5, 3, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 6, 3, 4, 0, 0, 0, 0, 0, 5, 2, 4, 0, 0, 0, 0, 0, 6, 4, 4, 0, 0, 0, 0, 0, 6, 5, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 4, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 6, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 10, 4, 0, 0, 0, 0, 0, 6, 11, 4, 0, 0, 0, 0, 0, 6, 12, 4, 6, 0, 0, 0, 0, 6, 13, 0, 0, 0, 0, 0, 0, 6, 14, 4, 0, 0, 0, 0, 0, 6, 11, 4, 0, 0, 0, 0, 0, 6, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 6, 3, 4, 0, 0, 0, 0, 0, 5, 2, 4, 0, 0, 0, 0, 0, 6, 16, 4, 0, 0, 0, 0, 0, 6, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 6, 17, 4, 0, 0, 0, 0, 0, 6, 18, 4, 0, 0, 0, 0, 0, 6, 19, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 4, 0, 0, 0, 0, 0, 7, 2, 4, 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 7, 6, 4, 0, 0, 0, 0, 0, 7, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 4, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 7, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 7, 11, 4, 0, 0, 0, 0, 0, 7, 12, 4, 0, 0, 0, 0, 0, 7, 13, 4, 0, 0, 0, 0, 0, 7, 14, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 4, 0, 0, 0, 0, 0, 6, 17, 4, 0, 0, 0, 0, 0, 7, 15, 4, 0, 0, 0, 0, 0, 7, 16, 4, 0, 0, 0, 0, 0, 7, 17, 4, 0, 0, 0, 0, 0, 6, 19, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 19, 4, 0, 0, 0, 0, 0, 8, 0, 4, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 8, 4, 4, 0, 0, 0, 0, 0, 8, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 7, 11, 4, 0, 0, 0, 0, 0, 8, 7, 4, 0, 0, 0, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 8, 9, 4, 0, 0, 0, 0, 0, 7, 13, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 10, 4, 0, 0, 0, 0, 0, 8, 11, 4, 0, 0, 0, 0, 0, 8, 12, 4, 0, 0, 0, 0, 0, 7, 16, 4, 0, 0, 0, 0, 0, 8, 12, 4, 0, 0, 0, 0, 0, 8, 13, 4, 0, 0, 0, 0, 0, 8, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 8, 15, 4, 0, 0, 0, 0, 0, 8, 16, 4, 0, 0, 0, 0, 0, 8, 17, 0, 0, 0, 0, 0, 0, 8, 8, 4, 0, 0, 0, 0, 0, 8, 17, 4, 0, 0, 0, 0, 0, 8, 18, 4, 0, 0, 0, 0, 0, 8, 19, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 4, 0, 0, 0, 0, 0, 9, 1, 4, 0, 0, 0, 0, 0, 9, 2, 4, 0, 0, 0, 0, 0, 9, 3, 4, 0, 0, 0, 0, 0, 9, 4, 4, 0, 0, 0, 0, 0, 9, 1, 4, 0, 0, 0, 0, 0, 9, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 7, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 9, 6, 4, 0, 0, 0, 0, 0, 9, 7, 4, 0, 0, 0, 0, 0, 9, 8, 4, 0, 0, 0, 0, 0, 9, 9, 4, 0, 0, 0, 0, 0, 9, 10, 4, 0, 0, 0, 0, 0, 9, 7, 4, 0, 0, 0, 0, 0, 9, 11, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 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, 12, 4, 0, 0, 0, 0, 0, 9, 13, 4, 0, 0, 0, 0, 0, 9, 14, 4, 6, 0, 0, 0, 0, 9, 15, 0, 0, 0, 0, 0, 0, 9, 16, 4, 0, 0, 0, 0, 0, 9, 13, 4, 0, 0, 0, 0, 0, 9, 17, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 9, 18, 4, 0, 0, 0, 0, 0, 9, 19, 4, 0, 0, 0, 0, 0, 10, 0, 4, 6, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 10, 2, 4, 0, 0, 0, 0, 0, 9, 19, 4, 0, 0, 0, 0, 0, 10, 3, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 7, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 7, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 22, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 10, 8, 4, 0, 0, 0, 0, 0, 10, 9, 4, 0, 0, 0, 0, 0, 10, 10, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 3, 4, 0, 0, 0, 0, 0, 1, 4, 4, 0, 0, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 0, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 10, 11, 4, 0, 0, 0, 0, 0, 10, 12, 4, 0, 0, 0, 0, 0, 10, 13, 4, 0, 0, 0, 0, 0, 10, 14, 4, 0, 0, 0, 0, 0, 10, 15, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 1, 18, 4, 0, 0, 0, 0, 0, 1, 19, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 10, 16, 4, 0, 0, 0, 0, 0, 4, 5, 4, 0, 0, 0, 0, 0, 10, 17, 4, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 18, 4, 0, 0, 0, 0, 0, 10, 12, 4, 0, 0, 0, 0, 0, 10, 19, 4, 0, 0, 0, 0, 0, 10, 13, 4, 0, 0, 0, 0, 0, 11, 0, 4, 0, 0, 0, 0, 0, 6, 4, 4, 0, 0, 0, 0, 0, 11, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 4, 0, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 1, 14, 4, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 10, 4, 0, 0, 0, 0, 0, 2, 11, 4, 0, 0, 0, 0, 0, 2, 12, 4, 0, 0, 0, 0, 0, 2, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 11, 2, 4, 0, 0, 0, 0, 0, 11, 3, 4, 0, 0, 0, 0, 0, 5, 1, 4, 0, 0, 0, 0, 0, 11, 4, 4, 0, 0, 0, 0, 0, 11, 5, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 4, 0, 0, 0, 0, 0, 11, 7, 4, 0, 0, 0, 0, 0, 11, 8, 4, 0, 0, 0, 0, 0, 11, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 4, 0, 0, 0, 0, 0, 10, 19, 4, 0, 0, 0, 0, 0, 11, 11, 4, 0, 0, 0, 0, 0, 11, 12, 4, 0, 0, 0, 0, 0, 11, 13, 4, 0, 0, 0, 0, 0, 11, 14, 4, 0, 0, 0, 0, 0, 11, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 17, 4, 0, 0, 0, 0, 0, 1, 13, 4, 0, 0, 0, 0, 0, 11, 16, 4, 0, 0, 0, 0, 0, 11, 17, 4, 0, 0, 0, 0, 0, 11, 18, 4, 0, 0, 0, 0, 0, 11, 19, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 0, 0, 0, 0, 0, 3, 5, 4, 0, 0, 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 3, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 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, 8, 4, 0, 0, 0, 0, 0, 1, 9, 4, 0, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 0, 0, 0, 0, 0, 11, 3, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 5, 1, 4, 0, 0, 0, 0, 0, 5, 2, 4, 0, 0, 0, 0, 0, 12, 1, 4, 0, 0, 0, 0, 0, 12, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 11, 10, 4, 0, 0, 0, 0, 0, 12, 3, 4, 0, 0, 0, 0, 0, 12, 4, 4, 0, 0, 0, 0, 0, 11, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 4, 0, 0, 0, 0, 0, 11, 11, 4, 0, 0, 0, 0, 0, 12, 5, 4, 0, 0, 0, 0, 0, 12, 6, 4, 0, 0, 0, 0, 0, 12, 7, 4, 0, 0, 0, 0, 0, 11, 13, 4, 0, 0, 0, 0, 0, 11, 15, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 17, 4, 0, 0, 0, 0, 0, 11, 16, 4, 0, 0, 0, 0, 0, 12, 8, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 12, 10, 4, 0, 0, 0, 0, 0, 11, 18, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 2, 4, 4, 0, 0, 0, 0, 0, 2, 5, 4, 8, 0, 0, 0, 0, 0, 11, 0, 8, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 12, 11, 4, 0, 0, 0, 0, 0, 12, 12, 4, 0, 0, 0, 0, 0, 12, 13, 4, 0, 0, 0, 0, 0, 12, 14, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 4, 0, 0, 0, 0, 0, 12, 16, 4, 0, 0, 0, 0, 0, 12, 17, 4, 0, 0, 0, 0, 0, 12, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 19, 4, 0, 0, 0, 0, 0, 12, 5, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 12, 6, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 12, 7, 4, 0, 0, 0, 0, 0, 13, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 13, 1, 4, 0, 0, 0, 0, 0, 12, 8, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 3, 14, 4, 0, 0, 0, 0, 0, 12, 10, 4, 0, 0, 0, 0, 0, 13, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 2, 19, 4, 0, 0, 0, 0, 0, 3, 0, 4, 8, 0, 0, 0, 0, 0, 11, 0, 8, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 8, 4, 0, 0, 0, 0, 0, 12, 11, 4, 0, 0, 0, 0, 0, 13, 3, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 13, 5, 4, 0, 0, 0, 0, 0, 12, 13, 4, 0, 0, 0, 0, 0, 1, 11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 4, 0, 0, 0, 0, 0, 13, 7, 4, 0, 0, 0, 0, 0, 13, 7, 4, 0, 0, 0, 0, 0, 13, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 9, 4, 0, 0, 0, 0, 0, 13, 10, 4, 0, 0, 0, 0, 0, 13, 11, 4, 0, 0, 0, 0, 0, 13, 12, 4, 0, 0, 0, 0, 0, 13, 13, 4, 0, 0, 0, 0, 0, 13, 10, 4, 0, 0, 0, 0, 0, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 13, 15, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 12, 9, 4, 0, 0, 0, 0, 0, 13, 16, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 17, 4, 0, 0, 0, 0, 0, 13, 3, 4, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 3, 17, 4, 0, 0, 0, 0, 0, 13, 5, 4, 0, 0, 0, 0, 0, 13, 18, 4, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 3, 10, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 11, 4, 0, 0, 0, 0, 0, 3, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 13, 19, 4, 0, 0, 0, 0, 0, 14, 0, 4, 0, 0, 0, 0, 0, 14, 1, 4, 6, 0, 0, 0, 0, 14, 2, 0, 0, 0, 0, 0, 0, 14, 3, 4, 0, 0, 0, 0, 0, 14, 0, 4, 0, 0, 0, 0, 0, 14, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 4, 0, 0, 0, 0, 0, 14, 6, 4, 0, 0, 0, 0, 0, 14, 6, 4, 0, 0, 0, 0, 0, 14, 6, 4, 0, 0, 0, 0, 0, 14, 6, 4, 0, 0, 0, 0, 0, 14, 6, 4, 0, 0, 0, 0, 0, 14, 7, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 13, 4, 4, 0, 0, 0, 0, 0, 14, 9, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 19, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 1, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 6, 6, 4, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 6, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 10, 4, 0, 0, 0, 0, 0, 14, 11, 4, 0, 0, 0, 0, 0, 14, 12, 4, 0, 0, 0, 0, 0, 14, 13, 4, 0, 0, 0, 0, 0, 14, 14, 4, 0, 0, 0, 0, 0, 14, 11, 4, 0, 0, 0, 0, 0, 14, 15, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 4, 0, 0, 0, 0, 0, 14, 17, 4, 0, 0, 0, 0, 0, 14, 17, 4, 0, 0, 0, 0, 0, 14, 17, 4, 0, 0, 0, 0, 0, 14, 17, 4, 0, 0, 0, 0, 0, 14, 17, 4, 0, 0, 0, 0, 0, 14, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 1, 4, 0, 0, 0, 0, 0, 7, 2, 4, 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 7, 6, 4, 0, 0, 0, 0, 0, 7, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 19, 4, 0, 0, 0, 0, 0, 15, 0, 4, 0, 0, 0, 0, 0, 15, 1, 4, 6, 0, 0, 0, 0, 15, 2, 0, 0, 0, 0, 0, 0, 15, 3, 4, 0, 0, 0, 0, 0, 15, 0, 4, 0, 0, 0, 0, 0, 15, 4, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5, 4, 0, 0, 0, 0, 0, 15, 6, 4, 0, 0, 0, 0, 0, 15, 7, 4, 0, 0, 0, 0, 0, 15, 8, 4, 0, 0, 0, 0, 0, 15, 9, 4, 0, 0, 0, 0, 0, 15, 6, 4, 0, 0, 0, 0, 0, 15, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 11, 4, 0, 0, 0, 0, 0, 15, 12, 4, 0, 0, 0, 0, 0, 15, 13, 4, 6, 0, 0, 0, 0, 15, 2, 0, 0, 0, 0, 0, 0, 15, 14, 4, 0, 0, 0, 0, 0, 15, 12, 4, 0, 0, 0, 0, 0, 15, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 21, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 8, 6, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 7, 18, 0, 7, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 5, 13, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 7, 18, 0, 7, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 7, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 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, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0]; } }//packageSection 52//Menu (Menu) package { import flash.events.*; import greenpixel.game.*; import greenpixel.sound.*; import flash.net.*; public class Menu extends GameLayer { private var theGame:Main; private var menuClip:MainMenuClip; public function Menu(_arg1:Main){ super(_arg1); theGame = _arg1; menuClip = new MainMenuClip(); menuClip.btn_start.addEventListener(MouseEvent.CLICK, startGame); menuClip.twitterButton.addEventListener(MouseEvent.CLICK, gotoTwitter); menuClip.greenpixelButton.addEventListener(MouseEvent.CLICK, gotoGreenPixel); menuClip.soundButton.gotoAndStop(0); menuClip.soundButton.buttonMode = true; menuClip.soundButton.addEventListener(MouseEvent.CLICK, toggleSound); addChild(menuClip); menuClip.stop(); } public function gotoGreenPixel(_arg1:Event){ var _local2:URLRequest; _local2 = new URLRequest("http://www.greenpixel.ca/"); navigateToURL(_local2, "_blank"); } override public function init():void{ SoundManager.instance.playMusic(Main.MENU_THEME, false); menuClip.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); fadeIn(); } public function toggleSound(_arg1:MouseEvent):void{ SoundManager.instance.toggleMute(); } override public function draw():void{ } private function startGame(_arg1:MouseEvent):void{ theGame.switchLayerIntro(); } public function gotoTwitter(_arg1:Event){ var _local2:URLRequest; _local2 = new URLRequest("https://twitter.com/#!/greenpixeldev"); navigateToURL(_local2, "_blank"); } override public function update():void{ menuClip.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); } } }//packageSection 53//MenuTheme (MenuTheme) package { import flash.media.*; public dynamic class MenuTheme extends Sound { } }//packageSection 54//MessageBoxes (MessageBoxes) package { import flash.display.*; public dynamic class MessageBoxes extends BitmapData { public function MessageBoxes(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 55//Node (Node) package { public class Node { public var parent:int; public var value:int; public var gCost:int; public var hCost:int; public var id:int; public function Node(_arg1){ this.id = _arg1; parent = -1; gCost = 0; hCost = 0; } public function copy(_arg1:Node){ id = _arg1.id; parent = _arg1.parent; gCost = _arg1.gCost; hCost = _arg1.hCost; value = _arg1.value; } public function setValue(_arg1:int, _arg2:int){ gCost = _arg1; hCost = _arg2; value = (gCost + hCost); } } }//packageSection 56//NPC (NPC) package { import flash.geom.*; import greenpixel.game.world.objects.*; import greenpixel.math.*; public class NPC extends Character { public var hitCooldown:int; private var path:Array; public var WALK_SPEED:int;// = 1 public var STUN_COOLDOWN:int;// = 30 public var RUN_SPEED:Number;// = 4.5 public var cooldown:int; public var IDLE_COOLDOWN:int;// = 0 public var attackPower:int; private var pathIndex:int; public var HIT_COOLDOWN:int;// = 8 public var npcType:int; public var SEARCH_SPEED:int;// = 3 private var HEALTH_MAX:int;// = 75 public static var STATE_SWING_BAT:int = 5; public static var STATE_IDLE:int = 3; public static var STATE_DEAD:int = 4; public static var HEARING_RADIUS:int = 250; public static var STATE_ATTACK:int = 2; public static var STATE_WALK:int = 0; public static var NPC_TYPES:int = 5; public static var STATE_SEARCH:int = 1; public function NPC(){ WALK_SPEED = 1; SEARCH_SPEED = 3; RUN_SPEED = 4.5; HIT_COOLDOWN = 8; STUN_COOLDOWN = 30; IDLE_COOLDOWN = 0; HEALTH_MAX = 75; super(); npcType = int((Math.random() * NPC_TYPES)); health = HEALTH_MAX; hitBox = new Rectangle(0, 0, 32, 32); isAlive = true; setAnim((npcType + AnimData.SPRITE_NPC01), AnimData.SPRITE_NPC01_WALK_FRONT); setPos(64, 64); speed = WALK_SPEED; state = STATE_IDLE; heading = new Vector2D(0, 0); dest = new Vector2D(0, 0); cooldown = IDLE_COOLDOWN; attackPower = 1; } public function setDest(_arg1:int, _arg2:int):void{ if (_arg1 < x){ direction = Entity.DIR_LEFT; } else { if (_arg1 > x){ direction = Entity.DIR_RIGHT; }; }; if (_arg2 < y){ direction = Entity.DIR_UP; } else { if (_arg2 > y){ direction = Entity.DIR_DOWN; }; }; dest.x = _arg1; dest.y = _arg2; heading = new Vector2D((dest.x - x), (dest.y - y)); heading.normalize(); } public function nextDest():void{ setDest(path[pathIndex].x, path[pathIndex].y); pathIndex++; } public function attack():void{ switch (direction){ case Entity.DIR_UP: resetAnim(AnimData.SPRITE_NPC01_MELEE_BACK); break; case Entity.DIR_RIGHT: resetAnim(AnimData.SPRITE_NPC01_MELEE_RIGHT); break; case Entity.DIR_DOWN: resetAnim(AnimData.SPRITE_NPC01_MELEE_FRONT); break; case Entity.DIR_LEFT: resetAnim(AnimData.SPRITE_NPC01_MELEE_LEFT); break; }; } public function setState(_arg1:int){ state = _arg1; switch (state){ case STATE_WALK: speed = WALK_SPEED; break; case STATE_SEARCH: speed = SEARCH_SPEED; break; case STATE_ATTACK: speed = RUN_SPEED; break; case STATE_IDLE: speed = 0; cooldown = IDLE_COOLDOWN; break; case STATE_DEAD: speed = 0; break; case STATE_SWING_BAT: speed = 0; break; }; } public function kill():void{ health = 0; isAlive = false; setAnim((npcType + AnimData.SPRITE_NPC01), AnimData.SPRITE_NPC01_DEAD_FRONT); } public function hit():void{ hitCooldown = HIT_COOLDOWN; if (state == STATE_WALK){ setState(NPC.STATE_SEARCH); }; } public function stun():void{ hitCooldown = STUN_COOLDOWN; if (state == STATE_WALK){ setState(NPC.STATE_SEARCH); }; } public function setPath(_arg1:Array){ path = _arg1; pathIndex = 0; if (hasNextDest()){ nextDest(); }; } public function hasNextDest():Boolean{ return (((!((path == null))) && ((pathIndex <= (path.length - 1))))); } } }//packageSection 57//NPCImage0 (NPCImage0) package { import flash.display.*; public dynamic class NPCImage0 extends BitmapData { public function NPCImage0(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 58//NPCImage1 (NPCImage1) package { import flash.display.*; public dynamic class NPCImage1 extends BitmapData { public function NPCImage1(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 59//NPCImage2 (NPCImage2) package { import flash.display.*; public dynamic class NPCImage2 extends BitmapData { public function NPCImage2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 60//NPCImage3 (NPCImage3) package { import flash.display.*; public dynamic class NPCImage3 extends BitmapData { public function NPCImage3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 61//NPCImage4 (NPCImage4) package { import flash.display.*; public dynamic class NPCImage4 extends BitmapData { public function NPCImage4(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 62//NPCImage5 (NPCImage5) package { import flash.display.*; public dynamic class NPCImage5 extends BitmapData { public function NPCImage5(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 63//ObjectImages (ObjectImages) package { import flash.display.*; public dynamic class ObjectImages extends BitmapData { public function ObjectImages(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 64//OutroClip (OutroClip) package { import flash.display.*; public dynamic class OutroClip extends MovieClip { public var soundButton:SoundButton; public function OutroClip(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8, 8, frame9, 9, frame10, 10, frame11, 374, frame375, 375, frame376, 376, frame377, 377, frame378, 378, frame379, 379, frame380, 380, frame381, 381, frame382, 382, frame383, 383, frame384, 384, frame385, 385, frame386, 386, frame387, 387, frame388, 388, frame389, 389, frame390, 390, frame391, 391, frame392, 392, frame393, 449, frame450, 450, frame451, 451, frame452, 452, frame453, 453, frame454, 454, frame455, 455, frame456, 456, frame457, 457, frame458, 582, frame583, 583, frame584, 584, frame585, 585, frame586, 586, frame587); } function frame393(){ stop(); } function frame385(){ stop(); } function frame386(){ stop(); } function frame391(){ stop(); } function frame451(){ stop(); } function frame452(){ stop(); } function frame453(){ stop(); } function frame456(){ stop(); } function frame10(){ stop(); } function frame457(){ stop(); } function frame455(){ stop(); } function frame583(){ stop(); } function frame3(){ stop(); } function frame6(){ stop(); } function frame7(){ stop(); } function frame1(){ stop(); } function frame586(){ stop(); } function frame4(){ stop(); } function frame5(){ stop(); } function frame584(){ stop(); } function frame454(){ stop(); } function frame8(){ stop(); } function frame9(){ stop(); } function frame2(){ stop(); } function frame458(){ stop(); } function frame11(){ stop(); } function frame587(){ stop(); } function frame450(){ stop(); } function frame585(){ stop(); } function frame376(){ stop(); } function frame377(){ stop(); } function frame378(){ stop(); } function frame379(){ stop(); } function frame375(){ stop(); } function frame380(){ stop(); } function frame382(){ stop(); } function frame383(){ stop(); } function frame387(){ stop(); } function frame381(){ stop(); } function frame384(){ stop(); } function frame388(){ stop(); } function frame389(){ stop(); } function frame390(){ stop(); } function frame392(){ stop(); } } }//packageSection 65//OutroCutscene (OutroCutscene) package { import flash.events.*; import greenpixel.game.*; import greenpixel.sound.*; public class OutroCutscene extends GameLayer { private var theGame:Main; private var cutscene:OutroClip; public function OutroCutscene(_arg1:Main){ super(_arg1); theGame = _arg1; cutscene = new OutroClip(); cutscene.soundButton.gotoAndStop(0); cutscene.soundButton.buttonMode = true; cutscene.soundButton.addEventListener(MouseEvent.CLICK, toggleSound); addChild(cutscene); cutscene.stop(); } override public function init():void{ stage.focus = stage; SoundManager.instance.playMusic(Main.LAIR_THEME, true); cutscene.gotoAndStop(0); cutscene.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); fadeIn(); } override public function draw():void{ } public function toggleSound(_arg1:MouseEvent):void{ SoundManager.instance.toggleMute(); } override public function update():void{ if (cutscene.currentFrame == cutscene.totalFrames){ stage.focus = stage; theGame.switchLayerMenu(); }; if (isAnyKeyPressed()){ cutscene.play(); }; cutscene.soundButton.gotoAndStop((SoundManager.instance.isMute) ? 2 : 1); } } }//packageSection 66//PathFinder (PathFinder) package { import flash.geom.*; import greenpixel.game.tilemap.*; public class PathFinder { public static function getPathAStar(_arg1:Array, _arg2:int, _arg3:int, _arg4:int, _arg5:int):Array{ var _local6:int; var _local7:int; var _local8:int; var _local9:BinaryHeap; var _local10:Array; var _local11:Node; var _local12:Node; var _local13:Array; var _local14:Array; var _local15:Node; var _local16:int; var _local17:int; var _local18:Node; var _local19:Node; var _local20:int; _local6 = 0; _local7 = 0; _local8 = 0; _local9 = new BinaryHeap((_arg1[0].length * _arg1.length)); _local10 = new Array(); _local11 = new Node(((_arg2 << 16) | _arg3)); _local11.setValue(0, (((10 + Math.abs((_arg2 - _arg4))) + 10) + Math.abs((_arg3 - _arg5)))); _local9.add(_local11); while (_local9.getSize() > 0) { _local15 = _local9.getTopNode(); _local16 = (_local15.id >> 16); _local17 = (_local15.id & 0xFFFF); _local10.push(_local15); if (((((_local15.id >> 16) == _arg4)) && (((_local15.id & 0xFFFF) == _arg5)))){ break; }; _local6 = -1; while (_local6 <= 1) { _local7 = -1; while (_local7 <= 1) { if ((((((((((((((_local6 == 0)) && ((_local7 == 0)))) || (((!((_local6 == 0))) && (!((_local7 == 0))))))) || (((_local16 + _local7) < 0)))) || (((_local17 + _local6) < 0)))) || (((_local16 + _local7) >= _arg1[0].length)))) || (((_local17 + _local6) >= _arg1.length)))){ } else { if (Tile.hasFlag(_arg1[(_local17 + _local6)][(_local16 + _local7)], Tile.WALL)){ } else { _local18 = new Node((((_local16 + _local7) << 16) | (_local17 + _local6))); if (hasValue(_local10, _local18)){ } else { _local19 = _local9.getNode(_local18.id); _local20 = (10 + _local15.gCost); if (_local19 != null){ if (_local20 < _local19.gCost){ _local19.setValue(_local20, (((10 + Math.abs(((_local16 + _local7) - _arg4))) + 10) + Math.abs(((_local17 + _local6) - _arg5)))); _local19.parent = ((_local16 << 16) | _local17); _local9.replaceNode(_local19); }; } else { _local18.setValue(_local20, (((10 + Math.abs(((_local16 + _local7) - _arg4))) + 10) + Math.abs(((_local17 + _local6) - _arg5)))); _local18.parent = ((_local16 << 16) | _local17); _local9.add(_local18); }; }; }; }; _local7++; }; _local6++; }; }; _local12 = _local10.pop(); _local13 = new Array(); while (((!(((_local12.id >> 16) == _arg2))) || (!(((_local12.id & 0xFFFF) == _arg3))))) { _local13.push(_local12.id); _local6 = 0; while (_local6 < _local10.length) { if (_local10[_local6].id == _local12.parent){ _local12 = _local10[_local6]; break; }; _local6++; }; }; _local13.reverse(); _local14 = new Array(); _local6 = 0; while (_local6 < _local13.length) { _local14.push(new Point((32 * (_local13[_local6] >> 16)), (32 * (_local13[_local6] & 0xFFFF)))); _local6++; }; return (_local14); } private static function hasValue(_arg1:Array, _arg2:Node):Boolean{ var _local3:int; var _local4:Node; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _arg1[_local3]; if (_local4.id == _arg2.id){ return (true); }; _local3++; }; return (false); } } }//packageSection 67//Player (Player) package { import flash.geom.*; import greenpixel.game.world.objects.*; public class Player extends Character { public var stunCooldown:int; public var attackPower:int; public var attackCooldown:int; public var damageCooldown:int; public static var ATTACK_POWER_INIT:int = 25; public static var ANIM_IDLE:int = 0; public static var MAX_HEALTH:int = 3; public static var STUN_COOLDOWN:int = 120; public static var ANIM_SHOOT:int = 3; public static var STATE_ATTACK:int = 1; public static var COOLDOWN_INIT:int = 0; public static var ANIM_MELEE:int = 2; public static var SPEED:Number = 5.5; public static var ATTACK_WIDTH:int = 32; public static var STATE_IDLE:int = 0; public static var ANIM_WALK:int = 1; public static var STATE_SHOOT:int = 2; public static var DAMAGE_COOLDOWN:int = 30; public static var ATTACK_HEIGHT:int = 32; public function Player(){ attackCooldown = 0; attackPower = ATTACK_POWER_INIT; hitBox = new Rectangle(0, 0, 32, 32); speed = SPEED; health = MAX_HEALTH; damageCooldown = 0; stunCooldown = 0; } public function shoot():void{ stunCooldown = STUN_COOLDOWN; } public function hit(_arg1:int):void{ damageCooldown = DAMAGE_COOLDOWN; health = (health - _arg1); } public function resetCooldown():void{ attackCooldown = COOLDOWN_INIT; } } }//packageSection 68//PlayerImage (PlayerImage) package { import flash.display.*; public dynamic class PlayerImage extends BitmapData { public function PlayerImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 69//ShortcutIconsImage (ShortcutIconsImage) package { import flash.display.*; public dynamic class ShortcutIconsImage extends BitmapData { public function ShortcutIconsImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 70//ShortcutImage (ShortcutImage) package { import flash.display.*; public dynamic class ShortcutImage extends BitmapData { public function ShortcutImage(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 71//SoundButton (SoundButton) package { import flash.display.*; public dynamic class SoundButton extends MovieClip { } }//packageSection 72//Spawn (Spawn) package { import flash.geom.*; import greenpixel.game.world.objects.*; public class Spawn extends Character { public var spawnType:int; public static var SPAWN_TYPE_DUCTTAPE:int = 5; public static var SPAWN_TYPE_METAL:int = 2; public static var SPAWN_TYPE_STEAK:int = 7; public static var SPAWN_TYPE_WOOD:int = 0; public static var SPAWN_TYPE_CIRCUIT:int = 3; public static var SPAWN_TYPE_ISOTOPE:int = 1; public static var SPAWN_TYPE_COIL:int = 4; public static var SPAWN_TYPE_APPLE:int = 6; public function Spawn(){ isAlive = false; hitBox = new Rectangle(0, 0, 32, 32); } public function init(_arg1:int, _arg2:int, _arg3:int):void{ x = _arg1; y = _arg2; spawnType = _arg3; isAlive = true; switch (_arg3){ case SPAWN_TYPE_WOOD: setAnim(AnimData.ITEMS, AnimData.ITEMS_WOOD_IDLE); break; case SPAWN_TYPE_ISOTOPE: setAnim(AnimData.ITEMS, AnimData.ITEMS_ISOTOPE_IDLE); break; case SPAWN_TYPE_METAL: setAnim(AnimData.ITEMS, AnimData.ITEMS_METAL_IDLE); break; case SPAWN_TYPE_CIRCUIT: setAnim(AnimData.ITEMS, AnimData.ITEMS_CIRCUIT_IDLE); break; case SPAWN_TYPE_COIL: setAnim(AnimData.ITEMS, AnimData.ITEMS_COIL_IDLE); break; case SPAWN_TYPE_DUCTTAPE: setAnim(AnimData.ITEMS, AnimData.ITEMS_DUCTTAPE_IDLE); break; case SPAWN_TYPE_APPLE: setAnim(AnimData.ITEMS, AnimData.ITEMS_APPLE_IDLE); break; case SPAWN_TYPE_STEAK: setAnim(AnimData.ITEMS, AnimData.ITEMS_STEAK_IDLE); break; }; } } }//packageSection 73//Splash (Splash) package { import greenpixel.game.*; public class Splash extends GameLayer { public function Splash(_arg1:Main){ super(_arg1); } override public function init():void{ fadeIn(); } override public function draw():void{ } override public function update():void{ } } }//packageSection 74//StunBullet (StunBullet) package { import flash.geom.*; import greenpixel.game.world.objects.*; import greenpixel.math.*; public class StunBullet extends Character { private var SPEED:int;// = 10 public function StunBullet(){ SPEED = 10; super(); hitBox = new Rectangle(0, 0, 32, 32); speed = SPEED; isAlive = false; heading = new Vector2D(0, 0); } public function init(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ isAlive = true; x = _arg1; y = _arg2; heading.x = _arg3; heading.y = _arg4; } } }//packageSection 75//SwingSound (SwingSound) package { import flash.media.*; public dynamic class SwingSound extends Sound { } }//packageSection 76//TownTiles (TownTiles) package { import flash.display.*; public dynamic class TownTiles extends BitmapData { public function TownTiles(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//packageSection 77//WorldTheme (WorldTheme) package { import flash.media.*; public dynamic class WorldTheme extends Sound { } }//package
Library Items
Symbol 1 Font {GameFont} | ||
Symbol 2 Sound {WorldTheme} | ||
Symbol 3 Sound {MenuTheme} | ||
Symbol 4 Sound {SwingSound} | ||
Symbol 5 Sound {LaserSound} | ||
Symbol 6 Sound {HitSound} | ||
Symbol 7 Sound {LootSound} | ||
Symbol 8 Sound {LairTheme} | ||
Symbol 9 Bitmap {ShortcutImage} | ||
Symbol 10 Bitmap {ShortcutIconsImage} | ||
Symbol 11 Bitmap {MessageBoxes} | ||
Symbol 12 Bitmap {LifeImage} | ||
Symbol 13 Bitmap {InventoryImage} | ||
Symbol 14 Bitmap {GameOverImage} | ||
Symbol 15 Bitmap {TownTiles} | ||
Symbol 16 Bitmap {ObjectImages} | ||
Symbol 17 Bitmap {NPCImage5} | ||
Symbol 18 Bitmap {NPCImage4} | ||
Symbol 19 Bitmap {NPCImage3} | ||
Symbol 20 Bitmap {NPCImage2} | ||
Symbol 21 Bitmap {NPCImage1} | ||
Symbol 22 Bitmap {NPCImage0} | ||
Symbol 23 Bitmap {PlayerImage} | ||
Symbol 24 Bitmap {ItemImages} | ||
Symbol 25 Bitmap {HouseTiles} | ||
Symbol 26 Bitmap {BlueJellyfish} | ||
Symbol 27 Bitmap {CityTiles} | ||
Symbol 28 Bitmap | Used by:29 | |
Symbol 29 Graphic | Uses:28 | Used by:51 |
Symbol 30 Bitmap | Used by:31 | |
Symbol 31 Graphic | Uses:30 | Used by:34 |
Symbol 32 Bitmap | Used by:33 | |
Symbol 33 Graphic | Uses:32 | Used by:34 |
Symbol 34 Button | Uses:31 33 | Used by:51 |
Symbol 35 Bitmap | Used by:36 | |
Symbol 36 Graphic | Uses:35 | Used by:39 |
Symbol 37 Bitmap | Used by:38 | |
Symbol 38 Graphic | Uses:37 | Used by:39 |
Symbol 39 Button | Uses:36 38 | Used by:51 |
Symbol 40 Bitmap | Used by:41 | |
Symbol 41 Graphic | Uses:40 | Used by:44 |
Symbol 42 Bitmap | Used by:43 | |
Symbol 43 Graphic | Uses:42 | Used by:44 |
Symbol 44 Button | Uses:41 43 | Used by:51 |
Symbol 45 Bitmap | Used by:46 | |
Symbol 46 Graphic | Uses:45 | Used by:50 |
Symbol 47 Bitmap | Used by:48 | |
Symbol 48 Graphic | Uses:47 | Used by:49 |
Symbol 49 MovieClip | Uses:48 | Used by:50 |
Symbol 50 MovieClip {SoundButton} | Uses:46 49 | Used by:51 127 213 |
Symbol 51 MovieClip {MainMenuClip} | Uses:29 34 39 44 50 | |
Symbol 52 Bitmap | Used by:53 | |
Symbol 53 Graphic | Uses:52 | Used by:127 213 |
Symbol 54 Bitmap | Used by:55 | |
Symbol 55 Graphic | Uses:54 | Used by:127 213 |
Symbol 56 Bitmap | Used by:57 | |
Symbol 57 Graphic | Uses:56 | Used by:127 213 |
Symbol 58 Font | Used by:59 69 70 71 72 73 74 75 76 77 78 79 80 81 84 85 86 87 90 91 92 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119 124 132 133 134 135 136 137 138 139 140 141 142 171 172 173 174 175 176 177 178 179 180 182 183 186 187 190 191 192 193 200 201 202 203 204 205 206 207 208 209 210 211 212 | |
Symbol 59 Text | Uses:58 | Used by:127 |
Symbol 60 Bitmap | Used by:61 | |
Symbol 61 Graphic | Uses:60 | Used by:127 |
Symbol 62 Bitmap | Used by:63 | |
Symbol 63 Graphic | Uses:62 | Used by:66 |
Symbol 64 Bitmap | Used by:65 | |
Symbol 65 Graphic | Uses:64 | Used by:66 |
Symbol 66 Button | Uses:63 65 | Used by:127 |
Symbol 67 Bitmap | Used by:68 | |
Symbol 68 Graphic | Uses:67 | Used by:127 213 |
Symbol 69 Text | Uses:58 | Used by:127 |
Symbol 70 Text | Uses:58 | Used by:127 |
Symbol 71 Text | Uses:58 | Used by:127 |
Symbol 72 Text | Uses:58 | Used by:127 |
Symbol 73 Text | Uses:58 | Used by:127 |
Symbol 74 Text | Uses:58 | Used by:127 |
Symbol 75 Text | Uses:58 | Used by:127 |
Symbol 76 Text | Uses:58 | Used by:127 |
Symbol 77 Text | Uses:58 | Used by:127 |
Symbol 78 Text | Uses:58 | Used by:127 |
Symbol 79 Text | Uses:58 | Used by:127 |
Symbol 80 Text | Uses:58 | Used by:127 |
Symbol 81 Text | Uses:58 | Used by:127 |
Symbol 82 Bitmap | Used by:83 | |
Symbol 83 Graphic | Uses:82 | Used by:127 213 |
Symbol 84 Text | Uses:58 | Used by:127 |
Symbol 85 Text | Uses:58 | Used by:127 |
Symbol 86 Text | Uses:58 | Used by:127 |
Symbol 87 Text | Uses:58 | Used by:127 |
Symbol 88 Bitmap | Used by:89 | |
Symbol 89 Graphic | Uses:88 | Used by:127 |
Symbol 90 Text | Uses:58 | Used by:127 |
Symbol 91 Text | Uses:58 | Used by:127 |
Symbol 92 Text | Uses:58 | Used by:127 |
Symbol 93 Bitmap | Used by:94 | |
Symbol 94 Graphic | Uses:93 | Used by:127 213 |
Symbol 95 Text | Uses:58 | Used by:127 |
Symbol 96 Text | Uses:58 | Used by:127 |
Symbol 97 Text | Uses:58 | Used by:127 |
Symbol 98 Text | Uses:58 | Used by:127 |
Symbol 99 Text | Uses:58 | Used by:127 |
Symbol 100 Text | Uses:58 | Used by:127 |
Symbol 101 Text | Uses:58 | Used by:127 |
Symbol 102 Text | Uses:58 | Used by:127 |
Symbol 103 Text | Uses:58 | Used by:127 |
Symbol 104 Text | Uses:58 | Used by:127 |
Symbol 105 Text | Uses:58 | Used by:127 |
Symbol 106 Text | Uses:58 | Used by:127 |
Symbol 107 Text | Uses:58 | Used by:127 |
Symbol 108 Text | Uses:58 | Used by:127 |
Symbol 109 Text | Uses:58 | Used by:127 |
Symbol 110 Text | Uses:58 | Used by:127 |
Symbol 111 Text | Uses:58 | Used by:127 |
Symbol 112 Text | Uses:58 | Used by:127 |
Symbol 113 Text | Uses:58 | Used by:127 |
Symbol 114 Text | Uses:58 | Used by:127 |
Symbol 115 Text | Uses:58 | Used by:127 |
Symbol 116 Text | Uses:58 | Used by:127 |
Symbol 117 Bitmap | Used by:118 | |
Symbol 118 Graphic | Uses:117 | Used by:127 |
Symbol 119 Text | Uses:58 | Used by:127 |
Symbol 120 Bitmap | Used by:121 | |
Symbol 121 Graphic | Uses:120 | Used by:127 |
Symbol 122 Bitmap | Used by:123 | |
Symbol 123 Graphic | Uses:122 | Used by:127 |
Symbol 124 Text | Uses:58 | Used by:127 |
Symbol 125 Graphic | Used by:126 | |
Symbol 126 MovieClip | Uses:125 | Used by:127 213 |
Symbol 127 MovieClip {IntroClip} | Uses:53 55 57 59 61 66 50 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 89 90 91 92 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 118 119 121 123 124 126 | |
Symbol 128 Bitmap | Used by:129 | |
Symbol 129 Graphic | Uses:128 | Used by:213 |
Symbol 130 Bitmap | Used by:131 | |
Symbol 131 Graphic | Uses:130 | Used by:213 |
Symbol 132 Text | Uses:58 | Used by:213 |
Symbol 133 Text | Uses:58 | Used by:213 |
Symbol 134 Text | Uses:58 | Used by:213 |
Symbol 135 Text | Uses:58 | Used by:213 |
Symbol 136 Text | Uses:58 | Used by:213 |
Symbol 137 Text | Uses:58 | Used by:213 |
Symbol 138 Text | Uses:58 | Used by:213 |
Symbol 139 Text | Uses:58 | Used by:213 |
Symbol 140 Text | Uses:58 | Used by:213 |
Symbol 141 Text | Uses:58 | Used by:213 |
Symbol 142 Text | Uses:58 | Used by:213 |
Symbol 143 Bitmap | Used by:144 | |
Symbol 144 Graphic | Uses:143 | Used by:213 |
Symbol 145 Sound | Used by:213 | |
Symbol 146 Bitmap | Used by:147 | |
Symbol 147 Graphic | Uses:146 | Used by:213 |
Symbol 148 Bitmap | Used by:149 | |
Symbol 149 Graphic | Uses:148 | Used by:213 |
Symbol 150 Bitmap | Used by:151 | |
Symbol 151 Graphic | Uses:150 | Used by:213 |
Symbol 152 Bitmap | Used by:153 160 | |
Symbol 153 Graphic | Uses:152 | Used by:213 |
Symbol 154 Sound | Used by:213 | |
Symbol 155 Sound | Used by:213 | |
Symbol 156 Bitmap | Used by:157 161 | |
Symbol 157 Graphic | Uses:156 | Used by:213 |
Symbol 158 Bitmap | Used by:159 162 | |
Symbol 159 Graphic | Uses:158 | Used by:213 |
Symbol 160 Graphic | Uses:152 | Used by:213 |
Symbol 161 Graphic | Uses:156 | Used by:213 |
Symbol 162 Graphic | Uses:158 | Used by:213 |
Symbol 163 Bitmap | Used by:164 | |
Symbol 164 Graphic | Uses:163 | Used by:213 |
Symbol 165 Sound | Used by:213 | |
Symbol 166 Sound | Used by:213 | |
Symbol 167 Bitmap | Used by:168 | |
Symbol 168 Graphic | Uses:167 | Used by:213 |
Symbol 169 Graphic | Used by:170 | |
Symbol 170 MovieClip | Uses:169 | Used by:213 |
Symbol 171 Text | Uses:58 | Used by:213 |
Symbol 172 Text | Uses:58 | Used by:213 |
Symbol 173 Text | Uses:58 | Used by:213 |
Symbol 174 Text | Uses:58 | Used by:213 |
Symbol 175 Text | Uses:58 | Used by:213 |
Symbol 176 Text | Uses:58 | Used by:213 |
Symbol 177 Text | Uses:58 | Used by:213 |
Symbol 178 Text | Uses:58 | Used by:213 |
Symbol 179 Text | Uses:58 | Used by:213 |
Symbol 180 Text | Uses:58 | Used by:213 |
Symbol 181 Sound | Used by:213 | |
Symbol 182 Text | Uses:58 | Used by:213 |
Symbol 183 Text | Uses:58 | Used by:213 |
Symbol 184 Bitmap | Used by:185 | |
Symbol 185 Graphic | Uses:184 | Used by:213 |
Symbol 186 Text | Uses:58 | Used by:213 |
Symbol 187 Text | Uses:58 | Used by:213 |
Symbol 188 Bitmap | Used by:189 | |
Symbol 189 Graphic | Uses:188 | Used by:213 |
Symbol 190 Text | Uses:58 | Used by:213 |
Symbol 191 Text | Uses:58 | Used by:213 |
Symbol 192 Text | Uses:58 | Used by:213 |
Symbol 193 Text | Uses:58 | Used by:213 |
Symbol 194 Bitmap | Used by:195 | |
Symbol 195 Graphic | Uses:194 | Used by:213 |
Symbol 196 Bitmap | Used by:197 | |
Symbol 197 Graphic | Uses:196 | Used by:213 |
Symbol 198 Font | Used by:199 | |
Symbol 199 Text | Uses:198 | Used by:213 |
Symbol 200 Text | Uses:58 | Used by:213 |
Symbol 201 Text | Uses:58 | Used by:213 |
Symbol 202 Text | Uses:58 | Used by:213 |
Symbol 203 Text | Uses:58 | Used by:213 |
Symbol 204 Text | Uses:58 | Used by:213 |
Symbol 205 Text | Uses:58 | Used by:213 |
Symbol 206 Text | Uses:58 | Used by:213 |
Symbol 207 Text | Uses:58 | Used by:213 |
Symbol 208 Text | Uses:58 | Used by:213 |
Symbol 209 Text | Uses:58 | Used by:213 |
Symbol 210 Text | Uses:58 | Used by:213 |
Symbol 211 Text | Uses:58 | Used by:213 |
Symbol 212 Text | Uses:58 | Used by:213 |
Symbol 213 MovieClip {OutroClip} | Uses:129 131 132 50 133 134 135 136 137 138 139 140 141 142 144 145 147 149 151 153 154 155 157 159 160 161 162 164 165 166 168 170 53 55 57 171 68 172 173 174 175 176 177 178 179 94 180 181 182 183 185 186 187 189 190 191 192 193 195 197 199 200 201 202 83 203 204 205 206 207 126 208 209 210 211 212 |
Instance Names
"btn_start" | Symbol 51 MovieClip {MainMenuClip} Frame 1 | Symbol 34 Button |
"greenpixelButton" | Symbol 51 MovieClip {MainMenuClip} Frame 1 | Symbol 39 Button |
"twitterButton" | Symbol 51 MovieClip {MainMenuClip} Frame 1 | Symbol 44 Button |
"soundButton" | Symbol 51 MovieClip {MainMenuClip} Frame 1 | Symbol 50 MovieClip {SoundButton} |
"btn_skip" | Symbol 127 MovieClip {IntroClip} Frame 1 | Symbol 66 Button |
"soundButton" | Symbol 127 MovieClip {IntroClip} Frame 1 | Symbol 50 MovieClip {SoundButton} |
"soundButton" | Symbol 213 MovieClip {OutroClip} Frame 1 | Symbol 50 MovieClip {SoundButton} |
Special Tags
FileAttributes (69) | Timeline Frame 1 | Access local files only, Metadata not present, AS3. |
|